[
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: Run all checks\n\non:\n  pull_request:\n    branches:\n      - main\n  workflow_dispatch:\n    inputs:\n      ref:\n        description: 'The git ref to build the package for'\n        required: false\n        default: ''\n        type: string\n      use_lkg:\n        description: 'Whether to use the last known good versions of dependencies'\n        required: false\n        default: True\n        type: boolean\n  # nightly\n  schedule:\n    - cron: '0 0 * * *'\n\n# Only run once per PR, canceling any previous runs\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}\n  cancel-in-progress: true\n\n# Precompute the ref if the workflow was triggered by a workflow dispatch rather than copying this logic repeatedly\nenv:\n  ref: ${{ github.event_name == 'workflow_dispatch' && inputs.ref || null }}\n  # we want to use the LKG if that is explicitly requested, or if we're in a PR, but not a nightly run\n  # the final `|| ''` is because env vars are always converted to strings and the string 'false' is truthy (!!)\n  # (see https://github.com/orgs/community/discussions/25645)\n  use_lkg: ${{ (github.event_name == 'workflow_dispatch' && inputs.use_lkg) || github.event_name == 'pull_request' || ''}}\n\njobs:\n  eval: \n    name: Evaluate changes\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n        fetch-depth: 2\n\n      # We want to enforce the following rules for PRs:\n      # * if all modifications are to README.md\n      #     no testing is needed\n      # * if there are modifications to docs/* or to any code\n      #     then docs need to be built to verify consistency\n      # * if there are modifications to notebooks/* or to any code\n      #     then notebooks need to be run to verify consistency\n      # * for any code changes (or changes to metadata files)\n      #     linting and testing should be run\n      # For a PR build, HEAD will be the merge commit, and we want to diff against the base branch,\n      #  which will be the first parent: HEAD^ \n      # (For non-PR changes, we will always perform all CI tasks)\n      # Note that GitHub Actions provides path filters, but they operate at the workflow level, not the job level\n    - name: Determine type of code change\n      run: |\n        if ($env:GITHUB_EVENT_NAME -eq 'pull_request') {\n          $editedFiles = git diff HEAD^ --name-only\n          $editedFiles # echo edited files to enable easier debugging\n          $codeChanges = $false\n          $docChanges = $false\n          $nbChanges = $false\n          $changeType = \"none\"\n          foreach ($file in $editedFiles) {\n            switch -Wildcard ($file) {\n              \"README.md\" { Continue }\n              \".gitignore\" { Continue }\n              \"econml/_version.py\" { Continue }\n              \"prototypes/*\" { Continue }\n              \"images/*\" { Continue }\n              \"doc/*\" { $docChanges = $true; Continue }\n              \"notebooks/*\" { $nbChanges = $true; Continue }\n              default { $codeChanges = $true; Continue }\n            }\n          }\n        }\n        echo \"buildDocs=$(($env:GITHUB_EVENT_NAME -ne 'pull_request') -or ($docChanges -or $codeChanges))\" >> $env:GITHUB_OUTPUT\n        echo \"buildNbs=$(($env:GITHUB_EVENT_NAME -ne 'pull_request') -or ($nbChanges -or $codeChanges))\" >> $env:GITHUB_OUTPUT\n        echo \"testCode=$(($env:GITHUB_EVENT_NAME -ne 'pull_request') -or $codeChanges)\" >> $env:GITHUB_OUTPUT\n      shell: pwsh\n      id: eval\n    outputs: \n      buildDocs: ${{ steps.eval.outputs.buildDocs }}\n      buildNbs: ${{ steps.eval.outputs.buildNbs }}\n      testCode: ${{ steps.eval.outputs.testCode }}\n\n  lint:\n    name: Lint code\n    needs: [eval]\n    if: ${{ needs.eval.outputs.testCode == 'True' }}\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Setup Python\n      uses: actions/setup-python@v5\n      with:\n        python-version: '3.9'\n    - name: Ensure latest pip and setuptools\n      run: python -m pip install --upgrade pip && pip install --upgrade setuptools\n    - name: Run Ruff\n      run: 'pip install ruff && ruff check'\n\n  notebooks:\n    name: Run notebooks\n    needs: [eval]\n    if: ${{ needs.eval.outputs.buildNbs == 'True' }}\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        kind: [except-customer-scenarios, customer-scenarios]\n        include:\n        - kind: \"except-customer-scenarios\"\n          extras: \"[plt,ray]\"\n          pattern: \"(?!CustomerScenarios)\"\n          install_graphviz: true\n          version: '3.12'\n        - kind: \"customer-scenarios\"\n          extras: \"[plt,dowhy]\"\n          pattern: \"CustomerScenarios\"\n          version: '3.12'\n          install_graphviz: false\n      fail-fast: false\n    env:\n      id_string: ${{ matrix.kind }}-${{ matrix.version }}\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Setup Python\n      uses: actions/setup-python@v5\n      with:\n        python-version: ${{ matrix.version }}\n    - name: Install uv\n      # check if we're running on windows\n      run: ${{ runner.os == 'Windows' && 'irm https://astral.sh/uv/install.ps1 | iex' || 'curl -LsSf https://astral.sh/uv/install.sh | sh' }}\n    - name: Install graphviz\n      run: sudo apt-get -yq install graphviz\n      if: ${{ matrix.install_graphviz }}\n    # Add verbose flag to pip installation if in debug mode\n    - name: Install econml\n      run: uv pip install --system -e .${{ matrix.extras }} ${{ fromJSON('[\"\",\"-v\"]')[runner.debug] }} ${{ env.use_lkg && '-r lkg-notebook.txt' }}\n    # Install notebook requirements (if not already done as part of lkg)\n    - name: Install notebook requirements\n      run: uv pip install --system jupyter jupyter-client nbconvert nbformat seaborn xgboost tqdm\n      if: ${{ !env.use_lkg }}\n    - name: Save installed packages\n      run: pip freeze --exclude-editable > notebooks-${{ env.id_string }}-requirements.txt\n    - name: Upload installed packages\n      uses: actions/upload-artifact@v4\n      with:\n        name: requirements-${{ env.id_string }}\n        path: notebooks-${{ env.id_string }}-requirements.txt\n    - name: Install pytest\n      run: uv pip install --system pytest pytest-xdist pytest-cov coverage[toml]\n    - name: Run notebook tests\n      run: python -m pytest\n      id: run_tests\n      env:\n        PYTEST_ADDOPTS: '-m \"notebook\"'\n        NOTEBOOK_DIR_PATTERN: ${{ matrix.pattern }}\n        COVERAGE_PROCESS_START: 'pyproject.toml'\n    - name: Make coverage filename unique\n      run: mv .coverage .coverage.${{ env.id_string }}\n      # Run whether or not the tests passed, but only if they ran at all\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n    - name: Upload coverage report\n      uses: actions/upload-artifact@v4\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n      with:\n        name: coverage-${{ env.id_string }}\n        path: .coverage.${{ env.id_string }}\n        # need to include hidden files since path starts with .\n        include-hidden-files: true\n    - name: Make test XML filename unique\n      run: mv junit/test-results.xml ${{ env.id_string }}-test-results.xml\n      # Run whether or not the tests passed, but only if they ran at all\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n    - name: Upload test XML files\n      uses: actions/upload-artifact@v4\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n      with:\n        name: tests-${{ env.id_string }}\n        path: ${{ env.id_string }}-test-results.xml\n    - name: Upload notebook outputs\n      uses: actions/upload-artifact@v4\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n      with:\n        name: notebooks-${{ env.id_string }}\n        path: notebooks/output/\n  \n  tests:\n    name: \"Run tests\"\n    needs: [eval]\n    if: ${{ needs.eval.outputs.testCode == 'True' }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-latest]\n        python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']\n        kind: [serial, other, dml, main, treatment, ray]\n        exclude:\n          # Serial tests fail randomly on mac sometimes, so we don't run them there\n          - os: macos-latest\n            kind: serial\n          # Ray tests run out of memory on Windows\n          - os: windows-latest\n            kind: ray\n          # Ray doesn't currently support Python 3.13\n          - python-version: '3.13'\n            kind: ray\n        # Assign the correct package and testing options for each kind of test\n        include:\n          - kind: serial\n            opts: '-m \"serial and not ray\" -n 1'\n            extras: \"\"\n          - kind: other\n            opts: '-m \"cate_api and not ray\" -n auto'\n            extras: \"[plt]\"\n          - kind: dml\n            opts: '-m \"dml and not ray\"'\n            extras: \"[plt]\"\n          - kind: main\n            opts: '-m \"not (notebook or automl or dml or serial or cate_api or treatment_featurization or ray)\" -n 2'\n            extras: \"[plt,dowhy]\"\n          - kind: treatment\n            opts: '-m \"treatment_featurization and not ray\" -n auto'\n            extras: \"[plt]\"\n          - kind: ray\n            opts: '-m \"ray\"'\n            extras: \"[ray]\"\n      fail-fast: false    \n    runs-on: ${{ matrix.os }}\n    env:\n      id_string: ${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.kind }}\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Setup Python\n      uses: actions/setup-python@v5\n      with:\n        python-version: ${{ matrix.python-version }}\n    - name: Install libomp\n      # lightgbm needs libomp on mac\n      run: brew install libomp\n      if: matrix.os == 'macos-latest'\n    - name: Install graphviz on Ubuntu\n      run: sudo apt-get -yq install graphviz\n      if: ${{ matrix.os == 'ubuntu-latest' }}\n    - name: Install uv\n      # check if we're running on windows\n      run: ${{ runner.os == 'Windows' && 'irm https://astral.sh/uv/install.ps1 | iex' || 'curl -LsSf https://astral.sh/uv/install.sh | sh' }}\n    # Add verbose flag to pip installation if in debug mode\n    - name: Install econml\n      run: uv pip install --system -e .${{ matrix.extras }} ${{ fromJSON('[\"\",\"-v\"]')[runner.debug] }} ${{ env.use_lkg && '-r lkg.txt' }}\n    - name: Save installed packages\n      run: pip freeze --exclude-editable > tests-${{ env.id_string }}-requirements.txt\n    - name: Upload installed packages\n      uses: actions/upload-artifact@v4\n      with:\n        name: requirements-${{ env.id_string }}\n        path: tests-${{ env.id_string }}-requirements.txt\n    - name: Install pytest\n      run: uv pip install --system pytest pytest-xdist pytest-cov coverage[toml]\n    - name: Run tests\n      run: python -m pytest\n      id: run_tests\n      env:\n        PYTEST_ADDOPTS: ${{ matrix.opts }}\n        COVERAGE_PROCESS_START: 'pyproject.toml'\n    - name: Make coverage filename unique\n      run: mv .coverage .coverage.${{ env.id_string }}\n      # Run whether or not the tests passed, but only if they ran at all\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n    - name: Upload coverage report\n      uses: actions/upload-artifact@v4\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n      with:\n        name: coverage-${{ env.id_string }}\n        path: .coverage.${{ env.id_string }}\n        # need to include hidden files since path starts with .\n        include-hidden-files: true\n    - name: Make test XML filename unique\n      run: mv junit/test-results.xml ${{ env.id_string }}-test-results.xml\n      # Run whether or not the tests passed, but only if they ran at all\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n    - name: Upload test XML files\n      uses: actions/upload-artifact@v4\n      if: success() || failure() && contains(fromJSON('[\"success\", \"failure\"]'), steps.run_tests.outcome)\n      with:\n        name: tests-${{ env.id_string }}\n        path: ${{ env.id_string }}-test-results.xml\n\n  store-reqs-per-env:\n    name: Store requirements for LKG updates\n    if: (success() || failure()) && (github.event_name == 'workflow_dispatch' && !inputs.use_lkg || github.event_name == 'schedule')\n    strategy:\n      matrix:\n        kind: [tests]\n        os: [ubuntu-latest, windows-latest, macos-latest]\n        python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']\n        include:\n          # assign extras to all combinations\n          - extras: \"[plt,dowhy,ray]\"\n          # overwrite extras for python 3.13 only\n          - extras: \"[plt,dowhy]\"\n            python-version: '3.13'\n          # explicitly add the two notebook extras\n          - kind: notebooks-other\n            os: ubuntu-latest\n            python-version: '3.12'\n            extras: \"[plt,ray]\"\n          - kind: notebooks-customer\n            os: ubuntu-latest\n            python-version: '3.12'\n            extras: \"[plt,dowhy]\"\n      fail-fast: false\n    runs-on: ${{ matrix.os }}\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Setup Python\n      uses: actions/setup-python@v5\n      with:\n        python-version: ${{ matrix.python-version }}\n    - name: Install uv\n      # check if we're running on windows\n      run: ${{ runner.os == 'Windows' && 'irm https://astral.sh/uv/install.ps1 | iex' || 'curl -LsSf https://astral.sh/uv/install.sh | sh' }}\n    - name: Install econml\n      # add all extras used by any of the individual tests, which is a superset of what's actually used anywhere\n      run: uv pip install --system -e .${{ matrix.extras }}\n    - name: Install notebook requirements\n      run: uv pip install --system jupyter jupyter-client nbconvert nbformat seaborn xgboost tqdm\n      if: startswith(matrix.kind, 'notebooks-')\n    - name: Save installed packages\n      run: pip freeze --exclude-editable > lkg-${{ matrix.kind }}-${{ matrix.os }}-${{ matrix.python-version }}.txt\n    - name: Upload installed packages\n      uses: actions/upload-artifact@v4\n      with:\n        name: lkg-${{ matrix.kind }}-${{ matrix.os }}-${{ matrix.python-version }}\n        path: lkg-${{ matrix.kind }}-${{ matrix.os }}-${{ matrix.python-version }}.txt\n\n  coverage-report:\n    name: \"Coverage report\"\n    needs: [tests, notebooks]\n    if: success() || failure()\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Get coverage reports\n      uses: actions/download-artifact@v4\n      with:\n        pattern: coverage-*\n        path: coverage\n        merge-multiple: true\n    - name: Setup Python\n      uses: actions/setup-python@v5\n      with:\n        python-version: '3.12'\n    - name: Install coverage\n      run: pip install coverage[toml]\n    - name: Combine coverage reports\n      run: coverage combine coverage/\n    - name: Generate coverage report\n      run: coverage report -m --format=markdown > $GITHUB_STEP_SUMMARY\n    - name: Generate coverage html --fail-under=86\n      run: coverage html\n    - name: Upload coverage report\n      uses: actions/upload-artifact@v4\n      with:\n        name: coverage-report\n        path: htmlcov\n      \n  merge-artifacts:\n    name: \"Merge artifacts\"\n    needs: [coverage-report, tests, notebooks, store-reqs-per-env]\n    if: success() || failure()\n    strategy:\n      matrix:\n        artifact: [requirements, tests, coverage, notebooks, lkg-tests, lkg-notebooks]\n    runs-on: ubuntu-latest\n    steps:\n    - name: \"Merge artifacts\"\n      uses: actions/upload-artifact/merge@v4\n      with:\n        name: ${{ matrix.artifact }}\n        pattern: \"${{ matrix.artifact }}-*\"\n        delete-merged: true\n      # if we are re-running a job in a subsequent attempt, some of the other artifacts may not exist in this attempt (e.g. notebooks, if only non-notebook tests failed)\n      # Unlike with plain upload-artifact, there's no way to ignore the situation where no files are found when using the v4 merge action\n      # (see https://github.com/actions/upload-artifact/issues/520), so just continue on error isntead\n      continue-on-error: true\n\n  generate-lkg:\n    name: \"Generate updated last known good files\"\n    needs: [merge-artifacts]\n    if: (success() || failure()) && (github.event_name == 'workflow_dispatch' && !inputs.use_lkg || github.event_name == 'schedule')\n    strategy:\n      matrix:\n        kind: [tests, notebooks]\n        include:\n        - kind: tests\n          pattern: tests\n          output-name: lkg\n        - kind: notebooks\n          pattern: \"notebooks-(?P<subset>[a-z]+)\"\n          output-name: lkg-notebook\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        ref: ${{ env.ref }}\n    - name: Setup Python\n      uses: actions/setup-python@v5\n    - name: Download files\n      uses: actions/download-artifact@v4\n      with:\n        name: lkg-${{ matrix.kind }}\n        path: requirements\n    - name: \"Generate last known good versions\"\n      run: python .github/workflows/generate_lkg.py requirements \"lkg-${{ matrix.pattern }}-(?P<os>[a-z]+)-(latest|[0-9.]+)-(?P<pyversion>[0-9.]+).txt\" ${{ matrix.output-name }}.txt\n    - name: \"Upload last known good versions\"\n      uses: actions/upload-artifact@v4\n      with:\n        name: ${{ matrix.output-name }}\n        path: ${{ matrix.output-name }}.txt\n        \n  merge-lkg:\n    name: \"Merge last known good versions\"\n    needs: [generate-lkg]\n    if: success() || failure()\n    runs-on: ubuntu-latest\n    steps:\n    - name: \"Merge last known good versions\"\n      uses: actions/upload-artifact/merge@v4\n      with:\n        # can't use just \"lkg\" for the name since that artifact already exists and merge won't overwrite it even when delete-merged is true\n        name: lkg-files\n        pattern: \"lkg*\"\n        delete-merged: true\n\n  build:\n    name: Build package\n    needs: [eval]\n    if: ${{ needs.eval.outputs.testCode == 'True' }}\n    uses: ./.github/workflows/publish-package.yml\n    with:\n      publish: false\n      environment: test\n      # don't have access to env context here for some reason\n      ref: ${{ github.event_name == 'workflow_dispatch' && inputs.ref || null }}\n      # can't use env context here so need to duplicate expression, but these are true boolean values so don't need extra string logic\n      use_lkg: ${{ (github.event_name == 'workflow_dispatch' && inputs.use_lkg) || github.event_name == 'pull_request' }}\n\n  docs:\n    name: Build documentation\n    needs: [eval]\n    if: ${{ needs.eval.outputs.buildDocs == 'True' }}\n    uses: ./.github/workflows/publish-documentation.yml\n    with:\n      publish: false\n      environment: test\n      # don't have access to env context here for some reason\n      ref: ${{ github.event_name == 'workflow_dispatch' && inputs.ref || null }}\n      # can't use env context here so need to duplicate expression, but these are true boolean values so don't need extra string logic\n      use_lkg: ${{ (github.event_name == 'workflow_dispatch' && inputs.use_lkg) || github.event_name == 'pull_request' }}\n      \n  verify:\n    name: Verify CI checks\n    needs: [lint, notebooks, tests, build, docs]\n    if: always()\n    runs-on: ubuntu-latest\n    steps:\n    - name: At least one check failed or was cancelled\n      run: exit 1\n      if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}\n    - name: All checks passed\n      run: exit 0\n      if: ${{ !(contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}\n"
  },
  {
    "path": ".github/workflows/generate_lkg.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport argparse\nimport re\nfrom collections import defaultdict, namedtuple\nfrom os import listdir, path\n\nimport packaging.version\nfrom packaging.version import Version\n\n# We have a list of requirements files, one per python version and OS.\n# We want to generate a single requirements file that specifies the requirements\n# for each package contained in any of those files, along with the constraints on python version\n# and OS that apply to each package.\n\nCombo = namedtuple('Combo', ['os', 'py_version'])\n\n# For each version of a package (say numpy==0.24.1), we'll have a set of os/py_version combos\n# where it was installed; the correct constraint will be the union of all these pairs.\n# However, for readability we'd like to simplify that when possible to something more readable.\n# For example, if numpy==0.24.1 is installed on all versions of python and all OSes, we can just say\n# \"numpy==0.24.1\"; if it's installed on all versions of python on ubuntu, we can say\n# \"numpy==0.24.1; platform_system=='Linux'\".\n\n\n# We'll precompute a dictionary of simple constraints, mapping from the sets of combos to a string representation\n# of the constraint.\n# For simplicity, we won't consider all possible constraints, just some easy to generate ones.\n# In the most general case we'll OR together constraints grouped by os\ndef simple_constraint_map(all_combos: frozenset[Combo]) -> tuple[dict[frozenset[Combo], str],\n                                                                 dict[tuple[str, frozenset[Version]], str]]:\n    \"\"\"\n    Represent simple constraints via dictionaries.\n\n    Parameters\n    ----------\n    all_combos : frozenset[Combo]\n        All of the possible os/py_version pairs\n\n    Returns\n    -------\n    (d1, d2): tuple[dict[frozenset[Combo], str], dict[tuple[str, frozenset[Version]], str]]\n        A tuple of two dictionaries.\n        The first dictionary maps from a constrained set of os/py_version pairs to the string representation of the\n        constraint.\n        The second dictionary maps from a tuple of (os, set of py_versions) to the string representation of the\n        constraint.\n    \"\"\"\n    all_os = frozenset({combo.os for combo in all_combos})\n    all_py_versions = frozenset({combo.py_version for combo in all_combos})\n\n    # constraint_map will map from sets of os/py_version pairs to a string representation of the constraint\n    # that would restrict all possible combos to just that set;\n    # we'll look up the sets of os/py_version pairs that a package is installed on and use this map to generate\n    # the correct constraint for that package.\n    constraint_map = {}\n\n    # first generate simple os constraints, like \"platform_system=='Linux'\" or \"platform_system!='Linux'\"\n    for os in all_os:\n        # Get the set of all os/py_version pairs where the os is the given os and the py_version is anything\n        filtered_combos = frozenset({combo for combo in all_combos if combo.os == os})\n        constraint_map[filtered_combos] = f\"; platform_system=='{os}'\"\n        constraint_map[all_combos - filtered_combos] = f\"; platform_system!='{os}'\"\n\n    # now generate simple python version constraints,\n    # like \"python_version=='3.8'\"\", \"python_version!='3.8'\"; \"python_version<'3.8'\", \"python_version>'3.8'\"\n    for i, py_version in enumerate(sorted(all_py_versions)):\n        # Get the set of all os/py_version pairs where the py_version is the given py_version and the os is anything\n        filtered_combos = frozenset({combo for combo in all_combos if combo.py_version == py_version})\n        constraint_map[filtered_combos] = f\"; python_version=='{py_version}'\"\n        constraint_map[all_combos - filtered_combos] = f\"; python_version!='{py_version}'\"\n\n        if i > 0:\n            less_than = frozenset({combo for combo in all_combos if combo.py_version < py_version})\n            constraint_map[less_than] = f\"; python_version<'{py_version}'\"\n        # We want to use >= next version instead of > this version\n        #       because otherwise we have pairs like\n        #           somelib==1.2, python_version<'3.9'\n        #           somelib==1.3, python_version>'3.8'\n        #       which is correct but looks more confusing than\n        #           somelib==1.2, python_version<'3.9'\n        #           somelib==1.3, python_version>='3.9'\n        if i < len(all_py_versions)-2:\n            next_version = sorted(all_py_versions)[i+1]\n            greater_than = frozenset({combo for combo in all_combos if combo.py_version >= next_version})\n            constraint_map[greater_than] = f\"; python_version>='{next_version}'\"\n\n    # if every combination is present, we don't need to add any constraint\n    constraint_map[all_combos] = \"\"\n\n    # generate simple per-os python version constraints\n    # we include the os in the key because we might not have every combination for every os\n    # (e.g. maybe macos doesn't support python 3.8, in which case there won't be a combo for that, but there might\n    # be a combo for ubuntu with python 3.8; then if we see all versions of python 3.9 and up on macos, we don't need\n    # any python version constraint, whereas if we see all versions of python 3.9 and up on ubuntu,\n    # we still do need a constraint since 3.8 is missing\")\n    os_map = {}\n    for os in all_os:\n        for i, py_version in enumerate(all_py_versions):\n            filtered_combos = frozenset({combo for combo in all_combos\n                                         if combo.os == os and combo.py_version == py_version})\n            os_map[(os, frozenset({py_version}))] = f\"python_version=='{py_version}'\"\n            if i > 0 and i < len(all_py_versions)-1:\n                os_map[(os, all_py_versions - frozenset({py_version}))] = f\"python_version!='{py_version}'\"\n\n            if i > 0:\n                os_map[(os, frozenset({py for py in all_py_versions\n                                       if py < py_version}))] = f\"python_version<'{py_version}'\"\n            if i < len(all_py_versions)-1:\n                os_map[(os, frozenset({py for py in all_py_versions\n                                       if py > py_version}))] = f\"python_version>'{py_version}'\"\n\n        # if every combination is present, we don't need to add any constraint for that os\n        os_map[(os, all_py_versions)] = \"\"\n\n    return constraint_map, os_map\n\n\n# Convert between GitHub Actions' platform names and Python's platform.system() names\nplatform_map = {'macos': 'Darwin', 'ubuntu': 'Linux', 'windows': 'Windows'}\n\n\ndef make_req_file(requirements_directory, regex):\n    \"\"\"\n    Make a unified requirements file from a directory of requirements files.\n\n    Parameters\n    ----------\n    requirements_directory : str\n        Directory containing requirements files\n\n    regex : str\n        Regex to match requirements file names, must have named groups \"os\" and \"pyversion\"\n    \"\"\"\n    req_regex = r'^(?P<pkg>.*?)==(?P<version>.*)$'  # parses requirements from pip freeze results\n    files = listdir(requirements_directory)\n\n    all_combos = set()\n\n    # We'll store the requirements for each version of each package in a dictionary\n    # (e.g. \"numpy\" -> {0.24.1 -> {Combo1, Combo2, ...}, 0.24.2 -> {Combo3, Combo4, ...}, ...})\n    # each entry of the inner dictionary will become a line in the requirements file\n    # (e.g. \"numpy==0.24.1; platform_system=='Linux' and python_version=='3.8' or ...\")\n    req_dict = defaultdict(lambda: defaultdict(set))  # package -> package_version -> set of Combos\n\n    for file in files:\n        match = re.match(regex, file)\n        if not match:\n            print(f\"Skipping {file} because it doesn't match the regex\")\n            continue\n        os = platform_map[match.group('os')]\n        py_version = packaging.version.parse(match.group('pyversion'))\n        combo = Combo(os, py_version)\n        all_combos.add(combo)\n\n        # read each line of the file\n        with open(path.join(requirements_directory, file)) as lines:\n            for line in lines:\n                match = re.search(req_regex, line)\n                pkg_version = packaging.version.parse(match.group('version'))\n                req_dict[match.group('pkg')][pkg_version].add(combo)\n\n    constraint_map, os_map = simple_constraint_map(frozenset(all_combos))\n    # list of all requirements, sorted by package name and version\n    reqs = []\n    for pkg, versions in sorted(req_dict.items()):\n        for version, combos in sorted(versions.items()):\n            combos = frozenset(combos)\n            req = f\"{pkg}=={version}\"\n\n            if combos in constraint_map:\n                suffix = constraint_map[combos]\n\n            else:\n                # we don't have a simple constraint for this package, so we need to generate a more complex one\n                # which will generally be of the form:\n                # \"(platform_system=='os1' and (python_version=='py1' or python_version=='py2') or ...) or\n                #  (platform_system=='os2' and (python_version=='py3' or ...) ...\"\n                #\n                # that is, we will OR together constraints grouped by os\n                # for some oses, we might find a nice representation for their python version constraints in the os_map\n                # (e.g. \"python_version=='3.8'\", or \"python_version<'3.8'\"), in which case we'll use that;\n                # for others, we'll have to OR together all of the relevant individual versions\n                os_constraints = []\n\n                os_versions = defaultdict(set)  # dictionary from os to set of python versions\n                for combo in combos:\n                    os_versions[combo.os].add(combo.py_version)\n\n                # for each os, generate the corresponding constraint\n                for os in sorted(os_versions.keys()):\n                    versions = os_versions[os]\n                    os_key = (os, frozenset(os_versions[os]))\n                    if os_key in os_map:\n                        constraint = os_map[os_key]\n                        if constraint == \"\":\n                            os_constraints.append(f\"platform_system=='{os}'\")\n                        else:\n                            os_constraints.append(f\"platform_system=='{os}' and {constraint}\")\n                    else:\n                        version_constraint = \" or \".join([f\"python_version=='{py_version}'\"\n                                                          for py_version in sorted(os_versions[os])])\n                        os_constraints.append(f\"platform_system=='{os}' and ({version_constraint})\")\n                if len(os_constraints) == 1:  # just one os with correspondig python versions, can use it directly\n                    suffix = f\"; {os_constraints[0]}\"\n                else:  # need to OR them together\n                    suffix = f\"; ({') or ('.join(os_constraints)})\"\n\n            reqs.append(f\"{req}{suffix}\")\n\n    return '\\n'.join(reqs)\n\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser(description='Generate requirements files for CI')\n    parser.add_argument('requirements_directory', type=str, help='Directory containing requirements files')\n    parser.add_argument('regex', type=str,\n                        help='Regex to match requirements file names, must have named groups \"os\" and \"pyversion\"')\n    parser.add_argument('output_name', type=str, help='File to write requirements to')\n    args = parser.parse_args()\n\n    reqs = make_req_file(args.requirements_directory, args.regex)\n    with open(args.output_name, 'w') as f:\n        f.write(reqs)\n"
  },
  {
    "path": ".github/workflows/publish-documentation.yml",
    "content": "name: Build and publish the documentation\non:\n  workflow_dispatch:\n    inputs:\n      publish:\n        description: 'Whether to publish the documentation (as opposed to just building it)'\n        required: false\n        default: true\n        type: boolean\n      environment:\n        description: 'Whether to publish to production or test environment'\n        required: false\n        default: prod\n        type: choice\n        options: [prod, test]\n      ref:\n        description: 'The git ref to build the documentation for'\n        required: false\n        default: ''\n        type: string\n      use_lkg:\n        description: 'Whether to use the last known good versions of dependencies'\n        required: false\n        default: True\n        type: boolean\n      run_doctests:\n        description: 'Whether to run doctests'\n        required: false\n        default: True\n        type: boolean\n  # annoyingly, there does not seem to be a way to share these input definitions between triggers\n  workflow_call:\n    inputs:\n      publish:\n        description: 'Whether to publish the documentation (as opposed to just building it)'\n        required: false\n        default: true\n        type: boolean\n      # choice type only supported for workflow_dispatch, not workflow_call\n      environment:\n        description: 'Whether to publish to production or test environment'\n        required: false\n        default: prod\n        type: string\n      ref:\n        description: 'The git ref to build the documentation for'\n        required: false\n        default: ''\n        type: string\n      use_lkg:\n        description: 'Whether to use the last known good versions of dependencies'\n        required: false\n        default: True\n        type: boolean\n      run_doctests:\n        description: 'Whether to run doctests'\n        required: false\n        default: True\n        type: boolean\n\njobs:\n  create_docs:\n    name: Create and publish documentation\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          ref: ${{ inputs.ref }}\n      - name: Setup Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.12\n      - name: Ensure latest pip and setuptools\n        run: python -m pip install --upgrade pip && pip install --upgrade setuptools\n      - name: Install econml[all]\n        run: pip install -e .[all] ${{ inputs.use_lkg && '-r lkg.txt' || '' }}\n      - name: Install graphviz\n        run: sudo apt-get -yq install graphviz\n      - name: Build documentation\n        run: pip install \"sphinx~=7.0\" \"sphinx_rtd_theme~=2.0.0\" && sphinx-build ./doc/ ./build/sphinx/html/ -W\n      - name: Upload docs as artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: docs\n          path: build/sphinx/html/\n      - name: Run doctests\n        run: sphinx-build ./doc/ ./build/sphinx/doctest/ -b doctest\n        if : ${{ inputs.run_doctests }}\n        \n  publish-docs:\n    name: Publish documentation\n    needs: create_docs\n    permissions:\n      id-token: write # needed to publish to Azure\n    environment: ${{ inputs.environment }}\n    if: ${{ inputs.publish }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Download docs artifact\n        uses: actions/download-artifact@v4\n        with:\n          name: docs\n          path: html\n      - name: Zip docs for publishing\n        run: |-\n          pushd html\n          zip -r docs.zip *\n          popd\n      - name: Login to Azure\n        uses: azure/login@v2\n        with:\n          client-id: ${{ secrets.AZURE_CLIENT_ID }}\n          tenant-id: ${{ secrets.AZURE_TENANT_ID }}\n          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}\n      - name: Deploy documentation to Azure web app\n        uses: azure/webapps-deploy@v2\n        with:\n          app-name: ${{ inputs.environment == 'prod' && 'econml' || 'econml-dev' }}\n          package: html/docs.zip\n"
  },
  {
    "path": ".github/workflows/publish-package.yml",
    "content": "name: Build and publish the package to PyPI\n\non:\n  workflow_dispatch:\n    inputs:\n      publish:\n        description: 'Whether to publish the package (as opposed to just building it)'\n        required: false\n        default: true\n        type: boolean\n      environment:\n        description: 'Whether to publish to production PyPI or test PyPI'\n        required: false\n        default: prod\n        type: choice\n        options: [prod, test]\n      ref:\n        description: 'The git ref to build the package for'\n        required: false\n        default: ''\n        type: string\n      use_lkg:\n          description: 'Whether to use the last known good versions of dependencies'\n          required: false\n          default: True\n          type: boolean\n\n  # annoyingly, there does not seem to be a way to share these input definitions between triggers\n  workflow_call:\n    inputs:\n      publish:\n        description: 'Whether to publish the package (as opposed to just building it)'\n        required: false\n        default: true\n        type: boolean\n      # choice type only supported for workflow_dispatch, not workflow_call\n      environment:\n        description: 'Whether to publish to production PyPI or test PyPI'\n        required: false\n        default: prod\n        type: string\n      ref:\n        description: 'The git ref to build the package for'\n        required: false\n        default: ''\n        type: string\n      use_lkg:\n        description: 'Whether to use the last known good versions of dependencies'\n        required: false\n        default: True\n        type: boolean\njobs:\n  build_wheels:\n    name: Build wheels on ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-latest]\n      fail-fast: false\n    runs-on: ${{ matrix.os }}\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          ref: ${{ inputs.ref }}\n      - name: Setup Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.11\n      - name: Ensure latest pip and setuptools\n        run: python -m pip install --upgrade pip && pip install --upgrade setuptools\n      - name: Build wheels\n        run: pip install 'cibuildwheel < 4' && python -m cibuildwheel --output-dir dist\n        env:\n          CIBW_BUILD: ${{ inputs.use_lkg && 'cp3{9,10,11,12,13}-*' || 'cp3*' }}\n          CIBW_SKIP: \"*musl* *win32 *i686\"\n      - name: Upload wheels as artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: dist-${{ matrix.os }}\n          path: dist/\n  build_sdist:\n    name: Build sdist\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          ref: ${{ inputs.ref }}\n      - name: Setup Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.12\n      - name: Ensure latest pip and setuptools\n        run: python -m pip install --upgrade pip && pip install --upgrade setuptools\n      - name: Install econml[all]\n        run: pip install -e .[all] ${{ inputs.use_lkg && '-r lkg.txt' || '' }}\n      - name: Build sdist\n        run: python setup.py sdist\n      - name: Upload sdist as artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: dist-sdist\n          path: dist/\n\n  merge:\n    name: Merge artifacts\n    needs: [build_wheels, build_sdist]\n    runs-on: ubuntu-latest\n    steps:\n      - name: \"Merge artifacts\"\n        uses: actions/upload-artifact/merge@v4\n        with:\n          name: dist\n          pattern: dist-*\n          delete-merged: true\n\n  publish:\n    name: Publish to PyPI or TestPyPI\n    needs: [merge]\n    permissions:\n      id-token: write\n    environment: ${{ inputs.environment }}\n    if: ${{ inputs.publish }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Download wheels and sdist\n        uses: actions/download-artifact@v4\n        with:\n          name: dist\n          path: dist/\n      - name: Upload wheels and sdist to package index\n        uses: pypa/gh-action-pypi-publish@release/v1\n        with:\n          repository-url: ${{ inputs.environment == 'test' && 'https://test.pypi.org/legacy/' || '' }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# Tex\n*.aux\n*.bbl\n*.blg\n*.log\n*.out\n*.synctex.gz\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\ntest-results.xml\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# dotenv\n.env\n\n# virtualenv\n.venv\nvenv/\nENV/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n\n# images\ndouble_ml/proto/*.png\ndouble_ml/proto/*.jpg\n\n# sphinx autosummaries \ndoc/_autosummary/\n\n# compiled C files\n*.c"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n- repo: https://github.com/astral-sh/ruff-pre-commit\n  # Ruff version.\n  rev: v0.12.2\n  hooks:\n    # Run the linter.\n    - id: ruff\n      args: [ --fix ]\n      types_or: [python, pyi, jupyter]\n    # Run the formatter.\n    # - id: ruff-format\n    #   types_or: [python, pyi, jupyter]"
  },
  {
    "path": "LICENSE",
    "content": "    MIT License\n\n    Copyright (c) PyWhy contributors. All rights reserved.\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE\n\n\nParts of this software, in particular code contained in the modules econml.tree and\neconml.grf contain files that are forks from the scikit-learn git repository, or code\nsnippets from that repository:\nhttps://github.com/scikit-learn/scikit-learn\npublished under the following License.\n\nBSD 3-Clause License\n\nCopyright (c) 2007-2020 The scikit-learn developers.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  },
  {
    "path": "README.md",
    "content": "[![Build status](https://github.com/py-why/EconML/actions/workflows/ci.yml/badge.svg)](https://github.com/py-why/EconML/actions/workflows/ci.yml)\n[![PyPI version](https://img.shields.io/pypi/v/econml.svg)](https://pypi.org/project/econml/)\n[![PyPI wheel](https://img.shields.io/pypi/wheel/econml.svg)](https://pypi.org/project/econml/)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/econml.svg)](https://pypi.org/project/econml/)\n\n<h1>\n<a href=\"https://www.pywhy.org/EconML/\">\n<img src=\"doc/econml-logo-icon.png\" width=\"80px\" align=\"left\" style=\"margin-right: 10px;\", alt=\"econml-logo\"> \n</a> EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation\n</h1>\n\n**EconML** is a Python package for estimating heterogeneous treatment effects from observational data via machine learning. This package was designed and built as part of the [ALICE project](https://www.microsoft.com/en-us/research/project/alice/) at Microsoft Research with the goal to combine state-of-the-art machine learning \ntechniques with econometrics to bring automation to complex causal inference problems. The promise of EconML:\n\n* Implement recent techniques in the literature at the intersection of econometrics and machine learning\n* Maintain flexibility in modeling the effect heterogeneity (via techniques such as random forests, boosting, lasso and neural nets), while preserving the causal interpretation of the learned model and often offering valid confidence intervals\n* Use a unified API\n* Build on standard Python packages for Machine Learning and Data Analysis\n\nOne of the biggest promises of machine learning is to automate decision making in a multitude of domains. At the core of many data-driven personalized decision scenarios is the estimation of heterogeneous treatment effects: what is the causal effect of an intervention on an outcome of interest for a sample with a particular set of features? In a nutshell, this toolkit is designed to measure the causal effect of some treatment variable(s) `T` on an outcome \nvariable `Y`, controlling for a set of features `X, W` and how does that effect vary as a function of `X`. The methods implemented are applicable even with observational (non-experimental or historical) datasets. For the estimation results to have a causal interpretation, some methods assume no unobserved confounders (i.e. there is no unobserved variable not included in `X, W` that simultaneously has an effect on both `T` and `Y`), while others assume access to an instrument `Z` (i.e. an observed variable `Z` that has an effect on the treatment `T` but no direct effect on the outcome `Y`). Most methods provide confidence intervals and inference results.\n\nFor detailed information about the package, consult the documentation at https://www.pywhy.org/EconML/.\n\nFor information on use cases and background material on causal inference and heterogeneous treatment effects see our webpage at https://www.microsoft.com/en-us/research/project/econml/\n\n<details>\n<summary><strong><em>Table of Contents</em></strong></summary>\n\n- [News](#news)\n- [Getting Started](#getting-started)\n  - [Installation](#installation)\n  - [Usage Examples](#usage-examples)\n    - [Estimation Methods](#estimation-methods)\n    - [Interpretability](#interpretability)\n    - [Causal Model Selection and Cross-Validation](#causal-model-selection-and-cross-validation)\n    - [Inference](#inference)\n    - [Policy Learning](#policy-learning)\n- [For Developers](#for-developers)\n  - [Running the tests](#running-the-tests)\n  - [Generating the documentation](#generating-the-documentation)\n- [Blogs and Publications](#blogs-and-publications)\n- [Citation](#citation)\n- [Contributing and Feedback](#contributing-and-feedback)\n- [Community](#community)\n- [References](#references)\n\n</details>\n\n# News\n\nIf you'd like to contribute to this project, see the [Help Wanted](#finding-issues-to-help-with) section below.\n\n**July 10, 2025:** Release v0.16.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.16.0)\n\n<details><summary>Previous releases</summary>\n\n**July 3, 2024:** Release v0.15.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.15.1)\n\n**February 12, 2024:** Release v0.15.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.15.0)\n\n**November 11, 2023:** Release v0.15.0b1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.15.0b1)\n\n**May 19, 2023:** Release v0.14.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.14.1)\n\n**November 16, 2022:** Release v0.14.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.14.0)\n\n**June 17, 2022:** Release v0.13.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.13.1)\n\n**January 31, 2022:** Release v0.13.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.13.0)\n\n**August 13, 2021:** Release v0.12.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0)\n\n**August 5, 2021:** Release v0.12.0b6, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b6)\n\n**August 3, 2021:** Release v0.12.0b5, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b5)\n\n**July 9, 2021:** Release v0.12.0b4, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b4)\n\n**June 25, 2021:** Release v0.12.0b3, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b3)\n\n**June 18, 2021:** Release v0.12.0b2, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b2)\n\n**June 7, 2021:** Release v0.12.0b1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.12.0b1)\n\n**May 18, 2021:** Release v0.11.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.11.1)\n\n**May 8, 2021:** Release v0.11.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.11.0)\n\n**March 22, 2021:** Release v0.10.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.10.0)\n\n**March 11, 2021:** Release v0.9.2, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.9.2)\n\n**March 3, 2021:** Release v0.9.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.9.1)\n\n**February 20, 2021:** Release v0.9.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.9.0)\n\n**January 20, 2021:** Release v0.9.0b1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.9.0b1)\n\n**November 20, 2020:** Release v0.8.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.8.1)\n\n**November 18, 2020:** Release v0.8.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.8.0)\n\n**September 4, 2020:** Release v0.8.0b1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.8.0b1)\n\n**March 6, 2020:** Release v0.7.0, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.7.0)\n\n**February 18, 2020:** Release v0.7.0b1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.7.0b1)\n\n**January 10, 2020:** Release v0.6.1, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.6.1)\n\n**December 6, 2019:** Release v0.6, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.6)\n\n**November 21, 2019:** Release v0.5, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.5). \n\n**June 3, 2019:** Release v0.4, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.4). \n\n**May 3, 2019:** Release v0.3, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.3).\n\n**April 10, 2019:** Release v0.2, see release notes [here](https://github.com/py-why/EconML/releases/tag/v0.2).\n\n**March 6, 2019:** Release v0.1, welcome to have a try and provide feedback.\n\n</details>\n\n# Getting Started\n\n## Installation\n\nInstall the latest release from [PyPI](https://pypi.org/project/econml/):\n```\npip install econml\n```\nTo install from source, see [For Developers](#for-developers) section below.\n\n## Usage Examples\n### Estimation Methods\n\n<details>\n  <summary>Double Machine Learning (aka RLearner) (click to expand)</summary>\n\n  * Linear final stage\n\n  ```Python\n  from econml.dml import LinearDML\n  from sklearn.linear_model import LassoCV\n  from econml.inference import BootstrapInference\n\n  est = LinearDML(model_y=LassoCV(), model_t=LassoCV())\n  ### Estimate with OLS confidence intervals\n  est.fit(Y, T, X=X, W=W) # W -> high-dimensional confounders, X -> features\n  treatment_effects = est.effect(X_test)\n  lb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals\n\n  ### Estimate with bootstrap confidence intervals\n  est.fit(Y, T, X=X, W=W, inference='bootstrap')  # with default bootstrap parameters\n  est.fit(Y, T, X=X, W=W, inference=BootstrapInference(n_bootstrap_samples=100))  # or customized\n  lb, ub = est.effect_interval(X_test, alpha=0.05) # Bootstrap confidence intervals\n  ```\n\n  * Sparse linear final stage\n\n  ```Python\n  from econml.dml import SparseLinearDML\n  from sklearn.linear_model import LassoCV\n\n  est = SparseLinearDML(model_y=LassoCV(), model_t=LassoCV())\n  est.fit(Y, T, X=X, W=W) # X -> high dimensional features\n  treatment_effects = est.effect(X_test)\n  lb, ub = est.effect_interval(X_test, alpha=0.05) # Confidence intervals via debiased lasso\n  ```\n\n  * Generic Machine Learning last stage\n  \n  ```Python\n  from econml.dml import NonParamDML\n  from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n\n  est = NonParamDML(model_y=RandomForestRegressor(),\n                    model_t=RandomForestClassifier(),\n                    model_final=RandomForestRegressor(),\n                    discrete_treatment=True)\n  est.fit(Y, T, X=X, W=W) \n  treatment_effects = est.effect(X_test)\n  ```\n\n</details>\n\n<details>\n  <summary>Dynamic Double Machine Learning (click to expand)</summary>\n\n  ```Python\n  from econml.panel.dml import DynamicDML\n  # Use defaults\n  est = DynamicDML()\n  # Or specify hyperparameters\n  est = DynamicDML(model_y=LassoCV(cv=3), \n                   model_t=LassoCV(cv=3), \n                   cv=3)\n  est.fit(Y, T, X=X, W=None, groups=groups, inference=\"auto\")\n  # Effects\n  treatment_effects = est.effect(X_test)\n  # Confidence intervals\n  lb, ub = est.effect_interval(X_test, alpha=0.05)\n  ```\n</details>\n\n<details>\n  <summary>Causal Forests (click to expand)</summary>\n\n  ```Python\n  from econml.dml import CausalForestDML\n  from sklearn.linear_model import LassoCV\n  # Use defaults\n  est = CausalForestDML()\n  # Or specify hyperparameters\n  est = CausalForestDML(criterion='het', n_estimators=500,       \n                        min_samples_leaf=10, \n                        max_depth=10, max_samples=0.5,\n                        discrete_treatment=False,\n                        model_t=LassoCV(), model_y=LassoCV())\n  est.fit(Y, T, X=X, W=W)\n  treatment_effects = est.effect(X_test)\n  # Confidence intervals via Bootstrap-of-Little-Bags for forests\n  lb, ub = est.effect_interval(X_test, alpha=0.05)\n  ```\n</details>\n\n\n<details>\n  <summary>Orthogonal Random Forests (click to expand)</summary>\n\n  ```Python\n  from econml.orf import DMLOrthoForest, DROrthoForest\n  from econml.sklearn_extensions.linear_model import WeightedLasso, WeightedLassoCV\n  # Use defaults\n  est = DMLOrthoForest()\n  est = DROrthoForest()\n  # Or specify hyperparameters\n  est = DMLOrthoForest(n_trees=500, min_leaf_size=10,\n                       max_depth=10, subsample_ratio=0.7,\n                       lambda_reg=0.01,\n                       discrete_treatment=False,\n                       model_T=WeightedLasso(alpha=0.01), model_Y=WeightedLasso(alpha=0.01),\n                       model_T_final=WeightedLassoCV(cv=3), model_Y_final=WeightedLassoCV(cv=3))\n  est.fit(Y, T, X=X, W=W)\n  treatment_effects = est.effect(X_test)\n  # Confidence intervals via Bootstrap-of-Little-Bags for forests\n  lb, ub = est.effect_interval(X_test, alpha=0.05)\n  ```\n</details>\n\n<details>\n\n<summary>Meta-Learners (click to expand)</summary>\n  \n  * XLearner\n\n  ```Python\n  from econml.metalearners import XLearner\n  from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor\n\n  est = XLearner(models=GradientBoostingRegressor(),\n                propensity_model=GradientBoostingClassifier(),\n                cate_models=GradientBoostingRegressor())\n  est.fit(Y, T, X=np.hstack([X, W]))\n  treatment_effects = est.effect(np.hstack([X_test, W_test]))\n\n  # Fit with bootstrap confidence interval construction enabled\n  est.fit(Y, T, X=np.hstack([X, W]), inference='bootstrap')\n  treatment_effects = est.effect(np.hstack([X_test, W_test]))\n  lb, ub = est.effect_interval(np.hstack([X_test, W_test]), alpha=0.05) # Bootstrap CIs\n  ```\n  \n  * SLearner\n\n  ```Python\n  from econml.metalearners import SLearner\n  from sklearn.ensemble import GradientBoostingRegressor\n\n  est = SLearner(overall_model=GradientBoostingRegressor())\n  est.fit(Y, T, X=np.hstack([X, W]))\n  treatment_effects = est.effect(np.hstack([X_test, W_test]))\n  ```\n\n  * TLearner\n\n  ```Python\n  from econml.metalearners import TLearner\n  from sklearn.ensemble import GradientBoostingRegressor\n\n  est = TLearner(models=GradientBoostingRegressor())\n  est.fit(Y, T, X=np.hstack([X, W]))\n  treatment_effects = est.effect(np.hstack([X_test, W_test]))\n  ```\n</details>\n\n<details>\n<summary>Doubly Robust Learners (click to expand)\n</summary>\n\n* Linear final stage\n\n```Python\nfrom econml.dr import LinearDRLearner\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n\nest = LinearDRLearner(model_propensity=GradientBoostingClassifier(),\n                      model_regression=GradientBoostingRegressor())\nest.fit(Y, T, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05)\n```\n\n* Sparse linear final stage\n\n```Python\nfrom econml.dr import SparseLinearDRLearner\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n\nest = SparseLinearDRLearner(model_propensity=GradientBoostingClassifier(),\n                            model_regression=GradientBoostingRegressor())\nest.fit(Y, T, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05)\n```\n\n* Nonparametric final stage\n\n```Python\nfrom econml.dr import ForestDRLearner\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n\nest = ForestDRLearner(model_propensity=GradientBoostingClassifier(),\n                      model_regression=GradientBoostingRegressor())\nest.fit(Y, T, X=X, W=W) \ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05)\n```\n</details>\n\n<details>\n<summary>Double Machine Learning with Instrumental Variables (click to expand)</summary>\n\n* Orthogonal instrumental variable learner\n\n```Python\nfrom econml.iv.dml import OrthoIV\n\nest = OrthoIV(projection=False, \n              discrete_treatment=True, \n              discrete_instrument=True)\nest.fit(Y, T, Z=Z, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals\n```\n* Nonparametric double machine learning with instrumental variable\n\n```Python\nfrom econml.iv.dml import NonParamDMLIV\n\nest = NonParamDMLIV(discrete_treatment=True, \n                    discrete_instrument=True,\n                    model_final=RandomForestRegressor())\nest.fit(Y, T, Z=Z, X=X, W=W) # no analytical confidence interval available\ntreatment_effects = est.effect(X_test)\n```\n</details>\n\n<details>\n<summary>Doubly Robust Machine Learning with Instrumental Variables (click to expand)</summary>\n\n* Linear final stage\n```Python\nfrom econml.iv.dr import LinearDRIV\n\nest = LinearDRIV(discrete_instrument=True, discrete_treatment=True)\nest.fit(Y, T, Z=Z, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals\n```\n\n* Sparse linear final stage\n\n```Python\nfrom econml.iv.dr import SparseLinearDRIV\n\nest = SparseLinearDRIV(discrete_instrument=True, discrete_treatment=True)\nest.fit(Y, T, Z=Z, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05) # Debiased lasso confidence intervals\n```\n\n* Nonparametric final stage\n```Python\nfrom econml.iv.dr import ForestDRIV\n\nest = ForestDRIV(discrete_instrument=True, discrete_treatment=True)\nest.fit(Y, T, Z=Z, X=X, W=W)\ntreatment_effects = est.effect(X_test)\n# Confidence intervals via Bootstrap-of-Little-Bags for forests\nlb, ub = est.effect_interval(X_test, alpha=0.05) \n```\n\n* Linear intent-to-treat (discrete instrument, discrete treatment)\n\n```Python\nfrom econml.iv.dr import LinearIntentToTreatDRIV\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n\nest = LinearIntentToTreatDRIV(model_y_xw=GradientBoostingRegressor(),\n                              model_t_xwz=GradientBoostingClassifier(),\n                              flexible_model_effect=GradientBoostingRegressor())\nest.fit(Y, T, Z=Z, X=X, W=W)\ntreatment_effects = est.effect(X_test)\nlb, ub = est.effect_interval(X_test, alpha=0.05) # OLS confidence intervals\n```\n</details>\n\nSee the <a href=\"#references\">References</a> section for more details.\n\n### Interpretability\n<details>\n  <summary>Tree Interpreter of the CATE model (click to expand)</summary>\n  \n  ```Python\n  from econml.cate_interpreter import SingleTreeCateInterpreter\n  intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\n  # We interpret the CATE model's behavior based on the features used for heterogeneity\n  intrp.interpret(est, X)\n  # Plot the tree\n  plt.figure(figsize=(25, 5))\n  intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)\n  plt.show()\n  ```\n  ![image](notebooks/images/dr_cate_tree.png)\n  \n</details>\n\n<details>\n  <summary>Policy Interpreter of the CATE model (click to expand)</summary>\n\n  ```Python\n  from econml.cate_interpreter import SingleTreePolicyInterpreter\n  # We find a tree-based treatment policy based on the CATE model\n  intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=1,min_impurity_decrease=.001)\n  intrp.interpret(est, X, sample_treatment_costs=0.2)\n  # Plot the tree\n  plt.figure(figsize=(25, 5))\n  intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)\n  plt.show()\n  ```\n  ![image](notebooks/images/dr_policy_tree.png)\n\n</details>\n\n<details>\n  <summary>SHAP values for the CATE model (click to expand)</summary>\n\n  ```Python\n  import shap\n  from econml.dml import CausalForestDML\n  est = CausalForestDML()\n  est.fit(Y, T, X=X, W=W)\n  shap_values = est.shap_values(X)\n  shap.summary_plot(shap_values['Y0']['T0'])\n  ```\n\n</details>\n\n\n### Causal Model Selection and Cross-Validation\n\n\n<details>\n  <summary>Causal model selection with the `RScorer` (click to expand)</summary>\n\n  ```Python\n  from econml.score import RScorer\n\n  # split data in train-validation\n  X_train, X_val, T_train, T_val, Y_train, Y_val = train_test_split(X, T, y, test_size=.4)\n\n  # define list of CATE estimators to select among\n  reg = lambda: RandomForestRegressor(min_samples_leaf=20)\n  clf = lambda: RandomForestClassifier(min_samples_leaf=20)\n  models = [('ldml', LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True,\n                               cv=3)),\n            ('xlearner', XLearner(models=reg(), cate_models=reg(), propensity_model=clf())),\n            ('dalearner', DomainAdaptationLearner(models=reg(), final_models=reg(), propensity_model=clf())),\n            ('slearner', SLearner(overall_model=reg())),\n            ('drlearner', DRLearner(model_propensity=clf(), model_regression=reg(),\n                                    model_final=reg(), cv=3)),\n            ('rlearner', NonParamDML(model_y=reg(), model_t=clf(), model_final=reg(),\n                                     discrete_treatment=True, cv=3)),\n            ('dml3dlasso', DML(model_y=reg(), model_t=clf(),\n                               model_final=LassoCV(cv=3, fit_intercept=False),\n                               discrete_treatment=True,\n                               featurizer=PolynomialFeatures(degree=3),\n                               cv=3))\n  ]\n\n  # fit cate models on train data\n  models = [(name, mdl.fit(Y_train, T_train, X=X_train)) for name, mdl in models]\n\n  # score cate models on validation data\n  scorer = RScorer(model_y=reg(), model_t=clf(),\n                   discrete_treatment=True, cv=3, mc_iters=2, mc_agg='median')\n  scorer.fit(Y_val, T_val, X=X_val)\n  rscore = [scorer.score(mdl) for _, mdl in models]\n  # select the best model\n  mdl, _ = scorer.best_model([mdl for _, mdl in models])\n  # create weighted ensemble model based on score performance\n  mdl, _ = scorer.ensemble([mdl for _, mdl in models])\n  ```\n\n</details>\n\n<details>\n  <summary>First Stage Model Selection (click to expand)</summary>\n\nEconML's cross-fitting estimators provide built-in functionality for first-stage model selection.  This support can work with existing sklearn model selection classes such as `LassoCV` or `GridSearchCV`, or you can pass a list of models to choose the best from among them when cross-fitting.\n\n```Python\nfrom econml.dml import LinearDML\nfrom sklearn import clone\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.linear_model import LassoCV\nfrom sklearn.model_selection import GridSearchCV\n\ncv_model = GridSearchCV(\n              estimator=RandomForestRegressor(),\n              param_grid={\n                  \"max_depth\": [3, None],\n                  \"n_estimators\": (10, 30, 50, 100, 200),\n                  \"max_features\": (2, 4, 6),\n              },\n              cv=5,\n           )\n\nest = LinearDML(model_y=cv_model, # use sklearn's grid search to select the best Y model \n                model_t=[RandomForestRegressor(), LassoCV()]) # use built-in model selection to choose between forest and linear models for T model\n```\n\n\n</details>\n\n### Inference\n\nWhenever inference is enabled, then one can get a more structure `InferenceResults` object with more elaborate inference information, such\nas p-values and z-statistics. When the CATE model is linear and parametric, then a `summary()` method is also enabled. For instance:\n\n  ```Python\n  from econml.dml import LinearDML\n  # Use defaults\n  est = LinearDML()\n  est.fit(Y, T, X=X, W=W)\n  # Get the effect inference summary, which includes the standard error, z test score, p value, and confidence interval given each sample X[i]\n  est.effect_inference(X_test).summary_frame(alpha=0.05, value=0, decimals=3)\n  # Get the population summary for the entire sample X\n  est.effect_inference(X_test).population_summary(alpha=0.1, value=0, decimals=3, tol=0.001)\n  #  Get the parameter inference summary for the final model\n  est.summary()\n  ```\n  \n  <details><summary>Example Output (click to expand)</summary>\n  \n  ```Python\n  # Get the effect inference summary, which includes the standard error, z test score, p value, and confidence interval given each sample X[i]\n  est.effect_inference(X_test).summary_frame(alpha=0.05, value=0, decimals=3)\n  ```\n  ![image](notebooks/images/summary_frame.png)\n  \n  ```Python\n  # Get the population summary for the entire sample X\n  est.effect_inference(X_test).population_summary(alpha=0.1, value=0, decimals=3, tol=0.001)\n  ```\n  ![image](notebooks/images/population_summary.png)\n  \n  ```Python\n  #  Get the parameter inference summary for the final model\n  est.summary()\n  ```\n  ![image](notebooks/images/summary.png)\n  \n  </details>\n  \n\n### Policy Learning\n\nYou can also perform direct policy learning from observational data, using the doubly robust method for offline\npolicy learning. These methods directly predict a recommended treatment, without internally fitting an explicit\nmodel of the conditional average treatment effect.\n\n<details>\n  <summary>Doubly Robust Policy Learning (click to expand)</summary>\n\n```Python\nfrom econml.policy import DRPolicyTree, DRPolicyForest\nfrom sklearn.ensemble import RandomForestRegressor\n\n# fit a single binary decision tree policy\npolicy = DRPolicyTree(max_depth=1, min_impurity_decrease=0.01, honest=True)\npolicy.fit(y, T, X=X, W=W)\n# predict the recommended treatment\nrecommended_T = policy.predict(X)\n# plot the binary decision tree\nplt.figure(figsize=(10,5))\npolicy.plot()\n# get feature importances\nimportances = policy.feature_importances_\n\n# fit a binary decision forest\npolicy = DRPolicyForest(max_depth=1, min_impurity_decrease=0.01, honest=True)\npolicy.fit(y, T, X=X, W=W)\n# predict the recommended treatment\nrecommended_T = policy.predict(X)\n# plot the first tree in the ensemble\nplt.figure(figsize=(10,5))\npolicy.plot(0)\n# get feature importances\nimportances = policy.feature_importances_\n```\n\n\n  ![image](images/policy_tree.png)\n</details>\n\nTo see more complex examples, go to the [notebooks](https://github.com/py-why/EconML/tree/main/notebooks) section of the repository. For a more detailed description of the treatment effect estimation algorithms, see the EconML [documentation](https://www.pywhy.org/EconML/).\n\n# For Developers\n\nYou can get started by cloning this repository. We use \n[setuptools](https://setuptools.readthedocs.io/en/latest/index.html) for building and distributing our package.\nWe rely on some recent features of setuptools, so make sure to upgrade to a recent version with\n`pip install setuptools --upgrade`.  Then from your local copy of the repository you can run `pip install -e .` to get started (but depending on what you're doing you might want to install with extras instead, like `pip install -e .[plt]` if you want to use matplotlib integration, or you can use  `pip install -e .[all]` to include all extras).\n\n## Pre-commit hooks\n\nWe use the [pre-commit](https://pre-commit.com/) framework to enforce code style and run checks before every commit. To install the pre-commit hooks, make sure you have pre-commit installed (`pip install pre-commit`) and then run `pre-commit install` in the root of the repository. This will install the hooks and run them automatically before every commit. If you want to run the hooks manually, you can run `pre-commit run --all-files`.\n\n## Finding issues to help with\n\nIf you're looking to contribute to the project, we have a number of issues tagged with the [`up for grabs`](https://github.com/py-why/EconML/issues?q=is%3Aopen+is%3Aissue+label%3A%22up+for+grabs%22) and [`help wanted`](https://github.com/py-why/EconML/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) labels. \"Up for grabs\" issues are ones that we think that people without a lot of experience in our codebase may be able to help with, while \"Help wanted\" issues are valuable improvements to the library that our team currently does not have time to prioritize where we would greatly appreciate community-initiated PRs, but which might be more involved.\n\n## Running the tests\n\nThis project uses [pytest](https://docs.pytest.org/) to run tests for continuous integration.  It is also possible to use `pytest` to run tests locally, but this isn't recommended because it will take an extremely long time and some tests are specific to certain environments or scenarios that have additional dependencies.  However, if you'd like to do this anyway, to run all tests locally after installing the package you can use `pip install pytest pytest-xdist pytest-cov coverage[toml]` (as well as `pip install jupyter jupyter-client nbconvert nbformat seaborn xgboost tqdm` for the dependencies to run all of our notebooks as tests) followed by `python -m pytest`.\n\nBecause running all tests can be very time-consuming, we recommend running only the relevant subset of tests when developing locally.  The easiest way to do this is to rely on `pytest`'s compatibility with `unittest`, so you can just run `python -m unittest econml.tests.test_module` to run all tests in a given module, or `python -m unittest econml.tests.test_module.TestClass` to run all tests in a given class.  You can also run `python -m unittest econml.tests.test_module.TestClass.test_method` to run a single test method.\n\n## Generating the documentation\n\nThis project's documentation is generated via [Sphinx](https://www.sphinx-doc.org/en/main/index.html).  Note that we use [graphviz](https://graphviz.org/)'s \n`dot` application to produce some of the images in our documentation, so you should make sure that `dot` is installed and in your path.\n\nTo generate a local copy of the documentation from a clone of this repository, just run `python setup.py build_sphinx -W -E -a`, which will build the documentation and place it under the `build/sphinx/html` path. \n\nThe reStructuredText files that make up the documentation are stored in the [docs directory](https://github.com/py-why/EconML/tree/main/doc); module documentation is automatically generated by the Sphinx build process.\n\n## Release process\n\nWe use GitHub Actions to build and publish the package and documentation.  To create a new release, an admin should perform the following steps:\n\n1. Update the version number in `econml/_version.py` and add a mention of the new version in the news section of this file and commit the changes.\n2. Manually run the publish_package.yml workflow to build and publish the package to PyPI.\n3. Manually run the publish_docs.yml workflow to build and publish the documentation.\n4. Under https://github.com/py-why/EconML/releases, create a new release with a corresponding tag, and update the release notes.\n\n# Blogs and Publications\n\n* May 2021: [Be Careful When Interpreting Predictive Models in Search of Causal Insights](https://towardsdatascience.com/be-careful-when-interpreting-predictive-models-in-search-of-causal-insights-e68626e664b6)\n\n* June 2019: [Treatment Effects with Instruments paper](https://arxiv.org/pdf/1905.10176.pdf)\n\n* May 2019: [Open Data Science Conference Workshop](https://odsc.com/speakers/machine-learning-estimation-of-heterogeneous-treatment-effect-the-microsoft-econml-library/) \n\n* 2018: [Orthogonal Random Forests paper](http://proceedings.mlr.press/v97/oprescu19a.html)\n\n* 2017: [DeepIV paper](http://proceedings.mlr.press/v70/hartford17a/hartford17a.pdf)\n\n# Citation\n\nIf you use EconML in your research, please cite us as follows:\n\n   Keith Battocchi, Eleanor Dillon, Maggie Hei, Greg Lewis, Paul Oka, Miruna Oprescu, Vasilis Syrgkanis. **EconML: A Python Package for ML-Based Heterogeneous Treatment Effects Estimation.** https://github.com/py-why/EconML, 2019. Version 0.x.\n\nBibTex:\n\n```\n@misc{econml,\n  author={Keith Battocchi, Eleanor Dillon, Maggie Hei, Greg Lewis, Paul Oka, Miruna Oprescu, Vasilis Syrgkanis},\n  title={{EconML}: {A Python Package for ML-Based Heterogeneous Treatment Effects Estimation}},\n  howpublished={https://github.com/py-why/EconML},\n  note={Version 0.x},\n  year={2019}\n}\n```\n\n# Contributing and Feedback\n\nThis project welcomes contributions and suggestions.  We use the [DCO bot](https://github.com/apps/dco) to enforce a [Developer Certificate of Origin](https://developercertificate.org/) which requires users to sign-off on their commits.  This is a simple way to certify that you wrote or otherwise have the right to submit the code you are contributing to the project.  Git provides a `-s` command line option to include this automatically when you commit via `git commit`.\n\nIf you forget to sign one of your commits, the DCO bot will provide specific instructions along with the failed check; alternatively you can use `git commit --amend -s` to add the sign-off to your last commit if you forgot it or `git rebase --signoff` to sign all of the commits in the branch, after which you can force push the changes to your branch with `git push --force-with-lease`.\n\nThis project has adopted the [PyWhy Code of Conduct](https://github.com/py-why/governance/blob/main/CODE-OF-CONDUCT.md).\n\n# Community\n\n<a href=\"https://pywhy.org/\">\n<img src=\"doc/spec/img/pywhy-logo.png\" width=\"80px\" align=\"left\" style=\"margin-right: 10px;\", alt=\"pywhy-logo\">\n</a>\n\nEconML is a part of [PyWhy](https://www.pywhy.org/), an organization with a mission to build an open-source ecosystem for causal machine learning.\n\nPyWhy also has a [Discord](https://discord.gg/cSBGb3vsZb), which serves as a space for like-minded casual machine learning researchers and practitioners of all experience levels to come together to ask and answer questions, discuss new features, and share ideas.\n\nWe invite you to join us at regular office hours and community calls in the Discord.\n\n# References\n\nAthey, Susan, and Stefan Wager.\n**Policy learning with observational data.**\n[*Econometrica 89.1, 133-161*](https://doi.org/10.3982/ECTA15732), 2021.\n\nX Nie, S Wager.\n**Quasi-Oracle Estimation of Heterogeneous Treatment Effects.**\n[*Biometrika 108.2, 299-319*](https://doi.org/10.1093/biomet/asaa076), 2021.\n\nV. Syrgkanis, V. Lei, M. Oprescu, M. Hei, K. Battocchi, G. Lewis.\n**Machine Learning Estimation of Heterogeneous Treatment Effects with Instruments.**\n[*Proceedings of the 33rd Conference on Neural Information Processing Systems (NeurIPS)*](https://arxiv.org/abs/1905.10176), 2019.\n**(Spotlight Presentation)**\n\nD. Foster, V. Syrgkanis.\n**Orthogonal Statistical Learning.**\n[*Proceedings of the 32nd Annual Conference on Learning Theory (COLT)*](https://arxiv.org/pdf/1901.09036.pdf), 2019.\n**(Best Paper Award)**\n\nM. Oprescu, V. Syrgkanis and Z. S. Wu.\n**Orthogonal Random Forest for Causal Inference.**\n[*Proceedings of the 36th International Conference on Machine Learning (ICML)*](http://proceedings.mlr.press/v97/oprescu19a.html), 2019.\n\nS. Künzel, J. Sekhon, J. Bickel and B. Yu.\n**Metalearners for estimating heterogeneous treatment effects using machine learning.**\n[*Proceedings of the national academy of sciences, 116(10), 4156-4165*](https://www.pnas.org/content/116/10/4156), 2019.\n\nS. Athey, J. Tibshirani, S. Wager.\n**Generalized random forests.**\n[*Annals of Statistics, 47, no. 2, 1148--1178*](https://projecteuclid.org/euclid.aos/1547197251), 2019.\n\nV. Chernozhukov, D. Nekipelov, V. Semenova, V. Syrgkanis.\n**Plug-in Regularized Estimation of High-Dimensional Parameters in Nonlinear Semiparametric Models.**\n[*Arxiv preprint arxiv:1806.04823*](https://arxiv.org/abs/1806.04823), 2018.\n\nS. Wager, S. Athey.\n**Estimation and Inference of Heterogeneous Treatment Effects using Random Forests.**\n[*Journal of the American Statistical Association, 113:523, 1228-1242*](https://www.tandfonline.com/doi/citedby/10.1080/01621459.2017.1319839), 2018.\n\nJason Hartford, Greg Lewis, Kevin Leyton-Brown, and Matt Taddy. **Deep IV: A flexible approach for counterfactual prediction.** [*Proceedings of the 34th International Conference on Machine Learning, ICML'17*](http://proceedings.mlr.press/v70/hartford17a/hartford17a.pdf), 2017.\n\nV. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W. Newey. **Double Machine Learning for Treatment and Causal Parameters.** [*ArXiv preprint arXiv:1608.00060*](https://arxiv.org/abs/1608.00060), 2016.\n\nDudik, M., Erhan, D., Langford, J., & Li, L.\n**Doubly robust policy evaluation and optimization.**\n[*Statistical Science, 29(4), 485-511*](https://projecteuclid.org/journals/statistical-science/volume-29/issue-4/Doubly-Robust-Policy-Evaluation-and-Optimization/10.1214/14-STS500.full), 2014.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).\n\nIf you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.\n\n## Reporting Security Issues\n\n**Please do not report security vulnerabilities through public GitHub issues.**\n\nInstead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).\n\nIf you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).\n\nYou should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). \n\nPlease include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:\n\n  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)\n  * Full paths of source file(s) related to the manifestation of the issue\n  * The location of the affected source code (tag/branch/commit or direct URL)\n  * Any special configuration required to reproduce the issue\n  * Step-by-step instructions to reproduce the issue\n  * Proof-of-concept or exploit code (if possible)\n  * Impact of the issue, including how an attacker might exploit the issue\n\nThis information will help us triage your report more quickly.\n\nIf you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.\n\n## Preferred Languages\n\nWe prefer all communications to be in English.\n\n## Policy\n\nMicrosoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).\n\n<!-- END MICROSOFT SECURITY.MD BLOCK -->\n"
  },
  {
    "path": "doc/conf.py",
    "content": "# -*- coding: utf-8 -*-\n#\n# Configuration file for the Sphinx documentation builder.\n#\n# This file does only contain a selection of the most common options. For a\n# full list see the documentation:\n# http://www.sphinx-doc.org/en/main/config\n\n# -- Path setup --------------------------------------------------------------\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#\nimport os\nimport sys\nimport doctest\nimport econml\nsys.path.insert(0, os.path.abspath('econml'))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = 'econml'\ncopyright = '2023, PyWhy contributors'\nauthor = 'PyWhy contributors'\nversion = econml.__version__\nrelease = econml.__version__\n\n# -- General configuration ---------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    'sphinx.ext.autodoc',\n    'sphinx.ext.autosummary',\n    'sphinx.ext.doctest',\n    'sphinx.ext.intersphinx',\n    'sphinx.ext.napoleon',\n    'sphinx.ext.todo',\n    'sphinx.ext.coverage',\n    'sphinx.ext.mathjax',\n    'sphinx.ext.viewcode',\n    'sphinx.ext.inheritance_diagram',\n]\ninheritance_graph_attrs = dict(rankdir=\"TB\", size='\"7.0, 10.0\"',\n                               fontsize=12, ratio='auto',\n                               bgcolor='\"#ffffff\"', center='true', style='solid')\ninheritance_node_attrs = dict(shape='ellipse', fontsize=12,\n                              fontname=\"monspace\", height=0.75)\n\nnapoleon_use_param = False\n# TODO: enable type aliases\n# napoleon_preprocess_types = True  # needed for type aliases to work\n# napoleon_type_aliases = {\n#     \"array_like\": \":term:`array_like`\",\n#     \"ndarray\": \"~numpy.ndarray\",\n#     \"RandomState\": \":class:`~numpy.random.RandomState`\",\n#     \"DataFrame\": \":class:`~pandas.DataFrame`\",\n#     \"Series\": \":class:`~pandas.Series`\",\n# }\n\nautosummary_generate = True\nautodoc_default_options = {'members': None,\n                           'show-inheritance': None,\n                           'inherited-members': None,\n                           'member-order': 'groupwise'}\n\nmathjax3_config = {\n    'tex': {\n        'macros': {\n            'vec': [r'{\\bf #1}', 1],\n            'ldot': [r'\\left\\langle #1, #2 \\right\\rangle', 2],\n            'E': r'\\mathbb{E}',\n            'T': r'\\mathcal{T}',\n            'argmin': r'\\mathrm{argmin}',\n            'Var': r'\\mathrm{Var}'\n        }\n    }\n}\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of strings:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = '.rst'\n\n# The root toctree document.\nroot_doc = 'index'\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = \"en\"\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = []\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = None\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = 'sphinx_rtd_theme'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#\nhtml_theme_options = {\n    'collapse_navigation': False\n}\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\n# html_static_path = ['_static']\nhtml_extra_path = ['map.svg', 'Causal-Inference-User-Guide-v4-022520.pdf', \"spec/img\"]\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# The default sidebars (for documents that don't match any pattern) are\n# defined by theme itself.  Builtin themes are using these templates by\n# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',\n# 'searchbox.html']``.\n#\n# html_sidebars = {}\n\nhtml_logo = 'econml-logo-inverse.png'\nhtml_favicon = 'econml.ico'\n\n# -- Options for HTMLHelp output ---------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'econmldoc'\n\n\n# -- Options for LaTeX output ------------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (root_doc, 'econml.tex', 'econml Documentation',\n     'PyWhy contributors', 'manual'),\n]\n\n\n# -- Options for manual page output ------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    (root_doc, 'econml', 'econml Documentation',\n     [author], 1)\n]\n\n\n# -- Options for Texinfo output ----------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (root_doc, 'econml', 'econml Documentation',\n     author, 'econml', 'One line description of project.',\n     'Miscellaneous'),\n]\n\n\n# -- Options for Epub output -------------------------------------------------\n\n# Bibliographic Dublin Core info.\nepub_title = project\n\n# The unique identifier of the text. This can be a ISBN number\n# or the project homepage.\n#\n# epub_identifier = ''\n\n# A unique identification for the text.\n#\n# epub_uid = ''\n\n# A list of files that should not be packed into the epub file.\nepub_exclude_files = ['search.html']\n\n\n# -- Extension configuration -------------------------------------------------\n\n# -- Options for intersphinx extension ---------------------------------------\n\n# Example configuration for intersphinx: refer to the Python standard library.\nintersphinx_mapping = {'python': ('https://docs.python.org/3', None),\n                       'numpy': ('https://numpy.org/doc/stable/', None),\n                       'sklearn': ('https://scikit-learn.org/stable/', None),\n                       'matplotlib': ('https://matplotlib.org/stable/', None),\n                       'shap': ('https://shap.readthedocs.io/en/stable/', None),\n                       'dowhy': ('https://www.pywhy.org/dowhy/main/', None),\n                       'statsmodels': ('https://www.statsmodels.org/stable/', None)}\n\n\n# -- Options for todo extension ----------------------------------------------\n\n# If true, `todo` and `todoList` produce output, else they produce nothing.\ntodo_include_todos = False\n\n# -- Options for doctest extension -------------------------------------------\ndoctest_default_flags = (doctest.DONT_ACCEPT_TRUE_FOR_1 |\n                         doctest.ELLIPSIS |\n                         doctest.IGNORE_EXCEPTION_DETAIL |\n                         doctest.NORMALIZE_WHITESPACE)\n\n\ndef exclude_entity(app, what, name, obj, skip, opts):\n    # we can document otherwise excluded entities here by returning False\n    # or skip otherwise included entities by returning True\n    if name in [\"_RLearner\", \"_OrthoLearner\", \"_crossfit\"]:\n        return False\n    return None\n\n\ndef setup(app):\n    app.connect('autodoc-skip-member', exclude_entity)\n    ()\n"
  },
  {
    "path": "doc/index.rst",
    "content": ".. econml documentation root file, created by\n   sphinx-quickstart on Fri Feb 15 12:08:35 2019.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\nWelcome to econml's documentation!\n==================================\n\n.. toctree::\n    spec/spec\n    reference\n\nIndices and tables\n==================\n\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`search`\n\n.. todolist::"
  },
  {
    "path": "doc/reference.rst",
    "content": "Public Module Reference\n=======================\n\nCATE Estimators\n---------------\n\n.. _dml_api:\n\nDouble Machine Learning (DML)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.dml.DML\n    econml.dml.LinearDML\n    econml.dml.SparseLinearDML\n    econml.dml.CausalForestDML\n    econml.dml.NonParamDML\n    econml.dml.KernelDML\n\n.. _dr_api:\n\nDoubly Robust (DR)\n^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.dr.DRLearner\n    econml.dr.LinearDRLearner\n    econml.dr.SparseLinearDRLearner\n    econml.dr.ForestDRLearner\n\n.. _metalearners_api:\n\nMeta-Learners\n^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.metalearners.XLearner\n    econml.metalearners.TLearner\n    econml.metalearners.SLearner\n    econml.metalearners.DomainAdaptationLearner\n\n.. _orf_api:\n\nOrthogonal Random Forest (ORF)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.orf.DMLOrthoForest\n    econml.orf.DROrthoForest\n\nInstrumental Variable CATE Estimators\n-------------------------------------\n\n.. _dmliv_api:\n\nDouble Machine Learning (DML) IV\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.iv.dml.OrthoIV\n    econml.iv.dml.DMLIV\n    econml.iv.dml.NonParamDMLIV\n\n.. _driv_api:\n\nDoubly Robust (DR) IV\n^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.iv.dr.DRIV\n    econml.iv.dr.LinearDRIV\n    econml.iv.dr.SparseLinearDRIV\n    econml.iv.dr.ForestDRIV\n    econml.iv.dr.IntentToTreatDRIV\n    econml.iv.dr.LinearIntentToTreatDRIV\n\n.. _tsls_api:\n\nSieve Methods\n^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.iv.sieve.SieveTSLS\n    econml.iv.sieve.HermiteFeatures\n    econml.iv.sieve.DPolynomialFeatures\n\n.. _panel_api:\n\nEstimators for Panel Data\n-------------------------\n\n.. _dynamicdml_api:\n\nDynamic Double Machine Learning\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.panel.dml.DynamicDML\n\n.. _policy_api:\n\nPolicy Learning\n---------------\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.policy.DRPolicyForest\n    econml.policy.DRPolicyTree\n    econml.policy.PolicyForest\n    econml.policy.PolicyTree\n\n.. _interpreters_api:\n\nCATE Interpreters\n-----------------\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.cate_interpreter.SingleTreeCateInterpreter\n    econml.cate_interpreter.SingleTreePolicyInterpreter\n\n.. _validation_api:\n\nCATE Validation\n---------------\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.validate.DRTester\n    econml.validate.BLPEvaluationResults\n    econml.validate.CalibrationEvaluationResults\n    econml.validate.UpliftEvaluationResults\n    econml.validate.EvaluationResults\n\n.. _scorers_api:\n\nCATE Scorers\n------------\n\n.. autosummary::\n    :toctree: _autosummary\n    \n    econml.score.RScorer\n    econml.score.EnsembleCateEstimator\n\n\n.. _grf_api:\n\nGeneralized Random Forests\n--------------------------\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.grf.CausalForest\n    econml.grf.CausalIVForest\n    econml.grf.RegressionForest\n    econml.grf.MultiOutputGRF\n    econml.grf.LinearMomentGRFCriterion\n    econml.grf.LinearMomentGRFCriterionMSE\n    econml.grf._base_grf.BaseGRF\n    econml.grf._base_grftree.GRFTree\n\n\n.. Integration with AzureML AutoML\n.. -------------------------------\n\n.. .. autosummary::\n..     :toctree: _autosummary\n\n..     econml.automated_ml\n\nScikit-Learn Extensions\n-----------------------\n\n.. _sklearn_linear_api:\n\nLinear Model Extensions\n^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.sklearn_extensions.linear_model.DebiasedLasso\n    econml.sklearn_extensions.linear_model.MultiOutputDebiasedLasso\n    econml.sklearn_extensions.linear_model.SelectiveRegularization\n    econml.sklearn_extensions.linear_model.StatsModelsLinearRegression\n    econml.sklearn_extensions.linear_model.StatsModelsRLM\n    econml.sklearn_extensions.linear_model.WeightedLasso\n    econml.sklearn_extensions.linear_model.WeightedLassoCV\n    econml.sklearn_extensions.linear_model.WeightedMultiTaskLassoCV\n    econml.sklearn_extensions.linear_model.WeightedLassoCVWrapper\n\n.. _sklearn_model_api:\n\nModel Selection Extensions\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.sklearn_extensions.model_selection.GridSearchCVList\n    econml.sklearn_extensions.model_selection.WeightedKFold\n    econml.sklearn_extensions.model_selection.WeightedStratifiedKFold\n\n\n.. _inference_api:\n\nInference\n---------\n\nInference Results\n^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.inference.NormalInferenceResults\n    econml.inference.EmpiricalInferenceResults\n    econml.inference.PopulationSummaryResults\n\nInference Methods\n^^^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.inference.BootstrapInference\n    econml.inference.GenericModelFinalInference\n    econml.inference.GenericSingleTreatmentModelFinalInference\n    econml.inference.LinearModelFinalInference\n    econml.inference.StatsModelsInference\n    econml.inference.GenericModelFinalInferenceDiscrete\n    econml.inference.LinearModelFinalInferenceDiscrete\n    econml.inference.StatsModelsInferenceDiscrete\n\n.. _federated_api:\n\nFederated Estimation\n--------------------\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.federated_learning.FederatedEstimator\n\n.. _solutions_api:\n\nSolutions\n---------\n\nCausal Analysis\n^^^^^^^^^^^^^^^\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml.solutions.causal_analysis.CausalAnalysis\n\n.. _dowhy_api:\n\nIntegration with DoWhy\n----------------------\n\n.. autosummary::\n    :toctree: _autosummary\n    \n    econml.dowhy.DoWhyWrapper\n\n\n.. _utilities_api:\n\nUtilities\n---------\n\n.. autosummary::\n    :toctree: _autosummary\n    \n    econml.utilities\n\nPrivate Module Reference\n========================\n\n.. autosummary::\n    :toctree: _autosummary\n\n    econml._ortho_learner\n    econml._cate_estimator\n    econml.dml._rlearner\n    econml.inference._bootstrap\n"
  },
  {
    "path": "doc/spec/api.rst",
    "content": "Problem Setup and API Design\n============================\n\n\n.. rubric::\n    Potential Outcomes Formulation\n\nWe begin by formulating the problem in the potential outcomes terminology. Subsequently,\nwe will also provide a formulation in the structural equations notation for readers more familiar\nwith that notation.\n\nThe methods developed in our library tackle the following general problem: let :math:`Y(\\vec{t})` \ndenote the random variable that corresponds to the value of the outcome of interest if we were to treat a sample\nwith treatment :math:`\\vec{t} \\in \\T`.\nGiven two vectors of treatments :math:`\\vec{t}_0, \\vec{t}_1 \\in \\T`, a vector of co-variates :math:`\\vec{x}` \nand a random vector of potential outcomes :math:`Y(\\vec{t})`, we want to estimate the quantity: \n\n.. math ::\n    \\tau(\\vec{t}_0, \\vec{t}_1, \\vec{x}) = \\E[Y(\\vec{t}_1) - Y(\\vec{t}_0) | X=\\vec{x}]\n\nWe will refer to the latter quantity as the *heterogeneous treatment effect* of going from treatment \n:math:`\\vec{t}_0` to treatment :math:`\\vec{t}_1` conditional on observables :math:`\\vec{x}`.  \nIf treatments are continuous, then one might also be interested in a local effect around a treatment point. \nThe latter translates to estimating a local gradient around a treatment vector conditional on observables:\n\n.. math ::\n    \\partial\\tau(\\vec{t}, \\vec{x}) = \\E\\left[\\nabla_{\\vec{t}} Y(\\vec{t}) | X=\\vec{x}\\right] \\tag{marginal CATE}\n\nWe will refer to the latter as the *heterogeneous marginal effect*. [1]_ \n\nWe assume we have data that are generated from some collection policy. In particular, we assume that we have data of the form: \n:math:`\\{Y_i(T_i), T_i, X_i, W_i, Z_i\\}`, where :math:`Y_i(T_i)` is the observed outcome for the chosen treatment, \n:math:`T_i` is the treatment, :math:`X_i` are the co-variates used for heterogeneity, \n:math:`W_i` are other observable co-variates that we believe are affecting the potential outcome :math:`Y_i(T_i)` \nand potentially also the treatment :math:`T_i`; and :math:`Z_i` are variables that affect \nthe treatment :math:`T_i` but do not directly affect the potential outcome. \nWe will refer to variables :math:`W_i` as *controls* and variables :math:`Z_i` as *instruments*. \nThe variables :math:`X_i` can also be thought of as *control* variables, but they are special in the sense that \nthey are a subset of the controls with respect to which we want to measure treatment effect heterogeneity. \nWe will refer to them as *features*.\n\nFinally, some times we might not only be interested in the effect but also in the actual *counterfactual prediction*, i.e. estimating the quantity: \n\n.. math ::\n    \\mu(\\vec{t}, \\vec{x}) = \\E\\left[Y(\\vec{t}) | X=\\vec{x}\\right] \\tag{counterfactual prediction}\n\nOur package does not offer support for counterfactual prediction. However, for most of our estimators (the ones\nassuming a linear-in-treatment model), counterfactual prediction can be easily constructed by combining any baseline predictive model\nwith our causal effect model, i.e. train any machine learning model :math:`b(\\vec{t}, \\vec{x})` to solve the regression/classification\nproblem :math:`\\E[Y | T=\\vec{t}, X=\\vec{x}]`, and then set :math:`\\mu(\\vec{t}, \\vec{x}) = \\tau(\\vec{t}, T, \\vec{x}) + b(T, \\vec{x})`,\nwhere :math:`T` is either the observed treatment for that sample under the observational policy or the treatment\nthat the observational policy would have assigned to that sample. These auxiliary ML models can be trained\nwith any machine learning package outside of EconML.\n\n.. rubric:: \n    Structural Equation Formulation\n\nWe can equivalently describe the data and the quantities of interest via the means of structural equations. In particular, \nsuppose that we observe i.i.d. samples :math:`\\{Y_i, T_i, X_i, W_i, Z_i\\}` from some joint distribution and \nwe assume the following structural equation model of the world:\n\n.. math ::\n    Y =~& g(T, X, W, \\epsilon)\n\n    T =~& f(X, W, Z, \\eta)\n\nwhere :math:`\\epsilon` and :math:`\\eta` are *noise* random variables that are independent of :math:`X, Z, T, W` but could be potentially correlated with each other. \nThe target quantity that we want to estimate can then be expressed as:\n\n.. math ::\n    :nowrap:\n\n    \\begin{align}\n        \\tau(\\vec{t}_0, \\vec{t}_1, \\vec{x}) =& \\E[g(\\vec{t}_1, X, W, \\epsilon) - g(\\vec{t}_0, X, W, \\epsilon) | X=\\vec{x}] \\tag{CATE} \\\\\n        \\partial\\tau(\\vec{t}, \\vec{x}) =& \\E[\\nabla_{\\vec{t}} g(\\vec{t}, X, W, \\epsilon) | X=\\vec{x}] \\tag{marginal CATE} \\\\\n    \\end{align}\n\nwhere in these expectations, the random variables :math:`W, \\epsilon` are taken from the same distribution as the one that generated the data. \nIn other words, there is a one-to-one correspondence between the potential outcomes formulation and the structural equations formulation \nin that the random variable :math:`Y(t)` is equal to the random variable :math:`g(t, X, W, \\epsilon)`, where :math:`X, W, \\epsilon` \nis drawn from the distribution that generated each sample in the data set.\n\nAPI of Conditional Average Treatment Effect Package\n----------------------------------------------------------\n\nThe base class of all the methods in our API has the following signature:\n\n.. code-block:: python3\n    :caption: Base CATE Estimator Class\n\n    class BaseCateEstimator\n        \n        def fit(self, Y, T, X=None, W=None, Z=None, inference=None):\n            ''' Estimates the counterfactual model from data, i.e. estimates functions \n            τ(·, ·, ·)}, ∂τ(·, ·) and μ(·, ·)\n        \n            Parameters:\n            Y: (n × d_y) matrix of outcomes for each sample\n            T: (n × d_t) matrix of treatments for each sample\n            X: (n × d_x) matrix of features for each sample, optional\n            W: (n × d_w) matrix of controls for each sample, optional\n            Z: (n × d_z) matrix of instruments for each sample, optional\n            inference: str or `Inference` instance, optional\n                Method for performing inference.  All estimators support 'bootstrap'\n                (or an instance of `BootstrapInference`), some support other methods as well.\n            '''\n        \n        def effect(self, X=None, *, T0, T1):\n            ''' Calculates the heterogeneous treatment effect τ(·, ·, ·) between two treatment\n            points conditional on a vector of features on a set of m test samples {T0_i, T1_i, X_i}\n        \n            Parameters:\n            T0: (m × d_t) matrix of base treatments for each sample\n            T1: (m × d_t) matrix of target treatments for each sample\n            X:  (m × d_x) matrix of features for each sample, optional\n        \n            Returns:\n            tau: (m × d_y) matrix of heterogeneous treatment effects on each outcome\n                for each sample\n            '''\n        \n        def marginal_effect(self, T, X=None):\n            ''' Calculates the heterogeneous marginal effect ∂τ(·, ·) around a base treatment\n            point conditional on a vector of features on a set of m test samples {T_i, X_i}\n        \n            Parameters:\n            T: (m × d_t) matrix of base treatments for each sample\n            X:  (m × d_x) matrix of features for each sample, optional\n        \n            Returns:\n            grad_tau: (m × d_y × d_t) matrix of heterogeneous marginal effects on each outcome\n                for each sample\n            '''\n\n        def effect_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n            ''' Confidence intervals for the quantities τ(·, ·, ·) produced by the model. \n            Available only when inference is not None, when calling the fit method.\n\n            Parameters:\n            X:  (m, d_x) matrix of features for each sample, optional\n            T0: (m, d_t) matrix of base treatments for each sample, optional\n            T1: (m, d_t) matrix of target treatments for each sample, optional\n            alpha: float in [0, 1] of the (1-alpha) level of confidence, optional\n\n            Returns:\n            lower, upper : tuple of the lower and the upper bounds of the confidence interval \n                for each quantity.\n            '''\n        \n        def marginal_effect_interval(self, T, X=None, *, alpha=0.05):\n            ''' Confidence intervals for the quantities effect ∂τ(·, ·) produced by the model. \n            Available only when inference is not None, when calling the fit method.\n\n            Parameters:\n            T: (m, d_t) matrix of base treatments for each sample\n            X: (m, d_x) matrix of features for each sample, optional\n            alpha: float in [0, 1] of the (1-alpha) level of confidence, optional\n\n            Returns:\n            lower, upper : tuple of the lower and the upper bounds of the confidence interval \n                for each quantity.\n            '''\n\n        \n\n\nLinear in Treatment CATE Estimators\n-----------------------------------\n\n.. rubric::\n    Constant Marginal Effects\n\nIn many settings, we might want to make further structural assumptions on the form of the data generating process.\nOne particular prevalent assumption is that the outcome :math:`y` is linear in the treatment vector and therefore that the marginal effect is constant across treatments, i.e.:\n\n.. math ::\n    Y =~& H(X, W) \\cdot T + g(X, W, \\epsilon)\n\n    T =~& f(X, W, Z, \\eta)\n\nwhere :math:`\\epsilon, \\eta` are exogenous noise terms. Under such a linear response assumption we observe that the CATE and marginal CATE take a special form of:\n\n.. math ::\n\n    \\tau(\\vec{t}_0, \\vec{t}_1, \\vec{x}) =~& \\E[H(X, W) | X=\\vec{x}] \\cdot (\\vec{t}_1 - \\vec{t}_0) \n\n    \\partial \\tau(\\vec{t}, \\vec{x}) =~&  \\E[H(X, W) | X=\\vec{x}]\n\nHence, the marginal CATE is independent of :math:`\\vec{t}`. In these settings, we will denote with :math:`\\theta(\\vec{x})` the constant marginal CATE, i.e. \n\n.. math ::\n    \\theta(\\vec{x}) = \\E[H(X, W) | X=\\vec{x}] \\tag{constant marginal CATE}\n\n.. rubric::\n    Constant Marginal Effects and Marginal Effects Given Treatment Featurization\n\nAdditionally, we may be interested in cases where the outcome depends linearly on a transformation of the treatment vector (via some featurizer :math:`\\phi`). \nSome estimators provide support for passing such a featurizer :math:`\\phi` directly to the estimator, in which case the outcome would be modeled as follows: \n\n.. math ::\n    \n    Y = H(X, W) \\cdot \\phi(T) + g(X, W, \\epsilon)\n\nWe can then get constant marginal effects in the featurized treatment space:\n\n.. math ::\n\n    \\tau(\\phi(\\vec{t_0}), \\phi(\\vec{t_1}), \\vec{x}) =~& \\E[H(X, W) | X=\\vec{x}] \\cdot (\\phi(\\vec{t_1}) - \\phi(\\vec{t_0}))\n\n    \\partial \\tau(\\phi(\\vec{t}), \\vec{x}) =~& \\E[H(X, W) | X=\\vec{x}]\n\n    \\theta(\\vec{x}) =~& \\E[H(X, W) | X=\\vec{x}] \n    \n\nFinally, we can recover the marginal effect with respect to the original treatment space by multiplying the constant marginal effect (which is in featurized treatment space) with the jacobian of the treatment featurizer at :math:`\\vec{t}`.\n\n.. math ::\n    \\partial \\tau(\\vec{t}, \\vec{x}) = \\theta(\\vec{x}) \\nabla \\phi(\\vec{t}) \\tag{marginal CATE}\n\nwhere :math:`\\nabla \\phi(\\vec{t})` is the :math:`d_{ft} \\times d_{t}` jacobian matrix, and :math:`d_{ft}` and :math:`d_{t}` are the dimensions of the featurized treatment and the original treatment, respectively.\n\n.. rubric::\n    API for Linear in Treatment CATE Estimators\n\nGiven the prevalence of linear treatment effect assumptions, we will create a generic LinearCateEstimator, which will support a method that returns the constant marginal CATE \nand constant marginal CATE interval at any target feature vector :math:`\\vec{x}`, as well as calculating marginal effects in the original treatment space when a treatment featurizer is provided.\n\n.. code-block:: python3\n    :caption: Linear CATE Estimator Class\n\n    class LinearCateEstimator(BaseCateEstimator):\n        self.treatment_featurizer = None\n        \n        def const_marginal_effect(self, X=None):\n            ''' Calculates the constant marginal CATE θ(·) conditional on a vector of\n            features on a set of m test samples {X_i}\n        \n            Parameters:\n            X: (m × d_x) matrix of features for each sample, optional\n        \n            Returns:\n            theta: (m × d_y × d_f_t) matrix of constant marginal CATE of each treatment on each outcome\t\n            for each sample, where d_f_t is the dimension of the featurized treatment. \n            If treatment_featurizer is None, d_f_t = d_t\n            '''\n        \n        def const_marginal_effect_interval(self, X=None, *, alpha=0.05):\n            ''' Confidence intervals for the quantities θ(·) produced by the model.\n            Available only when inference is not None, when calling the fit method.\n\n            Parameters:\n            X: (m, d_x) matrix of features for each sample, optional\n            alpha: float in [0, 1] of the (1-alpha) level of confidence, optional\n\n            Returns:\n            lower, upper : tuple of the lower and the upper bounds of the confidence interval \n                for each quantity.\n            '''\n        \n        def effect(self,  X=None, *, T0, T1,):\n            if self.treatment_featurizer:\n                return const_marginal_effect(X) * (T1 - T0)\n            else:\n                dt = self.treatment_featurizer.transform(T1) - self.treatment_featurizer.transform(T0)\n                return const_marginal_effect(X) * dt\n        \n        def marginal_effect(self, T, X=None)\n            if self.treatment_featurizer is None:\n                return const_marginal_effect(X)\n            else:\n                # for every observation X_i, T_i, \n                # calculate jacobian at T_i and multiply with const_marginal_effect at X_i\n        \n        def marginal_effect_interval(self, T, X=None, *, alpha=0.05):\n            if self.treatment_featurizer is None:\n                return const_marginal_effect_interval(X, alpha=alpha)\n            else:\n                # perform separate treatment featurization inference logic\n        \n        \n\n\nExample Use of API\n------------------\n\nLet us walk through a simple example of what one can achieve via the latter API\neven irrespective of the actual estimation method that is being used.\n\nLet us consider a hypothetical data generating process (DGP) governed by the \nfollowing equations:\n\n.. math ::\n    \\begin{align}\n        Y(t) =~& \\gamma t^2 + \\delta X t + \\langle \\zeta, W \\rangle + \\epsilon\\\\\n        T =~& \\langle \\alpha, W \\rangle + \\langle \\beta, Z \\rangle + \\eta\\\\\n        X, Z, \\epsilon, \\eta \\sim~& N(0, 1), ~~ W \\sim N(0, I_{d})\n    \\end{align}\n\n\nSuppose that we have :math:`n` samples from this DGP. For instance, we could create these\nsamples with the following code:\n\n.. code-block:: python3\n    :caption: Example Data Generated from Structural Equations\n\n    import numpy as np\n\n    # Instance parameters\n    n_controls = 100\n    n_instruments = 1\n    n_features = 1\n    n_treatments = 1\n    alpha = np.random.normal(size=(n_controls, 1))\n    beta = np.random.normal(size=(n_instruments, 1))\n    gamma = np.random.normal(size=(n_treatments, 1))\n    delta = np.random.normal(size=(n_treatments, 1))\n    zeta = np.random.normal(size=(n_controls, 1))\n\n    n_samples = 1000\n    W = np.random.normal(size=(n_samples, n_controls))\n    Z = np.random.normal(size=(n_samples, n_instruments))\n    X = np.random.normal(size=(n_samples, n_features))\n    eta = np.random.normal(size=(n_samples, n_treatments))\n    epsilon = np.random.normal(size=(n_samples, 1))\n    T = np.dot(W, alpha) + np.dot(Z, beta) + eta\n    y = np.dot(T**2, gamma) + np.dot(np.multiply(T, X), delta) + np.dot(W, zeta) + epsilon\n\n\nWe can then fit a counterfactual model to the data. In order to learn confidence interval of our CATE, \nwe could pass an additional inference argument to fit, bootstrap interval is supported by all estimators.\nWe can run the following: \n\n.. code-block:: python3\n    :caption: Example fit of causal model\n\n    # Fit counterfactual model \n    cfest = BaseCateEstimator()\n    cfest.fit(y, T, X=X, W=W, Z=Z, inference='bootstrap')\n\nSuppose now that we wanted to estimate the conditional average treatment effect for every point :math:`X_i` \nin the training data and between treatment 1 and treatment 0. \nThis should be an estimate of the quantities: :math:`\\gamma + \\delta X_i`.  We can also get the\nconfidence interval of the CATE. We can run the following:\n\n.. code-block:: python3\n    :caption: Estimating cate for all training features from treatment 0 to 1\n\n    X_test = X\n    # Estimate heterogeneous treatment effects from going from treatment 0 to treatment 1\n    T0_test = np.zeros((X_test.shape[0], n_treatments))\n    T1_test = np.ones((X_test.shape[0], n_treatments))\n    hetero_te = cfest.effect(X_test, T0=T0_test, T1=T1_test)\n    hetero_te_interval =  cfest.effect_interval(X_test, T0=T0_test, T1=T1_test, alpha=0.1)\n\nSuppose now that we wanted to estimate the conditional marginal effect for every point :math:`X_i` \nat treatment 0.\nThis should be an estimate of the quantities: :math:`\\delta X_i`. We can also get the\nconfidence interval of the CATE. We can run the following:\n\n.. code-block:: python3\n    :caption: Estimating marginal cate for all training features at treatment 0\n\n    # Estimate heterogeneous marginal effects around treatment 0\n    T_test = np.zeros((X_test.shape[0], n_treatments))\n    hetero_marginal_te = cfest.marginal_effect(T_test, X_test)\n    hetero_marginal_te_interval = cfest.marginal_effect_interval(T_test, X_test, alpha=0.1)\n\nSuppose we wanted to create projections of these estimated quantities on sub-populations, i.e.\nthe average treatment effect or the average treatment effect on the population where :math:`X_i\\geq 1/2`.\nWe could simply achieve this as follows:\n\n.. code-block:: python3\n    :caption: Projecting on subpopulations\n\n    # Estimate average treatment effects over a population of z's\n    T0_test = np.zeros((X_test.shape[0], n_treatments))\n    T1_test = np.ones((X_test.shape[0], n_treatments))\n\n    # average treatment effect\n    ate = np.mean(cfest.effect(X_test, T0=T0_test, T1=T1_test)) # returns estimate of γ + δ 𝔼[x]\n\n    # average treatment effect of population with x>1/2\n    # returns estimate of γ + δ 𝔼[x | x>1/2]\n    cate = np.mean(cfest.effect(X_test[X_test>1/2], T0=T0_test[X_test>1/2], T1=T1_test[X_test>1/2])) \n\nMore importantly, suppose we wanted to understand what would be the overall expected change in response\nif we were to follow some treatment policy (e.g. treat everyone with :math:`X_i\\geq 0`). This\ncan also be easily done as follows:\n\n.. code-block:: python3\n    :caption: Estimating expected lift of some treatment policy\n    \n    # Estimate expected lift of treatment policy: π(z) = 𝟙{x > 0} over existing policy\n    Pi0_test = T\n    Pi1_test = (X_test > 0) * 1.\n    # returns estimate of γ/2 + δ/√(2π)\n    policy_effect = np.mean(cfest.effect(X_test, T0=Pi0_test, T1=Pi1_test)) \n\n    # Estimate expected lift of treatment policy: π(x) = 𝟙{x > 0} over baseline of no treatment\n    Pi0_test = np.zeros((X_test.shape[0], n_treatments))\n    Pi1_test = (X_test > 0) * 1.\n    # returns estimate of γ/2 + δ/√(2π)\n    policy_effect = np.mean(cfest.effect(X_test, T0=Pi0_test, T1=Pi1_test)) \n\n.. rubric:: Footnotes\n\n.. [1] One can always approximate the latter with the former and vice versa, \n    i.e. :math:`\\partial_i \\tau(\\vec{t},\\vec{x}) \\approx \\tau(\\vec{t}, \\vec{t} + \\delta \\vec{e}_i, \\vec{x})/\\delta` \n    for some small enough :math:`\\delta`, and similarly, \n    :math:`\\tau(\\vec{t_0}, \\vec{t_1}, \\vec{x}) = \\int_{0}^{1} \\partial\\tau(\\vec{t}_0 + q (\\vec{t}_1 - \\vec{t}_0), \\vec{x}) (\\vec{t}_1 - \\vec{t_0})dq`. \n    However, in many settings more direct methods that make use of the structure might simplify these generic transformations.\n\n"
  },
  {
    "path": "doc/spec/causal_intro.rst",
    "content": "Introduction to Causal Inference\n=================================\n\nIf you are new to causal inference, it may be helpful to walk through a quick overview of concepts and techniques that we refer to over the course of the documentation. Below we provide a high level introduction to causal inference tailored for EconML:\n\n.. raw:: html\n\n    <iframe src=\"../Causal-Inference-User-Guide-v4-022520.pdf\" width=\"700\" height=\"388\"> </iframe>\n\nThe folks at DoWhy also have a broader introduction `here <https://causalinference.gitlab.io/kdd-tutorial/>`__."
  },
  {
    "path": "doc/spec/community.rst",
    "content": "Community\n==========\n\n.. raw:: html\n    \n    <p></p>\n    <a href=\"https://pywhy.org/\">\n    <img src=\"../pywhy-logo.png\" width=\"80px\" align=\"left\" style=\"margin-right: 10px;\", alt=\"pywhy-logo\">\n    </a>\n\nEconML is a part of `PyWhy <https://www.pywhy.org/>`__, an organization with a mission to build an open-source ecosystem for causal machine learning.\n\nPyWhy also has a `Discord <https://discord.gg/cSBGb3vsZb>`__, which serves as a space for like-minded casual machine learning researchers and practitioners of all experience levels to come together to ask and answer questions, discuss new features, and share ideas.\n\nWe invite you to join us at regular office hours and community calls in the Discord."
  },
  {
    "path": "doc/spec/comparison.rst",
    "content": "=============================\nDetailed estimator comparison\n=============================\n\n\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| Estimator                                   | | Treatment  | | Requires   | | Delivers Conf. | | Linear    | | Linear        | | Multiple | | Multiple   | | High-Dimensional |\n|                                             | | Type       | | Instrument | | Intervals      | | Treatment | | Heterogeneity | | Outcomes | | Treatments | | Features         |\n+=============================================+==============+==============+==================+=============+=================+============+==============+====================+\n| :class:`.SieveTSLS`                         | Any          | Yes          |                  | Yes         | Assumed         | Yes        | Yes          |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.SparseLinearDML`                   | Any          |              | Yes              | Yes         | Assumed         | Yes        | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.SparseLinearDRLearner`             | Categorical  |              | Yes              |             | Projected       |            | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.LinearDML`                         | Any          |              | Yes              | Yes         | Assumed         | Yes        | Yes          |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.LinearDRLearner`                   | Categorical  |              | Yes              |             | Projected       |            | Yes          |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.CausalForestDML`                   | Any          |              | Yes              | Yes         |                 | Yes        | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.ForestDRLearner`                   | Categorical  |              | Yes              |             |                 |            | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DMLOrthoForest`                    | Any          |              | Yes              | Yes         |                 |            | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DROrthoForest`                     | Categorical  |              | Yes              |             |                 |            | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :ref:`metalearners <metalearners_api>`      | Categorical  |              |                  |             |                 | Yes        | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DRLearner`                         | Categorical  |              |                  |             |                 |            | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DML`                               | Any          |              |                  | Yes         | Assumed         | Yes        | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.NonParamDML`                       | 1-d/Binary   |              |                  | Yes         |                 | Yes        |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.OrthoIV`                           | Any          | Yes          | Yes              | Yes         | Assumed         | Yes        | Yes          |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DMLIV`                             | Any          | Yes          |                  | Yes         | Assumed         | Yes        | Yes          | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.NonParamDMLIV`                     | 1-d/Binary   | Yes          |                  | Yes         |                 | Yes        |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.DRIV`                              | 1-d/Binary   | Yes          | Yes              | Yes         |                 |            |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.LinearDRIV`                        | 1-d/Binary   | Yes          | Yes              | Yes         | Projected       |            |              |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.SparseLinearDRIV`                  | 1-d/Binary   | Yes          | Yes              | Yes         | Projected       |            |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.ForestDRIV`                        | 1-d/Binary   | Yes          | Yes              | Yes         |                 |            |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.IntentToTreatDRIV`                 | Binary       | Yes          | Ye               | Yes         |                 |            |              | Yes                |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n| :class:`.LinearIntentToTreatDRIV`           | Binary       | Yes          | Yes              | Yes         | Projected       |            |              |                    |\n+---------------------------------------------+--------------+--------------+------------------+-------------+-----------------+------------+--------------+--------------------+\n\nTreatment Type\n    Some estimators can only estimate effects of particular kinds of treatments. \n    *Discrete* treatments can be described by a finite number of comprehensive categories (for example, \n    group A received a 10% discount on product 1, group B received a 10% discount on product 2, group C \n    received no discounts). *Binary* treatments are a special case of discrete treatments with only two \n    categories. *Continuous* treatments can take on any value along the number line (for example, minutes of \n    exercise per week).  \n\nRequires Instrument\n    Some estimators identify the causal effect of a treatment by considering only a subset of the variation in \n    treatment intensity that is conditionally random given other data features. This subset of the variation \n    is driven by an instrument, which is usually some kind of randomization (i.e. an earlier experiment or a \n    lottery). See the Instrumental Variable Regression section for more information on picking a good \n    instrument.  \n\nDelivers Confidence Intervals\n    Many estimators can deliver analytic confidence intervals for the final treatment effects. These \n    confidence intervals correctly adjust for the reuse of data across multiple stages of estimation. EconML \n    cannot deliver analytic confidence intervals in cases where this multi-stage estimation is too complex or \n    for estimators such as the MetaLearners that trade honest confidence intervals for model selection and \n    regularization. In these cases it is still possible to get bootstrap confidence intervals, but this \n    process is slow and may not be statistically valid. \n\nLinear Treatment\n    Some estimators impose the assumption that the outcome is a linear function of the treatment. These \n    estimators can also estimate a non-linear relationship between a treatment and the outcome if the \n    structure of the relationship is known and additively separable (for example, the linear function could \n    include both treatment and treatment-squared for continuous treatments). These linear functions can also \n    include specified interactions between treatments. However, these estimators cannot estimate a fully \n    flexible non-parametric relationship between treatments and the outcome (for example, the relationship \n    cannot be modeled by a forest). \n\nLinear Heterogeneity\n    The CATE function determines how the size of a user’s response to the treatment varies by user features. \n    Some estimators impose the *assumption* that effect size is a linear function of user features. A few models \n    estimate a more flexible relationship between effect size and user features and then *project* that flexible\n    function onto a linear model. This second approach delivers a better-fitting linear approximation of a \n    non-linear relationship, but is less efficient in cases where you are confident assuming the true \n    relationship is linear. Finally, some estimation models allow a fully flexible relationship between \n    effect size and user features with no linearity structure. \n\nMultiple Outcomes\n    Some estimation models allow joint estimation of the effects of treatment(s) on multiple outcomes. Other \n    models only accommodate a single outcome. \n\nMultiple Treatments\n    Some estimation models allow joint estimation of the effects of multiple treatments on outcome(s). Other \n    models only accommodate a single treatment. \n\nHigh-Dimensional Features\n    Many estimators only behave well with a small set of specified features, X, that affect the size of a \n    user’s response to the treatment. If you do not already know which few features might reasonably affect \n    the user’s response, use one of our sparse estimators that can handle large feature sets and penalize them \n    to discover the features that are most correlated with treatment effect heterogeneity. \n\n"
  },
  {
    "path": "doc/spec/estimation/dml.rst",
    "content": ".. _dmluserguide:\n\n==================================\nOrthogonal/Double Machine Learning\n==================================\n\nWhat is it?\n==================================\n\nDouble Machine Learning is a method for estimating (heterogeneous) treatment effects when\nall potential confounders/controls (factors that simultaneously had a direct effect on the treatment decision in the\ncollected data and the observed outcome) are observed, but are either too many (high-dimensional) for\nclassical statistical approaches to be applicable or their effect on \nthe treatment and outcome cannot be satisfactorily modeled by parametric functions (non-parametric).\nBoth of these latter problems can be addressed via machine learning techniques (see e.g. [Chernozhukov2016]_).\n\nThe method reduces the problem to first estimating *two predictive tasks*: \n    \n    1) predicting the outcome from the controls,\n    2) predicting the treatment from the controls;\n\nThen the method combines these two predictive models in a final stage estimation so as to create a\nmodel of the heterogeneous treatment effect. The approach allows for *arbitrary Machine Learning algorithms* to be\nused for the two predictive tasks, while maintaining many favorable statistical properties related to the final\nmodel (e.g. small mean squared error, asymptotic normality, construction of confidence intervals).\n\nOur package offers several variants for the final model estimation. Many of these variants also\nprovide *valid inference* (confidence interval construction) for measuring the uncertainty of the learned model.\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the classes, :class:`._RLearner`,\n:class:`.DML`, :class:`.LinearDML`,\n:class:`.SparseLinearDML`, :class:`.KernelDML`, :class:`.NonParamDML`,\n:class:`.CausalForestDML`.\nClick on each of these links for a detailed module documentation and input parameters of each class.\n\n\nWhen should you use it?\n==================================\n\nSuppose you have observational (or experimental from an A/B test) historical data, where some treatment(s)/intervention(s)/action(s) \n:math:`T` were chosen and some outcome(s) :math:`Y` were observed and all the variables :math:`W` that could have\npotentially gone into the choice of :math:`T`, and simultaneously could have had a direct effect on the outcome :math:`Y` (aka controls or confounders) are also recorded in the dataset.\n\nIf your goal is to understand what was the effect of the treatment on the outcome as a function of a set of observable\ncharacteristics :math:`X` of the treated samples, then one can use this method. For instance call:\n\n.. testsetup::\n\n    # DML\n    import numpy as np\n    X = np.random.choice(6, size=(100,3))\n    Y = np.random.normal(size=(100,2))\n    y = np.random.normal(size=(100,))\n    (T, T0, T1) = (np.random.choice(np.arange(3), size=(100,2)) for _ in range(3))\n    (t, t0, t1) = (a[:,0] for a in (T, T0, T1))\n    W = np.random.normal(size=(100,2))\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    est = LinearDML()\n    est.fit(y, T, X=X, W=W)\n    est.const_marginal_effect(X)\n\nThis way an optimal treatment policy can be learned, by simply inspecting for which :math:`X` the effect was positive.\n\nMost of the methods provided make a parametric form assumption on the heterogeneous treatment effect model (e.g.\nlinear on some pre-defined; potentially high-dimensional; featurization). These methods include: \n:class:`.DML`, :class:`.LinearDML`,\n:class:`.SparseLinearDML`, :class:`.KernelDML`.\nFor fully non-parametric heterogeneous treatment effect models, check out the :class:`.NonParamDML`\nand the :class:`.CausalForestDML`. \nFor more options of non-parametric CATE estimators, \ncheck out the :ref:`Forest Estimators User Guide <orthoforestuserguide>` \nand the :ref:`Meta Learners User Guide <metalearnersuserguide>`.\n\n\nOverview of Formal Methodology\n==================================\n\nThe model makes the following structural equation assumptions on the data generating process.\n\n.. math::\n\n    Y =~& \\theta(X) \\cdot T + g(X, W) + \\epsilon ~~~&~~~ \\E[\\epsilon | X, W] = 0 \\\\ \n    T =~& f(X, W) + \\eta & \\E[\\eta \\mid X, W] = 0 \\\\\n    ~& \\E[\\eta \\cdot \\epsilon | X, W] = 0\n\nWhat is particularly attractive about DML is that it makes no further structural assumptions on :math:`g` and :math:`f` and estimates them \nnon-parametrically using arbitrary non-parametric Machine Learning methods. Our goal is to estimate\nthe constant marginal CATE :math:`\\theta(X)`.\n\nThe idea to estimate :math:`\\theta(X)` is as follows: we can re-write the structural equations as\n\n.. math::\n\n    Y - \\E[Y | X, W]\n    = \\theta(X) \\cdot (T - \\E[T | X, W]) + \\epsilon\n\nThus if one can estimate the conditional expectation functions (both of which are non-parametric regression tasks):\n\n.. math::\n\n    q(X, W) =~& \\E[Y | X, W]\\\\\n    f(X, W) =~& \\E[T | X, W]\n\nThen we can compute the residuals:\n\n.. math::\n\n    \\tilde{Y} =~& Y - q(X, W)\\\\\n    \\tilde{T} =~& T - f(X, W) = \\eta\n\nwhich are subsequently related by the equation:\n\n.. math::\n\n    \\tilde{Y} = \\theta(X) \\cdot \\tilde{T} + \\epsilon\n\nSubsequently, since :math:`\\E[\\epsilon \\cdot \\eta | X]=0`, estimating :math:`\\theta(X)` is a final regression problem, regressing :math:`\\tilde{Y}` on :math:`X, \\tilde{T}` (albeit over models that are linear in :math:`\\tilde{T}`), i.e.\n\n.. math::\n    :nowrap:\n\n    \\begin{equation}\n    \\hat{\\theta} = \\arg\\min_{\\theta \\in \\Theta} \\E_n\\left[ (\\tilde{Y} - \\theta(X)\\cdot \\tilde{T})^2 \\right]\n    \\end{equation}\n\nThis approach has been analyzed in multiple papers in the literature, for different model classes :math:`\\Theta`.\n[Chernozhukov2016]_ consider the case where :math:`\\theta(X)` is a constant (average treatment effect) or a low dimensional\nlinear function,\n[Nie2017]_ consider the case where :math:`\\theta(X)` falls in a Reproducing Kernel Hilbert Space (RKHS),\n[Chernozhukov2017]_, [Chernozhukov2018]_ consider the case of a high dimensional sparse linear space, where :math:`\\theta(X)=\\langle \\theta, \\phi(X)\\rangle`\nfor some known high-dimensional feature mapping and where :math:`\\theta_0` has very few non-zero entries (sparse), \n[Athey2019]_ (among other results) consider the case where :math:`\\theta(X)` is a non-parametric lipschitz function and \nuse random forest models to fit the function, [Foster2019]_ allow for arbitrary models :math:`\\theta(X)` and give \nresults based on sample complexity measures of the model space (e.g. Rademacher complexity, metric entropy).\n\n\nThe main advantage of DML is that if one makes parametric assumptions on :math:`\\theta(X)`, then one achieves fast estimation rates and, \nfor many cases of final stage estimators, also asymptotic normality on the second stage estimate :math:`\\hat{\\theta}`, even if the first stage estimates on :math:`q(X, W)` \nand :math:`f(X, W)` are only :math:`n^{1/4}` consistent, in terms of RMSE. For this theorem to hold, the nuisance\nestimates need to be fitted in a cross-fitting manner (see :class:`._OrthoLearner`).\nThe latter robustness property follows from the fact that the moment equations that correspond to the final \nleast squares estimation (i.e. the gradient of the squared loss), satisfy a Neyman orthogonality condition with respect to the\nnuisance parameters :math:`q, f`. For a more detailed exposition of how Neyman orthogonality \nleads to robustness we refer the reader to [Chernozhukov2016]_, [Mackey2017]_, [Nie2017]_, [Chernozhukov2017]_,\n[Chernozhukov2018]_, [Foster2019]_. \n\nClass Hierarchy Structure\n==================================\n\nIn this library we implement variants of several of the approaches mentioned in the last section. The hierarchy\nstructure of the implemented CATE estimators is as follows.\n\n    .. inheritance-diagram:: econml.dml.LinearDML econml.dml.SparseLinearDML econml.dml.KernelDML econml.dml.NonParamDML econml.dml.CausalForestDML\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._rlearner._RLearner, econml._cate_estimator.StatsModelsCateEstimatorMixin, econml._cate_estimator.DebiasedLassoCateEstimatorMixin\n\nBelow we give a brief description of each of these classes:\n\n    * **DML.** The class :class:`.DML` assumes that the effect model for each outcome :math:`i` and treatment :math:`j` is linear, i.e. takes the form :math:`\\theta_{ij}(X)=\\langle \\theta_{ij}, \\phi(X)\\rangle`, and allows for any arbitrary scikit-learn linear estimator to be defined as the final stage (e.g.    \n      :class:`~sklearn.linear_model.ElasticNet`, :class:`~sklearn.linear_model.Lasso`, :class:`~sklearn.linear_model.LinearRegression` and their multi-task variations in the case where we have multiple outcomes, i.e. :math:`Y` is a vector). The final linear model will be fitted on features that are derived by the Kronecker-product\n      of the vectors :math:`T` and :math:`\\phi(X)`, i.e. :math:`\\tilde{T}\\otimes \\phi(X) = \\mathtt{vec}(\\tilde{T}\\cdot \\phi(X)^T)`. This regression will estimate the coefficients :math:`\\theta_{ijk}` \n      for each outcome :math:`i`, treatment :math:`j` and feature :math:`k`. The final model is minimizing a regularized empirical square loss of the form:\n      \n      .. math::\n\n            \\hat{\\Theta} = \\arg\\min_{\\Theta} \\E_n\\left[ \\left(\\tilde{Y} - \\Theta \\cdot \\tilde{T}\\otimes \\phi(X)\\right)^2 \\right] + \\lambda R(\\Theta)\n\n      for some strongly convex regularizer :math:`R`, where :math:`\\Theta` is the parameter matrix of dimensions (number of outcomes, number of treatments * number of features). For instance, if :math:`Y` is single dimensional and the lasso is used as model final, i.e.:\n\n      .. testcode::\n      \n        from econml.dml import DML\n        from sklearn.linear_model import LassoCV\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = DML(model_y=GradientBoostingRegressor(),\n                  model_t=GradientBoostingRegressor(),    \n                  model_final=LassoCV(fit_intercept=False))\n\n      then :math:`R(\\Theta) =\\|\\Theta\\|_1`, \n      if ElasticNet is used as model final, i.e.:\n\n      .. testcode::    \n\n        from econml.dml import DML\n        from sklearn.linear_model import ElasticNetCV\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = DML(model_y=GradientBoostingRegressor(),\n                  model_t=GradientBoostingRegressor(),\n                  model_final=ElasticNetCV(fit_intercept=False))\n\n      then :math:`R(\\Theta)=\\kappa \\|\\Theta\\|_2 + (1-\\kappa)\\|\\Theta\\|_1`. For multi-dimensional :math:`Y`, \n      one can impose several extensions to the matrix of parameters :math:`\\Theta`, such as the one corresponding to the MultiTask Lasso \n      :math:`\\sum_{j} \\sum_{i} \\theta_{ij}^2` or MultiTask ElasticNet or nuclear norm regularization  [Jaggi2010]_, which enforces low-rank \n      constraints on the matrix :math:`\\Theta`.\n      This essentially implements the techniques analyzed in [Chernozhukov2016]_, [Nie2017]_, [Chernozhukov2017]_, [Chernozhukov2018]_\n        \n        - **LinearDML.** The child class  :class:`.LinearDML`, uses an unregularized final linear model and  \n          essentially works only when the feature vector :math:`\\phi(X)` is low dimensional. Given that it is an unregularized\n          low dimensional final model, this class also offers confidence intervals via asymptotic normality \n          arguments. This is achieved by essentially using the :class:`.StatsModelsLinearRegression`\n          (which is an extension of the scikit-learn LinearRegression estimator, that also supports inference\n          functionalities) as a final model. The theoretical foundations of this class essentially follow the arguments in [Chernozhukov2016]_.\n          For instance, to get confidence intervals on the effect of going\n          from any treatment T0 to any other treatment T1, one can simply call:\n\n          .. testcode::\n\n            est = LinearDML()\n            est.fit(y, T, X=X, W=W)\n            point = est.effect(X, T0=T0, T1=T1)\n            lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=0.05)\n\n          One could also construct bootstrap based confidence intervals by setting `inference='bootstrap'`.\n\n        - **SparseLinearDML.** The child class :class:`.SparseLinearDML`, uses an :math:`\\ell_1`-regularized final    \n          model. In particular, it uses an implementation of the DebiasedLasso algorithm [Buhlmann2011]_ (see :class:`.DebiasedLasso`). Using the asymptotic normality properties\n          of the debiased lasso, this class also offers asymptotically normal based confidence intervals.\n          The theoretical foundations of this class essentially follow the arguments in [Chernozhukov2017]_, [Chernozhukov2018]_.\n          For instance, to get confidence intervals on the effect of going\n          from any treatment T0 to any other treatment T1, one can simply call:\n\n          .. testcode::\n\n            from econml.dml import SparseLinearDML\n            est = SparseLinearDML()\n            est.fit(y, T, X=X, W=W)\n            point = est.effect(X, T0=T0, T1=T1)\n            lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=0.05)\n\n        - **KernelDML.** The child class :class:`.KernelDML` performs a variant of the RKHS approach proposed in \n          [Nie2017]_. It approximates any function in the RKHS by creating random Fourier features. Then runs a ElasticNet\n          regularized final model. Thus it approximately implements the results of [Nie2017], via the random fourier feature\n          approximate representation of functions in the RKHS. Moreover, given that we use Random Fourier Features this class\n          assumes an RBF kernel.\n    \n    * **NonParamDML.** The class :class:`.NonParamDML` makes no assumption on the effect model for each outcome :math:`i`.\n      However, it applies only when the treatment is either binary or single-dimensional continuous. It uses the observation that for a single\n      dimensional treatment, the square loss can be re-written as:\n\n      .. math::\n\n        \\E_n\\left[ \\left(\\tilde{Y} - \\theta(X) \\cdot \\tilde{T}\\right)^2 \\right] = \\E_n\\left[ \\tilde{T}^2 \\left(\\frac{\\tilde{Y}}{\\tilde{T}} - \\theta(X)\\right)^2 \\right]\n    \n      The latter corresponds to a weighted regression problem, where the target label is :math:`\\tilde{Y}/\\tilde{T}`, the features are :math:`X`\n      and the weight of each sample is :math:`\\tilde{T}^2`. Thus any scikit-learn regressor that accepts sample weights can be used as a final model, e.g.:\n\n      .. testcode::\n\n        from econml.dml import NonParamDML\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = NonParamDML(model_y=GradientBoostingRegressor(),\n                          model_t=GradientBoostingRegressor(),    \n                          model_final=GradientBoostingRegressor())\n        est.fit(y, t, X=X, W=W)\n        point = est.effect(X, T0=t0, T1=t1)    \n\n      Examples include Random Forests (:class:`~sklearn.ensemble.RandomForestRegressor`), Gradient Boosted Forests (:class:`~sklearn.ensemble.GradientBoostingRegressor`) and\n      Support Vector Machines (:class:`~sklearn.svm.SVC`). Moreover, we offer a wrapper :class:`.WeightedModelWrapper` that adds sample weight functionality\n      to any scikit-learn regressor. Moreover, for particular estimators we offer scikit-learn extensions that are more tailored such as the :class:`.WeightedLasso`.\n      Hence, any such model and even cross validated estimators that perform automatic model selection can be used as `model_final`. From that respect this\n      estimator is also a *Meta-Learner*, since all steps of the estimation use out-of-the-box ML algorithms. For more information,\n      check out :ref:`Meta Learners User Guide <metalearnersuserguide>`.\n\n    * **CausalForestDML.** This is a child of the :class:`._RLearner` that uses a Causal Forest\n      as a final model (see [Wager2018]_ and [Athey2019]_). The Causal Forest is implemented in the library as a scikit-learn\n      predictor, in the class :class:`.CausalForest`. This estimator\n      offers confidence intervals via the Bootstrap-of-Little-Bags as described in [Athey2019]_.\n      Using this functionality we can also construct confidence intervals for the CATE:\n\n        .. testcode::\n        \n            from econml.dml import CausalForestDML\n            from sklearn.ensemble import GradientBoostingRegressor\n            est = CausalForestDML(model_y=GradientBoostingRegressor(),\n                                  model_t=GradientBoostingRegressor())\n            est.fit(y, t, X=X, W=W)\n            point = est.effect(X, T0=t0, T1=t1)\n            lb, ub = est.effect_interval(X, T0=t0, T1=t1, alpha=0.05)\n\n      Check out :ref:`Forest Estimators User Guide <orthoforestuserguide>` for more information on forest based CATE models and other\n      alternatives to the :class:`.CausalForestDML`.\n\n    * **_RLearner.** The internal private class :class:`._RLearner` is a parent of the :class:`.DML`\n      and allows the user to specify any way of fitting a final model that takes as input the residual :math:`\\tilde{T}`,\n      the features :math:`X` and predicts the residual :math:`\\tilde{Y}`. Moreover, the nuisance models take as input\n      :math:`X` and :math:`W` and predict :math:`T` and :math:`Y` respectively. Since these models take non-standard\n      input variables, one cannot use out-of-the-box scikit-learn estimators as inputs to this class. Hence, it is\n      slightly more cumbersome to use, which is the reason why we designated it as private. However, if one wants to\n      fit for instance a neural net model for :math:`\\theta(X)`, then this class can be used (see the implementation\n      of the :class:`.DML` of how to wrap sklearn estimators and pass them as inputs to the\n      :class:`._RLearner`. This private class essentially follows the general arguments and\n      terminology of the RLearner presented in [Nie2017]_, and allows for the full flexibility of the final model\n      estimation that is presented in [Foster2019]_.\n\n\n\nUsage FAQs\n==========\n\n- **What if I want confidence intervals?**\n\n    For valid confidence intervals use the :class:`.LinearDML` if the number of features :math:`X`,\n    that you want to use for heterogeneity are small compared to the number of samples that you have. If the number of\n    features is comparable to the number of samples, then use :class:`.SparseLinearDML`.\n    e.g.:\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n        est = LinearDML()\n        est.fit(y, T, X=X, W=W)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=.05)\n        lb, ub = est.coef__interval(alpha=.05)\n        lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=.05)\n    \n    If you have a single dimensional continuous treatment or a binary treatment, then you can also fit non-linear\n    models and have confidence intervals by using the :class:`.CausalForestDML`. This class will also\n    perform well with high dimensional features, as long as only few of these features are actually relevant.\n\n- **Why not just run a simple big linear regression with all the treatments, features and controls?**\n\n    If you want to estimate an average treatment effect with accompanied confidence intervals then one\n    potential approach one could take is simply run a big linear regression, regressing :math:`Y` on\n    :math:`T, X, W` and then looking at the coefficient associated with the :math:`T` variable and\n    the corresponding confidence interval (e.g. using statistical packages like\n    :class:`~statsmodels.regression.linear_model.OLS`). However, this will not work if:\n\n        1) The number of control variables :math:`X, W` that you have is large and comparable\n        to the number of samples. This could for instance arise if one wants to control for\n        unit fixed effects, in which case the number of controls is at least the number of units.\n        In such high-dimensional settings, ordinary least squares (OLS) is not a reasonable approach.\n        Typically, the covariance matrix of the controls, will be ill-posed and the inference\n        will be invalid. The DML method bypasses this by using ML approaches to appropriately\n        regularize the estimation and provide better models on how the controls affect the outcome,\n        given the number of samples that you have.\n\n        2) The effect of the variables :math:`X, W` on the outcome :math:`Y` is not linear.\n        In this case, OLS will not provide a consistent model, which could lead to heavily\n        biased effect results. The DML approach, when combined with non-linear first stage\n        models, like Random Forests or Gradient Boosted Forests, can capture such non-linearities\n        and provide unbiased estimates of the effect of :math:`T` on :math:`Y`. Moreover,\n        it does so in a manner that is robust to the estimation mistakes that these ML algorithms\n        might be making.\n    \n    Moreover, one may typically want to estimate treatment effect heterogeneity,\n    which the above OLS approach wouldn't provide. One potential way of providing such heterogeneity\n    is to include product features of the form :math:`X\\cdot T` in the OLS model. However, then\n    one faces again the same problems as above:\n\n        1) If effect heterogeneity does not have a linear form, then this approach is not valid.\n        One might want to then create more complex featurization, in which case the problem could\n        become too high-dimensional for OLS. Our :class:`.SparseLinearDML`\n        can handle such settings via the use of the debiased Lasso. Our :class:`.CausalForestDML` does not\n        even need explicit featurization and learns non-linear forest based CATE models, automatically. Also see the\n        :ref:`Forest Estimators User Guide <orthoforestuserguide>` and the :ref:`Meta Learners User Guide <metalearnersuserguide>`,\n        if you want even more flexible CATE models.\n\n        2) If the number of features :math:`X` is comparable to the number of samples, then even\n        with a linear model, the OLS approach is not feasible or has very small statistical power.\n\n\n- **What if I have no idea how heterogeneity looks like?**\n\n    Either use a flexible featurizer, e.g. a polynomial featurizer with many degrees and use\n    the :class:`.SparseLinearDML`:\n\n    .. testcode::\n\n        from econml.dml import SparseLinearDML\n        from sklearn.preprocessing import PolynomialFeatures\n        est = SparseLinearDML(featurizer=PolynomialFeatures(degree=4, include_bias=False))\n        est.fit(y, T, X=X, W=W)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=.05)\n    \n    Alternatively, you can also use a forest based estimator such as :class:`.CausalForestDML`. This \n    estimator can also handle many features, albeit typically smaller number of features than the sparse linear DML.\n    Moreover, this estimator essentially performs automatic featurization and can fit non-linear models.\n\n    .. testcode::\n\n        from econml.dml import CausalForestDML\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = CausalForestDML(model_y=GradientBoostingRegressor(),\n                        model_t=GradientBoostingRegressor())\n        est.fit(y, t, X=X, W=W)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=.05)\n    \n    Also the check out the :ref:`Orthogonal Random Forest User Guide <orthoforestuserguide>` or the\n    :ref:`Meta Learners User Guide <metalearnersuserguide>`.\n\n- **What if I have too many features that can create heterogeneity?**\n\n    Use the :class:`.SparseLinearDML` or :class:`.CausalForestDML` (see above).\n\n- **What if I have too many features I want to control for?**\n\n    Use first stage models that work well with high dimensional features. For instance, the Lasso or the \n    ElasticNet or gradient boosted forests are all good options (the latter allows for \n    non-linearities in the model but can typically handle fewer features than the former), e.g.:\n\n    .. testcode::\n\n        from econml.dml import SparseLinearDML\n        from sklearn.linear_model import LassoCV, ElasticNetCV\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = SparseLinearDML(model_y=LassoCV(), model_t=LassoCV())\n        est = SparseLinearDML(model_y=ElasticNetCV(), model_t=ElasticNetCV())\n        est = SparseLinearDML(model_y=GradientBoostingRegressor(),\n                              model_t=GradientBoostingRegressor())\n    \n    The confidence intervals will still be valid, provided that these first stage models achieve small\n    mean squared error.\n\n- **What should I use for first stage estimation?**\n\n    See above. The first stage problems are pure predictive tasks, so any ML approach that is relevant for your\n    prediction problem is good.\n\n- **How do I select the hyperparameters of the first stage models?**\n\n    You can use cross-validated models that automatically choose the hyperparameters, e.g. the\n    :class:`~sklearn.linear_model.LassoCV` instead of the :class:`~sklearn.linear_model.Lasso`. Similarly,\n    for forest based estimators you can wrap them with a grid search CV, :class:`~sklearn.model_selection.GridSearchCV`, e.g.:\n\n    .. testcode::\n\n        from econml.dml import SparseLinearDML\n        from sklearn.ensemble import RandomForestRegressor\n        from sklearn.model_selection import GridSearchCV\n        first_stage = lambda: GridSearchCV(\n                        estimator=RandomForestRegressor(),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 30, 50, 100, 200),\n                                'max_features': (1,2,3)\n                            }, cv=10, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        est = SparseLinearDML(model_y=first_stage(), model_t=first_stage())\n\n    Alternatively, you can pick the best first stage models outside of the EconML framework and pass in the selected models to EconML. \n    This can save on runtime and computational resources. Furthermore, it is statistically more stable since all data is being used for\n    hyper-parameter tuning rather than a single fold inside of the DML algorithm (as long as the number of hyperparameter values\n    that you are selecting over is not exponential in the number of samples, this approach is statistically valid). E.g.:\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n        from sklearn.ensemble import RandomForestRegressor\n        from sklearn.model_selection import GridSearchCV\n        first_stage = lambda: GridSearchCV(\n                        estimator=RandomForestRegressor(),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 30, 50, 100, 200),\n                                'max_features': (1,2,3)\n                            }, cv=10, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        model_y = first_stage().fit(X, Y).best_estimator_\n        model_t = first_stage().fit(X, T).best_estimator_\n        est = LinearDML(model_y=model_y, model_t=model_t)\n\n\n- **How do I select the hyperparameters of the final model (if any)?**\n\n    You can use cross-validated classes for the final model too. Our default debiased lasso performs cross validation\n    for hyperparameter selection. For custom final models you can also use CV versions, e.g.:\n\n    .. testcode::\n\n        from econml.dml import DML\n        from sklearn.linear_model import ElasticNetCV\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = DML(model_y=GradientBoostingRegressor(),\n                  model_t=GradientBoostingRegressor(),\n                  model_final=ElasticNetCV(fit_intercept=False))\n        est.fit(y, t, X=X, W=W)\n        point = est.const_marginal_effect(X)\n        point = est.effect(X, T0=t0, T1=t1)\n    \n    In the case of :class:`.NonParamDML` you can also use non-linear cross-validated models as model_final:\n\n    .. testcode::\n\n        from econml.dml import NonParamDML\n        from sklearn.ensemble import RandomForestRegressor\n        from sklearn.model_selection import GridSearchCV\n        cv_reg = lambda: GridSearchCV(\n                    estimator=RandomForestRegressor(),\n                    param_grid={\n                            'max_depth': [3, None],\n                            'n_estimators': (10, 30, 50, 100, 200, 400, 600, 800, 1000),\n                            'max_features': (1,2,3)\n                        }, cv=10, n_jobs=-1, scoring='neg_mean_squared_error'\n                    )\n        est = NonParamDML(model_y=cv_reg(), model_t=cv_reg(), model_final=cv_reg())\n\n\n- **What if I have many treatments?**\n\n    The method is going to assume that each of these treatments enters linearly into the model. So it cannot capture complementarities or substitutabilities\n    of the different treatments. For that you can also create composite treatments that look like the product \n    of two base treatments. Then these product will enter in the model and an effect for that product will be estimated.\n    This effect will be the substitute/complement effect of both treatments being present. See below for more examples.\n\n    If you have too many treatments, then you can use the :class:`.SparseLinearDML`. However,\n    this method will essentially impose a regularization that only a small subset of your featurized treatments has any effect.\n\n- **What if my treatments are continuous and don't have a linear effect on the outcome?**\n\n    You can impose a particular form of non-linearity by specifying a `treatment_featurizer` to the estimator. \n    For example, one can use the sklearn `PolynomialFeatures` transformer as a `treatment_featurizer` in order to learn \n    higher-order polynomial treatment effects.\n\n    Using the `treatment_featurizer` argument additionally has the benefit of calculating marginal effects with respect to the original treatment dimension, \n    as opposed to featurizing the treatment yourself before passing to the estimator.\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n        from sklearn.preprocessing import PolynomialFeatures\n        poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)\n        est = LinearDML(treatment_featurizer=poly)\n        est.fit(y, T, X=X, W=W)\n        point = est.const_marginal_effect(X)\n        est.effect(X, T0=T0, T1=T1)\n        est.marginal_effect(T, X)\n\n\n    Alternatively, you can still create composite treatments and add them as extra treatment variables:\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n        from sklearn.preprocessing import PolynomialFeatures\n        poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)\n        est = LinearDML()\n        T_composite = poly.fit_transform(T)\n        est.fit(y, T_composite, X=X, W=W)\n        point = est.const_marginal_effect(X)\n        est.effect(X, T0=poly.transform(T0), T1=poly.transform(T1)) \n\n- **What if my treatment is categorical/binary?**\n\n    You can simply set `discrete_treatment=True` in the parameters of the class. Then use any classifier for \n    `model_t`, that has a `predict_proba` method:\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n        from sklearn.linear_model import LogisticRegressionCV\n        est = LinearDML(model_t=LogisticRegressionCV(), discrete_treatment=True)\n        est.fit(y, t, X=X, W=W)\n        point = est.const_marginal_effect(X)\n        est.effect(X, T0=t0, T1=t1)\n\n- **How can I assess the performance of the CATE model?**\n\n    Each of the DML classes have an attribute `score_` after they are fitted. So one can access that\n    attribute and compare the performance across different modeling parameters (lower score is better):\n\n    .. testcode::\n\n        from econml.dml import DML\n        from sklearn.linear_model import ElasticNetCV\n        from sklearn.ensemble import RandomForestRegressor\n        est = DML(model_y=RandomForestRegressor(),\n                  model_t=RandomForestRegressor(),\n                  model_final=ElasticNetCV(fit_intercept=False), featurizer=PolynomialFeatures(degree=1))\n        est.fit(y, T, X=X, W=W)\n        est.score_\n\n    This essentially measures the score based on the final stage loss. Moreover, one can assess the out-of-sample score by calling the `score` method on a separate validation sample that was not\n    used for training::\n\n        est.score(Y_val, T_val, X_val, W_val)\n\n    Moreover, one can independently check the goodness of fit of the fitted first stage models by\n    inspecting the fitted models. You can access the nested list of fitted first stage models (one for each\n    fold of the crossfitting structure) via the methods: `models_t` and `models_y`. Then if those models\n    also have a score associated attribute, that can be used as an indicator of performance of the first\n    stage. For instance in the case of Random Forest first stages as in the above example, if the `oob_score`\n    is set to `True`, then the estimator has a post-fit measure of performance::\n\n        [mdl.oob_score_ for mdls in est.models_y for mdl in mdls]\n\n    If one uses cross-validated estimators as first stages, then model selection for the first stage models\n    is performed automatically.\n\n- **How should I set the parameter `cv`?**\n\n    This parameter defines the number of data partitions to create in order to fit the first stages in a\n    crossfitting manner (see :class:`._OrthoLearner`). The default is 2, which\n    is the minimal. However, larger values like 5 or 6 can lead to greater statistical stability of the method,\n    especially if the number of samples is small. So we advise that for small datasets, one should raise this\n    value. This can increase the computational cost as more first stage models are being fitted.\n\n\nUsage Examples\n==================================\n\nFor more extensive examples check out the following notebooks:\n`DML Examples Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/Double%20Machine%20Learning%20Examples.ipynb>`_,\n`Forest Learners Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/ForestLearners%20Basic%20Example.ipynb>`_.\n\n.. rubric:: Single Outcome, Single Treatment\n\nWe consider some example use cases of the library when :math:`Y` and :math:`T` are :math:`1`-dimensional.\n\n**Random Forest First Stages.**\nA classical non-parametric regressor for the first stage estimates is a Random Forest. Using RandomForests in our API is as simple as:\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    from sklearn.ensemble import RandomForestRegressor\n    est = LinearDML(model_y=RandomForestRegressor(),\n                    model_t=RandomForestRegressor())\n    est.fit(y, T, X=X, W=W)\n    pnt_effect = est.const_marginal_effect(X)\n    lb_effect, ub_effect = est.const_marginal_effect_interval(X, alpha=.05)\n    pnt_coef = est.coef_\n    lb_coef, ub_coef = est.coef__interval(alpha=.05)\n\n\n**Polynomial Features for Heterogeneity.**\nSuppose that we believe that the treatment effect is a polynomial of :math:`X`, i.e.\n\n.. math::\n    \n    Y = (\\alpha_0 + \\alpha_1 X + \\alpha_2 X^2 + \\ldots) \\cdot T + g(X, W, \\epsilon)\n\nThen we can estimate the coefficients :math:`\\alpha_i` by running:\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    from sklearn.ensemble import RandomForestRegressor\n    from sklearn.preprocessing import PolynomialFeatures\n    est = LinearDML(model_y=RandomForestRegressor(),\n                    model_t=RandomForestRegressor(),\n                    featurizer=PolynomialFeatures(degree=3, include_bias=False))\n    est.fit(y, T, X=X, W=W)\n\n    # To get the coefficients of the polynomial fitted in the final stage we can\n    # access the `coef_` attribute of the fitted second stage model. This would \n    # return the coefficients in front of each term in the vector T⊗ϕ(X).\n    est.coef_\n\n\n**Fixed Effects.**\nTo add fixed effect heterogeneity, we can create one-hot encodings of the id, which is assumed to be part of the input:\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    from sklearn.preprocessing import OneHotEncoder\n    # removing one id to avoid colinearity, as is standard for fixed effects\n    X_oh = OneHotEncoder(sparse_output=False, drop=\"first\").fit_transform(X)\n\n    est = LinearDML(model_y=RandomForestRegressor(),\n                                 model_t=RandomForestRegressor())\n    est.fit(y, T, X=X_oh, W=W)\n    # The latter will fit a model for θ(x) of the form ̂α_0 + ̂α_1 𝟙{id=1} + ̂α_2 𝟙{id=2} + ...\n    # The vector of α can be extracted as follows\n    est.coef_\n\n**Custom Features.**\nOne can also define a custom featurizer, as long as it supports the fit\\_transform interface of sklearn.\n\n.. testcode::\n\n    from sklearn.ensemble import RandomForestRegressor\n    class LogFeatures(object):\n        \"\"\"Augments the features with logarithmic features and returns the augmented structure\"\"\"\n        def fit(self, X, y=None):\n            return self\n        def transform(self, X):\n            return np.concatenate((X, np.log(1+X)), axis=1)\n        def fit_transform(self, X, y=None):\n            return self.fit(X).transform(X)\n\n    est = LinearDML(model_y=RandomForestRegressor(),\n                    model_t=RandomForestRegressor(),\n                    featurizer=LogFeatures())\n    est.fit(y, T, X=X, W=W)\n\nWe can even create a Pipeline or Union of featurizers that will apply multiply featurizations, e.g. first creating log features and then adding polynomials of them:\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    from sklearn.ensemble import RandomForestRegressor\n    from sklearn.pipeline import Pipeline\n    from sklearn.preprocessing import PolynomialFeatures\n    est = LinearDML(model_y=RandomForestRegressor(), \n                    model_t=RandomForestRegressor(),\n                    featurizer=Pipeline([('log', LogFeatures()), \n                                         ('poly', PolynomialFeatures(degree=2, include_bias=False))]))\n    est.fit(y, T, X=X, W=W)\n\n\n.. rubric:: Single Outcome, Multiple Treatments\n\nSuppose we want to estimate treatment effects for multiple continuous treatments at the same time. \nThen we can simply concatenate them before passing them to the estimator.\n\n.. testcode::\n\n    import numpy as np\n    est = LinearDML()\n    est.fit(y, np.concatenate((T0, T1), axis=1), X=X, W=W)\n\n\n.. rubric:: Multiple Outcome, Multiple Treatments\n\nIn settings like demand estimation, we might want to fit the demand of multiple products as a function of the price of each one of them, i.e. fit the matrix of cross price elasticities. The latter can be done, by simply setting :math:`Y` to be the vector of demands and :math:`T` to be the vector of prices. Then we can recover the \nmatrix of cross price elasticities as:\n\n.. testcode::\n\n    from sklearn.linear_model import MultiTaskElasticNet\n    est = LinearDML(model_y=MultiTaskElasticNet(alpha=0.1),\n                    model_t=MultiTaskElasticNet(alpha=0.1))\n    est.fit(Y, T, X=None, W=W)\n\n    # a_hat[i,j] contains the elasticity of the demand of product i on the price of product j\n    a_hat = est.const_marginal_effect()\n\nIf we have too many products then the cross-price elasticity matrix contains many parameters and we need\nto regularize. Given that we want to estimate a matrix, it makes sense in this application to consider\nthe case where this matrix has low rank: all the products can be embedded in some low dimensional feature\nspace and the cross-price elasticities is a linear function of these low dimensional embeddings. This corresponds\nto well-studied latent factor models in pricing. Our framework can easily handle this by using \na nuclear norm regularized multi-task regression in the final stage. For instance the \nlightning package implements such a class::\n\n    from econml.dml import DML\n    from sklearn.preprocessing import PolynomialFeatures\n    from lightning.regression import FistaRegressor\n    from sklearn.linear_model import MultiTaskElasticNet\n\n    est = DML(model_y=MultiTaskElasticNet(alpha=0.1),\n              model_t=MultiTaskElasticNet(alpha=0.1),\n              model_final=FistaRegressor(penalty='trace', C=0.0001),\n              fit_cate_intercept=False)\n    est.fit(Y, T, X=X, W=W)\n    te_pred = est.const_marginal_effect(np.median(X, axis=0, keepdims=True))\n    print(te_pred)\n    print(np.linalg.svd(te_pred[0]))\n"
  },
  {
    "path": "doc/spec/estimation/dr.rst",
    "content": ".. _druserguide:\n\n======================\nDoubly Robust Learning\n======================\n\nWhat is it?\n==================================\n\nDoubly Robust Learning, similar to Double Machine Learning, is a method for estimating (heterogeneous) treatment effects when\nthe treatment is categorical and all potential confounders/controls (factors that simultaneously had a direct effect on the treatment decision in the\ncollected data and the observed outcome) are observed, but are either too many (high-dimensional) for\nclassical statistical approaches to be applicable or their effect on \nthe treatment and outcome cannot be satisfactorily modeled by parametric functions (non-parametric).\nBoth of these latter problems can be addressed via machine learning techniques (see e.g. [Chernozhukov2016]_, [Foster2019]_).\nThe method dates back to the early works of [Robins1994]_, [Bang]_ (see [Tsiatis]_ for more details), which applied\nthe method primarily for the estimation of average treatment effects. In this library we implement recent modifications\nto the doubly robust approach that allow for the estimation of heterogeneous treatment effects (see e.g. [Foster2019]_).\nThe method has also been recently heavily used in the context of policy learning (see e.g. [Dudik2014]_, [Athey2017]_).\n\nIt reduces the problem to first estimating *two predictive tasks*: \n\n    1) predicting the outcome from the treatment and controls,\n    2) predicting the treatment from the controls;\n\nThus unlike Double Machine Learning the first model predicts the outcome from both the treatment and the controls as\nopposed to just the controls. Then the method combines these two predictive models in a final stage estimation so as to create a\nmodel of the heterogeneous treatment effect. The approach allows for *arbitrary Machine Learning algorithms* to be\nused for the two predictive tasks, while maintaining many favorable statistical properties related to the final\nmodel (e.g. small mean squared error, asymptotic normality, construction of confidence intervals). The latter\nfavorable statistical properties hold if either the first or the second of the two predictive tasks achieves small mean\nsquared error (hence the name doubly robust).\n\nOur package offers several variants for the final model estimation. Many of these variants also\nprovide *valid inference* (confidence interval construction) for measuring the uncertainty of the learned model.\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the classes, :class:`.DRLearner`,\n:class:`.LinearDRLearner`,\n:class:`.SparseLinearDRLearner`, :class:`.ForestDRLearner`.\nClick on each of these links for a detailed module documentation and input parameters of each class.\n\n\nWhen should you use it?\n==================================\n\nSuppose you have observational (or experimental from an A/B test) historical data, where some treatment/intervention/action\n:math:`T` from among a finite set of treatments was chosen and some outcome(s) :math:`Y` was observed and all the variables :math:`W` that could have\npotentially gone into the choice of :math:`T`, and simultaneously could have had a direct effect on the outcome\n:math:`Y` (aka controls or confounders) are also recorded in the dataset.\n\nIf your goal is to understand what was the effect of each of the treatments on the outcome as a function of a set of observable\ncharacteristics :math:`X` of the treated samples, then one can use this method. For instance call:\n\n.. testsetup::\n\n    import numpy as np\n    X = np.random.choice(np.arange(5), size=(100,3))\n    Y = np.random.normal(size=(100,2))\n    y = np.random.normal(size=(100,))\n    T = np.random.choice(np.arange(2), size=(100,))\n    t0 = T0 = np.zeros((100,))\n    t1 = T1 = np.ones((100,))\n    W = np.random.normal(size=(100,2))\n\n.. testcode::\n\n    from econml.dr import LinearDRLearner\n    est = LinearDRLearner()\n    est.fit(y, T, X=X, W=W)\n    est.effect(X, T0=t0, T1=t1)\n\nThis way an optimal treatment policy can be learned, by simply inspecting for which :math:`X` the effect was positive.\n\n\nOverview of Formal Methodology\n==================================\n\nThe model's assumptions are better explained in the language of potential outcomes. If we denote with :math:`Y^{(t)}` the potential outcome that\nwe would have observed had we treated the sample with treatment :math:`T=t`, then the approach assumes that:\n\n.. math::\n\n    Y^{(t)} =~& g_t(X, W) + \\epsilon_t ~~~&~~~ \\E[\\epsilon | X, W] = 0 \\\\\n    \\Pr[T = t | X, W] =~& p_t(X, W) & \\\\\n    \\{Y^{(t)}\\}_{t=1}^{n_t} \\perp T | X, W\n\nIt makes no further structural assumptions on :math:`g_t` and :math:`p_t` and estimates them \nnon-parametrically using arbitrary non-parametric Machine Learning methods. Our goal is to estimate\nthe CATE associated with each possible treatment :math:`t \\in \\{1, \\ldots, n_t\\}`, as compared to some baseline\ntreatment :math:`t=0`, i.e.: \n\n.. math::\n\n    \\theta_t(X) = \\E[Y^{(t)} - Y^{(0)} | X] = \\E[g_t(X, W) - g_0(X, W) | X]\n\nOne way to estimate :math:`\\theta_t(X)` is the *Direct Method* (DM) approach,\nwhere we simply estimate a regression,\nregressing :math:`Y` on :math:`T, X, W` to learn a model\nof :math:`g_T(X, W) = \\E[Y | T, X, W]` and then evaluate :math:`\\theta_t(X)` by regressing\n\n.. math::\n\n    Y_{i, t}^{DM} = g_t(X_i, W_i) - g_0(X_i, W_i)\n\non :math:`X`. The main problem with this approach is that it is heavily dependent\non the model-based extrapolation that is implicitly done via the model that is fitted in the regression. Essentially,\nwhen we evaluate :math:`g_t(X, W)` on a sample with features :math:`X, W` for which we gave some other treatment\n:math:`T=t'`, then we are extrapolating from other samples with similar :math:`X, W`, which received the treatment\n:math:`T=t`. However, the definition of \"similarity\" is very model based and in some cases we might even be extrapolating\nfrom very far away points (e.g. if we fit linear regression models).\n\nAn alternative approach that does not suffer from the aforementioned problems is the *Inverse Propensity Score* (IPS)\napproach. This method starts from the realization that, due to the unconfoundedness assumption, we can create\nan unbiased estimate of every potential outcome by re-weighting each sample by the inverse probability of that\nsample receiving the treatment we observed (i.e. up-weighting samples that have \"surprising\" treatment assignments).\nMore concretely, if we let:\n\n.. math::\n\n    Y_{i, t}^{IPS} = \\frac{Y_i 1\\{T_i=t\\}}{\\Pr[T_i=t | X_i, W_i]} = \\frac{Y_i 1\\{T_i=t\\}}{p_t(X_i, W_i)} \n\nthen it holds that:\n\n.. math::\n\n    \\E[Y_{i, t}^{IPS} | X, W] =~& \\E\\left[\\frac{Y_i 1\\{T_i=t\\}}{p_t(X_i, W_i)} | X_i, W_i\\right] = \\E\\left[\\frac{Y_i^{(t)} 1\\{T_i=t\\}}{p_t(X_i, W_i)} | X_i, W_i\\right]\\\\\n    =~&  \\E\\left[\\frac{Y_i^{(t)} \\E[1\\{T_i=t\\} | X_i, W_i]}{p_t(X_i, W_i)} | X_i, W_i\\right] = \\E\\left[Y_i^{(t)} | X_i, W_i\\right]\n\n\nThus we can estimate a :math:`\\theta_t(X)` by regressing :math:`Y_{i, t}^{IPS} - Y_{i, 0}^{IPS}` on :math:`X`. This\nmethod has two drawbacks: 1) first, even if we knew the probability of treatment :math:`p_t(X, W)`, the approach has\nhigh variance, because we are dividing the observation by a relatively small number (especially if some regions\nof :math:`X, W`, some treatments are quite unlikely), 2) second, in observational data we typically don't know\nthe probability of treatment and thereby we also need to estimate a model for the probability of treatment.\nThis corresponds to a multi-class classification task, which when :math:`X, W` are high dimensional or when we\nuse non-linear models like random forests, could have slow estimation rates. This method will inherit these rates.\nMoreover, if we use ML to fit these propensity models, then it is hard to characterize what the limit distribution\nof our estimate will be so as to provide valid confidence intervals.\n\nThe *Doubly Robust* approach, avoids the above drawbacks by combining the two methods. In particular, it fits \na direct regression model, but then debiases that model, by applying an Inverse Propensity approach to the\nresidual of that model, i.e. it constructs the following estimates of the potential outcomes:\n\n.. math::\n    Y_{i, t}^{DR} = g_t(X_i, W_i) + \\frac{Y_i -g_t(X_i, W_i)}{p_t(X_i, W_i)} \\cdot 1\\{T_i=t\\}\n\nThen we can learn :math:`\\theta_t(X)` by regressing :math:`Y_{i, t}^{DR} - Y_{i, 0}^{DR}` on :math:`X_i`.\n\nThis yields the overall algorithm: first learn a **regression model** :math:`\\hat{g}_t(X, W)`, by running a regression\nof :math:`Y` on :math:`T, X, W` and a **propensity model** :math:`\\hat{p}_t(X, W)`, by running a classification to predict\n:math:`T` from :math:`X, W`. Then construct the doubly robust random variables as described above and regress them on\n:math:`X`.\n\nThe main advantage of the Doubly Robust method is that the mean squared error of the final estimate :math:`\\theta_t(X)`,\nis only affected by the product of the mean squared errors of the regression estimate :math:`\\hat{g}_t(X, W)` and\nthe propensity estimate :math:`\\hat{p}_t(X, W)`. Thus as long as one of them is accurate then the final model is correct.\nFor instance, as long as neither of them converges at a rate slower than :math:`n^{-1/4}`, then the final model achieves\nparametric rates of :math:`n^{-1/2}`. Moreover, under some further assumption on what estimation algorithm\nwas used in the final stage, then the final estimate is asymptotically normal and valid confidence intervals can be constructed.\nFor this theorem to hold, the nuisance\nestimates need to be fitted in a cross-fitting manner (see :class:`._OrthoLearner`).\nThe latter robustness property follows from the fact that the moment equations that correspond to the final \nleast squares estimation (i.e. the gradient of the squared loss), satisfy a Neyman orthogonality condition with respect to the\nnuisance parameters :math:`q, f`. For a more detailed exposition of how Neyman orthogonality \nleads to robustness we refer the reader to [Chernozhukov2016]_, [Mackey2017]_, [Nie2017]_, [Chernozhukov2017]_,\n[Chernozhukov2018]_, [Foster2019]_. In fact, the doubly robust estimator satisfies a slightly stronger property\nthen Neyman orthogonality, which is why it possess the stronger robustness guarantee that only the product\nof the two mean squared errors of the first stage models, matter for the error and the distributional properties\nof the final estimator.\n\nThe other advantage of the Doubly Robust method compared to the DML method, is that the final regression is meaningful\neven if the space of functions over which we minimize the final regression loss does not contain the true CATE function.\nIn that case, the method will estimate the projection of the CATE function onto the space of models over which\nwe optimize in the final regression. For instance, this allows one to perform inference on the best linear projection\nof the CATE function or to perform inference on the best CATE function on a subset of the features that could potentially be\ncreating heterogeneity. For instance, one can use the DR method with a non-parametric final model like an Honest\nForest and perform inference of the marginal treatment effect heterogeneity with respect to a single feature, without\nmaking any further assumptions on how that treatment effect heterogeneity looks like.\n\nThe downside of the DR method over DML is that it typically has higher variance, especially when there are regions\nof the control space, :math:`X, W`, in which some treatment has a small probability of being assigned (typically referred\nto as \"small overlap\" in the literature). In such settings, the DML method could potentially extrapolate better, as it only\nrequires good overlap \"on-average\" to achieve good mean squared error.\n\n\nClass Hierarchy Structure\n==================================\n\nIn this library we implement several variants of the Doubly Robust method, dependent on what type of estimation algorithm\nis chosen for the final stage. The user can choose any regression/classification method for the first stage models\nin all these variants. The hierarchy\nstructure of the implemented CATE estimators is as follows.\n\n    .. inheritance-diagram:: econml.dr.DRLearner econml.dr.LinearDRLearner econml.dr.SparseLinearDRLearner econml.dr.ForestDRLearner\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._ortho_learner._OrthoLearner, econml._cate_estimator.StatsModelsCateEstimatorDiscreteMixin, econml._cate_estimator.DebiasedLassoCateEstimatorDiscreteMixin\n\nBelow we give a brief description of each of these classes:\n\n    * **DRLearner.** The class :class:`.DRLearner` makes no assumption on the effect model for each outcome :math:`i`\n      and treatment :math:`t`. Any scikit-learn regressor can be used for the final stage estimation. Similarly, any\n      scikit-learn regressor can be used for the *regression model* and any scikit-learn classifier can be used\n      for the *propensity model*:\n\n      .. testcode::\n\n        from econml.dr import DRLearner\n        from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n        est = DRLearner(model_regression=GradientBoostingRegressor(),\n                        model_propensity=GradientBoostingClassifier(),\n                        model_final=GradientBoostingRegressor())\n        est.fit(y, T, X=X, W=W)\n        point = est.effect(X, T0=T0, T1=T1)\n\n      Examples of models include Random Forests (:class:`~sklearn.ensemble.RandomForestRegressor`),\n      Gradient Boosted Forests (:class:`~sklearn.ensemble.GradientBoostingRegressor`) and\n      Support Vector Machines (:class:`~sklearn.svm.SVC`). Moreover, one can even use cross validated estimators\n      that perform automatic model selection for each of these models:\n\n      .. testcode::\n\n        from econml.dr import DRLearner\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n        from sklearn.model_selection import GridSearchCV\n        model_reg = lambda: GridSearchCV(\n                        estimator=RandomForestRegressor(),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=10, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        model_clf = lambda: GridSearchCV(\n                        estimator=RandomForestClassifier(min_samples_leaf=10),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=10, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        est = DRLearner(model_regression=model_reg(), model_propensity=model_clf(),\n                        model_final=model_reg(), cv=5)\n        est.fit(y, T, X=X, W=W)\n        point = est.effect(X, T0=T0, T1=T1)\n\n      From that respect this estimator is also a *Meta-Learner*, since all steps of the estimation use out-of-the-box ML algorithms. For more information,\n      check out :ref:`Meta Learners User Guide <metalearnersuserguide>`. This general method was proposed in [Foster2019]_.\n\n        - **LinearDRLearner.** The child class  :class:`.LinearDRLearner`, uses an unregularized final linear model and  \n          essentially works only when the feature vector :math:`\\phi(X)` is low dimensional. Given that it is an unregularized\n          low dimensional final model, this class also offers confidence intervals via asymptotic normality \n          arguments. This is achieved by essentially using the :class:`.StatsModelsLinearRegression`\n          (which is an extension of the scikit-learn LinearRegression estimator, that also supports inference\n          functionalities) as a final model. The theoretical foundations of this class essentially follow the arguments in [Chernozhukov2016]_.\n          For instance, to get confidence intervals on the effect of going\n          from the baseline treatment (assumed to be treatment 0) to any other treatment T1, one can simply call:\n\n          .. testcode::\n\n            from econml.dr import LinearDRLearner\n            est = LinearDRLearner()\n            est.fit(y, T, X=X, W=W)\n            point = est.effect(X, T1=t1)\n            lb, ub = est.effect_interval(X, T1=t1, alpha=0.05)\n            # Get CATE for all treatments\n            point = est.const_marginal_effect(X)\n            lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n          One could also construct bootstrap based confidence intervals by setting `inference='bootstrap'`.\n\n        - **SparseLinearDRLearner.** The child class :class:`.SparseLinearDRLearner`, uses an :math:`\\ell_1`-regularized final    \n          model. In particular, it uses our implementation of the DebiasedLasso algorithm [Buhlmann2011]_ (see :class:`.DebiasedLasso`).\n          Using the asymptotic normality properties\n          of the debiased lasso, this class also offers asymptotically normal based confidence intervals.\n          The theoretical foundations of this class essentially follow the arguments in [Chernozhukov2017]_, [Chernozhukov2018]_.\n          For instance, to get confidence intervals on the effect of going\n          from any treatment T0 to any other treatment T1, one can simply call:\n\n          .. testcode::\n\n            from econml.dr import SparseLinearDRLearner\n            est = SparseLinearDRLearner()\n            est.fit(y, T, X=X, W=W)\n            point = est.effect(X, T1=T1)\n            lb, ub = est.effect_interval(X, T1=T1, alpha=0.05)\n            # Get CATE for all treatments\n            point = est.const_marginal_effect(X)\n            lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n        - **ForestDRLearner.** The child class :class:`.ForestDRLearner` uses a Subsampled Honest Forest regressor\n          as a final model (see [Wager2018]_ and [Athey2019]_). The subsampled honest forest is implemented in our library as a scikit-learn extension\n          of the :class:`~sklearn.ensemble.RandomForestRegressor`, in the class :class:`~econml.grf.RegressionForest`. This estimator\n          offers confidence intervals via the Bootstrap-of-Little-Bags as described in [Athey2019]_.\n          Using this functionality we can also construct confidence intervals for the CATE:\n\n          .. testcode::\n\n            from econml.dr import ForestDRLearner\n            from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n            est = ForestDRLearner(model_regression=GradientBoostingRegressor(),\n                                  model_propensity=GradientBoostingClassifier())\n            est.fit(y, T, X=X, W=W)\n            point = est.effect(X, T0=T0, T1=T1)\n            lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=0.05)\n\n          This method is related to the :class:`.DROrthoForest` and you can check [Oprescu2019]_ for more technical details;\n          the main difference being how the nuisance models are being constructed for the CATE estimation at some\n          target :math:`X=x`. Check out :ref:`Forest Estimators User Guide <orthoforestuserguide>` for more information on forest based CATE models and other\n          alternatives to the :class:`.CausalForestDML`.\n\n\nUsage FAQs\n==========\n\n- **What if I want confidence intervals?**\n\n    For valid confidence intervals use the :class:`.LinearDRLearner` if the number of features :math:`X`,\n    that you want to use for heterogeneity are small compared to the number of samples that you have,\n    e.g.:\n\n    .. testcode::\n\n        from econml.dr import LinearDRLearner\n        est = LinearDRLearner()\n        est.fit(y, T, X=X, W=W)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=.05)\n        lb, ub = est.coef__interval(T=1, alpha=.05)\n        lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=.05)\n\n    If the number of features is comparable or even larger than the number of samples, then use :class:`.SparseLinearDRLearner`,\n    with ``inference='debiasedlasso``. If you\n    want non-linear models then use :class:`.ForestDRLearner` with ``inference='blb'``.\n\n- **What if I have no idea how heterogeneity looks like?**\n\n    Either use a flexible featurizer, e.g. a polynomial featurizer with many degrees and use\n    the :class:`.SparseLinearDRLearner`:\n\n    .. testcode::\n\n        from econml.dr import SparseLinearDRLearner\n        from sklearn.preprocessing import PolynomialFeatures\n        est = SparseLinearDRLearner(featurizer=PolynomialFeatures(degree=3, include_bias=False))\n        est.fit(y, T, X=X, W=W)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=.05)\n        lb, ub = est.coef__interval(T=1, alpha=.05)\n        lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=.05)\n\n    Alternatively, you can also use a forest based estimator such as :class:`.ForestDRLearner`. This \n    estimator can also handle many features, albeit typically smaller number of features than the sparse linear DRLearner.\n    Moreover, this estimator essentially performs automatic featurization and can fit non-linear models.\n\n    .. testcode::\n\n        from econml.dr import ForestDRLearner\n        from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\n        est = ForestDRLearner(model_regression=GradientBoostingRegressor(),\n                              model_propensity=GradientBoostingClassifier())\n        est.fit(y, T, X=X, W=W)\n        point = est.effect(X, T0=T0, T1=T1)\n        lb, ub = est.effect_interval(X, T0=T0, T1=T1, alpha=0.05)\n        lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n    If you care more about mean squared error than confidence intervals and hypothesis testing, then use the\n    :class:`.DRLearner` class and choose a cross-validated final model (checkout the \n    `Forest Learners Jupyter notebook <https://github.com/py-why/EconML/blob/main/notebooks/ForestLearners%20Basic%20Example.ipynb>`_ \n    for such an example).\n    Also the check out the :ref:`Orthogonal Random Forest User Guide <orthoforestuserguide>` or the\n    :ref:`Meta Learners User Guide <metalearnersuserguide>`.\n\n- **What if I have too many features that can create heterogeneity?**\n\n    Use the :class:`.SparseLinearDRLearner` or :class:`.ForestDRLearner` or :class:`.DRLearner`. (see above).\n\n- **What if I have too many features I want to control for?**\n\n    Use first stage models that work well with high dimensional features. For instance, the Lasso or the \n    ElasticNet or gradient boosted forests are all good options (the latter allows for \n    non-linearities in the model but can typically handle fewer features than the former), e.g.:\n\n    .. testcode::\n\n        from econml.dr import SparseLinearDRLearner\n        from sklearn.linear_model import LassoCV, LogisticRegressionCV, ElasticNetCV\n        from sklearn.ensemble import GradientBoostingRegressor\n        est = SparseLinearDRLearner(model_regression=LassoCV(),\n                                    model_propensity=LogisticRegressionCV())\n        est = SparseLinearDRLearner(model_regression=ElasticNetCV(),\n                                    model_propensity=LogisticRegressionCV())\n        est = SparseLinearDRLearner(model_regression=GradientBoostingRegressor(),\n                                    model_propensity=GradientBoostingClassifier())\n\n    The confidence intervals will still be valid, provided that these first stage models achieve small\n    mean squared error.\n\n- **What should I use for first stage estimation?**\n\n    See above. The first stage problems are pure predictive tasks, so any ML approach that is relevant for your\n    prediction problem is good.\n\n- **How do I select the hyperparameters of the first stage models or the final model?**\n\n    You can use cross-validated models that automatically choose the hyperparameters, e.g. the\n    :class:`~sklearn.linear_model.LassoCV` instead of the :class:`~sklearn.linear_model.Lasso`. Similarly,\n    for forest based estimators you can wrap them with a grid search CV, :class:`~sklearn.model_selection.GridSearchCV`, e.g.:\n\n    .. testcode::\n\n        from econml.dr import DRLearner\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n        from sklearn.model_selection import GridSearchCV\n        model_reg = lambda: GridSearchCV(\n                        estimator=RandomForestRegressor(),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=5, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        model_clf = lambda: GridSearchCV(\n                        estimator=RandomForestClassifier(min_samples_leaf=10),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=5, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        est = DRLearner(model_regression=model_reg(), model_propensity=model_clf(),\n                        model_final=model_reg(), cv=5)\n        est.fit(y, T, X=X, W=W)\n        point = est.effect(X, T0=T0, T1=T1)\n\n    Alternatively, you can pick the best first stage models outside of the EconML framework and pass in the selected models to EconML. \n    This can save on runtime and computational resources. Furthermore, it is statistically more stable since all data is being used for\n    hyper-parameter tuning rather than a single fold inside of the DML algorithm (as long as the number of hyperparameter values\n    that you are selecting over is not exponential in the number of samples, this approach is statistically valid). E.g.:\n\n    .. testcode::\n\n        from econml.dr import DRLearner\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n        from sklearn.model_selection import GridSearchCV\n        model_reg = lambda: GridSearchCV(\n                        estimator=RandomForestRegressor(),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=5, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        model_clf = lambda: GridSearchCV(\n                        estimator=RandomForestClassifier(min_samples_leaf=10),\n                        param_grid={\n                                'max_depth': [3, None],\n                                'n_estimators': (10, 50, 100)\n                            }, cv=5, n_jobs=-1, scoring='neg_mean_squared_error'\n                        )\n        XW = np.hstack([X, W])\n        model_regression = model_reg().fit(XW, Y).best_estimator_\n        model_propensity = model_clf().fit(XW, T).best_estimator_\n        est = DRLearner(model_regression=model_regression, \n                        model_propensity=model_propensity,\n                        model_final=model_regression, cv=5)\n        est.fit(y, T, X=X, W=W)\n        point = est.effect(X, T0=T0, T1=T1)\n\n\n- **What if I have many treatments?**\n\n    The method allows for multiple discrete (categorical) treatments and will estimate a CATE model for each treatment.\n\n- **How can I assess the performance of the CATE model?**\n\n    Each of the DRLearner classes have an attribute `score_` after they are fitted. So one can access that\n    attribute and compare the performance across different modeling parameters (lower score is better):\n\n    .. testcode::\n\n        from econml.dr import DRLearner\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n        est = DRLearner(model_regression=RandomForestRegressor(oob_score=True),\n                        model_propensity=RandomForestClassifier(min_samples_leaf=10, oob_score=True),\n                        model_final=RandomForestRegressor())\n        est.fit(y, T, X=X, W=W)\n        est.score_\n\n    This essentially measures the score based on the final stage loss. Moreover, one can assess the out-of-sample score by calling the `score` method on a separate validation sample that was not\n    used for training::\n\n        est.score(Y_val, T_val, X_val, W_val)\n\n    Moreover, one can independently check the goodness of fit of the fitted first stage models by\n    inspecting the fitted models. You can access the nested list of fitted first stage models (one for each\n    fold of the crossfitting structure) via the methods: `models_t` and `models_y`. Then if those models\n    also have a score associated attribute, that can be used as an indicator of performance of the first\n    stage. For instance in the case of Random Forest first stages as in the above example, if the `oob_score`\n    is set to `True`, then the estimator has a post-fit measure of performance::\n\n        [mdl.oob_score_ for mdls in est.models_regression for mdl in mdls]\n\n    If one uses cross-validated estimators as first stages, then model selection for the first stage models\n    is performed automatically.\n\n- **How should I set the parameter `cv`?**\n\n    This parameter defines the number of data partitions to create in order to fit the first stages in a\n    crossfitting manner (see :class:`._OrthoLearner`). The default is 2, which\n    is the minimal. However, larger values like 5 or 6 can lead to greater statistical stability of the method,\n    especially if the number of samples is small. So we advise that for small datasets, one should raise this\n    value. This can increase the computational cost as more first stage models are being fitted.\n\n\n\nUsage Examples\n==============\n\nCheck out the following Jupyter notebooks:\n\n* `Meta Learners Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/Metalearners%20Examples.ipynb>`_ \n* `Forest Learners Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/ForestLearners%20Basic%20Example.ipynb>`_\n\n\n"
  },
  {
    "path": "doc/spec/estimation/dynamic_dml.rst",
    "content": ".. _dynamicdmluserguide:\n\n===============================\nDynamic Double Machine Learning\n===============================\n\nWhat is it?\n==================================\n\nDynamic Double Machine Learning is a method for estimating (heterogeneous) treatment effects when\ntreatments are offered over time via an adaptive dynamic policy. It applies to the case when\nall potential dynamic confounders/controls (factors that simultaneously had a direct effect on the adaptive treatment\ndecision in the collected data and the observed outcome) are observed, but are either too many (high-dimensional) for\nclassical statistical approaches to be applicable or their effect on \nthe treatment and outcome cannot be satisfactorily modeled by parametric functions (non-parametric).\nBoth of these latter problems can be addressed via machine learning techniques (see e.g. [Lewis2021]_).\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the class\n:class:`.DynamicDML`.\nClick on each of these links for a detailed module documentation and input parameters of each class.\n\n\nWhen should you use it?\n==================================\n\nSuppose you have observational (or experimental from an A/B test) historical data, where multiple treatment(s)/intervention(s)/action(s) \n:math:`T` were offered over time to each of the units and some final outcome(s) :math:`Y` was observed and all the variables :math:`W` that could have\npotentially gone into the choice of :math:`T`, and simultaneously could have had a direct effect on the outcome :math:`Y` (aka controls or confounders) are also recorder in the dataset.\n\nIf your goal is to understand what was the effect of the treatment on the outcome as a function of a set of observable\ncharacteristics :math:`X` of the treated samples, then one can use this method. For instance call:\n\n.. testsetup::\n\n    # DynamicDML\n    import numpy as np\n    groups = np.repeat(a=np.arange(100), repeats=3, axis=0)\n    W_dyn = np.random.normal(size=(300, 1))\n    X_dyn = np.random.normal(size=(300, 1))\n    T_dyn = np.random.normal(size=(300, 2))\n    y_dyn = np.random.normal(size=(300, ))\n\n.. testcode::\n\n    from econml.panel.dml import DynamicDML\n    est = DynamicDML()\n    est.fit(y_dyn, T_dyn, X=X_dyn, W=W_dyn, groups=groups)\n\n\nClass Hierarchy Structure\n==================================\n\nIn this library we implement variants of several of the approaches mentioned in the last section. The hierarchy\nstructure of the implemented CATE estimators is as follows.\n\n    .. inheritance-diagram:: econml.panel.dml.DynamicDML\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._OrthoLearner, econml._cate_estimator.LinearModelFinalCateEstimatorMixin\n\nBelow we give a brief description of each of these classes:\n\n    * **DynamicDML.** The class :class:`.DynamicDML` is an extension of the Double ML approach for treatments assigned sequentially over time periods.\n      This estimator will adjust for treatments that can have causal effects on future outcomes. The data corresponds to a Markov decision process :math:`\\{X_t, W_t, T_t, Y_t\\}_{t=1}^m`,\n      where :math:`X_t, W_t` corresponds to the state at time :math:`t`, :math:`T_t` is the treatment at time :math:`t` and :math:`Y_t` is the observed outcome at time :math:`t`.\n\n      The model makes the following structural equation assumptions on the data generating process:\n\n      .. math::\n\n        XW_t =~& A \\cdot T_{t-1} + B \\cdot XW_{t-1} + \\eta_t\\\\ \n        T_t =~& p(T_{t-1}, XW_t, \\zeta_t) \\\\\n        Y_t =~& \\theta_0(X_0)'T_t + \\mu'XW_t + \\epsilon_t\n\n      where :math:`XW` is the concatenation of the :math:`X` and :math:`W` variables.\n      For more details about this model and underlying assumptions, see [Lewis2021]_.\n\n      To learn the treatment effects of treatments in the different periods on the last period outcome, one can simply call:\n\n      .. testcode::\n\n        from econml.panel.dml import DynamicDML\n        est = DynamicDML()\n        est.fit(y_dyn, T_dyn, X=X_dyn, W=W_dyn, groups=groups)\n\n\n\nUsage FAQs\n==========\n\nSee our FAQ section in :ref:`DML User Guide <dmluserguide>`\n"
  },
  {
    "path": "doc/spec/estimation/forest.rst",
    "content": ".. _orthoforestuserguide:\n\n=======================\nForest Based Estimators\n=======================\n\n\nWhat is it?\n==================================\n\nThis section describes the different estimation methods provided in the package that use a forest based methodology\nto model the treatment effect heterogeneity. We collect these methods in a single user guide to better illustrate\ntheir comparisons and differences. Currently, our package offers three such estimation methods:\n\n* The Orthogonal Random Forest Estimator (see :class:`.DMLOrthoForest`, :class:`.DROrthoForest`)\n* The Forest Double Machine Learning Estimator (aka Causal Forest) (see :class:`.CausalForestDML`)\n* The Forest Doubly Robust Estimator (see :class:`.ForestDRLearner`).\n\nThese estimators, similar to the DML and DR sections require the unconfoundedness assumption, i.e. that all potential\nvariables that could simultaneously have affected the treatment and the outcome to be observed.\n\nThere many commonalities among these estimators. In particular the :class:`.DMLOrthoForest` shares\nmany similarities with the :class:`.CausalForestDML` and the :class:`.DROrthoForest` shares\nmany similarities with the :class:`.ForestDRLearner`. Specifically, the corresponding classes use the same estimating (moment)\nequations to identify the heterogeneous treatment effect. However, they differ in a substantial manner in how they\nestimate the first stage regression/classification (nuisance) models. In particular, the OrthoForest methods fit\nlocal nuisance parameters around the target feature :math:`X` and so as to optimize a local mean squared error, putting\nmore weight on samples that look similar in the :math:`X` space. The similarity metric is captured by a data-adaptive\nforest based method that tries to learn a metric in the :math:`X` space, such that similar points have similar treatment effects.\nOn the contrary the DML and DR forest methods perform a global first fit, which typically will optimize the overall\nmean squared error. Local fitting can many times improve the final performance of the CATE estimate. However, it does\nadd some extra computational cost as a separate first stage model needs to be fitted for each target prediction point.\nAll these three methods provide valid confidence intervals as their estimates are asymptotically normal. Moreover,\nthe methods differ slightly in how they define the the similarity metric in finite samples, in that the OrthoForest\ntries to grow a forest to define a similarity metric that internally performs nuisance estimation at the nodes\nand uses the same metric for the local fitting of the nuisances as well as the final CATE estimate. See \n[Wager2018]_, [Athey2019]_, [Oprescu2019]_ for more technical details around these methods.\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the classes, :class:`.DMLOrthoForest`,\n:class:`.DROrthoForest`,\n:class:`.CausalForestDML`, :class:`.ForestDRLearner`.\nClick on each of these links for a detailed module documentation and input parameters of each class.\n\n\nWhen should you use it?\n==================================\n\nThese methods estimate very flexible non-linear models of the heterogeneous treatment effect. Moreover, they\nare data-adaptive methods and adapt to low dimensional latent structures of the data generating process. Hence,\nthey can perform well even with many features, even though they perform non-parametric estimation (which typically\nrequires a small number of features compared to the number of samples). Finally, these methods use recent ideas\nin the literature so as to provide valid confidence intervals, despite being data-adaptive and non-parametric.\nThus you should use these methods if you have many features, you have no good idea how your effect heterogeneity\nlooks like and you want confidence intervals.\n\nOverview of Formal Methodology\n==================================\n\nOrthogonal Random Forests\n-------------------------\n\nOrthogonal Random Forests [Oprescu2019]_ are a combination of causal forests and double machine learning that allow\nfor controlling for a high-dimensional set of confounders :math:`W`, while at the same time estimating non-parametrically\nthe heterogeneous treatment effect :math:`\\theta(X)`, on a lower dimensional set of variables :math:`X`. \nMoreover, the estimates are asymptotically normal and hence have theoretical properties\nthat render bootstrap based confidence intervals asymptotically valid.\n\nFor continuous or discrete treatments (see :class:`.DMLOrthoForest`) the method estimates :math:`\\theta(x)`\nfor some target :math:`x` by solving the same set of moment equations as the ones used in the Double Machine Learning\nframework, albeit, it tries to solve them locally for every possible :math:`X=x`. The method makes the following\nstructural equations assumptions on the data generating process:\n\n.. math::\n\n    Y =~& \\theta(X) \\cdot T + g(X, W) + \\epsilon ~~~&~~~ \\E[\\epsilon | X, W] = 0 \\\\ \n    T =~& f(X, W) + \\eta & \\E[\\eta \\mid X, W] = 0 \\\\\n    ~& \\E[\\eta \\cdot \\epsilon | X, W] = 0\n\nBut makes no further strong assumption on the functions :math:`\\theta, g, f`. It primarily assumes that :math:`\\theta`\nis a Lipschitz function. It identifies the function :math:`\\theta` via the set of local moment conditions:\n\n.. math::\n\n    \\E[\\left( Y - \\E[Y \\mid X, W] - \\theta(x)\\cdot (T- \\E[T \\mid X, W]) \\right)\\cdot \\left(T - \\E[T \\mid X, W]\\right) \\mid X=x]=0\n\nEquivalently, if we let :math:`q(X, W)=\\E[Y | X, W]`, then we can re-write the latter as:\n\n.. math::\n\n    \\E[\\left( Y - q(x, W) - \\theta(x) \\cdot (T- f(X, W)) \\rangle \\right)\\cdot \\left(T - f(X, W)\\right) \\mid X=x]=0\n\nThis is a local version of the DML loss, since the above is equivalent to minimizing the residual :math:`Y` on\nresidual :math:`T` square loss, locally at the point :math:`X=x`:\n\n.. math::\n\n    \\theta(x) = \\argmin_{\\theta} \\E[\\left( Y - q(X, W) - \\theta \\cdot (T- f(X, W)) \\right)^2 \\mid X=x]\n\n\nWhen taking these identification approach to estimation, we will replace the local moment equations with a locally\nweighted empirical average and replace the function :math:`q(X, W)`, :math:`f(X, W)`, with local estimates\n:math:`\\hat{q}_x(X, W)`, :math:`\\hat{f}_x(X, W)` of these conditional expectations (which would typically be locally in \n:math:`x` parametric/linear functions).\n\n.. math::\n\n    \\sum_{i=1}^n K_x(X_i)\\cdot \\left( Y_i - \\hat{q}_x(X_i, W_i) - \\hat{\\theta}(x) \\cdot (T_i - \\hat{f}_x(X_i, W_i)) \\right)\\cdot \\left(T_i - \\hat{f}_x(X_i, W_i)\\right) = 0\n\nor equivalently minimize the local square loss (i.e. run a local linear regression):\n\n.. math::\n\n    \\hat{\\theta}(x) = \\argmin_{\\theta} \\sum_{i=1}^n K_x(X_i)\\cdot \\left( Y_i - \\hat{q}_x(X_i, W_i) - \\theta \\cdot (T_i - \\hat{f}_x(X_i, W_i)) \\right)^2\n\nIn fact, in our package we also implement the local-linear correction proposed in [Friedberg2018]_, where instead\nof fitting a constant :math:`\\theta` locally, we fit a linear function of :math:`X` locally and regularize\nthe linear part, i.e.:\n\n.. math::\n\n    \\hat{\\alpha}, \\hat{\\beta} =~& \\argmin_{\\alpha, \\beta} \\sum_{i=1}^n K_x(X_i) \\left( Y_i - \\hat{q}_x(X_i, W_i) - (\\beta\\cdot X_i + \\alpha) (T_i - \\hat{f}_x(X_i, W_i)) \\right)^2 + \\lambda \\|\\beta\\|_2^2\\\\\n    \\hat{\\theta}(x) =~& \\hat{\\beta} \\cdot x + \\hat{\\alpha}\n\nThe kernel :math:`K_x(X_i)` is a similarity metric that is calculated by building a random forest with a causal criterion. This \ncriterion is a slight modification of the criterion used in generalized random forests [Athey2019]_ and \ncausal forests [Wager2018]_, so as to incorporate residualization when calculating the score of each candidate\nsplit.\n\nMoreover, for every target point :math:`x` we will need to estimate the local nuisance functions\n:math:`\\hat{q}_x(X, W)`, :math:`\\hat{f}_x(X, W)` of the functions :math:`q(X, W) = \\E[Y | X, W]` and :math:`f(X, W)=\\E[T | X, W]`.\nThe method splits the data and performs cross-fitting: i.e. fits the\nconditional expectation models on the first half and predicts the quantities on the second half and vice versa. \nSubsequently estimates :math:`\\theta(x)` on all the data.\n\nIn order to handle high-dimensional :math:`W`, the method estimates the conditional expectations also in a local manner\naround each target :math:`x`. In particular, to estimate :math:`\\hat{q}_x(X, W)`, :math:`\\hat{f}_x(X, W)` for each target :math:`x`\nit minimizes a weighted (penalized) loss :math:`\\ell` (e.g. square loss or multinomial logistic loss):\n\n.. math::\n\n    \\hat{q}_x = \\argmin_{q_x \\in Q} \\sum_{i=1}^n K_x(X_i)\\cdot \\ell(Y_i, q_x(X_i, W_i)) + R(q_x)\\\\\n    \\hat{f}_x = \\argmin_{f_x \\in F} \\sum_{i=1}^n K_x(X_i)\\cdot \\ell(T_i, f_x(X_i, W_i)) + R(f_x)\n\nwhere :math:`Q, F` is some function spaces and :math:`R` is some regularizer. If the hypothesis space\nis locally linear, i.e. :math:`h_x(X, W) = \\langle \\nu(x), [X; W] \\rangle`, the regularizer is the \n:math:`\\ell_1` norm of the coefficients :math:`\\|\\nu(x)\\|_1` and the loss is either the square\nloss or the logistic loss, then the method has provable guarantees of asymptotic normality,\nassuming the true coefficients are relatively sparse (i.e. most of them are zero). The \nweights :math:`K(x, X_i)` are computed using the same Random Forest algorithm with \na causal criterion as the one used to calculate the weights for the second stage \nestimation of :math:`\\theta(x)` (albeit using a different half sample than the one used for \nthe final stage estimation, in a cross-fitting manner).\n\nAlgorithmically, the nuisance estimation part of the method is implemented in a\nflexible manner, not restricted to :math:`\\ell_1` regularization, as follows: the user can define any class that\nsupports fit and predict. The fit function needs to also support sample weights, passed as a third argument. \nIf it does not, then we provided a weighted model wrapper :class:`.WeightedModelWrapper` that\ncan wrap any class that supports fit and predict and enables sample weight functionality. Moreover, we provide\nsome extensions to the scikit-learn library that enable sample weights, such as the :class:`.WeightedLasso`.\n\n    .. testcode:: intro\n        :hide:\n\n        from econml.orf import DMLOrthoForest\n        from econml.sklearn_extensions.linear_model import WeightedLasso\n\n    .. doctest:: intro\n\n        >>> est = DMLOrthoForest(model_Y=WeightedLasso(), model_T=WeightedLasso())\n\n\nIn the case of discrete treatments (see :class:`.DROrthoForest`) the\nmethod estimates :math:`\\theta(x)` for some target :math:`x` by solving a slightly different\nset of equations, similar to the Doubly Robust Learner (see [Oprescu2019]_ for a theoretical exposition of why a different set of\nestimating equations is used). In particular, suppose that the treatment :math:`T` takes\nvalues in :math:`\\{0, 1, \\ldots, k\\}`, then to estimate the treatment effect :math:`\\theta_t(x)` of\ntreatment :math:`t` as compared to treatment :math:`0`, the method finds the solution to the\nequation:\n\n.. math::\n\n    \\E\\left[ Y_{i,t}^{DR} - Y_{i,0}^{DR}- \\theta_t(x) | X=x\\right] = 0\n\nwhere :math:`Y_{i,t}^{DR}` is a doubly robust based unbiased estimate of the counterfactual\noutcome of sample :math:`i` had we treated it with treatment :math:`t`, i.e.:\n\n.. math::\n\n    Y_{i,t}^{DR} = \\E[Y \\mid T=t, X_i, W_i] + 1\\{T_i=t\\} \\frac{Y_i - \\E[Y \\mid T=t, X_i, W_i]}{\\E[1\\{T=t\\} \\mid X_i, W_i]} \n\nEquivalently, we can express this as minimizing a local square loss:\n\n.. math::\n    \\theta_t(x) = \\argmin_{\\theta_t} \\E\\left[(Y_{i,t}^{DR} - Y_{i,0}^{DR}- \\theta_t)^2 | X=x\\right]\n\nSimilar to the continuous treatment case, we transfer this identification strategy to estimation by minimizing\na locally weighted square loss, with a local linear correction:\n\n.. math::\n    \\hat{\\alpha}_t, \\hat{\\beta}_t =& \\argmin_{\\alpha_t, \\beta_t} \\sum_{i=1}^n K(x, X_i)\\cdot \\left( Y_{i,t}^{DR} - Y_{i,0}^{DR}- \\beta_t\\cdot X_i + \\alpha_t \\right)^2 + \\lambda \\|\\beta_t\\|_2^2\\\\\n    \\hat{\\theta}_t(x) =& \\hat{\\beta}_t \\cdot x + \\hat{\\alpha}_t\n\nwhere we use first stage local estimates :math:`g_x(T, X, W)`, :math:`p_{x, t}(X, W)` of the conditional\nexpectations :math:`\\E[Y \\mid T=t, X, W]` and :math:`\\E[1\\{T=t\\} \\mid X, W]`, when constructing the doubly robust\nestimates. These are estimated by fitting a locally-weighted regression and classification model, correspondingly,\nin a cross-fitting manner. We note that in the case of discrete treatment, the model for the treatment is \na multi-class classification model and should support :code:`predict_proba`.\n\nFor more details on the input parameters of the orthogonal forest classes and how to customize\nthe estimator checkout the two modules:\n\n- :class:`.DROrthoForest`\n- :class:`.DMLOrthoForest`\n\nCausalForest (aka Forest Double Machine Learning)\n--------------------------------------------------\n\nIn this package we implement the double machine learning version of Causal Forests/Generalized Random Forests (see [Wager2018]_, [Athey2019]_) \nas for instance described in Section 6.1.1 of [Athey2019]_. This version follows a similar structure to the DMLOrthoForest approach,\nin that the estimation is based on solving a local residual on residual moment condition:\n\n.. math::\n\n    \\hat{\\theta}(x) = \\argmin_{\\theta} \\sum_{i=1}^n K_x(X_i)\\cdot \\left( Y_i - \\hat{q}(X_i, W_i) - \\theta \\cdot (T_i - \\hat{f}(X_i, W_i)) \\right)^2\n\nThe similarity metric :math:`K_x(X_i)` is trained in a data-adaptive manner by constructing a Subsampled Honest Random Forest\nwith a causal criterion and roughly calculating how frequently sample :math:`x` falls in the same leaf as\nsample :math:`X_i`.\n\nThe Causal Forest has two main differences from the OrthoForest: first the nuisance estimates :math:`\\hat{q}` and :math:`\\hat{f}`\nare fitted based on a global objective and not locally for every target point. So typically they will not be minimizing\nsome form of local mean squared error. Second the similarity metric that was potentially used to fit these\nestimates (e.g. if a RandomForest was used) is not coupled with the similarity metric used in the final effect estimation.\nThis difference can potentially lead to an improvement in the estimation error of the OrthoForest as opposed to the\nCausal Forest. However, it does add significant computation cost, as a nuisance function needs to be estimated locally\nfor each target prediction.\n\nOur implementation of a Causal Forest allows for any number of continuous treatments or a multi-valued discrete\ntreatment. The causal forest is implemented in :class:`.CausalForest` in a high-performance Cython implementation\nas a scikit-learn predictor.\n\nApart from the criterion proposed in [Athey2019]_ we also implemented an MSE criterion that penalizes splits\nwith low variance in the treatment. The difference can potentially lead to small finite sample\ndifferences. In particular, suppose that we want to decide how to split a node in two subsets of samples :math:`S_1`\nand :math:`S_2` and let :math:`\\theta_1` and :math:`\\theta_2` be the estimates on each of these partitions.\nThen the criterion implicit in the reduction is the weighted mean squared error, which boils down to\n\n.. math::\n\n    \\max_{S_1, S_2} \\theta_1^2 \\sum_{i\\in S_1} \\tilde{T}_i^2 + \\theta_2^2 \\sum_{i \\in S_2} \\tilde{T}_i^2 \\approx\n    \\max_{S_1, S_2} \\theta_1^2 \\cdot |S_1| \\cdot Var_n(T | x\\in S_1) + \\theta_2^2 \\cdot |S_2|\\cdot Var_n(T | x \\in S_2)\n\nwhere :math:`Var_n`, denotes the empirical variance. Essentially, this criterion tries to maximize heterogeneity\n(as captured by maximizing the sum of squares of the two estimates), while penalizing splits that create nodes\nwith small variation in the treatment. On the contrary the criterion proposed in [Athey2019]_ ignores the within\nchild variation of the treatment and solely maximizes the heterogeneity, i.e.\n\n.. math::\n\n    \\max_{S_1, S_2} \\theta_1^2 + \\theta_2^2\n\nFor more details on Double Machine Learning and how the :class:`.CausalForestDML` fits into our overall\nset of DML based CATE estimators, check out the :ref:`Double Machine Learning User Guide <dmluserguide>`.\n\nForest Doubly Robust Learner\n-------------------------------\n\nThe Forest Doubly Robust Learner is a variant of the Generalized Random Forest and the Orthogonal Random Forest\n(see [Wager2018]_, [Athey2019]_, [Oprescu2019]_) that uses the doubly robust moments for estimation as opposed\nto the double machine learning moments (see the :ref:`Doubly Robust Learning User Guide <druserguide>`).\nThe method only applies for categorical treatments.\n\nEssentially, it is an analogue of the :class:`.DROrthoForest`, that instead of local nuisance estimation\nit conducts global nuisance estimation and does not couple the implicit similarity metric used for the nuisance\nestimates, with the final stage similarity metric. \n\nMore concretely, the method estimates the CATE associated with treatment :math:`t`, by solving a local regression:\n\n.. math::\n\n    \\theta_t(x) = \\argmin_{\\theta_t} \\sum_{i=1}^n K(x, X_i)\\cdot \\left( Y_{i,t}^{DR} - Y_{i,0}^{DR} - \\theta_t \\right)^2\n\nwhere:\n\n.. math::\n\n    Y_{i,t}^{DR} = \\hat{g}(t, X_i, W_i) + 1\\{T_i=t\\} \\frac{Y_i - \\hat{g}(t, X_i, W_i)}{\\hat{p}_t(X_i, W_i)]} \n\nand :math:`\\hat{g}(t, X, W)` is an estimate of :math:`\\E[Y | T=t, X, W]` and :math:`\\hat{p}_t(X, W)` is an\nestimate of :math:`\\Pr[T=t | X, W]`. These estimates are constructed in a first estimation phase in a cross fitting\nmanner (see e.g. :class:`._OrthoLearner` for more details on cross fitting).\n\nThe similarity metric :math:`K_x(X_i)` is trained in a data-adaptive manner by constructing a Subsampled Honest Random Regression Forest\nwhere the target label is :math:`Y_{i, t}^{DR} - Y_{i, 0}^{DR}` and the features are :math:`X` and roughly calculating\nhow frequently sample :math:`x` falls in the same leaf as\nsample :math:`X_i`. This is implemented in the RegressionForest (see :class:`.RegressionForest`).\n\n\nClass Hierarchy Structure\n=========================\n\n.. inheritance-diagram:: econml.orf.DMLOrthoForest econml.orf.DROrthoForest econml.dr.ForestDRLearner econml.dml.CausalForestDML\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._ortho_learner._OrthoLearner, econml.orf.BaseOrthoForest, econml._cate_estimator.LinearCateEstimator\n\n\nUsage Examples\n==================================\n\nHere is a simple example of how to call :class:`.DMLOrthoForest`\nand what the returned values correspond to in a simple data generating process.\nFor more examples check out our \n`OrthoForest Jupyter notebook <https://github.com/py-why/EconML/blob/main/notebooks/Orthogonal%20Random%20Forest%20Examples.ipynb>`_ \nand the `ForestLearners Jupyter notebook <https://github.com/py-why/EconML/blob/main/notebooks/ForestLearners%20Basic%20Example.ipynb>`_ .\n\n\n    .. testcode::\n\n        import numpy as np\n        import sklearn\n        from econml.orf import DMLOrthoForest, DROrthoForest\n        np.random.seed(123)\n\n    >>> T = np.array([0, 1]*60)\n    >>> W = np.array([0, 1, 1, 0]*30).reshape(-1, 1)\n    >>> Y = (.2 * W[:, 0] + 1) * T + .5\n    >>> est = DMLOrthoForest(n_trees=1, max_depth=1, subsample_ratio=1,\n    ...                      model_T=sklearn.linear_model.LinearRegression(),\n    ...                      model_Y=sklearn.linear_model.LinearRegression())\n    >>> est.fit(Y, T, X=W, W=W)\n    <econml.orf._ortho_forest.DMLOrthoForest object at 0x...>\n    >>> print(est.effect(W[:2]))\n    [1.00...  1.19...]\n\nSimilarly, we can call :class:`.DROrthoForest`:\n\n    >>> T = np.array([0, 1]*60)\n    >>> W = np.array([0, 1, 1, 0]*30).reshape(-1, 1)\n    >>> Y = (.2 * W[:, 0] + 1) * T + .5\n    >>> est = DROrthoForest(n_trees=1, max_depth=1, subsample_ratio=1,\n    ...                     propensity_model=sklearn.linear_model.LogisticRegression(),\n    ...                     model_Y=sklearn.linear_model.LinearRegression())\n    >>> est.fit(Y, T, X=W, W=W)\n    <econml.orf._ortho_forest.DROrthoForest object at 0x...>\n    >>> print(est.effect(W[:2]))\n    [0.99...  1.35...]\n\nLet's now look at a more involved example with a high-dimensional set of confounders :math:`W`\nand with more realistic noisy data. In this case we can just use the default parameters\nof the class, which specify the use of the :class:`~sklearn.linear_model.LassoCV` for \nboth the treatment and the outcome regressions, in the case of continuous treatments.\n\n    >>> from econml.orf import DMLOrthoForest\n    >>> from econml.orf import DMLOrthoForest\n    >>> from econml.sklearn_extensions.linear_model import WeightedLasso\n    >>> import matplotlib.pyplot as plt\n    >>> np.random.seed(123)\n    >>> X = np.random.uniform(-1, 1, size=(4000, 1))\n    >>> W = np.random.normal(size=(4000, 50))\n    >>> support = np.random.choice(50, 4, replace=False)\n    >>> T = np.dot(W[:, support], np.random.normal(size=4)) + np.random.normal(size=4000)\n    >>> Y = np.exp(2*X[:, 0]) * T + np.dot(W[:, support], np.random.normal(size=4)) + .5\n    >>> est = DMLOrthoForest(n_trees=100,\n    ...                      max_depth=5,\n    ...                      model_Y=WeightedLasso(alpha=0.01),\n    ...                      model_T=WeightedLasso(alpha=0.01))\n    >>> est.fit(Y, T, X=X, W=W)\n    <econml.orf._ortho_forest.DMLOrthoForest object at 0x...>\n    >>> X_test = np.linspace(-1, 1, 30).reshape(-1, 1)\n    >>> treatment_effects = est.effect(X_test)\n    >>> plt.plot(X_test[:, 0], treatment_effects, label='ORF estimate')\n    [<matplotlib.lines.Line2D object at 0x...>]\n    >>> plt.plot(X_test[:, 0], np.exp(2*X_test[:, 0]), 'b--', label='True effect')\n    [<matplotlib.lines.Line2D object at 0x...>]\n    >>> plt.legend()\n    <matplotlib.legend.Legend object at 0x...>\n    >>> plt.show(block=False)\n\n.. figure:: figures/continuous_ortho_forest_doc_example.png\n    :align: center\n\n    Synthetic data estimation with high dimensional controls\n\n"
  },
  {
    "path": "doc/spec/estimation/metalearners.rst",
    "content": ".. _metalearnersuserguide:\n\n==============\nMeta-Learners\n==============\n\n\nWhat is it?\n==================================\n\nMetalearners are discrete treatment CATE estimators that model either two response surfaces, :math:`Y(0)` and :math:`Y(1)`, or\nmultiple response surfaces, :math:`Y(0)` to :math:`Y(K)` separately. For a detailed overview of these methods,\nsee [Kunzel2017]_. We also describe here more generally all our estimator classes where each\nstage of estimation can be an arbitrary ML method (e.g. the DRLearner and the NonParamDML).\nMoreover, we also introduce a new meta-learner that uses ideas from Domain Adaptation in Machine Learning (the DomainAdaptationLearner).\nThese methods fall into the meta-learner category because they simply combine ML methods in a black box manner\nso as to get a final stage estimate and do not introduce new estimation components.\n\nFor examples of how to use our implemented metelearners check out this\n`Metalearners Jupyter notebook <https://github.com/py-why/EconML/blob/main/notebooks/Metalearners%20Examples.ipynb>`_. The examples\nand documents here are only based on binary treatment setting, but all of these estimators are applicable to multiple treatment settings as well.\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the classes, :class:`.SLearner`,\n:class:`.TLearner`, :class:`.XLearner`, :class:`.DomainAdaptationLearner`, :class:`.NonParamDML`, :class:`.DRLearner`.\nClick on each of these links for a detailed module documentation and input parameters of each class.\n\nWhen should you use it?\n==================================\n\nThese methods are particularly valuable when one wants full flexibility on what estimation method to use at each \nstage. Moreover, they allow for the user to perform cross-validation for more data-adaptive estimation at each\nstage. Hence, they allow the user to do model selection both for nuisance quantities and for the final CATE model.\nHowever, due to their unrestricted flexibility, they typically do not offer valid confidence intervals, since\nit is not clear how arbitrary ML methods trade off bias and variance. So one should use these methods primarily\nif the target goal is estimating a CATE with a small mean squared error and performing automatic model selection\nvia cross-validated estimators.\n\nOverview of Formal Methodology\n==============================\n\nWe present here the reasoning of each estimator for the case of binary treatment. Our package works even for multiple\ncategorical treatments and each method has a natural extension to multiple treatments, which we omit for succinctness.\n\nT-Learner\n-----------------\n\nThe T-Learner models :math:`Y(0)`, :math:`Y(1)` separately. The estimated CATE is given by:\n\n.. math::\n\n    \\hat{\\tau}(x) & = E[Y(1)-Y(0)\\mid X=x] \\\\\n                & = E[Y(1)\\mid X=x] - E[Y(0)\\mid X=x] \\\\\n                & = \\hat{\\mu}_1(x) - \\hat{\\mu}_0(x)\n\nwhere :math:`\\hat{\\mu}_0 = M_0(Y^0\\sim X^0),\\; \\hat{\\mu}_1 = M_1(Y^1\\sim X^1)` are the outcome models for the control and treatment group, respectively. Here, :math:`M_0`, :math:`M_1` can be any suitable machine learning algorithms that can learn the relationship between features and outcome.\n\nThe EconML package provides the following implementation of the T-Learner:\n:class:`.TLearner`\n\nS-Learner\n-----------\n\nThe S-Learner models :math:`Y(0)` and :math:`Y(1)` through one model that receives the treatment assignment :math:`T` as an input feature (along with the features :math:`X`). The estimated CATE is given by:\n\n.. math::\n\n    \\hat{\\tau}(x) & = E[Y \\mid X=x, T=1] - E[Y\\mid X=x, T=0] \\\\\n    & = \\hat{\\mu}(x, 1) - \\hat{\\mu}(x, 0)\n\nwhere :math:`\\hat{\\mu}=M(Y \\sim (X, T))` is the outcome model for features :math:`X, T`. Here, :math:`M` is any suitable machine learning algorithm.\n \nThe EconML package provides the following implementation of the S-Learner: \n:class:`.SLearner`\n\nX-Learner\n-----------\n\nThe X-Learner models :math:`Y(1)` and :math:`Y(0)` separately in order to estimate the CATT (Conditional Average Treatment Effect on the Treated) and CATC (Conditional Average Treatment Effect on the Controls). The CATE estimate for a new point :math:`x` is given by the propensity-weighted average of CATT and CATC. A sketch of the X-Learner procedure is given below:\n\n.. math::\n\n    \\hat{\\mu}_0 & = M_1(Y^0 \\sim X^0) \\\\\n    \\hat{\\mu}_1 & = M_2(Y^1 \\sim X^1) \\\\\n    \\hat{D}^1 & = Y^1 - \\hat{\\mu}_0(X^1) \\\\\n    \\hat{D}^0 & = \\hat{\\mu}_1(X^0) - Y^0 \\\\\n    \\hat{\\tau}_0 & = M_3(\\hat{D}^0 \\sim X^0) \\\\\n    \\hat{\\tau}_1 & = M_4(\\hat{D}^1 \\sim X^1) \\\\\n    \\hat{\\tau} & = g(x)\\hat{\\tau}_0(x) + (1-g(x))  \\hat{\\tau}_1(x)\n\nwhere :math:`g(x)` is an estimation of :math:`P[T=1| X]` and :math:`M_1, M_2, M_3, M_4` are suitable machine learning algorithms. \n\nThe EconML package provides the following implementation of the X-Learner: \n:class:`.XLearner`\n\n\nDomain Adaptation Learner\n-------------------------\n\nThe Domain Adaptation Learner is a variation of the :math:`X`-learner that uses domain adaptation techniques to estimate the \noutcome models :math:`\\hat{\\mu}_0` and :math:`\\hat{\\mu}_1`. The underlying assumption of the Domain Adaptation methodology is that \nthe probability distributions :math:`P(X^0)` and :math:`P(X^1)` are different. This requires weighting the :math:`X^0` samples by how \nsimilar they are to :math:`X^1` samples when training a model on :math:`X^0` that is unbiased on :math:`X^1`. A sketch of the \nDomain Adaptation Learner procedure is given below:\n\n.. math::\n\n    \\hat{\\mu}_0 & = M_1\\left(Y^0 \\sim X^0, \\text{weights}=\\frac{g(X^0)}{1-g(X^0)}\\right) \\\\\n    \\hat{\\mu}_1 & = M_2\\left(Y^1 \\sim X^1, \\text{weights}=\\frac{1-g(X^1)}{g(X^1)}\\right) \\\\\n    \\hat{D}^1 & = Y^1 - \\hat{\\mu}_0(X^1) \\\\\n    \\hat{D}^0 & = \\hat{\\mu}_1(X^0) - Y^0 \\\\\n    \\hat{\\tau} & = M_3(\\hat{D}^0|\\hat{D}^1 \\sim X^0|X^1)\n\nwhere :math:`g(x)` is an estimation of :math:`P[T=1| X]`, :math:`M_1, M_2, M_3` are suitable machine learning algorithms, and :math:`|` denotes \ndataset concatenation. \n\nThe EconML package provides the following implementation of the Domain Adaptation Learner: \n:class:`.DomainAdaptationLearner`\n\n\nDoubly Robust Learner\n---------------------\n\nSee :ref:`Doubly Robust Learning User Guide <druserguide>`.\n\nNon-Parametric Double Machine Learning\n--------------------------------------\n\nSee :ref:`Double Machine Learning User Guid <dmluserguide>`.\n\n\nClass Hierarchy Structure\n==================================\n\n.. inheritance-diagram:: econml.metalearners.SLearner econml.metalearners.TLearner econml.metalearners.XLearner econml.metalearners.DomainAdaptationLearner econml.dr.DRLearner econml.dml.DML\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._ortho_learner._OrthoLearner, econml._cate_estimator.LinearCateEstimator, econml._cate_estimator.TreatmentExpansionMixin\n\n\nUsage Examples\n==================================\n\nCheck out the following notebooks:\n\n    * `Metalearners Jupyter notebook <https://github.com/py-why/EconML/blob/main/notebooks/Metalearners%20Examples.ipynb>`_.\n    * `DML Examples Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/Double%20Machine%20Learning%20Examples.ipynb>`_,\n    * `Forest Learners Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/ForestLearners%20Basic%20Example.ipynb>`_.\n\n\n.. todo::\n    * Synthetic Controls via Matchings\n    * Regression Discontinuity Estimators\n\n\n\n"
  },
  {
    "path": "doc/spec/estimation/orthoiv.rst",
    "content": ".. _orthoivuserguide:\n\n=================================\nOrthogonal instrumental variables\n=================================\n\n\nWhat is it?\n==================================\nOrthogonal instrumental variables is a suite of methods to estimate heterogeneous treatment effects with arbitrary machine\nlearning methods in the presence of unobserved confounders with the aid of a valid instrument. We develop a statistical learning\napproach to the estimation of heterogeneous effects, reducing the problem to the minimization of an appropriate loss function that\ndepends on a set of auxiliary models (each corresponding to a separate prediction task). The reduction enables the use of all\nrecent Machine Learning models (e.g. random forest, boosting, neural nets). We show that the estimated effect model is robust to\nestimation errors in the auxiliary models, by showing that the loss satisfies a Neyman orthogonality criterion.\nOur approach can be used to estimate projections of the true effect model on simpler hypothesis spaces.\nWhen these spaces are parametric, then the parameter estimates are asymptotically normal,\nwhich enables construction of confidence intervals. \nFor a more detailed overview of these methods, see e.g. [Syrgkanis2019]_.\n\n\nWhat are the relevant estimator classes?\n========================================\n\nThis section describes the methodology implemented in the classes :class:`.OrthoIV`,\n:class:`.DMLIV`, :class:`.NonParamDMLIV`, :class:`.LinearDRIV`, :class:`.SparseLinearDRIV`, :class:`.ForestDRIV`,\n:class:`.IntentToTreatDRIV`, :class:`.LinearIntentToTreatDRIV`.\nClick on each of these links for detailed module documentation and input parameters of each class.\n\nWhen should you use it?\n==================================\nSuppose you have observational (or experimental from an A/B test) historical data, where some treatment(s)/intervention(s)/action(s) \n:math:`T` were chosen and some outcome(s) :math:`Y` were observed. However, not all of the variables :math:`W` that could have\npotentially gone into the choice of :math:`T`, and simultaneously could have had a direct effect on the outcome :math:`Y`\n(aka controls or confounders) are recorded in the dataset. At the same time if you could observe a variable :math:`Z` which\nwill have a direct effect on treatment and an indirect effect on outcome which only goes through the treatment, we could use classes\nmentioned above to learn the heterogeneous treatment effect on high dimensional dataset. In other words, we learn the effect of the\ntreatment on the outcome as a function of a set of observable characteristics :math:`X`.\n\nIn particular, these methods are especially useful in A/B tests with an intent-to-treat structure, where the experimenter randomizes over\nwhich user will receive a recommendation to take an action, and we are interested in the effect of the downstream action. \n\nFor instance call:\n\n.. testsetup::\n\n    # LinearIntentToTreatDRIV\n    import numpy as np\n    X = np.random.normal(size=(100, 3))\n    y = np.random.normal(size=(100,))\n    T = np.random.binomial(1, 0.5, size=(100,))\n    Z = np.random.binomial(1, 0.5, size=(100,))\n    W = np.random.normal(size=(100, 10))\n\n.. testcode::\n\n    from econml.iv.dr import LinearIntentToTreatDRIV\n    est = LinearIntentToTreatDRIV()\n    est.fit(y, T, Z=Z, X=X, W=X)\n    est.effect(X)\n\n\nClass Hierarchy Structure\n==================================\nIn this library we implement variants of several of the approaches mentioned in the last section. The hierarchy\nstructure of the implemented CATE estimators is as follows.\n\n    .. inheritance-diagram:: econml.iv.dml.OrthoIV econml.iv.dml.NonParamDMLIV econml.iv.dml.DMLIV econml.iv.dr.DRIV \n                            econml.iv.dr.LinearDRIV econml.iv.dr.SparseLinearDRIV econml.iv.dr.ForestDRIV\n                            econml.iv.dr.IntentToTreatDRIV econml.iv.dr.LinearIntentToTreatDRIV\n        :parts: 1\n        :private-bases:\n        :top-classes: econml._ortho_learner._OrthoLearner, econml._cate_estimator.StatsModelsCateEstimatorMixin, econml._cate_estimator.DebiasedLassoCateEstimatorMixin\n\n\nUsage Examples\n==================================\n\nFor more extensive examples check out the following notebooks:\n`OrthoIV and DRIV Examples Jupyter Notebook <https://github.com/py-why/EconML/blob/main/notebooks/OrthoIV%20and%20DRIV%20Examples.ipynb>`_."
  },
  {
    "path": "doc/spec/estimation/two_sls.rst",
    "content": "\nSieve 2SLS Instrumental Variable Estimation\n===========================================\n\nThe sieve based instrumental variable estimator :class:`.SieveTSLS` is based on a two-stage least squares estimation procedure.\nThe user must specify the sieve basis for :math:`T`, :math:`X` and :math:`Y` (Hermite polynomial or a set of indicator \nfunctions), and the number of elements of the basis expansion to include. Formally, we now assume that we can write:\n\n.. math::\n\n    Y =~& \\sum_{d=1}^{d^Y} \\sum_{k=1}^{d^X} \\beta^Y_{d,k} \\psi_d(T) \\rho_k(X) + \\gamma (X,W) + \\epsilon \\\\\n    T =~& \\sum_{d=1}^{d^T} \\sum_{k=1}^{d^X} \\beta^T_{d,k} \\phi_d(Z) \\rho_k(X) + \\delta (X,W) + u\n\nwhere :math:`\\{\\psi_d\\}` is the sieve basis for :math:`Y` with degree :math:`d^Y`, :math:`\\{\\rho_k\\}` is the sieve basis \nfor :math:`X`, with degree :math:`d^X`, :math:`\\{\\phi_d\\}` is the sieve basis for :math:`T` with degree :math:`d^T`, \n:math:`Z` are the instruments, :math:`(X,W)` is the horizontal concatenation of :math:`X` and :math:`W`, and :math:`u` \nand :math:`\\varepsilon` may be correlated. Each of the :math:`\\psi_d` is a function from :math:`\\dim(T)` into \n:math:`\\mathbb{R}`, each of the :math:`\\rho_k` is a function from :math:`\\dim(X)` into :math:`\\mathbb{R}` and each \nof the :math:`\\phi_d` is a function from :math:`\\dim(Z)` into :math:`\\mathbb{R}`.  \n\nOur goal is to estimate\n\n.. math::\n\n    \\tau(\\vec{t}_0, \\vec{t}_1, \\vec{x}) = \\sum_{d=1}^{d^Y} \\sum_{k=1}^{d^X} \\beta^Y_{d,k} \\rho_k(\\vec{x})  \\left(\\psi_d(\\vec{t_1}) - \\psi_d(\\vec{t_0})\\right)\n\nWe do this by first estimating each of the functions :math:`\\E[\\psi_d(T)|X,Z,W]` by linear projection of :math:`\\psi_d(t_i)` \nonto the features :math:`\\{\\phi_d(z_i) \\rho_k(x_i) \\}` and :math:`(x_i,w_i)`. We will then project :math:`y_i` onto these\nestimated functions and :math:`(x_i,w_i)` again to arrive at an estimate :math:`\\hat{\\beta}^Y` whose individual coefficients \n:math:`\\beta^Y_{d,k}` can be used to return our estimate of :math:`\\tau`.  \n"
  },
  {
    "path": "doc/spec/estimation.rst",
    "content": "Estimation Methods under Unconfoundedness\n=========================================\n\nThis section contains methods for estimating (heterogeneous) treatment effects,\nwhose theoretical guarantees are valid only when all potential confounders/controls (factors that simultaneously\nhad a direct effect on the treatment decision in the collected data and the observed outcome) are observed.\n\n.. toctree::\n    :maxdepth: 3\n\n    estimation/dml.rst\n    estimation/dr.rst\n    estimation/forest.rst\n    estimation/metalearners.rst\n"
  },
  {
    "path": "doc/spec/estimation_dynamic.rst",
    "content": "Estimation Methods for Dynamic Treatment Regimes\n================================================\n\nThis section contains methods for estimating (heterogeneous) treatment effects,\neven when treatments are offered over time and the treatments were chosen based on a dynamic\nadaptive policy. This is referred to as the dynamic treatment regime (see e.g. [Hernan2010]_)\n\n.. toctree::\n    :maxdepth: 2\n\n    estimation/dynamic_dml\n"
  },
  {
    "path": "doc/spec/estimation_iv.rst",
    "content": "Estimation Methods with Instruments\n===================================\n\nThis section contains methods for estimating (heterogeneous) treatment effects,\neven when there are unobserved confounders (factors that simultaneously\nhad a direct effect on the treatment decision in the collected data and the observed outcome). However, the\nmethods assumes that we have access to an instrumental variable: a random variable that had an effect on the\ntreatment, but did not have any direct effect on the outcome, other than through the treatment.\n\nThe package offers two IV methods for \nestimating heterogeneous treatment effects: deep instrumental variables [Hartford2017]_ and the two-stage basis expansion approach \nof [Newey2003]_.  \n\n.. toctree::\n    :maxdepth: 2\n\n    estimation/two_sls.rst\n    estimation/orthoiv.rst"
  },
  {
    "path": "doc/spec/faq.rst",
    "content": "Frequently Asked Questions (FAQ)\n====================================================================\n\nWhen should I use EconML?\n--------------------------\n\nEconML is designed to answer causal questions: what will happen in response to some change in behavior, \nprices, or conditions? These questions require different methods than forecasting questions: \nwhat will happen next if everything continues as it has been?\n\n\nWhat are the advantages of EconML?\n-----------------------------------\n\nEconML offers the broadest range of cutting-edge AI models designed specifically to answer causal questions. \nThe EconML models also build on familiar Python packages, allowing users to easily select the best model for their question. \nFinally, EconML includes custom interpreters to create presentation-ready output.\n\n\nHow do I know if the results make sense?\n----------------------------------------\n\nTry comparing the consistency of your estimates across multiple models, including some that make\nstronger structural assumptions like linear relationships and some that do not. Pay attention to the \nstandard errors as well as the point estimates—imprecise estimates should be interpreted accordingly. \nWhile researchers can introduce bias by narrowly fishing for estimates that match their prior, it is also important\nto use your expertise to evaluate results. If you estimate that a 5% decrease in price generates\nan implausible 5000% increase in sales you should carefully review your code!\n\nI'm getting causal estimates that don't make sense. What next?\n----------------------------------------------------------------\nFirst carefully check your code for errors and try several causal models. \nIf your estimates are consistent, but implausible, you may have a confounding variable that hasn’t been measured in your data.\nThink carefully about the source of the data you are using: was there something unusual going on \nduring the period when the data were collected (for example a holiday or an economic downturn)?\nIs there something unusual about your sample (for example, all men with pre-existing heart conditions)?\n\n\nWhat if I don't have a good instrument, can't run an experiment, and don't observe all confounders?\n------------------------------------------------------------------------------------------------------------\nIn this case, no statistical approach can perfectly isolate the causal effect of the treatment on the outcome. \nDML, OrthoForest, or MetaLearners, all including all the confounders you can observe, \nwill deliver the best approximation of the causal effect that minimizes the bias from confounders. \nBe aware of some remaining bias when using these estimates.\n\n\nHow can I test whether I'm identifying the causal effect?\n------------------------------------------------------------\nYou are identifying a valid causal effect if and only if the underlying assumptions of the causal model\nassumed by the estimation routine are correct. Those are often hard to test (though the `DoWhy <https://py-why.github.io/dowhy/>`__ package may help).\nHaving made those assumptions, the EconML package allows you to fit the best causal model you can.\nMany models will store a final stage fit metric that can be used to validate how well the causal model predicts out of sample, \nwhich is a good diagnostic as to the quality of your model.\n\n\nHow do I give feedback?\n------------------------------------\n\nThis project welcomes contributions and suggestions.  We use the `DCO bot <https://github.com/apps/dco>`_ to enforce a \n`Developer Certificate of Origin <https://developercertificate.org/>`_ which requires users to sign-off on their commits.\nThis is a simple way to certify that you wrote or otherwise have the right to submit the code you are contributing to \nthe project.  Git provides a :code:`-s` command line option to include this automatically when you commit via :code:`git commit`.\n\n\nThis project has adopted the `PyWhy Code of Conduct <https://github.com/py-why/governance/blob/main/CODE-OF-CONDUCT.md>`_.\n"
  },
  {
    "path": "doc/spec/federated_learning.rst",
    "content": "Federated Learning in EconML\r\n============================\r\n.. contents::\r\n    :local:\r\n    :depth: 2\r\n\r\nOverview\r\n--------\r\n\r\nFederated Learning in the EconML Library allows models to be trained on separate data sets and then combined \r\ninto a single CATE model afterwards, without ever needing to collect all of the training data on a single machine.\r\n\r\nMotivation for Incorporating Federated Learning into the EconML Library\r\n-----------------------------------------------------------------------\r\n\r\n1. **Large data sets**: With data sets that are so large that they cannot fit onto a single machine, federated \r\nlearning allows you to partition the data, train an individual causal model on each partition, and combine the models \r\ninto a single model afterwards.  \r\n\r\n2. **Privacy Preservation**: Federated learning enables organizations to build machine learning models without \r\ncentralizing or sharing sensitive data.  This may be important to comply with data privacy regulations by keeping \r\ndata localized and reducing exposure to compliance risks.\r\n\r\nFederated Learning with EconML\r\n------------------------------\r\n\r\nIntroducing the `FederatedEstimator`\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n\r\nWe provide the :class:`.FederatedEstimator` class to allow aggregating individual estimators which have \r\nbeen trained on different subsets of data.  The individual estimators must all be of the same type, \r\nwhich must currently be either LinearDML, LinearDRLearner, LinearDRIV, or LinearIntentToTreatDRIV.\r\n\r\nUnlike other estimators, you should not call `fit` on an instance of :class:`.FederatedEstimator`; instead, \r\nyou should train your individual estimators separately and then pass the already trained models to the :class:`.FederatedEstimator`\r\ninitializer.  The :class:`.FederatedEstimator` will then aggregate the individual estimators into a single model.\r\n\r\nNote that because there is a memory overhead to using federated learning, each estimator must opt-in to it by setting\r\n`enable_federation` to `True`.\r\n\r\nExample Usage\r\n~~~~~~~~~~~~~\r\n\r\n.. testsetup::\r\n\r\n    import numpy as np\r\n    from econml.federated_learning import FederatedEstimator\r\n    from econml.dml import LinearDML\r\n    n = 1000\r\n    (X, y, t) = (np.random.normal(size=(n,)+s) for s in [(3,), (), ()])\r\n\r\nHere is an extremely basic demonstration of the basic :class:`.FederatedEstimator` API:\r\n\r\n.. testcode::\r\n\r\n    # Create individual LinearDML estimators\r\n    num_partitions = 3\r\n    estimators = []\r\n    for i in range(num_partitions):\r\n        est = LinearDML(random_state=123, enable_federation=True)\r\n        # Get the data for this partition\r\n        X_part, y_part, t_part = (arr[i::num_partitions] for arr in (X, y, t))\r\n\r\n        # In practice, each estimator could be trained in a distributed fashion\r\n        # e.g. by using Spark\r\n        est.fit(Y=y_part, T=t_part, X=X_part)\r\n        estimators.append(est)\r\n\r\n    # Create a FederatedEstimator by providing a list of estimators\r\n    federated_estimator = FederatedEstimator(estimators)\r\n\r\n    # The federated estimator can now be used like a typical CATE estimator\r\n    cme = federated_estimator.const_marginal_effect(X)\r\n\r\nIn practice, if all of your data fits into memory and can be brought onto a single machine (as in the previous example),\r\nthen there is no benefit to using federated learning rather than learning a single model over the data.  In a more realistic\r\nscenario where it is impractical to fit a single model on all of the data, models should be trained in parallel on different machines,\r\nserialized, and then deserialized on a single central machine that can create the federated estimator.  Using python's built-in serialization\r\nvia the :mod:`.pickle` module, this would look something like:\r\n\r\n.. testcode::\r\n\r\n    # We're running this as a loop here, but in practice each of these iterations would be run on a different machine\r\n    for i in range(num_partitions):\r\n\r\n        # Get the data for this partition, in practice probably by loading from disk\r\n        X_part, y_part, t_part = (arr[i::num_partitions] for arr in (X, y, t))\r\n\r\n        # The code to train a model and serialize it runs on each machine\r\n        import pickle\r\n\r\n        est = LinearDML(random_state=123, enable_federation=True)\r\n        est.fit(Y=y_part, T=t_part, X=X_part)\r\n\r\n        with open(f'model{i+1}.pkl', 'wb') as f:\r\n            pickle.dump(est, f)\r\n\r\n\r\n    # On the central machine, deserialize the models and create the federated estimator\r\n    with open('model1.pkl', 'rb') as f1, open('model2.pkl', 'rb') as f2, open('model3.pkl', 'rb') as f3:\r\n        est1 = pickle.load(f1)\r\n        est2 = pickle.load(f2)\r\n        est3 = pickle.load(f3)\r\n    federated_estimator = FederatedEstimator([est1, est2, est3])\r\n\r\n    # The federated estimator can now be used like a typical CATE estimator\r\n    cme = federated_estimator.const_marginal_effect(X)\r\n\r\nTheory\r\n------\r\n\r\nMany estimators are solving a moment equation\r\n\r\n.. math::\r\n\r\n    \\E[\\psi(D; \\theta; \\eta)] = 0\r\n\r\nwhere :math:`D` is the data, :math:`\\theta` is the parameter, and :math:`\\eta` is the nuisance parameter.  Often, the moment is linear in the parameter, so that it can be rewritten as\r\n\r\n.. math::\r\n\r\n    \\E[\\psi_a(D; \\eta)\\theta + \\psi_b(D; \\eta)] = 0\r\n\r\nIn this case, solving the equation using the empirical expectations gives\r\n\r\n.. math::\r\n\r\n    \\begin{align*}\r\n        \\hat{\\theta} &= -\\E_n[\\psi_a(D;\\hat{\\eta})]^{-1} \\E_n[\\psi_b(D;\\hat{\\eta})] \\\\\r\n        \\sqrt{N}(\\theta-\\hat{\\theta}) &\\sim \\mathcal{N}\\left(0, \\E_n[\\psi_a(D;\\hat{\\eta})]^{-1} \\E_n[\\psi(D;\\hat{\\theta};\\hat{\\eta}) \\psi(D;\\hat{\\theta};\\hat{\\eta})^\\top] \\E_n[\\psi_a(D;\\hat{\\eta})^\\top]^{-1}\\right)\r\n    \\end{align*}\r\n\r\nThe center term in the variance calculation can be expanded out:\r\n\r\n..  math::\r\n    :nowrap:\r\n\r\n    \\begin{align*}\r\n        \\E_n[\\psi(D;\\hat\\theta;\\hat\\eta) \\psi(D;\\hat\\theta;\\hat\\eta)^\\top] &= \\E_n[(\\psi_b(D;\\hat\\eta)+\\psi_a(D;\\hat\\eta)\\hat\\theta) (\\psi_b(D;\\hat\\eta)+\\psi_a(D;\\hat\\eta)\\hat\\theta)^\\top] \\\\\r\n        &= \\E_n[\\psi_b(D;\\hat\\eta) \\psi_b(D;\\hat\\eta)^\\top] +  \\E_n[\\psi_a(D;\\hat\\eta)\\hat\\theta\\psi_b(D;\\hat\\eta)^\\top] \\\\ \r\n        &+ \\E_n[\\psi_b(D;\\hat\\eta) \\hat\\theta^\\top \\psi_a(D;\\hat\\eta)^\\top] +  \\E_n[\\psi_a(D;\\hat\\eta) \\hat\\theta\\hat\\theta^\\top\\psi_a(D;\\hat\\eta)^\\top ]\r\n    \\end{align*}\r\n\r\nSome of these terms involve products where :math:`\\hat\\theta` appears in an interior position, but these can equivalently be computed by taking the outer product of the matrices on either side and then contracting with :math:`\\hat\\theta` afterwards.  Thus, we can distribute the computation of the following quantities:\r\n\r\n.. math::\r\n    :nowrap:\r\n\r\n    \\begin{align*}\r\n        & \\E_n[\\psi_a(D;\\hat\\eta)] \\\\\r\n        & \\E_n[\\psi_b(D;\\hat\\eta)] \\\\\r\n        & \\E_n[\\psi_b(D;\\hat\\eta) \\psi_b(D;\\hat\\eta)^\\top] \\\\\r\n        & \\E_n[\\psi_b(D;\\hat\\eta) \\otimes \\psi_a(D;\\hat\\eta)] \\\\\r\n        & \\E_n[\\psi_a(D;\\hat\\eta) \\otimes \\psi_a(D;\\hat\\eta)] \\\\ \r\n    \\end{align*}\r\n\r\nWe can then aggregate these distributed estimates, use the first two to calculate :math:`\\hat\\theta`, and then use that with the rest to calculate the analytical variance.\r\n\r\nAs an example, for linear regression of :math:`y` on :math:`X`, we have\r\n\r\n.. math::\r\n\r\n    \\psi_a(D;\\eta) = X^\\top X \\\\\r\n    \\psi_b(D;\\eta) = X^\\top y\r\n\r\nAnd so the additional moments we need to distribute are\r\n\r\n.. math::\r\n\r\n    \\begin{align*}\r\n        & \\E_n[X^\\top y y^\\top X] = \\E_n[X^\\top X y^2] = \\E_n[X \\otimes X \\otimes y \\otimes y] \\\\\r\n        & \\E_n[X^\\top y \\otimes X^\\top X] = \\E_n[X \\otimes X \\otimes X \\otimes y]\\\\\r\n        & \\E_n[X^\\top X \\otimes X^\\top X] = \\E_n[X \\otimes X \\otimes X \\otimes X] \\\\ \r\n    \\end{align*}\r\n\r\nThus, at the cost of storing these three extra moments, we can distribute the computation of linear regression and recover exactly the same \r\nresult we would have gotten by doing this computation on the full data set.\r\n\r\nIn the context of federated CATE estimation, note that in practice the nuisances are computed on subsets of the data, \r\nso while it is true that the aggregated final linear model is exactly the same as what would be computed with all of the same nuisances locally,\r\nin practice the nuisance estimates would differ if computed on all of the data.  In practice, this should not be a significant issue as long as the\r\nnuisance estimators converge at a reasonable rate; for example if the first stage models are accurate enough for the final estimate to converge at a rate of :math:`O(1/\\sqrt{n})`,\r\nthen splitting the data into :math:`k` partitions should only increase the variance by a factor of :math:`\\sqrt{k}`."
  },
  {
    "path": "doc/spec/flowchart.rst",
    "content": "==================\nLibrary Flow Chart\n==================\n\n\n.. raw:: html\n\n    <object data=\"../map.svg\" type=\"image/svg+xml\"></object>\n\n\n.. glossary::\n    EXPERIMENT\n        Did you explicitly randomize treatment across a targeted audience? \n\n    COMPLIANCE\n        Did everyone in the experiment receive the treatment to which they were assigned? For example, \n        if you are interested in the causal effect of joining a loyalty program a useful experiment might \n        randomly send some customers an email prompting them to join the program. Only some of these \n        targeted customers will join the loyalty program, so compliance is imperfect. In a medical \n        experiment where patients come into an office each week and receive either a novel drug or a \n        placebo, compliance with the assigned group is likely to be perfect. \n\n    TREATMENT ASSIGNMENT\n        If treatment was not an outcome of an experiment (i.e. controlled), there will be multiple reasons\n        that people received the treatment.  Suppose you are interested in the causal effect of minutes \n        of exercise per week (the treatment variable) on body fat percentage (the outcome). Some people \n        exercise more minutes than others.  Reasons for this (controls) may include having more flexible \n        work schedules or being more health conscious.  Some of these controls may be confounders (i.e. \n        they also affect the outcome directly).  In this example, being more health conscious is probably\n        a confounding factor (it affects nutrition, which affects body fat), whereas having a more flexible\n        work schedule is probably not. The question posed in this bubble is whether all confounding controls\n        are measured in the data.     \n\n    Can set W\n        If you run an experiment, there are not concerns about confoundedness. Any features included in the\n        control set will help with the efficiency of the estimate in smaller samples, but are not necessary\n        to identify the causal effect. \n\n    CAUTION\n        Bias is eliminated when all confounders are measurable. See Orthogonal/Double Machine Learning\n        section for guidance on when this assumption holds. \n\n    Set Z to intended treatment\n        With imperfect compliance, the indicator of the assigned treatment category is not equivalent to\n        the indicator for actually receiving the treatment. If you are interested in the causal effect of\n        the treatment, you should use assignment as an instrument for treatment, rather than simply treating\n        assignment as the treatment itself. \n\n    TREATMENT RESPONSIVENESS\n        Many estimators only behave well with a small set of specified features X that affect the size of a\n        user’s response to the treatment. If you do not already know which few features might reasonably\n        affect the user’s response, use one of our sparse estimators that can handle large feature sets and\n        penalize them to discover the features that are most correlated with treatment effect heterogeneity. \n\n    INSTRUMENT\n        Some estimators identify the causal effect of a treatment by considering only a subset of the\n        variation in treatment intensity that is conditionally random given other data features. This\n        subset of the variation is driven by an instrument, which is often some kind of randomization (i.e.\n        an earlier experiment or a lottery). See the Instrumental Variable Regression section for more\n        information on picking a good instrument. \n\n    LINEAR TREATMENT EFFECTS\n        Some estimators impose the assumption that the outcome is a linear function of the treatment. These\n        estimators can also estimate a non-linear relationship between a treatment and the outcome if the\n        structure of the relationship is known and additively separable (for example, the linear function\n        could include both treatment and treatment-squared for continuous treatments). These linear functions\n        can also include specified interactions between treatments. However, these estimators cannot estimate\n        a fully flexible non-parametric relationship between treatments and the outcome (for example, the\n        relationship cannot be modeled by a forest). \n\n    LINEAR HETEROGENEITY\n        The CATE function determines how the size of a user’s response to the treatment varies by user\n        features. Some estimators impose the assumption that effect size is a linear function of user features.  \n\n    CONFIDENCE INTERVALS/MODEL SELECTION\n        The MetaLearner and DRLearner estimators offer the choice of any ML estimation model in all stages\n        and allows for model selection via cross validation. This enhances flexibility, but because the\n        sample data is used to choose among models it is impossible to calculate honest analytic confidence\n        intervals. Moreover, most ML estimation approaches introduce bias for regularization purposes, so as\n        to optimally balance bias and variance. Hence, confidence intervals based on such biased estimates\n        will be invalid. For these models it is still possible to construct bootstrap confidence intervals,\n        but this process is slow, may not be accurate in small samples and these intervals only capture the \n        variance but not the bias of the model. \n"
  },
  {
    "path": "doc/spec/inference.rst",
    "content": "=================\nInference\n=================\n\n\\ \n\nBootstrap Inference\n====================\n\nEvery estimator can provide bootstrap based confidence intervals by passing ``inference='bootstrap'`` or\n``inference=BootstrapInference(n_bootstrap_samples=100, n_jobs=-1)`` (see :class:`.BootstrapInference`).\nThese intervals are calculated by training multiple versions of the original estimator on bootstrap subsamples\nwith replacement. Then the intervals are calculated based on the quantiles of the estimate distribution\nacross the multiple clones. See also :class:`.BootstrapEstimator` for more details on this.\n\nFor instance:\n\n.. testsetup::\n\n    import numpy as np\n    X = np.random.choice(np.arange(5), size=(100,3))\n    Y = np.random.normal(size=(100,2))\n    y = np.random.normal(size=(100,))\n    T = T0 = T1 = np.random.choice(np.arange(3), size=(100,2))\n    t = t0 = t1 = T[:,0]\n    W = np.random.normal(size=(100,2))\n\n.. testcode::\n\n    from econml.dml import NonParamDML\n    from sklearn.ensemble import RandomForestRegressor\n    est = NonParamDML(model_y=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                                model_t=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                                model_final=RandomForestRegressor(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W, inference='bootstrap')\n    point = est.const_marginal_effect(X)\n    lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n\n\nOLS Inference\n====================\n\nFor estimators where the final stage CATE estimate is based on an Ordinary Least Squares regression, then we offer\nnormality-based confidence intervals by default (leaving the setting ``inference='auto'`` unchanged), or by\nexplicitly setting ``inference='statsmodels'``, or dependent on the estimator one can alter the covariance type calculation via\n``inference=StatsModelsInference(cov_type='HC1)`` or ``inference=StatsModelsInferenceDiscrete(cov_type='HC1)``.\nSee :class:`.StatsModelsInference` and :class:`.StatsModelsInferenceDiscrete` for more details.\nThis for instance holds for the :class:`.LinearDML` and the :class:`.LinearDRLearner`, e.g.:\n\n.. testcode::\n\n    from econml.dml import LinearDML\n    from sklearn.ensemble import RandomForestRegressor\n    est = LinearDML(model_y=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                                 model_t=RandomForestRegressor(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.const_marginal_effect(X)\n    lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n.. testcode::\n\n    from econml.dr import LinearDRLearner\n    from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n    est = LinearDRLearner(model_regression=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                          model_propensity=RandomForestClassifier(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.effect(X)\n    lb, ub = est.effect_interval(X, alpha=0.05)\n\nThis inference is enabled by our :class:`.StatsModelsLinearRegression` extension to the scikit-learn \n:class:`~sklearn.linear_model.LinearRegression`.\n\nDebiased Lasso Inference\n=========================\n\nFor estimators where the final stage CATE estimate is based on a high dimensional linear model with a sparsity\nconstraint, then we offer confidence intervals using the debiased lasso technique. This for instance\nholds for the :class:`.SparseLinearDML` and the :class:`.SparseLinearDRLearner`. You can enable such\nintervals by default (leaving the setting ``inference='auto'`` unchanged), or by\nexplicitly setting ``inference='debiasedlasso'``, e.g.:\n\n.. testcode::\n\n    from econml.dml import SparseLinearDML\n    from sklearn.ensemble import RandomForestRegressor\n    est = SparseLinearDML(model_y=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                                       model_t=RandomForestRegressor(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.const_marginal_effect(X)\n    lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n.. testcode::\n\n    from econml.dr import SparseLinearDRLearner\n    from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n    est = SparseLinearDRLearner(model_regression=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                                model_propensity=RandomForestClassifier(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.effect(X)\n    lb, ub = est.effect_interval(X, alpha=0.05)\n\n\nThis inference is enabled by our implementation of the :class:`.DebiasedLasso` extension to the scikit-learn\n:class:`~sklearn.linear_model.Lasso`.\n\n\nSubsampled Honest Forest Inference\n===================================\n\nFor estimators where the final stage CATE estimate is a non-parametric model based on a Random Forest, we offer\nconfidence intervals via the bootstrap-of-little-bags approach (see [Athey2019]_) for estimating the uncertainty of\nan Honest Random Forest. This for instance holds for the :class:`.CausalForestDML`\nand the :class:`.ForestDRLearner`. Such intervals are enabled by leaving inference at its default setting of ``'auto'``\nor by explicitly setting ``inference='blb'``, e.g.:\n\n.. testcode::\n\n    from econml.dml import CausalForestDML\n    from sklearn.ensemble import RandomForestRegressor\n    est = CausalForestDML(model_y=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                          model_t=RandomForestRegressor(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.const_marginal_effect(X)\n    lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n.. testcode::\n\n    from econml.dr import ForestDRLearner\n    from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n    est = ForestDRLearner(model_regression=RandomForestRegressor(n_estimators=10, min_samples_leaf=10),\n                          model_propensity=RandomForestClassifier(n_estimators=10, min_samples_leaf=10))\n    est.fit(y, t, X=X, W=W)\n    point = est.effect(X)\n    lb, ub = est.effect_interval(X, alpha=0.05)\n\nThis inference is enabled by our implementation of the :class:`~econml.grf.RegressionForest` extension to the scikit-learn\n:class:`~sklearn.ensemble.RandomForestRegressor`.\n\n\nOrthoForest Bootstrap of Little Bags Inference\n==============================================\n\nFor the Orthogonal Random Forest estimators (see :class:`.DMLOrthoForest`, :class:`.DROrthoForest`), \nwe provide confidence intervals built via the bootstrap-of-little-bags approach ([Athey2019]_). This technique is well suited for\nestimating the uncertainty of the honest causal forests underlying the OrthoForest estimators. Such intervals are enabled by leaving \ninference at its default setting of ``'auto'`` or by explicitly setting ``inference='blb'``, e.g.:\n\n.. testcode::\n\n    from econml.orf import DMLOrthoForest\n    from econml.sklearn_extensions.linear_model import WeightedLasso\n    est = DMLOrthoForest(n_trees=10,\n                         min_leaf_size=3,\n                         model_T=WeightedLasso(alpha=0.01),\n                         model_Y=WeightedLasso(alpha=0.01))\n    est.fit(y, t, X=X, W=W)\n    point = est.const_marginal_effect(X)\n    lb, ub = est.const_marginal_effect_interval(X, alpha=0.05)\n\n.. todo::    \n    * Subsampling\n    * Doubly Robust Gradient Inference\n"
  },
  {
    "path": "doc/spec/interpretability.rst",
    "content": "Interpretability\n================\n\nOur package offers multiple interpretability tools to better understand the final model CATE.\n\n\nTree Interpreter\n----------------\n\nTree Interpreter provides a presentation-ready summary of the key features that explain the biggest differences in responsiveness to an intervention.\n\n:class:`.SingleTreeCateInterpreter` trains a single shallow decision tree for the treatment effect :math:`\\theta(X)` you learned from any of\nour available CATE estimators on a small set of feature :math:`X` that you are interested to learn heterogeneity from. The model will split on the cutoff\npoints that maximize the treatment effect difference in each leaf. Finally each leaf will be a subgroup of samples that respond to a treatment differently\nfrom other leaves. \n\nFor instance: \n\n.. testsetup::\n\n    import numpy as np\n    X = np.random.choice(np.arange(5), size=(100,3))\n    Y = np.random.normal(size=(100,2))\n    y = np.random.normal(size=(100,))\n    T = np.random.choice(np.arange(3), size=(100,2))\n    t = T[:,0]\n    W = np.random.normal(size=(100,2))\n    \n\n.. testcode::\n\n    from econml.cate_interpreter import SingleTreeCateInterpreter\n    from econml.dml import LinearDML\n    est = LinearDML()\n    est.fit(y, t, X=X, W=W)\n    intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\n    # We interpret the CATE model's behavior based on the features used for heterogeneity\n    intrp.interpret(est, X)\n    # Plot the tree\n    intrp.plot(feature_names=['A', 'B', 'C'], fontsize=12)\n\nPolicy Interpreter\n------------------\nPolicy Interpreter offers similar functionality but taking cost into consideration. \n\nInstead of fitting a tree to learn groups that have a different treatment effect, :class:`.SingleTreePolicyInterpreter` tries to split the samples into different treatment groups.\nSo in the case of binary treatments it tries to create sub-groups such that all samples within the group have either all positive effect or all negative effect. Thus it tries to\nseparate responders from non-responders, as opposed to trying to find groups that have different levels of response.\n\nThis way you can construct an interpretable personalized policy where you treat the groups with a postive effect and don't treat the group with a negative effect.\nOur policy tree provides the recommended treatment at each leaf node.\n\n\nFor instance: \n\n.. testcode::\n\n    from econml.cate_interpreter import SingleTreePolicyInterpreter\n    # We find a tree-based treatment policy based on the CATE model\n    # sample_treatment_costs is the cost of treatment. Policy will treat if effect is above this cost.\n    intrp = SingleTreePolicyInterpreter(risk_level=None, max_depth=2, min_samples_leaf=1,min_impurity_decrease=.001)\n    intrp.interpret(est, X, sample_treatment_costs=0.02)\n    # Plot the tree\n    intrp.plot(feature_names=['A', 'B', 'C'], fontsize=12)\n\n\nSHAP\n----\n\n`SHAP <https://shap.readthedocs.io/en/latest/>`_ is a popular open source library for interpreting black-box machine learning\nmodels using the Shapley values methodology (see e.g. [Lundberg2017]_).\n\nSimilar to how black-box predictive machine learning models can be explained with SHAP, we can also explain black-box effect\nheterogeneity models. This approach provides an explanation as to why a heterogeneous causal effect model produced larger or\nsmaller effect values for particular segments of the population. Which were the features that lead to such differentiation?\nThis question is easy to address when the model is succinctly described, such as the case of linear heterogeneity models, \nwhere one can simply investigate the coefficients of the model. However, it becomes hard when one starts using more expressive\nmodels, such as Random Forests and Causal Forests to model effect heterogeneity. SHAP values can be of immense help to\nunderstand the leading factors of effect heterogeneity that the model picked up from the training data.\n\nOur package offers seamless integration with the SHAP library. Every CATE estimator has a method `shap_values`, which returns the\nSHAP value explanation of the estimators output for every treatment and outcome pair. These values can then be visualized with\nthe plethora of visualizations that the SHAP library offers. Moreover, whenever possible our library invokes fast specialized\nalgorithms from the SHAP library, for each type of final model, which can greatly reduce computation times.\n\nFor instance:\n\n.. testcode::\n\n    import shap\n    from econml.dml import LinearDML\n    est = LinearDML()\n    est.fit(y, t, X=X, W=W)\n    shap_values = est.shap_values(X)\n    # local view: explain heterogeneity for a given observation\n    ind=0\n    shap.plots.force(shap_values[\"Y0\"][\"T0\"][ind], matplotlib=True)\n    # global view: explain heterogeneity for a sample of dataset\n    shap.summary_plot(shap_values['Y0']['T0'])\n"
  },
  {
    "path": "doc/spec/model_selection.rst",
    "content": ".. _model_selection:\n\n=================\nModel Selection\n=================\n\nEstimators that derive from :class:`._OrthoLearner` fit first stage nuisance models on different folds of the data and then fit a final model.\nIn many cases it will make sense to perform model selection over a number of first-stage models, and the library facilitates this by allowing\na flexible specification of the first-stage models, as any of the following:\n\n    * An sklearn-compatible estimator\n\n        * If the estimator is a known class that performs its own hyperparameter selection via cross-validation (such as :class:`~sklearn.linear_model.LassoCV`), \n          then this will be done once and then the selected hyperparameters will be used when cross-fitting on each fold\n\n        * If a custom class is used, then it should support a `fit` method and either a `predict` method if the target is continuous or `predict_proba` if the target is discrete.\n\n    * One of the following strings; the exact set of models supported by each of these keywords may vary depending on the version of our package:\n\n      ``\"linear\"``\n        Selects over linear models regularized by L1 or L2 norm\n\n      ``\"poly\"``\n        Selects over regularized linear models with polynomial features of different degrees\n\n      ``\"forest\"``\n        Selects over random forest models\n\n      ``\"gbf\"``\n        Selects over gradient boosting models\n\n      ``\"nnet\"``\n        Selects over neural network models\n\n      ``\"automl\"``\n        Selects over all of the above (note that this will be potentially time consuming)\n\n    * A list of any of the above\n\n    * An implementation of :class:`.ModelSelector`, which is a class that supports a two-stage model selection and fitting process\n      (this is used internally by our library and is not generally intended to be used directly by end users).\n\nMost subclasses also use the string `\"auto\"`` as a special default value to automatically select a model from an appropriate smaller subset of models than would be generated by \"automl\".\n"
  },
  {
    "path": "doc/spec/motivation.rst",
    "content": "Machine Learning Based Estimation of Heterogeneous Treatment Effects\n====================================================================\n\nOne of the biggest promises of machine learning is the automation of decision making in a multitude of application domains. \nA core problem that arises in most data-driven personalized decision scenarios is the estimation of heterogeneous treatment \neffects: what is the effect of an intervention on an outcome of interest as a function of a set of observable characteristics\nof the treated sample? For instance, this problem arises in personalized pricing, where the goal is to estimate the effect of a\nprice discount on the demand as a function of characteristics of the consumer. Similarly it arises in medical trials where the \ngoal is to estimate the effect of a drug treatment on the clinical response of a patient as a function of patient \ncharacteristics. In many such settings we have an abundance of observational data, where the treatment was chosen via \nsome unknown policy and the ability to run A/B tests is limited. \n\nThe EconML package implements recent techniques in the literature at the intersection of econometrics and machine\nlearning that tackle the problem of heterogeneous treatment effect estimation via machine learning based approaches.\nThese novel methods offer large flexibility in modeling the effect heterogeneity (via techniques such as random forests,\nboosting, lasso and neural nets), while at the same time leverage techniques from causal inference and econometrics to\npreserve the causal interpretation of the learned model and many times also offer statistical validity via the construction\nof valid confidence intervals. \n\nIt implements techniques from recent academic works, several of which produced in-house by \nthe ALICE project of Microsoft Research, and many others from leading groups in the field.\nExamples include Double Machine Learning (see e.g. [Chernozhukov2016]_, [Chernozhukov2017]_,\n[Mackey2017]_, [Nie2017]_, [Chernozhukov2018]_, [Foster2019]_), Causal Forests (see e.g. [Wager2018]_, [Athey2019]_\n[Oprescu2019]_),\nDeep Instrumental Variables (see e.g. [Hartford2017]_), Non-parametric Instrumental Variables [Newey2003]_,\nmeta-learners (see e.g. [Kunzel2017]_).\nThe library brings together all these diverse techniques under a common\npython API.\n\n\nMotivating Examples\n===================\n\nEconML is designed to measure the causal effect of some treatment variable(s) T on an outcome variable Y, controlling for a set of features X. Use cases include:\n\nRecommendation A/B testing\n-----------------------------\n\n*Interpret experiments with imperfect compliance*\n\n.. image:: img/Recommendation.png\n  :alt: Recommendation A/B testing logo\n\n**Question**: A travel website would like to know whether joining a membership program\ncauses users to spend more time engaging with the website. \n\n**Problem**: They can’t look directly at existing data, comparing members and non-members,\nbecause the customers who chose to become members are likely already more engaged than other users.\nNor can they run a direct A/B test because they can’t force users to sign up for membership. \n\n**Solution**: The company had run an earlier experiment to test the value of a new,\nfaster sign-up process. EconML’s DRIV estimator uses this experimental nudge towards membership\nas an instrument that generates random variation in the likelihood of membership. \nThe DRIV model adjusts for the fact that not every customer who was offered the easier sign-up\nbecame a member and returns the effect of membership rather than the effect of receiving the quick sign-up.\n\nLink to jupyter notebook: \n`Recommendation A/B Testing <https://github.com/py-why/EconML/blob/main/notebooks/CustomerScenarios/Case%20Study%20-%20Recommendation%20AB%20Testing%20at%20An%20Online%20Travel%20Company.ipynb>`__\n\nMore details:\n`Trip Advisor Case Study <https://www.microsoft.com/en-us/research/uploads/prod/2020/04/MSR_ALICE_casestudy_2020.pdf>`__\n\n\nCustomer Segmentation\n----------------------\n\n*Estimate individualized responses to incentives*\n\n.. image:: img/Segmentation.png\n  :alt: Customer Segmentation logo\n\n**Question**: A media subscription service would like to offer targeted discounts\nthrough a personalized pricing plan. \n\n**Problem**: They observe many features of their customers,\nbut are not sure which customers will respond most to a lower price. \n\n**Solution**: EconML’s DML estimator uses price variations in existing data, \nalong with a rich set of user features, to estimate heterogeneous price sensitivities\nthat vary with multiple customer features. \nThe tree interpreter provides a presentation-ready summary of the key features\nthat explain the biggest differences in responsiveness to a discount.\n\nLink to jupyter notebook: \n`Customer Segmentation <https://github.com/py-why/EconML/blob/main/notebooks/CustomerScenarios/Case%20Study%20-%20Customer%20Segmentation%20at%20An%20Online%20Media%20Company.ipynb>`__.\n\nMulti-investment Attribution\n-----------------------------\n*Distinguish the effects of multiple outreach efforts*\n\n.. image:: img/Attribution.png\n  :alt: Multi-investment Attribution logo\n\n**Question**: A startup would like to know the most effective approach for recruiting new customers: \nprice discounts, technical support to ease adoption, or a combination of the two. \n\n**Problem**: The risk of losing customers makes experiments across outreach efforts too expensive. \nSo far, customers have been offered incentives strategically, \nfor example larger businesses are more likely to get technical support. \n\n**Solution**: EconML’s Doubly Robust Learner model jointly estimates the effects of multiple discrete treatments. \nThe model uses flexible functions of observed customer features to filter out confounding correlations\nin existing data and deliver the causal effect of each effort on revenue.\n\nLink to jupyter notebook: \n`Multi-investment Attribution <https://github.com/py-why/EconML/blob/main/notebooks/CustomerScenarios/Case%20Study%20-%20Multi-investment%20Attribution%20at%20A%20Software%20Company.ipynb>`__."
  },
  {
    "path": "doc/spec/overview.rst",
    "content": "Overview\n=========\n\nEconML is a Python package that applies the power of machine learning techniques to estimate individualized causal responses from observational or experimental data. The suite of estimation methods provided in EconML represents the latest advances in causal machine learning. By incorporating individual machine learning steps into interpretable causal models, these methods improve the reliability of what-if predictions and make causal analysis quicker and easier for a broad set of users.\n\nEconML is open source software developed by the `ALICE <https://www.microsoft.com/en-us/research/project/alice/>`__ team at Microsoft Research.\n\n.. raw:: html\n\n    <p></p>\n    <div class=\"ms-grid \" style = \"text-align: left; box-sizing: border-box; display: block; margin-left: auto; margin-right: auto; max-width: 1600px; position: relative; padding-left: 0; padding-right: 0; width: 100%;\">\n            <div class=\"ms-row\" style = \"text-align: left; box-sizing: border-box; -webkit-box-align: stretch; align-items: stretch; display: flex; flex-wrap: wrap; margin-left: 3px; margin-right: 3px;\">\n                    <div class=\"m-col-8-24 x-hidden-focus\" style = \"text-align: left; box-sizing: border-box; float: left; margin: 0; padding-left: 1vw; padding-right: 1vw; position: relative; width: 33.33333%;\">\n                    <p style=\"text-align:center;\"><img loading=\"lazy\" class=\"size-full wp-image-656358 aligncenter x-hidden-focus\" src=\"../imgFlexible.png\" alt=\"Flexible icon\" width=\"92\" height=\"92\"></p><p style=\"text-align: center\"><b>Flexible</b></p><p class=\"x-hidden-focus\">Allows for flexible model forms that do not impose strong assumptions, including models of heterogenous responses to treatment.</p><p>\t</p></div>\n            <div class=\"m-col-8-24\" style = \"text-align: left; box-sizing: border-box; float: left; margin: 0; padding-left: 1vw; padding-right: 1vw; position: relative; width: 33.33333%;\">\n            <p style=\"text-align:center;\"><img loading=\"lazy\" class=\"size-full wp-image-656355 aligncenter\" src=\"../imgUnified.png\" alt=\"Unified icon\" width=\"92\" height=\"92\"></p><p style=\"text-align: center\"><b>Unified</b></p><p>Broad set of methods representing latest advances in the econometrics and machine learning literature within a unified API.</p><p>\t</p></div>\n            <div class=\"m-col-8-24\" style = \"text-align: left; box-sizing: border-box; float: left; margin: 0; padding-left: 1vw; padding-right: 1vw; position: relative; width: 33.33333%;\">\n            <p style=\"text-align:center;\"><img loading=\"lazy\" class=\"size-full wp-image-656352 aligncenter\" src=\"../imgFamiliar.png\" alt=\"Familiar icon\" width=\"92\" height=\"92\"></p><p style=\"text-align: center\"><b>Familiar Interface</b></p><p class=\"x-hidden-focus\">Built on standard Python packages for machine learning and data analysis.</p><p>\t</p></div>\n        <p></p>\t\t</div>\n        </div>\n\n**Why causality?**\n\nDecision-makers need estimates of causal impacts to answer what-if questions about shifts in policy - such as changes in product pricing for businesses or new treatments for health professionals.\n\n**Why not just a vanilla machine learning solution?**\n\nMost current machine learning tools are designed to forecast what will happen next under the present strategy, but cannot be interpreted to predict the effects of particular changes in behavior. \n\n**Why causal machine learning/EconML?**\n\nExisting solutions to answer what-if questions are expensive. Decision-makers can engage in active experimentation like A/B testing or employ highly trained economists who use traditional statistical models to infer causal effects from previously collected data. \n"
  },
  {
    "path": "doc/spec/references.rst",
    "content": "References\n==========\n\n.. [Chernozhukov2016]\n    V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and\n    a. W. Newey. Double Machine Learning for Treatment and Causal Parameters. *ArXiv e-prints*, July 2016.\n\n\n.. [Chernozhukov2017]\n    V. Chernozhukov, M. Goldman, V. Semenova, and M. Taddy.\n    Orthogonal Machine Learning for Demand Estimation: High Dimensional\n    Causal Inference in Dynamic Panels.\n    *ArXiv e-prints*, December 2017.\n\n.. [Chernozhukov2018]\n    V. Chernozhukov, D. Nekipelov, V. Semenova, and V. Syrgkanis.\n    Two-Stage Estimation with a High-Dimensional Second Stage.\n    2018.\n\n.. [Chernozhukov2022]\n    V. Chernozhukov, C. Cinelli, N. Kallus, W. Newey, A. Sharma, and V. Syrgkanis.\n    Long Story Short: Omitted Variable Bias in Causal Machine Learning.\n    *NBER Working Paper No. 30302*, 2022.\n    URL https://www.nber.org/papers/w30302.\n\n.. [Hartford2017]\n    Jason Hartford, Greg Lewis, Kevin Leyton-Brown, and Matt Taddy.\n    Deep IV: A flexible approach for counterfactual prediction.\n    *Proceedings of the 34th International Conference on Machine Learning*, 2017.\n\n.. [Jaggi2010]\n    Martin Jaggi and Marek Sulovský.\n    A simple algorithm for nuclear norm regularized problems.\n    *Proceedings of the 27th International Conference on Machine\n    Learning (ICML-10), June 21-24, 2010, Haifa, Israel*, pages 471--478, 2010.\n\n.. [Kunzel2017]\n    Sören R Künzel, Jasjeet S Sekhon, Peter J Bickel, and Bin Yu.\n    Meta-learners for estimating heterogeneous treatment effects using\n    machine learning.\n    *arXiv preprint arXiv:1706.03461*, 2017.\n    URL http://arxiv.org/abs/1706.03461.\n\n.. [Mackey2017]\n    Lester W. Mackey, Vasilis Syrgkanis, and Ilias Zadik.\n    Orthogonal machine learning: Power and limitations.\n    *CoRR*, abs/1711.00342, 2017.\n    URL http://arxiv.org/abs/1711.00342.\n\n.. [Newey2003]\n    W. K. Newey and J. L. Powell.\n    Instrumental variable estimation of nonparametric models.\n    *Econometrica*, 71 (5): 1565--1578, 2003.\n\n.. [Foster2019]\n    D. Foster and V. Syrgkanis.\n    Orthogonal Statistical Learning.\n    *arXiv preprint arXiv:1901.09036*, 2019.\n    URL http://arxiv.org/abs/1901.09036.\n\n.. [Wager2018]\n    S. Wager and S. Athey. \n    Estimation and inference of heterogeneous treatment effects using random forests.\n    *Journal of the American Statistical Association*, 113(523), pp.1228-1242, 2018.\n\n.. [Athey2019]\n    S. Athey, J. Tibshirani and S. Wager.\n    Generalized Random Forests.\n    *Annals of Statistics*, 2019\n\n.. [Oprescu2019]\n    M. Oprescu, V. Syrgkanis and Z. S. Wu.\n    Orthogonal Random Forest for Causal Inference.\n    *Proceedings of the 36th International Conference on Machine Learning*, 2019.\n    URL http://proceedings.mlr.press/v97/oprescu19a.html.\n\n.. [Nie2017]\n    X. Nie and S. Wager.\n    Quasi-Oracle Estimation of Heterogeneous Treatment Effects.\n    *arXiv preprint arXiv:1712.04912*, 2017.\n    URL http://arxiv.org/abs/1712.04912.\n\n.. [Buhlmann2011]\n    P. Bühlmann and S. van de Geer\n    Statistics for High-Dimensional Data\n    Springer Series in Statistics, 2011\n    URL https://www.springer.com/gp/book/9783642201912\n\n.. [Robins1994]\n    Robins, J.M., Rotnitzky, A., and Zhao, L.P. (1994).\n    Estimation of regression coefficients when some regressors are not always observed.\n    Journal of the American Statistical Association 89,846–866.\n\n.. [Bang]\n    Bang, H. and Robins, J.M. (2005).\n    Doubly robust estimation in missing data and causal inference models.\n    Biometrics 61,962–972.\n\n.. [Tsiatis]\n    Tsiatis AA (2006).\n    Semiparametric Theory and Missing Data.\n    New York: Springer; 2006.\n\n.. [Dudik2014]\n    Dudík, M., Erhan, D., Langford, J., & Li, L. (2014).\n    Doubly robust policy evaluation and optimization.\n    Statistical Science, 29(4), 485-511.\n\n.. [Athey2017]\n    Athey, S., & Wager, S. (2017).\n    Efficient policy learning.\n    arXiv preprint arXiv:1702.02896.\n\n.. [Friedberg2018]\n    Friedberg, R., Tibshirani, J., Athey, S., & Wager, S. (2018).\n    Local linear forests.\n    arXiv preprint arXiv:1807.11408.\n\n.. [Lundberg2017]\n    Lundberg, S.,  Lee, S. (2017).\n    A Unified Approach to Interpreting Model Predictions.\n    URL https://arxiv.org/abs/1705.07874\n\n.. [Lewis2021] \n    Lewis, G., Syrgkanis, V. (2021).\n    Double/Debiased Machine Learning for Dynamic Treatment Effects.\n    URL https://arxiv.org/abs/2002.07285\n\n.. [Hernan2010]\n    Hernán, Miguel A., and James M. Robins (2010).\n    Causal inference.\n    URL https://www.hsph.harvard.edu/miguel-hernan/causal-inference-book/\n\n.. [Syrgkanis2019]\n    Syrgkanis, V., Lei, V., Oprescu, M., Hei, M., Battocchi, K., Lewis, G. (2019)\n    Machine Learning Estimation of Heterogeneous Treatment Effects with Instruments\n    URL https://arxiv.org/abs/1905.10176\n\n.. [Crump2009]\n    Crump, R. K., Hotz, V. J., Imbens, G. W., & Mitnik, O. A. (2009).\n    Dealing with limited overlap in estimation of average treatment effects.\n    Biometrika, 96(1), 187-199.\n"
  },
  {
    "path": "doc/spec/spec.rst",
    "content": "EconML User Guide\n=================\n\n.. toctree::\n    overview\n    motivation\n    causal_intro\n    api\n    flowchart\n    comparison\n    estimation\n    estimation_iv\n    estimation_dynamic\n    inference\n    model_selection\n    validation\n    interpretability\n    federated_learning\n    references\n    faq\n    community\n\n.. todo::\n    benchmark\n    Panel data wrapper\n"
  },
  {
    "path": "doc/spec/validation.rst",
    "content": "Validation\n======================\n\nValidating causal estimates is inherently challenging, as the true counterfactual outcome for a given treatment is\nunobservable. However, there are several checks and tools available in EconML to help assess the credibility of causal\nestimates.\n\n\nSensitivity Analysis\n---------------------\n\nFor many EconML estimators, unobserved confounding can lead to biased causal estimates.\nMoreover, it is impossible to prove the absence of unobserved confounders.\nThis is a fundamental problem for observational causal inference.\n\nTo mitigate this problem, EconML provides a suite of sensitivity analysis tools,\nbased on [Chernozhukov2022]_,\nto assess the robustness of causal estimates to unobserved confounding. \n\nSpecifically, select estimators (subclasses of :class:`.DML` and :class:`.DRLearner`)\nhave access to ``sensitivity_analysis``, ``robustness_value``, and ``sensitivity_summary`` methods.\n\n``sensitivity_analysis`` provides an updated confidence interval for the ATE based on a specified level of unobserved confounding.\n\n\n``robustness_value`` computes the minimum level of unobserved confounding required\nso that confidence intervals around the ATE would begin to include the given point (0 by default).\n\n\n``sensitivity_summary`` provides a summary of the the two above methods.\n\nDRTester\n----------------\n\nEconML provides the :class:`.DRTester` class, which implements Best Linear Predictor (BLP), calibration r-squared,\nand uplift modeling methods for validation.\n\nSee an example notebook `here <https://github.com/py-why/EconML/blob/main/notebooks/CATE%20validation.ipynb>`__.\n\nScoring\n-------\n\nMany EconML estimators implement a ``.score`` method to evaluate the goodness-of-fit of the final model. While it may be \ndifficult to make direct sense of results from ``.score``, EconML offers the :class:`RScorer` class to facilitate model \nselection based on scoring.\n\n:class:`RScorer` enables comparison and selection among different causal models.\n\nSee an example notebook `here\n<https://github.com/py-why/EconML/blob/main/notebooks/Causal%20Model%20Selection%20with%20the%20RScorer.ipynb>`__.\n\nConfidence Intervals and Inference\n----------------------------------\n\nMost EconML estimators allow for inference, including standard errors, confidence intervals, and p-values for\nestimated effects. A common validation approach is to check whether the p-values are below a chosen significance level\n(e.g., 0.05). If not, the null hypothesis that the causal effect is zero cannot be rejected.\n\n**Note:** Inference results are only valid if the model specification is correct. For example, if a linear model is used\nbut the true data-generating process is nonlinear, the inference may not be reliable. It is generally not possible to\nguarantee correct specification, so p-value inspection should be considered a surface-level check.\n\nDoWhy Refutation Tests\n----------------------\n\nThe DoWhy library, which complements EconML, includes several refutation tests for validating causal estimates. These\ntests work by comparing the original causal estimate to estimates obtained from perturbed versions of the data, helping\nto assess the robustness of causal conclusions."
  },
  {
    "path": "econml/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n__all__ = ['automated_ml',\r\n           'bootstrap',\r\n           'cate_interpreter',\r\n           'data',\r\n           'dml',\r\n           'dr',\r\n           'dynamic',\r\n           'grf',\r\n           'inference',\r\n           'iv',\r\n           'metalearners',\r\n           'orf',\r\n           'policy',\r\n           'score',\r\n           'sklearn_extensions',\r\n           'solutions',\r\n           'tree',\r\n           'dowhy',\r\n           'utilities',\r\n           'federated_learning',\r\n           'validate',\r\n           '__version__']\r\n\r\nfrom ._version import __version__\r\n"
  },
  {
    "path": "econml/_cate_estimator.py",
    "content": "﻿# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Base classes for all CATE estimators.\"\"\"\n\nimport abc\nimport inspect\nimport numpy as np\nfrom functools import wraps\nfrom copy import deepcopy\nfrom warnings import warn\nfrom .inference import BootstrapInference\nfrom .utilities import (ndim, shape, parse_final_model_params, get_feature_names_or_default,\n                        inverse_onehot, Summary, get_input_columns, check_input_arrays)\nfrom .inference import StatsModelsInference, StatsModelsInferenceDiscrete, LinearModelFinalInference, \\\n    LinearModelFinalInferenceDiscrete, GenericSingleTreatmentModelFinalInference, \\\n    GenericModelFinalInferenceDiscrete\nfrom ._shap import _shap_explain_cme, _shap_explain_joint_linear_model_cate\nfrom .dowhy import DoWhyWrapper\n\n\nclass BaseCateEstimator(metaclass=abc.ABCMeta):\n    \"\"\"Base class for all CATE estimators in this package.\"\"\"\n\n    def _get_inference_options(self):\n        \"\"\"\n        Produce a dictionary mapping string names to :class:`.Inference` types.\n\n        This is used by the :meth:`fit` method when a str is passed rather than an :class:`.Inference` type.\n        \"\"\"\n        return {'bootstrap': BootstrapInference}\n\n    def _get_inference(self, inference):\n        options = self._get_inference_options()\n        if isinstance(inference, str):\n            if inference in options:\n                inference = options[inference]()\n            else:\n                raise ValueError(\"Inference option '%s' not recognized; valid values are %s\" %\n                                 (inference, [*options]))\n        # since inference objects can be stateful, we must copy it before fitting;\n        # otherwise this sequence wouldn't work:\n        #   est1.fit(..., inference=inf)\n        #   est2.fit(..., inference=inf)\n        #   est1.effect_interval(...)\n        # because inf now stores state from fitting est2\n        return deepcopy(inference)\n\n    def _set_input_names(self, Y, T, X, set_flag=False):\n        \"\"\"Set input column names if inputs have column metadata.\"\"\"\n        self._input_names = {\n            \"feature_names\": get_input_columns(X, prefix=\"X\"),\n            \"output_names\": get_input_columns(Y, prefix=\"Y\"),\n            \"treatment_names\": get_input_columns(T, prefix=\"T\")\n        }\n        if set_flag:\n            # This flag is true when names are set in a child class instead\n            # If names are set in a child class, add an attribute reflecting that\n            self._input_names_set = True\n\n    def _strata(self, Y, T, *args, **kwargs):\n        \"\"\"\n        Get an array of values representing strata that should be preserved by bootstrapping.\n\n        For example,\n        if treatment is discrete, then each bootstrapped estimator needs to be given at least one instance\n        with each treatment type.  For estimators like DRIV, then the same is true of the combination of\n        treatment and instrument.  The arguments to this method will match those to fit.\n\n        Returns\n        -------\n        strata : array or None\n            A vector with the same number of rows as the inputs, where the unique values represent\n            the strata that need to be preserved by bootstrapping, or None if no preservation is necessary.\n        \"\"\"\n        return None\n\n    def _prefit(self, Y, T, *args, **kwargs):\n        self._d_y = np.shape(Y)[1:]\n        self._d_t = np.shape(T)[1:]\n        # This works only if X is passed as a kwarg\n        # We plan to enforce X as kwarg only in future releases\n        if not hasattr(self, \"_input_names_set\") or not self._input_names_set:\n            # This checks if names have been set in a child class\n            # If names were set in a child class, don't do it again\n            X = kwargs.get('X')\n            self._set_input_names(Y, T, X)\n\n    def _postfit(self, Y, T, *args, **kwargs):\n        # Wraps-up fit by setting attributes, cleaning up, etc.\n        pass\n\n    @abc.abstractmethod\n    def fit(self, *args, inference=None, **kwargs):\n        \"\"\"\n        Estimate the counterfactual model from data.\n\n        That is, estimates functions :math:`\\\\tau(X, T0, T1)`, :math:`\\\\partial \\\\tau(T, X)`.\n\n        Note that the signature of this method may vary in subclasses (e.g. classes that don't\n        support instruments will not allow a `Z` argument)\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X:  (n, d_x) matrix, optional\n            Features for each sample\n        W:  (n, d_w) matrix, optional\n            Controls for each sample\n        Z:  (n, d_z) matrix, optional\n            Instruments for each sample\n        inference: str or :class:`.Inference` instance, optional\n            Method for performing inference.  All estimators support ``'bootstrap'``\n            (or an instance of :class:`.BootstrapInference`), some support other methods as well.\n\n        Returns\n        -------\n        self\n\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def _wrap_fit(m):\n        @wraps(m)\n        def call(self, Y, T, *args, inference=None, **kwargs):\n            inference = self._get_inference(inference)\n            self._prefit(Y, T, *args, **kwargs)\n            if inference is not None:\n                inference.prefit(self, Y, T, *args, **kwargs)\n            # call the wrapped fit method\n            m(self, Y, T, *args, **kwargs)\n            self._postfit(Y, T, *args, **kwargs)\n            if inference is not None:\n                # NOTE: we call inference fit *after* calling the main fit method\n                inference.fit(self, Y, T, *args, **kwargs)\n            self._inference = inference\n            return self\n        return call\n\n    @abc.abstractmethod\n    def effect(self, X=None, *, T0, T1):\n        \"\"\"\n        Calculate the heterogeneous treatment effect :math:`\\\\tau(X, T0, T1)`.\n\n        The effect is calculated between the two treatment points\n        conditional on a vector of features on a set of m test samples :math:`\\\\{T0_i, T1_i, X_i\\\\}`.\n\n        Parameters\n        ----------\n        T0: (m, d_t) matrix or vector of length m\n            Base treatments for each sample\n        T1: (m, d_t) matrix or vector of length m\n            Target treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        τ: (m, d_y) matrix\n            Heterogeneous treatment effects on each outcome for each sample\n            Note that when Y is a vector rather than a 2-dimensional array, the corresponding\n            singleton dimension will be collapsed (so this method will return a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abc.abstractmethod\n    def marginal_effect(self, T, X=None):\n        \"\"\"\n        Calculate the heterogeneous marginal effect :math:`\\\\partial\\\\tau(T, X)`.\n\n        The marginal effect is calculated around a base treatment\n        point conditional on a vector of features on a set of m test samples :math:`\\\\{T_i, X_i\\\\}`.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        grad_tau: (m, d_y, d_t) array\n            Heterogeneous marginal effects on each outcome for each sample\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def ate(self, X=None, *, T0, T1):\n        \"\"\"\n        Calculate the average treatment effect :math:`E_X[\\\\tau(X, T0, T1)]`.\n\n        The effect is calculated between the two treatment points and is averaged over\n        the population of X variables.\n\n        Parameters\n        ----------\n        T0: (m, d_t) matrix or vector of length m\n            Base treatments for each sample\n        T1: (m, d_t) matrix or vector of length m\n            Target treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        τ: float or (d_y,) array\n            Average treatment effects on each outcome\n            Note that when Y is a vector rather than a 2-dimensional array, the result will be a scalar\n        \"\"\"\n        return np.mean(self.effect(X=X, T0=T0, T1=T1), axis=0)\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"Public interface for getting feature names.\n\n        To be overriden by estimators that apply transformations the input features.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            Returns feature names.\n        \"\"\"\n        if feature_names is not None:\n            return feature_names\n        if hasattr(self, \"_input_names\"):\n            return self._input_names[\"feature_names\"]\n        return None\n\n    def cate_output_names(self, output_names=None):\n        \"\"\"\n        Public interface for getting output names.\n\n        To be overriden by estimators that apply transformations the outputs.\n\n        Parameters\n        ----------\n        output_names: list of str of length Y.shape[1] or None\n            The names of the outcomes. If None and the Y passed to fit was a dataframe,\n            it defaults to the column names from the dataframe.\n\n        Returns\n        -------\n        output_names: list of str\n            Returns output names.\n        \"\"\"\n        if output_names is not None:\n            return output_names\n        if hasattr(self, \"_input_names\"):\n            return self._input_names[\"output_names\"]\n        return None\n\n    def cate_treatment_names(self, treatment_names=None):\n        \"\"\"\n        Public interface for getting treatment names.\n\n        To be overriden by estimators that apply transformations the treatments.\n\n        Parameters\n        ----------\n        treatment_names: list of str of length T.shape[1] or None\n            The names of the treatments. If None and the T passed to fit was a dataframe,\n            it defaults to the column names from the dataframe.\n\n        Returns\n        -------\n        treatment_names: list of str\n            Returns treatment names.\n        \"\"\"\n        if treatment_names is not None:\n            return treatment_names\n        if hasattr(self, \"_input_names\"):\n            return self._input_names[\"treatment_names\"]\n        return None\n\n    def marginal_ate(self, T, X=None):\n        \"\"\"\n        Calculate the average marginal effect :math:`E_{T, X}[\\\\partial\\\\tau(T, X)]`.\n\n        The marginal effect is calculated around a base treatment\n        point and averaged over the population of X.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        grad_tau: (d_y, d_t) array\n            Average marginal effects on each outcome\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return np.mean(self.marginal_effect(T, X=X), axis=0)\n\n    def _expand_treatments(self, X=None, *Ts):\n        \"\"\"\n        Given a set of features and treatments, return possibly modified features and treatments.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample, or None\n        Ts: sequence of (m, d_t) matrices\n            Base treatments for each sample\n\n        Returns\n        -------\n        output : tuple (X',T0',T1',...)\n        \"\"\"\n        return (X,) + Ts\n\n    def _use_inference_method(self, name, *args, **kwargs):\n        if self._inference is not None:\n            return getattr(self._inference, name)(*args, **kwargs)\n        else:\n            raise AttributeError(\"Can't call '%s' because 'inference' is None\" % name)\n\n    def _defer_to_inference(m):\n        @wraps(m)\n        def call(self, *args, **kwargs):\n            # apply defaults before calling inference method\n            bound_args = inspect.signature(m).bind(self, *args, **kwargs)\n            bound_args.apply_defaults()\n            args = bound_args.args[1:]  # remove self\n            kwargs = bound_args.kwargs\n            return self._use_inference_method(m.__name__, *args, **kwargs)\n        return call\n\n    @_defer_to_inference\n    def effect_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`\\\\tau(X, T0, T1)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`effect(X, T0, T1)<effect>`, type of :meth:`effect(X, T0, T1))<effect>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def effect_inference(self, X=None, *, T0=0, T1=1):\n        \"\"\"\n        Inference results for the quantities :math:`\\\\tau(X, T0, T1)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def marginal_effect_interval(self, T, X=None, *, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`\\\\partial \\\\tau(T, X)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X: (m, d_x) matrix, optional\n            Features for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`marginal_effect(T, X)<marginal_effect>`, \\\n                             type of :meth:`marginal_effect(T, X)<marginal_effect>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def marginal_effect_inference(self, T, X=None):\n        \"\"\"\n        Inference results for the quantities :math:`\\\\partial \\\\tau(T, X)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def ate_interval(self, X=None, *, T0, T1, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantity :math:`E_X[\\\\tau(X, T0, T1)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`ate(X, T0, T1)<ate>`, type of :meth:`ate(X, T0, T1))<ate>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def ate_inference(self, X=None, *, T0, T1):\n        \"\"\"\n        Inference results for the quantity :math:`E_X[\\\\tau(X, T0, T1)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n\n        Returns\n        -------\n        PopulationSummaryResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def marginal_ate_interval(self, T, X=None, *, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`E_{T,X}[\\\\partial \\\\tau(T, X)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X: (m, d_x) matrix, optional\n            Features for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`marginal_ate(T, X)<marginal_ate>`, \\\n                             type of :meth:`marginal_ate(T, X)<marginal_ate>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @_defer_to_inference\n    def marginal_ate_inference(self, T, X=None):\n        \"\"\"\n        Inference results for the quantities :math:`E_{T,X}[\\\\partial \\\\tau(T, X)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        PopulationSummaryResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @property\n    def dowhy(self):\n        \"\"\"\n        Get a :class:`.DoWhyWrapper` to enable functionality (e.g. causal graph, refutation test, etc.) from dowhy.\n\n        Returns\n        -------\n        DoWhyWrapper: instance\n            An instance of :class:`.DoWhyWrapper`\n        \"\"\"\n        return DoWhyWrapper(self)\n\n\nclass LinearCateEstimator(BaseCateEstimator):\n    \"\"\"Base class for CATE estimators in this package where the outcome is linear given some treatment featurization.\"\"\"\n\n    _original_treatment_featurizer = None\n\n    @abc.abstractmethod\n    def const_marginal_effect(self, X=None):\n        \"\"\"\n        Calculate the constant marginal CATE :math:`\\\\theta(·)`.\n\n        The marginal effect is conditional on a vector of\n        features on a set of m test samples X[i].\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (m, d_y, d_f_t) matrix or (d_y, d_f_t) matrix if X is None where d_f_t is \\\n            the dimension of the featurized treatment. If treatment_featurizer is None, d_f_t = d_t.\n            Constant marginal CATE of each featurized treatment on each outcome for each sample X[i].\n            Note that when Y or featurized-T (or T if treatment_featurizer is None) is a vector\n            rather than a 2-dimensional array, the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def effect(self, X=None, *, T0, T1):\n        \"\"\"\n        Calculate the heterogeneous treatment effect :math:`\\\\tau(X, T0, T1)`.\n\n        The effect is calculated between the two treatment points\n        conditional on a vector of features on a set of m test samples :math:`\\\\{T0_i, T1_i, X_i\\\\}`.\n        Since this class assumes a linear effect, only the difference between T0ᵢ and T1ᵢ\n        matters for this computation.\n\n        Parameters\n        ----------\n        T0: (m, d_t) matrix\n            Base treatments for each sample\n        T1: (m, d_t) matrix\n            Target treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        effect: (m, d_y) matrix (or length m vector if Y was a vector)\n            Heterogeneous treatment effects on each outcome for each sample.\n            Note that when Y is a vector rather than a 2-dimensional array, the corresponding\n            singleton dimension will be collapsed (so this method will return a vector)\n        \"\"\"\n        X, T0, T1 = self._expand_treatments(X, T0, T1)\n        # TODO: what if input is sparse? - there's no equivalent to einsum,\n        #       but tensordot can't be applied to this problem because we don't sum over m\n        eff = self.const_marginal_effect(X)\n        # if X is None then the shape of const_marginal_effect will be wrong because the number\n        # of rows of T was not taken into account\n        if X is None:\n            eff = np.repeat(eff, shape(T0)[0], axis=0)\n        dT = T1 - T0\n        einsum_str = 'myt,mt->my'\n        if ndim(dT) == 1:\n            einsum_str = einsum_str.replace('t', '')\n        if ndim(eff) == ndim(dT):  # y is a vector, rather than a 2D array\n            einsum_str = einsum_str.replace('y', '')\n        return np.einsum(einsum_str, eff, dT)\n\n    def marginal_effect(self, T, X=None):\n        \"\"\"\n        Calculate the heterogeneous marginal effect :math:`\\\\partial\\\\tau(T, X)`.\n\n        The marginal effect is calculated around a base treatment\n        point conditional on a vector of features on a set of m test samples :math:`\\\\{T_i, X_i\\\\}`.\n        If treatment_featurizer is None, the base treatment is ignored in this calculation and the result\n        is equivalent to const_marginal_effect.\n\n        Parameters\n        ----------\n        T: (m, d_t) matrix\n            Base treatments for each sample\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        grad_tau: (m, d_y, d_t) array\n            Heterogeneous marginal effects on each outcome for each sample\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        X, T = self._expand_treatments(X, T, transform=False)\n        eff = self.const_marginal_effect(X)\n\n        if X is None:\n            eff = np.repeat(eff, shape(T)[0], axis=0)\n\n        if self._original_treatment_featurizer:\n            feat_T = self.transformer.transform(T)\n            jac_T = self.transformer.jac(T)\n\n            einsum_str = 'myf, mtf->myt'\n\n            if ndim(T) == 1:\n                einsum_str = einsum_str.replace('t', '')\n            if ndim(feat_T) == 1:\n                einsum_str = einsum_str.replace('f', '')\n            if (ndim(eff) == ndim(feat_T)):\n                einsum_str = einsum_str.replace('y', '')\n            return np.einsum(einsum_str, eff, jac_T)\n\n        else:\n            return eff\n\n    def marginal_effect_interval(self, T, X=None, *, alpha=0.05):\n        if self._original_treatment_featurizer:\n            return self._use_inference_method('marginal_effect_interval', T, X, alpha=alpha)\n        else:\n            X, T = self._expand_treatments(X, T)\n            effs = self.const_marginal_effect_interval(X=X, alpha=alpha)\n            if X is None:  # need to repeat by the number of rows of T to ensure the right shape\n                effs = tuple(np.repeat(eff, shape(T)[0], axis=0) for eff in effs)\n            return effs\n    marginal_effect_interval.__doc__ = BaseCateEstimator.marginal_effect_interval.__doc__\n\n    def marginal_effect_inference(self, T, X=None):\n        if self._original_treatment_featurizer:\n            return self._use_inference_method('marginal_effect_inference', T, X)\n        else:\n            X, T = self._expand_treatments(X, T)\n            cme_inf = self.const_marginal_effect_inference(X=X)\n            if X is None:\n                cme_inf = cme_inf._expand_outputs(shape(T)[0])\n            return cme_inf\n    marginal_effect_inference.__doc__ = BaseCateEstimator.marginal_effect_inference.__doc__\n\n    @BaseCateEstimator._defer_to_inference\n    def const_marginal_effect_interval(self, X=None, *, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`\\\\theta(X)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`const_marginal_effect(X)<const_marginal_effect>` ,\\\n                             type of :meth:`const_marginal_effect(X)<const_marginal_effect>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def const_marginal_effect_inference(self, X=None):\n        \"\"\"\n        Inference results for the quantities :math:`\\\\theta(X)` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    def const_marginal_ate(self, X=None):\n        \"\"\"\n        Calculate the average constant marginal CATE :math:`E_X[\\\\theta(X)]`.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (d_y, d_f_t) matrix where d_f_t is the dimension of the featurized treatment. \\\n            If treatment_featurizer is None, d_f_t = d_t.\n            Average constant marginal CATE of each treatment on each outcome.\n            Note that when Y or featurized-T (or T if treatment_featurizer is None) is a vector\n            rather than a 2-dimensional array, the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a scalar)\n        \"\"\"\n        return np.mean(self.const_marginal_effect(X=X), axis=0)\n\n    @BaseCateEstimator._defer_to_inference\n    def const_marginal_ate_interval(self, X=None, *, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`E_X[\\\\theta(X)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`const_marginal_ate(X)<const_marginal_ate>` ,\\\n                             type of :meth:`const_marginal_ate(X)<const_marginal_ate>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def const_marginal_ate_inference(self, X=None):\n        \"\"\"\n        Inference results for the quantities :math:`E_X[\\\\theta(X)]` produced by the model.\n\n        Available only when ``inference`` is not ``None``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        PopulationSummaryResults: object\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n\n    def marginal_ate(self, T, X=None):\n        return np.mean(self.marginal_effect(T, X=X), axis=0)\n    marginal_ate.__doc__ = BaseCateEstimator.marginal_ate.__doc__\n\n    @BaseCateEstimator._defer_to_inference\n    def marginal_ate_interval(self, T, X=None, *, alpha=0.05):\n        raise NotImplementedError(\"Defer to inference\")\n    marginal_ate_interval.__doc__ = BaseCateEstimator.marginal_ate_interval.__doc__\n\n    @BaseCateEstimator._defer_to_inference\n    def marginal_ate_inference(self, T, X=None):\n        raise NotImplementedError(\"Defer to inference\")\n    marginal_ate_inference.__doc__ = BaseCateEstimator.marginal_ate_inference.__doc__\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        \"\"\"\n        Shap value for the final stage models (const_marginal_effect).\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix\n            Features for each sample. Should be in the same shape of fitted X in final stage.\n        feature_names:  list of str of length X.shape[1], optional\n            The names of input features.\n        treatment_names:  list, optional\n            The name of featurized treatment. In discrete treatment scenario, the name should not include the name of\n            the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n        output_names:  list, optional\n            The name of the outcome.\n        background_samples: int , default 100\n            How many samples to use to compute the baseline effect. If None then all samples are used.\n\n        Returns\n        -------\n        shap_outs: nested dictionary of Explanation object\n            A nested dictionary by using each output name (e.g. 'Y0', 'Y1', ... when `output_names=None`) and\n            each treatment name (e.g. 'T0', 'T1', ... when `treatment_names=None`) as key\n            and the shap_values explanation object as value. If the input data at fit time also contain metadata,\n            (e.g. are pandas DataFrames), then the column metatdata for the treatments, outcomes and features\n            are used instead of the above defaults (unless the user overrides with explicitly passing the\n            corresponding names).\n        \"\"\"\n        return _shap_explain_cme(self.const_marginal_effect, X, self._d_t, self._d_y,\n                                 feature_names=feature_names, treatment_names=treatment_names,\n                                 output_names=output_names, input_names=self._input_names,\n                                 background_samples=background_samples)\n\n\nclass TreatmentExpansionMixin(BaseCateEstimator):\n    \"\"\"\n    Mixin which automatically handles promotions of scalar treatments to the appropriate shape.\n\n    Also applies treatment featurization for discrete treatments and user-specified treatment transformers.\n    \"\"\"\n\n    transformer = None\n    _original_treatment_featurizer = None\n\n    def _prefit(self, Y, T, *args, **kwargs):\n        super()._prefit(Y, T, *args, **kwargs)\n        # need to store the *original* dimensions of T so that we can expand scalar inputs to match;\n        # subclasses should overwrite self._d_t with post-transformed dimensions of T for generating treatments\n        self._d_t_in = self._d_t\n\n    def _postfit(self, Y, T, *args, **kwargs):\n        super()._postfit(Y, T, *args, **kwargs)\n        if self.transformer:\n            self._set_transformed_treatment_names()\n\n    def _expand_treatments(self, X=None, *Ts, transform=True):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        Ts = check_input_arrays(*Ts)\n        n_rows = 1 if X is None else shape(X)[0]\n        outTs = []\n        for T in Ts:\n            if (ndim(T) == 0) and self._d_t_in and self._d_t_in[0] > 1:\n                warn(\"A scalar was specified but there are multiple treatments; \"\n                     \"the same value will be used for each treatment.  Consider specifying\"\n                     \"all treatments, or using the const_marginal_effect method.\")\n            if ndim(T) == 0:\n                T = np.full((n_rows,) + self._d_t_in, T)\n\n            if self.transformer and transform:\n                if not self._original_treatment_featurizer:\n                    T = T.reshape(-1, 1)\n                T = self.transformer.transform(T)\n            outTs.append(T)\n\n        return (X,) + tuple(outTs)\n\n    def _set_transformed_treatment_names(self):\n        \"\"\"\n        Extract treatment names from sklearn transformers.\n\n        Or, if transformer does not have a get_feature_names method, sets default treatment names.\n        \"\"\"\n        if hasattr(self, \"_input_names\"):\n            ret = get_feature_names_or_default(self.transformer, self._input_names[\"treatment_names\"], prefix='T')\n            self._input_names[\"treatment_names\"] = list(ret) if ret is not None else ret\n\n    def cate_treatment_names(self, treatment_names=None):\n        \"\"\"\n        Get treatment names.\n\n        If the treatment is discrete or featurized, it will return expanded treatment names.\n\n        Parameters\n        ----------\n        treatment_names:  list of str of length T.shape[1], optional\n            The names of the treatments. If None and the T passed to fit was a dataframe,\n            it defaults to the column names from the dataframe.\n\n        Returns\n        -------\n        out_treatment_names: list of str\n            Returns (possibly expanded) treatment names.\n        \"\"\"\n        if treatment_names is not None:\n            if self.transformer:\n                ret = get_feature_names_or_default(self.transformer, treatment_names)\n                return list(ret) if ret is not None else None\n            return treatment_names\n        # Treatment names is None, default to BaseCateEstimator\n        return super().cate_treatment_names()\n\n    # override effect to set defaults, which works with the new definition of _expand_treatments\n    def effect(self, X=None, *, T0=0, T1=1):\n        # NOTE: don't explicitly expand treatments here, because it's done in the super call\n        return super().effect(X, T0=T0, T1=T1)\n    effect.__doc__ = BaseCateEstimator.effect.__doc__\n\n    def ate(self, X=None, *, T0=0, T1=1):\n        return super().ate(X=X, T0=T0, T1=T1)\n    ate.__doc__ = BaseCateEstimator.ate.__doc__\n\n    def ate_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n        return super().ate_interval(X=X, T0=T0, T1=T1, alpha=alpha)\n    ate_interval.__doc__ = BaseCateEstimator.ate_interval.__doc__\n\n    def ate_inference(self, X=None, *, T0=0, T1=1):\n        return super().ate_inference(X=X, T0=T0, T1=T1)\n    ate_inference.__doc__ = BaseCateEstimator.ate_inference.__doc__\n\n\nclass LinearModelFinalCateEstimatorMixin(BaseCateEstimator):\n    \"\"\"\n    Base class for models where the final stage is a linear model.\n\n    Such an estimator must implement a :attr:`model_final_` attribute that points\n    to the fitted final :class:`.StatsModelsLinearRegression` object that\n    represents the fitted CATE model. Also must implement :attr:`featurizer_` that points\n    to the fitted featurizer and :attr:`bias_part_of_coef` that designates\n    if the intercept is the first element of the :attr:`model_final_` coefficient.\n\n    Attributes\n    ----------\n    bias_part_of_coef: bool\n        Whether the CATE model's intercept is contained in the final model's ``coef_`` rather\n        than as a separate ``intercept_``\n    \"\"\"\n\n    featurizer = None\n\n    def _get_inference_options(self):\n        options = super()._get_inference_options()\n        options.update(auto=LinearModelFinalInference)\n        return options\n\n    @property\n    def bias_part_of_coef(self):\n        return False\n\n    @property\n    def coef_(self):\n        \"\"\"\n        Get the coefficients in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        coef: (n_x,) or (n_t, n_x) or (n_y, n_t, n_x) array_like\n            Where n_x is the number of features that enter the final model (either the\n            dimension of X or the dimension of featurizer.fit_transform(X) if the CATE\n            estimator has a featurizer.), n_t is the number of treatments, n_y is\n            the number of outcomes. Dimensions are omitted if the original input was\n            a vector and not a 2D array. For binary treatment the n_t dimension is\n            also omitted.\n        \"\"\"\n        return parse_final_model_params(self.model_final_.coef_, self.model_final_.intercept_,\n                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                        self.fit_cate_intercept_)[0]\n\n    @property\n    def intercept_(self):\n        \"\"\"\n        Get the intercept in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        intercept: float or (n_y,) or (n_y, n_t) array_like\n            Where n_t is the number of treatments, n_y is\n            the number of outcomes. Dimensions are omitted if the original input was\n            a vector and not a 2D array. For binary treatment the n_t dimension is\n            also omitted.\n        \"\"\"\n        if not self.fit_cate_intercept_:\n            raise AttributeError(\"No intercept was fitted!\")\n        return parse_final_model_params(self.model_final_.coef_, self.model_final_.intercept_,\n                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                        self.fit_cate_intercept_)[1]\n\n    @BaseCateEstimator._defer_to_inference\n    def coef__interval(self, *, alpha=0.05):\n        \"\"\"\n        Get the confidence interval for coefficients in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lb, ub: tuple(type of :meth:`coef_()<coef_>`, type of :meth:`coef_()<coef_>`)\n            The lower and upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def coef__inference(self):\n        \"\"\"\n        Get inference information for coefficients in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference of the coefficients in the final linear model\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def intercept__interval(self, *, alpha=0.05):\n        \"\"\"\n        Get the confidence interval for the intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple(type of :meth:`intercept_()<intercept_>`, type of :meth:`intercept_()<intercept_>`)\n            The lower and upper bounds of the confidence interval.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def intercept__inference(self):\n        \"\"\"\n        Get inference results for intercept in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference of the intercept in the final linear model\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    def summary(self, alpha=0.05, value=0, decimals=3, feature_names=None, treatment_names=None, output_names=None):\n        \"\"\"\n        Get a summary of coefficient and intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        feature_names: list of str, optional\n            The input of the feature names\n        treatment_names: list of str, optional\n            The names of the treatments\n        output_names: list of str, optional\n            The names of the outputs\n\n        Returns\n        -------\n        smry : Summary instance\n            this holds the summary tables and text, which can be printed or\n            converted to various output formats.\n        \"\"\"\n        # Get input names\n        treatment_names = self.cate_treatment_names(treatment_names)\n        output_names = self.cate_output_names(output_names)\n        # Summary\n        smry = Summary()\n\n        extra_txt = [\"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\"]\n\n        if self._original_treatment_featurizer:\n            extra_txt.append(\"$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$\")\n            extra_txt.append(\"where $\\\\psi(T)$ is the output of the `treatment_featurizer\")\n            extra_txt.append(\n                \"and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\")\n        else:\n            extra_txt.append(\"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\")\n            extra_txt.append(\n                \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\")\n\n        if self.featurizer:\n            extra_txt.append(\"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\")\n            extra_txt.append(\"where $\\\\phi(X)$ is the output of the `featurizer`\")\n        else:\n            extra_txt.append(\"$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$\")\n\n        extra_txt.append(\"Coefficient Results table portrays the $coef_{ij}$ parameter vector for \"\n                         \"each outcome $i$ and treatment $j$. \"\n                         \"Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\")\n\n        smry.add_extra_txt(extra_txt)\n\n        try:\n            coef_table = self.coef__inference().summary_frame(alpha=alpha,\n                                                              value=value, decimals=decimals,\n                                                              feature_names=feature_names,\n                                                              treatment_names=treatment_names,\n                                                              output_names=output_names)\n            coef_array = coef_table.values\n            coef_headers = coef_table.columns.tolist()\n            n_level = coef_table.index.nlevels\n            if n_level > 1:\n                coef_stubs = [\"|\".join(ind_value) for ind_value in coef_table.index.values]\n            else:\n                coef_stubs = coef_table.index.tolist()\n            coef_title = 'Coefficient Results'\n            smry.add_table(coef_array, coef_headers, coef_stubs, coef_title)\n        except Exception as e:\n            print(\"Coefficient Results: \", str(e))\n        try:\n            intercept_table = self.intercept__inference().summary_frame(alpha=alpha,\n                                                                        value=value, decimals=decimals,\n                                                                        feature_names=None,\n                                                                        treatment_names=treatment_names,\n                                                                        output_names=output_names)\n            intercept_array = intercept_table.values\n            intercept_headers = intercept_table.columns.tolist()\n            n_level = intercept_table.index.nlevels\n            if n_level > 1:\n                intercept_stubs = [\"|\".join(ind_value) for ind_value in intercept_table.index.values]\n            else:\n                intercept_stubs = intercept_table.index.tolist()\n            intercept_title = 'CATE Intercept Results'\n            smry.add_table(intercept_array, intercept_headers, intercept_stubs, intercept_title)\n        except Exception as e:\n            print(\"CATE Intercept Results: \", str(e))\n        if len(smry.tables) > 0:\n            return smry\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        if hasattr(self, \"featurizer_\") and self.featurizer_ is not None:\n            X = self.featurizer_.transform(X)\n        feature_names = self.cate_feature_names(feature_names)\n        return _shap_explain_joint_linear_model_cate(self.model_final_, X, self._d_t, self._d_y,\n                                                     self.bias_part_of_coef,\n                                                     feature_names=feature_names, treatment_names=treatment_names,\n                                                     output_names=output_names,\n                                                     input_names=self._input_names,\n                                                     background_samples=background_samples)\n\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n\n\nclass StatsModelsCateEstimatorMixin(LinearModelFinalCateEstimatorMixin):\n    \"\"\"\n    Mixin class that offers `inference='statsmodels'` options to the CATE estimator that inherits it.\n\n    Such an estimator must implement a :attr:`model_final_` attribute that points\n    to the fitted final :class:`.StatsModelsLinearRegression` object that\n    represents the fitted CATE model. Also must implement :attr:`featurizer_` that points\n    to the fitted featurizer and :attr:`bias_part_of_coef` that designates\n    if the intercept is the first element of the :attr:`model_final_` coefficient.\n    \"\"\"\n\n    def _get_inference_options(self):\n        # add statsmodels to parent's options\n        options = super()._get_inference_options()\n        options.update(statsmodels=StatsModelsInference)\n        options.update(auto=StatsModelsInference)\n        return options\n\n\nclass DebiasedLassoCateEstimatorMixin(LinearModelFinalCateEstimatorMixin):\n    \"\"\"Mixin for cate models where the final stage is a debiased lasso model.\"\"\"\n\n    def _get_inference_options(self):\n        # add debiasedlasso to parent's options\n        options = super()._get_inference_options()\n        options.update(debiasedlasso=LinearModelFinalInference)\n        options.update(auto=LinearModelFinalInference)\n        return options\n\n\nclass ForestModelFinalCateEstimatorMixin(BaseCateEstimator):\n\n    def _get_inference_options(self):\n        # add blb to parent's options\n        options = super()._get_inference_options()\n        options.update(blb=GenericSingleTreatmentModelFinalInference)\n        options.update(auto=GenericSingleTreatmentModelFinalInference)\n        return options\n\n    @property\n    def feature_importances_(self):\n        return self.model_final_.feature_importances_\n\n\nclass LinearModelFinalCateEstimatorDiscreteMixin(BaseCateEstimator):\n    # TODO Share some logic with non-discrete version\n    \"\"\"\n    Base class for models where the final stage is a linear model.\n\n    Subclasses must expose a ``fitted_models_final`` attribute\n    returning an array of the fitted models for each non-control treatment\n    \"\"\"\n\n    def _get_inference_options(self):\n        options = super()._get_inference_options()\n        options.update(auto=LinearModelFinalInferenceDiscrete)\n        return options\n\n    def coef_(self, T):\n        \"\"\"\n        Get the coefficients in the linear model of the constant marginal treatment effect associated with treatment T.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the coefficients.\n\n        Returns\n        -------\n        coef: (n_x,) or (n_y, n_x) array_like\n            Where n_x is the number of features that enter the final model (either the\n            dimension of X or the dimension of featurizer.fit_transform(X) if the CATE\n            estimator has a featurizer.)\n        \"\"\"\n        _, T = self._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.fitted_models_final[ind].coef_\n\n    def intercept_(self, T):\n        \"\"\"\n        Get the intercept in the linear model of the constant marginal treatment effect associated with treatment T.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the intercept.\n\n        Returns\n        -------\n        intercept: float or (n_y,) array_like\n        \"\"\"\n        if not self.fit_cate_intercept_:\n            raise AttributeError(\"No intercept was fitted!\")\n        _, T = self._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.fitted_models_final[ind].intercept_.reshape(self._d_y)\n\n    @BaseCateEstimator._defer_to_inference\n    def coef__interval(self, T, *, alpha=0.05):\n        \"\"\"\n        Get the confidence interval for the coefficients in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the coefficients.\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple(type of :meth:`coef_(T)<coef_>`, type of :meth:`coef_(T)<coef_>`)\n            The lower and upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def coef__inference(self, T):\n        \"\"\"\n        Get inference results for the coefficients in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the coefficients.\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference of the coefficients in the final linear model\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def intercept__interval(self, T, *, alpha=0.05):\n        \"\"\"\n        Get the intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the intercept.\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple(type of :meth:`intercept_(T)<intercept_>`, type of :meth:`intercept_(T)<intercept_>`)\n            The lower and upper bounds of the confidence interval.\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    @BaseCateEstimator._defer_to_inference\n    def intercept__inference(self, T):\n        \"\"\"\n        Get inference results for the intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the intercept.\n\n        Returns\n        -------\n        InferenceResults: object\n            The inference of the intercept in the final linear model\n\n        \"\"\"\n        raise NotImplementedError(\"Defer to inference\")\n\n    def summary(self, T, *, alpha=0.05, value=0, decimals=3,\n                feature_names=None, treatment_names=None, output_names=None):\n        \"\"\"\n        Get a summary of coefficient and intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The input treatment for which we want the summary.\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        feature_names: list of str, optional\n            The input of the feature names\n        treatment_names: list of str, optional\n            The names of the treatments\n        output_names: list of str, optional\n            The names of the outputs\n\n        Returns\n        -------\n        smry : Summary instance\n            this holds the summary tables and text, which can be printed or\n            converted to various output formats.\n        \"\"\"\n        # Get input names\n        treatment_names = self.cate_treatment_names(treatment_names)\n        output_names = self.cate_output_names(output_names)\n        # Note: we do not transform feature names since that is done within summary_frame\n\n        # Summary\n        smry = Summary()\n        smry.add_extra_txt([\"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\",\n                            \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\",\n                            \"where $T$ is the one-hot-encoding of the discrete treatment and \"\n                            \"for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\",\n                            \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\",\n                            \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. \"\n                            \"Coefficient Results table portrays the $coef_{ij}$ parameter vector for \"\n                            \"each outcome $i$ and the designated treatment $j$ passed to summary. \"\n                            \"Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"])\n        try:\n            coef_table = self.coef__inference(T).summary_frame(\n                alpha=alpha, value=value, decimals=decimals, feature_names=feature_names,\n                output_names=output_names)\n            coef_array = coef_table.values\n            coef_headers = coef_table.columns.tolist()\n            coef_stubs = coef_table.index.tolist()\n            coef_title = 'Coefficient Results'\n            smry.add_table(coef_array, coef_headers, coef_stubs, coef_title)\n        except Exception as e:\n            print(\"Coefficient Results: \", e)\n        try:\n            intercept_table = self.intercept__inference(T).summary_frame(\n                alpha=alpha, value=value, decimals=decimals, feature_names=None,\n                output_names=output_names)\n            intercept_array = intercept_table.values\n            intercept_headers = intercept_table.columns.tolist()\n            intercept_stubs = intercept_table.index.tolist()\n            intercept_title = 'CATE Intercept Results'\n            smry.add_table(intercept_array, intercept_headers, intercept_stubs, intercept_title)\n        except Exception as e:\n            print(\"CATE Intercept Results: \", e)\n\n        if len(smry.tables) > 0:\n            return smry\n\n\nclass StatsModelsCateEstimatorDiscreteMixin(LinearModelFinalCateEstimatorDiscreteMixin):\n    \"\"\"\n    Mixin class that offers `inference='statsmodels'` options to the CATE estimator that inherits it.\n\n    Such an estimator must implement a :attr:`model_final_` attribute that points\n    to a :class:`.StatsModelsLinearRegression` object that is cloned to fit\n    each discrete treatment target CATE model and a :attr:`fitted_models_final` attribute\n    that returns the list of fitted final models that represent the CATE for each categorical treatment.\n    \"\"\"\n\n    def _get_inference_options(self):\n        # add statsmodels to parent's options\n        options = super()._get_inference_options()\n        options.update(statsmodels=StatsModelsInferenceDiscrete)\n        options.update(auto=StatsModelsInferenceDiscrete)\n        return options\n\n\nclass DebiasedLassoCateEstimatorDiscreteMixin(LinearModelFinalCateEstimatorDiscreteMixin):\n    \"\"\"Mixin for cate models where the final stage is a debiased lasso model.\"\"\"\n\n    def _get_inference_options(self):\n        # add statsmodels to parent's options\n        options = super()._get_inference_options()\n        options.update(debiasedlasso=LinearModelFinalInferenceDiscrete)\n        options.update(auto=LinearModelFinalInferenceDiscrete)\n        return options\n\n\nclass ForestModelFinalCateEstimatorDiscreteMixin(BaseCateEstimator):\n\n    def _get_inference_options(self):\n        # add blb to parent's options\n        options = super()._get_inference_options()\n        options.update(blb=GenericModelFinalInferenceDiscrete)\n        options.update(auto=GenericModelFinalInferenceDiscrete)\n        return options\n\n    def feature_importances_(self, T):\n        _, T = self._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.fitted_models_final[ind].feature_importances_\n"
  },
  {
    "path": "econml/_ensemble/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._ensemble import BaseEnsemble, _partition_estimators\r\nfrom ._utilities import (_get_n_samples_subsample, _accumulate_prediction, _accumulate_prediction_var,\r\n                         _accumulate_prediction_and_var, _accumulate_oob_preds)\r\n\r\n__all__ = [\"BaseEnsemble\",\r\n           \"_partition_estimators\",\r\n           \"_get_n_samples_subsample\",\r\n           \"_accumulate_prediction\",\r\n           \"_accumulate_prediction_var\",\r\n           \"_accumulate_prediction_and_var\",\r\n           \"_accumulate_oob_preds\"]\r\n"
  },
  {
    "path": "econml/_ensemble/_ensemble.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from:\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/ensemble/_base.py\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nimport numbers\r\nimport numpy as np\r\nfrom abc import ABCMeta, abstractmethod\r\nfrom sklearn.base import BaseEstimator, clone\r\nfrom joblib import effective_n_jobs\r\nfrom packaging.version import parse\r\nimport sklearn\r\nif parse(sklearn.__version__) < parse(\"1.5\"):\r\n    from sklearn.utils import _print_elapsed_time\r\nelse:\r\n    from sklearn.utils._user_interface import _print_elapsed_time\r\n\r\n\r\ndef _fit_single_estimator(estimator, X, y, sample_weight=None,\r\n                          message_clsname=None, message=None):\r\n    \"\"\"Private function used to fit an estimator within a job.\"\"\"\r\n    if sample_weight is not None:\r\n        try:\r\n            with _print_elapsed_time(message_clsname, message):\r\n                estimator.fit(X, y, sample_weight=sample_weight)\r\n        except TypeError as exc:\r\n            if \"unexpected keyword argument 'sample_weight'\" in str(exc):\r\n                raise TypeError(\r\n                    \"Underlying estimator {} does not support sample weights.\"\r\n                    .format(estimator.__class__.__name__)\r\n                ) from exc\r\n            raise\r\n    else:\r\n        with _print_elapsed_time(message_clsname, message):\r\n            estimator.fit(X, y)\r\n    return estimator\r\n\r\n\r\ndef _set_random_states(estimator, random_state):\r\n    \"\"\"\r\n    Set fixed random_state parameters for an estimator.\r\n\r\n    Finds all parameters ending ``random_state`` and sets them to integers\r\n    derived from ``random_state``.\r\n\r\n    Parameters\r\n    ----------\r\n    estimator : estimator supporting get/set_params\r\n        Estimator with potential randomness managed by random_state\r\n        parameters.\r\n    random_state : np.RandomState object\r\n        Pseudo-random number generator to control the generation of the random\r\n        integers.\r\n\r\n    Notes\r\n    -----\r\n    This does not necessarily set *all* ``random_state`` attributes that\r\n    control an estimator's randomness, only those accessible through\r\n    ``estimator.get_params()``.  ``random_state``s not controlled include\r\n    those belonging to:\r\n        * cross-validation splitters\r\n        * ``scipy.stats`` rvs\r\n    \"\"\"\r\n    to_set = {}\r\n    for key in sorted(estimator.get_params(deep=True)):\r\n        if key == 'random_state' or key.endswith('__random_state'):\r\n            to_set[key] = random_state.randint(np.iinfo(np.int32).max)\r\n\r\n    if to_set:\r\n        estimator.set_params(**to_set)\r\n\r\n\r\nclass BaseEnsemble(BaseEstimator, metaclass=ABCMeta):\r\n    \"\"\"\r\n    Base class for all ensemble classes.\r\n\r\n    Warning: This class should not be used directly. Use derived classes\r\n    instead.\r\n\r\n    Parameters\r\n    ----------\r\n    base_estimator : object\r\n        The base estimator from which the ensemble is built.\r\n    n_estimators : int, default 10\r\n        The number of estimators in the ensemble.\r\n    estimator_params : list of str, default tuple()\r\n        The list of attributes to use as parameters when instantiating a\r\n        new base estimator. If none are given, default parameters are used.\r\n\r\n    Attributes\r\n    ----------\r\n    base_estimator_ : estimator\r\n        The base estimator from which the ensemble is grown.\r\n    estimators_ : list of estimator\r\n        The collection of fitted base estimators.\r\n    \"\"\"\r\n\r\n    @abstractmethod\r\n    def __init__(self, base_estimator, *, n_estimators=10,\r\n                 estimator_params=tuple()):\r\n        # Set parameters\r\n        self.base_estimator = base_estimator\r\n        self.n_estimators = n_estimators\r\n        self.estimator_params = estimator_params\r\n\r\n        # Don't instantiate estimators now! Parameters of base_estimator might\r\n        # still change. Eg., when grid-searching with the nested object syntax.\r\n        # self.estimators_ needs to be filled by the derived classes in fit.\r\n\r\n    def _validate_estimator(self, default=None):\r\n        \"\"\"\r\n        Check the estimator and the n_estimator attribute.\r\n\r\n        Sets the base_estimator_` attributes.\r\n        \"\"\"\r\n        if not isinstance(self.n_estimators, numbers.Integral):\r\n            raise ValueError(\"n_estimators must be an integer, \"\r\n                             \"got {0}.\".format(type(self.n_estimators)))\r\n\r\n        if self.n_estimators <= 0:\r\n            raise ValueError(\"n_estimators must be greater than zero, \"\r\n                             \"got {0}.\".format(self.n_estimators))\r\n\r\n        if self.base_estimator is not None:\r\n            self.base_estimator_ = self.base_estimator\r\n        else:\r\n            self.base_estimator_ = default\r\n\r\n        if self.base_estimator_ is None:\r\n            raise ValueError(\"base_estimator cannot be None\")\r\n\r\n    def _make_estimator(self, append=True, random_state=None):\r\n        \"\"\"\r\n        Make and configure a copy of the `base_estimator_` attribute.\r\n\r\n        Warning: This method should be used to properly instantiate new\r\n        sub-estimators.\r\n        \"\"\"\r\n        estimator = clone(self.base_estimator_)\r\n        estimator.set_params(**{p: getattr(self, p)\r\n                                for p in self.estimator_params})\r\n\r\n        if random_state is not None:\r\n            _set_random_states(estimator, random_state)\r\n\r\n        if append:\r\n            self.estimators_.append(estimator)\r\n\r\n        return estimator\r\n\r\n    def __len__(self):\r\n        \"\"\"Return the number of estimators in the ensemble.\"\"\"\r\n        return len(self.estimators_)\r\n\r\n    def __getitem__(self, index):\r\n        \"\"\"Return the index'th estimator in the ensemble.\"\"\"\r\n        return self.estimators_[index]\r\n\r\n    def __iter__(self):\r\n        \"\"\"Return iterator over estimators in the ensemble.\"\"\"\r\n        return iter(self.estimators_)\r\n\r\n\r\ndef _partition_estimators(n_estimators, n_jobs):\r\n    \"\"\"Private function used to partition estimators between jobs.\"\"\"\r\n    # Compute the number of jobs\r\n    n_jobs = min(effective_n_jobs(n_jobs), n_estimators)\r\n\r\n    # Partition estimators between jobs\r\n    n_estimators_per_job = np.full(n_jobs, n_estimators // n_jobs,\r\n                                   dtype=int)\r\n    n_estimators_per_job[: n_estimators % n_jobs] += 1\r\n    starts = np.cumsum(n_estimators_per_job)\r\n\r\n    return n_jobs, n_estimators_per_job.tolist(), [0] + starts.tolist()\r\n"
  },
  {
    "path": "econml/_ensemble/_utilities.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numbers\r\nimport numpy as np\r\n\r\n\r\ndef _get_n_samples_subsample(n_samples, max_samples):\r\n    \"\"\"\r\n    Get the number of samples in a sub-sample without replacement.\r\n\r\n    Parameters\r\n    ----------\r\n    n_samples : int\r\n        Number of samples in the dataset.\r\n    max_samples : int or float\r\n        The maximum number of samples to draw from the total available:\r\n            - if float, this indicates a fraction of the total and should be\r\n              the interval `(0, 1)`;\r\n            - if int, this indicates the exact number of samples;\r\n            - if None, this indicates the total number of samples.\r\n\r\n    Returns\r\n    -------\r\n    n_samples_subsample : int\r\n        The total number of samples to draw for the subsample.\r\n    \"\"\"\r\n    if max_samples is None:\r\n        return n_samples\r\n\r\n    if isinstance(max_samples, numbers.Integral):\r\n        if not (1 <= max_samples <= n_samples):\r\n            msg = \"`max_samples` must be in range 1 to {} but got value {}\"\r\n            raise ValueError(msg.format(n_samples, max_samples))\r\n        return max_samples\r\n\r\n    if isinstance(max_samples, numbers.Real):\r\n        if not (0 < max_samples <= 1):\r\n            msg = \"`max_samples` must be in range (0, 1) but got value {}\"\r\n            raise ValueError(msg.format(max_samples))\r\n        return int(np.floor(n_samples * max_samples))\r\n\r\n    msg = \"`max_samples` should be int or float, but got type '{}'\"\r\n    raise TypeError(msg.format(type(max_samples)))\r\n\r\n\r\ndef _accumulate_prediction(predict, X, out, lock, *args, **kwargs):\r\n    \"\"\"\r\n    Accumulate predictions.\r\n\r\n    Utility function for joblib's Parallel.\r\n    It can't go locally in ForestClassifier or ForestRegressor, because joblib\r\n    complains that it cannot pickle it when placed there.\r\n    \"\"\"\r\n    prediction = predict(X, *args, check_input=False, **kwargs)\r\n    with lock:\r\n        if len(out) == 1:\r\n            out[0] += prediction\r\n        else:\r\n            for i in range(len(out)):\r\n                out[i] += prediction[i]\r\n\r\n\r\ndef _accumulate_prediction_var(predict, X, out, lock, *args, **kwargs):\r\n    \"\"\"\r\n    Accumulate prediction variance.\r\n\r\n    Utility function for joblib's Parallel.\r\n    It can't go locally in ForestClassifier or ForestRegressor, because joblib\r\n    complains that it cannot pickle it when placed there.\r\n    Accumulates the mean covariance of a tree prediction. predict is assumed to\r\n    return an array of (n_samples, d) or a tuple of arrays. This method accumulates in the placeholder\r\n    out[0] the (n_samples, d, d) covariance of the columns of the prediction across\r\n    the trees and for each sample (or a tuple of covariances to be stored in each element\r\n    of the list out).\r\n    \"\"\"\r\n    prediction = predict(X, *args, check_input=False, **kwargs)\r\n    with lock:\r\n        if len(out) == 1:\r\n            out[0] += np.einsum('ijk,ikm->ijm',\r\n                                prediction.reshape(prediction.shape + (1,)),\r\n                                prediction.reshape((-1, 1) + prediction.shape[1:]))\r\n        else:\r\n            for i in range(len(out)):\r\n                pred_i = prediction[i]\r\n                out[i] += np.einsum('ijk,ikm->ijm',\r\n                                    pred_i.reshape(pred_i.shape + (1,)),\r\n                                    pred_i.reshape((-1, 1) + pred_i.shape[1:]))\r\n\r\n\r\ndef _accumulate_prediction_and_var(predict, X, out, out_var, lock, *args, **kwargs):\r\n    \"\"\"\r\n    Accumulate prediction and its variance.\r\n\r\n    Utility function for joblib's Parallel.\r\n    It can't go locally in ForestClassifier or ForestRegressor, because joblib\r\n    complains that it cannot pickle it when placed there.\r\n    Combines `_accumulate_prediction` and `_accumulate_prediction_var` in a single\r\n    parallel run, so that out will contain the mean of the predictions across trees\r\n    and out_var the covariance.\r\n    \"\"\"\r\n    prediction = predict(X, *args, check_input=False, **kwargs)\r\n    with lock:\r\n        if len(out) == 1:\r\n            out[0] += prediction\r\n            out_var[0] += np.einsum('ijk,ikm->ijm',\r\n                                    prediction.reshape(prediction.shape + (1,)),\r\n                                    prediction.reshape((-1, 1) + prediction.shape[1:]))\r\n        else:\r\n            for i in range(len(out)):\r\n                pred_i = prediction[i]\r\n                out[i] += prediction\r\n                out_var[i] += np.einsum('ijk,ikm->ijm',\r\n                                        pred_i.reshape(pred_i.shape + (1,)),\r\n                                        pred_i.reshape((-1, 1) + pred_i.shape[1:]))\r\n\r\n\r\ndef _accumulate_oob_preds(tree, X, subsample_inds, alpha_hat, jac_hat, counts, lock):\r\n    mask = np.ones(X.shape[0], dtype=bool)\r\n    mask[subsample_inds] = False\r\n    alpha, jac = tree.predict_alpha_and_jac(X[mask])\r\n    with lock:\r\n        alpha_hat[mask] += alpha\r\n        jac_hat[mask] += jac\r\n        counts[mask] += 1\r\n"
  },
  {
    "path": "econml/_ortho_learner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"\nGeneric implementation of Orthogonal Machine Learning.\n\nOrthogonal Machine Learning is a general approach to estimating causal models\nby formulating them as minimizers of some loss function that depends on\nauxiliary regression models that also need to be estimated from data. The\nclass in this module implements the general logic in a very versatile way\nso that various child classes can simply instantiate the appropriate models\nand save a lot of code repetition.\n\nReferences\n----------\nDylan Foster, Vasilis Syrgkanis (2019). Orthogonal Statistical Learning.\n    ACM Conference on Learning Theory. https://arxiv.org/abs/1901.09036\n\nXinkun Nie, Stefan Wager (2017). Quasi-Oracle Estimation of Heterogeneous Treatment Effects.\n    https://arxiv.org/abs/1712.04912\n\nChernozhukov et al. (2017). Double/debiased machine learning for treatment and structural parameters.\n    The Econometrics Journal. https://arxiv.org/abs/1608.00060\n\n\"\"\"\n\nfrom collections import namedtuple\nfrom abc import abstractmethod\nfrom typing import List, Union\n\nimport numpy as np\nfrom sklearn.base import clone\nfrom sklearn.model_selection import KFold, StratifiedKFold, GroupKFold, StratifiedGroupKFold, check_cv\nfrom sklearn.preprocessing import (LabelEncoder)\nfrom sklearn.utils import check_random_state\n\nfrom ._cate_estimator import (BaseCateEstimator, LinearCateEstimator,\n                              TreatmentExpansionMixin)\nfrom .inference import BootstrapInference\nfrom .utilities import (check_input_arrays,\n                        filter_none_kwargs, one_hot_encoder, strata_from_discrete_arrays,\n                        jacify_featurizer, reshape, shape)\nfrom .sklearn_extensions.model_selection import ModelSelector\n\ntry:\n    import ray\nexcept ImportError as exn:\n    from .utilities import MissingModule\n    ray = MissingModule(\n        \"Ray is not a dependency of the base econml package; install econml[ray] or econml[all] to require it, \"\n        \"or install ray separately, to use functionality that depends on ray\", exn)\n\n\ndef _fit_fold(model, train_idxs, test_idxs, calculate_scores, args, kwargs):\n    \"\"\"\n    Fits a single model on the training data and calculates the nuisance value on the test data.\n\n    Parameters\n    ----------\n    model:  object\n        An object that supports fit and predict. Fit must accept all the args\n        and the keyword arguments kwargs. Similarly predict must all accept\n        all the args as arguments and kwards as keyword arguments. The fit\n        function estimates a model of the nuisance function, based on the input\n        data to fit. Predict evaluates the fitted nuisance function on the input\n        data to predict.\n\n    train_idxs (array-like): Indices for the training data.\n    test_idxs (array-like): Indices for the test data.\n    calculate_scores (bool): Whether to calculate scores after fitting.\n\n    args : a sequence of (numpy matrices or None)\n        Each matrix is a data variable whose first index corresponds to a sample\n    kwargs : a sequence of key-value args, with values being (numpy matrices or None)\n        Each keyword argument is of the form Var=x, with x a numpy array. Each\n        of these arrays are data variables. The model fit and predict will be\n        called with signature: `model.fit(*args, **kwargs)` and\n        `model.predict(*args, **kwargs)`. Key-value arguments that have value\n        None, are ommitted from the two calls. So all the args and the non None\n        kwargs variables must be part of the models signature.\n\n    Returns\n    -------\n    -Tuple containing:\n    nuisance_temp (tuple): Predictions or values of interest from the model.\n    fitted_model: The fitted model after training.\n    score_temp (tuple or None): Scores calculated after fitting if `calculate_scores` is True, otherwise None.\n    \"\"\"\n    model = clone(model, safe=False)\n\n    args_train = tuple(var[train_idxs] if var is not None else None for var in args)\n    args_test = tuple(var[test_idxs] if var is not None else None for var in args)\n\n    kwargs_train = {key: var[train_idxs] for key, var in kwargs.items()}\n    kwargs_test = {key: var[test_idxs] for key, var in kwargs.items()}\n\n    model.train(False, None, *args_train, **kwargs_train)\n    nuisance_temp = model.predict(*args_test, **kwargs_test)\n\n    if not isinstance(nuisance_temp, tuple):\n        nuisance_temp = (nuisance_temp,)\n\n    if calculate_scores:\n        score_temp = model.score(*args_test, **kwargs_test)\n\n        if not isinstance(score_temp, tuple):\n            score_temp = (score_temp,)\n\n    return nuisance_temp, model, (score_temp if calculate_scores else None)\n\n\ndef _crossfit(models: Union[ModelSelector, List[ModelSelector]], folds, use_ray, ray_remote_fun_option,\n              *args, **kwargs):\n    \"\"\"\n    General crossfit based calculation of nuisance parameters.\n\n    Parameters\n    ----------\n    models : ModelSelector or List[ModelSelector]\n        One or more objects that have train and predict methods.\n        The train method must take an 'is_selecting' argument first, a set of folds second\n        (which will be None when not selecting) and then accept positional arguments `args`\n        and keyword arguments `kwargs`; the predict method just takes those `args` and `kwargs`.\n        The train method selects or estimates a model of the nuisance function, based on the input\n        data to fit. Predict evaluates the fitted nuisance function on the input\n        data to predict.\n    folds : list of tuple or None\n        The crossfitting fold structure. Every entry in the list is a tuple whose\n        first element are the training indices of the args and kwargs data and\n        the second entry are the test indices. If the union of the test indices\n        is not the full set of all indices, then the remaining nuisance parameters\n        for the missing indices have value NaN.  If folds is None, then cross fitting\n        is not performed; all indices are used for both model fitting and prediction\n    use_ray: bool, default False\n        Flag to indicate whether to use ray to parallelize the cross-fitting step.\n    ray_remote_fun_option: dict, default None\n        Options to pass to the ray.remote decorator.\n    args : a sequence of (numpy matrices or None)\n        Each matrix is a data variable whose first index corresponds to a sample\n    kwargs : a sequence of key-value args, with values being (numpy matrices or None)\n        Each keyword argument is of the form Var=x, with x a numpy array. Each\n        of these arrays are data variables. The model fit and predict will be\n        called with signature: `model.fit(*args, **kwargs)` and\n        `model.predict(*args, **kwargs)`. Key-value arguments that have value\n        None, are ommitted from the two calls. So all the args and the non None\n        kwargs variables must be part of the models signature.\n\n    Returns\n    -------\n    nuisances : tuple of array_like\n        Each entry in the tuple is a nuisance parameter matrix. Each row i-th in the\n        matrix corresponds to the value of the nuisance parameter for the i-th input\n        sample.\n    model_list : list of object of same type as input model\n        The cloned and fitted models for each fold. Can be used for inspection of the\n        variability of the fitted models across folds.\n    fitted_inds : np array1d\n        The indices of the arrays for which the nuisance value was calculated. This\n        corresponds to the union of the indices of the test part of each fold in\n        the input fold list.\n    scores : tuple of list of float or None\n        The out-of-sample model scores for each nuisance model\n\n    Examples\n    --------\n\n    .. testcode::\n\n        import numpy as np\n        from sklearn.model_selection import KFold\n        from sklearn.linear_model import Lasso\n        from econml._ortho_learner import _crossfit\n        class Wrapper:\n            def __init__(self, model):\n                self._model = model\n            def train(self, is_selecting, folds, X, y, W=None):\n                self._model.fit(X, y)\n                return self\n            def predict(self, X, y, W=None):\n                return self._model.predict(X)\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = list(KFold(2).split(X, y))\n        model = Lasso(alpha=0.01)\n        use_ray = False\n        ray_remote_fun_option = {}\n        nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model),folds, use_ray, ray_remote_fun_option,\n         X, y,W=y, Z=None)\n\n    >>> nuisance\n    (array([-1.105728... , -1.537566..., -2.451827... , ...,  1.106287...,\n           -1.829662..., -1.782273...], shape=(5000,)),)\n    >>> model_list\n    [<Wrapper object at 0x...>, <Wrapper object at 0x...>]\n    >>> fitted_inds\n    array([   0,    1,    2, ..., 4997, 4998, 4999], shape=(5000,))\n\n    \"\"\"\n    model_list = []\n\n    kwargs = filter_none_kwargs(**kwargs)\n\n    n = (args[0] if args else kwargs.items()[0][1]).shape[0]\n\n    # fully materialize folds so that they can be reused across models\n    # and precompute fitted indices so that we fail fast if there's an issue with them\n    if folds is not None:\n        folds = list(folds)\n        fitted_inds = []\n        for idx, (train_idxs, test_idxs) in enumerate(folds):\n            if len(np.intersect1d(train_idxs, test_idxs)) > 0:\n                raise AttributeError(f\"Invalid crossfitting fold structure. Train and test indices of fold {idx+1} \"\n                                     f\"are not disjoint: {train_idxs}, {test_idxs}\")\n            common_idxs = np.intersect1d(fitted_inds, test_idxs)\n            if len(common_idxs) > 0:\n                raise AttributeError(f\"Invalid crossfitting fold structure. The indexes {common_idxs} in fold {idx+1} \"\n                                     f\"have appeared in previous folds\")\n            fitted_inds = np.concatenate((fitted_inds, test_idxs))\n        fitted_inds = np.sort(fitted_inds.astype(int))\n    else:\n        fold_vals = [(np.arange(n), np.arange(n))]\n        fitted_inds = np.arange(n)\n\n    accumulated_nuisances = ()\n    # NOTE: if any model is missing scores we will just return None even if another model\n    #       has scores. this is because we don't know how many scores are missing\n    #       for the models that are missing them, so we don't know how to pad the array\n    calculate_scores = True\n    accumulated_scores = ()\n\n    # for convenience we allos a single model to be passed in lieu of a singleton list\n    # in that case, we will also unwrap the model output\n    unwrap_model_output = False\n    if not isinstance(models, list):\n        unwrap_model_output = True\n        models = [models]\n\n    for model in models:\n        # when there is more than one model, nuisances from previous models\n        # come first as positional arguments\n        accumulated_args = accumulated_nuisances + args\n        model.train(True, fold_vals if folds is None else folds, *accumulated_args, **kwargs)\n\n        calculate_scores &= hasattr(model, 'score')\n\n        model_list.append([])  # add a new empty list of clones for this model\n\n        if folds is None:  # skip crossfitting\n            model_list[-1].append(clone(model, safe=False))\n            model_list[-1][0].train(False, None, *accumulated_args, **kwargs)  # fit the selected model\n            nuisances = model_list[-1][0].predict(*accumulated_args, **kwargs)\n            if not isinstance(nuisances, tuple):\n                nuisances = (nuisances,)\n\n            if calculate_scores:\n                scores = model_list[-1][0].score(*accumulated_args, **kwargs)\n                if not isinstance(scores, tuple):\n                    scores = (scores,)\n                # scores entries should be lists of scores, so make each entry a singleton list\n                scores = tuple([s] for s in scores)\n\n        else:\n            fold_refs = []\n            if use_ray:\n                # Adding the kwargs to ray object store to be used by remote functions\n                # for each fold to avoid IO overhead\n                ray_args = ray.put(kwargs)\n                for idx, (train_idxs, test_idxs) in enumerate(folds):\n                    fold_refs.append(\n                        ray.remote(_fit_fold).options(**ray_remote_fun_option).remote(model, train_idxs, test_idxs,\n                                                                                      calculate_scores,\n                                                                                      accumulated_args, ray_args))\n            for idx, (train_idxs, test_idxs) in enumerate(folds):\n                if use_ray:\n                    nuisance_temp, model_out, score_temp = ray.get(fold_refs[idx])\n                else:\n                    nuisance_temp, model_out, score_temp = _fit_fold(model, train_idxs, test_idxs,\n                                                                     calculate_scores, accumulated_args, kwargs)\n\n                if idx == 0:\n                    nuisances = tuple([np.full((n,) + nuis.shape[1:], np.nan)\n                                      for nuis in nuisance_temp])\n\n                for it, nuis in enumerate(nuisance_temp):\n                    nuisances[it][test_idxs] = nuis\n\n                if calculate_scores:\n                    if idx == 0:\n                        scores = tuple([] for _ in score_temp)\n                    for it, score in enumerate(score_temp):\n                        scores[it].append(score)\n\n                model_list[-1].append(model_out)\n\n        accumulated_nuisances += nuisances\n        if calculate_scores:\n            accumulated_scores += scores\n        else:\n            accumulated_scores = None\n\n    if unwrap_model_output:\n        model_list = model_list[0]\n    return accumulated_nuisances, model_list, fitted_inds, accumulated_scores\n\n\nCachedValues = namedtuple('CachedValues', ['nuisances',\n                                           'Y', 'T', 'X', 'W', 'Z', 'sample_weight', 'freq_weight',\n                                           'sample_var', 'groups'])\n\n\nclass _OrthoLearner(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"\n    Base class for all orthogonal learners.\n\n    This class is a parent class to any method that has\n    the following architecture:\n\n    1.  The CATE :math:`\\\\theta(X)` is the minimizer of some expected loss function\n\n        .. math ::\n            \\\\mathbb{E}[\\\\ell(V; \\\\theta(X), h(V))]\n\n        where :math:`V` are all the random variables and h is a vector of nuisance functions. Alternatively,\n        the class would also work if :math:`\\\\theta(X)` is the solution to a set of moment equations that\n        also depend on nuisance functions :math:`h`.\n\n    2.  To estimate :math:`\\\\theta(X)` we first fit the h functions and calculate :math:`h(V_i)` for each sample\n        :math:`i` in a crossfit manner:\n\n            - Let (F1_train, F1_test), ..., (Fk_train, Fk_test) be any KFold partition\n              of the data, where Ft_train, Ft_test are subsets of indices of the input samples and such that\n              F1_train is disjoint from F1_test. The sets F1_test, ..., Fk_test form an incomplete partition\n              of all the input indices, i.e. they are be disjoint and their union could potentially be a subset of\n              all input indices. For instance, in a time series split F0_train could be a prefix of the data and\n              F0_test the suffix. Typically, these folds will be created\n              by a KFold split, i.e. if S1, ..., Sk is any partition of the data, then Ft_train is the set of\n              all indices except St and Ft_test = St. If the union of the Ft_test is not all the data, then only the\n              subset of the data in the union of the Ft_test sets will be used in the final stage.\n\n            - Then for each t in [1, ..., k]\n\n                - Estimate a model :math:`\\\\hat{h}_t` for :math:`h` using Ft_train\n                - Evaluate the learned :math:`\\\\hat{h}_t` model on the data in Ft_test and use that value\n                  as the nuisance value/vector :math:`\\\\hat{U}_i=\\\\hat{h}(V_i)` for the indices i in Ft_test\n\n    3.  Estimate the model for :math:`\\\\theta(X)` by minimizing the empirical (regularized) plugin loss on\n        the subset of indices for which we have a nuisance value, i.e. the union of {F1_test, ..., Fk_test}:\n\n        .. math ::\n            \\\\mathbb{E}_n[\\\\ell(V; \\\\theta(X), \\\\hat{h}(V))]\\\n            = \\\\frac{1}{n} \\\\sum_{i=1}^n \\\\ell(V_i; \\\\theta(X_i), \\\\hat{U}_i)\n\n        The method is a bit more general in that the final step does not need to be a loss minimization step.\n        The class takes as input a model for fitting an estimate of the nuisance h given a set of samples\n        and predicting the value of the learned nuisance model on any other set of samples. It also\n        takes as input a model for the final estimation, that takes as input the data and their associated\n        estimated nuisance values from the first stage and fits a model for the CATE :math:`\\\\theta(X)`. Then\n        at predict time, the final model given any set of samples of the X variable, returns the estimated\n        :math:`\\\\theta(X)`.\n\n    The method essentially implements all the crossfit and plugin logic, so that any child classes need\n    to only implement the appropriate `model_nuisance` and `model_final` and essentially nothing more.\n    It also implements the basic preprocessing logic behind the expansion of discrete treatments into\n    one-hot encodings.\n\n    Parameters\n    ----------\n    discrete_outcome: bool\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer` or None\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    discrete_instrument: bool\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[Z, W, X], T)` to generate the splits. If all\n        Z, W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    random_state: int, :class:`~numpy.random.mtrand.RandomState` instance or None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply nuisance models that can handle\n        missing values.\n\n    use_ray: bool, default False\n        Whether to use ray to parallelize the cross-fitting step.\n\n    ray_remote_func_options: dict, default None\n        Options to pass to the ray.remote decorator.\n\n    Examples\n    --------\n    The example code below implements a very simple version of the double machine learning\n    method on top of the :class:`._OrthoLearner` class, for expository purposes.\n    For a more elaborate implementation of a Double Machine Learning child class of the class\n    :class:`._OrthoLearner` check out :class:`.DML`\n    and its child classes:\n\n    .. testcode::\n\n        import numpy as np\n        from sklearn.linear_model import LinearRegression\n        from econml._ortho_learner import _OrthoLearner\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, T)\n                self._model_y.fit(W, Y)\n                return self\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict(W)\n        class ModelFinal:\n            def __init__(self):\n                return\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n            def predict(self, X=None):\n                return self.model.coef_[0]\n            def score(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                return np.mean((Y_res - self.model.predict(T_res.reshape(-1, 1)))**2)\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LinearRegression(), LinearRegression())\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n        np.random.seed(123)\n        X = np.random.normal(size=(100, 3))\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, 0.1, size=(100,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None,\n                           discrete_instrument=False, categories='auto', random_state=None)\n        est.fit(y, X[:, 0], W=X[:, 1:])\n\n    >>> est.score_\n    np.float64(0.00756830...)\n    >>> est.const_marginal_effect()\n    np.float64(1.02364992...)\n    >>> est.effect()\n    array([1.023649...])\n    >>> est.effect(T0=0, T1=10)\n    array([10.236499...])\n    >>> est.score(y, X[:, 0], W=X[:, 1:])\n    np.float64(0.00727995...)\n    >>> est.ortho_learner_model_final_.model\n    LinearRegression(fit_intercept=False)\n    >>> est.ortho_learner_model_final_.model.coef_\n    array([1.023649...])\n\n    The following example shows how to do double machine learning with discrete treatments, using\n    the _OrthoLearner:\n\n    .. testcode::\n\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, np.matmul(T, np.arange(1, T.shape[1]+1)))\n                self._model_y.fit(W, Y)\n                return self\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict_proba(W)[:, 1:]\n        class ModelFinal:\n            def __init__(self):\n                return\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n            def predict(self):\n                # theta needs to be of dimension (1, d_t) if T is (n, d_t)\n                return np.array([[self.model.coef_[0]]])\n            def score(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                return np.mean((Y_res - self.model.predict(T_res.reshape(-1, 1)))**2)\n        from sklearn.linear_model import LogisticRegression\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LogisticRegression(solver='lbfgs'), LinearRegression())\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n        np.random.seed(123)\n        W = np.random.normal(size=(100, 3))\n        import scipy.special\n        T = np.random.binomial(1, scipy.special.expit(W[:, 0]))\n        y = T + W[:, 0] + np.random.normal(0, 0.01, size=(100,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=True, discrete_instrument=False,\n                           treatment_featurizer=None, categories='auto', random_state=None)\n        est.fit(y, T, W=W)\n\n    >>> est.score_\n    np.float64(0.00672978...)\n    >>> est.const_marginal_effect()\n    array([[1.008402...]])\n    >>> est.effect()\n    array([1.008402...])\n    >>> est.score(y, T, W=W)\n    np.float64(0.00310431...)\n    >>> est.ortho_learner_model_final_.model.coef_[0]\n    np.float64(1.00840240...)\n\n    Attributes\n    ----------\n    models_nuisance_: nested list of objects of type(model_nuisance)\n        A nested list of instances of the model_nuisance object. The number of sublist equals to the\n        number of monte carlo iterations. Each element in the sublist corresponds to a crossfitting\n        fold and is the model instance that was fitted for that training fold.\n    ortho_learner_model_final_: object of type(model_final)\n        An instance of the model_final object that was fitted after calling fit.\n    score_ : float or array of floats\n        If the model_final has a score method, then `score_` contains the outcome of the final model\n        score when evaluated on the fitted nuisances from the first stage. Represents goodness of fit,\n        of the final CATE model.\n    nuisance_scores_ : tuple of list of list of float or None\n        The out-of-sample scores from training each nuisance model\n    \"\"\"\n\n    def __init__(self, *,\n                 discrete_outcome,\n                 discrete_treatment,\n                 treatment_featurizer,\n                 discrete_instrument,\n                 categories,\n                 cv,\n                 random_state,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.cv = cv\n        self.discrete_outcome = discrete_outcome\n        self.discrete_treatment = discrete_treatment\n        self.treatment_featurizer = treatment_featurizer\n        self.discrete_instrument = discrete_instrument\n        self.random_state = random_state\n        self.categories = categories\n        self.mc_iters = mc_iters\n        self.mc_agg = mc_agg\n        self.allow_missing = allow_missing\n        self.use_ray = use_ray\n        self.ray_remote_func_options = ray_remote_func_options\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['X', 'W'] if self.allow_missing else []\n\n    @abstractmethod\n    def _gen_ortho_learner_model_nuisance(self):\n        \"\"\"Must return a fresh instance of a nuisance model selector.\n\n        Returns\n        -------\n        model_nuisance: list of selector\n            The selector(s) for fitting the nuisance function. The returned estimators must implement\n            `train` and `predict` methods that both have signatures::\n\n                model_nuisance.train(is_selecting, folds, Y, T, X=X, W=W, Z=Z,\n                                sample_weight=sample_weight)\n                model_nuisance.predict(Y, T, X=X, W=W, Z=Z,\n                                    sample_weight=sample_weight)\n\n            In fact we allow for the model method signatures to skip any of the keyword arguments\n            as long as the class is always called with the omitted keyword argument set to ``None``.\n            This can be enforced in child classes by re-implementing the fit and the various effect\n            methods. If ``discrete_treatment=True``, then the input ``T`` to both above calls will be the\n            one-hot encoding of the original input ``T``, excluding the first column of the one-hot.\n\n            If the estimator also provides a score method with the same arguments as fit, it will be used to\n            calculate scores during training.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abstractmethod\n    def _gen_ortho_learner_model_final(self):\n        \"\"\"Must return a fresh instance of a final model.\n\n        Returns\n        -------\n        model_final: estimator for fitting the response residuals to the features and treatment residuals\n            Must implement `fit` and `predict` methods that must have signatures::\n\n                model_final.fit(Y, T, X=X, W=W, Z=Z, nuisances=nuisances,\n                                sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var)\n                model_final.predict(X=X)\n\n            Predict, should just take the features X and return the constant marginal effect. In fact we allow\n            for the model method signatures to skip any of the keyword arguments as long as the class is always\n            called with the omitted keyword argument set to ``None``. Moreover, the predict function of the final\n            model can take no argument if the class is always called with ``X=None``. This can be enforced in child\n            classes by re-implementing the fit and the various effect methods. If ``discrete_treatment=True``,\n            then the input ``T`` to both above calls will be the one-hot encoding of the original input ``T``,\n            excluding the first column of the one-hot.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def _check_input_dims(self, Y, T, X=None, W=None, Z=None, *other_arrays):\n        assert shape(Y)[0] == shape(T)[0], \"Dimension mis-match!\"\n        for arr in [X, W, Z, *other_arrays]:\n            assert (arr is None) or (arr.shape[0] == Y.shape[0]), \"Dimension mismatch\"\n        self._d_x = X.shape[1:] if X is not None else None\n        self._d_w = W.shape[1:] if W is not None else None\n        self._d_z = Z.shape[1:] if Z is not None else None\n\n    def _check_fitted_dims(self, X):\n        if X is None:\n            assert self._d_x is None, \"X was not None when fitting, so can't be none for score or effect\"\n        else:\n            assert self._d_x == X.shape[1:], \"Dimension mis-match of X with fitted X\"\n\n    def _check_fitted_dims_w_z(self, W, Z):\n        if W is None:\n            assert self._d_w is None, \"W was not None when fitting, so can't be none for score\"\n        else:\n            assert self._d_w == W.shape[1:], \"Dimension mis-match of W with fitted W\"\n\n        if Z is None:\n            assert self._d_z is None, \"Z was not None when fitting, so can't be none for score\"\n        else:\n            assert self._d_z == Z.shape[1:], \"Dimension mis-match of Z with fitted Z\"\n\n    def _subinds_check_none(self, var, inds):\n        return var[inds] if var is not None else None\n\n    def _strata(self, Y, T, X=None, W=None, Z=None,\n                sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n                cache_values=False, only_final=False, check_input=True):\n        arrs = []\n        if self.discrete_outcome:\n            arrs.append(Y)\n        if self.discrete_treatment:\n            arrs.append(T)\n        if self.discrete_instrument:\n            arrs.append(Z)\n\n        return strata_from_discrete_arrays(arrs)\n\n    def _prefit(self, Y, T, *args, only_final=False, **kwargs):\n\n        # generate an instance of the final model\n        self._ortho_learner_model_final = self._gen_ortho_learner_model_final()\n        if not only_final:\n            # generate an instance of the nuisance model\n            self._ortho_learner_model_nuisance = self._gen_ortho_learner_model_nuisance()\n\n        super()._prefit(Y, T, *args, **kwargs)\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X=None, W=None, Z=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=None, only_final=False, check_input=True):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X: (n, d_x) matrix, optional\n            Features for each sample\n        W: (n, d_w) matrix, optional\n            Controls for each sample\n        Z: (n, d_z) matrix, optional\n            Instruments for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n, ) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the cv argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache the inputs and computed nuisances, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`).\n        only_final: bool, defaul False\n            Whether to fit the nuisance models or use the existing cached values\n            Note. This parameter is only used internally by the `refit` method and should not be exposed\n            publicly by overwrites of the `fit` method in public classes.\n        check_input: bool, default True\n            Whether to check if the input is valid\n            Note. This parameter is only used internally by the `refit` method and should not be exposed\n            publicly by overwrites of the `fit` method in public classes.\n\n        Returns\n        -------\n        self : object\n        \"\"\"\n        self._random_state = check_random_state(self.random_state)\n        assert (freq_weight is None) == (\n            sample_var is None), \"Sample variances and frequency weights must be provided together!\"\n        assert not (self.discrete_treatment and self.treatment_featurizer), \"Treatment featurization \" \\\n            \"is not supported when treatment is discrete\"\n        if check_input:\n            Y, T, Z, sample_weight, freq_weight, sample_var, groups = check_input_arrays(\n                Y, T, Z, sample_weight, freq_weight, sample_var, groups)\n            X, = check_input_arrays(\n                X, force_all_finite='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n            W, = check_input_arrays(\n                W, force_all_finite='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n            self._check_input_dims(Y, T, X, W, Z, sample_weight, freq_weight, sample_var, groups)\n\n        if not only_final:\n\n            if self.discrete_outcome:\n                self.outcome_transformer = LabelEncoder()\n                self.outcome_transformer.fit(Y)\n                if Y.shape[1:] and Y.shape[1] > 1:\n                    raise ValueError(\n                        f\"Only one outcome variable is supported when discrete_outcome=True. Got Y of shape {Y.shape}\")\n                if len(self.outcome_transformer.classes_) > 2:\n                    raise AttributeError(\n                        f\"({len(self.outcome_transformer.classes_)} outcome classes detected. \"\n                        \"Currently, only 2 outcome classes are allowed when discrete_outcome=True. \"\n                        f\"Classes provided include {self.outcome_transformer.classes_[:5]}\")\n            else:\n                self.outcome_transformer = None\n\n            if self.discrete_treatment:\n                categories = self.categories\n                if categories != 'auto':\n                    categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n                self.transformer = one_hot_encoder(categories=categories, drop='first')\n                self.transformer.fit(reshape(T, (-1, 1)))\n                self._d_t = (len(self.transformer.categories_[0]) - 1,)\n            elif self.treatment_featurizer:\n                self._original_treatment_featurizer = clone(self.treatment_featurizer, safe=False)\n                self.transformer = jacify_featurizer(self.treatment_featurizer)\n                output_T = self.transformer.fit_transform(T)\n                self._d_t = np.shape(output_T)[1:]\n            else:\n                self.transformer = None\n\n            if self.discrete_instrument:\n                self.z_transformer = one_hot_encoder(categories='auto', drop='first')\n                self.z_transformer.fit(reshape(Z, (-1, 1)))\n            else:\n                self.z_transformer = None\n\n            all_nuisances = []\n            fitted_inds = None\n            if sample_weight is None:\n                if freq_weight is not None:\n                    sample_weight_nuisances = freq_weight\n                else:\n                    sample_weight_nuisances = None\n            else:\n                if freq_weight is not None:\n                    sample_weight_nuisances = freq_weight * sample_weight\n                else:\n                    sample_weight_nuisances = sample_weight\n\n            self._models_nuisance = []\n\n            if self.use_ray:\n                if not ray.is_initialized():\n                    ray.init()\n                self.ray_remote_func_options = self.ray_remote_func_options or {}\n\n                # Define Ray remote function (Ray remote wrapper of the _fit_nuisances function)\n                def _fit_nuisances(Y, T, X, W, Z, sample_weight, groups):\n                    return self._fit_nuisances(Y, T, X, W, Z, sample_weight=sample_weight, groups=groups)\n\n                # Create Ray remote jobs for parallel processing\n                self.nuisances_ref = [ray.remote(_fit_nuisances).options(**self.ray_remote_func_options).remote(\n                    Y, T, X, W, Z, sample_weight_nuisances, groups) for _ in range(self.mc_iters or 1)]\n\n            for idx in range(self.mc_iters or 1):\n                if self.use_ray:\n                    nuisances, fitted_models, new_inds, scores = ray.get(self.nuisances_ref[idx])\n                else:\n                    nuisances, fitted_models, new_inds, scores = self._fit_nuisances(\n                        Y, T, X, W, Z, sample_weight=sample_weight_nuisances, groups=groups)\n                all_nuisances.append(nuisances)\n                self._models_nuisance.append(fitted_models)\n                if scores is None:\n                    self.nuisance_scores_ = None\n                else:\n                    if idx == 0:\n                        self.nuisance_scores_ = tuple([] for _ in scores)\n                    for ind, score in enumerate(scores):\n                        self.nuisance_scores_[ind].append(score)\n                if fitted_inds is None:\n                    fitted_inds = new_inds\n                elif not np.array_equal(fitted_inds, new_inds):\n                    raise AttributeError(\"Different indices were fit by different folds, so they cannot be aggregated\")\n\n            if self.mc_iters is not None:\n                if self.mc_agg == 'mean':\n                    nuisances = tuple(np.mean(nuisance_mc_variants, axis=0)\n                                      for nuisance_mc_variants in zip(*all_nuisances))\n                elif self.mc_agg == 'median':\n                    nuisances = tuple(np.median(nuisance_mc_variants, axis=0)\n                                      for nuisance_mc_variants in zip(*all_nuisances))\n                else:\n                    raise ValueError(\n                        f\"Parameter `mc_agg` must be one of {{'mean', 'median'}}. Got {self.mc_agg}\")\n\n            Y, T, X, W, Z, sample_weight, freq_weight, sample_var = (self._subinds_check_none(arr, fitted_inds)\n                                                                     for arr in (Y, T, X, W, Z, sample_weight,\n                                                                                 freq_weight, sample_var))\n            nuisances = tuple([self._subinds_check_none(nuis, fitted_inds) for nuis in nuisances])\n            self._cached_values = CachedValues(nuisances=nuisances,\n                                               Y=Y, T=T, X=X, W=W, Z=Z,\n                                               sample_weight=sample_weight,\n                                               freq_weight=freq_weight,\n                                               sample_var=sample_var,\n                                               groups=groups) if cache_values else None\n        else:\n            nuisances = self._cached_values.nuisances\n            # _d_t is altered by fit nuisances to what prefit does. So we need to perform the same\n            # alteration even when we only want to fit_final.\n            if self.transformer is not None:\n                if self.discrete_treatment:\n                    self._d_t = (len(self.transformer.categories_[0]) - 1,)\n                else:\n                    output_T = self.transformer.fit_transform(T)\n                    self._d_t = np.shape(output_T)[1:]\n\n        final_T = T\n        if self.transformer:\n            if (self.discrete_treatment):\n                final_T = self.transformer.transform(final_T.reshape(-1, 1))\n            else:  # treatment featurizer case\n                final_T = output_T\n\n        self._fit_final(Y=Y,\n                        T=final_T,\n                        X=X, W=W, Z=Z,\n                        nuisances=nuisances,\n                        sample_weight=sample_weight,\n                        freq_weight=freq_weight,\n                        sample_var=sample_var,\n                        groups=groups)\n\n        return self\n\n    @property\n    def _illegal_refit_inference_methods(self):\n        return (BootstrapInference,)\n\n    def refit_final(self, inference=None):\n        \"\"\"\n        Estimate the counterfactual model using a new final model specification but with cached first stage results.\n\n        In order for this to succeed, ``fit`` must have been called with ``cache_values=True``. This call\n        will only refit the final model. This call we use the current setting of any parameters that change the\n        final stage estimation. If any parameters that change how the first stage nuisance estimates\n        has also been changed then it will have no effect. You need to call fit again to change the\n        first stage estimation results.\n\n        Parameters\n        ----------\n        inference : inference method, optional\n            The string or object that represents the inference method\n\n        Returns\n        -------\n        self : object\n            This instance\n        \"\"\"\n        assert self._cached_values, \"Refit can only be called if values were cached during the original fit\"\n        if isinstance(self._get_inference(inference), self._illegal_refit_inference_methods):\n            raise ValueError(\"The chosen inference method does not allow only for model final re-fitting.\")\n        cached = self._cached_values\n        kwargs = filter_none_kwargs(\n            Y=cached.Y, T=cached.T, X=cached.X, W=cached.W, Z=cached.Z,\n            sample_weight=cached.sample_weight, freq_weight=cached.freq_weight, sample_var=cached.sample_var,\n            groups=cached.groups,\n        )\n        _OrthoLearner.fit(self, **kwargs,\n                          cache_values=True, inference=inference, only_final=True, check_input=False)\n        return self\n\n    def _fit_nuisances(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n\n        # use a binary array to get stratified split in case of discrete treatment\n        stratify = self.discrete_treatment or self.discrete_instrument or self.discrete_outcome\n        strata = self._strata(Y, T, X=X, W=W, Z=Z, sample_weight=sample_weight, groups=groups)\n        if strata is None:\n            strata = T  # always safe to pass T as second arg to split even if we're not actually stratifying\n\n        if self.transformer:\n            if self.discrete_treatment:\n                T = reshape(T, (-1, 1))\n            T = self.transformer.transform(T)\n\n        if self.discrete_instrument:\n            Z = self.z_transformer.transform(reshape(Z, (-1, 1)))\n\n        if self.discrete_outcome:\n            Y = self.outcome_transformer.transform(Y).reshape(-1, 1)\n\n        if self.cv == 1:  # special case, no cross validation\n            folds = None\n        else:\n            splitter = check_cv(self.cv, [0], classifier=stratify)\n            # if check_cv produced a new KFold or StratifiedKFold object, we need to set shuffle and random_state\n            if splitter != self.cv and isinstance(splitter, (KFold, StratifiedKFold)):\n                # upgrade to a GroupKFold or StratiGroupKFold if groups is not None\n                if groups is not None:\n                    if isinstance(splitter, KFold):\n                        splitter = GroupKFold(n_splits=splitter.n_splits)\n                    elif isinstance(splitter, StratifiedKFold):\n                        splitter = StratifiedGroupKFold(n_splits=splitter.n_splits)\n                splitter.shuffle = True\n                splitter.random_state = self._random_state\n\n            all_vars = [var if np.ndim(var) == 2 else var.reshape(-1, 1) for var in [Z, W, X] if var is not None]\n            to_split = np.hstack(all_vars) if all_vars else np.ones((T.shape[0], 1))\n\n            if groups is not None:\n                # we won't have generated a KFold or StratifiedKFold ourselves when groups are passed,\n                # but the user might have supplied one, which won't work\n                if isinstance(splitter, (KFold, StratifiedKFold)):\n                    raise TypeError(\"Groups were passed to fit while using a KFold or StratifiedKFold splitter. \"\n                                    \"Instead you must initialize this object with a splitter that can handle groups.\")\n                folds = splitter.split(to_split, strata, groups=groups)\n            else:\n                folds = splitter.split(to_split, strata)\n\n        nuisances, fitted_models, fitted_inds, scores = _crossfit(self._ortho_learner_model_nuisance, folds,\n                                                                  self.use_ray, self.ray_remote_func_options, Y, T,\n                                                                  X=X, W=W, Z=Z, sample_weight=sample_weight,\n                                                                  groups=groups)\n        return nuisances, fitted_models, fitted_inds, scores\n\n    def _fit_final(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None,\n                   freq_weight=None, sample_var=None, groups=None):\n        self._ortho_learner_model_final.fit(Y, T, **filter_none_kwargs(X=X, W=W, Z=Z,\n                                                                       nuisances=nuisances,\n                                                                       sample_weight=sample_weight,\n                                                                       freq_weight=freq_weight,\n                                                                       sample_var=sample_var,\n                                                                       groups=groups))\n        self.score_ = None\n        if hasattr(self._ortho_learner_model_final, 'score'):\n            self.score_ = self._ortho_learner_model_final.score(Y, T, **filter_none_kwargs(X=X, W=W, Z=Z,\n                                                                                           nuisances=nuisances,\n                                                                                           sample_weight=sample_weight,\n                                                                                           groups=groups))\n\n    def const_marginal_effect(self, X=None):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        self._check_fitted_dims(X)\n        if X is None:\n            return self._ortho_learner_model_final.predict()\n        else:\n            return self._ortho_learner_model_final.predict(X)\n\n    const_marginal_effect.__doc__ = LinearCateEstimator.const_marginal_effect.__doc__\n\n    def const_marginal_effect_interval(self, X=None, *, alpha=0.05):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        self._check_fitted_dims(X)\n        return super().const_marginal_effect_interval(X, alpha=alpha)\n\n    const_marginal_effect_interval.__doc__ = LinearCateEstimator.const_marginal_effect_interval.__doc__\n\n    def const_marginal_effect_inference(self, X=None):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        self._check_fitted_dims(X)\n        return super().const_marginal_effect_inference(X)\n\n    const_marginal_effect_inference.__doc__ = LinearCateEstimator.const_marginal_effect_inference.__doc__\n\n    def effect_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        T0, T1 = check_input_arrays(T0, T1)\n        self._check_fitted_dims(X)\n        return super().effect_interval(X, T0=T0, T1=T1, alpha=alpha)\n\n    effect_interval.__doc__ = LinearCateEstimator.effect_interval.__doc__\n\n    def effect_inference(self, X=None, *, T0=0, T1=1):\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X, = check_input_arrays(X, force_all_finite=force_all_finite)\n        T0, T1 = check_input_arrays(T0, T1)\n        self._check_fitted_dims(X)\n        return super().effect_inference(X, T0=T0, T1=T1)\n\n    effect_inference.__doc__ = LinearCateEstimator.effect_inference.__doc__\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None, scoring=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds\n        under different iterations. Then calls the score function of the model_final and\n        returns the calculated score. The model_final model must have a score method.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X: (n, d_x) matrix, optional\n            Features for each sample\n        W: (n, d_w) matrix, optional\n            Controls for each sample\n        Z: (n, d_z) matrix, optional\n            Instruments for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n        scoring: name of an sklearn scoring function to use instead of the default, optional\n            Supports f1_score, log_loss, mean_absolute_error, mean_squared_error, r2_score,\n            and roc_auc_score.\n\n        Returns\n        -------\n        score : float or (array of float)\n            The score of the final CATE model on the new data. Same type as the return\n            type of the model_final.score method.\n        \"\"\"\n        if not hasattr(self._ortho_learner_model_final, 'score'):\n            raise AttributeError(\"Final model does not have a score method!\")\n        Y, T, Z = check_input_arrays(Y, T, Z)\n        X, = check_input_arrays(X, force_all_finite='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n        W, = check_input_arrays(W, force_all_finite='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n        self._check_fitted_dims(X)\n        self._check_fitted_dims_w_z(W, Z)\n        X, T = self._expand_treatments(X, T)\n        if self.z_transformer is not None:\n            Z = self.z_transformer.transform(reshape(Z, (-1, 1)))\n        if self.discrete_outcome:\n            Y = self.outcome_transformer.transform(Y).reshape(-1, 1)\n        n_iters = len(self._models_nuisance)\n        # self._models_nuisance will be a list of lists or a list of list of lists\n        # so we use self._ortho_learner_model_nuisance to determine the nesting level\n        expand_list = not isinstance(self._ortho_learner_model_nuisance, list)\n        if expand_list:\n            n_selectors = 1\n            n_splits = len(self._models_nuisance[0])\n        else:\n            n_selectors = len(self._models_nuisance[0])\n            n_splits = len(self._models_nuisance[0][0])\n\n        kwargs = filter_none_kwargs(X=X, W=W, Z=Z, groups=groups)\n\n        accumulated_nuisances = []\n\n        for sel in range(n_selectors):\n            accumulated_args = tuple(accumulated_nuisances) + (Y, T)\n            # for each mc iteration\n            for i, models_nuisances in enumerate(self._models_nuisance):\n                if expand_list:\n                    models_nuisances = [models_nuisances]\n\n                # for each model under cross fit setting\n                for j, mdl in enumerate(models_nuisances[sel]):\n                    nuisance_temp = mdl.predict(*accumulated_args, **kwargs)\n                    if not isinstance(nuisance_temp, tuple):\n                        nuisance_temp = (nuisance_temp,)\n\n                    if i == 0 and j == 0:\n                        nuisances = [np.zeros((n_iters * n_splits,) + nuis.shape) for nuis in nuisance_temp]\n\n                    for it, nuis in enumerate(nuisance_temp):\n                        nuisances[it][j * n_iters + i] = nuis\n\n            for it in range(len(nuisances)):\n                nuisances[it] = np.mean(nuisances[it], axis=0)\n\n            accumulated_nuisances += nuisances\n\n        score_kwargs = {\n            'X': X,\n            'W': W,\n            'Z': Z,\n            'sample_weight': sample_weight,\n            'groups': groups\n        }\n        # If using an _rlearner, the scoring parameter can be passed along, if provided\n        if scoring is not None:\n            # Cannot import in header, or circular imports\n            from .dml._rlearner import _ModelFinal\n            if isinstance(self._ortho_learner_model_final, _ModelFinal):\n                score_kwargs['scoring'] = scoring\n            else:\n                raise NotImplementedError(\"scoring parameter only implemented for \"\n                                          \"_rlearner._ModelFinal\")\n        return self._ortho_learner_model_final.score(Y, T, nuisances=accumulated_nuisances,\n                                                     **filter_none_kwargs(**score_kwargs))\n\n    @property\n    def ortho_learner_model_final_(self):\n        if not hasattr(self, '_ortho_learner_model_final'):\n            raise AttributeError(\"Model is not fitted!\")\n        return self._ortho_learner_model_final\n\n    @property\n    def models_nuisance_(self):\n        if not hasattr(self, '_models_nuisance'):\n            raise AttributeError(\"Model is not fitted!\")\n        return self._models_nuisance\n"
  },
  {
    "path": "econml/_shap.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Helper functions to get shap values for different cate estimators.\n\nReferences\n----------\nScott Lundberg, Su-In Lee (2017)\n    A Unified Approach to Interpreting Model Predictions.\n    NeurIPS, https://arxiv.org/abs/1705.07874\n\n\n\"\"\"\n\nimport inspect\nimport shap\nfrom collections import defaultdict\nimport numpy as np\nfrom .utilities import broadcast_unit_treatments, cross_product, get_feature_names_or_default\n\n\ndef _shap_explain_cme(cme_model, X, d_t, d_y,\n                      feature_names=None, treatment_names=None, output_names=None,\n                      input_names=None, background_samples=100):\n    \"\"\"\n    Explain `const_marginal_effect` function using shap Explainer().\n\n    Parameters\n    ----------\n    cme_models: function\n        const_marginal_effect function.\n    X: (m, d_x) matrix\n        Features for each sample. Should be in the same shape of X during fit.\n    d_t: tuple of int\n        Tuple of number of treatment (exclude control in discrete treatment scenario).\n    d_y: tuple of int\n        Tuple of number of outcome.\n    feature_names:  list of str of length X.shape[1], optional\n        The names of raw input features.\n    treatment_names:  list, optional\n        The name of treatment. In discrete treatment scenario, the name should not include the name of\n        the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n    output_names:  list, optional\n        The name of the outcome.\n    input_names: dictionary or None\n        The parsed names of variables at fit input time of cate estimators\n    background_samples: int , default 100\n        How many samples to use to compute the baseline effect. If None then all samples are used.\n\n    Returns\n    -------\n    shap_outs: nested dictionary of Explanation object\n        A nested dictionary by using each output name (e.g. \"Y0\" when `output_names=None`) and\n        each treatment name (e.g. \"T0\" when `treatment_names=None`) as key\n        and the shap_values explanation object as value.\n\n    \"\"\"\n    (dt, dy, treatment_names, output_names, feature_names, _) = _define_names(d_t, d_y, treatment_names,\n                                                                              output_names, feature_names,\n                                                                              input_names, None)\n    # define masker by using entire dataset, otherwise Explainer will only sample 100 obs by default.\n    bg_samples = X.shape[0] if background_samples is None else min(background_samples, X.shape[0])\n    background = shap.maskers.Independent(X, max_samples=bg_samples)\n    shap_outs = defaultdict(dict)\n    for i in range(dy):\n        def cmd_func(X):\n            return cme_model(X).reshape(-1, dy, dt)[:, i, :]\n        explainer = shap.Explainer(cmd_func, background,\n                                   feature_names=feature_names)\n        shap_out = explainer(X)\n        if dt > 1:\n            for j in range(dt):\n                base_values = shap_out.base_values[..., j]\n                values = shap_out.values[..., j]\n                main_effects = None if shap_out.main_effects is None else shap_out.main_effects[..., j]\n                shap_out_new = shap.Explanation(values, base_values=base_values,\n                                                data=shap_out.data, main_effects=main_effects,\n                                                feature_names=shap_out.feature_names)\n                shap_outs[output_names[i]][treatment_names[j]] = shap_out_new\n        else:\n            base_values = shap_out.base_values[..., 0]\n            shap_out_new = shap.Explanation(shap_out.values, base_values=base_values,\n                                            data=shap_out.data, main_effects=shap_out.main_effects,\n                                            feature_names=shap_out.feature_names)\n            shap_outs[output_names[i]][treatment_names[0]] = shap_out_new\n    # return plain dictionary so that erroneous accesses don't half work (see #708)\n    return dict(shap_outs)\n\n\ndef _shap_explain_model_cate(cme_model, models, X, d_t, d_y, featurizer=None, feature_names=None,\n                             treatment_names=None, output_names=None,\n                             input_names=None, background_samples=100):\n    \"\"\"\n    Explain `model_cate` using shap Explainer().\n\n    Will instead explain `const_marignal_effect`\n    if `model_cate` can't be parsed. Models should be a list of length d_t. Each element in the list of\n    models represents the const_marginal_effect associated with each treatments and for all outcomes, i.e.\n    the outcome of the predict method of each model should be of length d_y.\n\n    Parameters\n    ----------\n    cme_models: function\n        const_marginal_effect function.\n    models: a single estimator or a list of estimators with one estimator per treatment\n        models for the model's final stage model.\n    X: (m, d_x) matrix\n        Features for each sample.\n    d_t: tuple of int\n        Tuple of number of treatment (exclude control in discrete treatment scenario.\n    d_y: tuple of int\n        Tuple of number of outcome.\n    featurizer: featurizer, optional\n        Fitted Featurizer of feature X.\n    feature_names:  list of str of length X.shape[1], optional\n        The names of raw input features.\n    treatment_names:  list, optional\n        The name of treatment. In discrete treatment scenario, the name should not include the name of\n        the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n    output_names:  list, optional\n        The name of the outcome.\n    input_names: dictionary or None\n        The parsed names of variables at fit input time of cate estimators\n    background_samples: int , default 100\n        How many samples to use to compute the baseline effect. If None then all samples are used.\n\n    Returns\n    -------\n    shap_outs: nested dictionary of Explanation object\n        A nested dictionary by using each output name (e.g. \"Y0\" when `output_names=None`) and\n        each treatment name (e.g. \"T0\" when `treatment_names=None`) as key\n        and the shap_values explanation object as value.\n    \"\"\"\n    d_t_, d_y_ = d_t, d_y\n    feature_names_, treatment_names_ = feature_names, treatment_names,\n    output_names_, input_names_ = output_names, input_names\n    (dt, dy, treatment_names, output_names, feature_names, transformed_feature_names) = _define_names(d_t, d_y,\n                                                                                                      treatment_names,\n                                                                                                      output_names,\n                                                                                                      feature_names,\n                                                                                                      input_names,\n                                                                                                      featurizer)\n    if featurizer is not None:\n        F = featurizer.transform(X)\n    else:\n        F = X\n    if not isinstance(models, list):\n        models = [models]\n    assert len(models) == dt, \"Number of final stage models don't equals to number of treatments!\"\n    # define masker by using entire dataset, otherwise Explainer will only sample 100 obs by default.\n    bg_samples = F.shape[0] if background_samples is None else min(background_samples, F.shape[0])\n    background = shap.maskers.Independent(F, max_samples=bg_samples)\n\n    shap_outs = defaultdict(dict)\n    for i in range(dt):\n        try:\n            explainer = shap.Explainer(models[i], masker=background,\n                                       feature_names=transformed_feature_names)\n        except Exception as e:\n            print(\"Final model can't be parsed, explain const_marginal_effect() instead!\", repr(e))\n            return _shap_explain_cme(cme_model, X, d_t_, d_y_,\n                                     feature_names=feature_names_,\n                                     treatment_names=treatment_names_,\n                                     output_names=output_names_,\n                                     input_names=input_names_,\n                                     background_samples=background_samples)\n        if \"check_additivity\" in inspect.signature(explainer).parameters:\n            shap_out = explainer(F, check_additivity=False)\n        else:\n            shap_out = explainer(F)\n        if dy > 1:\n            for j in range(dy):\n                base_values = shap_out.base_values[..., j]\n                values = shap_out.values[..., j]\n                main_effects = None if shap_out.main_effects is None else shap_out.main_effects[..., j]\n                shap_out_new = shap.Explanation(values, base_values=base_values,\n                                                data=shap_out.data, main_effects=main_effects,\n                                                feature_names=shap_out.feature_names)\n                shap_outs[output_names[j]][treatment_names[i]] = shap_out_new\n        else:\n            shap_outs[output_names[0]][treatment_names[i]] = shap_out\n\n    # return plain dictionary so that erroneous accesses don't half work (see #708)\n    return dict(shap_outs)\n\n\ndef _shap_explain_joint_linear_model_cate(model_final, X, d_t, d_y, fit_cate_intercept,\n                                          feature_names=None, treatment_names=None, output_names=None,\n                                          input_names=None, background_samples=100):\n    \"\"\"\n    Explain `model_cate` of parametric final stage fitted on the cross product of `featurizer(X)` and T.\n\n    Parameters\n    ----------\n    model_final: a single estimator\n        the model's final stage model.\n    X: matrix\n        Featurized X.\n    d_t: tuple of int\n        Tuple of number of treatment (exclude control in discrete treatment scenario).\n    d_y: tuple of int\n        Tuple of number of outcome.\n    fit_cate_intercept: bool\n        Whether the first entry of the coefficient of the joint linear model associated with\n        each treatment, is an intercept.\n    feature_names:  list of str of length X.shape[1] or X.shape[1]-1, optional\n        The name of featurized X (exclude intercept). Length is X.shape[1] if fit_cate_intercpet=False, otherwise\n        length is X.shape[1]-1.\n    treatment_names:  list, optional\n        The name of treatment. In discrete treatment scenario, the name should not include the name of\n        the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n    output_names:  list, optional\n        The name of the outcome.\n    input_names: dictionary or None\n        The parsed names of variables at fit input time of cate estimators\n    background_samples: int , default 100\n        How many samples to use to compute the baseline effect. If None then all samples are used.\n\n    Returns\n    -------\n    shap_outs: nested dictionary of Explanation object\n        A nested dictionary by using each output name (e.g. \"Y0\" when `output_names=None`) and\n        each treatment name (e.g. \"T0\" when `treatment_names=None`) as key\n        and the shap_values explanation object as value.\n    \"\"\"\n    # input feature name is already updated by cate_feature_names.\n    (d_t, d_y, treatment_names, output_names, _, _) = _define_names(d_t, d_y, treatment_names,\n                                                                    output_names,\n                                                                    feature_names,\n                                                                    input_names, None)\n    X, T = broadcast_unit_treatments(X, d_t)\n    X = cross_product(X, T)\n    d_x = X.shape[1]\n    # define the index of d_x to filter for each given T\n    ind_x = np.arange(d_x).reshape(d_t, -1)\n    if fit_cate_intercept:  # skip intercept\n        ind_x = ind_x[:, 1:]\n    shap_outs = defaultdict(dict)\n    for i in range(d_t):\n        # filter X after broadcast with T for each given T\n        X_sub = X[T[:, i] == 1]\n        # define masker by using entire dataset, otherwise Explainer will only sample 100 obs by default.\n        bg_samples = X_sub.shape[0] if background_samples is None else min(background_samples, X_sub.shape[0])\n        background = shap.maskers.Independent(X_sub, max_samples=bg_samples)\n        explainer = shap.Explainer(model_final, background, feature_names=feature_names)\n        shap_out = explainer(X_sub)\n\n        data = shap_out.data[:, ind_x[i]]\n        if d_y > 1:\n            for j in range(d_y):\n                base_values = shap_out.base_values[..., j]\n                main_effects = None if shap_out.main_effects is None else shap_out.main_effects[..., ind_x[i], j]\n                values = shap_out.values[..., ind_x[i], j]\n                shap_out_new = shap.Explanation(values, base_values=base_values, data=data, main_effects=main_effects,\n                                                feature_names=shap_out.feature_names)\n                shap_outs[output_names[j]][treatment_names[i]] = shap_out_new\n        else:\n            values = shap_out.values[..., ind_x[i]]\n            main_effects = shap_out.main_effects[..., ind_x[i], 0]\n            shap_out_new = shap.Explanation(values, base_values=shap_out.base_values, data=data,\n                                            main_effects=main_effects,\n                                            feature_names=shap_out.feature_names)\n            shap_outs[output_names[0]][treatment_names[i]] = shap_out_new\n\n    # return plain dictionary so that erroneous accesses don't half work (see #708)\n    return dict(shap_outs)\n\n\ndef _shap_explain_multitask_model_cate(cme_model, multitask_model_cate, X, d_t, d_y, featurizer=None,\n                                       feature_names=None,\n                                       treatment_names=None, output_names=None,\n                                       input_names=None, background_samples=100):\n    \"\"\"\n    Explain a final cate model that is represented in a multi-task manner.\n\n    That is, the prediction\n    of the method is of dimension equal to the number of treatments and represents the const_marginal_effect\n    vector for all treatments.\n\n    Parameters\n    ----------\n    cme_model: function\n        const_marginal_effect function.\n    multitask_model_cate: a single estimator or a list of estimators of length d_y if d_y > 1\n        the model's final stage model whose predict represents the const_marginal_effect for\n        all treatments (or list of models, one for each outcome)\n    X: (m, d_x) matrix\n        Features for each sample.\n    d_t: tuple of int\n        Tuple of number of treatment (exclude control in discrete treatment scenario).\n    d_y: tuple of int\n        Tuple of number of outcome.\n    featurizer: featurizer, optional\n        Fitted Featurizer of feature X.\n    feature_names:  list of str of length X.shape[1], optional\n        The names of raw input features.\n    treatment_names:  list, optional\n        The name of treatment. In discrete treatment scenario, the name should not include the name of\n        the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n    output_names:  list, optional\n        The name of the outcome.\n    input_names: dictionary or None\n        The parsed names of variables at fit input time of cate estimators\n    background_samples: int , default 100\n        How many samples to use to compute the baseline effect. If None then all samples are used.\n\n    Returns\n    -------\n    shap_outs: nested dictionary of Explanation object\n        A nested dictionary by using each output name (e.g. \"Y0\" when `output_names=None`) and\n        each treatment name (e.g. \"T0\" when `treatment_names=None`) as key\n        and the shap_values explanation object as value.\n    \"\"\"\n    d_t_, d_y_ = d_t, d_y\n    feature_names_, treatment_names_ = feature_names, treatment_names,\n    output_names_, input_names_ = output_names, input_names\n    (dt, dy, treatment_names, output_names, feature_names, transformed_feature_names) = _define_names(d_t, d_y,\n                                                                                                      treatment_names,\n                                                                                                      output_names,\n                                                                                                      feature_names,\n                                                                                                      input_names,\n                                                                                                      featurizer)\n    if featurizer is not None:\n        F = featurizer.transform(X)\n    else:\n        F = X\n    if dy == 1 and (not isinstance(multitask_model_cate, list)):\n        multitask_model_cate = [multitask_model_cate]\n\n    # define masker by using entire dataset, otherwise Explainer will only sample 100 obs by default.\n    bg_samples = F.shape[0] if background_samples is None else min(background_samples, F.shape[0])\n    background = shap.maskers.Independent(F, max_samples=bg_samples)\n    shap_outs = defaultdict(dict)\n    for j in range(dy):\n        try:\n            explainer = shap.Explainer(multitask_model_cate[j], masker=background,\n                                       feature_names=transformed_feature_names)\n        except Exception as e:\n            print(\"Final model can't be parsed, explain const_marginal_effect() instead!\", repr(e))\n            return _shap_explain_cme(cme_model, X, d_t_, d_y_,\n                                     feature_names=feature_names_,\n                                     treatment_names=treatment_names_,\n                                     output_names=output_names_,\n                                     input_names=input_names_,\n                                     background_samples=background_samples)\n\n        if \"check_additivity\" in inspect.signature(explainer).parameters:\n            shap_out = explainer(F, check_additivity=False)\n        else:\n            shap_out = explainer(F)\n        if dt > 1:\n            for i in range(dt):\n                base_values = shap_out.base_values[..., i]\n                values = shap_out.values[..., i]\n                main_effects = None if shap_out.main_effects is None else shap_out.main_effects[..., i]\n                shap_out_new = shap.Explanation(values, base_values=base_values,\n                                                data=shap_out.data, main_effects=main_effects,\n                                                feature_names=shap_out.feature_names)\n                shap_outs[output_names[j]][treatment_names[i]] = shap_out_new\n        else:\n            shap_outs[output_names[j]][treatment_names[0]] = shap_out\n    # return plain dictionary so that erroneous accesses don't half work (see #708)\n    return dict(shap_outs)\n\n\ndef _define_names(d_t, d_y, treatment_names, output_names, feature_names, input_names, featurizer):\n    \"\"\"\n    Get treatment and output names.\n\n    Parameters\n    ----------\n    d_t: tuple of int\n        Tuple of number of treatment (exclude control in discrete treatment scenario).\n    d_y: tuple of int\n        Tuple of number of outcome.\n    treatment_names: None or list\n        The name of treatment. In discrete treatment scenario, the name should not include the name of\n        the baseline treatment (i.e. the control treatment, which by default is the alphabetically smaller)\n    output_names:  None or list\n        The name of the outcome.\n    feature_names: None or list\n        The user provided names of the features\n    input_names: dicitionary\n        The names of the features, outputs and treatments parsed from the fit input at fit time.\n    featurizer: sfeaturizer, optional\n        Fitted Featurizer of feature X.\n\n    Returns\n    -------\n    d_t: int\n    d_y: int\n    treament_names: List\n    output_names: List\n    feature_names: List\n    transformed_feature_names: List or None\n    \"\"\"\n    d_t = d_t[0] if d_t else 1\n    d_y = d_y[0] if d_y else 1\n\n    if treatment_names is None:\n        treatment_names = input_names['treatment_names']\n    if output_names is None:\n        output_names = input_names['output_names']\n    if feature_names is None:\n        feature_names = input_names['feature_names']\n    if featurizer is None:\n        transformed_feature_names = feature_names\n    else:\n        transformed_feature_names = get_feature_names_or_default(featurizer, feature_names)\n    return (d_t, d_y, treatment_names, output_names, feature_names, transformed_feature_names)\n"
  },
  {
    "path": "econml/_tree_exporter.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n#\n# This code contains some snippets of code from:\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_export.py\n# published under the following license and copyright:\n# BSD 3-Clause License\n#\n# Copyright (c) 2007-2020 The scikit-learn developers.\n# All rights reserved.\n\nimport abc\nimport numpy as np\nimport re\nfrom io import StringIO\nfrom sklearn.utils.validation import check_is_fitted\n\ntry:\n    import matplotlib\n    import matplotlib.pyplot as plt\nexcept ImportError as exn:\n    from .utilities import MissingModule\n\n    # make any access to matplotlib or plt throw an exception\n    matplotlib = plt = MissingModule(\"matplotlib is no longer a dependency of the main econml package; \"\n                                     \"install econml[plt] or econml[all] to require it, or install matplotlib \"\n                                     \"separately, to use the tree interpreters\", exn)\n\ntry:\n    import graphviz\nexcept ImportError as exn:\n    from .utilities import MissingModule\n\n    # make any access to graphviz or plt throw an exception\n    graphviz = MissingModule(\"graphviz is no longer a dependency of the main econml package; \"\n                             \"install econml[plt] or econml[all] to require it, or install graphviz \"\n                             \"separately, to use the tree interpreters\", exn)\n\n# HACK: We're relying on some of sklearn's non-public classes which are not completely stable.\n#       However, the alternative is reimplementing a bunch of intricate stuff by hand\nfrom sklearn.tree import _tree\ntry:\n    from sklearn.tree._export import _BaseTreeExporter, _MPLTreeExporter, _DOTTreeExporter\nexcept ImportError:  # prior to sklearn 0.22.0, the ``export`` submodule was public\n    from sklearn.tree.export import _BaseTreeExporter, _MPLTreeExporter, _DOTTreeExporter\n\n\ndef _color_brew(n):\n    \"\"\"Generate n colors with equally spaced hues.\n\n    Parameters\n    ----------\n    n : int\n        The number of colors required.\n\n    Returns\n    -------\n    color_list : list, length n\n        List of n tuples of form (R, G, B) being the components of each color.\n    \"\"\"\n    color_list = []\n\n    # Initialize saturation & value; calculate chroma & value shift\n    s, v = 0.75, 0.9\n    c = s * v\n    m = v - c\n\n    for h in np.arange(25, 385, 360. / n).astype(int):\n        # Calculate some intermediate values\n        h_bar = h / 60.\n        x = c * (1 - abs((h_bar % 2) - 1))\n        # Initialize RGB with same hue & chroma as our color\n        rgb = [(c, x, 0),\n               (x, c, 0),\n               (0, c, x),\n               (0, x, c),\n               (x, 0, c),\n               (c, 0, x),\n               (c, x, 0)]\n        r, g, b = rgb[int(h_bar)]\n        # Shift the initial RGB values to match value and store\n        rgb = [(int(255 * (r + m))),\n               (int(255 * (g + m))),\n               (int(255 * (b + m)))]\n        color_list.append(rgb)\n\n    return color_list\n\n\nclass _TreeExporter(_BaseTreeExporter):\n    \"\"\"Tree exporter that supports replacing the \"value\" part of each node's text with something customized.\"\"\"\n\n    def node_replacement_text(self, tree, node_id, criterion):\n        return None\n\n    def node_to_str(self, tree, node_id, criterion):\n        text = super().node_to_str(tree, node_id, criterion)\n        replacement = self.node_replacement_text(tree, node_id, criterion)\n        if replacement is not None:\n            # HACK: it's not optimal to use a regex like this, but the base class's node_to_str doesn't expose any\n            #       clean way of achieving this\n            text = re.sub(\"value = .*(?=\" + re.escape(self.characters[5]) + \")\",\n                          # make sure we don't accidentally escape anything in the substitution\n                          replacement.replace('\\\\', '\\\\\\\\'),\n                          text,\n                          flags=re.S)\n        return text\n\n\nclass _MPLExporter(_MPLTreeExporter):\n    \"\"\"Base class that supports adding a title to an MPL tree exporter.\"\"\"\n\n    def __init__(self, *args, title=None, **kwargs):\n        self.title = title\n        super().__init__(*args, **kwargs)\n\n    def export(self, decision_tree, node_dict=None, ax=None):\n        if ax is None:\n            ax = plt.gca()\n        self.node_dict = node_dict\n        anns = super().export(decision_tree, ax=ax)\n        if self.title is not None:\n            ax.set_title(self.title)\n        return anns\n\n\nclass _DOTExporter(_DOTTreeExporter):\n    \"\"\"Base class that supports adding a title to a DOT tree exporter.\"\"\"\n\n    def __init__(self, *args, title=None, **kwargs):\n        self.title = title\n        super().__init__(*args, **kwargs)\n\n    def export(self, decision_tree, node_dict=None):\n        self.node_dict = node_dict\n        return super().export(decision_tree)\n\n    def tail(self):\n        if self.title is not None:\n            self.out_file.write(\"labelloc=\\\"t\\\"; \\n\")\n            self.out_file.write(\"label=\\\"{}\\\"; \\n\".format(self.title))\n        super().tail()\n\n\nclass _CateTreeMixin(_TreeExporter):\n    \"\"\"Mixin that supports writing out the nodes of a CATE tree.\"\"\"\n\n    def __init__(self, include_uncertainty=False, uncertainty_level=0.1,\n                 *args, treatment_names=None, **kwargs):\n        self.include_uncertainty = include_uncertainty\n        self.uncertainty_level = uncertainty_level\n        self.treatment_names = treatment_names\n        super().__init__(*args, **kwargs)\n\n    def get_fill_color(self, tree, node_id):\n\n        # Fetch appropriate color for node\n        if 'rgb' not in self.colors:\n            # red for negative, green for positive\n            self.colors['rgb'] = [(179, 108, 96), (81, 157, 96)]\n\n        # in multi-target use mean of targets\n        tree_min = np.min(np.mean(tree.value, axis=1)) - 1e-12\n        tree_max = np.max(np.mean(tree.value, axis=1)) + 1e-12\n\n        node_val = np.mean(tree.value[node_id])\n\n        if node_val > 0:\n            value = [max(0, tree_min) / tree_max, node_val / tree_max]\n        elif node_val < 0:\n            value = [node_val / tree_min, min(0, tree_max) / tree_min]\n        else:\n            value = [0, 0]\n\n        return self.get_color(value)\n\n    def node_replacement_text(self, tree, node_id, criterion):\n\n        # Write node mean CATE\n        node_info = self.node_dict[node_id]\n        node_string = 'CATE mean' + self.characters[4]\n        value_text = \"\"\n        mean = node_info['mean']\n        if hasattr(mean, 'shape') and (len(mean.shape) > 0):\n            if len(mean.shape) == 1:\n                for i in range(mean.shape[0]):\n                    value_text += \"{}\".format(np.around(mean[i], self.precision))\n                    if 'ci' in node_info:\n                        value_text += \" ({}, {})\".format(np.around(node_info['ci'][0][i], self.precision),\n                                                         np.around(node_info['ci'][1][i], self.precision))\n                    if i != mean.shape[0] - 1:\n                        value_text += \", \"\n                value_text += self.characters[4]\n            elif len(mean.shape) == 2:\n                for i in range(mean.shape[0]):\n                    for j in range(mean.shape[1]):\n                        value_text += \"{}\".format(np.around(mean[i, j], self.precision))\n                        if 'ci' in node_info:\n                            value_text += \" ({}, {})\".format(np.around(node_info['ci'][0][i, j], self.precision),\n                                                             np.around(node_info['ci'][1][i, j], self.precision))\n                        if j != mean.shape[1] - 1:\n                            value_text += \", \"\n                    value_text += self.characters[4]\n            else:\n                raise ValueError(\"can only handle up to 2d values\")\n        else:\n            value_text += \"{}\".format(np.around(mean, self.precision))\n            if 'ci' in node_info:\n                value_text += \" ({}, {})\".format(np.around(node_info['ci'][0], self.precision),\n                                                 np.around(node_info['ci'][1], self.precision))\n            value_text += self.characters[4]\n        node_string += value_text\n\n        # Write node std of CATE\n        node_string += \"CATE std\" + self.characters[4]\n        std = node_info['std']\n        value_text = \"\"\n        if hasattr(std, 'shape') and (len(std.shape) > 0):\n            if len(std.shape) == 1:\n                for i in range(std.shape[0]):\n                    value_text += \"{}\".format(np.around(std[i], self.precision))\n                    if i != std.shape[0] - 1:\n                        value_text += \", \"\n            elif len(std.shape) == 2:\n                for i in range(std.shape[0]):\n                    for j in range(std.shape[1]):\n                        value_text += \"{}\".format(np.around(std[i, j], self.precision))\n                        if j != std.shape[1] - 1:\n                            value_text += \", \"\n                    if i != std.shape[0] - 1:\n                        value_text += self.characters[4]\n            else:\n                raise ValueError(\"can only handle up to 2d values\")\n        else:\n            value_text += \"{}\".format(np.around(std, self.precision))\n        node_string += value_text\n\n        return node_string\n\n\nclass _PolicyTreeMixin(_TreeExporter):\n    \"\"\"\n    Mixin that supports writing out the nodes of a policy tree.\n\n    Parameters\n    ----------\n    treatment_names : list of str, optional\n        The names of the two treatments\n    \"\"\"\n\n    def __init__(self, *args, treatment_names=None, **kwargs):\n        self.treatment_names = treatment_names\n        super().__init__(*args, **kwargs)\n\n    def get_fill_color(self, tree, node_id):\n        # TODO. Create our own color pallete for multiple treatments. The one below is for binary treatments.\n        # Fetch appropriate color for node\n        if 'rgb' not in self.colors:\n            self.colors['rgb'] = _color_brew(tree.n_outputs)  # [(179, 108, 96), (81, 157, 96)]\n\n        node_val = tree.value[node_id][:, 0]\n        node_val = node_val - np.min(node_val)\n        if np.max(node_val) > 0:\n            node_val = node_val / np.max(node_val)\n        return self.get_color(node_val)\n\n    def node_replacement_text(self, tree, node_id, criterion):\n        if self.node_dict is not None:\n            return self._node_replacement_text_with_dict(tree, node_id, criterion)\n        value = tree.value[node_id][:, 0]\n        node_string = 'value = %s' % np.round(value[1:] - value[0], self.precision)\n\n        if tree.children_left[node_id] == _tree.TREE_LEAF:\n            node_string += self.characters[4]\n            # Write node mean CATE\n            node_string += 'Treatment = '\n            if self.treatment_names:\n                class_name = self.treatment_names[np.argmax(value)]\n            else:\n                class_name = \"T%s%s%s\" % (self.characters[1],\n                                          np.argmax(value),\n                                          self.characters[2])\n            node_string += class_name\n\n        return node_string\n\n    def _node_replacement_text_with_dict(self, tree, node_id, criterion):\n\n        # Write node mean CATE\n        node_info = self.node_dict[node_id]\n        node_string = 'CATE' + self.characters[4]\n        value_text = \"\"\n        mean = node_info['mean']\n        if hasattr(mean, 'shape') and (len(mean.shape) > 0):\n            if len(mean.shape) == 1:\n                for i in range(mean.shape[0]):\n                    value_text += \"{}\".format(np.around(mean[i], self.precision))\n                    if 'ci' in node_info:\n                        value_text += \" ({}, {})\".format(np.around(node_info['ci'][0][i], self.precision),\n                                                         np.around(node_info['ci'][1][i], self.precision))\n                    if i != mean.shape[0] - 1:\n                        value_text += \", \"\n                value_text += self.characters[4]\n            else:\n                raise ValueError(\"can only handle up to 1d values\")\n        else:\n            value_text += \"{}\".format(np.around(mean, self.precision))\n            if 'ci' in node_info:\n                value_text += \" ({}, {})\".format(np.around(node_info['ci'][0], self.precision),\n                                                 np.around(node_info['ci'][1], self.precision))\n            value_text += self.characters[4]\n        node_string += value_text\n\n        if tree.children_left[node_id] == _tree.TREE_LEAF:\n            # Write recommended treatment and value - cost\n            value = tree.value[node_id][:, 0]\n            node_string += 'value - cost = %s' % np.round(value[1:], self.precision) + self.characters[4]\n\n            value = tree.value[node_id][:, 0]\n            node_string += \"Treatment: \"\n            if self.treatment_names:\n                class_name = self.treatment_names[np.argmax(value)]\n            else:\n                class_name = \"T%s%s%s\" % (self.characters[1],\n                                          np.argmax(value),\n                                          self.characters[2])\n            node_string += \"{}\".format(class_name)\n            node_string += self.characters[4]\n\n        return node_string\n\n\nclass _PolicyTreeMPLExporter(_PolicyTreeMixin, _MPLExporter):\n    \"\"\"\n    Export policy trees to matplotlib.\n\n    Parameters\n    ----------\n    treatment_names : list of str, optional\n        The names of the treatments\n\n    title : str, optional\n        A title for the final figure to be printed at the top of the page.\n\n    feature_names : list of str, optional\n        Names of each of the features.\n\n    max_depth: int, optional\n        The maximum tree depth to plot\n\n    filled : bool, default False\n        When set to ``True``, paint nodes to indicate majority class for\n        classification, extremity of values for regression, or purity of node\n        for multi-output.\n\n    rounded : bool, default False\n        When set to ``True``, draw node boxes with rounded corners and use\n        Helvetica fonts instead of Times-Roman.\n\n    precision : int, default 3\n        Number of digits of precision for floating point in the values of\n        impurity, threshold and value attributes of each node.\n\n    fontsize : int, optional\n        Fontsize for text\n    \"\"\"\n\n    def __init__(self, treatment_names=None, title=None, feature_names=None,\n                 max_depth=None,\n                 filled=True,\n                 rounded=False, precision=3, fontsize=None):\n        super().__init__(treatment_names=treatment_names, title=title,\n                         feature_names=feature_names,\n                         max_depth=max_depth,\n                         filled=filled, rounded=rounded, precision=precision,\n                         fontsize=fontsize,\n                         impurity=False)\n\n\nclass _CateTreeMPLExporter(_CateTreeMixin, _MPLExporter):\n    \"\"\"\n    Export CATE trees into matplotlib.\n\n    Parameters\n    ----------\n    include_uncertainty: bool\n        whether the tree includes uncertainty information\n\n    uncertainty_level: float\n        the confidence level of the confidence interval included in the tree\n\n    title : str, optional\n        A title for the final figure to be printed at the top of the page.\n\n    feature_names : list of str, optional\n        Names of each of the features.\n\n    treatment_names : list of str, optional\n        The names of the treatments\n\n    max_depth: int, optional\n        The maximum tree depth to plot\n\n    filled : bool, default False\n        When set to ``True``, paint nodes to indicate majority class for\n        classification, extremity of values for regression, or purity of node\n        for multi-output.\n\n    rounded : bool, default False\n        When set to ``True``, draw node boxes with rounded corners and use\n        Helvetica fonts instead of Times-Roman.\n\n    precision : int, default 3\n        Number of digits of precision for floating point in the values of\n        impurity, threshold and value attributes of each node.\n\n    fontsize : int, optional\n        Fontsize for text\n    \"\"\"\n\n    def __init__(self, include_uncertainty, uncertainty_level, title=None,\n                 feature_names=None,\n                 treatment_names=None,\n                 max_depth=None,\n                 filled=True, rounded=False, precision=3, fontsize=None):\n        super().__init__(include_uncertainty, uncertainty_level, title=None,\n                         feature_names=feature_names,\n                         treatment_names=treatment_names,\n                         max_depth=max_depth,\n                         filled=filled,\n                         rounded=rounded, precision=precision, fontsize=fontsize,\n                         impurity=False)\n\n\nclass _PolicyTreeDOTExporter(_PolicyTreeMixin, _DOTExporter):\n    \"\"\"\n    Export policy trees to dot files.\n\n    Parameters\n    ----------\n    out_file : file object or str, optional\n        Handle or name of the output file. If ``None``, the result is\n        returned as a string.\n\n    title : str, optional\n        A title for the final figure to be printed at the top of the page.\n\n    feature_names : list of str, optional\n        Names of each of the features.\n\n    treatment_names : list of str, optional\n        The names of the treatments\n\n    max_depth: int, optional\n        The maximum tree depth to plot\n\n    filled : bool, default False\n        When set to ``True``, paint nodes to indicate majority class for\n        classification, extremity of values for regression, or purity of node\n        for multi-output.\n\n    leaves_parallel : bool, default False\n        When set to ``True``, draw all leaf nodes at the bottom of the tree.\n\n    rotate : bool, default False\n        When set to ``True``, orient tree left to right rather than top-down.\n\n    rounded : bool, default False\n        When set to ``True``, draw node boxes with rounded corners and use\n        Helvetica fonts instead of Times-Roman.\n\n    special_characters : bool, default False\n        When set to ``False``, ignore special characters for PostScript\n        compatibility.\n\n    precision : int, default 3\n        Number of digits of precision for floating point in the values of\n        impurity, threshold and value attributes of each node.\n    \"\"\"\n\n    def __init__(self, out_file=None, title=None, treatment_names=None, feature_names=None,\n                 max_depth=None,\n                 filled=True, leaves_parallel=False,\n                 rotate=False, rounded=False, special_characters=False, precision=3):\n        super().__init__(title=title, out_file=out_file, feature_names=feature_names,\n                         max_depth=max_depth, filled=filled, leaves_parallel=leaves_parallel,\n                         rotate=rotate, rounded=rounded, special_characters=special_characters,\n                         precision=precision, treatment_names=treatment_names,\n                         impurity=False)\n\n\nclass _CateTreeDOTExporter(_CateTreeMixin, _DOTExporter):\n    \"\"\"\n    Export CATE trees to dot files.\n\n    Parameters\n    ----------\n    include_uncertainty: bool\n        whether the tree includes uncertainty information\n\n    uncertainty_level: float\n        the confidence level of the confidence interval included in the tree\n\n    out_file : file object or str, optional\n        Handle or name of the output file. If ``None``, the result is\n        returned as a string.\n\n    title : str, optional\n        A title for the final figure to be printed at the top of the page.\n\n    feature_names : list of str, optional\n        Names of each of the features.\n\n    treatment_names : list of str, optional\n        The names of the treatments\n\n    max_depth: int, optional\n        The maximum tree depth to plot\n\n    filled : bool, default False\n        When set to ``True``, paint nodes to indicate majority class for\n        classification, extremity of values for regression, or purity of node\n        for multi-output.\n\n    leaves_parallel : bool, default False\n        When set to ``True``, draw all leaf nodes at the bottom of the tree.\n\n    rotate : bool, default False\n        When set to ``True``, orient tree left to right rather than top-down.\n\n    rounded : bool, default False\n        When set to ``True``, draw node boxes with rounded corners and use\n        Helvetica fonts instead of Times-Roman.\n\n    special_characters : bool, default False\n        When set to ``False``, ignore special characters for PostScript\n        compatibility.\n\n    precision : int, default 3\n        Number of digits of precision for floating point in the values of\n        impurity, threshold and value attributes of each node.\n    \"\"\"\n\n    def __init__(self, include_uncertainty, uncertainty_level, out_file=None, title=None, feature_names=None,\n                 treatment_names=None,\n                 max_depth=None, filled=True, leaves_parallel=False,\n                 rotate=False, rounded=False, special_characters=False, precision=3):\n        super().__init__(include_uncertainty, uncertainty_level,\n                         out_file=out_file, title=title, feature_names=feature_names,\n                         treatment_names=treatment_names,\n                         max_depth=max_depth, filled=filled, leaves_parallel=leaves_parallel,\n                         rotate=rotate, rounded=rounded, special_characters=special_characters,\n                         precision=precision,\n                         impurity=False)\n\n\nclass _SingleTreeExporterMixin(metaclass=abc.ABCMeta):\n\n    tree_model_ = None\n    node_dict_ = None\n\n    @abc.abstractmethod\n    def _make_dot_exporter(self, *, out_file, feature_names, treatment_names, max_depth, filled,\n                           leaves_parallel, rotate, rounded,\n                           special_characters, precision):\n        \"\"\"\n        Make a dot file exporter.\n\n        Parameters\n        ----------\n        out_file : file object\n            Handle to write to.\n\n        feature_names : list of str\n            Names of each of the features.\n\n        treatment_names : list of str, optional\n            Names of each of the treatments, starting with a name for the baseline/control treatment\n            (alphanumerically smallest in case of discrete treatment or the all-zero treatment\n            in the case of continuous)\n\n        max_depth: int, optional\n            The maximum tree depth to plot\n\n        filled : bool\n            When set to ``True``, paint nodes to indicate majority class for\n            classification, extremity of values for regression, or purity of node\n            for multi-output.\n\n        leaves_parallel : bool\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\n\n        rotate : bool\n            When set to ``True``, orient tree left to right rather than top-down.\n\n        rounded : bool\n            When set to ``True``, draw node boxes with rounded corners and use\n            Helvetica fonts instead of Times-Roman.\n\n        special_characters : bool\n            When set to ``False``, ignore special characters for PostScript\n            compatibility.\n\n        precision : int\n            Number of digits of precision for floating point in the values of\n            impurity, threshold and value attributes of each node.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abc.abstractmethod\n    def _make_mpl_exporter(self, *, title=None, feature_names=None, treatment_names=None, max_depth=None,\n                           filled=True, rounded=True, precision=3, fontsize=None):\n        \"\"\"\n        Make a matplotlib exporter.\n\n        Parameters\n        ----------\n        title : str\n            A title for the final figure to be printed at the top of the page.\n\n        feature_names : list of str\n            Names of each of the features.\n\n        treatment_names : list of str, optional\n            Names of each of the treatments\n\n        max_depth: int, optional\n            The maximum tree depth to plot\n\n        filled : bool\n            When set to ``True``, paint nodes to indicate majority class for\n            classification, extremity of values for regression, or purity of node\n            for multi-output.\n\n        rounded : bool\n            When set to ``True``, draw node boxes with rounded corners and use\n            Helvetica fonts instead of Times-Roman.\n\n        precision : int\n            Number of digits of precision for floating point in the values of\n            impurity, threshold and value attributes of each node.\n\n        fontsize : int\n            Fontsize for text\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def export_graphviz(self, out_file=None, feature_names=None, treatment_names=None,\n                        max_depth=None,\n                        filled=True, leaves_parallel=True,\n                        rotate=False, rounded=True, special_characters=False, precision=3):\n        \"\"\"\n        Export a graphviz dot file representing the learned tree model.\n\n        Parameters\n        ----------\n        out_file : file object or str, optional\n            Handle or name of the output file. If ``None``, the result is\n            returned as a string.\n\n        feature_names : list of str, optional\n            Names of each of the features.\n\n        treatment_names : list of str, optional\n            Names of each of the treatments\n\n        max_depth: int, optional\n            The maximum tree depth to plot\n\n        filled : bool, default False\n            When set to ``True``, paint nodes to indicate majority class for\n            classification, extremity of values for regression, or purity of node\n            for multi-output.\n\n        leaves_parallel : bool, default True\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\n\n        rotate : bool, default False\n            When set to ``True``, orient tree left to right rather than top-down.\n\n        rounded : bool, default True\n            When set to ``True``, draw node boxes with rounded corners and use\n            Helvetica fonts instead of Times-Roman.\n\n        special_characters : bool, default False\n            When set to ``False``, ignore special characters for PostScript\n            compatibility.\n\n        precision : int, default 3\n            Number of digits of precision for floating point in the values of\n            impurity, threshold and value attributes of each node.\n        \"\"\"\n        check_is_fitted(self.tree_model_, 'tree_')\n        own_file = False\n        try:\n            if isinstance(out_file, str):\n                out_file = open(out_file, \"w\", encoding=\"utf-8\")  # noqa: SIM115, we close explicitly by design\n                own_file = True\n\n            return_string = out_file is None\n            if return_string:\n                out_file = StringIO()\n\n            exporter = self._make_dot_exporter(out_file=out_file, feature_names=feature_names,\n                                               treatment_names=treatment_names,\n                                               max_depth=max_depth, filled=filled,\n                                               leaves_parallel=leaves_parallel, rotate=rotate, rounded=rounded,\n                                               special_characters=special_characters, precision=precision)\n            exporter.export(self.tree_model_, node_dict=self.node_dict_)\n\n            if return_string:\n                return out_file.getvalue()\n\n        finally:\n            if own_file:\n                out_file.close()\n\n    def render(self, out_file, format='pdf', view=True, feature_names=None,\n               treatment_names=None,\n               max_depth=None,\n               filled=True, leaves_parallel=True, rotate=False, rounded=True,\n               special_characters=False, precision=3):\n        \"\"\"\n        Render the tree to a flie.\n\n        Parameters\n        ----------\n        out_file : file name to save to\n\n        format : str, default 'pdf'\n            The file format to render to; must be supported by graphviz\n\n        view : bool, default True\n            Whether to open the rendered result with the default application.\n\n        feature_names : list of str, optional\n            Names of each of the features.\n\n        treatment_names : list of str, optional\n            Names of each of the treatments\n\n        max_depth: int, optional\n            The maximum tree depth to plot\n\n        filled : bool, default False\n            When set to ``True``, paint nodes to indicate majority class for\n            classification, extremity of values for regression, or purity of node\n            for multi-output.\n\n        leaves_parallel : bool, default True\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\n\n        rotate : bool, default False\n            When set to ``True``, orient tree left to right rather than top-down.\n\n        rounded : bool, default True\n            When set to ``True``, draw node boxes with rounded corners and use\n            Helvetica fonts instead of Times-Roman.\n\n        special_characters : bool, default False\n            When set to ``False``, ignore special characters for PostScript\n            compatibility.\n\n        precision : int, default 3\n            Number of digits of precision for floating point in the values of\n            impurity, threshold and value attributes of each node.\n        \"\"\"\n        dot_source = self.export_graphviz(out_file=None,  # want the output as a string, only write the final file\n                                          feature_names=feature_names, treatment_names=treatment_names,\n                                          max_depth=max_depth,\n                                          filled=filled,\n                                          leaves_parallel=leaves_parallel, rotate=rotate,\n                                          rounded=rounded, special_characters=special_characters,\n                                          precision=precision)\n        graphviz.Source(dot_source).render(out_file, format=format, view=view)\n\n    def plot(self, ax=None, title=None, feature_names=None, treatment_names=None,\n             max_depth=None, filled=True, rounded=True, precision=3, fontsize=None):\n        \"\"\"\n        Export policy trees to matplotlib.\n\n        Parameters\n        ----------\n        ax : :class:`matplotlib.axes.Axes`, optional\n            The axes on which to plot\n\n        title : str, optional\n            A title for the final figure to be printed at the top of the page.\n\n        feature_names : list of str, optional\n            Names of each of the features.\n\n        treatment_names : list of str, optional\n            Names of each of the treatments\n\n        max_depth: int, optional\n            The maximum tree depth to plot\n\n        filled : bool, default False\n            When set to ``True``, paint nodes to indicate majority class for\n            classification, extremity of values for regression, or purity of node\n            for multi-output.\n\n        rounded : bool, default True\n            When set to ``True``, draw node boxes with rounded corners and use\n            Helvetica fonts instead of Times-Roman.\n\n        precision : int, default 3\n            Number of digits of precision for floating point in the values of\n            impurity, threshold and value attributes of each node.\n\n        fontsize : int, optional\n            Font size for text\n        \"\"\"\n        check_is_fitted(self.tree_model_, 'tree_')\n        exporter = self._make_mpl_exporter(title=title, feature_names=feature_names, treatment_names=treatment_names,\n                                           max_depth=max_depth,\n                                           filled=filled,\n                                           rounded=rounded, precision=precision, fontsize=fontsize)\n        exporter.export(self.tree_model_, node_dict=self.node_dict_, ax=ax)\n"
  },
  {
    "path": "econml/_version.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n__version__ = '0.16.0'\n"
  },
  {
    "path": "econml/automated_ml/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._automated_ml import (setAutomatedMLWorkspace, addAutomatedML,\r\n                            AutomatedMLModel, AutomatedMLMixin, EconAutoMLConfig)\r\n\r\n__all__ = [\"setAutomatedMLWorkspace\",\r\n           \"addAutomatedML\",\r\n           \"AutomatedMLModel\",\r\n           \"AutomatedMLMixin\",\r\n           \"EconAutoMLConfig\"]\r\n"
  },
  {
    "path": "econml/automated_ml/_automated_ml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"\nAutomated Machine Learning Support For EconML Estimators.\n\nThis allows analysts to use AutomatedML to automate the process of selecting models for models Y, T,\nand final of their causal inferenve estimator.\n\"\"\"\n\n# AzureML\nfrom azureml.core.experiment import Experiment\nfrom azureml.core import Workspace\nfrom azureml.train.automl.automlconfig import AutoMLConfig\nfrom azureml._base_sdk_common.common import ProjectSystemException\nfrom sklearn.multioutput import MultiOutputRegressor\n# helper imports\nimport time\nimport copy\n\n\nLINEAR_MODELS_SET = set([\n    \"ElasticNet\",\n    \"LassoLars\",\n    \"LinearRegressor\",\n    \"FastLinearRegressor\",\n    \"OnlineGradientDescentRegressor\",\n    \"SGDRegressor\"\n])\n\n\nSAMPLE_WEIGHTS_MODELS_SET = set([\n                                \"ElasticNet\",\n                                \"LightGBM\",\n                                \"GradientBoostingRegressor\",\n                                \"DecisionTreeRegressor\",\n                                \"KNeighborsRegressor\",\n                                \"LassoLars\",\n                                \"SGDRegressor\",\n                                \"RandomForestRegressor\",\n                                \"ExtraTreesRegressor\",\n                                \"LinearRegressor\",\n                                \"FastLinearRegressor\",\n                                \"OnlineGradientDescentRegressor\"\n                                ])\n\n\ndef setAutomatedMLWorkspace(create_workspace=False,\n                            create_resource_group=False, workspace_region=None, *,\n                            auth=None, subscription_id, resource_group, workspace_name):\n    \"\"\"\n    Set configuration file for AutomatedML actions with the EconML library.\n\n    If ``create_workspace`` is set true, a new workspace is created\n    for the user.\n\n    Parameters\n    ----------\n    create_workspace: bool, default False\n       If set to true, a new workspace will be created if the specified\n       workspace does not exist.\n\n    create_resource_group: bool, default False\n       If set to true, a new resource_group will be created if the specified\n       resource_group does not exist.\n\n    workspace_region: str, optional\n       Region of workspace, only necessary if create_new is set to true and a\n       new workspace is being created.\n\n    auth: azureml.core.authentication.AbstractAuthentication, optional\n        If set EconML will use auth object for handling Azure Authentication.\n        Otherwise, EconML will use interactive automation, opening an\n        authentication portal in the browser.\n\n    subscription_id: str, required\n       Azure subscription ID for the subscription under which to run the models\n\n    resource_group: str, required\n       Name of resource group of workspace to be created or set.\n\n    workspace_name: str, required\n       Name of workspace of workspace to be created or set.\n    \"\"\"\n    try:\n        ws = Workspace(subscription_id=subscription_id, resource_group=resource_group,\n                       workspace_name=workspace_name, auth=auth)\n        # write the details of the workspace to a configuration file to the notebook library\n        ws.write_config()\n        print(\"Workspace configuration has succeeded.\")\n    except ProjectSystemException:\n        if (create_workspace):\n            if (create_resource_group):\n                print(\"Workspace not accessible. Creating a new workspace and \\\n                resource group.\")\n                ws = Workspace.create(name=workspace_name,\n                                      subscription_id=subscription_id,\n                                      resource_group=resource_group,\n                                      location=workspace_region,\n                                      create_resource_group=create_resource_group,\n                                      sku='basic',\n                                      auth=auth,\n                                      exist_ok=True)\n                ws.get_details()\n            else:\n                print(\"Workspace not accessible. Set \\\n                create_resource_group = True and run again to create a new \\\n                workspace and resource group.\")\n        else:\n            print(\"Workspace not accessible. Set create_workspace = True \\\n            to create a new workspace.\")\n\n\ndef addAutomatedML(baseClass):\n    \"\"\"\n    Enable base class to use EconAutoMLConfig objects instead of models by mixing AutomatedMLMixin into the base class.\n\n    Once this Mixin has been added, EconML classes can be initialized with EconAutoMLConfig\n    objects rather than scikit learn models.\n\n\n    Parameters\n    ----------\n    baseClass: Class, required\n       Definition of a class that will serve as the parent class of the\n       AutomatedMLMixin.\n\n    Returns\n    -------\n    automatedMLClass: Class\n      A modified version of ``baseClass`` that accepts the parameters of the\n      AutomatedML Mixin rather in addition to the original class objects.\n\n    \"\"\"\n\n    class AutomatedMLClass(AutomatedMLMixin, baseClass):\n        pass\n    return AutomatedMLClass\n\n\nclass AutomatedMLModel():\n    def __init__(self, automl_config, workspace, experiment_name_prefix=\"aml_experiment\"):\n        \"\"\"\n        scikit-learn style model fitted and specified with automatedML.\n\n        automatedML uses AzureML's Automated Machine Learning library\n        to automatically preprocess data, specify features, and\n        selects a model given a pair of training data and labels.\n\n        Parameters\n        ----------\n        automl_config: azureml.train.automl.automlconfig.AutoMLConfig, required\n           Configuration for submitting an Automated Machine Learning experiment in Azure Machine Learning.\n           This configuration object contains and persists the parameters for configuring the experiment\n           run parameters, as well as the training data to be used at run time. For guidance on selecting\n           your settings, you may refer to\n           https://docs.microsoft.com/azure/machine-learning/service/how-to-configure-auto-train.\n\n        workspace: azureml.core.experiment.Experiment, optional\n            The main experiment to associated with the automatedML runs for\n\n        experiment_name_prefix: str, optional\n            Prefix of experiment name for generated by SciKitAutoMLModel. The full name of\n            the experiment will be {EXPERIMENT_NAME_PREFIX}_{INITIALIZE_EXPERIMENT_TIMESTAMP}.\n            Must be comprised of alphanumeric characters, hyphens, underscores and have at most 18 characters.\n        \"\"\"\n        self._innerModel = _InnerAutomatedMLModel(\n            automl_config, workspace, experiment_name_prefix=experiment_name_prefix)\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"\n        Select and fit model.\n\n        Parameters\n        ----------\n        X: ndarray or DataFrame, required\n           The training features to use when fitting pipelines during AutoML experiment.\n\n        y: ndarray or DataFrame, required\n           Training labels to use when fitting pipelines during AutoML experiment.\n\n        sample_weight: ndarray or DataFrame, optional\n            The weight to give to each training sample when running fitting pipelines,\n            each row should correspond to a row in X and y data.\n\n        experiment_name_prefix: str, optional\n            Prefix of experiment name for generated by SciKitAutoMLModel. The full name of\n            the experiment will be {EXPERIMENT_NAME_PREFIX}_{INITIALIZE_EXPERIMENT_TIMESTAMP}.\n            Must be comprised of alphanumeric characters, hyphens, underscores and have at most 18 characters.\n        \"\"\"\n        # if y is a multioutput model\n        if y.ndim > 1:\n            # Make sure second dimension has 1 or more item\n            if y.shape[1] > 1:\n                # switch _inner Model to a MultiOutputRegressor\n                self._innerModel = MultiOutputRegressor(self._innerModel)\n                self._innerModel.fit(X, y, sample_weight=sample_weight)\n                return\n            else:\n                # flatten array as automl only takes vectors for y\n                y = y.flatten()\n        self._innerModel.fit(X, y, sample_weight=sample_weight)\n\n    def predict(self, X):\n        \"\"\"\n        Predict using selected and fitted model.\n\n        X: ndarray or DataFrame, required\n           The training features to use for predicting labels\n        \"\"\"\n        return self._innerModel.predict(X)\n\n    def predict_proba(self, X):\n        \"\"\"\n        Predict using selected and fitted model.\n\n        X: ndarray or DataFrame, required\n           The training features to use for predicting label probabilities.\n        \"\"\"\n        return self._innerModel.predict_proba(X)\n\n\nclass _InnerAutomatedMLModel():\n    # Inner single model to be passed that wrapper can use to pass into MultiOutputRegressor\n    def __init__(self, automl_config, workspace,\n                 experiment_name_prefix=\"aml_experiment\"):\n        self._show_output = automl_config._show_output\n        self._workspace = workspace\n        self._automl_config = automl_config\n        self._experiment_name_prefix = experiment_name_prefix\n\n    def get_params(self, deep=True):\n        # Must be implemented for MultiOutputRegressor to view _InnerAutomatedMLModel\n        # as an sklearn estimator\n        return {\n            'workspace': self._workspace,\n            'automl_config': self._automl_config,\n            'experiment_name_prefix': self._experiment_name_prefix\n        }\n\n    def fit(self, X, y, sample_weight=None):\n        # fit implementation for a single output model.\n        # Create experiment for specified workspace\n        automl_config = copy.deepcopy(self._automl_config)\n        current_time = time.localtime()\n        current_time_string = time.strftime('%y_%m_%d-%H_%M_%S', current_time)\n        experiment_name = self._experiment_name_prefix + \"_\" + current_time_string\n        self._experiment = Experiment(self._workspace, experiment_name)\n        # Configure automl_config with training set information.\n        automl_config.user_settings['X'] = X\n        automl_config.user_settings['y'] = y\n        automl_config.user_settings['sample_weight'] = sample_weight\n        # Wait for remote run to complete, the set the model\n        print(\"Experiment \" + experiment_name + \" has started.\")\n        local_run = self._experiment.submit(automl_config, show_output=self._show_output)\n        print(\"Experiment \" + experiment_name + \" completed.\")\n        _, self._model = local_run.get_output()\n\n    def predict(self, X):\n        return self._model.predict(X)\n\n    def predict_proba(self, X):\n        return self._model.predict_proba(X)\n\n\nclass AutomatedMLMixin():\n    def __init__(self, *args, **kwargs):\n        \"\"\"\n        Mixin enabling users to leverage automatedML as their model of choice.\n\n        It instantiates\n        AutomatedMLModels for each automl_config provided and passes them as\n        parameters into its parent class.\n\n        Parameters\n        ----------\n        args: List, optional\n           args that are passed in order to initiate the final automatedML run.\n           Any arg, that is an AutoMLConfig, will be converted into as\n           AutomatedMLModel.\n\n        kwargs: Dict, optional\n           kwargs that are passed in order to initiate the final automatedML run.\n           Any kwarg, that is an AutoMLConfig, will be converted into as\n           AutomatedMLModel.\n        \"\"\"\n        # Loop through the kwargs and args if any of them is an AutoMLConfig file, pass them\n        # create model and pass model into final.\n        new_args = ()\n        for idx, arg in enumerate(args):\n            # If item is an automl config, get its corresponding\n            # AutomatedML Model and add it to new_Args\n            if isinstance(arg, EconAutoMLConfig):\n                arg = self._get_automated_ml_model(arg, f\"arg{idx}\")\n            new_args += (arg,)\n\n        for key in kwargs:\n            kwarg = kwargs[key]\n            # If item is an automl config, get its corresponding\n            # AutomatedML Model and set it for this key in\n            # kwargs\n            if isinstance(kwarg, EconAutoMLConfig):\n                kwargs[key] = self._get_automated_ml_model(kwarg, key)\n\n        super().__init__(*new_args, **kwargs)\n\n    def _get_automated_ml_model(self, automl_config, prefix):\n        # takes in either automated_ml config and instantiates\n        # an AutomatedMLModel\n        # The prefix can only be 18 characters long\n        # because prefixes come from kwarg_names, we must ensure they are\n        # short enough.\n        prefix = prefix[:18]\n        # Get workspace from config file.\n        workspace = Workspace.from_config()\n        return AutomatedMLModel(automl_config, workspace,\n                                experiment_name_prefix=prefix)\n\n\nclass EconAutoMLConfig(AutoMLConfig):\n\n    def __init__(self, sample_weights_required=False, linear_model_required=False, show_output=False, **kwargs):\n        \"\"\"\n        Azure AutoMLConfig object with added guards to ensure correctness when used with EconML.\n\n        Parameters\n        ----------\n        sample_weights_required: bool, default False\n           If set true, only models that require sample weights will be selected during\n           AutomatedML.\n\n        linear_model_required: bool, default False\n           If set to true, only linear models will be selected during AutomatedML.\n\n        show_output: bool, default False\n            If set to true, outputs for the corresponding AutomatedMLModel\n            will be shown when it is fitted.\n\n        kwargs: list, optional\n            List of kwargs to be passed to a correspodning AutoML Config object.\n            To view the full documentation of the kwargs, you may refer to\n            https://docs.microsoft.com/en-us/python/api/azureml-train-automl-client\n            /azureml.train.automl.automlconfig.automlconfig?view=azure-ml-py\n\n        \"\"\"\n        whitelist_models = None\n        if linear_model_required and sample_weights_required:\n            # Take the intersect of the white for sample\n            # weights and linear models\n            whitelist_models = list(LINEAR_MODELS_SET.intersection(SAMPLE_WEIGHTS_MODELS_SET))\n\n        else:\n            if (linear_model_required):\n                whitelist_models = list(LINEAR_MODELS_SET)\n            if (sample_weights_required):\n                whitelist_models = list(SAMPLE_WEIGHTS_MODELS_SET)\n\n        kwargs['whitelist_models'] = whitelist_models\n\n        # show output is not stored in the config in AutomatedML, so we need to make it a field.\n        self._show_output = show_output\n\n        super().__init__(**kwargs)\n"
  },
  {
    "path": "econml/cate_interpreter/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._interpreters import SingleTreeCateInterpreter, SingleTreePolicyInterpreter\r\n\r\n__all__ = [\"SingleTreeCateInterpreter\",\r\n           \"SingleTreePolicyInterpreter\"]\r\n"
  },
  {
    "path": "econml/cate_interpreter/_interpreters.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport abc\r\nimport numbers\r\nimport numpy as np\r\nfrom sklearn.tree import DecisionTreeRegressor\r\nfrom sklearn.utils import check_array\r\nfrom ..policy import PolicyTree\r\nfrom .._tree_exporter import (_SingleTreeExporterMixin,\r\n                              _CateTreeDOTExporter, _CateTreeMPLExporter,\r\n                              _PolicyTreeDOTExporter, _PolicyTreeMPLExporter)\r\n\r\n\r\nclass _SingleTreeInterpreter(_SingleTreeExporterMixin, metaclass=abc.ABCMeta):\r\n\r\n    @abc.abstractmethod\r\n    def interpret(self, cate_estimator, X):\r\n        \"\"\"\r\n        Interpret a linear CATE estimator when applied to a set of features.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_estimator : :class:`.LinearCateEstimator`\r\n            The fitted estimator to interpret\r\n\r\n        X : array_like\r\n            The features against which to interpret the estimator;\r\n            must be compatible shape-wise with the features used to fit\r\n            the estimator\r\n        \"\"\"\r\n        raise NotImplementedError(\"Abstract method\")\r\n\r\n\r\nclass SingleTreeCateInterpreter(_SingleTreeInterpreter):\r\n    \"\"\"\r\n    An interpreter for the effect estimated by a CATE estimator.\r\n\r\n    Parameters\r\n    ----------\r\n    include_model_uncertainty : bool, default False\r\n        Whether to include confidence interval information when building a\r\n        simplified model of the cate model. If set to True, then\r\n        cate estimator needs to support the `const_marginal_ate_inference` method.\r\n\r\n    uncertainty_level : double, default 0.05\r\n        The uncertainty level for the confidence intervals to be constructed\r\n        and used in the simplified model creation. If value=alpha\r\n        then a multitask decision tree will be built such that all samples\r\n        in a leaf have similar target prediction but also similar alpha\r\n        confidence intervals.\r\n\r\n    uncertainty_only_on_leaves : bool, default True\r\n        Whether uncertainty information should be displayed only on leaf nodes.\r\n        If False, then interpretation can be slightly slower, especially for cate\r\n        models that have a computationally expensive inference method.\r\n\r\n    splitter : str, default \"best\"\r\n        The strategy used to choose the split at each node. Supported\r\n        strategies are \"best\" to choose the best split and \"random\" to choose\r\n        the best random split.\r\n\r\n    max_depth : int, optional\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int, float, default 2\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int, float, default 1\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        If int, random_state is the seed used by the random number generator;\r\n        If RandomState instance, random_state is the random number generator;\r\n        If None, the random number generator is the RandomState instance used\r\n        by `np.random`.\r\n\r\n    max_leaf_nodes : int, optional\r\n        Grow a tree with ``max_leaf_nodes`` in best-first fashion.\r\n        Best nodes are defined as relative reduction in impurity.\r\n        If None then unlimited number of leaf nodes.\r\n\r\n    min_impurity_decrease : float, default 0.\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 include_model_uncertainty=False,\r\n                 uncertainty_level=0.05,\r\n                 uncertainty_only_on_leaves=True,\r\n                 splitter=\"best\",\r\n                 max_depth=None,\r\n                 min_samples_split=2,\r\n                 min_samples_leaf=1,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=None,\r\n                 random_state=None,\r\n                 max_leaf_nodes=None,\r\n                 min_impurity_decrease=0.):\r\n        self.include_uncertainty = include_model_uncertainty\r\n        self.uncertainty_level = uncertainty_level\r\n        self.uncertainty_only_on_leaves = uncertainty_only_on_leaves\r\n        self.criterion = \"squared_error\"\r\n        self.splitter = splitter\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.max_features = max_features\r\n        self.random_state = random_state\r\n        self.max_leaf_nodes = max_leaf_nodes\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n\r\n    def interpret(self, cate_estimator, X):\r\n        \"\"\"\r\n        Interpret the heterogeneity of a CATE estimator when applied to a set of features.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_estimator : :class:`.LinearCateEstimator`\r\n            The fitted estimator to interpret\r\n\r\n        X : array_like\r\n            The features against which to interpret the estimator;\r\n            must be compatible shape-wise with the features used to fit\r\n            the estimator\r\n\r\n        Returns\r\n        -------\r\n        self: object instance\r\n        \"\"\"\r\n        self.tree_model_ = DecisionTreeRegressor(criterion=self.criterion,\r\n                                                 splitter=self.splitter,\r\n                                                 max_depth=self.max_depth,\r\n                                                 min_samples_split=self.min_samples_split,\r\n                                                 min_samples_leaf=self.min_samples_leaf,\r\n                                                 min_weight_fraction_leaf=self.min_weight_fraction_leaf,\r\n                                                 max_features=self.max_features,\r\n                                                 random_state=self.random_state,\r\n                                                 max_leaf_nodes=self.max_leaf_nodes,\r\n                                                 min_impurity_decrease=self.min_impurity_decrease)\r\n        y_pred = cate_estimator.const_marginal_effect(X)\r\n\r\n        self.tree_model_.fit(X, y_pred.reshape((y_pred.shape[0], -1)))\r\n        paths = self.tree_model_.decision_path(X)\r\n        node_dict = {}\r\n        for node_id in range(paths.shape[1]):\r\n            mask = paths.getcol(node_id).toarray().flatten().astype(bool)\r\n            Xsub = X[mask]\r\n            if (self.include_uncertainty and\r\n                    ((not self.uncertainty_only_on_leaves) or (self.tree_model_.tree_.children_left[node_id] < 0))):\r\n                res = cate_estimator.const_marginal_ate_inference(Xsub)\r\n                node_dict[node_id] = {'mean': res.mean_point,\r\n                                      'std': res.std_point,\r\n                                      'ci': res.conf_int_mean(alpha=self.uncertainty_level)}\r\n            else:\r\n                cate_node = y_pred[mask]\r\n                node_dict[node_id] = {'mean': np.mean(cate_node, axis=0),\r\n                                      'std': np.std(cate_node, axis=0)}\r\n        self.node_dict_ = node_dict\r\n        return self\r\n\r\n    def _make_dot_exporter(self, *, out_file, feature_names, treatment_names, max_depth, filled,\r\n                           leaves_parallel, rotate, rounded,\r\n                           special_characters, precision):\r\n        return _CateTreeDOTExporter(self.include_uncertainty, self.uncertainty_level,\r\n                                    out_file=out_file, feature_names=feature_names,\r\n                                    treatment_names=treatment_names,\r\n                                    max_depth=max_depth,\r\n                                    filled=filled,\r\n                                    leaves_parallel=leaves_parallel, rotate=rotate, rounded=rounded,\r\n                                    special_characters=special_characters, precision=precision)\r\n\r\n    def _make_mpl_exporter(self, *, title, feature_names, treatment_names, max_depth,\r\n                           filled,\r\n                           rounded, precision, fontsize):\r\n        return _CateTreeMPLExporter(self.include_uncertainty, self.uncertainty_level,\r\n                                    title=title, feature_names=feature_names,\r\n                                    treatment_names=treatment_names,\r\n                                    max_depth=max_depth,\r\n                                    filled=filled,\r\n                                    rounded=rounded,\r\n                                    precision=precision, fontsize=fontsize)\r\n\r\n\r\nclass SingleTreePolicyInterpreter(_SingleTreeInterpreter):\r\n    \"\"\"\r\n    An interpreter for a policy estimated based on a CATE estimation.\r\n\r\n    Parameters\r\n    ----------\r\n    include_model_uncertainty : bool, default False\r\n        Whether to include confidence interval information when building a\r\n        simplified model of the cate model. If set to True, then\r\n        cate estimator needs to support the `const_marginal_ate_inference` method.\r\n\r\n    uncertainty_level : double, default 0.05\r\n        The uncertainty level for the confidence intervals to be constructed\r\n        and used in the simplified model creation. If value=alpha\r\n        then a multitask decision tree will be built such that all samples\r\n        in a leaf have similar target prediction but also similar alpha\r\n        confidence intervals.\r\n\r\n    uncertainty_only_on_leaves : bool, default True\r\n        Whether uncertainty information should be displayed only on leaf nodes.\r\n        If False, then interpretation can be slightly slower, especially for cate\r\n        models that have a computationally expensive inference method.\r\n\r\n    risk_level : float, optional\r\n        If None then the point estimate of the CATE of every point will be used as the\r\n        effect of treatment. If any float alpha and risk_seeking=False (default), then the\r\n        lower end point of an alpha confidence interval of the CATE will be used.\r\n        Otherwise if risk_seeking=True, then the upper end of an alpha confidence interval\r\n        will be used.\r\n\r\n    risk_seeking : bool, default False,\r\n        Whether to use an optimistic or pessimistic value for the effect estimate at a\r\n        sample point. Used only when risk_level is not None.\r\n\r\n    max_depth : int, optional\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int, float, default 2\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int, float, default 1\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    min_impurity_decrease : float, default 0.\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        If int, random_state is the seed used by the random number generator;\r\n        If RandomState instance, random_state is the random number generator;\r\n        If None, the random number generator is the RandomState instance used\r\n        by `np.random`.\r\n\r\n    Attributes\r\n    ----------\r\n    tree_model_ : :class:`~econml.policy.PolicyTree`\r\n        The policy tree model that represents the learned policy; available only after\r\n        :meth:`interpret` has been called.\r\n    policy_value_ : float\r\n        The value of applying the learned policy, applied to the sample used with :meth:`interpret`\r\n    always_treat_value_ : float\r\n        The value of the policy that always treats all units, applied to the sample used with :meth:`interpret`\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 include_model_uncertainty=False,\r\n                 uncertainty_level=0.05,\r\n                 uncertainty_only_on_leaves=True,\r\n                 risk_level=None,\r\n                 risk_seeking=False,\r\n                 max_depth=None,\r\n                 min_samples_split=2,\r\n                 min_samples_leaf=1,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=None,\r\n                 min_balancedness_tol=.45,\r\n                 min_impurity_decrease=0.,\r\n                 random_state=None):\r\n        self.include_uncertainty = include_model_uncertainty\r\n        self.uncertainty_level = uncertainty_level\r\n        self.uncertainty_only_on_leaves = uncertainty_only_on_leaves\r\n        self.risk_level = risk_level\r\n        self.risk_seeking = risk_seeking\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.max_features = max_features\r\n        self.random_state = random_state\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n\r\n    def interpret(self, cate_estimator, X, sample_treatment_costs=None):\r\n        \"\"\"\r\n        Interpret a policy based on a linear CATE estimator when applied to a set of features.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_estimator : :class:`.LinearCateEstimator`\r\n            The fitted estimator to interpret\r\n\r\n        X : array_like\r\n            The features against which to interpret the estimator;\r\n            must be compatible shape-wise with the features used to fit\r\n            the estimator\r\n\r\n        sample_treatment_costs : array_like, optional\r\n            The cost of treatment.  Can be a scalar or have dimension (n_samples, n_treatments)\r\n            or (n_samples,) if T is a vector\r\n\r\n        Returns\r\n        -------\r\n        self: object instance\r\n        \"\"\"\r\n        if X is not None:\r\n            X = check_array(X)\r\n            X_in = X\r\n        else:\r\n            X = np.empty(shape=(1, 0))\r\n            X_in = None\r\n\r\n        self.tree_model_ = PolicyTree(criterion='neg_welfare',\r\n                                      splitter='best',\r\n                                      max_depth=self.max_depth,\r\n                                      min_samples_split=self.min_samples_split,\r\n                                      min_samples_leaf=self.min_samples_leaf,\r\n                                      min_weight_fraction_leaf=self.min_weight_fraction_leaf,\r\n                                      max_features=self.max_features,\r\n                                      min_impurity_decrease=self.min_impurity_decrease,\r\n                                      min_balancedness_tol=self.min_balancedness_tol,\r\n                                      honest=False,\r\n                                      random_state=self.random_state)\r\n\r\n        if self.risk_level is None:\r\n            y_pred = cate_estimator.const_marginal_effect(X_in)\r\n        elif not self.risk_seeking:\r\n            y_pred, _ = cate_estimator.const_marginal_effect_interval(X_in, alpha=self.risk_level)\r\n        else:\r\n            _, y_pred = cate_estimator.const_marginal_effect_interval(X_in, alpha=self.risk_level)\r\n\r\n        # average the outcome dimension if it exists and ensure 2d y_pred\r\n        if y_pred.ndim == 3:\r\n            y_pred = np.mean(y_pred, axis=1)\r\n        elif y_pred.ndim == 2:\r\n            if (len(cate_estimator._d_y) > 0) and cate_estimator._d_y[0] > 1:\r\n                y_pred = np.mean(y_pred, axis=1, keepdims=True)\r\n        elif y_pred.ndim == 1:\r\n            y_pred = y_pred.reshape((-1, 1))\r\n\r\n        if sample_treatment_costs is not None:\r\n            if isinstance(sample_treatment_costs, numbers.Real):\r\n                y_pred -= sample_treatment_costs\r\n            else:\r\n                sample_treatment_costs = check_array(sample_treatment_costs, ensure_2d=False)\r\n                if sample_treatment_costs.ndim == 1:\r\n                    sample_treatment_costs = sample_treatment_costs.reshape((-1, 1))\r\n                if sample_treatment_costs.shape == y_pred.shape:\r\n                    y_pred -= sample_treatment_costs\r\n                else:\r\n                    raise ValueError(\"`sample_treatment_costs` should be a double scalar \"\r\n                                     \"or have dimension (n_samples, n_treatments) or (n_samples,) if T is a vector\")\r\n\r\n        # get index of best treatment\r\n        all_y = np.hstack([np.zeros((y_pred.shape[0], 1)), np.atleast_1d(y_pred)])\r\n\r\n        self.tree_model_.fit(X, all_y)\r\n        self.policy_value_ = np.mean(np.max(self.tree_model_.predict_value(X), axis=1))\r\n        self.always_treat_value_ = np.mean(y_pred, axis=0)\r\n\r\n        paths = self.tree_model_.decision_path(X)\r\n        node_dict = {}\r\n        for node_id in range(paths.shape[1]):\r\n            mask = paths.getcol(node_id).toarray().flatten().astype(bool)\r\n            Xsub = X_in[mask] if X_in is not None else None\r\n            if (self.include_uncertainty and\r\n                    ((not self.uncertainty_only_on_leaves) or (self.tree_model_.tree_.children_left[node_id] < 0))):\r\n                res = cate_estimator.const_marginal_ate_inference(Xsub)\r\n                node_dict[node_id] = {'mean': res.mean_point,\r\n                                      'std': res.std_point,\r\n                                      'ci': res.conf_int_mean(alpha=self.uncertainty_level)}\r\n            else:\r\n                cate_node = y_pred[mask]\r\n                node_dict[node_id] = {'mean': np.mean(cate_node, axis=0),\r\n                                      'std': np.std(cate_node, axis=0)}\r\n        self.node_dict_ = node_dict\r\n\r\n        return self\r\n\r\n    def treat(self, X):\r\n        \"\"\"\r\n        Assign treatment to a set of units using the policy model learned by a call to :meth:`interpret`.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like\r\n            The features for the units to treat;\r\n            must be compatible shape-wise with the features used during interpretation\r\n\r\n        Returns\r\n        -------\r\n        T : array_like\r\n            The treatments implied by the policy learned by the interpreter, with treatment 0, meaning\r\n            no treatment, and treatment 1 meains the first treatment, etc.\r\n        \"\"\"\r\n        assert self.tree_model_ is not None, \"Interpret must be called prior to trying to assign treatment.\"\r\n        return self.tree_model_.predict(X)\r\n\r\n    def _make_dot_exporter(self, *, out_file, feature_names, treatment_names, max_depth, filled,\r\n                           leaves_parallel, rotate, rounded,\r\n                           special_characters, precision):\r\n        title = \"Average policy gains over no treatment: {} \\n\".format(np.around(self.policy_value_, precision))\r\n        title += \"Average policy gains over constant treatment policies for each treatment: {}\".format(\r\n            np.around(self.policy_value_ - self.always_treat_value_, precision))\r\n        return _PolicyTreeDOTExporter(out_file=out_file, title=title,\r\n                                      treatment_names=treatment_names,\r\n                                      feature_names=feature_names,\r\n                                      max_depth=max_depth,\r\n                                      filled=filled, leaves_parallel=leaves_parallel, rotate=rotate,\r\n                                      rounded=rounded, special_characters=special_characters,\r\n                                      precision=precision)\r\n\r\n    def _make_mpl_exporter(self, *, title, feature_names, treatment_names, max_depth, filled,\r\n                           rounded, precision, fontsize):\r\n        title = \"\" if title is None else title\r\n        title += \"Average policy gains over no treatment: {} \\n\".format(np.around(self.policy_value_, precision))\r\n        title += \"Average policy gains over constant treatment policies for each treatment: {}\".format(\r\n            np.around(self.policy_value_ - self.always_treat_value_, precision))\r\n        return _PolicyTreeMPLExporter(treatment_names=treatment_names,\r\n                                      title=title,\r\n                                      feature_names=feature_names,\r\n                                      max_depth=max_depth,\r\n                                      filled=filled,\r\n                                      rounded=rounded,\r\n                                      precision=precision, fontsize=fontsize)\r\n"
  },
  {
    "path": "econml/data/__init__.py",
    "content": ""
  },
  {
    "path": "econml/data/color-edits.sty",
    "content": "\\ProvidesPackage{color-edits}\n\n\\def\\@SuppressEdits{no}\n\\DeclareOption{suppress}{%\n\\def\\@SuppressEdits{yes}\n}\n\n\\def\\@ShowDeletions{no}\n\\DeclareOption{showdeletions}{\\def\\@ShowDeletions{yes}}\n\n\\ProcessOptions\n\n% Provides useful macros for making recent edits by different authors\n% visible with colors in a jointly edited LaTeX document.\n% Different authors are added with \\addauthor{AUTH}{color}\n% (the only exported command provided by this package).\n% Invocation of \\addauthor generates four new commands\n% (where AUTH should be replaced by the supplied name of the author,\n% e.g., initials, or whatever else is used):\n% 1. \\AUTHedit{text}: displayes the 'text' in the color assigned to the\n% author.\n% 2. \\AUTHcomment{text}: generates '[AUTH: text]' in the color\n% assigned, i.e., annotates the text as a comment written by the\n% author.\n% 3. \\AUTHmargincomment{text}: generates a marker in the author's\n% color at the given spot, and writes the text in the color in the\n% margin. \n% 4. \\AUTHdelete{text}: per default, displays a marker in the author's\n% color at the given spot, and marks in the margin that the author\n% deleted something in this place. (This allows co-authors to check\n% what was deleted.)\n%\n% As an example, \\addauthor{dk}{blue} generates the commands\n% \\dkedit{}, \\dkcomment{}, \\dkmargincomment{}, \\dkdelete{}, all of\n% which display material in blue.\n%\n% The package allows two options:\n% 1. 'suppress' suppresses all comments and deletion markers, and\n% removes the coloring from text in \\AUTHedit{}. Thus, it essentially\n% displays the text as it would be once all comments are explicitly\n% removed (though there may be small spacing issues, so they should\n% still be explicitly removed eventually).\n% 2. 'showdeletions' replaces the semantics of the \\AUTHdelete{text}\n% command, so that instead the text is still displayed, but struck out\n% (and in the color of the coresponding author). This allows\n% co-authors to see more easily what has been deleted, without having\n% to check the source code.\n\n\\usepackage{ifthen}\n\\usepackage{color}\n\\usepackage{marginnote}\n\\usepackage[normalem]{ulem}\n\n\\newcommand{\\@edit}[2]{%\n\\ifthenelse{\\equal{\\@SuppressEdits}{yes}}{#2}{\\textcolor{#1}{#2}}%\n}\n\n\\newcommand{\\@comment}[2]{%\n\\ifthenelse{\\equal{\\@SuppressEdits}{yes}}{}{\\textcolor{#1}{#2}}%\n}\n\n\\newcommand{\\@margincomment}[2]{%\n\\ifthenelse{\\equal{\\@SuppressEdits}{yes}}{}{%\n\\marginnote{\\scriptsize\\textcolor{#1}{#2}}%\n}}\n\n\\newcommand{\\@delete}[3]{%\n\\ifthenelse{\\equal{\\@SuppressEdits}{yes}}{}{%\n\\ifthenelse{\\equal{\\@ShowDeletions}{yes}}{%\n\\textcolor{#1}{\\ifmmode\\text{\\sout{\\ensuremath{#2}}}\\else\\sout{#2}\\fi}}{%\n\\textcolor{#1}{\\ensuremath{[\\bullet]}}%\n\\marginnote{\\scriptsize\\textcolor{#1}{#3 deleted here}}}}%\n}\n\n\\newcommand{\\addauthor}[2]{%\n\\expandafter\\def\\csname #1edit\\endcsname ##1{\\@edit{#2}{##1}}\n\\expandafter\\def\\csname #1comment\\endcsname ##1{\\@comment{#2}{[#1: ##1]}}\n\\expandafter\\def\\csname #1margincomment\\endcsname ##1{\\@margincomment{#2}{[#1: ##1]}}\n\\expandafter\\def\\csname #1delete\\endcsname ##1{\\@delete{#2}{##1}{#1}}\n}\n\n\n"
  },
  {
    "path": "econml/data/data_doc.bib",
    "content": "@article{hill2011bayesian,\n\ttitle={Bayesian nonparametric modeling for causal inference},\n\tauthor={Hill, Jennifer L},\n\tjournal={Journal of Computational and Graphical Statistics},\n\tvolume={20},\n\tnumber={1},\n\tpages={217--240},\n\tyear={2011},\n\tpublisher={Taylor \\& Francis}\n}\n\n"
  },
  {
    "path": "econml/data/data_doc.tex",
    "content": "\\documentclass[10pt,letterpaper]{article}\n\n\\usepackage[margin=1in]{geometry}\n\\setlength{\\itemsep}{2pt}\n\\setlength{\\topsep}{2pt}\n\\setlength{\\itemsep}{2pt}\n\n\\newcommand{\\ilias}[1]{{\\color{blue}{#1}}}\n\\usepackage{amsmath,amsfonts,graphpap,amscd,mathrsfs,graphicx,lscape}\n\\usepackage{epsfig,amssymb,amstext,xspace}\n\\usepackage{float}\t\n\\usepackage{hyperref}\n\\usepackage{cleveref}\n\\usepackage[numbers]{natbib}\n\\usepackage{listings}\n\\usepackage{color}\n\\usepackage{longtable}\n\n\\definecolor{codegreen}{rgb}{0,0.6,0}\n\\definecolor{codegray}{rgb}{0.5,0.5,0.5}\n\\definecolor{codepurple}{rgb}{0.58,0,0.82}\n\\definecolor{backcolour}{rgb}{0.95,0.95,0.92}\n\n\\usepackage{color}              % Need the color package\n\\usepackage{epsfig}\n\n\\usepackage[]{color-edits}\n%\\usepackage[suppress]{color-edits}\n\\addauthor{vs}{green}\n\\addauthor{mo}{red}\n\\addauthor{kb}{blue}\n\\addauthor{gl}{brown}\n\\usepackage{amsthm}\n\\usepackage{nicefrac}\n\n\\usepackage{subcaption}\n\n\\title{Data Documentation}\n\n\\begin{document}\n\t\\maketitle    \n\t\\date{}\n\t\\begin{abstract}\n\t\tWe provide documentation for the datasets used in the testing and benchmarking of CATE estimators. \n\t\\end{abstract}\n\t\n\t\\section{Infant Health Development Program (IHDP) Data}\n\t\\subsection{Description}\n\tThe Infant Health Development Program was a randomized study designed to reduce the developmental and health problems of low birthweight premature infants. The study started in 1985 and provided the treatment group with home visits, high quality child care and enrollment at a child development. The children's cognitive and motor skills were tested at age three and an experimental evaluation showed these scores were significantly higher in the treatment group compared to the control group. \n\t\n\t\tThe study collected data on $\\sim$80 pretreatment variables. The dataset we employ contains the following subset of the features:\n\t\n\\begin{center}\n\t\\begin{longtable}{||c | p{0.15\\linewidth} p{0.4\\linewidth} l c c||}\n\t\t\\hline\n\t\t & Feature & Description & Type & \\texttt{sim} & \\texttt{example}\\\\ [0.5ex] \n\t\t\\hline\\hline\n\t\t1 & \\textbf{treat} & Treatment assignment & Binary & \\checkmark\n\t\t & \\checkmark \\\\\n\t\t\\hline \n\t\t2 & \\textbf{bw} & Birth weight in grams & Continuous & \\checkmark & \\checkmark \\\\\n\t\t\\hline\n\t\t3 & \\textbf{b.head} & Child's head circumference (cm) at birth & Continuous & \\checkmark & \\\\\n\t\t\\hline\n\t\t4 & \\textbf{preterm} & Number of weeks infant preterm  & Continuous & \\checkmark & \\checkmark\\\\\n\t\t\\hline\n\t\t5 & \\textbf{birth.o} & Birth order  & Continuous & \\checkmark & \\checkmark\\\\\n\t\t\\hline\n\t\t6 & \\textbf{nnhealth} & Neonatal health index  & Continuous & \\checkmark & \\checkmark \\\\\n\t\t\\hline\n\t\t7 & \\textbf{momage} & Age of mother at child's birth & Continuous & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t8 & \\textbf{sex} & Child's gender & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t9 & \\textbf{twin} & Is child a twin & Binary & \\checkmark &  \\\\ \n\t\t\\hline\n\t\t10 & \\textbf{b.marr} & Was mother married at birth & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t11 & \\textbf{mom.lths} & Mother's education: less than high school & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t12 & \\textbf{mom.hs} & Mother's education: high school  & Binary & \\checkmark & \\checkmark\\\\ \n\t\t\\hline\n\t\t13 & \\textbf{mom.scoll} & Mother's education: some college & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t14 & \\textbf{cig} & Did mother smoke during pregnancy & Binary & \\checkmark &  \\\\ \n\t\t\\hline\n\t\t15 & \\textbf{first} & Is child first born & Binary & \\checkmark &  \\\\ \n\t\t\\hline\n\t\t16 & \\textbf{booze} & Did mother drink during pregnancy & Binary & \\checkmark &  \\\\ \n\t\t\\hline\n\t\t17 & \\textbf{drugs} & Did mother do drugs during pregnancy & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t18 & \\textbf{work.dur} & Did mother work during pregnancy & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t19 & \\textbf{prenatal} & Did mother receive prenatal care & Binary & \\checkmark & \\\\ \n\t\t\\hline\n\t\t20 & \\textbf{site1-side8} & Program site 1 through 8 & Binary & \\checkmark & \\checkmark \\\\ \n\t\t\\hline\n\t\t21 & \\textbf{momwhite, black, hisp} & Is mother white, black or hisp & Binary & \\checkmark & \\checkmark\\\\ \n\t\t\\hline\n\t\t22 & \\textbf{iqsb.36} & Child IQ score at 36 months & Continuous & & \\checkmark\\\\ \\hline\n\t\t23 & \\textbf{ncdctt} & Participation in the study (100s of days) & Continuous & & \\checkmark \\\\ \\hline\n\t\t24 & \\textbf{dose400} & Is the participation in the study \\textgreater 400 days & Binary & & \\checkmark\\\\ \\hline\n\t\t25 & \\textbf{parity} & \\# of children the mother has given birth to & Continuous & & \\checkmark\\\\ \\hline\n\t\t26 & \\textbf{moreprem} & \\# of other children mom has given birth to prematurely & Continuous & & \\checkmark\\\\ \\hline\n\t\t27 & \\textbf{cigs} & \\# cigarettes mother consumes & Continuous & & \\checkmark \\\\ \\hline\n\t\t28 & \\textbf{alcohol} & Units of alcohol mother consumes & Continuous & & \\checkmark \\\\ \\hline\n\t\t29 & \\textbf{ppvt.imp} & Peabody Picture Vocabulary Test for mom one year into program. Missing values are imputed & Continuous & & \\checkmark\\\\ \\hline\n\t\t30 & \\textbf{bwg} & Birth weight group & Binary & & \\checkmark \\\\ \\hline\n\t\t31 & \\textbf{mlt.birt} & Number of multiple births mother has had & Continuous & & \\checkmark \\\\ \\hline\n\t\t32 & \\textbf{livwho} & Family member the child primarily lives with & Categorical & & \\checkmark\\\\ \\hline\n\t\t33 & \\textbf{language} & Primary language spoken at home & Categorical & & \\checkmark \\\\ \\hline\n\t\t34 & \\textbf{whenpren} & Trimester when mother's prenatal care began & Continuous & & \\checkmark\\\\ \\hline\n\t\t35 & \\textbf{otherstudy} & Is participant enrolled in other study & Binary & & \\checkmark\\\\ \\hline\n\t\t\\caption{Overview of covariates selected in two available IHDP datasets (\\texttt{sim.csv}, \\texttt{example.csv}).}\n\\end{longtable}\n\\end{center}\n\\subsection{Usage}\n\t\n\tThe dataset was first made available by Jennifer L. Hill who digitized the 1985 IHDP data in order to study the performance of CATE estimators on real-world data (\\cite{hill2011bayesian}). We have three datasets available:\n\t\\begin{itemize}\n\t\t\\item \\texttt{example\\_full.csv}: The complete, unprocessed IHDP dataset. \n\t\t\n\t\tThis dataset contains all digitized data for the 985 participants in the study. It is unprocessed and the meaning of the different covariates is not well documented. \n\t\t\n\t\t\\item \\texttt{sim.csv}: Curated dataset for simulating outcomes in the semi-synthetic data setting.\n\t\t\n\t\tThis dataset is derived from the full dataset by selecting only a subset of the \\textit{pre-study} covariates. While the treatment assignment has been left intact, the true outcome has been removed. This data should be used together with simulated outcomes. \n\n\t\t\\item \\texttt{example.csv}: Curated dataset for calculating treatment effects with real outcomes in the observational data setting.\n\t\t\n\t\tThis dataset is derived from the full dataset and contains a subset of the \\textit{pre-treatment} covariates (since treatment started one year after the study, there are more variables available in this dataset). The treatment assignment, the true participation in the study (in days $\\rightarrow$ a continuous treatment) and the outcome (IQ at age 3) are available.\n\t\\end{itemize}\n\tThese datasets have been used in literature to compare treatment effect estimators. We now describe their intended usages.\n\t\\subsubsection{Semi-synthetic data setting with generated outcomes and bias insertion}\n\tIn this scenario, the covariates and treatment assignment are used, but a subset of the treatment group (children with non-white mothers) is removed, thus introducing the type of bias one would expect with observational studies. Based on the goal of the CATE estimator comparison, the outcomes are generated as follows:\n\t\\begin{itemize}\n\t\t\\item Constant treatment effect\n\t\t\\begin{align*}\n\t\tY(0) & = X\\beta_A + \\mathcal{N}(0, 1)\\\\\n\t\tY(1) & = X\\beta_A + 4 + \\mathcal{N}(0, 1)\n\t\t\\end{align*}\n\twhere the coefficients of vector $\\beta_A$ are sampled from $(0,1,2,3,4)$ with probabilities $(0.5, 0.2, 0.15, 0.1, 0.05)$. It is assumed that $X$ has been standardized prior to the analysis. This is known as ``Response Surface A\" in literature. \n\t\t\\item Heterogeneous treatment effect \n\t\t\\begin{align*}\n\t\tY(0) & = \\exp\\left((X+W)\\beta_B\\right) + \\mathcal{N}(0, 1)\\\\\n\t\tY(1) & = X\\beta_B - \\omega_B^S + \\mathcal{N}(0, 1)\n\t\t\\end{align*}\n\twhere $W$ is a constant matrix with the same shape as $X$ and entries equal to $0.5$, the coefficients of vector $\\beta_B$ are sampled from $(0,0.1,0.2,0.3,0.4)$ with probabilities $(0.6, 0.1, 0.1, 0.1, 0.1)$, and $\\omega_B^S$ is a calculated for every simulation such that the CATT equals $4$. This is known as ``Response Surface B\" in literature. \n\t\\end{itemize}\n\tThe outcomes are generated for $N=1000$ simulations and the PEHE (precision in estimating heterogeneous treatment effects) is calculated.\n\t\\subsubsection{Observational data setting with binary treatment}\n\tIn this scenario, we consider the true participation level in the study (in days) to be the treatment. Since participants in the treated cohort self-selected into different participation levels, this setting is essentially an observational one.\n\t\n\tThe participation level varies from $0$ to $468$ days with a median of $372$ days. This variable can be discretized into ``low\" (\\textless 400 days) and ``high\" (\\textgreater 400 days). The participants with ``low\" participation are removed from the dataset, thus allowing us to compare the control group ($0$ participation) with the treated group (\"high\" participation), essentially creating a binary treatment variable. Since there is no ground truth for the treatment effect in this case, the author of \\cite{hill2011bayesian} suggests using balance statistics to compare estimators.\n\t\\subsubsection{Observational data setting with continuous treatment}\n\tThis scenario is similar to the one above, except that the participation level is not discretized and instead we consider it to be a continuous treatment variable. \n\t\n\t\n\t\\bibliographystyle{plainnat}\n\t\\bibliography{data_doc}\n\t  \n\t\n\\end{document}\n\t\n\t"
  },
  {
    "path": "econml/data/dgps.py",
    "content": "import os\nimport numpy as np\nimport pandas as pd\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.utils import check_random_state\n\n_ihdp_sim_file = os.path.join(os.path.dirname(__file__), \"ihdp\", \"sim.csv\")\n_ihdp_sim_data = pd.read_csv(_ihdp_sim_file)\n\n\ndef ihdp_surface_A(random_state=None):\n    \"\"\"\n    Generate semi-synthetic, constant treatment effect data according to response surface A from Hill (2011).\n\n    Parameters\n    ----------\n    random_state : int, RandomState instance, or None, default None\n            If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    Returns\n    -------\n    Y : array_like, shape (n, d_y)\n        Outcome for the treatment policy.\n\n    T : array_like, shape (n, d_t)\n        Binary treatment policy.\n\n    X : array_like, shape (n, d_x)\n        Feature vector that captures heterogeneity.\n    \"\"\"\n    # Remove children with nonwhite mothers from the treatment group\n    T, X = _process_ihdp_sim_data()\n    n = X.shape[0]\n    d_x = X.shape[1]\n    random_state = check_random_state(random_state)\n    beta = random_state.choice([0, 1, 2, 3, 4], size=d_x, replace=True, p=[0.5, 0.2, 0.15, 0.1, 0.05])\n    Y = np.dot(X, beta) + T * 4 + random_state.normal(0, 1, size=n)\n    true_TE = np.ones(X.shape[0]) * 4\n    return Y, T, X, true_TE\n\n\ndef ihdp_surface_B(random_state=None):\n    \"\"\"\n    Generate semi-synthetic, heterogeneous treatment effect data according to response surface B from Hill (2011).\n\n    Parameters\n    ----------\n    random_state : int, RandomState instance, or None, default None\n            If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    Returns\n    -------\n    Y : array_like, shape (n, d_y)\n        Outcome for the treatment policy.\n\n    T : array_like, shape (n, d_t)\n        Binary treatment policy.\n\n    X : array_like, shape (n, d_x)\n        Feature vector that captures heterogeneity.\n    \"\"\"\n    T, X = _process_ihdp_sim_data()\n    n = X.shape[0]\n    d_x = X.shape[1]\n    random_state = check_random_state(random_state)\n    beta = random_state.choice([0, 0.1, 0.2, 0.3, 0.4], size=d_x, replace=True, p=[0.6, 0.1, 0.1, 0.1, 0.1])\n    offset = np.concatenate((np.zeros((n, 1)), np.ones((n, d_x - 1)) * 0.5), axis=1)\n    omega = np.mean((np.dot(X, beta) - np.exp(np.dot(X + offset, beta)))[T == 1]) - 4\n    Y = (np.dot(X, beta) - omega) * T + np.exp(np.dot(X + offset, beta)) * (1 - T) + random_state.normal(0, 1, size=n)\n    true_TE = ((np.dot(X, beta) - omega) - np.exp(np.dot(X + offset, beta)))\n    return Y, T, X, true_TE\n\n\ndef _process_ihdp_sim_data():\n    # Remove children with nonwhite mothers from the treatment group\n    data_subset = _ihdp_sim_data[~((_ihdp_sim_data['treat'] == 1) & (_ihdp_sim_data['momwhite'] == 0))]\n    T = data_subset['treat'].values\n    # Select columns\n    X = data_subset[['bw', 'b.head', 'preterm', 'birth.o', 'nnhealth', 'momage',\n                     'sex', 'twin', 'b.marr', 'mom.lths', 'mom.hs', 'mom.scoll', 'cig',\n                     'first', 'booze', 'drugs', 'work.dur', 'prenatal', 'site1', 'site2',\n                     'site3', 'site4', 'site5', 'site6', 'site7']].values\n    # Scale the numeric variables\n    X[:, :6] = StandardScaler().fit_transform(X[:, :6])\n    # Change the binary variable 'first' takes values in {1,2}\n    X[:, 13] = X[:, 13] + 1\n    # Append a column of ones as intercept\n    X = np.insert(X, 0, np.ones(X.shape[0]), axis=1)\n    return T, X\n"
  },
  {
    "path": "econml/data/dynamic_panel_dgp.py",
    "content": "import numpy as np\nfrom econml.utilities import cross_product\nfrom statsmodels.tools.tools import add_constant\nimport pandas as pd\nimport scipy as sp\nfrom scipy.stats import expon\nfrom sklearn.linear_model import LinearRegression\nimport matplotlib.pyplot as plt\nimport joblib\nimport os\n\n\ndir = os.path.dirname(__file__)\n\n# covariance matrix\n\n\ndef new_cov_matrix(cov):\n    p = cov.shape[0]\n    # get eigen value and eigen vectors\n    e_val, e_vec = sp.linalg.eigh(cov)\n    start = [0, 35, 77, 86]\n    end = [35, 77, 86, p]\n    e_val_new = np.array([])\n    for i, j in zip(start, end):\n        e_val_new = np.append(e_val_new, linear_approximation(i, j, e_val))\n    # simulate eigen vectors\n    e_vec_new = np.zeros_like(e_vec)\n    for i in range(p):\n        w = np.zeros(p)  # , np.random.normal(0.01, 0.01, size=p)\n        w[np.random.choice(p, 6)] += np.random.normal(0.01, 0.06, size=(6))\n        e_vec_new[:, i] = w / np.linalg.norm(w)\n    # keep the top 4 eigen value and corresponding eigen vector\n    e_vec_new[:, -4:] = e_vec[:, -4:]\n    e_val_new[-4:] = e_val[-4:]\n    # replace the negative eigen values\n    e_val_new[np.where(e_val_new < 0)] = e_val[np.where(e_val_new < 0)]\n    # generate a new covariance matrix\n    cov_new = e_vec_new.dot(np.diag(e_val_new)).dot(e_vec_new.T)\n    return cov_new\n\n# get linear approximation of eigen values\n\n\ndef linear_approximation(start, end, e_val):\n    est = LinearRegression()\n    X = np.arange(start, end).reshape(-1, 1)\n    est.fit(X, e_val[start:end])\n    pred = est.predict(X)\n    return pred\n\n\n# coefs\ndef generate_coefs(index, columns):\n    simulated_coefs_df = pd.DataFrame(0, index=index, columns=columns)\n    # get the indices of each group of features\n    ind_demo = [columns.index(col) for col in columns if \"demo\" in col]\n    ind_proxy = [columns.index(col) for col in columns if \"proxy\" in col]\n    ind_investment = [columns.index(col)\n                      for col in columns if \"investment\" in col]\n\n    for i in range(7):\n        outcome_name = simulated_coefs_df.index[i]\n        if \"proxy\" in outcome_name:\n            ind_same_proxy = [\n                ind for ind in ind_proxy if outcome_name in columns[ind]]\n            # print(ind_same_proxy)\n            random_proxy_name = np.random.choice(\n                [proxy for proxy in index[:4] if proxy != outcome_name]\n            )\n            ind_random_other_proxy = [\n                ind for ind in ind_proxy if random_proxy_name in columns[ind]\n            ]\n            # demo\n            simulated_coefs_df.iloc[\n                i, np.random.choice(ind_demo, 2)\n            ] = np.random.uniform(0.004, 0.05)\n            # same proxy\n            simulated_coefs_df.iloc[i, ind_same_proxy] = sorted(\n                np.random.choice(expon.pdf(np.arange(10)) *\n                                 5e-1, 6, replace=False)\n            )\n            simulated_coefs_df.iloc[i, ind_random_other_proxy] = sorted(\n                np.random.choice(expon.pdf(np.arange(10)) *\n                                 5e-2, 6, replace=False)\n            )\n        elif \"investment\" in outcome_name:\n            ind_same_invest = [\n                ind for ind in ind_investment if outcome_name in columns[ind]\n            ]\n            random_proxy_name = np.random.choice(index[:4])\n            ind_random_other_proxy = [\n                ind for ind in ind_proxy if random_proxy_name in columns[ind]\n            ]\n            simulated_coefs_df.iloc[\n                i, np.random.choice(ind_demo, 2)\n            ] = np.random.uniform(0.001, 0.05)\n            simulated_coefs_df.iloc[i, ind_same_invest] = sorted(\n                np.random.choice(expon.pdf(np.arange(10)) *\n                                 5e-1, 6, replace=False)\n            )\n            simulated_coefs_df.iloc[i, ind_random_other_proxy] = sorted(\n                np.random.choice(expon.pdf(np.arange(10)) *\n                                 1e-1, 6, replace=False)\n            )\n    return simulated_coefs_df\n\n\n# residuals\n\n\ndef simulate_residuals(ind):\n    n, n_pos, n_neg = joblib.load(os.path.join(dir, f\"input_dynamicdgp/n_{ind}.jbl\"))\n    # gmm\n    est = joblib.load(os.path.join(dir, f\"input_dynamicdgp/gm_{ind}.jbl\"))\n    x_new = est.sample(n - n_pos - n_neg)[0].flatten()\n\n    # log normal on outliers\n    if n_pos > 0:\n        # positive outliers\n        s, loc, scale = joblib.load(os.path.join(dir, f\"input_dynamicdgp/lognorm_pos_{ind}.jbl\"))\n        fitted_pos_outliers = sp.stats.lognorm(\n            s, loc=loc, scale=scale).rvs(size=n_pos)\n    else:\n        fitted_pos_outliers = np.array([])\n    # negative outliers\n    if n_neg > 0:\n        s, loc, scale = joblib.load(os.path.join(dir, f\"input_dynamicdgp/lognorm_neg_{ind}.jbl\"))\n        fitted_neg_outliers = - \\\n            sp.stats.lognorm(s, loc=loc, scale=scale).rvs(size=n_neg)\n    else:\n        fitted_neg_outliers = np.array([])\n    x_new = np.concatenate((x_new, fitted_pos_outliers, fitted_neg_outliers))\n    return x_new\n\n\ndef simulate_residuals_all(res_df):\n    res_df_new = res_df.astype(dtype='float64', copy=True, errors='raise')\n    for i in range(res_df.shape[1]):\n        res_df_new.iloc[:, i] = simulate_residuals(i)\n    # demean the new residual again\n    res_df_new = res_df_new - res_df_new.mean(axis=0)\n    return res_df_new\n\n# generate data\n\n\ndef get_prediction(df, coef_matrix, residuals, thetas, n, intervention, columns, index, counterfactual):\n    data_matrix = df[columns].values\n    # sample residuals\n    sample_residuals = residuals\n    preds = np.matmul(data_matrix, coef_matrix.T)\n\n    # get prediction for current investment\n    if counterfactual:\n        pred_inv = np.zeros(preds[:, 4:].shape)\n    else:\n        pred_inv = preds[:, 4:] + sample_residuals[:, 4:] + intervention\n    df[index[4:]] = pd.DataFrame(pred_inv, index=df.index)\n\n    # get prediction for current proxy\n    pred_proxy = preds[:, :4] + sample_residuals[:, :4] + \\\n        np.matmul(pred_inv, thetas.T)\n    df[index[:4]] = pd.DataFrame(pred_proxy, index=df.index)\n    return df\n\n\ndef generate_dgp(\n    cov_matrix,\n    n_tpid,\n    t_period,\n    coef_matrix,\n    residual_matrix,\n    thetas,\n    intervention,\n    columns,\n    index,\n    counterfactual\n):\n    df_all = pd.DataFrame()\n    # get first period prediction\n    m = cov_matrix.shape[0]\n    x = np.random.multivariate_normal(np.repeat(0, m), cov_matrix, size=n_tpid)\n    df = pd.DataFrame(\n        np.hstack(\n            (np.arange(n_tpid).reshape(-1, 1),\n             np.repeat(1, n_tpid).reshape(-1, 1), x)\n        ),\n        columns=[\"id\", \"datetime\"] + columns,\n    )\n    df = get_prediction(df, coef_matrix, residual_matrix[0],\n                        thetas, n_tpid, intervention, columns, index, False)\n    df_all = pd.concat([df_all, df], axis=0)\n\n    # iterate the step ahead contruction\n    for t in range(2, t_period + 1):\n        # prepare new x\n        new_df = df.copy(deep=True)\n        new_df[\"datetime\"] = np.repeat(t, n_tpid)\n        for name in index:\n            for i in range(-6, -1):\n                new_df[f\"{name}_{i}\"] = df[f\"{name}_{i+1}\"]\n            new_df[f\"{name}_-1\"] = df[name]\n        df = get_prediction(new_df, coef_matrix, residual_matrix[t - 1],\n                            thetas, n_tpid, [0, 0, 0], columns, index, counterfactual)\n        df_all = pd.concat([df_all, df])\n    df_all = df_all.sort_values([\"id\", \"datetime\"])\n    return df_all\n\n\nclass AbstracDynamicPanelDGP:\n\n    def __init__(self, n_periods, n_treatments, n_x):\n        self.n_periods = n_periods\n        self.n_treatments = n_treatments\n        self.n_x = n_x\n        return\n\n    def create_instance(self, *args, **kwargs):\n        pass\n\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\n        pass\n\n    def static_policy_data(self, n_units, tau, random_seed=123):\n        def policy_gen(Tpre, X, period):\n            return tau[period]\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n    def adaptive_policy_data(self, n_units, policy_gen, random_seed=123):\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n    def static_policy_effect(self, tau, mc_samples=1000):\n        Y_tau, _, _, _ = self.static_policy_data(mc_samples, tau)\n        Y_zero, _, _, _ = self.static_policy_data(\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\n                           self.n_periods == self.n_periods - 1])\n\n    def adaptive_policy_effect(self, policy_gen, mc_samples=1000):\n        Y_tau, _, _, _ = self.adaptive_policy_data(mc_samples, policy_gen)\n        Y_zero, _, _, _ = self.static_policy_data(\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\n                           self.n_periods == self.n_periods - 1])\n\n\nclass DynamicPanelDGP(AbstracDynamicPanelDGP):\n\n    def __init__(self, n_periods, n_treatments, n_x):\n        super().__init__(n_periods, n_treatments, n_x)\n\n    def create_instance(self, s_x, sigma_x, sigma_y, conf_str, epsilon, Alpha_unnormalized,\n                        hetero_strength=0, hetero_inds=None,\n                        autoreg=.5, state_effect=.5, random_seed=123):\n        random_state = np.random.RandomState(random_seed)\n        self.s_x = s_x\n        self.conf_str = conf_str\n        self.sigma_x = sigma_x\n        self.sigma_y = sigma_y\n        self.hetero_inds = hetero_inds.astype(\n            int) if hetero_inds is not None else hetero_inds\n        self.hetero_strength = hetero_strength\n        self.autoreg = autoreg\n        self.state_effect = state_effect\n        self.random_seed = random_seed\n        self.endo_inds = np.setdiff1d(\n            np.arange(self.n_x), hetero_inds).astype(int)\n        # The first s_x state variables are confounders. The final s_x variables are exogenous and can create\n        # heterogeneity\n        self.Alpha = Alpha_unnormalized\n        self.Alpha /= np.linalg.norm(self.Alpha, axis=1, ord=1, keepdims=True)\n        self.Alpha *= state_effect\n        if self.hetero_inds is not None:\n            self.Alpha[self.hetero_inds] = 0\n\n        self.Beta = np.zeros((self.n_x, self.n_x))\n        for t in range(self.n_x):\n            self.Beta[t, :] = autoreg * np.roll(random_state.uniform(low=4.0**(-np.arange(\n                0, self.n_x)), high=4.0**(-np.arange(1, self.n_x + 1))), t)\n        if self.hetero_inds is not None:\n            self.Beta[np.ix_(self.endo_inds, self.hetero_inds)] = 0\n            self.Beta[np.ix_(self.hetero_inds, self.endo_inds)] = 0\n\n        self.epsilon = epsilon\n        self.zeta = np.zeros(self.n_x)\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\n\n        self.y_hetero_effect = np.zeros(self.n_x)\n        self.x_hetero_effect = np.zeros(self.n_x)\n        if self.hetero_inds is not None:\n            self.y_hetero_effect[self.hetero_inds] = random_state.uniform(.5 * hetero_strength,\n                                                                          1.5 * hetero_strength) /\\\n                len(self.hetero_inds)\n            self.x_hetero_effect[self.hetero_inds] = random_state.uniform(.5 * hetero_strength,\n                                                                          1.5 * hetero_strength) / \\\n                len(self.hetero_inds)\n\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\n        self.true_effect[0] = self.epsilon\n        for t in np.arange(1, self.n_periods):\n            self.true_effect[t, :] = (self.zeta.reshape(\n                1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\n\n        self.true_hetero_effect = np.zeros(\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\n        self.true_hetero_effect[0, :] = cross_product(add_constant(self.y_hetero_effect.reshape(1, -1),\n                                                                   has_constant='add'),\n                                                      self.epsilon.reshape(1, -1))\n        for t in np.arange(1, self.n_periods):\n            self.true_hetero_effect[t, :] = cross_product(add_constant(self.x_hetero_effect.reshape(1, -1),\n                                                                       has_constant='add'),\n                                                          self.zeta.reshape(1, -1) @\n                                                          np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\n\n        return self\n\n    def hetero_effect_fn(self, t, x):\n        if t == 0:\n            return (np.dot(self.y_hetero_effect, x.flatten()) + 1) * self.epsilon\n        else:\n            return (np.dot(self.x_hetero_effect, x.flatten()) + 1) *\\\n                (self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1)\n                    @ self.Alpha).flatten()\n\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\n        random_state = np.random.RandomState(random_seed)\n        Y = np.zeros(n_units * self.n_periods)\n        T = np.zeros((n_units * self.n_periods, self.n_treatments))\n        X = np.zeros((n_units * self.n_periods, self.n_x))\n        groups = np.zeros(n_units * self.n_periods)\n        for t in range(n_units * self.n_periods):\n            period = t % self.n_periods\n            if period == 0:\n                X[t] = random_state.normal(0, self.sigma_x, size=self.n_x)\n                T[t] = policy_gen(np.zeros(self.n_treatments), X[t], period, random_state)\n            else:\n                X[t] = (np.dot(self.x_hetero_effect, X[t - 1]) + 1) * np.dot(self.Alpha, T[t - 1]) + \\\n                    np.dot(self.Beta, X[t - 1]) + \\\n                    random_state.normal(0, self.sigma_x, size=self.n_x)\n                T[t] = policy_gen(T[t - 1], X[t], period, random_state)\n            Y[t] = (np.dot(self.y_hetero_effect, X[t]) + 1) * np.dot(self.epsilon, T[t]) + \\\n                np.dot(X[t], self.zeta) + \\\n                random_state.normal(0, self.sigma_y)\n            groups[t] = t // self.n_periods\n\n        return Y, T, X, groups\n\n    def observational_data(self, n_units, gamma, s_t, sigma_t, random_seed=123):\n        \"\"\"\n        Generate observational data with some observational treatment policy parameters.\n\n        Parameters\n        ----------\n        n_units : how many units to observe\n        gamma : what is the degree of auto-correlation of the treatments across periods\n        s_t : sparsity of treatment policy; how many states does it depend on\n        sigma_t : what is the std of the exploration/randomness in the treatment\n        \"\"\"\n        Delta = np.zeros((self.n_treatments, self.n_x))\n        Delta[:, :s_t] = self.conf_str / s_t\n\n        def policy_gen(Tpre, X, period, random_state):\n            return gamma * Tpre + (1 - gamma) * np.dot(Delta, X) + \\\n                random_state.normal(0, sigma_t, size=self.n_treatments)\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n\nclass SemiSynthetic:\n\n    def create_instance(self):\n        # get new covariance matrix\n        self.cov_new = joblib.load(os.path.join(dir, \"input_dynamicdgp/cov_new.jbl\"))\n\n        # get coefs\n        self.index = [\"proxy1\", \"proxy2\", \"proxy3\", \"proxy4\",\n                      \"investment1\", \"investment2\", \"investment3\", ]\n        self.columns = [f\"{ind}_{i}\" for ind in self.index for i in range(-6, 0)] +\\\n            [f\"demo_{i}\" for i in range(47)]\n\n        self.coef_df = generate_coefs(self.index, self.columns)\n        self.n_proxies = 4\n        self.n_treatments = 3\n\n        # get residuals\n        res_df = pd.DataFrame(columns=self.index)\n        self.new_res_df = simulate_residuals_all(res_df)\n\n    def gen_data(self, n, n_periods, thetas, random_seed):\n        random_state = np.random.RandomState(random_seed)\n        n_proxies = self.n_proxies\n        n_treatments = self.n_treatments\n        coef_matrix = self.coef_df.values\n        residual_matrix = self.new_res_df.values\n\n        # proxy 1 is the outcome\n        outcome = \"proxy1\"\n\n        # make fixed residuals\n        all_residuals = []\n        for t in range(n_periods):\n            sample_residuals = []\n            for i in range(7):\n                sample_residuals.append(\n                    random_state.choice(residual_matrix[:, i], n))\n            sample_residuals = np.array(sample_residuals).T\n            all_residuals.append(sample_residuals)\n        all_residuals = np.array(all_residuals)\n\n        fn_df_control = generate_dgp(self.cov_new, n, n_periods,\n                                     coef_matrix, all_residuals, thetas,\n                                     [0, 0, 0], self.columns, self.index, False)\n\n        fn_df_cf_control = generate_dgp(self.cov_new, n, n_periods,\n                                        coef_matrix, all_residuals, thetas,\n                                        [0, 0, 0], self.columns, self.index, True)\n        true_effect = np.zeros((n_periods, n_treatments))\n        for i in range(n_treatments):\n            intervention = [0, 0, 0]\n            intervention[i] = 1\n            fn_df_treated = generate_dgp(self.cov_new, n, n_periods,\n                                         coef_matrix, all_residuals, thetas,\n                                         intervention, self.columns, self.index, True)\n            for t in range(n_periods):\n                ate_control = fn_df_cf_control.loc[\n                    fn_df_control[\"datetime\"] == t + 1, outcome\n                ].mean()\n                ate_treated = fn_df_treated.loc[\n                    fn_df_treated[\"datetime\"] == t + 1, outcome\n                ].mean()\n                true_effect[t, i] = ate_treated - ate_control\n\n        new_index = [\"proxy1\", \"proxy2\", \"proxy3\", \"proxy4\"]\n        new_columns = [f\"{ind}_{i}\" for ind in new_index for i in range(-6, 0)] +\\\n            [f\"demo_{i}\" for i in range(47)]\n        panelX = fn_df_control[new_columns].values.reshape(-1, n_periods, len(new_columns))\n        panelT = fn_df_control[self.index[n_proxies:]\n                               ].values.reshape(-1, n_periods, n_treatments)\n        panelY = fn_df_control[outcome].values.reshape(-1, n_periods)\n        panelGroups = fn_df_control[\"id\"].values.reshape(-1, n_periods)\n        return panelX, panelT, panelY, panelGroups, true_effect\n\n    def plot_coefs(self):\n        coef_df = self.coef_df\n        plt.figure(figsize=(20, 20))\n        for i in range(7):\n            outcome = coef_df.index[i]\n            plt.subplot(2, 4, i + 1)\n            coef_list = coef_df.iloc[i]\n            coef_list = coef_list[coef_list != 0]\n            plt.plot(coef_list)\n            plt.xticks(rotation=90)\n            plt.title(f\"outcome:{outcome}\")\n        plt.show()\n\n    def plot_cov(self):\n        plt.imshow(self.cov_new)\n        plt.colorbar()\n        plt.show()\n"
  },
  {
    "path": "econml/data/ihdp/example.csv",
    "content": "iqsb.36,ncdctt,dose400,treat,bw,momage,nnhealth,birth.o,parity,moreprem,cigs,alcohol,ppvt.imp,bwg,sex,mlt.birt,b.marr,livwho,language,whenpren,drugs,othstudy,mom.lths,mom.hs,mom.coll,mom.scoll,site1,site2,site3,site4,site5,site6,site7,site8,momblack,momhisp,momwhite,workdur\n120,4.32,1,1,1559,33,94,2,2,1,0,0,75,0,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n90,3.91,0,1,1420,15,85,2,2,0,0,0,73,0,1,0,0,2,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n76,0,0,0,1000,33,89,4,5,0,20,1,77,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n43,0,0,0,1430,22,112,1,1,0,0,0,62.37235345,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,1984,20,99,1,1,0,10,0,73,0,0,0,0,2,1,2,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0\n83,0,0,0,1320,23,110,2,2,1,5,0,56,0,1,0,0,4,1,2,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n76,2.27,0,1,2240,22,105,2,3,1,0,5,73,1,1,0,0,4,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n95,0,0,0,2020,37,100,2,2,0,30,0,64,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n110,3.9,0,1,1900,13,110,1,1,0,0,0,80,0,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n71,0,0,0,2041,41,98,3,3,1,0,0,79,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n98,0,0,0,1320,27,110,1,1,0,0,0,91,0,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n95,0,0,0,2150,30,87,3,3,0,0,0,56,1,1,0,1,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n83,0,0,0,1620,22,109,2,2,0,0,0,73,0,0,0,0,4,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n110,4.51,1,1,1550,25,74,1,1,0,0,0,83,0,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1\n95,0,0,0,1814,35,98,2,2,0,20,0,106,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n66,0,0,0,1280,26,106,2,2,0,0,0,72,0,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n83,0,0,0,1210,18,100,1,1,0,0,0,70,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n100,0,0,0,2296,25,99,1,1,0,0,0,95,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n55,3.65,0,1,810,27,92,4,3,0,0,0,84,0,0,2,0,2,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n81,3.13,0,1,2270,19,104,4,4,1,10,0,61,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n62,0,0,0,1670,18,104,1,1,0,20,0,59,0,0,0,0,4,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,2030,18,131,2,2,0,0,0,66,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,2030,23,125,2,2,0,20,5,84.83867895,1,1,1,0,2,1,2,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0\n64,0,0,0,1840,18,81,1,1,0,2,0,83,0,1,1,0,2,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n95,4.37,1,1,1550,19,121,1,1,0,6,7,56,0,0,0,0,2,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n108,4.59,1,1,2330,26,89,2,2,0,20,0,79,1,1,0,0,4,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n105,0,0,0,1310,28,102,2,2,0,0,0,78,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n90,0,0,0,2350,23,93,4,2,1,0,0,78,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n93,0,0,0,1990,25,103,1,1,0,0,0,58,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\nNA,0.97,0,1,2410,20,90,3,3,0,20,1,74,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n66,0,0,0,1400,34,109,4,4,3,0,0,65,0,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n93,0,0,0,1950,29,101,3,3,0,0,0,50,0,1,1,0,4,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n110,0,0,0,1990,26,101,1,1,0,0,0,85,0,1,0,0,4,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n110,0,0,1,1776,23,83,2,2,0,0,0,80,0,0,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n115,0,0,0,1750,28,58,2,2,0,0,0,110,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0\n78,3.3,0,1,2140,28,119,3,3,0,8,0,83,1,1,1,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\nNA,0,0,1,970,28,89,2,2,1,1,0,41.81869811,0,0,0,0,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n90,0,0,1,1150,27,93,2,1,0,0,0,75,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n115,0,0,0,2369,32,92,1,1,0,0,0,86,1,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n81,0,0,0,2250,15,113,1,1,0,0,0,69,1,0,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n93,0,0,0,2210,33,85,2,2,0,0,0,87,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n78,0,0,0,1770,29,128,4,4,0,10,0,50,0,1,0,0,2,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n88,0,0,0,730,22,98,1,1,0,0,0,89,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n81,0,0,0,870,18,99,3,2,0,5,0,43,0,1,2,0,2,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n115,0,0,0,1510,26,100,2,1,0,0,0,92,0,1,2,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n88,0,0,0,2360,20,103,2,2,1,0,0,63,1,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n73,0,0,0,2500,28,88,2,2,0,0,0,69,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n78,0,0,0,1880,34,109,5,5,0,0,0,80,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n76,0,0,0,2220,23,87,2,2,1,0,0,60,1,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\nNA,0,0,0,2490,24,80,2,2,0,30,3,70.53511157,1,1,0,1,1,1,3,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n81,0,0,0,2350,21,99,4,4,0,0,0,74,1,1,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n68,4.03,1,1,1370,24,116,1,1,0,0,0,62,0,0,0,0,2,1,2,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0\n113,4.52,1,1,910,22,84,1,1,0,20,0,85,0,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n90,2.76,0,1,2445,32,98,3,3,0,20,0,86,1,0,0,0,4,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n83,3.83,0,1,1550,23,100,2,2,0,0,0,79,0,0,0,0,4,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n105,4.13,1,1,2180,29,87,1,1,2,0,0,84,1,1,0,1,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n93,1.54,0,1,2070,18,75,1,1,0,0,0,53.7020405,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n115,4.3,1,1,1786,25,42,2,2,0,0,0,102,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n83,0,0,0,2160,25,118,2,4,0,0,0,103,1,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n98,0,0,0,1928,34,89,2,2,1,0,0,90,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n62,0,0,0,1750,17,99,2,1,0,0,0,46,0,1,2,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\nNA,0,0,0,1590,19,83,3,3,0,20,0,65.09692388,0,1,0,1,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n105,2.31,0,1,2350,18,113,1,1,0,20,0,68,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\nNA,0,0,1,2250,19,99,2,2,0,20,0,71.49490639,1,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n86,0,0,0,1890,20,81,1,1,0,0,0,79,0,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n48,0,0,0,2410,40,65,5,5,0,0,0,102,1,0,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n120,4.28,1,1,2500,25,91,2,2,0,0,0,72,1,1,1,1,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n93,0,0,0,2353,28,99,2,2,0,10,0,74,1,0,0,0,4,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\nNA,0,0,1,2040,26,110,4,4,1,0,0,88.6856712,1,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n91,0,0,0,1960,24,109,2,2,0,0,0,78,0,0,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n95,3.68,0,1,2180,23,106,3,3,0,0,0,70,1,1,0,0,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n78,0,0,0,920,19,84,1,1,0,4,2,64.0512057,0,0,0,0,2,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,2300,22,110,1,1,0,4,0,79.88096777,1,0,0,0,3,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n108,3.59,0,1,1985,24,108,1,1,0,15,0,81,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n86,4.49,1,1,1516,26,98,1,1,0,0,0,69,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0\nNA,0,0,1,1740,26,127,4,4,1,10,0,84.39551017,0,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n90,0,0,0,1970,19,117,2,2,1,0,0,63,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n86,3.2,0,1,1650,20,92,1,1,0,0,0,62,0,0,0,0,2,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n83,0,0,0,2390,19,105,2,2,0,0,0,49,1,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n84,0,0,0,1750,16,119,1,1,0,0,0,87,0,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n110,4.14,1,1,1970,33,107,1,1,0,0,0,107,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n52,0,0,0,2070,21,93,3,3,1,0,0,95,1,0,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n76,0,0,0,1400,18,107,2,2,0,0,0,60,0,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,1360,26,117,3,3,0,20,2,85,0,1,0,1,1,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n98,0,0,0,2155,28,110,1,1,0,0,0,96,1,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n100,4.22,1,1,2300,20,116,1,1,0,10,2,88.78542621,1,0,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n69,0,0,0,1190,26,118,5,4,2,20,0,83.59513337,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n120,3.99,0,1,1530,25,106,2,2,0,0,0,80,0,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1\n88,0,0,0,1950,19,103,2,2,1,0,0,83,0,0,0,0,2,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n68,0,0,0,1240,22,100,3,2,2,20,0,83,0,1,0,1,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n103,0,0,0,1410,24,93,1,1,0,0,0,115,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n113,2.47,0,1,2170,22,109,4,4,1,10,0,73,1,1,0,0,4,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n122,4.14,1,1,1920,24,114,3,3,0,0,0,96,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n100,0,0,0,2270,24,117,2,2,0,10,0,56.16032864,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n108,0,0,0,1840,24,72,2,2,0,0,0,92,0,0,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n113,0,0,1,1670,23,113,1,1,0,0,0,115,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0\nNA,0,0,1,2400,25,63,3,3,0,40,0,83.78184902,1,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n113,4.43,1,1,2230,23,100,2,2,0,10,0,86,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n78,3.42,0,1,2140,19,102,4,3,0,0,0,82,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n88,0,0,0,1520,20,99,2,2,0,0,0,72,0,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n88,0,0,0,1070,19,85,1,1,0,20,1,80,0,1,0,0,1,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n83,2.36,0,1,2025,19,106,1,1,0,0,0,66,1,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n103,4.5,1,1,1350,21,116,1,1,0,0,0,70,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n110,3.87,0,1,2200,27,108,1,1,0,0,0,43,1,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0\n108,0,0,0,1790,26,73,1,1,0,0,2,113,0,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n52,0,0,0,2220,29,67,6,5,1,25,0,95,1,0,0,0,4,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n127,0,0,0,890,22,89,1,1,0,20,0,104,0,1,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n67,0,0,0,1420,18,86,3,2,0,20,0,95,0,0,2,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n103,0,0,0,1730,24,90,3,3,0,0,0,99,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n115,3.96,0,1,1560,17,107,1,1,0,10,0,50.17042009,0,0,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n68,0,0,0,1730,20,122,1,1,0,20,0,78.99925279,0,1,0,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n115,4.25,1,1,1580,15,124,1,1,0,3,0,71.6961469,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0\n113,4.34,1,1,1956,22,99,2,2,1,0,0,71,0,0,0,0,2,1,3,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n103,0,0,0,2325,19,98,1,1,0,20,0,82,1,1,0,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n95,0,0,0,1580,23,87,2,1,0,0,0,93,0,0,2,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n108,0,0,0,2296,35,72,1,1,0,3,0,107,1,0,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1\n134,2.98,0,1,2417,29,96,3,3,0,0,0,112,1,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0\n100,0,0,0,1210,25,86,1,1,0,0,0,120,0,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1\n76,0,0,0,1570,23,95,7,6,0,20,1,63.6590308,0,0,2,0,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n73,0,0,0,2190,19,116,2,2,0,10,12,47,1,0,0,0,2,1,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n86,0,0,0,2001,37,105,1,1,0,0,0,80,1,0,1,0,3,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,1\n96,0,0,0,2200,21,121,2,2,0,0,0,57,1,0,0,1,1,1,2,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n66,0,0,0,2000,28,122,3,3,1,10,0,51,0,1,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n95,0,0,0,1990,17,127,1,1,0,40,0,53,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1\n90,3.52,0,1,1480,27,123,1,1,1,5,0,61,0,1,0,1,2,1,2,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n105,0,0,0,2120,24,85,2,3,0,0,0,75,1,0,0,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n57,1.24,0,1,1830,20,122,1,1,0,4,0,52.03707327,0,1,0,0,2,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,1950,20,135,1,1,0,7,1,76,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,1\n68,3.87,0,1,1170,23,109,2,2,0,0,0,60,0,0,0,0,2,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n57,0,0,0,1380,23,80,1,1,0,0,0,82,0,0,0,0,2,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\nNA,0,0,0,1320,15,89,1,1,0,0,0,71.99598978,0,0,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n83,4,0,1,960,19,92,1,1,0,0,0,87,0,1,0,0,1,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n59,0,0,0,850,30,86,1,1,0,0,0,39.12006893,0,0,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n64,0,0,0,1580,26,109,2,2,1,4,0,72,0,0,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n71,0,0,0,1860,27,98,4,4,0,0,0,72,0,0,0,1,1,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n81,0,0,0,1800,18,110,1,1,0,3,0,69.21644423,0,0,0,0,4,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n78,0,0,0,1550,30,66,3,3,2,0,0,86,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\nNA,0.39,0,1,1880,33,112,1,1,0,0,0,75,0,1,0,0,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n103,3.38,0,1,1915,29,96,2,1,0,0,0,89,0,1,2,0,1,1,3,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1\n71,3.43,0,1,1815,21,109,1,1,0,0,0,70,0,0,0,0,2,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n81,0,0,0,1910,34,104,3,2,0,0,0,93,0,0,2,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n71,0,0,0,1980,15,110,1,1,0,0,0,59,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n68,0,0,0,1560,29,108,2,8,0,10,0,74,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n64,0,0,0,1210,39,92,3,2,0,0,0,59,0,0,2,0,1,2,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n71,0,0,0,1470,33,116,2,2,0,0,0,68,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n98,0,0,0,1735,29,115,3,3,1,10,2,59,0,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n86,0,0,0,2175,33,109,3,3,2,0,0,110,1,1,0,1,1,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,2200,23,111,2,2,0,0,0,54,1,1,0,1,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n103,3.77,0,1,2280,27,105,4,4,2,20,0,104,1,1,0,0,4,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\n103,3.25,0,1,1790,36,109,5,5,0,0,0,71,0,1,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n95,0,0,0,1790,24,102,2,2,0,10,0,87,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n66,0.25,0,1,850,34,104,3,3,1,0,0,95.07979231,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n71,3.23,0,1,1980,25,123,1,2,0,5,0,82,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n90,3.75,0,1,2420,31,91,2,2,0,0,0,86.09682923,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n81,3.7,0,1,2260,24,80,2,2,1,1,0,64,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n73,0,0,0,2160,21,104,2,2,0,0,0,89,1,1,1,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n76,0,0,0,1700,19,86,1,1,0,2,0,83.49591136,0,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n81,1.24,0,1,2340,17,108,1,1,0,0,0,69,1,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n66,0,0,0,1270,29,105,2,2,0,7,0,66,0,1,0,0,4,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n76,3.07,0,1,2100,33,115,2,2,1,5,0,87,1,0,0,0,4,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n62,0,0,0,1300,22,112,2,2,0,0,0,72,0,1,0,0,2,1,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n68,0,0,0,1950,18,105,1,1,0,0,0,83,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n50,0,0,0,670,34,90,1,1,0,0,0,75,0,0,0,0,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n118,0,0,0,2360,34,92,2,2,0,0,0,123,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1\n78,0,0,0,1340,28,103,1,1,0,0,0,85,0,0,0,0,2,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0\n46,0,0,0,1100,39,88,3,3,0,10,0,51,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n90,0,0,0,1440,33,109,2,2,0,10,2,100,0,0,0,0,4,1,2,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0\n71,3.54,0,1,1800,16,101,1,1,0,0,0,80,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,1000,30,63,9,10,9,40,0,55.36612175,0,0,0,0,4,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n66,0,0,0,2240,20,108,1,1,0,0,0,75,1,1,0,0,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n57,0,0,0,1870,39,94,3,3,0,0,0,75,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n68,0,0,0,1700,34,62,2,2,0,5,0,67,0,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n88,3.51,0,1,1220,23,81,2,1,0,0,0,52,0,0,0,1,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n71,0,0,0,1140,25,78,2,1,0,5,0,66,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n78,0,0,0,1720,24,100,1,1,0,0,0,77,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0\n57,0,0,0,1310,33,110,3,3,2,10,0,76,0,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,2090,18,99,1,1,0,0,0,81.48079844,1,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n90,2.13,0,1,2200,17,119,1,1,0,0,0,84,1,0,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n64,0,0,1,1270,29,84,3,3,0,0,0,81,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n86,0,0,0,1930,21,92,1,1,0,5,0,66,0,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n66,3.54,0,1,1825,25,116,2,2,0,10,0,68,0,0,0,0,4,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,1,1090,32,81,5,5,3,0,1,109.6776169,0,0,0,1,2,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,2240,21,111,1,1,0,4,0,76,1,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n68,2.67,0,1,1390,32,106,3,3,0,0,0,88,0,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n78,2.42,0,1,1540,19,106,1,1,0,0,0,80,0,0,0,0,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\nNA,0.03,0,1,2340,17,91,1,1,0,3,0,73,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n48,0,0,0,2340,23,97,1,1,0,0,0,75,1,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\n68,0,0,0,2050,17,130,1,1,0,0,0,55,1,0,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n71,0,0,0,1840,18,109,1,1,0,0,0,76,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n95,0,0,0,2340,29,86,1,1,0,0,0,80,1,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\n78,2.79,0,1,1720,23,116,2,2,0,20,0,81,0,1,1,0,4,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,2240,31,116,2,2,1,0,0,73,1,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n62,0,0,0,2260,22,106,1,1,0,0,0,89,1,1,0,1,1,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n73,0,0,0,2320,26,110,3,3,0,10,0,78,1,0,0,0,4,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n81,3.86,0,1,2150,27,95,1,1,0,0,0,91,1,0,0,0,4,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,2250,35,81,1,1,0,20,0,110,1,0,0,0,4,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0\n71,0,0,0,1800,20,50,2,1,0,1,0,66.41983729,0,0,2,0,1,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n66,2.68,0,1,1480,37,123,5,5,2,4,0,62,0,0,0,1,1,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n95,1.86,0,1,1680,19,115,1,1,0,10,0,52,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n83,0,0,0,1840,26,103,1,1,0,0,0,62,0,0,0,1,1,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n83,3.56,0,1,1500,24,113,2,3,0,5,0,67,0,1,1,0,4,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n71,0,0,0,2500,35,97,2,2,0,0,0,88,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n86,0,0,0,1935,26,108,4,4,1,5,0,75,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n68,0,0,0,1540,29,93,3,3,1,0,0,69,0,0,0,1,1,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n93,0,0,0,1920,22,96,2,3,0,7,0,78,0,0,0,0,4,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,2070,22,88,2,1,1,4,0,68.97735075,1,1,0,0,2,1,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n76,0,0,0,1960,30,96,1,1,0,0,0,84,0,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n90,0,0,0,1950,39,97,2,2,0,0,0,68,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n52,1.77,0,1,2080,20,127,1,1,0,0,0,54,1,0,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,1210,24,66,4,4,0,6,0,75.22950002,0,0,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n88,1.81,0,1,1120,21,127,1,1,0,0,0,79,0,0,0,1,1,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,2180,23,93,2,2,0,0,0,53.90533012,1,0,0,0,1,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n95,3.26,0,1,2340,32,79,2,2,0,0,0,72,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n67,0,0,0,1310,39,105,4,4,0,10,0,61,0,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1\n86,0,0,0,2500,26,97,1,1,0,0,0,82,1,1,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n71,0,0,0,1440,20,109,1,1,0,0,0,59,0,1,0,0,2,1,3,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\nNA,0,0,0,1040,28,106,4,4,0,6,0,79.15284541,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,2170,16,121,3,2,1,0,0,56.2079295,1,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,2460,22,77,2,2,1,5,0,46.80888577,1,0,0,0,1,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n71,0,0,0,2300,19,97,1,1,0,10,0,70,1,0,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n78,3.17,0,1,2150,20,105,1,1,0,0,0,98,1,0,0,0,2,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n88,3.83,0,1,1740,23,109,1,1,0,0,0,80,0,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\nNA,0,0,0,1450,18,109,2,1,0,0,0,74.57823689,0,0,2,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n95,0.02,0,1,2130,37,116,4,4,1,0,0,100.8891092,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n137,1.67,0,1,2250,28,115,1,1,0,0,0,120,1,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1\n142,1.94,0,1,1830,31,94,1,1,0,0,0,140,0,1,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1\n78,0,0,0,2000,18,133,2,2,0,0,0,55,0,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n50,0,0,0,1970,16,37,2,2,0,0,0,66,0,1,0,0,2,1,3,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n90,0,0,0,1480,18,118,1,1,0,0,0,70,0,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n95,0,0,0,2000,20,108,1,1,0,0,0,70,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1\nNA,0,0,0,1650,30,115,2,3,0,0,0,65.77019466,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n83,0,0,0,2235,21,96,1,1,0,20,3,57,1,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n125,1.18,0,1,2110,21,105,1,1,0,0,0,124,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0\n71,0,0,0,1380,17,79,2,2,1,0,0,87.47604592,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n68,3.17,0,1,1750,27,74,2,1,0,0,0,81.56827752,0,1,2,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n73,0,0,0,2140,27,85,4,4,0,0,0,75,1,1,0,1,1,1,2,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\n88,0,0,0,1990,27,111,2,2,1,30,0,98,0,1,0,0,2,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n73,0,0,0,1810,32,107,3,3,0,17,0,103,0,0,0,0,4,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n86,0,0,0,1890,22,109,1,1,1,0,0,75,0,1,0,0,2,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0\n68,1.39,0,1,1870,17,103,2,1,0,0,0,52,0,0,2,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0\n68,0,0,0,2000,21,97,3,2,0,0,0,66,0,0,2,0,1,2,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n52,0,0,0,1620,24,102,4,4,3,1,0,43,0,0,0,0,1,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n50,0,0,0,2320,42,78,3,3,0,0,0,94.36726621,1,0,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n86,3.06,0,1,1700,22,115,2,2,0,0,0,62,0,0,1,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n59,0,0,0,1860,22,79,1,1,0,0,0,89,0,1,0,0,2,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1\n46,0,0,0,1370,32,110,4,4,3,0,0,103,0,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1\n73,0,0,0,1260,23,98,1,1,0,0,0,72,0,1,0,0,2,1,2,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n93,0.49,0,1,1230,26,114,1,1,0,4,0,100,0,1,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1\n113,0,0,0,2180,28,106,1,1,0,3,0,108,1,0,0,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1\n68,0,0,0,2430,22,94,2,2,0,0,0,100,1,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n100,3.64,0,1,2500,30,74,1,1,0,0,2,108,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1\n120,0,0,0,2450,31,100,2,2,0,0,0,101,1,1,1,1,1,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1\n95,0,0,0,2000,22,85,2,2,0,0,0,72.62156226,0,0,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n76,3.07,0,1,1840,16,100,1,1,0,0,0,74,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\nNA,0,0,0,1700,25,92,2,2,1,20,7,67,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n71,0,0,0,2430,19,70,2,3,0,0,0,60,1,0,0,0,2,2,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n71,2.47,0,1,1720,17,109,1,1,0,10,0,54,0,1,0,0,2,1,2,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n88,2.66,0,1,1040,21,120,1,1,0,0,0,89,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1\n93,3.35,0,1,2000,19,94,1,1,0,0,0,81,0,0,0,0,3,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0\n68,0,0,0,2080,33,105,4,3,0,4,0,51,1,1,0,0,4,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0\n64,0,0,0,2380,29,85,4,4,0,0,0,54,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n76,0,0,1,1760,22,113,1,1,0,5,0,55,0,1,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n86,0,0,0,2130,17,124,1,1,0,0,0,97,1,1,0,0,2,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0\n100,0,0,0,2400,22,87,1,1,0,0,0,75,1,0,0,0,2,1,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1\n43,0,0,0,1840,26,120,2,2,0,0,0,63,0,0,0,0,4,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0\n78,0,0,0,1980,21,112,1,1,0,0,0,93,0,1,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1\n100,3.41,0,1,920,23,97,1,1,0,0,2,68,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n98,3.17,0,1,1620,28,95,1,1,0,0,1,68,0,1,0,1,1,1,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n61,0,0,0,1620,17,104,1,1,0,0,0,55,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n90,0,0,0,1850,21,76,2,2,1,10,1,84,0,0,0,1,1,1,2,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\n48,3.38,0,1,960,22,106,1,1,0,5,0,73,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n108,0,0,0,1550,23,102,1,1,0,6,0,91.60343181,0,0,1,0,2,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n129,0,0,0,1800,34,107,1,1,0,0,0,133,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n88,0,0,0,1900,37,109,2,2,0,0,0,90,0,1,0,1,1,1,2,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n118,2.68,0,1,2150,25,121,3,3,0,15,1,124,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n129,3.9,0,1,2210,27,104,3,3,2,0,0,87,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n103,0,0,0,2150,32,80,1,1,0,0,2,96.660397,1,1,0,1,1,1,2,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n43,0,0,0,1925,27,115,1,1,0,13,0,97,0,0,1,0,2,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1\n108,0,0,0,2250,36,100,3,3,0,0,0,115,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n100,0,0,0,1775,21,92,1,1,0,12,0,89,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n103,0,0,0,2020,30,91,1,1,0,0,0,121,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n115,0,0,0,1620,32,88,1,1,0,0,0,121,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n127,3.26,0,1,1950,23,106,1,1,0,0,1,102,0,0,0,0,4,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n78,0,0,1,1840,27,107,4,4,2,0,0,58,0,1,0,0,4,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n93,0,0,0,900,23,117,2,2,0,10,0,50,0,0,0,0,2,2,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0\n100,0,0,0,2140,20,90,1,1,0,0,0,90,1,1,0,1,1,2,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0\n113,0,0,0,1660,28,96,2,2,0,0,1,103,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n68,1.22,0,1,1170,17,102,1,1,0,10,0,68,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n98,2.92,0,1,1600,19,84,1,1,0,0,0,60,0,0,0,0,2,2,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0\n81,0,0,0,1540,18,111,1,1,0,20,0,71,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n115,0,0,0,1080,34,112,1,1,0,0,1,107,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n114,4.06,1,1,1890,31,96,1,1,0,0,0,116.1981315,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n90,0,0,0,1600,32,75,2,4,0,10,0,68,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n105,0,0,1,1480,32,105,1,1,0,0,0,112,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n76,0,0,0,1325,18,103,1,1,0,0,0,74,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n127,0,0,0,1840,39,98,1,1,0,0,0,96.8881683,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n71,0,0,0,1080,31,111,1,1,0,0,1,131,0,1,0,0,4,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n88,0,0,0,1517,34,73,1,1,0,0,1,120,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n81,0,0,0,2300,27,95,1,1,0,0,0,82,1,1,0,1,1,4,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n95,0,0,0,1240,28,95,1,1,0,15,0,107.6105354,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n100,0,0,0,1490,33,71,2,1,0,0,0,159,0,1,2,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n103,0,0,0,2150,30,91,1,4,0,20,1,88,1,0,0,0,2,1,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n66,0,0,0,1730,35,91,2,2,1,0,0,113,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\n120,0,0,0,2320,34,108,3,3,0,0,0,115,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n113,3.67,0,1,720,26,119,2,2,0,0,0,98,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n103,0,0,0,1370,32,79,2,2,0,0,0,109.0127064,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\n113,0,0,0,2050,29,95,2,1,0,0,0,131,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n76,0,0,0,1610,21,105,1,1,0,20,5,72,0,1,0,1,1,1,2,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n93,4.02,1,1,1980,27,123,2,2,0,20,1,59,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n132,0,0,0,1150,30,92,1,1,0,0,0,99,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n115,0,0,0,1675,27,97,1,1,0,0,1,79,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n81,0,0,0,2466,20,91,1,1,0,0,0,63,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n88,0,0,0,950,14,105,1,1,0,0,0,49,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n83,0,0,0,1320,26,64,2,2,0,0,0,66,0,1,0,0,4,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n93,0,0,0,2100,34,104,2,2,0,0,2,143,1,1,2,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n105,0,0,0,910,26,120,1,1,0,5,0,75,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n110,0,0,0,2140,27,71,1,1,0,0,0,99,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n81,0,0,0,2460,30,94,3,4,2,20,0,66,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n90,0,0,0,2390,34,95,2,2,0,0,5,143,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n73,0,0,0,2050,23,116,1,1,0,0,0,57,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n108,0,0,0,1880,25,100,1,1,0,0,0,124,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n144,0,0,0,1350,29,112,1,1,0,3,0,108,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n83,2.99,0,1,2280,27,98,1,1,0,0,0,68,1,1,0,0,1,4,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n78,0,0,0,2340,32,86,2,2,0,20,0,58,1,0,0,0,4,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n88,0,0,0,2495,16,102,1,1,0,2,0,43,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n132,3.48,0,1,2155,23,93,1,1,0,0,0,97,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\nNA,0,0,0,740,34,52,1,1,0,0,0,99.02184647,0,1,0,1,1,4,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n43,3.46,0,1,900,28,76,1,1,0,0,0,83,0,0,0,0,2,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1\n105,0,0,0,1300,30,116,1,1,0,0,0,115,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n95,0,0,0,2353,29,110,1,1,0,0,0,97,1,1,0,0,2,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n108,0,0,0,1220,29,117,1,1,0,0,0,95,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n71,0,0,0,1910,22,103,2,1,0,0,0,70.38344579,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n78,0,0,0,2310,28,108,2,2,0,0,4,74,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n120,0,0,0,1350,23,118,1,1,0,0,0,77,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n55,0,0,0,1720,26,103,1,1,0,0,0,68,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n78,2.16,0,1,2020,18,84,2,2,1,0,0,66,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n59,0,0,0,790,38,84,4,4,0,0,0,66.71762994,0,0,0,1,1,2,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1\n118,0,0,0,1920,23,129,1,1,0,20,4,104,0,1,0,1,1,1,2,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n66,0.09,0,1,1970,31,117,1,1,0,0,0,69,0,0,0,1,1,4,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n93,3.18,0,1,1400,18,65,2,2,0,0,0,115,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n50,0,0,0,1650,28,102,1,1,0,0,0,63,0,0,1,0,2,4,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n139,0,0,0,2420,27,84,1,1,0,0,0,115,1,0,2,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n72,2.11,0,1,1640,27,117,2,2,0,1,1,80.2708444,0,1,0,0,4,1,2,0,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n103,0,0,0,1240,30,97,1,1,0,10,2,87,0,0,0,1,1,1,2,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n93,0,0,0,2330,16,111,1,1,0,4,0,68,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n81,3.75,0,1,2300,19,89,3,3,1,0,0,61,1,0,0,0,1,2,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0\n115,3.59,0,1,1210,26,101,3,2,0,10,0,85,0,1,2,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n105,0,0,0,1725,22,81,1,1,0,0,0,96,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n98,3.91,0,1,2230,22,112,2,1,0,5,2,65,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n98,3.68,0,1,850,38,105,2,2,0,0,0,77.82287022,0,1,0,0,3,4,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n100,0,0,0,2300,33,109,3,3,0,0,0,101,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\nNA,0,0,0,2030,25,120,2,2,1,5,0,73,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n57,0,0,0,2490,28,102,3,3,0,0,0,100.5350836,1,0,0,0,4,2,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1\n108,0,0,0,1710,19,117,1,1,0,20,0,83,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n110,0,0,0,2250,27,111,1,1,0,0,0,115,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\nNA,0,0,1,2096,22,110,2,2,1,30,0,73,1,1,0,0,4,1,2,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n81,3.58,0,1,1600,19,95,1,2,0,0,0,93,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n108,0,0,0,2110,27,90,1,3,0,0,2,88,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n120,0,0,0,2450,23,94,1,1,0,0,0,111,1,0,0,1,1,1,2,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n88,2.28,0,1,1786,36,103,1,1,1,10,0,117,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n78,0,0,1,1440,33,101,1,1,0,0,1,123,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n88,0,0,1,1175,24,85,4,4,0,20,0,88,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n73,4.21,1,1,1670,34,118,4,4,0,1,0,58,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n108,0,0,0,1550,27,88,1,1,0,0,0,86,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n110,0,0,0,2250,30,91,1,1,0,0,0,117,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n76,1.81,0,1,1600,30,108,2,2,0,0,0,74,0,0,0,0,1,1,3,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n66,0,0,0,2211,31,95,1,1,0,0,0,57.79996133,1,1,0,1,1,4,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n118,4.02,1,1,1690,38,115,1,1,0,14,3,76,0,0,0,0,2,1,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n115,0,0,0,2330,38,111,2,1,1,0,1,120,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n108,1.13,0,1,1890,34,90,2,2,1,0,1,106,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n76,0,0,0,1975,32,96,3,3,0,0,0,56,0,0,0,1,1,4,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n122,2.54,0,1,1230,32,114,1,1,0,0,0,121,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n98,0,0,0,900,32,119,1,1,0,0,0,125,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1\n81,0,0,0,2210,26,117,2,2,1,0,0,105.8646222,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\nNA,0,0,1,2360,31,96,1,1,0,0,0,107.1259865,1,0,0,1,1,2,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0\n105,0,0,0,1770,25,106,1,1,0,0,0,91,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n122,2.99,0,1,2150,34,117,4,4,1,0,0,104,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1\n147,0,0,0,1810,36,95,1,1,0,0,0,117,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\n110,3.6,0,1,2440,29,76,2,1,0,0,0,94,1,1,2,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n113,0,0,0,740,31,96,1,1,0,5,0,110,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n90,0,0,0,2495,22,98,1,1,0,12,0,79,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n120,2.55,0,1,2425,30,88,1,1,0,0,2,112,1,1,0,1,1,1,3,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n88,2.97,0,1,2150,16,117,1,1,0,0,0,71,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n66,0,0,0,1706,22,109,3,3,1,10,0,74.63399666,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1\n142,0,0,0,1700,28,107,1,1,0,1,0,96,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1\n98,3.78,0,1,2040,17,85,1,1,0,10,0,89,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n105,0,0,0,1644,35,17,1,1,0,0,4,128,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n122,3.24,0,1,1950,21,68,1,1,0,6,0,87,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n81,0,0,0,1490,27,124,2,2,1,10,0,84,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n103,0,0,0,1590,19,102,1,1,0,0,0,76,0,1,0,0,2,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\nNA,0,0,0,1690,21,107,1,1,0,5,0,56.37609539,0,1,0,0,1,2,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1\n120,3.01,0,1,1780,27,115,1,1,0,44,0,81,0,1,0,0,2,1,2,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0\n73,0,0,0,920,26,104,1,1,0,0,0,85.8038796,0,0,0,1,1,1,2,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\n86,0,0,0,2000,29,116,1,1,0,0,1,50,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1\n95,3.12,0,1,1871,22,105,1,1,0,0,0,64,0,1,0,1,1,4,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\nNA,0,0,0,1490,22,122,2,2,0,4,1,80.83522106,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0\n43,0,0,0,1460,28,87,2,2,0,0,0,83,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n115,0,0,0,1900,34,109,1,1,0,0,0,113,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n108,0,0,0,1980,22,114,4,4,0,0,0,80,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,1\nNA,0,0,0,1600,26,123,1,1,0,0,0,63.99899213,0,0,0,1,1,4,3,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0\n125,0,0,0,1100,36,106,2,2,0,0,0,123,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0\n108,2.16,0,1,1980,25,102,1,1,0,15,1,72,0,1,0,0,2,1,2,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0\n113,3.75,0,1,1580,32,110,2,2,0,0,0,125,0,0,2,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n122,0,0,0,1930,35,115,1,1,0,0,0,128,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1\n52,0,0,0,1240,25,68,3,1,2,0,0,72,0,0,0,1,1,1,2,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0\n52,0,0,0,1360,22,93,2,2,1,0,0,68,0,0,1,1,1,2,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n81,0,0,0,1540,29,103,2,2,1,5,1,67,0,1,0,0,1,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n86,0,0,0,800,18,99,1,1,0,0,0,70,0,1,0,0,2,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n73,0,0,0,880,23,79,2,2,0,7,0,69,0,1,0,0,2,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n68,0,0,0,1610,29,95,3,2,0,10,7,83,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n83,3.75,0,1,1950,15,117,1,1,0,0,0,62.94889039,0,0,0,0,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n50,0,0,0,940,21,77,2,2,1,0,0,77.82042614,0,1,0,1,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1\n52,0,0,0,2100,28,58,2,1,0,0,0,66,1,0,0,0,2,1,3,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n46,0,0,0,2290,23,80,3,2,1,0,0,73,1,0,0,1,1,2,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n76,3.51,0,1,1840,21,111,1,1,0,0,0,53,0,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n71,0,0,0,2400,29,63,1,1,0,0,0,44,1,1,0,0,3,4,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1\n103,0,0,0,1916,19,116,1,1,0,0,0,90,0,1,0,1,1,1,2,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0\n66,3.04,0,1,1280,19,96,1,1,0,0,0,69,0,0,0,0,1,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n86,3.62,0,1,800,26,72,2,2,1,20,0,73,0,0,0,0,2,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n83,4.19,1,1,2000,25,102,2,1,0,0,0,53.24967123,0,1,1,1,1,4,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n93,3.9,0,1,2240,20,108,2,2,0,0,0,50,1,1,1,1,1,4,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n50,0,0,0,2390,30,84,6,6,2,0,0,48,1,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n78,0,0,0,2470,16,85,1,1,0,0,0,59,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n90,0,0,0,1880,21,106,4,4,1,0,0,54,0,1,0,0,4,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n78,3.43,0,1,860,18,121,2,2,1,0,0,68,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n66,0,0,0,1760,28,109,1,1,0,0,0,38.33809089,0,1,0,1,1,4,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n88,4.21,1,1,1010,16,92,2,1,0,0,0,47,0,1,0,0,2,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n95,3.6,0,1,1700,24,98,7,6,1,5,0,87,0,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0\n79,0,0,0,1780,36,118,3,3,0,10,0,73.97278251,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1\n72,0,0,0,1520,18,103,2,2,1,0,0,45,0,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n46,0,0,0,960,32,82,3,3,0,4,0,63,0,1,0,0,2,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n68,1.42,0,1,2080,16,111,1,1,0,0,0,73,1,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n76,0,0,0,2010,22,116,3,3,1,0,0,81,1,1,0,0,1,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n78,2.36,0,1,860,20,100,2,1,0,0,0,55,0,0,0,0,2,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n105,4.25,1,1,1620,33,107,4,4,0,0,0,53,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\nNA,2.77,0,1,1800,21,104,3,3,0,0,0,50,0,1,0,1,1,2,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n83,4.3,1,1,1515,40,110,7,7,0,0,0,52,0,1,2,0,4,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n73,3.63,0,1,1890,17,132,1,1,0,0,0,66,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\nNA,0,0,0,2320,18,102,1,1,0,0,1,64.80377798,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\nNA,0,0,1,2190,22,115,4,4,0,20,0,70.4825104,1,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,1.68,0,1,1370,19,99,2,2,1,0,0,76,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n64,0,0,0,2000,16,108,2,2,0,7,0,79.75314749,0,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n73,1.36,0,1,1480,30,104,4,2,1,0,0,52.90070715,0,0,0,0,4,2,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n50,0,0,0,900,35,84,6,6,0,0,0,41.0597874,0,1,2,0,2,4,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n66,2.57,0,1,2110,20,113,5,3,0,0,0,68,1,1,0,0,2,1,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n83,0.62,0,1,1160,23,99,2,2,0,0,0,83,0,1,0,0,4,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1\n86,0,0,0,1980,16,112,1,1,0,0,0,65,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n88,0.63,0,1,960,29,96,1,2,0,0,0,79,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1\n71,2.1,0,1,2250,18,103,1,1,0,6,0,67,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n110,4.2,1,1,2240,26,89,4,4,1,0,0,101.6354682,1,0,0,0,3,1,2,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1\n88,4.19,1,1,2260,20,106,2,2,0,0,0,73,1,1,2,1,1,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1\n62,0.9,0,1,1380,27,103,6,5,1,10,12,75.40918105,0,0,2,0,2,1,2,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n83,0,0,0,1740,18,126,1,2,0,0,0,69,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n81,0,0,0,2210,24,106,8,3,1,0,0,66,1,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,3.71,0,1,1900,18,121,4,3,1,0,0,60,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n108,2.92,0,1,880,17,103,1,1,0,0,0,71,0,1,0,0,2,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n81,0,0,0,800,26,89,1,1,0,20,20,79,0,0,0,0,2,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0\n64,3.81,0,1,1740,36,109,2,2,0,0,0,61,0,0,0,0,4,2,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1\n76,3.74,0,1,1380,16,53,1,1,0,0,0,57.45746658,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n76,0,0,0,860,27,93,2,2,0,0,0,69,0,1,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1\n90,3.96,0,1,2500,30,90,3,3,0,0,0,69,1,1,0,0,4,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,0,0,0,2200,23,110,4,4,0,0,0,53,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,2.31,0,1,1880,18,97,2,2,0,0,0,92,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,4.05,1,1,2480,19,65,3,3,2,0,0,89,1,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n76,3.96,0,1,1970,15,119,1,1,0,0,0,55,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n78,0,0,0,2420,19,110,2,1,0,0,0,59,1,0,2,0,2,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n71,0,0,0,940,27,111,2,2,1,4,0,67.75579449,0,0,2,0,4,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n73,1.17,0,1,1140,26,94,4,3,1,20,0,46,0,0,0,0,2,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0\n52,0,0,0,2480,18,81,3,4,1,0,0,47.25636745,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n96,3.05,0,1,2080,16,119,1,1,0,0,0,42,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,0,0,0,2360,17,92,2,3,1,0,0,79,1,0,0,0,2,1,3,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n88,2.83,0,1,2020,21,104,2,1,0,0,0,83,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n62,0,0,0,1060,19,76,2,2,0,0,0,65.42146937,0,0,0,0,4,4,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\nNA,0,0,0,880,15,99,1,1,0,2,0,72.0487527,0,1,0,0,2,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\nNA,1.14,0,1,1370,25,101,5,4,1,0,0,51,0,0,0,1,1,2,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n71,3.51,0,1,1715,26,136,2,1,1,0,0,45.21822971,0,0,0,0,2,4,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n66,0,0,0,750,20,107,1,1,0,4,2,52,0,1,0,0,2,1,2,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n73,0,0,0,1640,25,122,6,6,0,0,0,49,0,0,2,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n68,0,0,0,1380,15,108,1,1,0,0,0,79,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n50,0,0,0,820,24,110,4,1,0,0,0,71,0,0,0,1,1,2,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,1\n50,0,0,0,2280,20,74,1,3,0,2,0,61,1,0,0,0,1,2,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n67,0,0,0,2080,19,87,2,3,0,0,0,68,1,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n95,3.48,0,1,2280,27,105,4,4,1,20,0,70,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n59,0,0,0,1920,17,116,1,1,0,0,0,65,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n43,0,0,0,2440,20,98,2,3,0,0,0,70,1,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n48,0,0,0,840,34,119,5,3,0,0,0,66,0,0,0,1,1,2,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n62,0,0,0,840,26,103,3,3,0,0,0,66.74577507,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n78,0,0,0,1480,16,111,1,1,0,0,0,55,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n81,0,0,0,1900,17,115,1,1,0,0,0,64,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n73,0,0,0,980,22,109,1,1,0,0,0,70,0,1,0,0,2,1,3,1,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n83,2.7,0,1,2000,21,100,3,2,0,5,0,65,0,1,0,0,4,1,3,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1\n73,0,0,0,1760,23,101,6,4,4,20,0,58,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n86,0,0,0,1380,27,88,3,2,0,20,0,100,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n74,0,0,0,2340,22,90,3,3,0,0,0,77,1,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\nNA,0,0,0,1840,25,125,3,2,0,0,0,75.41043963,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n62,0,0,1,2150,21,100,4,3,2,0,0,61.81916096,1,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n66,2.2,0,1,1120,34,104,5,4,2,8,0,51,0,0,0,0,2,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0\n73,3.68,0,1,2140,16,111,1,1,0,0,0,75,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0\n76,0,0,0,2460,21,93,2,2,0,0,0,72,1,0,0,1,1,1,2,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1\n52,0,0,0,2380,22,67,2,2,0,0,0,72,1,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1\nNA,0,0,0,1280,20,96,1,1,0,5,0,64.95998285,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0\n50,0,0,0,2200,22,89,4,4,0,0,0,56,1,1,0,0,2,2,2,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0\nNA,0,0,0,2230,27,113,4,4,2,10,0,58.71270393,1,1,0,0,2,1,2,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0\nNA,0,0,1,2400,31,93,4,2,0,0,0,72.18386307,1,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0\n73,0,0,0,1570,25,105,3,2,0,0,0,79,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n71,0,0,0,1500,20,103,2,1,0,0,1,62,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n88,3.71,0,1,1970,27,82,3,3,0,0,0,62,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n64,0,0,0,840,26,96,3,3,0,0,0,64,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n100,0,0,0,1170,27,92,2,2,0,25,1,96,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n132,0,0,0,1690,31,108,2,2,0,0,5,125,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1\n108,4.1,1,1,1200,31,105,1,1,0,0,0,66,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\nNA,0,0,1,1580,30,93,2,3,0,10,0,64.79238126,0,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n90,0,0,0,1250,18,92,2,1,0,0,0,66,0,1,2,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n78,0,0,0,2190,17,99,1,1,0,0,0,56,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n83,3.77,0,1,2430,29,46,3,3,1,0,0,65,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1\n93,0,0,0,2140,34,107,2,2,0,0,0,90,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n76,0,0,0,1890,25,115,3,3,0,0,0,77,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n73,0,0,0,2360,17,97,1,1,0,20,0,40,1,1,1,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n105,3.52,0,1,1700,22,100,2,2,0,4,1,66,0,1,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n100,3.52,0,1,2210,27,117,5,4,2,0,0,61,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n66,0,0,0,2160,18,112,3,3,1,10,0,75,1,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n88,4.32,1,1,946,16,110,1,1,0,0,0,61,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n88,0,0,0,1710,23,117,1,1,0,0,0,83,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0\n64,0,0,0,946,19,97,2,2,1,0,0,47,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n57,0,0,0,2460,16,98,1,1,0,0,0,50,1,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\nNA,0,0,1,1730,34,122,3,3,0,0,0,80.77320524,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n43,0,0,0,900,31,85,2,2,0,0,0,131,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n81,0,0,0,2190,16,32,1,1,0,0,0,78,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n93,2.71,0,1,2180,24,111,2,1,0,0,0,68,1,0,2,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n62,0,0,0,936,31,100,3,4,1,2,0,79,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n95,4.15,1,1,2150,24,113,3,3,0,40,28,60,1,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,4.12,1,1,2380,19,90,1,1,0,7,0,94,1,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n73,0,0,0,1750,42,108,4,4,3,0,0,87,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n110,3.73,0,1,2400,22,106,1,1,0,0,0,89,1,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n86,3.79,0,1,2130,33,114,6,6,3,0,0,78,1,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n90,4.04,1,1,1690,23,105,4,4,0,20,0,75.44613293,0,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n83,3.31,0,1,1760,33,104,5,4,0,10,0,90,0,0,2,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n78,0,0,0,2180,26,87,2,2,1,10,0,86,1,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n83,0,0,0,2100,23,119,2,2,0,3,1,65,1,1,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,0,0,0,2370,21,100,2,2,1,1,0,72,1,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n100,0,0,0,1690,18,107,1,1,0,0,0,83,0,1,0,0,2,1,3,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n93,0,0,0,1640,20,105,1,1,0,10,0,79,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n83,0,0,0,2050,24,113,1,1,0,0,0,83,1,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1\n100,3.46,0,1,1600,20,119,1,1,0,0,0,68,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n115,0,0,0,740,19,96,1,1,0,1,0,60.73278907,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n81,0,0,0,1980,18,93,1,1,0,10,0,94,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n78,0,0,0,2350,26,109,2,2,1,0,1,87,1,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n111,0,0,0,2040,26,93,1,1,0,0,1,104,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n120,0,0,1,2340,35,67,1,1,0,0,0,120,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1\n88,0,0,0,2340,21,109,2,2,0,0,0,91,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n103,4.27,1,1,1600,27,106,2,2,1,20,0,86,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,0.34,0,1,1550,17,95,2,2,0,0,0,73,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\nNA,0,0,1,2280,23,72,1,1,0,0,0,70.55289417,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n95,2.75,0,1,2280,21,113,2,1,0,0,0,49,1,0,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n81,0.17,0,1,1880,18,76,1,1,0,0,0,62,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n108,0,0,0,2420,23,72,1,1,0,0,2,92,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n68,3.13,0,1,2200,27,66,3,3,0,8,0,56,1,0,0,1,4,1,3,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n57,0,0,0,2080,24,101,3,3,0,20,1,77.35394915,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0\n83,0,0,0,1730,14,98,1,1,0,0,0,80,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n83,0,0,0,2140,23,121,3,3,0,10,1,72.85199796,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n76,0.02,0,1,2080,16,125,1,1,0,10,0,57,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n90,3.64,0,1,2400,25,106,3,3,1,6,0,67,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n98,4.17,1,1,2480,23,101,1,1,0,0,0,89,1,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,3.66,0,1,1230,22,106,2,2,1,4,0,73,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n90,3.38,0,1,1550,26,97,2,2,0,0,0,56,0,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n86,2.7,0,1,1530,36,97,1,1,0,0,0,123,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n93,3.61,0,1,1720,29,116,2,1,0,6,0,68,0,0,2,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n71,0,0,0,1440,18,105,2,2,1,6,1,49,0,0,0,0,2,1,3,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n71,0,0,0,1700,19,105,2,2,1,0,6,85.05257234,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\nNA,0,0,0,1780,24,103,1,1,0,0,0,97.16644037,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n71,0,0,0,1690,22,100,3,3,0,0,0,59,0,0,1,1,1,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,0,0,0,1130,16,112,1,1,0,0,0,63,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\nNA,0,0,0,1750,16,108,1,1,0,0,0,65,0,1,1,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\nNA,0,0,1,2360,28,108,2,2,0,5,1,116.0431247,1,0,0,1,1,1,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0\n105,2.57,0,1,2480,29,101,1,1,0,20,0,63,1,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n125,4.16,1,1,2210,32,109,2,1,2,0,0,75,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n81,0,0,0,2010,29,112,2,2,0,0,0,95,1,0,1,1,1,1,2,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n88,0,0,0,2160,24,106,3,3,0,20,0,68,1,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n86,4.04,1,1,2420,21,105,2,2,0,0,0,84,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n105,3.58,0,1,2230,30,116,3,3,2,0,0,88,1,1,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\nNA,0,0,1,1950,17,86,1,1,0,10,1,49.64695984,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n71,0,0,0,1740,21,107,1,1,0,0,0,41,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n81,3.56,0,1,2410,15,105,1,1,1,0,0,144,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n93,0,0,0,2160,18,120,1,1,0,20,6,75,1,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n83,0,0,0,2310,15,107,1,1,0,0,0,104,1,0,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n73,0,0,0,2330,16,88,1,1,0,0,0,74,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n93,0,0,0,2130,22,118,1,1,0,0,0,95,1,1,0,1,1,1,2,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n93,0,0,0,1770,27,105,2,2,0,0,2,60,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n88,3.22,0,1,1830,25,109,3,3,0,10,0,71,0,0,0,1,4,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n68,0,0,0,1050,31,38,7,7,3,10,0,86,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n86,0,0,0,1900,22,103,3,3,2,0,0,70,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n114,4.13,1,1,1050,27,98,1,1,0,0,0,93,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n98,0.47,0,1,1310,24,112,1,1,0,2,0,90.81525122,0,0,0,0,1,1,2,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n73,0,0,0,2420,29,97,1,1,0,6,0,110,1,0,0,0,4,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n95,3.71,0,1,1840,15,96,1,1,0,0,0,104,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n104,4.12,1,1,1760,26,96,1,1,0,20,2,66,0,0,1,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n76,2.14,0,1,2500,21,100,1,1,0,0,0,74,1,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n98,3.16,0,1,1940,20,92,1,1,0,0,0,72,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1\n81,3.32,0,1,2070,14,73,1,1,0,20,2,65.31981009,1,0,0,0,2,2,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n73,0,0,0,1191,18,97,2,2,1,0,0,61,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n106,2.91,0,1,1729,15,101,1,1,0,0,0,79,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n103,0,0,0,1880,32,94,1,1,0,0,0,110,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1\n95,3.56,0,1,1860,24,108,3,3,0,5,0,64,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n125,1.84,0,1,1080,23,96,5,5,0,20,24,68,0,1,0,0,3,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0\n103,0,0,0,1910,25,95,1,1,0,0,1,90,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1\n86,2.51,0,1,940,14,110,1,1,0,0,0,58.38324539,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\nNA,0,0,0,900,16,94,1,1,0,0,0,68.42028911,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n73,0,0,0,1010,19,117,4,3,0,0,0,66,0,1,2,0,4,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,3.08,0,1,1430,18,102,2,1,0,0,0,62,0,1,2,0,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n73,3.59,0,1,1540,23,110,1,1,0,0,0,62,0,0,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\nNA,0,0,0,1460,18,99,2,2,0,0,0,59.99762151,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n86,0,0,0,760,19,97,1,1,0,0,0,59,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\nNA,0,0,0,1300,22,111,1,1,0,20,0,68.52032964,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n83,0,0,0,1210,18,104,2,2,0,0,0,67,0,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n73,0,0,0,1560,20,92,3,3,0,0,0,64,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n73,1.87,0,1,1500,24,15,3,3,1,0,0,66,0,0,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n78,0,0,0,2180,18,100,2,2,1,0,0,52,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n88,0.18,0,1,2080,34,82,4,5,0,0,0,70,1,0,0,1,1,2,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n98,0,0,0,1320,18,103,3,3,2,0,0,62,0,0,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\nNA,0,0,0,1040,32,104,1,1,0,0,0,78.56317136,0,1,0,1,1,4,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0\n88,0,0,0,1960,25,98,3,3,0,7,0,54,0,0,0,0,2,1,3,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n76,0,0,0,1030,35,108,6,6,1,4,3,64,0,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n86,0,0,0,1210,18,123,1,1,0,0,0,54,0,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n57,0,0,0,1210,18,83,2,2,1,2,0,65,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n95,2.3,0,1,1920,24,114,1,1,0,0,0,84,0,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n66,3.22,0,1,1170,17,85,1,1,0,0,0,58,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n76,2.91,0,1,1850,37,82,7,6,1,0,0,54,0,1,2,0,4,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n78,3.29,0,1,1470,20,97,2,1,0,0,0,57,0,1,2,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n103,4.45,1,1,2100,23,84,3,3,0,10,3,95,1,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n81,4.16,1,1,2230,17,99,1,1,0,0,0,70,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n68,0,0,0,1960,19,111,2,2,0,5,0,53,0,1,1,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n95,4.33,1,1,2490,25,74,2,2,0,20,0,79,1,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n83,0,0,1,1550,20,80,1,1,0,15,2,106,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n81,0,0,0,2250,15,113,2,2,2,0,0,71,1,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n90,2.85,0,1,2090,16,110,1,1,0,0,0,78,1,1,0,1,3,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n98,2.98,0,1,1000,20,118,2,2,1,10,0,73,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n73,0,0,0,2350,25,107,2,2,1,4,1,59,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n81,0,0,0,2290,17,101,1,1,0,0,0,63,1,0,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n91,0,0,0,2030,17,95,2,2,0,0,0,73,1,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n46,0.41,0,1,1130,22,103,2,2,1,0,0,75,0,1,1,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n64,2.49,0,1,2020,22,84,2,3,0,18,0,95.34640939,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n62,0,0,0,2340,21,104,3,3,2,0,0,72,1,1,0,1,1,2,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n105,3.52,0,1,2220,18,111,3,3,1,0,0,57,1,0,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n105,3.59,0,1,1840,20,98,5,4,1,0,0,78,0,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n95,4.07,1,1,2100,23,105,2,2,0,10,0,65,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n95,0,0,0,2170,24,108,4,4,0,0,0,96,1,0,0,1,1,1,2,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1\n95,0,0,0,1470,19,110,1,1,0,0,0,75,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n90,0,0,0,1960,17,107,1,1,0,0,0,65,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n83,0,0,0,2096,21,98,2,2,0,1,0,55,1,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,0,0,0,1390,16,80,1,1,0,10,0,78,0,1,0,1,1,1,3,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n103,1.36,0,1,2000,25,104,1,1,0,0,0,80,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n76,0,0,0,2380,23,105,4,3,2,3,0,87,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n78,4.08,1,1,2170,39,72,2,2,0,6,1,70.13886886,1,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n76,0,0,0,1930,25,101,3,3,0,0,0,66,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\nNA,0,0,1,1300,41,117,2,1,0,0,0,89.03398336,0,1,0,1,4,4,2,1,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1\n105,0,0,0,1680,20,102,1,1,0,0,1,84.12085692,0,1,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n74,0,0,0,1350,17,111,2,2,0,3,0,63,0,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\nNA,0,0,1,2320,17,102,1,1,0,20,0,55.91967147,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n120,3.8,0,1,2150,19,99,1,1,0,20,0,69,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n93,0,0,0,2180,20,102,2,2,0,0,0,82,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n98,2.16,0,1,1550,24,116,4,4,2,0,2,60,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n43,1.34,0,1,1010,18,52,2,2,1,0,0,70.2371037,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n105,3.6,0,1,1950,19,93,1,1,0,0,0,83,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n98,2.99,0,1,1880,20,101,1,1,0,0,0,76,0,1,0,1,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n68,0,0,0,1830,17,102,1,1,0,0,0,53,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n68,3.76,0,1,1530,21,109,3,3,1,0,0,45,0,1,0,0,3,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\nNA,0,0,0,2060,19,88,1,1,0,0,0,50.0505543,1,1,0,0,1,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n81,0,0,0,2110,24,104,3,3,1,10,0,48,1,1,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n66,0,0,0,1910,19,86,2,2,0,20,0,92,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n98,3.57,0,1,1490,22,88,2,1,0,20,0,74,0,0,0,0,2,1,3,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n83,0,0,0,1200,20,106,2,2,1,0,0,59,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n86,0,0,0,1950,28,116,2,2,0,10,0,63,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n86,3.82,0,1,2450,32,81,1,1,0,0,0,95,1,0,0,1,1,1,2,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\n83,0,0,0,2140,30,94,3,3,0,0,0,75,1,0,0,1,1,2,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n88,0,0,0,2050,20,116,2,2,1,0,1,72,1,1,0,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,0,0,0,1800,16,106,2,2,0,0,0,80,0,1,0,1,1,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n78,0,0,0,2500,22,102,5,5,0,40,0,85.04417021,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n71,0,0,0,1930,19,103,1,1,0,10,1,65,0,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n86,0,0,0,840,28,116,1,1,0,10,0,60,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n98,0,0,0,1230,21,133,2,2,0,0,0,63,0,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n78,0,0,0,1680,22,87,1,1,0,0,0,60,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n68,0.85,0,1,1700,17,82,3,3,2,0,0,40,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n66,3.22,0,1,1500,19,103,2,2,0,20,0,47,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n71,0,0,0,1000,20,97,1,1,0,20,0,52,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n88,0,0,0,1620,20,108,2,2,0,0,0,72,0,1,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n115,0,0,0,960,26,66,5,3,4,0,0,58,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n78,0,0,0,1750,34,81,5,5,0,0,1,72,0,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n71,0,0,0,2340,22,101,2,2,1,0,0,63.11700257,1,1,0,0,4,1,3,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n71,0,0,0,2400,23,97,3,2,2,10,0,77,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,3.63,0,1,1560,15,103,2,2,1,0,0,66,0,0,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n113,0,0,0,1800,23,92,1,1,0,10,0,75.04953937,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1\n95,0,0,0,1610,21,92,3,3,0,0,0,69,0,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n81,1.27,0,1,2260,21,106,3,3,1,5,0,52,1,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n81,4.15,1,1,1880,20,126,3,3,1,0,0,69,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n110,0,0,0,2330,40,108,2,2,0,0,0,68,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n66,0,0,0,920,19,71,2,2,1,0,0,67,0,1,0,0,2,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n96,0,0,0,2110,19,58,2,2,1,0,0,86.27902667,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0\n76,0,0,0,910,25,95,3,2,2,0,0,74,0,0,0,1,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n71,0,0,0,1660,24,73,1,1,0,1,0,57,0,1,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n86,4,0,1,2050,25,110,1,1,0,0,0,60,1,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n88,0,0,0,1950,23,96,2,1,0,0,0,63,0,1,2,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,0,0,0,2190,15,113,2,2,1,0,0,58,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n90,0,0,0,2200,19,113,2,2,1,0,0,104,1,0,0,0,2,1,2,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\n59,0,0,0,1960,19,99,2,2,0,0,0,64,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n98,2.31,0,1,1380,19,105,3,3,0,0,0,93,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n71,0,0,0,1660,22,51,1,1,0,20,0,64,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n86,0,0,0,2070,19,109,3,3,0,10,0,69,1,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n98,0,0,0,2020,19,105,2,2,1,0,0,64,1,1,0,0,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\nNA,0,0,0,1500,22,109,2,2,1,0,0,80.41123995,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n98,0,0,0,1660,28,121,1,1,0,15,0,88,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1\n86,0,0,0,2130,25,103,2,2,1,0,0,63,1,0,0,0,3,1,0,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\n73,0,0,0,2240,17,110,1,1,0,0,0,70,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n113,0,0,1,1410,22,123,1,1,0,0,0,82,0,1,0,0,1,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n98,4.06,1,1,2040,17,104,1,1,0,0,0,85.9301148,1,0,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n120,3.96,0,1,2150,19,112,1,1,0,0,0,74,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n57,0,0,0,2060,21,105,2,2,1,0,0,62,1,0,0,0,4,1,3,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n71,0,0,0,2150,16,89,1,1,0,0,0,79,1,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n81,0,0,0,2180,17,81,1,1,0,0,0,55,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\nNA,0,0,0,2110,18,100,2,2,0,0,0,66,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n76,0,0,0,1300,20,92,3,3,0,7,0,58,0,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n68,0,0,0,1800,28,115,2,2,1,0,0,69.75457029,0,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n95,3.81,0,1,1760,19,117,3,3,2,0,0,66,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n93,0.14,0,1,2090,19,110,2,2,1,0,0,88,1,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n83,0,0,0,2350,18,85,1,1,0,0,0,78,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n64,0,0,0,1470,27,96,3,2,2,2,2,63,0,1,0,0,2,1,3,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1\n55,2.05,0,1,1440,16,104,1,1,0,0,0,55,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n88,0,0,0,1830,19,101,2,2,0,0,0,59,0,1,0,1,1,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n81,4.31,1,1,1460,30,99,3,3,0,10,6,68,0,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n55,0,0,0,1850,22,106,2,2,1,0,0,70,0,1,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1\nNA,0,0,0,1290,16,98,1,1,0,2,0,81.59959195,0,0,0,0,2,1,2,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n115,3.26,0,1,1860,29,100,3,3,0,30,0,101,0,1,0,1,1,1,2,1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1\n95,3.93,0,1,1320,21,122,4,2,1,14,0,62,0,1,0,1,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n100,3.91,0,1,1630,18,98,1,1,0,0,0,69,0,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0\nNA,0,0,0,1480,16,106,1,1,0,0,0,74.90739529,0,0,0,0,2,1,3,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n71,0,0,0,1890,18,123,4,3,0,0,0,64,0,0,2,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n64,0,0,0,1870,38,114,3,3,0,0,0,50,0,0,1,1,1,2,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0\n93,0,0,0,1600,25,115,3,3,0,10,0,63,0,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n81,0,0,0,1660,26,105,2,2,1,0,0,51,0,0,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n88,0,0,0,1850,16,110,1,1,0,0,0,58,0,1,0,0,2,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0\n88,0,0,0,1290,20,122,2,2,1,10,0,66,0,1,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n62,0,0,0,1710,17,84,1,1,2,0,0,97,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1\n59,0,0,0,1730,20,113,2,3,0,0,0,62,0,1,1,0,4,2,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1\n62,0,0,0,540,30,84,2,2,0,5,0,85,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n93,0,0,0,1060,31,80,1,1,0,1,3,121,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n66,0,0,1,1240,20,93,1,1,0,0,0,88.84824662,0,0,0,0,2,1,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,0,1190,28,52,1,1,0,20,1,77,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n110,3.86,0,1,1840,31,91,2,2,1,50,0,104,0,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n120,4.28,1,1,1630,28,99,1,1,0,0,0,103,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n60,0,0,1,1800,30,108,2,2,0,10,0,88.23954213,0,1,0,0,4,1,2,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n110,0,0,0,1920,24,96,1,1,0,0,0,93,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n115,0,0,0,1220,29,95,1,1,0,0,0,110,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n83,0.18,0,1,1350,30,111,1,2,0,0,0,70,0,0,1,0,4,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n78,0,0,0,1440,22,100,1,1,0,25,0,85,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n118,0,0,0,1530,27,101,2,2,0,0,1,99,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n105,3.12,0,1,2440,17,84,1,1,0,0,0,66,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1\n78,0,0,0,1260,24,117,2,2,0,0,0,72,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n127,0,0,0,2190,34,108,1,1,0,0,0,128,1,1,0,0,4,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n108,0,0,0,1580,25,91,2,2,1,20,0,106.5914842,0,1,0,1,1,1,3,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n120,2.5,0,1,2030,28,116,2,2,0,0,0,104,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n105,3.21,0,1,1120,28,113,1,1,0,10,0,97,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n90,0,0,0,1990,31,90,2,2,0,12,1,121,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n110,0,0,0,1660,15,90,1,1,0,0,0,105,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n58,0,0,0,2350,22,122,3,3,3,0,0,80,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n86,3.78,0,1,2350,22,113,1,1,0,10,1,53.99150179,1,1,0,0,3,1,3,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n88,3.96,0,1,1960,25,120,2,2,0,7,1,62,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n90,0,0,0,940,20,136,1,1,0,20,0,79,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n71,0,0,0,1880,25,112,2,2,0,0,0,58,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n129,0,0,0,1850,24,102,3,1,0,0,0,102,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n98,0,0,0,2340,16,87,1,1,0,20,0,81,1,0,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n43,0,0,0,1120,27,77,4,4,0,2,0,92,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n52,0,0,0,1420,27,96,2,2,0,20,0,83.80150283,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n93,0,0,0,2010,22,115,1,1,0,0,0,106,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n86,0,0,0,1780,34,97,2,2,0,0,0,84,0,0,0,1,1,4,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0\n95,0,0,0,2250,34,93,2,2,0,0,0,85,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n98,0,0,0,1390,26,115,1,1,0,15,1,81,0,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n68,4.46,1,1,640,34,74,2,3,0,20,2,120,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n120,0,0,0,2360,33,68,1,1,0,0,1,112,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n95,0,0,0,1460,23,91,1,1,0,20,3,115,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n93,0,0,1,1860,18,103,1,1,0,0,1,61.40110597,0,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n110,0,0,0,1900,23,86,1,1,0,20,0,78,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n76,0,0,0,1070,16,111,1,1,0,0,1,87,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0\n95,0,0,0,2420,31,89,2,2,0,0,0,100,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n90,0,0,0,2460,24,92,5,4,0,0,0,98,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n127,0,0,0,1900,32,91,2,2,0,0,0,121,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n115,0,0,0,1540,31,95,1,1,0,0,0,125,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n88,3.72,0,1,2260,25,117,4,4,3,20,0,78,1,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n76,0,0,0,1500,18,90,1,1,0,0,0,98,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n105,0,0,0,1690,26,71,3,3,0,15,0,109,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n100,0,0,0,2120,18,109,1,1,0,0,0,70,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n64,0,0,0,1500,32,98,2,2,1,10,0,74,0,0,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n100,2.56,0,1,2040,16,78,1,1,0,0,0,75.10970886,1,0,0,0,3,1,2,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n132,4.3,1,1,1330,35,84,2,2,0,0,0,120,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n122,0,0,0,2300,30,89,1,1,0,0,0,84,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n93,0,0,0,2460,42,100,3,3,0,10,2,143,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0\n52,0.49,0,1,1136,24,91,2,1,0,0,0,79,0,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n105,0.03,0,1,2450,30,92,1,1,0,0,0,78,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n81,0,0,0,1900,27,88,3,3,0,20,0,72,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n108,4.68,1,1,980,32,107,1,1,0,0,0,121,0,0,0,0,4,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1\n113,3.61,0,1,1860,26,107,2,2,1,20,0,81,0,1,0,0,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n93,0,0,0,2430,23,113,3,3,0,10,0,84.14140471,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n100,2.57,0,1,1920,31,119,2,2,0,10,0,103,0,0,0,0,4,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,1,2140,19,120,1,1,0,0,0,91.86853817,1,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n108,3.35,0,1,2360,27,97,1,1,0,50,5,87,1,0,0,0,2,1,3,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n144,0,0,1,2450,34,81,2,2,1,0,0,120,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n48,0,0,0,1940,19,101,1,1,0,0,0,80.93839201,0,0,0,1,1,4,3,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n73,0,0,0,1540,23,136,5,4,0,0,3,88,0,1,2,0,1,1,2,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0\n127,0,0,0,1860,23,115,2,1,0,0,0,90,0,0,2,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n118,0,0,0,1840,27,112,1,1,0,10,0,104.8998922,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n95,0,0,1,1400,33,118,1,1,0,0,0,113,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n103,3.44,0,1,2370,38,102,1,1,0,0,0,109,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n68,4.34,1,1,1060,26,113,2,2,1,8,0,73,0,1,1,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n121,0,0,0,1960,30,104,1,1,0,0,0,113.5831624,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n78,0,0,0,1900,30,103,4,4,0,30,0,84,0,1,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n73,0,0,0,1940,24,97,1,1,0,0,0,103.9869125,0,1,0,1,1,4,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n98,3.37,0,1,1940,34,99,5,4,0,0,0,56,0,1,2,1,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0\n100,0,0,0,1890,28,77,2,2,0,15,0,96,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,1,2280,19,101,3,3,0,5,0,89.59611334,1,0,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n73,0,0,0,1030,32,82,3,3,0,0,0,79,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n129,0,0,0,2310,39,111,1,1,0,0,1,123,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n98,4.38,1,1,2110,25,105,1,1,0,0,0,90,1,0,1,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n127,3.7,0,1,2450,19,104,1,2,0,20,0,93,1,1,0,0,2,1,2,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n98,4.19,1,1,1540,22,123,1,1,0,0,0,70,0,0,0,1,1,4,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n88,0,0,0,1790,25,84,1,1,0,2,0,105.9914653,0,1,1,1,1,1,2,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n78,0,0,0,2240,28,115,3,3,0,10,2,52.29615206,1,1,0,0,2,1,3,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n81,0,0,0,2110,35,115,7,7,0,20,0,91,1,1,0,0,3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n139,4.21,1,1,2390,30,95,1,2,0,0,0,92,1,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n95,0,0,0,1720,25,120,1,1,0,0,0,89,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n48,0,0,0,920,33,95,2,2,0,0,0,106,0,0,0,0,4,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n122,4.27,1,1,1550,27,128,1,1,0,0,0,89,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n71,3.29,0,1,2000,21,108,2,2,1,0,0,73,0,0,1,0,3,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n108,0,0,0,2040,33,92,4,4,0,0,0,97,1,0,0,1,1,4,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n64,0,0,0,2470,28,86,3,3,0,0,0,108,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n118,0,0,0,2470,40,74,2,2,1,0,0,128,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n134,0,0,1,1970,24,112,1,1,0,0,0,115,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n78,0,0,0,2290,31,89,2,2,0,0,0,110,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n113,0,0,0,2290,29,87,2,2,0,20,0,106,1,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n98,0,0,0,2490,24,99,1,1,0,0,0,83,1,1,0,0,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1\n95,0,0,0,1920,33,102,2,2,0,0,0,113,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n52,0,0,0,2230,32,101,2,2,1,0,0,94.47651802,1,1,0,1,1,3,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n81,0,0,0,2430,19,105,1,1,0,0,0,99,1,1,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n98,0,0,1,1810,27,60,2,3,0,0,0,95.3165179,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n73,0,0,0,2180,21,137,1,1,0,10,0,87.28992892,1,0,0,0,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,0,2140,27,91,3,3,1,5,1,97.08647501,1,0,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n86,0,0,0,2040,33,116,1,1,0,0,0,133,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n98,3.74,0,1,1670,25,62,2,2,0,10,0,81,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,0,2270,33,117,4,4,2,20,0,103,1,1,0,1,1,1,2,0,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n86,0,0,0,1670,20,132,1,1,0,5,1,78,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n118,4.56,1,1,1670,28,109,2,2,0,0,0,110,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n122,3.85,0,1,2140,23,106,1,1,0,8,0,124,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n100,0,0,0,1950,29,110,4,4,2,10,4,86,0,0,0,0,4,1,2,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0\n90,4.39,1,1,2000,21,113,2,1,0,20,0,78,0,1,2,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n86,3.12,0,1,1620,25,76,1,1,0,0,0,62,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n118,0,0,0,2270,27,97,2,2,0,0,0,93,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0\nNA,0,0,1,1410,33,108,5,8,4,60,0,76.46795618,0,0,0,0,4,1,2,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n113,0,0,0,1140,34,98,1,1,0,0,0,109,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n81,0,0,0,2470,32,82,1,1,0,0,0,89.86922343,1,1,0,1,1,3,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n68,0,0,0,2200,17,86,1,1,0,0,0,64.74571075,1,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0\n108,0,0,0,2270,32,97,1,1,0,0,0,100,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\nNA,0,0,0,1870,32,112,2,1,0,10,0,95.07511936,0,1,2,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n59,3.4,0,1,1810,20,76,2,2,0,0,0,86,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n81,0,0,0,1230,20,137,2,2,0,4,0,77,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n118,4.27,1,1,1720,27,94,1,1,0,0,0,113,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n115,4.15,1,1,1440,22,100,1,1,0,0,0,93,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n95,0,0,1,2340,20,110,2,2,0,30,0,76,1,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1\n81,0,0,0,1360,31,104,3,3,0,0,0,95,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,1\n93,0,0,0,1630,26,99,1,1,0,0,0,98,0,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1\nNA,0,0,1,1550,33,89,3,3,0,2,0,137.7931604,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0\n103,4.32,1,1,1550,24,110,1,1,0,10,0,87,0,0,0,0,4,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n122,0,0,0,1730,33,84,2,1,0,0,0,128,0,1,2,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1\n108,4.02,1,1,1620,35,129,2,2,0,0,0,106,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n78,0,0,0,1450,20,98,1,1,0,10,0,79,0,1,0,0,1,1,2,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0\n86,4.25,1,1,1850,22,111,1,1,0,0,0,108,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1\n120,4.31,1,1,1890,28,91,3,3,0,0,0,95,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1\n105,1.58,0,1,990,20,84,1,1,0,2,0,89,0,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n113,2.47,0,1,1780,32,71,1,1,0,0,0,86,0,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n98,3.42,0,1,1330,22,113,3,2,0,0,0,73,0,0,2,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n110,0,0,0,1410,28,93,1,1,0,0,0,101,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n88,0,0,1,1910,33,55,3,3,0,0,0,93,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n91,0,0,0,1730,20,93,1,1,0,9,0,69,0,1,0,1,1,1,3,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n76,0,0,0,1070,35,107,3,3,0,0,0,71,0,0,0,0,4,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n73,0,0,0,1570,21,108,4,4,0,30,0,64,0,0,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n120,0,0,0,970,43,103,1,1,0,0,1,117,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n90,0,0,0,1330,28,86,2,2,0,20,0,78,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n98,0,0,0,1640,17,99,1,1,0,0,0,103,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n76,0,0,0,1300,16,87,1,1,0,0,0,69,0,1,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n95,4.05,1,1,1880,28,115,1,1,0,0,0,82,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1\n120,0,0,0,2340,28,63,1,1,0,0,0,89,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n76,0,0,0,1890,25,90,2,2,0,1,0,113,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n95,0,0,0,1460,23,101,1,1,0,0,0,104,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n142,0,0,1,2120,35,114,1,1,0,0,0,128,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n90,3.85,0,1,1930,27,109,2,1,0,10,0,80,0,0,2,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n90,0,0,0,1580,32,98,1,1,0,10,0,52,0,1,0,0,4,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n100,0,0,0,790,19,108,1,1,0,0,0,74,0,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0\n83,0,0,0,1630,19,79,3,3,0,20,0,65,0,0,0,0,4,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n105,4.08,1,1,1790,23,87,2,2,0,0,0,91,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0\n118,3.7,0,1,2100,19,100,1,1,0,0,0,55,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n52,0,0,0,2200,21,80,1,1,0,7,0,79.72614347,1,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n115,0,0,0,2220,23,90,1,1,0,0,0,98,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n73,1.77,0,1,1000,32,69,4,4,0,10,0,92,0,1,0,0,4,1,3,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0\n86,0,0,0,2180,29,106,1,1,0,0,0,108.0554525,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0\n105,3.04,0,1,2460,21,73,1,1,0,20,0,78,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n95,0,0,0,1080,29,111,1,1,0,0,14,118.3126761,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\nNA,0,0,0,1660,30,111,4,4,1,10,12,56.04464449,0,0,0,0,4,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n76,0.28,0,1,2160,30,102,1,1,0,0,3,106,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n108,3.64,0,1,2480,24,89,2,2,0,30,1,75,1,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\nNA,0,0,1,2470,28,94,1,1,0,0,0,99,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n62,0,0,0,2410,25,85,6,6,0,0,0,65,1,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n127,0,0,1,2110,28,88,1,1,0,0,0,121,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0\n120,3.38,0,1,2310,29,84,1,1,0,10,0,94,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n122,0,0,0,1910,33,40,2,1,0,0,0,125,0,0,2,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\nNA,0,0,1,1600,41,121,2,2,0,0,0,112.5644879,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n76,0,0,0,1410,19,132,1,2,0,0,0,73,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n93,0,0,1,1700,31,120,4,4,1,10,2,107.3585463,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n108,0,0,1,2370,28,101,1,1,0,0,0,120,1,1,0,1,1,4,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0\n105,3.6,0,1,2230,30,103,2,1,0,3,0,106,1,0,2,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n105,0,0,0,1730,23,123,1,1,0,20,0,108,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n119,3.81,0,1,2330,19,113,1,1,0,1,0,103,1,1,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n95,0,0,0,2230,29,82,1,1,0,12,1,93,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n108,1.21,0,1,2470,28,98,2,2,0,0,0,101,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n115,0,0,1,2360,31,117,2,2,0,0,0,106.5744106,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n113,4.18,1,1,960,37,90,1,1,0,0,0,128,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n129,3.79,0,1,2440,37,92,3,3,0,13,5,110,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0\n115,0,0,0,1160,37,120,1,1,0,0,0,123,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n108,0,0,0,2480,23,103,1,1,0,20,0,84,1,1,0,1,1,1,2,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n86,3.51,0,1,1750,17,101,1,1,0,0,0,65,0,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n118,3.98,0,1,1860,24,103,1,1,0,10,1,128,0,0,0,0,4,1,2,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n108,3.63,0,1,2160,28,77,1,1,0,0,0,103,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n83,0,0,0,760,23,86,1,1,0,20,0,90,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n95,1.41,0,1,1130,32,46,1,1,0,30,0,92,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n132,3.84,0,1,1990,26,98,1,1,0,2,0,100,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n86,3.85,0,1,2490,25,82,3,2,2,20,0,84,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n68,0,0,0,2190,32,100,6,6,2,0,3,87,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n110,0.98,0,1,1720,31,115,1,1,0,0,0,104,0,0,0,1,2,4,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n113,3.28,0,1,1700,15,106,1,1,0,0,0,106,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n100,3.9,0,1,2430,19,101,1,1,0,0,0,89,1,1,0,0,2,1,3,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\nNA,0.79,0,1,2496,19,101,2,2,1,0,0,62,1,0,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n100,0,0,0,2170,19,98,1,1,0,10,0,87,1,0,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n81,2.95,0,1,1380,32,108,1,1,0,0,0,78,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n108,2.53,0,1,2160,22,99,1,1,0,0,0,65,1,1,0,0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n118,0,0,0,1590,27,120,1,1,0,0,0,95,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n95,3.97,0,1,1550,20,100,1,1,0,0,0,78,0,1,0,0,4,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n103,0,0,0,1800,25,103,2,1,0,7,0,106,0,1,2,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n93,0,0,0,1910,22,100,3,4,2,10,0,76,0,1,0,1,1,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n108,0,0,0,2070,28,108,1,1,0,0,0,109,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n66,0,0,0,1000,27,111,3,3,1,10,0,68,0,1,0,0,4,1,2,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0\n76,0,0,0,1130,23,85,2,2,1,0,1,58,0,1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n66,0,0,0,1590,20,118,1,1,0,3,4,66,0,1,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n105,0,0,0,2110,29,108,2,2,0,0,0,66,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0\n118,2.93,0,1,1730,32,101,3,3,0,0,0,95,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n73,3.68,0,1,2340,22,107,1,1,0,0,0,105,1,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n81,0,0,0,2410,15,107,1,1,0,0,0,64,1,1,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n88,0.03,0,1,1680,34,98,1,1,0,0,0,63,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n73,0,0,0,970,30,82,2,2,0,0,0,101,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0\n71,0,0,0,1010,27,114,1,4,0,0,1,54,0,0,0,0,3,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n93,0,0,0,2000,30,100,3,2,0,0,0,140,0,0,2,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0\n73,0,0,0,2290,17,115,1,1,0,10,0,85,1,0,0,0,2,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\nNA,0,0,0,1010,31,117,2,2,0,0,1,79.84085827,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\nNA,0,0,0,800,21,94,2,2,1,20,0,73.76041592,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n83,0,0,0,2340,23,112,1,1,0,5,0,62,1,0,0,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n95,0,0,0,2380,32,104,2,2,1,0,0,89,1,1,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n68,0,0,0,2130,26,117,1,1,0,0,0,88,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n68,0,0,0,1830,23,103,1,1,0,3,0,69,0,1,1,0,2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n71,0,0,0,2340,20,112,2,2,0,10,0,80,1,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n93,0,0,0,2420,29,97,2,2,0,20,0,90,1,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n103,0,0,0,1390,29,88,2,2,0,0,0,78.45916764,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n64,0,0,0,2040,23,93,2,2,0,0,0,68,1,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n110,0,0,0,1340,18,96,1,1,0,3,0,97,0,1,0,0,2,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n132,0,0,0,2180,39,114,2,2,1,0,2,123,1,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n68,0,0,0,1770,26,109,3,3,0,5,0,91,0,0,0,0,4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n108,0,0,0,1740,19,130,2,2,1,6,0,83,0,1,0,0,2,1,3,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0\nNA,0,0,0,1970,25,117,1,1,0,0,0,71.34505451,0,0,0,1,1,4,2,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n68,0.9,0,1,1930,21,105,3,3,1,20,0,64,0,1,0,0,4,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n66,0,0,0,2130,22,121,2,1,0,3,0,72.9702544,1,0,2,0,2,1,2,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\n98,0,0,0,800,17,110,1,1,0,0,0,73,0,0,0,0,2,1,2,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0\n71,0,0,0,930,26,98,4,3,0,20,0,78.40399136,0,1,2,0,2,1,3,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1\nNA,0,0,0,2380,27,93,4,4,2,15,0,113,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1\n98,3.46,0,1,1430,26,91,2,1,0,0,0,86,0,0,2,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0\n129,0,0,0,1650,34,105,2,2,0,0,0,117,0,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0\nNA,0,0,1,2250,21,113,3,3,2,10,0,54.21500596,1,1,0,0,4,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0\n127,0,0,0,1800,36,94,2,2,1,2,0,117,0,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0\n105,1.88,0,1,2140,32,112,1,1,0,0,2,96,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n73,0,0,0,2350,28,111,2,2,1,0,0,74,1,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n127,0,0,0,1670,28,125,1,1,0,0,0,115,0,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,1\n98,0,0,0,1740,26,107,1,1,0,15,3,87,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1\n72,0,0,1,2000,26,110,5,5,0,10,7,62,0,0,0,1,1,1,2,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,1\n"
  },
  {
    "path": "econml/data/ihdp/example_full.csv",
    "content": "\"row.names\",\"id\",\"tg\",\"bw\",\"bwg\",\"pag\",\"site\",\"b.length\",\"b.head\",\"momage\",\"momed\",\"kidrace\",\"sex\",\"nnhealth\",\"momrace\",\"dadrace\",\"birth.o\",\"mlt.birt\",\"parity\",\"nkids\",\"b.marry\",\"livwho\",\"language\",\"whenpren\",\"moreprem\",\"cigs\",\"alcohol\",\"drugs\",\"othstudy\",\"twinihdp\",\"twinstat\",\"ppvtmom\",\"momiq\",\"apgar1\",\"apgar5\",\"deliver\",\"present\",\"behav36\",\"inter36\",\"exter36\",\"iqsb.36\",\"ppvtr.36\",\"behav60\",\"inter60\",\"exter60\",\"ppvtr.60\",\"iqv.60\",\"iqp.60\",\"iqf.60\",\"inter96\",\"exter96\",\"behav96\",\"iqf.96\",\"iqv.96\",\"iqp.96\",\"ppvtr.96\",\"cp8\",\"income8\",\"tst.cp\",\"ncdc2\",\"ncdc3\",\"ncdct\",\"ahrscdc2\",\"ahrscdc3\",\"ahrscdct\",\"nvisit1\",\"nvisit2\",\"nvisit3\",\"nvisitt\",\"twin.no\",\"twin\",\"ga.anal\",\"work.dur\",\"work.pri\",\"wjword\",\"wjpass\",\"wjmathc\",\"wjmatha\",\"wjbread\",\"wjbmath\",\"mom.lths\",\"mom.hs\",\"mom.coll\",\"mom.scoll\",\"site1\",\"site2\",\"site3\",\"site4\",\"site5\",\"site6\",\"site7\",\"site8\",\"momblack\",\"momhisp\",\"momwhite\",\"momed4\",\"momraceF\",\"siteF\",\"momed4F\",\"mlt.birtF\",\"livwhoF\",\"languageF\",\"whenprenF\",\"b.marryF\",\"female\",\"treat\",\"ncdctt\",\"workdur.fake\",\"workdur.imp\",\"ppvtmom.fake\",\"ppvt.imp\",\"dose400\"\n1,1029,\"I\",1559,0,1,1,40,NA,33,5,\"w\",\"F\",94,1,1,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,75,NA,8,9,2,1,4,0,4,120,111,10,4,6,98,107,110,109,3,1,4,110,110,110,93,2,9,1,213,219,432,5.788732,6.589041,12.37777,34,21,17,72,1,0,30,1,1,108,114,80,106,111,90,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.32,1,1,75,75,1\n2,1030,\"I\",1420,0,1,1,39,27,15,2,\"b\",\"F\",85,2,2,2,0,2,2,2,2,1,0,0,0,0,2,2,NA,3,73,73,4,8,1,2,27,7,10,90,NA,12,3,5,74,87,82,84,9,18,29,87,92,83,77,2,1,1,177,214,391,5.915254,4.864486,10.77974,23,20,17,60,1,0,36,1,1,108,120,97,106,113,100,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,1,3.91,1,1,73,73,0\n3,1046,\"F\",1000,0,1,1,37,25,33,2,\"b\",\"M\",89,2,2,4,0,5,4,3,2,1,1,0,20,1,2,2,NA,3,77,77,1,3,1,2,33,7,23,76,79,42,14,24,39,77,84,78,14,38,55,73,78,72,68,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,77,69,66,81,71,68,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",0,0,0,1,1,77,77,0\n4,1050,\"F\",1430,0,1,1,40,29,22,2,\"b\",\"M\",112,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,7,9,2,2,59,12,34,43,NA,21,10,9,NA,NA,NA,NA,7,13,21,40,46,46,19,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,27,34,7,0,25,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,70.479731538711,62.3723534541777,0\n5,1056,\"F\",1984,0,1,1,44,31,20,4,\"b\",\"M\",99,2,2,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,73,73,8,9,2,2,43,6,28,73,89,39,9,22,69,80,76,76,13,31,47,74,91,60,94,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,0,1,78,76,99,88,75,92,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,73,73,0\n6,1059,\"F\",1320,0,1,1,41,28,23,4,\"b\",\"F\",110,2,2,2,0,2,2,2,4,1,2,1,5,0,2,2,NA,3,56,56,6,7,1,2,51,15,26,83,79,10,2,7,71,76,85,78,11,9,24,82,91,75,63,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,0,92,91,92,95,91,92,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"4\",\"1\",\"2\",\"2\",1,0,0,1,1,56,56,0\n7,1060,\"I\",2240,1,1,1,44,31,22,2,\"b\",\"F\",105,2,2,2,0,3,2,4,4,1,1,1,0,5,2,2,NA,3,73,73,4,7,2,2,59,11,36,76,81,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,136,91,227,5.132353,4.648352,9.780705,30,20,18,68,1,0,37,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"4\",\"1\",\"1\",\"4\",1,1,2.27,0,0,73,73,0\n8,1069,\"F\",2020,1,1,1,41,29,37,2,\"w\",\"F\",100,1,1,2,0,2,2,3,1,1,1,0,30,0,2,2,NA,3,64,64,7,7,1,4,46,4,24,95,93,20,6,11,72,71,85,76,7,16,23,93,88,100,80,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,96,98,92,108,97,98,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"3\",1,0,0,1,1,64,64,0\n9,1079,\"I\",1900,0,1,1,45,30,13,1,\"b\",\"F\",110,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,80,80,8,9,1,2,39,7,26,110,92,24,7,10,87,89,103,95,6,15,27,103,105,100,91,2,6,1,192,198,390,5.84375,5.737374,11.58112,35,22,23,80,1,0,34,NA,NA,123,117,128,88,120,106,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.9,1,1,80,80,0\n10,1085,\"F\",2041,1,1,1,43,31,41,2,\"w\",\"F\",98,1,1,3,0,3,3,1,1,1,1,1,0,0,2,2,NA,3,79,NA,8,9,2,3,42,8,22,71,90,50,32,10,86,69,80,71,27,24,53,66,70,68,74,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,89,89,83,79,88,78,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,79,79,0\n11,1086,\"F\",1320,0,1,1,NA,NA,27,5,\"w\",\"F\",110,5,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,91,91,7,7,1,4,67,16,33,98,83,18,6,12,94,90,118,104,3,5,8,112,111,112,86,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,0,109,111,111,118,110,115,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,91,91,0\n12,1090,\"F\",2150,1,1,1,43,32,30,2,\"b\",\"F\",87,2,2,3,0,3,3,1,1,1,2,0,0,0,2,2,NA,3,56,56,7,9,2,3,75,15,42,95,75,56,22,22,75,86,93,88,19,23,46,97,93,103,76,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,87,100,99,98,93,98,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,56,56,0\n13,1091,\"F\",1620,0,1,1,44,28,22,2,\"b\",\"M\",109,2,2,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,73,73,4,7,1,2,16,3,9,83,96,26,8,15,80,91,118,104,3,6,8,101,99,104,92,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,114,103,118,125,109,122,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,1,1,73,73,0\n14,1094,\"I\",1550,0,1,1,40,29,25,5,\"b\",\"F\",74,2,2,1,1,1,1,1,1,1,1,0,0,0,2,2,NA,3,83,83,5,5,2,2,22,2,13,110,103,1,0,1,94,95,107,101,1,1,2,94,94,95,89,2,8,1,219,232,451,6.228311,7.62931,13.85762,38,18,16,72,1,0,32,1,0,115,117,106,106,115,106,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,4,\"b\",\"1\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",1,1,4.51,1,1,83,83,1\n15,1096,\"F\",1814,0,1,1,42,30,35,4,\"w\",\"M\",98,1,1,2,0,2,2,3,1,1,1,0,20,0,2,2,NA,3,106,106,8,8,2,2,43,6,30,95,90,21,5,15,94,95,97,96,12,28,46,106,110,102,104,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,109,120,99,95,114,96,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"3\",0,0,0,1,1,106,106,0\n16,1102,\"F\",1280,0,1,1,34,28,26,3,\"b\",\"M\",106,2,2,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,72,72,4,7,2,1,55,15,31,66,NA,21,9,11,51,67,91,76,12,22,35,81,83,82,78,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,64,69,89,78,64,80,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,72,72,0\n17,1103,\"F\",1210,0,1,1,37,26,18,3,\"b\",\"F\",100,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,70,70,2,6,1,2,48,9,26,83,75,20,8,7,81,79,88,81,2,4,7,95,95,96,78,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,75,88,94,84,80,87,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,70,70,0\n18,1105,\"F\",2296,1,1,1,NA,NA,25,2,\"w\",\"F\",99,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,95,95,9,9,2,1,41,9,12,100,102,23,14,6,94,109,122,116,15,11,30,108,105,111,103,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,108,106,103,106,107,104,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,95,95,0\n19,1107,\"I\",810,0,1,1,34,24,27,3,\"b\",\"M\",92,2,2,4,2,3,3,3,2,1,1,0,0,0,2,2,NA,3,84,84,2,5,1,1,56,13,33,55,NA,37,17,8,29,49,48,44,15,24,41,44,50,46,43,2,2,3,184,181,365,5.016304,4.729282,9.745586,45,19,16,80,1,0,26,1,1,47,61,28,34,51,20,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"2\",\"2\",\"1\",\"1\",\"3\",0,1,3.65,1,1,84,84,0\n20,1112,\"I\",2270,1,1,1,46,32,19,2,\"b\",\"F\",104,2,2,4,0,4,4,2,2,1,2,1,10,0,2,2,NA,3,61,61,9,9,2,4,38,9,17,81,81,20,6,10,39,80,82,79,5,4,12,80,83,80,65,2,1,1,175,138,313,5.462857,5.84058,11.30344,34,22,18,74,1,0,35,0,0,73,76,96,88,73,90,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.13,0,0,61,61,0\n21,1113,\"F\",1670,0,1,1,43,30,18,2,\"b\",\"M\",104,2,2,1,0,1,1,2,4,1,2,0,20,0,2,2,NA,3,59,59,2,4,2,4,61,14,34,62,72,44,17,25,47,57,54,52,4,15,20,44,48,47,38,2,2,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,52,48,28,55,46,32,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,59,59,0\n22,1114,\"F\",2030,1,1,1,42,31,18,2,\"b\",\"F\",131,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,66,NA,9,9,1,2,80,15,46,73,69,68,28,32,47,85,92,87,11,25,37,90,92,89,68,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,89,96,118,91,92,100,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,66,66,0\n23,1122,\"F\",2030,1,1,1,47,32,23,4,\"b\",\"F\",125,2,2,2,1,2,3,2,2,1,2,0,20,5,2,2,NA,1,NA,NA,8,9,1,4,99,20,56,73,58,74,27,37,43,57,73,61,15,41,58,73,72,78,66,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,1,35,0,1,75,73,52,78,72,59,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"1\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,75.4796183426166,84.8386789528106,0\n25,1128,\"F\",1840,0,1,1,NA,29,18,3,\"b\",\"F\",81,2,1,1,1,1,2,2,2,1,1,0,2,0,2,2,NA,1,83,NA,NA,NA,2,4,26,6,18,64,69,23,11,9,NA,NA,NA,NA,16,22,41,47,50,50,38,2,1,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6,1,32,0,0,39,41,23,47,35,22,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"1\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,83,83,0\n27,1133,\"I\",1550,0,1,1,41,28,19,3,\"b\",\"M\",121,2,2,1,0,1,1,2,2,1,1,0,6,7,2,2,NA,3,56,56,3,7,2,2,55,9,32,95,94,21,6,14,88,92,97,94,9,14,24,89,95,83,93,2,2,1,219,218,437,5.392694,5.348624,10.74132,26,18,21,65,1,0,36,1,1,94,91,96,95,92,94,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,4.37,1,1,56,56,1\n28,1137,\"I\",2330,1,1,1,45,32,26,1,\"w\",\"F\",89,1,3,2,0,2,2,3,4,1,2,0,20,0,2,2,NA,3,79,79,6,7,1,2,23,1,16,108,104,31,9,15,94,95,114,104,10,32,44,101,100,103,84,2,6,1,235,224,459,6.310638,6.513393,12.82403,36,25,20,81,1,0,31,1,1,98,99,97,94,99,94,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"4\",\"1\",\"2\",\"3\",1,1,4.59,1,1,79,79,1\n29,1138,\"F\",1310,0,1,1,38,28,28,4,\"b\",\"M\",102,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,78,78,8,8,2,1,22,1,11,105,96,27,5,17,97,95,108,101,13,29,44,112,110,112,101,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,123,120,94,106,120,98,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,78,78,0\n30,1139,\"F\",2350,1,1,1,42,33,23,3,\"b\",\"M\",93,2,2,4,1,2,5,1,1,1,1,1,0,0,2,2,NA,1,78,78,8,9,1,2,13,3,7,90,85,23,6,10,78,92,85,88,7,17,29,97,107,87,86,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,8,1,34,1,1,90,96,111,113,93,113,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,78,78,0\n32,1151,\"F\",1990,0,1,1,45,31,25,4,\"b\",\"F\",103,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,58,58,9,9,1,2,50,15,26,93,75,8,6,0,93,90,111,100,5,0,5,105,111,98,91,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,112,125,121,110,116,117,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,58,58,0\n33,1158,\"I\",2410,1,1,1,46,33,20,2,\"w\",\"M\",90,1,1,3,0,3,3,1,1,1,1,0,20,1,2,2,NA,3,74,74,8,9,2,2,NA,NA,NA,NA,NA,22,10,10,95,109,89,99,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,28,69,97,5.071429,5.26087,10.3323,10,3,10,23,1,0,37,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0.97,0,0,74,74,0\n34,1159,\"F\",1400,0,1,1,38,28,34,3,\"b\",\"M\",109,2,2,4,0,4,4,1,1,1,2,3,0,0,2,2,NA,3,65,65,6,8,2,2,37,11,21,66,63,22,7,13,39,62,84,70,9,23,36,62,59,71,50,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,0,72,73,90,78,71,81,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,65,65,0\n35,1161,\"F\",1950,0,1,1,42,30,29,3,\"b\",\"F\",101,2,2,3,1,3,3,2,4,1,1,0,0,0,2,2,NA,1,50,50,9,8,1,4,70,20,35,93,NA,50,25,23,85,74,105,88,18,34,54,95,89,104,91,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,1,34,1,1,91,117,94,97,100,94,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"1\",\"4\",\"1\",\"1\",\"2\",1,0,0,1,1,50,50,0\n37,1163,\"F\",1990,0,1,1,43,30,26,4,\"w\",\"F\",101,1,1,1,0,1,1,3,4,1,1,0,0,0,2,2,NA,3,85,85,7,9,2,2,37,6,18,110,104,54,23,17,93,85,104,93,4,10,14,88,89,90,91,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,112,111,96,122,112,108,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"4\",\"1\",\"1\",\"3\",1,0,0,1,1,85,85,0\n38,1166,\"I\",1776,0,1,1,42,28,23,3,\"w\",\"M\",83,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,80,80,7,6,1,4,23,2,14,110,107,16,10,8,105,95,100,97,4,5,9,99,106,91,114,2,7,1,0,0,0,0,0,0,36,15,16,67,1,0,34,1,1,103,117,97,106,109,100,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,80,80,0\n39,1170,\"F\",1750,0,1,1,42,33,28,4,\"w\",\"M\",58,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,110,110,5,8,2,2,42,7,25,115,106,23,14,8,113,92,107,99,18,13,34,95,100,90,103,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,90,94,105,122,92,114,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,110,110,0\n40,1171,\"I\",2140,1,1,1,47,34,28,3,\"b\",\"F\",119,2,2,3,1,3,4,1,1,1,2,0,8,0,2,2,NA,1,83,NA,8,9,1,2,34,8,23,78,79,19,11,4,45,59,85,68,7,19,33,89,80,102,55,2,5,1,167,163,330,4.610778,6.202454,10.81323,37,24,18,79,12,1,35,1,1,96,98,103,97,97,99,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"1\",\"1\",\"1\",\"2\",\"1\",1,1,3.3,1,1,83,83,0\n42,1175,\"I\",970,0,1,1,38,24,28,2,\"b\",\"M\",89,2,2,2,0,2,2,3,1,1,2,1,1,0,2,2,NA,3,NA,NA,5,9,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,29,3,0,32,2,0,30,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"3\",0,1,0,0,0,60.4490125419393,41.8186981103488,0\n43,1179,\"I\",1150,0,1,1,38,25,27,3,\"b\",\"F\",93,2,2,2,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,75,75,5,7,2,2,45,13,20,90,81,24,10,4,81,101,96,99,6,10,19,100,105,95,94,2,5,3,0,0,0,0,0,0,35,21,17,73,1,0,29,1,1,123,141,143,129,129,136,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,0,1,1,75,75,0\n44,1186,\"F\",2369,1,1,1,46,35,32,4,\"w\",\"M\",92,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,86,86,5,7,NA,2,38,4,24,115,114,19,9,7,84,102,104,104,9,11,22,125,122,125,75,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,104,104,105,122,105,114,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,86,86,0\n45,1196,\"F\",2250,1,1,1,45,30,15,2,\"b\",\"M\",113,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,69,69,8,9,1,2,37,7,24,81,96,19,2,9,75,70,85,75,13,33,48,89,88,93,57,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,96,98,95,89,96,90,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,69,69,0\n46,1199,\"F\",2210,1,1,1,46,31,33,3,\"w\",\"F\",85,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,3,87,87,6,9,2,2,95,28,42,93,85,61,35,17,88,94,108,101,22,35,60,87,90,87,83,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,14,1,34,1,1,105,114,108,97,109,101,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,87,87,0\n48,1202,\"F\",1770,0,1,1,45,31,29,3,\"b\",\"F\",128,2,2,4,0,4,3,2,2,1,2,0,10,0,2,2,NA,3,50,50,8,9,1,2,77,22,39,78,77,114,58,45,56,74,73,71,35,50,90,69,75,66,70,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,68,60,74,71,61,67,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,50,50,0\n49,1207,\"F\",730,0,1,1,33,22,22,4,\"w\",\"F\",98,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,89,89,1,8,1,2,36,7,20,88,89,27,16,8,85,84,108,95,2,12,15,92,87,99,89,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,104,120,115,95,112,103,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,89,89,0\n51,1209,\"F\",870,0,1,1,34,25,18,3,\"b\",\"F\",99,2,2,3,2,2,3,2,2,1,2,0,5,0,2,2,NA,1,43,43,8,7,2,1,119,39,60,81,75,141,70,45,45,67,72,66,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,15,1,28,0,0,NA,NA,NA,NA,NA,NA,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"2\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,43,43,0\n53,1212,\"F\",1510,0,1,1,42,28,26,4,\"w\",\"F\",100,1,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,92,92,6,7,2,1,33,9,16,115,104,24,8,10,90,105,118,112,13,13,30,108,105,111,93,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,17,1,30,1,1,99,114,135,117,105,125,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,92,92,0\n54,1214,\"F\",2360,1,1,1,45,33,20,3,\"b\",\"M\",103,2,2,2,0,2,2,1,1,1,2,1,0,0,2,2,NA,3,63,63,8,9,1,4,52,11,28,88,75,36,15,17,57,71,78,72,7,6,17,84,98,72,77,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,92,98,120,127,95,125,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,63,63,0\n55,1218,\"F\",2500,1,1,1,46,30,28,2,\"w\",\"F\",88,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,69,69,8,9,1,4,39,6,18,73,92,44,23,16,86,87,81,83,3,9,14,87,85,93,86,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,119,110,97,97,115,96,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,69,69,0\n56,1219,\"F\",1880,0,1,1,44,30,34,4,\"b\",\"F\",109,2,2,5,0,5,5,1,1,1,1,0,0,0,2,2,NA,3,80,80,1,6,2,4,19,6,4,78,72,10,2,2,80,80,82,79,12,6,20,99,99,100,98,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,99,111,132,127,105,131,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,80,80,0\n57,1221,\"F\",2220,1,1,1,44,32,23,3,\"w\",\"M\",87,1,1,2,0,2,2,1,1,1,2,1,0,0,2,2,NA,3,60,60,7,9,1,4,97,28,56,76,77,58,27,28,47,59,54,53,14,29,47,50,52,57,44,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,38,48,28,34,39,20,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,60,60,0\n58,1222,\"F\",2490,1,1,1,46,32,24,3,\"w\",\"F\",80,1,1,2,0,2,2,1,1,1,3,0,30,3,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,NA,NA,NA,NA,NA,NA,NA,NA,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,0,1,57.3231036568464,70.5351115650314,0\n59,1223,\"F\",2350,1,1,1,45,28,21,3,\"b\",\"F\",99,2,2,4,0,4,4,1,1,1,2,0,0,0,2,2,NA,3,74,74,7,9,2,2,37,11,22,81,83,34,17,11,82,79,89,82,4,8,15,95,99,93,77,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,93,110,131,111,99,121,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,74,74,0\n60,1224,\"I\",1370,0,1,1,41,28,24,4,\"b\",\"M\",116,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,62,62,7,8,2,2,21,7,7,68,81,13,7,2,69,69,69,65,15,18,38,48,55,49,30,1,6,2,213,190,403,6.338028,6.215789,12.55382,41,21,20,82,1,0,32,0,1,68,56,23,57,59,29,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,4.03,0,0,62,62,1\n61,1226,\"I\",910,0,1,1,34,25,22,3,\"w\",\"F\",84,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,85,85,3,5,2,4,41,4,23,113,104,23,7,9,66,92,107,99,2,25,33,87,88,89,74,2,6,1,226,226,452,9.300885,9.345133,18.64602,40,20,22,82,1,0,28,1,1,99,99,103,101,100,101,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.52,1,1,85,85,1\n62,1230,\"I\",2445,1,1,1,45,32,32,2,\"w\",\"M\",98,1,1,3,0,3,3,3,4,1,2,0,20,0,2,2,NA,3,86,86,9,9,1,2,63,10,37,90,101,52,17,32,82,85,95,88,16,31,49,86,91,83,83,2,3,1,213,63,276,5.408451,5.111111,10.51956,31,21,19,71,1,0,35,1,0,96,98,92,91,97,90,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"4\",\"1\",\"2\",\"3\",0,1,2.76,1,1,86,86,0\n63,1231,\"I\",1550,0,1,1,40,28,23,3,\"b\",\"M\",100,2,2,2,0,2,2,2,4,1,2,0,0,0,2,2,NA,3,79,79,2,6,1,2,35,6,23,83,83,17,10,7,72,75,80,75,15,22,36,69,74,69,50,2,6,1,170,213,383,6.370588,6.511737,12.88233,12,18,21,51,1,0,33,1,1,86,88,95,83,85,86,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"4\",\"1\",\"2\",\"2\",0,1,3.83,1,1,79,79,0\n64,1232,\"I\",2180,1,1,1,45,31,29,2,\"w\",\"F\",87,1,1,1,0,1,1,1,1,1,2,2,0,0,2,2,NA,3,84,84,8,8,2,1,83,19,44,105,108,55,24,23,NA,NA,NA,NA,11,30,44,113,112,112,125,2,3,1,204,209,413,6.294118,7.200957,13.49507,45,22,21,88,1,0,34,0,1,104,125,117,132,113,127,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,4.13,0,0,84,84,1\n65,1235,\"I\",2070,1,1,1,45,30,18,2,\"b\",\"F\",75,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,NA,NA,2,8,1,2,33,9,18,93,93,36,11,20,74,62,85,71,11,24,38,83,72,99,51,2,7,1,96,58,154,5.291667,4.465517,9.757184,51,11,8,70,1,0,30,0,1,90,97,89,72,93,77,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,1.54,0,0,85.6225106076894,53.7020405038648,0\n66,1236,\"I\",1786,0,1,1,43,31,25,5,\"w\",\"M\",42,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,102,102,7,8,2,1,24,3,16,115,107,14,4,6,88,85,110,96,3,13,14,88,83,96,94,2,9,1,219,211,430,8.242009,7.350711,15.59272,37,15,16,68,1,0,32,1,1,99,103,113,97,102,103,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.3,1,1,102,102,1\n67,1238,\"F\",2160,1,1,1,43,32,25,3,\"w\",\"F\",118,1,1,2,0,4,2,1,1,1,1,0,0,0,2,2,NA,3,103,103,9,9,1,2,38,8,24,83,85,30,15,8,72,70,85,75,11,23,34,77,81,78,120,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,119,106,103,81,113,90,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,103,103,0\n68,1242,\"F\",1928,0,1,1,43,30,34,4,\"w\",\"F\",89,1,1,2,0,2,1,1,1,1,1,1,0,0,2,2,NA,3,90,90,8,9,2,1,10,1,4,98,83,9,2,1,113,126,103,116,8,4,13,113,128,95,106,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,117,131,129,132,122,134,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,90,90,0\n70,1244,\"F\",1750,0,1,1,44,29,17,2,\"b\",\"F\",99,2,2,2,2,1,2,2,2,1,1,0,0,0,2,2,NA,1,46,46,7,9,2,1,47,9,26,62,69,55,22,21,63,71,72,68,15,42,61,69,65,78,38,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,19,1,35,0,0,84,93,90,76,88,80,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"2\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,46,46,0\n71,1245,\"F\",1590,0,1,1,43,29,19,2,\"w\",\"F\",83,1,1,3,0,3,3,1,1,1,2,0,20,0,2,2,NA,3,NA,NA,7,8,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,30,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,0,79.1169020984763,65.096923882476,0\n72,1251,\"I\",2350,1,1,1,48,32,18,1,\"w\",\"F\",113,1,1,1,0,1,1,2,1,1,1,0,20,0,2,2,NA,3,68,68,8,9,1,2,53,9,27,105,81,17,6,6,103,100,111,106,17,24,38,100,92,110,109,2,4,1,100,131,231,4.82,5.007634,9.827634,38,26,21,85,1,0,34,0,1,99,94,96,98,96,96,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,2.31,0,0,68,68,0\n73,1253,\"I\",2250,1,1,1,46,33,19,1,\"w\",\"M\",99,1,1,2,0,2,2,2,2,1,1,0,20,0,2,2,NA,3,NA,NA,8,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,0,1,0,33,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,0,1,1,87.240214759717,71.4949063850957,0\n74,1255,\"F\",1890,0,1,1,41,31,20,3,\"w\",\"F\",81,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,79,79,4,7,2,2,25,6,14,86,81,8,3,3,76,94,93,93,12,23,34,94,89,102,91,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,91,96,94,94,93,92,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,79,79,0\n75,1260,\"F\",2410,1,1,1,45,31,40,3,\"w\",\"M\",65,1,1,5,0,5,5,1,1,1,1,0,0,0,2,2,NA,3,102,102,7,9,2,2,53,12,28,48,NA,56,15,28,26,52,51,47,14,36,60,44,50,46,19,2,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,41,56,28,25,45,14,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,102,102,0\n76,1261,\"I\",2500,1,1,1,48,33,25,2,\"w\",\"F\",91,1,1,2,1,2,3,1,1,1,2,0,0,0,2,2,NA,3,72,72,8,9,2,2,28,8,11,120,90,3,2,0,90,97,104,101,2,2,8,106,106,106,89,2,5,1,215,213,428,5.683721,5.981221,11.66494,49,27,24,100,22,1,34,1,1,116,129,122,125,122,125,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"1\",\"1\",\"1\",\"2\",\"1\",1,1,4.28,1,1,72,72,1\n78,1264,\"F\",2353,1,1,1,45,31,28,4,\"b\",\"M\",99,2,2,2,0,2,2,3,4,1,1,0,10,0,2,2,NA,3,74,74,8,9,1,2,49,4,34,93,83,16,7,5,80,102,100,101,2,7,12,106,99,113,95,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,95,120,139,120,105,131,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,1,1,74,74,0\n79,1266,\"I\",2040,1,1,1,42,32,26,3,\"b\",\"M\",110,2,2,4,0,4,4,1,1,1,2,1,0,0,2,2,NA,3,NA,NA,8,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,16,0,0,16,2,0,34,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,0,1,1,77.7811928009164,88.6856712025829,0\n80,1268,\"F\",1960,0,1,1,43,31,24,3,\"b\",\"M\",109,2,2,2,0,2,1,1,1,1,1,0,0,0,2,2,NA,3,78,78,8,9,2,2,NA,NA,NA,91,97,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,78,78,0\n81,1279,\"I\",2180,1,1,1,46,31,23,2,\"b\",\"F\",106,2,2,3,0,3,3,3,1,1,2,0,0,0,2,2,NA,3,70,70,6,7,1,2,25,2,15,95,89,7,3,4,70,80,82,79,3,8,12,75,80,73,73,2,3,1,180,188,368,5.2,5.489362,10.68936,49,25,18,92,1,0,34,1,1,99,99,85,84,100,82,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"3\",1,1,3.68,1,1,70,70,0\n82,1281,\"F\",920,0,1,1,34,25,19,4,\"b\",\"M\",84,2,2,1,0,1,1,2,2,1,1,0,4,2,2,2,NA,3,NA,NA,1,4,1,2,21,1,14,78,69,30,16,13,82,90,92,90,8,20,27,78,78,83,83,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,88,89,89,84,88,83,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,79.7711334969515,64.0512057024522,0\n83,1285,\"F\",2300,1,1,1,43,33,22,4,\"w\",\"M\",110,1,1,1,0,1,1,2,3,1,1,0,4,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,NA,NA,NA,NA,NA,NA,NA,NA,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"3\",\"1\",\"1\",\"2\",0,0,0,1,1,74.6765964355027,79.8809677743597,0\n84,1299,\"I\",1985,0,1,1,44,29,24,4,\"w\",\"F\",108,1,1,1,0,1,1,1,1,1,1,0,15,0,2,2,NA,3,81,81,8,9,2,2,37,1,26,108,110,24,6,10,93,109,108,109,4,6,14,104,99,108,100,2,4,1,152,207,359,5.388158,6.009662,11.39782,37,20,14,71,1,0,35,1,1,121,122,125,119,120,124,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.59,1,1,81,81,0\n85,1302,\"I\",1516,0,1,1,43,29,26,4,\"b\",\"M\",98,2,2,1,1,1,2,1,1,1,1,0,0,0,2,2,NA,1,69,69,7,7,1,2,59,15,32,86,81,65,32,26,69,74,100,85,21,31,57,90,100,81,94,2,4,1,227,222,449,5.929515,6.328829,12.25834,47,22,18,87,24,1,30,0,1,117,119,111,110,116,111,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"1\",\"1\",\"1\",\"1\",\"1\",0,1,4.49,0,0,69,69,1\n87,1305,\"I\",1740,0,1,1,43,30,26,2,\"w\",\"F\",127,1,1,4,0,4,4,3,2,1,2,1,10,0,2,2,NA,3,NA,NA,3,8,1,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,0,1,0,33,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"3\",1,1,0,1,0,68.4388061886003,84.3955101722719,0\n88,1308,\"F\",1970,0,1,1,43,30,19,3,\"b\",\"F\",117,2,2,2,0,2,2,2,1,1,1,1,0,0,2,2,NA,3,63,63,6,8,1,2,54,12,29,90,79,55,23,17,86,82,89,84,15,36,55,87,89,89,70,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,94,102,97,105,97,100,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,63,63,0\n89,1311,\"I\",1650,0,1,1,42,30,20,3,\"b\",\"M\",92,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,62,62,0,1,1,1,14,0,6,86,90,28,12,12,74,87,89,87,17,8,30,77,87,71,53,2,9,1,196,124,320,7.142857,8.798387,15.94124,27,17,10,54,1,0,32,1,1,109,111,140,103,110,122,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.2,1,1,62,62,0\n90,1317,\"F\",2390,1,1,1,44,30,19,2,\"b\",\"F\",105,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,49,49,6,9,1,2,12,1,4,83,69,11,4,2,56,75,82,76,0,3,4,75,72,81,71,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,73,80,93,80,75,84,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,49,49,0\n91,1318,\"F\",1750,0,1,1,44,30,16,2,\"b\",\"F\",119,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,87,87,8,9,1,2,37,2,25,84,69,35,12,17,88,95,110,102,18,39,56,98,111,84,92,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,131,123,127,101,125,114,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,87,87,0\n92,1320,\"I\",1970,0,1,1,44,31,33,5,\"w\",\"M\",107,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,107,107,9,9,1,2,43,9,30,110,107,13,5,7,100,106,124,116,3,11,15,121,115,123,114,2,9,1,210,204,414,4.990476,7.563725,12.5542,38,17,16,71,1,0,32,1,1,128,129,136,134,128,138,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.14,1,1,107,107,1\n93,1326,\"F\",2070,1,1,1,45,31,21,3,\"b\",\"M\",93,2,2,3,0,3,3,2,1,1,1,1,0,0,2,2,NA,3,95,95,8,9,1,2,55,7,32,52,NA,22,11,10,19,56,82,65,9,18,27,NA,NA,91,NA,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,83,89,79,NA,85,NA,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,95,95,0\n94,1329,\"F\",1400,0,1,1,42,28,18,2,\"b\",\"F\",107,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,60,60,8,9,1,2,46,17,24,76,81,17,7,9,47,66,73,66,14,34,47,82,81,86,58,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,0,72,80,86,82,74,81,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,60,60,0\n95,1334,\"F\",1360,0,1,1,40,29,26,2,\"w\",\"F\",117,1,1,3,0,3,3,1,1,1,0,0,20,2,2,2,NA,3,85,85,7,9,2,4,82,18,44,73,77,64,28,30,67,70,67,65,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",1,0,0,1,1,85,85,0\n96,1335,\"F\",2155,1,1,1,45,32,28,4,\"w\",\"F\",110,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,96,96,8,9,2,4,45,11,23,98,90,29,16,11,86,105,111,109,4,7,13,95,97,94,102,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,101,113,129,110,105,121,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,96,96,0\n97,1338,\"I\",2300,1,1,1,46,32,20,2,\"b\",\"M\",116,2,2,1,0,1,1,2,2,1,2,0,10,2,2,2,NA,3,NA,NA,8,9,1,2,32,5,18,100,96,34,11,16,84,91,86,88,20,24,43,87,105,71,98,2,4,1,210,212,422,8.104762,6.849057,14.95382,34,22,17,73,1,0,37,0,1,111,103,94,94,107,92,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,4.22,0,0,80.2872769238783,88.7854262081329,1\n98,1339,\"F\",1190,0,1,1,38,27,26,3,\"w\",\"F\",118,1,1,5,0,4,4,3,1,1,1,2,20,0,2,2,NA,3,NA,NA,7,9,2,3,35,9,15,69,46,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"3\",1,0,0,1,1,64.3047097465667,83.5951333749995,0\n99,1343,\"I\",1530,0,1,1,42,30,25,3,\"h\",\"M\",106,3,1,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,80,80,8,8,2,2,51,13,24,120,103,35,20,11,104,92,96,93,30,29,66,93,92,96,94,2,5,1,189,210,399,5.322751,5.27619,10.59894,47,24,19,90,1,0,33,1,0,99,117,76,97,107,84,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,2,\"h\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,3.99,1,1,80,80,0\n100,1346,\"F\",1950,0,1,1,44,31,19,3,\"b\",\"M\",103,2,2,2,0,2,2,2,2,1,2,1,0,0,2,2,NA,3,83,83,8,9,2,2,33,6,20,88,72,49,29,16,78,80,95,86,10,10,24,87,90,87,79,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,94,114,99,113,101,107,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,83,83,0\n101,1348,\"F\",1240,0,1,1,39,27,22,2,\"w\",\"F\",100,1,1,3,0,2,2,1,1,1,2,2,20,0,2,2,NA,3,83,83,5,7,2,1,38,14,15,68,77,35,20,13,90,79,88,81,10,15,25,76,82,73,91,1,5,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,89,98,99,73,93,84,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,83,83,0\n102,1352,\"F\",1410,0,1,1,41,29,24,5,\"w\",\"M\",93,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,4,8,2,1,41,13,14,103,100,36,20,8,96,94,105,99,10,18,32,104,111,95,118,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,98,113,89,119,104,103,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,115,115,0\n103,1353,\"I\",2170,1,1,1,42,32,22,3,\"b\",\"F\",109,2,2,4,0,4,4,2,4,1,1,1,10,0,2,2,NA,3,73,73,8,9,2,2,48,11,29,113,89,40,16,18,86,94,105,99,18,39,60,92,93,93,86,2,3,1,156,91,247,5.410256,5.164835,10.57509,39,21,19,79,1,0,34,0,1,95,96,90,106,95,96,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,1,2.47,0,0,73,73,0\n104,1357,\"I\",1920,0,1,1,42,30,24,3,\"b\",\"F\",114,2,2,3,0,3,3,2,1,1,1,0,0,0,2,2,NA,3,96,96,8,7,1,2,25,3,14,122,94,28,11,14,87,104,104,104,5,17,22,95,100,91,89,2,7,1,204,210,414,6.465686,6.87619,13.34188,39,19,20,78,1,0,32,1,1,136,126,108,120,130,114,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,4.14,1,1,96,96,1\n105,1360,\"F\",2270,1,1,1,44,31,24,2,\"w\",\"F\",117,1,1,2,0,2,2,1,1,1,1,0,10,0,2,2,NA,3,NA,NA,8,9,1,2,65,12,36,100,97,67,30,33,93,97,103,100,10,36,54,94,99,90,100,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,101,113,117,119,105,120,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,72.9676342848601,56.1603286407294,0\n106,1361,\"F\",1840,0,1,1,44,30,24,3,\"w\",\"M\",72,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,92,92,4,8,2,2,30,5,13,108,89,12,5,5,100,100,111,106,5,7,13,103,98,108,95,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,101,109,111,136,105,125,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,92,92,0\n107,1362,\"I\",1670,0,1,1,42,30,23,4,\"w\",\"F\",113,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,7,8,1,2,50,9,27,113,109,29,17,10,105,109,100,105,8,12,24,110,121,98,120,2,6,1,0,0,0,0,0,0,39,19,18,76,1,0,34,0,1,145,138,108,120,140,114,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,115,115,0\n108,1365,\"I\",2400,1,1,1,46,30,25,2,\"w\",\"M\",63,1,1,3,0,3,3,2,2,1,1,0,40,0,2,2,NA,3,NA,NA,5,NA,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,0,1,0,31,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,0,1,0,68.4997573849882,83.7818490164856,0\n109,1367,\"I\",2230,1,1,1,45,33,23,3,\"w\",\"F\",100,1,1,2,1,2,3,1,1,1,1,0,10,0,2,2,NA,1,86,86,7,8,1,2,59,9,33,113,102,38,14,20,85,94,92,92,17,38,52,86,87,89,101,2,7,1,217,226,443,5.534562,7.522124,13.05669,35,20,17,72,28,1,33,1,1,93,93,103,101,92,101,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",1,1,4.43,1,1,86,86,1\n111,1372,\"I\",2140,1,1,1,45,34,19,2,\"b\",\"M\",102,2,2,4,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,82,82,5,6,1,4,45,11,27,78,69,61,20,33,57,75,70,70,17,32,56,56,59,62,60,2,4,1,166,176,342,4.939759,4.670455,9.610214,40,21,20,81,1,0,34,1,1,73,80,65,72,75,62,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.42,1,1,82,82,0\n112,1376,\"F\",1520,0,1,1,42,29,20,3,\"w\",\"M\",99,1,1,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,72,72,4,9,1,2,39,8,18,88,89,17,7,9,102,99,103,101,26,37,61,81,81,83,85,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,90,104,96,79,96,86,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,72,72,0\n113,1380,\"F\",1070,0,1,1,36,26,19,2,\"w\",\"F\",85,1,1,1,0,1,1,2,1,1,2,0,20,1,2,2,NA,3,80,80,2,6,2,1,44,6,23,88,93,24,10,6,NA,NA,NA,NA,3,6,10,95,112,79,112,1,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,99,110,118,117,105,117,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,1,1,80,80,0\n114,1386,\"I\",2025,1,1,1,48,32,19,2,\"b\",\"M\",106,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,66,66,3,7,1,2,36,13,13,83,87,8,1,5,66,79,64,69,2,7,11,77,88,71,86,2,5,1,132,104,236,5.151515,4.663462,9.814977,43,27,24,94,1,0,37,0,0,73,77,93,115,74,103,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,2.36,0,0,66,66,0\n115,1388,\"I\",1350,0,1,1,39,29,21,4,\"b\",\"F\",116,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,70,70,2,8,2,1,42,6,29,103,100,42,12,19,101,102,108,106,3,19,26,97,105,90,85,2,6,1,224,226,450,8.78125,8.862832,17.64408,43,19,15,77,1,0,34,1,0,121,119,107,100,118,104,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.5,1,1,70,70,1\n116,1391,\"I\",2200,1,1,1,46,34,27,5,\"w\",\"M\",108,4,1,1,1,1,2,1,1,1,1,0,0,0,2,2,NA,1,43,NA,2,7,2,2,36,9,18,110,94,45,19,17,100,99,119,109,28,38,72,116,114,115,89,2,5,1,168,219,387,5.196429,5.136986,10.33341,33,16,15,64,30,1,33,0,1,108,123,139,120,115,131,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",0,1,3.87,0,0,43,43,0\n118,1394,\"F\",1790,0,1,1,42,29,26,5,\"w\",\"M\",73,1,1,1,0,1,1,1,1,1,1,0,0,2,2,2,NA,3,113,113,6,8,2,1,21,5,13,108,102,22,11,5,101,115,103,110,14,9,28,97,95,100,87,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,119,117,90,111,117,98,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,113,113,0\n119,1395,\"F\",2220,1,1,1,44,33,29,3,\"b\",\"M\",67,2,2,6,0,5,5,3,4,1,2,1,25,0,2,2,NA,3,95,95,1,6,2,2,57,9,35,52,58,42,18,25,29,59,60,55,17,32,51,62,57,73,46,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,68,41,37,59,51,39,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"4\",\"1\",\"2\",\"3\",0,0,0,0,0,95,95,0\n120,1397,\"F\",890,0,1,1,36,24,22,4,\"w\",\"F\",89,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,104,104,5,7,2,2,49,10,19,127,115,34,20,6,120,122,114,120,31,25,62,100,107,93,110,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,1,109,119,101,100,113,101,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,104,104,0\n122,1400,\"F\",1420,0,1,1,42,35,18,2,\"w\",\"M\",86,1,1,3,2,2,3,2,1,1,1,0,20,0,2,2,NA,1,95,95,1,2,2,1,43,10,26,67,69,40,19,17,65,75,91,81,14,22,39,89,93,86,73,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,31,1,30,1,1,95,102,93,119,98,106,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"2\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,95,95,0\n123,1401,\"F\",1730,0,1,1,43,29,24,4,\"b\",\"M\",90,2,2,3,0,3,3,3,1,1,1,0,0,0,2,2,NA,3,99,99,7,7,2,2,46,10,30,103,98,45,19,18,105,105,103,104,10,21,32,103,112,93,118,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,124,119,121,105,120,114,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"3\",0,0,0,1,1,99,99,0\n124,1402,\"I\",1560,0,1,1,39,27,17,2,\"w\",\"M\",107,1,1,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,NA,NA,6,7,1,2,19,3,13,115,112,116,46,60,106,96,95,95,12,13,27,95,95,96,108,2,1,1,195,201,396,6.328205,6.054726,12.38293,26,20,18,64,1,0,33,1,0,105,110,76,84,107,76,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.96,1,1,77.3793077822059,50.1704200908063,0\n125,1410,\"F\",1730,0,1,1,43,28,20,2,\"b\",\"F\",122,2,2,1,0,1,1,2,2,1,2,0,20,0,2,2,NA,3,NA,NA,8,9,1,2,71,19,37,68,77,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,76.3304582967983,78.9992527937293,0\n126,1412,\"I\",1580,0,1,1,40,30,15,1,\"w\",\"M\",124,1,1,1,0,1,1,3,2,1,1,0,3,0,2,2,NA,3,NA,NA,8,9,1,2,48,5,29,115,98,41,18,24,92,106,112,110,16,27,47,104,106,100,109,2,7,1,200,225,425,7.155,7.373333,14.52833,21,16,16,53,1,0,34,0,1,101,109,93,100,105,96,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",0,1,4.25,0,0,90.1379793298874,71.6961468978391,1\n127,1414,\"I\",1956,0,1,1,43,31,22,4,\"b\",\"M\",99,2,2,2,0,2,2,2,2,1,3,1,0,0,2,2,NA,3,71,71,9,10,2,2,48,10,32,113,94,38,13,20,96,104,119,112,9,26,38,123,111,132,94,2,4,1,216,218,434,6.787037,8.454128,15.24117,36,14,17,67,1,0,32,1,1,93,110,135,117,99,125,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,4.34,1,1,71,71,1\n128,1417,\"F\",2325,1,1,1,45,32,19,3,\"w\",\"F\",98,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,82,82,9,9,1,2,38,3,22,103,103,44,24,13,106,106,127,118,12,12,28,114,121,106,99,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,109,122,134,132,115,135,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,82,82,0\n130,1420,\"F\",1580,0,1,1,39,29,23,3,\"w\",\"M\",87,1,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,93,93,8,9,1,2,24,4,15,95,111,25,8,12,93,114,108,112,6,11,17,106,107,104,98,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,33,1,30,1,1,95,99,89,105,96,96,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,2,\"w\",\"1\",\"2\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,93,93,0\n131,1421,\"F\",2296,1,1,1,45,32,35,5,\"w\",\"M\",72,1,1,1,0,1,1,1,1,1,1,0,3,0,2,2,NA,3,107,107,8,9,1,4,30,4,20,108,94,25,8,16,108,122,101,114,2,12,18,118,124,108,130,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,111,123,127,133,116,131,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,107,107,0\n132,1424,\"I\",2417,1,1,1,47,32,29,5,\"w\",\"F\",96,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,112,112,7,9,1,2,12,4,8,134,120,23,10,5,116,121,135,131,5,1,8,125,121,126,121,2,9,1,154,144,298,5.844156,5.458333,11.30249,36,16,12,64,1,0,34,0,1,119,138,139,137,126,136,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,4,\"w\",\"1\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.98,0,0,112,112,0\n133,1426,\"F\",1210,0,1,1,37,27,25,4,\"w\",\"M\",86,4,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,120,120,3,6,2,1,29,5,14,100,94,16,6,7,97,102,118,111,15,9,27,110,113,106,116,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,135,116,107,115,124,113,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,3,\"w\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,120,120,0\n135,1430,\"F\",1570,0,1,1,40,30,23,2,\"b\",\"M\",95,2,2,7,2,6,7,2,2,1,2,0,20,1,2,2,NA,1,NA,NA,7,8,2,1,47,5,38,76,NA,11,5,2,65,87,93,89,2,2,4,72,72,77,70,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,35,1,34,1,1,56,63,65,69,57,60,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"2\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,87.6723721089653,63.6590307973102,0\n136,1431,\"F\",2190,1,1,1,43,32,19,1,\"b\",\"M\",116,2,2,2,0,2,2,2,2,1,0,0,10,12,2,2,NA,3,47,47,8,9,1,2,85,27,39,73,53,30,11,16,65,72,86,77,9,25,38,68,72,68,42,2,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,69,63,89,84,64,83,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,0,0,0,0,47,47,0\n137,1432,\"F\",2001,1,1,1,42,32,37,5,\"b\",\"M\",105,2,2,1,1,1,2,3,3,1,1,0,0,0,2,2,NA,1,80,80,7,1,1,4,64,4,47,86,79,59,16,36,71,75,86,78,15,33,51,74,78,74,62,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,38,1,35,1,1,76,83,89,97,78,92,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,4,\"b\",\"1\",\"4\",\"1\",\"3\",\"1\",\"1\",\"3\",0,0,0,1,1,80,80,0\n139,1439,\"F\",2200,1,1,1,44,31,21,3,\"b\",\"M\",121,2,2,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,57,57,8,9,1,2,40,10,23,96,94,19,6,9,80,106,89,98,5,8,14,83,90,78,84,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,105,106,94,111,105,100,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,57,57,0\n140,1450,\"F\",2000,0,1,1,46,31,28,2,\"w\",\"F\",122,1,1,3,0,3,3,3,2,1,1,1,10,0,2,2,NA,3,51,51,5,7,1,1,64,17,33,66,92,77,46,19,86,82,88,84,10,15,26,86,94,80,89,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,108,110,97,84,109,89,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",1,0,0,1,1,51,51,0\n141,1456,\"F\",1990,0,1,1,45,30,17,2,\"w\",\"M\",127,1,2,1,0,1,1,2,2,1,1,0,40,0,2,2,NA,3,53,53,8,9,1,2,121,31,68,95,90,66,28,30,78,82,70,74,28,39,73,71,73,74,110,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,70,61,66,72,63,64,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,\"w\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,53,53,0\n142,1462,\"I\",1480,0,1,1,41,28,27,2,\"b\",\"F\",123,2,2,1,0,1,1,1,2,1,2,1,5,0,2,2,NA,3,61,61,7,9,1,2,75,20,40,90,92,22,13,5,83,102,82,92,15,21,41,76,81,74,85,2,2,1,174,178,352,5.632184,5.876404,11.50859,49,19,17,85,1,0,34,1,0,89,117,66,84,99,70,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"2\",\"1\",1,1,3.52,1,1,61,61,0\n143,1463,\"F\",2120,1,1,1,44,31,24,4,\"b\",\"M\",85,2,2,2,0,3,2,1,1,1,1,0,0,0,2,2,NA,3,75,75,6,6,2,4,37,7,17,105,97,53,22,27,93,87,97,91,14,12,30,90,85,96,91,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,96,117,94,91,105,90,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,3,\"b\",\"1\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,75,75,0\n144,1502,\"I\",1830,0,1,1,43,28,20,2,\"b\",\"F\",122,2,2,1,0,1,1,2,2,1,1,0,4,0,2,2,NA,3,NA,NA,5,6,2,2,40,9,22,57,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,81,43,124,4.765432,4.651163,9.416595,26,18,4,48,1,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,\"b\",\"1\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,1.24,0,0,85.1995709967432,52.0370732722499,0\n145,1524,\"F\",1950,0,1,1,43,31,20,3,\"b\",\"F\",135,2,2,1,0,1,1,2,1,1,1,0,7,1,2,2,NA,3,76,76,8,9,1,2,36,7,21,73,69,36,19,10,70,87,97,91,6,24,33,83,88,80,85,2,4,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,108,120,113,117,113,114,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,2,\"b\",\"1\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,76,76,0\n146,2025,\"I\",1170,0,1,2,37,25,23,3,\"b\",\"M\",109,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,60,60,7,9,1,2,47,12,25,68,58,38,12,19,45,79,80,77,21,34,60,65,71,65,63,2,3,1,201,186,387,5.920398,7.456989,13.37739,38,22,23,83,1,0,30,0,1,108,103,103,94,105,97,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.87,0,0,60,60,0\n147,2026,\"F\",1380,0,1,2,39,27,23,4,\"h\",\"M\",80,3,3,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,82,82,6,8,1,2,79,16,43,57,66,84,41,34,85,81,85,81,20,38,63,61,59,69,76,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,63,73,42,67,66,47,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,82,82,0\n148,2039,\"F\",1320,0,1,2,40,27,15,1,\"b\",\"M\",89,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,2,4,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,0,67.6051874388276,71.995989780097,0\n149,2041,\"I\",960,0,1,2,36,24,19,3,\"h\",\"F\",92,3,3,1,0,1,1,2,1,1,2,0,0,0,2,2,NA,3,87,87,5,7,1,2,62,17,32,83,33,34,18,13,77,77,110,92,4,12,16,91,89,95,76,2,7,1,196,204,400,5.760204,5.931373,11.69158,36,23,18,77,1,0,27,0,1,99,110,94,97,105,94,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,\"h\",\"2\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",1,1,4,0,0,87,87,0\n150,2042,\"F\",850,0,1,2,35,24,30,1,\"b\",\"M\",86,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,NA,NA,3,7,2,4,65,14,35,59,66,31,15,10,85,69,74,68,7,21,32,71,76,70,51,1,5,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,0,72,73,59,59,71,52,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,80.7451494184583,39.1200689340468,0\n151,2044,\"F\",1580,0,1,2,44,30,26,2,\"b\",\"M\",109,2,2,2,0,2,2,3,4,1,1,1,4,0,2,2,NA,3,72,72,3,8,2,3,40,8,22,64,69,49,17,22,77,84,88,84,32,49,80,75,75,79,71,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,83,69,90,87,74,86,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,0,0,72,72,0\n152,2045,\"F\",1860,0,1,2,43,29,27,4,\"b\",\"M\",98,2,3,4,0,4,4,1,1,1,2,0,0,0,2,2,NA,3,72,72,8,9,2,4,92,18,55,71,33,NA,NA,NA,NA,NA,NA,NA,14,44,62,87,88,90,86,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,86,88,83,85,85,81,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,72,72,0\n153,2046,\"F\",1800,0,1,2,42,30,18,2,\"b\",\"M\",110,2,2,1,0,1,1,2,4,1,1,0,3,0,1,2,NA,3,NA,NA,9,9,1,2,31,5,20,81,72,10,5,8,94,101,105,104,8,24,37,86,91,82,86,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,92,96,99,113,94,106,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,94.8492532115804,69.216444225028,0\n154,2047,\"F\",1550,0,1,2,41,30,30,1,\"b\",\"M\",66,2,2,3,0,3,3,3,1,1,1,2,0,0,2,2,NA,3,86,86,8,9,1,2,87,19,49,78,63,80,36,44,80,76,91,81,30,29,61,83,84,84,81,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,80,81,69,73,79,66,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"3\",0,0,0,0,0,86,86,0\n155,2048,\"I\",1880,0,1,2,44,31,33,3,\"w\",\"F\",112,5,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,75,75,7,8,2,4,25,4,12,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,39,0,39,3.974359,0,3.974359,46,7,0,53,1,0,31,0,0,NA,NA,NA,NA,NA,NA,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,0.39,0,0,75,75,0\n157,2050,\"I\",1915,0,1,2,41,31,29,2,\"w\",\"F\",96,5,5,2,2,1,2,2,1,1,3,0,0,0,2,2,NA,1,89,NA,5,9,1,1,22,4,15,103,101,37,22,10,98,92,110,101,9,20,29,89,92,87,84,2,8,1,163,175,338,4.04908,4.262857,8.311937,46,18,18,82,39,1,30,1,1,104,113,97,105,107,100,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"2\",\"1\",\"1\",\"3\",\"2\",1,1,3.38,1,1,89,89,0\n158,2056,\"I\",1815,0,1,2,41,29,21,4,\"b\",\"M\",109,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,70,70,9,9,1,4,76,17,40,71,63,34,20,16,69,86,92,88,13,11,24,81,87,78,76,2,7,1,186,157,343,9,9.178344,18.17834,32,21,20,73,1,0,32,1,1,85,84,99,88,83,92,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.43,1,1,70,70,0\n160,2058,\"F\",1910,0,1,2,44,32,34,4,\"h\",\"M\",104,3,3,3,2,2,3,1,1,1,1,0,0,0,2,2,NA,1,93,93,8,9,1,2,22,2,14,81,69,13,5,5,96,105,115,111,9,1,9,102,102,102,109,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,41,1,32,1,1,91,98,76,101,94,86,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,93,93,0\n161,2059,\"F\",1980,0,1,2,43,31,15,2,\"h\",\"F\",110,3,3,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,59,59,8,8,1,2,9,1,5,71,NA,16,6,5,70,79,100,88,2,4,7,84,88,83,77,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,99,99,85,91,100,86,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,59,59,0\n162,2065,\"F\",1560,0,1,2,34,30,29,3,\"h\",\"M\",108,3,3,2,1,8,3,1,1,1,1,0,10,0,2,2,NA,1,74,74,1,5,2,4,22,1,14,68,69,18,7,12,75,82,80,79,7,14,22,86,104,71,81,1,8,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,44,1,32,1,1,93,96,90,72,94,78,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,\"h\",\"2\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,74,74,0\n165,2068,\"F\",1210,0,1,2,40,27,39,2,\"h\",\"M\",92,3,2,3,2,2,3,3,1,2,1,0,0,0,2,2,NA,1,59,NA,1,7,2,NA,35,10,22,64,66,25,11,9,81,75,91,81,13,17,35,70,69,75,86,1,5,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,45,1,30,0,1,72,69,90,78,69,81,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"3\",0,0,0,0,0,59,59,0\n166,2070,\"F\",1470,0,1,2,41,28,33,2,\"h\",\"M\",116,3,3,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,68,68,8,9,2,4,58,10,29,71,66,35,12,21,76,80,103,90,13,21,38,93,84,106,91,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,94,94,105,91,93,97,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,68,68,0\n167,2071,\"F\",1735,0,1,2,38,30,29,2,\"b\",\"F\",115,2,2,3,0,3,3,1,1,1,1,1,10,2,2,2,NA,3,59,59,7,9,1,2,55,9,29,98,53,40,11,18,90,92,86,88,29,48,86,90,95,86,88,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,98,100,99,91,99,95,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,59,59,0\n168,2074,\"F\",2175,1,1,2,46,32,33,4,\"b\",\"F\",109,2,2,3,0,3,3,1,1,1,2,2,0,0,2,2,NA,3,110,110,5,8,1,2,13,3,6,86,77,10,4,3,94,105,100,103,6,6,10,105,110,99,109,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,0,98,116,111,100,105,106,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,110,110,0\n169,2078,\"F\",2200,1,1,2,45,31,23,3,\"b\",\"F\",111,2,2,2,0,2,1,1,2,1,1,0,0,0,2,2,NA,3,54,54,9,9,2,4,41,8,22,73,53,21,4,11,85,87,116,101,7,17,26,86,94,79,76,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,109,104,96,85,106,89,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"1\",1,0,0,1,1,54,54,0\n170,2079,\"I\",2280,1,1,2,43,31,27,4,\"h\",\"F\",105,3,3,4,0,4,4,2,4,1,2,2,20,0,2,2,NA,3,104,104,9,9,2,2,59,16,27,103,83,51,24,21,93,101,115,109,20,19,46,112,108,113,101,2,8,1,181,196,377,5.911602,8.413265,14.32487,40,22,19,81,1,0,34,0,1,128,117,97,129,122,114,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,3.77,0,0,104,104,0\n171,2080,\"I\",1790,0,1,2,41,29,36,2,\"h\",\"F\",109,3,3,5,0,5,4,3,4,1,1,0,0,0,2,2,NA,3,71,71,9,9,1,2,27,7,12,103,66,13,7,1,83,101,96,99,5,4,11,85,84,89,57,2,6,1,158,167,325,5.791139,5.988024,11.77916,39,21,16,76,1,0,31,0,0,107,114,99,91,110,94,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",1,1,3.25,0,0,71,71,0\n172,2082,\"F\",1790,0,1,2,41,28,24,2,\"h\",\"F\",102,3,3,2,0,2,2,2,1,1,1,0,10,0,2,2,NA,3,87,87,8,9,2,4,32,5,17,95,83,31,11,12,95,117,105,113,5,11,23,106,112,98,107,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,NA,126,118,106,NA,111,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,87,87,0\n173,2089,\"I\",850,0,1,2,33,24,34,2,\"h\",\"M\",104,3,3,3,0,3,3,1,1,1,1,1,0,0,2,2,NA,3,NA,NA,7,9,2,3,46,13,19,66,63,25,7,12,76,90,95,91,19,17,43,78,81,79,58,2,4,1,25,0,25,3.96,0,3.96,29,15,10,54,1,0,29,0,1,96,98,90,81,97,82,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0.25,0,0,55.4173618633142,95.0797923081828,0\n174,2090,\"I\",1980,0,1,2,44,31,25,2,\"b\",\"F\",123,2,2,1,0,2,1,2,1,1,1,0,5,0,2,2,NA,3,82,82,8,9,1,2,34,9,19,71,33,7,2,5,94,99,108,104,5,8,14,95,102,89,89,2,6,2,150,173,323,7.04,7.606936,14.64694,40,22,20,82,1,0,35,1,1,123,120,90,94,120,90,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,3.23,1,1,82,82,0\n175,2091,\"I\",2420,1,1,2,44,31,31,2,\"h\",\"M\",91,3,3,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,8,9,1,2,83,22,40,90,83,106,39,55,88,97,104,101,37,39,81,99,90,111,NA,2,2,1,183,192,375,6.431694,7.8125,14.24419,39,21,23,83,1,0,37,0,0,80,84,90,101,81,94,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.75,0,0,66.7541752293948,86.0968292348056,0\n176,2093,\"I\",2260,1,1,2,45,31,24,2,\"h\",\"F\",80,3,3,2,0,2,2,1,1,1,1,1,1,0,2,2,NA,3,64,64,9,9,1,1,81,23,38,81,90,38,21,11,69,76,92,82,11,21,31,87,83,95,78,2,4,1,192,178,370,7.864583,7.842697,15.70728,32,20,18,70,1,0,34,0,1,76,76,92,85,74,86,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.7,0,0,64,64,0\n177,2098,\"F\",2160,1,1,2,47,31,21,2,\"b\",\"F\",104,2,2,2,1,2,3,2,1,1,1,0,0,0,2,2,NA,1,89,89,8,9,1,2,63,15,30,73,75,31,16,9,76,82,81,80,12,22,34,81,89,77,72,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,48,1,34,1,1,83,88,94,87,84,88,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,89,89,0\n179,2102,\"F\",1700,0,1,2,44,29,19,2,\"b\",\"F\",86,2,2,1,0,1,1,2,2,1,1,0,2,0,2,2,NA,3,NA,NA,2,7,2,4,55,8,33,76,NA,78,37,29,88,92,86,88,19,24,44,87,95,81,NA,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,99,99,108,111,100,110,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,76.9847466765729,83.4959113586547,0\n180,2103,\"I\",2340,1,1,2,45,32,17,2,\"h\",\"F\",108,3,3,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,69,69,9,10,2,2,59,19,35,81,72,75,33,29,44,67,80,71,14,31,50,71,75,71,48,2,6,1,31,93,124,3.967742,5.537634,9.505376,27,20,15,62,1,0,34,0,0,98,96,94,81,96,85,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,1.24,0,0,69,69,0\n181,2105,\"F\",1270,0,1,2,40,26,29,3,\"b\",\"F\",105,2,2,2,0,2,2,2,4,1,1,0,7,0,2,2,NA,3,66,66,3,7,2,4,25,3,14,66,NA,23,11,6,77,86,101,93,5,3,10,94,97,93,45,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,114,110,108,111,112,110,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,0,0,66,66,0\n182,2107,\"I\",2100,1,1,2,47,30,33,4,\"b\",\"M\",115,2,2,2,0,2,2,2,4,1,1,1,5,0,2,2,NA,3,87,87,9,9,1,2,38,7,18,76,75,34,18,14,78,86,105,95,16,17,37,93,92,95,NA,2,10,1,126,181,307,5.031746,6.939227,11.97097,27,12,14,53,1,0,35,0,1,84,88,97,91,85,92,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.07,0,0,87,87,0\n183,2109,\"F\",1300,0,1,2,40,26,22,3,\"b\",\"F\",112,2,2,2,0,2,2,2,2,1,0,0,0,0,2,2,NA,3,72,72,9,6,1,2,45,11,23,62,53,31,12,9,76,81,93,86,13,16,30,81,81,83,70,2,8,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,99,NA,90,87,NA,86,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,1,1,72,72,0\n184,2112,\"F\",1950,0,1,2,45,31,18,3,\"w\",\"F\",105,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,83,83,8,9,1,2,42,9,24,68,58,24,10,10,85,95,92,93,3,11,13,84,88,82,83,1,8,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,67,66,76,91,64,80,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,83,83,0\n185,2113,\"F\",670,0,1,2,31,23,34,3,\"b\",\"M\",90,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,75,NA,3,5,1,2,23,4,15,50,58,17,5,7,54,81,77,77,1,12,14,64,73,60,63,2,8,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,NA,NA,113,104,77,68,108,66,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,75,75,0\n186,2116,\"F\",2360,1,1,2,49,32,34,5,\"w\",\"M\",92,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,123,123,9,9,1,2,18,3,9,118,114,8,3,1,109,111,108,111,1,0,2,112,117,104,112,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,1,1,119,123,103,125,120,114,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,4,\"w\",\"2\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,123,123,0\n187,2118,\"F\",1340,0,1,2,38,25,28,5,\"b\",\"M\",103,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,85,85,8,9,1,2,30,7,17,78,NA,35,14,17,90,95,100,97,1,7,10,90,94,86,91,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,109,114,96,103,112,98,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,4,\"b\",\"2\",\"4\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,85,85,0\n188,2119,\"F\",1100,0,1,2,38,27,39,2,\"h\",\"M\",88,3,3,3,0,3,3,1,1,1,1,0,10,0,2,2,NA,3,51,NA,1,3,1,2,62,20,27,46,NA,69,35,25,18,47,45,44,17,24,47,40,46,46,19,1,3,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,0,0,19,45,28,0,28,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,51,51,0\n189,2126,\"F\",1440,0,1,2,42,29,33,5,\"h\",\"M\",109,3,3,2,0,2,2,2,4,1,2,0,10,2,1,2,NA,3,100,100,7,9,2,2,97,21,53,90,89,87,42,39,90,102,107,105,42,45,94,105,105,104,108,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,93,96,115,114,94,114,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,4,\"h\",\"2\",\"4\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,100,100,0\n190,2127,\"I\",1800,0,1,2,42,30,16,2,\"b\",\"F\",101,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,80,80,9,9,1,2,74,16,39,71,79,NA,NA,NA,NA,NA,NA,NA,16,14,32,96,100,93,77,2,6,1,177,177,354,5.457627,5.694915,11.15254,34,11,14,59,1,0,35,1,1,120,103,91,103,112,96,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.54,1,1,80,80,0\n191,2129,\"F\",1000,0,1,2,37,24,30,1,\"b\",\"M\",63,2,2,9,0,10,7,2,4,1,2,9,40,0,2,2,NA,3,NA,NA,5,7,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,62.090712454957,55.3661217503842,0\n192,2134,\"F\",2240,1,1,2,44,29,20,3,\"b\",\"F\",108,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,75,75,7,8,1,2,46,7,24,66,58,32,12,10,75,92,81,86,7,13,25,81,92,73,NA,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,92,89,111,97,89,103,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,75,75,0\n193,2136,\"F\",1870,0,1,2,41,29,39,3,\"h\",\"F\",94,3,3,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,75,75,8,9,1,2,51,8,28,57,NA,49,23,19,43,71,99,83,17,19,40,90,93,87,81,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,122,93,97,NA,94,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,\"h\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,75,75,0\n194,2138,\"F\",1700,0,1,2,42,29,34,2,\"b\",\"F\",62,2,2,2,0,2,2,1,1,1,1,0,5,0,2,2,NA,3,67,67,8,8,1,2,30,4,16,68,63,8,3,2,63,96,88,91,5,4,13,82,87,80,74,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,125,117,103,101,120,101,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,67,67,0\n195,2142,\"I\",1220,0,1,2,41,26,23,2,\"b\",\"M\",81,2,2,2,0,1,2,1,2,1,1,0,0,0,2,2,NA,3,52,52,5,NA,1,2,38,12,11,88,53,32,15,13,72,87,93,89,11,15,35,84,89,81,54,2,5,2,160,191,351,9.1375,9.230366,18.36787,31,19,18,68,1,0,30,0,0,91,96,90,91,93,88,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"1\",0,1,3.51,0,0,52,52,0\n196,2143,\"F\",1140,0,1,2,37,25,25,2,\"h\",\"M\",78,3,2,2,0,1,2,2,1,1,1,0,5,0,2,2,NA,3,66,66,1,7,2,1,81,23,36,71,NA,36,15,19,80,74,89,79,25,25,54,79,76,86,96,2,6,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,72,73,52,65,71,51,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,66,66,0\n197,2146,\"F\",1720,0,1,2,44,29,24,4,\"w\",\"F\",100,5,5,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,77,77,3,8,1,2,35,5,19,78,72,15,6,7,108,101,97,99,6,8,16,107,117,96,116,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,138,125,125,86,130,103,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,3,\"w\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,77,77,0\n198,2147,\"F\",1310,0,1,2,37,25,33,4,\"b\",\"M\",110,2,2,3,0,3,2,1,1,1,1,2,10,0,2,2,NA,3,76,76,1,7,2,4,42,10,22,57,63,39,18,11,75,106,93,100,20,20,45,77,81,77,NA,2,11,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,87,92,88,83,88,82,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,76,76,0\n199,2148,\"F\",2090,1,1,2,44,31,18,2,\"h\",\"F\",99,3,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,9,10,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,61.5507923208836,81.4807984417679,0\n200,2150,\"I\",2200,1,1,2,48,30,17,2,\"h\",\"M\",119,3,3,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,84,84,8,9,1,2,72,17,37,90,69,72,37,31,66,84,107,94,12,23,37,90,80,103,72,2,2,1,15,198,213,3.733333,6.631313,10.36465,40,20,20,80,1,0,34,0,0,123,NA,97,87,NA,90,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,2.13,0,0,84,84,0\n201,2154,\"I\",1270,0,1,2,39,25,29,4,\"b\",\"F\",84,2,3,3,0,3,3,2,1,1,1,0,0,0,2,2,NA,3,81,81,1,7,2,4,37,5,29,64,69,5,4,0,48,69,67,65,9,9,26,68,79,60,NA,2,6,1,0,0,0,0,0,0,32,20,16,68,1,0,30,0,1,83,90,59,84,85,66,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,0,0,0,81,81,0\n202,2157,\"F\",1930,0,1,2,42,30,21,2,\"b\",\"F\",92,2,2,1,0,1,1,2,2,1,1,0,5,0,2,2,NA,3,66,66,7,8,1,2,41,5,30,86,90,33,13,11,63,104,95,99,9,12,26,81,87,78,81,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,103,110,97,106,106,100,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,66,66,0\n203,2159,\"I\",1825,0,1,2,45,29,25,2,\"h\",\"M\",116,3,3,2,0,2,2,3,4,1,1,0,10,0,1,2,NA,3,68,68,8,9,1,2,85,14,49,66,77,74,31,38,71,69,96,80,22,33,58,91,84,100,89,2,11,1,157,197,354,8.248408,8.690355,16.93876,36,22,19,77,1,0,34,0,0,57,66,85,81,59,80,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",0,1,3.54,0,0,68,68,0\n204,2161,\"I\",1090,0,1,2,36,26,32,5,\"b\",\"M\",81,2,2,5,0,5,5,1,2,1,1,3,0,1,2,2,NA,3,NA,NA,5,8,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,1,1,0,27,1,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,4,\"b\",\"2\",\"4\",\"0\",\"2\",\"1\",\"1\",\"1\",0,1,0,1,1,75.5660746175955,109.677616893647,0\n205,2162,\"F\",2240,1,1,2,47,29,21,2,\"b\",\"F\",111,2,2,1,0,1,1,2,2,1,2,0,4,0,2,2,NA,3,76,76,9,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,76,76,0\n206,2164,\"I\",1390,0,1,2,39,26,32,4,\"h\",\"M\",106,3,3,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,88,88,7,9,1,2,37,3,26,68,69,51,22,27,70,81,89,84,13,13,28,94,99,90,66,2,1,1,121,146,267,5.694215,8.938356,14.63257,33,16,7,56,1,0,30,1,1,103,106,113,117,105,114,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,2.67,1,1,88,88,0\n207,2165,\"I\",1540,0,1,2,43,29,19,3,\"b\",\"M\",106,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,80,80,8,9,1,2,63,11,34,78,72,43,19,19,65,80,82,79,23,19,52,86,90,83,76,2,5,1,109,133,242,6.211009,7.684211,13.89522,30,23,18,71,1,0,33,0,1,96,98,85,101,97,92,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,2.42,0,0,80,80,0\n208,2166,\"I\",2340,1,1,2,45,31,17,1,\"h\",\"M\",91,3,3,1,0,1,1,2,1,1,1,0,3,0,2,2,NA,3,73,73,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,3,0,3,6,0,6,23,10,0,33,1,0,34,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,0.03,1,1,73,73,0\n209,2170,\"F\",2340,1,1,2,44,32,23,4,\"h\",\"F\",97,3,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,75,75,7,9,1,2,61,18,31,48,46,21,9,9,36,87,91,88,13,14,31,99,105,94,102,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,114,110,97,94,112,94,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,75,75,0\n210,2171,\"F\",2050,1,1,2,44,30,17,2,\"b\",\"M\",130,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,55,55,7,9,1,2,56,9,29,68,46,44,23,15,82,89,104,96,22,21,43,86,90,84,73,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,103,93,94,106,98,98,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,55,55,0\n211,2174,\"F\",1840,0,1,2,48,30,18,2,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,76,76,8,9,1,2,32,10,17,71,77,19,10,7,91,84,74,77,7,8,19,68,82,58,70,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,NA,103,97,84,NA,89,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,76,76,0\n212,2177,\"F\",2340,1,1,2,43,31,29,4,\"h\",\"M\",86,3,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,80,80,8,10,1,2,51,10,27,95,83,16,6,8,102,112,114,114,9,11,23,107,117,96,112,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,105,114,97,125,109,111,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,80,80,0\n213,2182,\"I\",1720,0,1,2,44,28,23,3,\"b\",\"F\",116,2,2,2,1,2,3,2,4,1,1,0,20,0,2,2,NA,1,81,81,7,8,1,2,5,0,2,78,79,9,0,5,81,72,84,76,1,14,16,77,80,78,68,2,6,1,141,138,279,7.510638,7.826087,15.33673,37,24,18,79,50,1,34,0,1,90,105,97,84,96,88,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"1\",\"4\",\"1\",\"1\",\"2\",1,1,2.79,0,0,81,81,0\n215,2185,\"F\",2240,1,1,2,46,31,31,4,\"b\",\"F\",116,2,2,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,73,73,8,9,1,2,66,17,36,73,46,55,25,22,82,100,99,99,7,18,32,103,98,108,103,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,103,103,103,97,104,99,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,73,73,0\n216,2189,\"F\",2260,1,1,2,45,30,22,2,\"h\",\"F\",106,3,3,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,89,89,9,10,1,2,57,10,30,62,53,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,89,89,0\n217,2196,\"F\",2320,1,1,2,45,31,26,4,\"b\",\"M\",110,2,2,3,0,3,3,2,4,1,1,0,10,0,2,2,NA,3,78,78,10,10,1,2,42,6,27,73,72,32,13,18,70,76,111,92,17,19,37,90,93,87,99,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,94,92,97,124,92,111,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,78,78,0\n218,2204,\"I\",2150,1,1,2,43,30,27,4,\"h\",\"M\",95,3,3,1,0,1,1,2,4,1,2,0,0,0,2,2,NA,3,91,91,8,9,1,2,32,9,13,81,NA,73,40,27,67,72,78,73,62,44,115,87,90,87,70,1,2,2,178,208,386,5.747191,7.5625,13.30969,40,22,23,85,1,0,32,0,1,71,69,88,79,68,80,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"4\",\"1\",\"2\",\"2\",0,1,3.86,0,0,91,91,0\n219,2205,\"F\",2250,1,1,2,46,31,35,4,\"w\",\"M\",81,1,1,1,0,1,1,3,4,1,1,0,20,0,2,2,NA,3,110,110,7,9,1,2,NA,NA,NA,NA,NA,35,19,13,123,97,104,101,11,6,19,112,118,104,130,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,119,129,76,106,123,88,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,3,\"w\",\"2\",\"3\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,0,0,110,110,0\n221,2209,\"F\",1800,0,1,2,43,30,20,2,\"h\",\"M\",50,3,3,2,2,1,2,2,1,1,2,0,1,0,2,2,NA,1,NA,NA,9,9,1,2,54,17,28,71,58,24,15,5,67,69,85,74,9,22,39,64,59,73,77,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,53,1,37,1,1,73,69,69,73,69,66,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"2\",\"1\",\"1\",\"2\",\"2\",0,0,0,1,1,79.5229616557568,66.4198372930864,0\n222,2211,\"I\",1480,0,1,2,43,29,37,2,\"b\",\"M\",123,2,2,5,0,5,5,1,1,1,2,2,4,0,2,2,NA,3,62,62,8,9,1,2,98,23,45,66,89,53,24,24,74,75,80,75,20,12,34,78,87,74,89,2,8,1,116,152,268,5.793103,6.065789,11.85889,45,21,20,86,1,0,31,1,1,91,98,85,76,94,77,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,2.68,1,1,62,62,0\n223,2217,\"I\",1680,0,1,2,43,29,19,2,\"h\",\"F\",115,3,3,1,0,1,1,2,1,1,1,0,10,0,2,2,NA,3,52,52,9,9,1,2,65,15,26,95,77,34,19,7,82,87,91,88,20,8,32,102,100,104,89,2,7,1,81,105,186,5.82716,8.342857,14.17002,40,22,18,80,1,0,32,0,1,92,107,140,122,98,134,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,1.86,0,0,52,52,0\n224,2221,\"F\",1840,0,1,2,42,29,26,3,\"h\",\"M\",103,3,3,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,62,62,9,9,1,2,80,19,47,83,66,16,6,8,80,80,107,92,31,53,85,92,84,102,71,2,5,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,73,84,99,95,77,96,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,\"h\",\"2\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,62,62,0\n225,2222,\"I\",1500,0,1,2,41,27,24,2,\"h\",\"F\",113,3,3,2,1,3,3,2,4,1,2,0,5,0,2,2,NA,1,67,67,9,9,2,1,55,13,25,83,81,43,16,23,62,74,96,83,26,53,80,91,90,94,56,2,3,1,161,195,356,8.937888,9.189744,18.12763,30,21,20,71,56,1,32,0,1,90,96,99,91,93,94,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"1\",\"4\",\"1\",\"2\",\"2\",1,1,3.56,0,0,67,67,0\n227,2224,\"F\",2500,1,1,2,43,33,35,4,\"h\",\"F\",97,3,3,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,88,88,8,9,1,2,40,4,26,71,69,12,4,5,74,76,85,78,6,7,18,83,89,80,91,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,83,90,94,84,85,87,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,88,88,0\n228,2226,\"F\",1935,0,1,2,45,29,26,2,\"h\",\"F\",108,3,3,4,0,4,4,3,1,1,1,1,5,0,2,2,NA,3,75,75,6,8,1,2,30,9,18,86,85,28,16,7,84,86,97,91,13,8,23,95,90,102,80,2,4,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,88,84,97,117,85,106,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"3\",1,0,0,0,0,75,75,0\n229,2227,\"F\",1540,0,1,2,40,28,29,3,\"b\",\"M\",93,2,2,3,0,3,3,1,1,1,2,1,0,0,2,2,NA,3,69,69,8,9,2,2,14,3,8,68,66,9,3,5,77,85,77,79,3,7,14,83,84,84,98,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,78,91,96,98,84,96,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,69,69,0\n230,2228,\"F\",1920,0,1,2,41,30,22,2,\"h\",\"M\",96,3,3,2,0,3,2,2,4,1,2,0,7,0,2,2,NA,3,78,78,6,7,1,2,41,6,25,93,69,47,26,22,65,81,96,87,35,33,76,87,92,83,79,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,0,85,96,96,98,91,96,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,78,78,0\n231,2230,\"F\",2070,1,1,2,43,30,22,2,\"b\",\"F\",88,2,2,2,0,1,1,2,2,1,0,1,4,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,1,0,62.4737062844154,68.9773507452198,0\n232,2232,\"F\",1960,0,1,2,44,31,30,4,\"h\",\"F\",96,3,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,84,84,8,9,2,1,68,12,37,76,NA,33,15,13,82,97,118,108,5,9,20,106,105,107,89,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,125,133,122,117,127,120,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,84,84,0\n233,2233,\"F\",1950,0,1,2,43,30,39,4,\"b\",\"M\",97,2,2,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,68,68,9,10,1,2,75,18,38,90,85,63,26,32,102,114,103,109,15,22,46,101,105,96,104,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,NA,NA,123,NA,103,117,NA,110,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,0,1,68,68,0\n234,2236,\"I\",2080,1,1,2,47,30,20,2,\"h\",\"M\",127,3,3,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,54,54,9,10,1,2,57,20,27,52,NA,35,16,14,43,72,81,74,8,12,21,69,72,70,73,2,5,3,33,144,177,3.818182,4.340278,8.15846,40,21,19,80,1,0,34,0,0,52,48,52,72,46,56,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,1.77,0,0,54,54,0\n235,2238,\"F\",1210,0,1,2,38,27,24,2,\"b\",\"M\",66,2,2,4,0,4,4,2,4,1,1,0,6,0,2,2,NA,3,NA,NA,7,8,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,76.3311628708502,75.2295000151833,0\n236,2239,\"I\",1120,0,1,2,37,25,21,4,\"b\",\"M\",127,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,79,79,8,9,2,1,24,6,14,88,90,25,14,5,87,87,80,82,3,9,23,84,90,80,92,2,4,1,136,45,181,3.955882,5.622222,9.578105,28,19,13,60,1,0,32,1,1,91,82,115,81,86,94,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,1.81,1,1,79,79,0\n237,2241,\"F\",2180,1,1,2,46,32,23,3,\"b\",\"M\",93,2,2,2,0,2,2,2,1,1,2,0,0,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,NA,NA,NA,NA,NA,NA,NA,NA,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,0,0,88.3967469274421,53.9053301195681,0\n238,2242,\"I\",2340,1,1,2,48,32,32,2,\"b\",\"M\",79,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,72,72,6,8,1,2,45,10,21,95,72,42,17,22,78,86,101,93,11,15,26,77,71,87,74,2,3,1,152,174,326,8.835526,8.189655,17.02518,37,21,20,78,1,0,35,1,1,73,76,88,91,73,88,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.26,1,1,72,72,0\n239,2243,\"F\",1310,0,1,2,38,26,39,3,\"w\",\"M\",105,1,1,4,0,4,4,1,1,1,1,0,10,0,2,2,NA,3,61,61,7,8,2,1,87,25,37,67,69,56,29,22,71,99,82,90,8,3,15,81,93,72,86,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,NA,NA,105,95,99,91,99,95,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,61,61,0\n240,2244,\"F\",2500,1,1,2,47,32,26,2,\"b\",\"F\",97,2,2,1,0,1,1,2,4,1,1,0,0,0,2,2,NA,3,82,82,9,9,1,2,26,4,12,86,69,19,8,1,85,90,105,97,4,4,13,86,85,90,76,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,108,110,97,91,109,92,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,1,1,82,82,0\n241,2247,\"F\",1440,0,1,2,41,27,20,2,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,59,59,9,9,1,1,36,8,20,71,63,35,19,11,49,69,77,70,6,2,13,66,57,80,46,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,72,66,94,72,67,80,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,0,0,59,59,0\n242,2248,\"F\",1040,0,1,2,34,25,28,2,\"h\",\"F\",106,3,3,4,0,4,4,2,1,1,0,0,6,0,1,2,NA,3,NA,NA,2,5,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"0\",\"2\",1,0,0,0,0,80.8551154721599,79.1528454056142,0\n243,2249,\"F\",2170,1,1,2,47,31,16,2,\"h\",\"F\",121,3,3,3,0,2,2,2,2,1,1,1,0,0,2,2,NA,3,NA,NA,7,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,68.5739625118554,56.2079294971167,0\n244,2250,\"F\",2460,1,1,2,48,34,22,2,\"h\",\"M\",77,3,3,2,0,2,2,2,1,1,2,1,5,0,2,2,NA,3,NA,NA,3,7,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,0,0,96.0608193557877,46.8088857745598,0\n245,2254,\"F\",2300,1,1,2,44,30,19,2,\"h\",\"M\",97,3,3,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,70,70,9,9,1,2,65,11,38,71,66,33,12,21,80,80,77,76,13,13,31,86,83,91,56,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,91,NA,90,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,70,70,0\n246,2255,\"I\",2150,1,1,2,46,32,20,3,\"b\",\"M\",105,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,98,98,8,8,1,2,35,8,23,78,81,22,10,8,81,95,96,95,9,11,25,92,97,89,94,2,9,1,145,172,317,4.006897,4.459302,8.466199,34,23,20,77,1,0,37,0,1,109,111,105,95,110,99,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.17,0,0,98,98,0\n247,2256,\"I\",1740,0,1,2,42,30,23,2,\"b\",\"F\",109,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,80,80,5,6,1,2,29,8,12,88,90,23,9,10,82,87,86,86,5,10,20,84,94,75,78,2,7,1,180,203,383,9.161111,9.147783,18.30889,34,19,21,74,1,0,30,1,1,95,93,113,94,94,100,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.83,1,1,80,80,0\n249,2258,\"F\",1450,0,1,2,38,28,18,2,\"b\",\"M\",109,2,3,2,2,1,2,2,2,1,2,0,0,0,2,2,NA,1,NA,NA,2,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,57,1,30,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"2\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,71.3156292269232,74.5782368879793,0\n250,2261,\"I\",2130,1,1,2,47,31,37,2,\"w\",\"F\",116,1,1,4,0,4,4,1,1,1,1,1,0,0,2,2,NA,3,NA,NA,8,9,2,2,48,12,22,95,75,9,9,0,76,99,92,95,8,7,14,113,117,107,101,2,4,1,2,0,2,2.5,0,2.5,40,21,22,83,1,0,35,0,0,124,122,101,105,122,104,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0.02,0,0,63.752351649423,100.889109186869,0\n251,2264,\"I\",2250,1,1,2,47,32,28,3,\"w\",\"F\",115,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,120,120,9,9,1,2,12,1,7,137,115,5,2,0,131,129,101,117,0,4,4,117,128,102,112,2,9,1,63,104,167,3.206349,2.692308,5.898657,36,21,18,75,1,0,35,1,1,140,129,97,125,133,111,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,1.67,1,1,120,120,0\n252,2265,\"I\",1830,0,1,2,43,29,31,5,\"w\",\"F\",94,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,140,140,7,9,1,2,23,7,10,142,115,38,20,17,129,125,108,119,23,35,58,126,129,117,118,2,9,3,72,122,194,3.958333,4.434426,8.39276,40,17,19,76,1,0,34,1,0,101,120,120,138,110,131,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,4,\"w\",\"2\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,1.94,1,1,140,140,0\n253,2269,\"F\",2000,0,1,2,43,31,18,2,\"w\",\"F\",133,5,3,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,55,55,9,10,1,2,55,8,30,78,63,52,22,22,66,75,119,96,11,17,34,96,83,112,50,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,94,100,96,98,97,96,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,55,55,0\n254,2270,\"F\",1970,0,1,2,44,29,16,2,\"w\",\"F\",37,1,3,2,0,2,2,2,2,1,3,0,0,0,2,2,NA,3,66,66,7,8,1,2,34,7,23,50,NA,39,16,15,NA,NA,96,NA,6,33,43,NA,NA,74,NA,1,7,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,0,NA,NA,89,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,0,0,66,66,0\n255,2273,\"F\",1480,0,1,2,43,30,18,2,\"b\",\"F\",118,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,70,70,8,9,1,2,56,13,32,90,75,6,3,0,56,81,99,88,1,8,14,90,92,90,84,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,0,100,110,94,91,109,90,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,70,70,0\n256,2276,\"F\",2000,0,1,2,47,32,20,3,\"w\",\"F\",108,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,70,70,6,9,1,2,35,6,22,95,98,50,24,21,98,105,101,104,12,15,30,99,104,95,99,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,126,117,105,122,121,114,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,70,70,0\n257,2278,\"F\",1650,0,1,2,42,29,30,4,\"b\",\"F\",115,2,2,2,0,3,2,2,1,1,1,0,0,0,2,2,NA,3,NA,NA,7,9,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,85.2131090907678,65.7701946567252,0\n258,2280,\"F\",2235,1,1,2,45,31,21,2,\"w\",\"F\",96,1,1,1,0,1,1,2,2,1,2,0,20,3,2,2,NA,3,57,57,8,9,1,2,46,13,18,83,83,11,4,4,101,105,112,109,4,4,13,99,104,94,107,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,115,126,111,108,119,110,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,57,57,0\n259,2283,\"I\",2110,1,1,2,46,30,21,4,\"w\",\"F\",105,1,1,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,124,124,6,8,1,2,26,3,12,125,83,7,3,0,125,150,123,141,2,1,4,136,134,132,118,2,8,1,66,52,118,4.727273,5.730769,10.45804,32,13,18,63,1,0,35,0,1,124,145,125,147,131,139,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,3,\"w\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,1.18,0,0,124,124,0\n260,2284,\"F\",1380,0,1,2,40,27,17,2,\"b\",\"F\",79,2,2,2,0,2,2,2,2,1,2,1,0,0,2,2,NA,3,NA,NA,8,8,1,2,48,19,24,71,53,33,18,6,77,96,97,96,10,23,39,92,98,87,55,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,NA,NA,87,86,111,108,86,110,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,0,67.9501229165927,87.4760459247016,0\n262,2286,\"I\",1750,0,1,2,41,30,27,4,\"b\",\"F\",74,2,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,NA,NA,3,5,2,2,NA,NA,NA,68,89,6,2,1,NA,NA,NA,NA,0,3,5,83,80,89,83,1,11,2,136,181,317,8.301471,8.850829,17.1523,32,5,0,37,59,1,30,0,1,95,98,97,106,96,100,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",1,1,3.17,0,0,78.6777345516406,81.5682775223004,0\n263,2287,\"F\",2140,1,1,2,43,31,27,4,\"h\",\"F\",85,3,2,4,0,4,4,1,1,1,2,0,0,0,2,2,NA,3,75,75,7,8,2,1,74,13,48,73,69,68,32,28,75,87,101,93,10,34,43,95,92,100,73,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,101,107,96,88,104,90,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,75,75,0\n264,2288,\"F\",1990,0,1,2,41,30,27,4,\"b\",\"F\",111,2,2,2,0,2,2,2,2,1,1,1,30,0,2,2,NA,3,98,98,8,9,2,4,38,3,25,88,72,6,5,0,86,95,97,96,3,11,16,104,111,96,107,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,104,117,105,98,110,101,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,98,98,0\n265,2292,\"F\",1810,0,1,2,42,30,32,4,\"h\",\"M\",107,3,3,3,0,3,3,3,4,1,1,0,17,0,2,2,NA,3,103,103,9,9,1,2,28,5,16,73,72,30,13,14,47,71,103,85,13,26,43,96,90,104,81,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,126,123,99,88,125,92,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,1,1,103,103,0\n266,2294,\"F\",1890,0,1,2,46,31,22,4,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,1,1,0,0,2,2,NA,3,75,75,8,9,1,2,25,3,14,86,77,7,1,5,81,97,114,106,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,75,75,0\n268,2297,\"I\",1870,0,1,2,47,32,17,2,\"w\",\"M\",103,5,2,2,2,1,2,2,2,1,1,0,0,0,2,2,NA,1,52,52,8,9,2,1,70,10,46,68,66,29,9,18,75,76,82,77,6,12,25,92,94,91,72,2,4,1,78,61,139,5.884615,5.852459,11.73707,30,25,23,78,61,1,34,0,0,87,81,105,91,83,97,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,\"w\",\"2\",\"1\",\"2\",\"2\",\"1\",\"1\",\"2\",0,1,1.39,0,0,52,52,0\n270,2303,\"F\",2000,0,1,2,42,32,21,2,\"h\",\"M\",97,3,3,3,2,2,3,2,1,2,1,0,0,0,2,2,NA,1,66,66,7,8,1,2,20,5,11,68,81,12,5,4,90,94,104,99,3,1,7,112,112,110,100,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,63,1,32,1,1,105,110,146,117,107,131,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",0,0,0,1,1,66,66,0\n271,2306,\"F\",1620,0,1,2,41,29,24,2,\"h\",\"M\",102,3,3,4,0,4,4,2,1,1,2,3,1,0,2,2,NA,3,43,43,1,3,2,1,66,17,41,52,NA,62,24,33,18,59,NA,NA,10,32,41,52,62,49,48,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,NA,NA,53,45,28,NA,46,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,1,0,43,43,0\n272,2307,\"F\",2320,1,1,2,45,31,42,1,\"h\",\"M\",78,3,3,3,0,3,3,3,4,1,1,0,0,0,2,2,NA,3,NA,NA,9,9,1,2,45,13,21,50,69,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,0,0,68.3556007735386,94.3672662127299,0\n273,2308,\"I\",1700,0,1,2,43,31,22,2,\"b\",\"M\",115,2,2,2,1,2,3,2,1,1,1,0,0,0,2,2,NA,1,62,62,7,9,1,2,68,17,33,86,77,57,24,37,77,74,88,78,5,19,27,71,75,71,89,2,10,1,110,196,306,8.590909,9.163265,17.75417,38,21,22,81,66,1,32,1,1,75,66,94,84,68,87,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",\"2\",0,1,3.06,1,1,62,62,0\n275,2316,\"F\",1860,0,1,2,42,30,22,3,\"h\",\"F\",79,3,3,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,89,89,8,9,1,2,44,10,22,59,46,50,32,14,75,89,96,91,7,11,21,81,94,70,80,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,123,104,111,98,114,104,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,2,\"h\",\"2\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,89,89,0\n276,2326,\"F\",1370,0,1,2,39,29,32,5,\"h\",\"M\",110,3,2,4,0,4,4,1,1,1,1,3,0,0,2,2,NA,3,103,103,4,9,2,4,33,7,18,46,NA,NA,NA,NA,NA,NA,NA,NA,2,13,21,83,69,103,38,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,91,90,85,87,90,84,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,4,\"h\",\"2\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,103,103,0\n277,2329,\"F\",1260,0,1,2,37,26,23,3,\"b\",\"F\",98,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,72,72,9,9,1,2,59,17,31,73,53,20,8,9,77,97,93,95,8,20,28,83,87,82,61,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,84,89,99,95,86,96,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,2,\"b\",\"2\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,72,72,0\n278,2339,\"I\",1230,0,1,2,39,27,26,5,\"w\",\"F\",114,1,1,1,0,1,1,1,1,1,1,0,4,0,2,2,NA,3,100,100,7,8,2,4,61,12,25,93,NA,2,1,0,96,99,101,100,15,11,24,87,93,83,107,2,9,1,0,49,49,0,5.714286,5.714286,39,21,16,76,1,0,30,1,1,107,114,96,113,110,103,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,4,\"w\",\"2\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0.49,1,1,100,100,0\n279,2340,\"F\",2180,1,1,2,42,31,28,5,\"w\",\"M\",106,1,1,1,0,1,1,1,1,1,1,0,3,0,2,2,NA,3,108,108,9,9,2,4,32,1,22,113,87,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,4,\"w\",\"2\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,108,108,0\n280,2344,\"F\",2430,1,1,2,51,32,22,4,\"b\",\"M\",94,2,3,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,100,100,8,10,1,2,27,4,14,68,77,38,23,13,86,80,97,87,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,100,100,0\n281,2353,\"I\",2500,1,1,2,47,31,30,3,\"w\",\"M\",74,1,1,1,0,1,1,2,1,1,1,0,0,2,2,2,NA,3,108,108,7,9,1,2,6,1,2,100,102,22,11,7,92,112,124,120,2,5,6,118,122,111,100,2,9,2,180,184,364,9.033333,9.163043,18.19638,27,16,17,60,1,0,36,1,1,131,120,140,150,125,148,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,2,\"w\",\"2\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,3.64,1,1,108,108,0\n282,2355,\"F\",2450,1,1,2,46,33,31,5,\"w\",\"F\",100,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,3,101,101,8,8,1,2,28,4,18,120,109,11,3,5,110,119,120,122,2,0,2,117,126,104,118,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,68,1,37,1,1,128,140,136,127,134,134,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,4,\"w\",\"2\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,101,101,0\n284,2357,\"F\",2000,0,1,2,45,32,22,2,\"h\",\"M\",85,3,3,2,0,2,2,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,95,63,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,84.7805576111528,72.6215622632767,0\n285,2358,\"I\",1840,0,1,2,43,30,16,2,\"h\",\"F\",100,3,3,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,74,74,2,6,1,2,67,18,38,76,79,69,36,28,39,62,58,57,29,62,103,40,46,46,19,2,4,1,156,151,307,4.00641,5.721854,9.728265,38,22,18,78,1,0,32,0,0,20,48,28,0,29,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.07,0,0,74,74,0\n286,2360,\"F\",1700,0,1,2,43,29,25,2,\"b\",\"F\",92,2,2,2,0,2,2,2,2,1,2,1,20,7,2,2,NA,3,67,67,0,7,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,67,67,0\n287,2364,\"F\",2430,1,1,2,46,33,19,2,\"h\",\"M\",70,3,3,2,0,3,2,2,2,2,2,0,0,0,2,2,NA,3,60,60,4,7,2,2,42,8,28,71,81,53,20,26,72,91,101,96,21,37,58,90,89,93,78,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,109,104,105,95,106,99,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"2\",\"2\",\"2\",0,0,0,0,0,60,60,0\n288,2367,\"I\",1720,0,1,2,45,30,17,2,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,54,54,6,8,1,2,62,14,35,71,66,15,8,4,52,80,80,78,12,25,39,77,79,80,48,2,7,1,128,119,247,5.78125,5.915966,11.69722,32,15,20,67,1,0,34,0,1,73,69,74,77,69,70,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,2.47,0,0,54,54,0\n289,2375,\"I\",1040,0,1,2,40,27,21,2,\"b\",\"M\",120,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,89,89,7,8,1,2,55,18,25,88,79,21,12,6,82,112,105,110,13,13,31,88,95,82,96,2,3,1,128,138,266,7.242188,7.782609,15.0248,40,20,18,78,1,0,29,1,1,116,110,97,91,113,92,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,2.66,1,1,89,89,0\n290,2376,\"I\",2000,0,1,2,46,31,19,4,\"h\",\"M\",94,3,3,1,0,1,1,2,3,1,1,0,0,0,2,2,NA,3,81,81,8,9,1,2,28,5,19,93,81,29,5,21,80,85,97,90,7,5,13,71,73,74,94,2,1,1,162,173,335,8.790123,8.213873,17.004,39,15,16,70,1,0,34,0,1,95,89,97,80,92,86,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"3\",\"1\",\"1\",\"2\",0,1,3.35,0,0,81,81,0\n291,2377,\"F\",2080,1,1,2,48,31,33,5,\"b\",\"F\",105,2,2,4,0,3,4,3,4,1,1,0,4,0,2,2,NA,3,51,51,3,7,1,2,77,15,39,68,53,39,15,20,78,85,101,92,3,27,33,84,78,95,79,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,96,98,85,97,97,90,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,4,\"b\",\"2\",\"4\",\"0\",\"4\",\"1\",\"1\",\"3\",1,0,0,0,0,51,51,0\n292,2378,\"F\",2380,1,1,2,46,33,29,2,\"h\",\"M\",85,3,3,4,0,4,4,1,1,1,1,0,0,0,2,2,NA,3,54,54,8,8,1,2,40,9,20,64,69,16,8,6,83,109,97,104,11,15,31,96,100,93,102,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,96,103,97,120,99,108,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,54,54,0\n293,2381,\"I\",1760,0,1,2,43,30,22,2,\"h\",\"F\",113,3,3,1,0,1,1,1,1,1,1,0,5,0,2,2,NA,3,55,55,8,9,2,2,71,20,37,76,79,62,26,27,47,75,86,78,28,32,63,70,71,73,55,2,6,1,0,0,0,0,0,0,35,16,14,65,1,0,36,0,1,78,76,92,73,75,80,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,55,55,0\n294,2383,\"F\",2130,1,1,2,45,32,17,2,\"h\",\"F\",124,3,3,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,97,97,8,9,1,4,48,7,27,86,58,30,15,11,86,90,105,97,14,19,34,103,107,98,95,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,111,103,94,97,107,94,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,\"h\",\"2\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,97,97,0\n295,2384,\"F\",2400,1,1,2,46,34,22,4,\"b\",\"M\",87,2,2,1,0,1,1,2,2,1,0,0,0,0,2,2,NA,3,75,75,8,9,1,4,44,10,22,100,83,25,12,10,84,106,120,114,11,13,26,112,119,102,100,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,117,137,124,131,126,129,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,3,\"b\",\"2\",\"3\",\"0\",\"2\",\"1\",\"0\",\"2\",0,0,0,1,1,75,75,0\n296,2391,\"F\",1840,0,1,2,45,30,26,2,\"b\",\"M\",120,2,3,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,63,63,8,9,1,2,96,26,50,43,NA,80,38,32,19,47,45,44,3,20,30,40,46,46,19,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,21,53,33,0,33,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,\"b\",\"2\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,63,63,0\n297,2392,\"F\",1980,0,1,2,46,30,21,4,\"h\",\"F\",112,3,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,93,93,8,9,1,4,36,5,20,78,75,21,9,6,83,77,108,91,8,10,17,100,98,103,76,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,115,98,124,103,106,114,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,3,\"h\",\"2\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,93,93,0\n298,3017,\"I\",920,0,1,3,NA,25,23,3,\"b\",\"M\",97,2,1,1,0,1,1,2,2,1,1,0,0,2,2,2,NA,3,68,68,1,3,2,1,33,8,11,100,98,31,13,11,85,90,86,87,21,21,44,92,95,90,81,2,1,1,173,168,341,6.890173,6.636905,13.52708,27,23,24,74,1,0,29,1,1,104,116,97,84,109,88,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.41,1,1,68,68,0\n299,3039,\"I\",1620,0,1,3,40,28,28,3,\"w\",\"F\",95,1,1,1,0,1,1,1,1,1,1,0,0,1,1,2,NA,3,68,68,9,9,1,2,29,3,16,98,93,25,9,12,81,86,86,85,6,16,25,75,71,83,56,2,9,1,152,165,317,6,6.557576,12.55758,39,19,22,80,1,0,34,1,1,95,90,90,67,92,74,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.17,1,1,68,68,0\n300,3077,\"F\",1620,0,1,3,42,28,17,2,\"b\",\"F\",104,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,55,55,8,9,1,2,82,18,35,61,NA,49,29,14,42,62,67,61,15,17,36,56,52,68,43,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,73,73,79,68,71,68,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,55,55,0\n301,3084,\"F\",1850,0,1,3,42,30,21,4,\"w\",\"M\",76,1,1,2,0,2,2,1,1,1,2,1,10,1,2,2,NA,3,84,84,7,8,2,1,54,19,31,90,NA,63,34,30,86,77,114,94,23,28,57,97,84,112,53,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,94,100,74,95,97,81,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,84,84,0\n302,3087,\"I\",960,0,1,3,36,24,22,3,\"w\",\"F\",106,1,1,1,0,1,1,1,1,1,1,0,5,0,2,2,NA,3,73,73,8,8,1,2,77,17,38,48,NA,56,31,18,18,47,45,44,15,39,56,40,46,46,19,1,7,2,162,176,338,8.012346,7.642045,15.65439,32,21,18,71,1,0,29,1,1,18,41,23,0,23,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.38,1,1,73,73,0\n303,3091,\"F\",1550,0,1,3,41,29,23,4,\"w\",\"M\",102,1,1,1,1,1,2,2,2,1,1,0,6,0,2,2,NA,1,NA,NA,4,8,2,2,13,1,4,108,98,26,11,15,NA,NA,NA,NA,9,8,17,110,105,115,93,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,70,1,34,1,1,72,72,106,104,69,104,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"1\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,78.7402603065174,91.6034318056719,0\n305,3100,\"F\",1800,0,1,3,46,29,34,5,\"w\",\"F\",107,1,1,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,133,133,8,8,1,2,24,5,10,129,113,20,11,2,114,127,127,130,16,11,28,106,108,102,110,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,108,123,103,125,115,114,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,133,133,0\n306,3104,\"F\",1900,0,1,3,44,29,37,4,\"b\",\"F\",109,2,2,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,90,90,6,7,2,4,22,5,13,88,90,14,5,2,90,107,135,123,11,9,30,109,106,111,91,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,104,114,96,113,108,103,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,90,90,0\n307,3105,\"I\",2150,1,1,3,44,31,25,4,\"w\",\"F\",121,1,1,3,0,3,3,1,1,1,1,0,15,1,2,2,NA,3,124,124,8,9,1,2,NA,NA,NA,118,121,63,31,15,112,110,118,115,22,40,63,104,99,110,106,2,8,1,155,113,268,8.335484,6.973451,15.30894,42,22,23,87,1,0,37,1,1,96,114,99,122,103,111,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.68,1,1,124,124,0\n308,3111,\"I\",2210,1,1,3,47,32,27,3,\"w\",\"M\",104,1,1,3,0,3,3,2,1,1,1,2,0,0,2,2,NA,3,87,87,9,9,1,2,50,6,29,129,122,72,29,40,96,126,127,129,21,36,59,114,121,106,102,2,6,1,188,202,390,6.361702,6.361386,12.72309,41,23,22,86,1,0,35,1,1,119,120,127,133,118,131,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,3.9,1,1,87,87,0\n309,3112,\"F\",2150,1,1,3,45,31,32,4,\"w\",\"F\",80,1,1,1,0,1,1,1,1,1,2,0,0,2,2,2,NA,3,NA,NA,8,8,1,2,34,10,19,103,115,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,69.3905221400975,96.6603970044135,0\n310,3115,\"F\",1925,0,1,3,43,31,27,4,\"h\",\"M\",115,3,3,1,1,1,2,2,2,1,1,0,13,0,2,2,NA,1,97,97,8,9,2,2,35,5,22,43,NA,13,6,5,40,77,99,86,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,72,1,35,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,3,\"h\",\"3\",\"3\",\"1\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,97,97,0\n312,3117,\"F\",2250,1,1,3,45,32,36,5,\"w\",\"F\",100,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,115,115,5,8,2,1,38,6,21,108,110,12,6,1,105,116,108,114,9,10,21,99,108,89,104,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,91,99,94,111,95,100,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n313,3119,\"F\",1775,0,1,3,42,30,21,4,\"w\",\"F\",92,1,1,1,0,1,1,1,1,1,1,0,12,0,2,2,NA,3,89,89,5,6,2,4,32,5,11,100,110,11,6,2,91,96,112,104,12,7,22,93,92,96,106,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,99,111,92,98,105,94,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,89,89,0\n314,3122,\"F\",2020,1,1,3,45,32,30,5,\"w\",\"M\",91,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,121,121,8,8,1,2,46,11,24,103,93,17,5,6,96,95,101,98,11,13,27,99,101,96,101,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,131,123,122,120,125,122,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,121,121,0\n315,3125,\"F\",1620,0,1,3,41,28,32,3,\"w\",\"M\",88,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,121,121,8,8,1,2,31,3,22,115,109,36,13,16,116,126,111,121,7,7,17,116,122,107,124,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,126,131,97,124,127,111,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,121,121,0\n316,3126,\"I\",1950,0,1,3,44,32,23,4,\"w\",\"M\",106,1,1,1,0,1,1,2,4,1,1,0,0,1,2,2,NA,3,102,102,7,9,1,2,40,12,16,127,124,94,53,32,126,127,115,124,33,24,66,122,110,131,113,2,6,1,143,183,326,5.265734,6.448087,11.71382,37,22,22,81,1,0,34,1,1,112,135,99,113,123,106,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.26,1,1,102,102,0\n317,3127,\"I\",1840,0,1,3,45,31,27,4,\"b\",\"F\",107,2,2,4,0,4,4,3,4,1,1,2,0,0,2,2,NA,3,58,58,9,9,1,2,49,18,32,78,75,NA,NA,NA,NA,NA,NA,NA,15,12,33,93,89,99,76,2,7,1,0,0,0,0,0,0,35,7,0,42,1,0,34,1,1,115,107,105,98,111,101,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"4\",\"1\",\"1\",\"3\",1,1,0,1,1,58,58,0\n318,3128,\"F\",900,0,1,3,35,24,23,3,\"h\",\"M\",117,3,3,2,0,2,2,2,2,2,1,0,10,0,2,2,NA,3,50,50,4,7,2,4,96,27,50,93,72,50,22,24,55,72,91,79,5,10,19,88,83,96,64,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,1,67,73,94,87,67,88,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,2,\"h\",\"3\",\"2\",\"0\",\"2\",\"2\",\"1\",\"2\",0,0,0,0,0,50,50,0\n319,3129,\"F\",2140,1,1,3,46,32,20,2,\"h\",\"F\",90,3,3,1,0,1,1,1,1,2,1,0,0,0,2,2,NA,3,90,90,8,9,1,2,26,2,14,100,75,12,5,3,63,84,107,94,5,4,14,101,95,108,80,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,112,111,99,108,112,103,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,\"h\",\"3\",\"1\",\"0\",\"1\",\"2\",\"1\",\"1\",1,0,0,0,0,90,90,0\n320,3130,\"F\",1660,0,1,3,41,29,28,5,\"w\",\"F\",96,1,1,2,0,2,2,1,1,1,1,0,0,1,2,2,NA,3,103,103,3,6,1,2,30,7,21,113,83,7,5,1,NA,NA,NA,NA,4,1,7,99,94,104,103,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,120,111,132,127,115,131,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,103,103,0\n321,3140,\"I\",1170,0,1,3,37,27,17,2,\"b\",\"M\",102,2,5,1,0,1,1,2,2,1,1,0,10,0,2,2,NA,3,68,68,1,5,2,1,36,11,19,68,79,39,16,23,57,84,80,80,10,16,24,77,80,78,63,2,7,1,0,122,122,0,5.868852,5.868852,10,0,20,30,1,0,30,1,1,89,86,74,82,87,74,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,1.22,1,1,68,68,0\n322,3141,\"I\",1600,0,1,3,45,29,19,2,\"h\",\"M\",84,3,3,1,0,1,1,2,2,2,1,0,0,0,2,2,NA,3,60,60,6,7,1,4,76,20,40,98,89,39,9,25,83,81,88,83,7,16,25,86,92,81,76,2,3,1,156,136,292,4.75641,4.411765,9.168175,36,26,21,83,1,0,30,0,1,81,89,74,108,84,87,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,\"h\",\"3\",\"1\",\"0\",\"2\",\"2\",\"1\",\"2\",0,1,2.92,0,0,60,60,0\n323,3145,\"F\",1540,0,1,3,43,29,18,2,\"b\",\"F\",111,2,2,1,0,1,1,2,2,1,2,0,20,0,2,2,NA,3,71,71,8,9,2,4,49,11,35,81,85,22,9,11,60,87,86,86,22,23,46,84,84,87,83,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,95,NA,94,84,NA,87,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,71,71,0\n324,3149,\"F\",1080,0,1,3,37,25,34,5,\"w\",\"M\",112,1,1,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,107,107,5,5,1,2,9,0,6,115,115,16,4,9,116,110,99,105,1,11,16,120,131,103,127,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,112,132,99,127,121,114,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,107,107,0\n325,3152,\"I\",1890,0,1,3,44,30,31,5,\"w\",\"M\",96,5,5,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,8,9,1,1,21,3,12,114,120,18,5,8,109,97,133,116,6,9,13,130,133,121,122,2,9,1,202,204,406,6.831683,6.754902,13.58659,30,23,22,75,1,0,33,0,1,152,138,118,141,143,131,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.06,0,0,71.2861649405858,116.198131470386,1\n326,3153,\"F\",1600,0,1,3,42,28,32,2,\"w\",\"M\",75,1,1,2,0,4,2,1,1,1,1,0,10,0,2,2,NA,3,68,68,4,7,2,4,46,12,13,90,83,29,19,6,90,92,101,96,26,11,40,99,92,108,53,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,102,124,86,94,112,88,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,68,68,0\n327,3157,\"I\",1480,0,1,3,42,30,32,4,\"b\",\"F\",105,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,112,112,2,4,1,4,9,3,3,105,72,18,9,3,NA,NA,NA,NA,2,7,10,89,97,82,88,2,9,1,0,0,0,0,0,0,33,12,0,45,1,0,30,1,1,93,100,95,95,95,94,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,112,112,0\n328,3160,\"F\",1325,0,1,3,40,30,18,2,\"b\",\"M\",103,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,74,74,2,2,1,4,79,13,50,76,85,61,21,35,80,91,99,94,34,46,83,95,98,93,78,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,106,102,97,124,104,111,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,74,74,0\n329,3162,\"F\",1840,0,1,3,42,30,39,4,\"w\",\"F\",98,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,7,8,2,4,28,6,13,127,90,31,11,8,106,120,99,111,8,11,23,104,107,99,109,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,96,114,94,106,104,98,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,86.8668415359665,96.888168299801,0\n330,3165,\"F\",1080,0,1,3,36,27,31,4,\"b\",\"F\",111,2,2,1,0,1,1,2,4,1,1,0,0,1,2,2,NA,3,131,131,7,8,1,2,22,3,13,71,66,5,3,2,NA,NA,NA,NA,3,11,13,96,106,86,85,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,0,114,110,97,111,112,103,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,1,1,131,131,0\n331,3166,\"F\",1517,0,1,3,40,29,34,5,\"w\",\"M\",73,1,1,1,1,1,1,1,1,1,1,0,0,1,2,2,NA,3,120,120,8,8,1,2,31,7,13,88,94,23,16,2,96,122,107,116,6,18,26,111,111,110,114,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,128,123,124,118,125,122,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,120,120,0\n332,3172,\"F\",2300,1,1,3,47,31,27,4,\"w\",\"F\",95,1,1,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,82,82,8,9,1,2,40,10,14,81,77,48,27,15,NA,NA,NA,NA,11,11,24,97,98,96,81,2,11,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,114,120,97,117,116,106,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"4\",\"1\",\"1\",1,0,0,1,1,82,82,0\n333,3177,\"F\",1240,0,1,3,38,25,28,4,\"w\",\"F\",95,1,1,1,0,1,1,1,1,1,1,0,15,0,2,2,NA,3,NA,NA,7,9,1,2,72,10,44,95,108,60,26,30,87,110,97,104,16,29,45,97,105,89,103,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,120,128,108,113,122,111,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,88.618650852144,107.610535375328,0\n335,3179,\"F\",1490,0,1,3,42,29,33,5,\"w\",\"F\",71,1,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,159,159,7,8,2,1,32,1,22,100,114,23,10,7,NA,NA,NA,NA,7,10,19,92,112,72,106,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,73,1,35,1,1,132,122,93,110,125,100,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,159,159,0\n336,3182,\"F\",2150,1,1,3,44,31,30,3,\"w\",\"M\",91,1,5,1,0,4,1,2,2,1,1,0,20,1,1,2,NA,3,88,88,8,9,2,1,64,18,29,103,128,50,21,20,124,100,103,101,31,20,59,103,95,111,122,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,96,117,97,117,105,106,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,88,88,0\n337,3185,\"F\",1730,0,1,3,42,29,35,4,\"w\",\"M\",91,1,1,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,113,113,5,8,1,4,51,12,28,66,72,28,11,17,88,85,100,91,9,20,29,89,88,93,92,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,80,86,74,98,82,83,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,113,113,0\n338,3186,\"F\",2320,1,1,3,44,30,34,5,\"w\",\"F\",108,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,115,115,9,9,1,4,19,4,15,120,110,2,1,1,97,100,126,114,6,7,12,101,104,99,106,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,120,111,79,122,115,96,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n339,3189,\"I\",720,0,1,3,33,22,26,3,\"b\",\"F\",119,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,98,98,3,7,2,1,57,13,34,113,123,38,18,14,95,85,93,88,12,23,46,94,95,94,92,2,9,1,178,189,367,8.179775,7.952381,16.13216,27,23,21,71,1,0,30,1,1,96,96,83,88,96,82,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.67,1,1,98,98,0\n340,3190,\"F\",1370,0,1,3,39,28,32,4,\"w\",\"M\",79,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,7,8,2,4,42,5,25,103,108,22,6,10,92,116,104,111,13,25,41,109,107,110,98,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,109,123,92,108,115,98,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,66.7713361366056,109.012706447586,0\n341,3196,\"F\",2050,1,1,3,49,31,29,5,\"w\",\"M\",95,1,1,2,0,1,2,1,1,1,1,0,0,0,2,2,NA,3,131,131,7,8,1,2,34,5,19,113,123,25,3,15,108,110,96,104,8,7,20,100,111,89,114,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,128,133,113,129,129,122,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,131,131,0\n342,3197,\"F\",1610,0,1,3,42,28,21,3,\"w\",\"F\",105,1,1,1,0,1,1,1,1,1,2,0,20,5,2,2,NA,3,72,72,9,9,2,4,61,20,29,76,NA,40,23,10,NA,NA,NA,NA,14,12,27,103,108,96,79,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,92,98,105,113,95,110,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,72,72,0\n343,3199,\"I\",1980,0,1,3,45,32,27,3,\"b\",\"F\",123,2,2,2,0,2,1,1,1,1,1,0,20,1,2,2,NA,3,59,59,8,9,1,2,63,18,35,93,81,33,14,13,71,94,86,89,20,25,46,87,89,87,79,2,8,1,212,190,402,7.603774,6.294737,13.89851,42,21,22,85,1,0,36,1,1,76,74,93,84,73,86,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.02,1,1,59,59,1\n344,3200,\"F\",1150,0,1,3,41,27,30,5,\"w\",\"F\",92,1,1,1,1,1,2,1,1,1,1,0,0,0,2,2,NA,1,99,99,6,8,1,2,8,1,5,132,113,10,8,0,105,116,111,115,6,0,7,110,104,116,99,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,76,1,29,1,1,134,129,90,125,130,106,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,99,99,0\n346,3206,\"F\",1675,0,1,3,44,31,27,3,\"w\",\"M\",97,1,1,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,79,79,5,5,2,1,26,4,15,115,122,15,6,8,108,94,118,106,3,8,11,112,104,119,122,2,11,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,83,82,94,101,81,96,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,79,79,0\n347,3207,\"F\",2466,1,1,3,47,33,20,3,\"b\",\"M\",91,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,63,63,8,9,2,2,104,27,52,81,66,58,21,27,31,74,85,77,28,32,64,90,87,95,80,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,85,86,96,91,85,92,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,63,63,0\n348,3208,\"F\",950,0,1,3,37,25,14,1,\"b\",\"F\",105,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,49,49,1,2,2,3,53,12,34,88,85,35,13,14,68,67,73,67,19,26,44,75,83,71,72,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,0,0,89,73,92,85,79,86,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,49,49,0\n349,3209,\"F\",1320,0,1,3,38,27,26,3,\"w\",\"F\",64,1,1,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,66,66,3,6,2,4,80,22,43,83,110,49,25,15,92,96,91,93,13,19,30,96,104,89,100,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,115,128,97,119,120,108,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,0,0,66,66,0\n351,3211,\"F\",2100,1,1,3,46,31,34,5,\"w\",\"F\",104,1,1,2,2,2,2,1,1,1,1,0,0,2,2,2,NA,1,143,143,7,9,2,1,51,7,32,93,108,25,13,9,122,117,104,112,16,20,32,113,119,106,103,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,77,1,36,1,1,120,123,105,131,121,120,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,143,143,0\n352,3212,\"F\",910,0,1,3,27,36,26,3,\"b\",\"M\",120,2,1,1,0,1,1,1,1,1,1,0,5,0,2,2,NA,3,75,75,6,7,2,3,49,8,28,105,113,16,4,9,NA,NA,NA,NA,15,13,31,93,94,93,86,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,93,99,97,87,96,91,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,75,75,0\n353,3216,\"F\",2140,1,1,3,45,31,27,5,\"w\",\"M\",71,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,99,99,9,9,1,2,44,7,27,110,108,46,27,14,124,117,110,115,22,18,45,110,126,91,114,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,117,116,101,119,115,111,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,99,99,0\n354,3219,\"F\",2460,1,1,3,45,33,30,2,\"b\",\"M\",94,2,2,3,0,4,3,2,2,1,1,2,20,0,2,2,NA,3,66,66,8,8,2,2,52,13,23,81,93,32,15,11,80,97,84,90,24,19,48,86,93,80,91,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,70,72,92,99,68,94,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,66,66,0\n355,3222,\"F\",2390,1,1,3,48,34,34,5,\"w\",\"M\",95,1,1,2,0,2,2,1,1,1,1,0,0,5,2,2,NA,3,143,143,9,9,1,2,49,12,25,90,93,28,12,10,123,114,110,113,10,15,27,113,111,115,119,2,7,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,87,95,93,105,90,98,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,143,143,0\n356,3225,\"F\",2050,1,1,3,45,31,23,4,\"b\",\"M\",116,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,57,57,5,8,2,2,85,23,44,73,NA,37,21,12,92,91,104,97,9,8,19,95,99,93,92,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,96,107,99,88,99,92,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,57,57,0\n357,3228,\"F\",1880,0,1,3,46,30,25,4,\"w\",\"M\",100,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,124,124,4,6,2,1,18,5,8,108,110,9,2,4,104,114,120,119,5,8,14,133,117,146,113,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,104,116,121,124,109,125,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,124,124,0\n358,3230,\"F\",1350,0,1,3,39,29,29,5,\"w\",\"F\",112,1,1,1,0,1,1,1,1,1,1,0,3,0,2,1,NA,3,108,108,1,6,2,1,17,0,6,144,124,14,5,7,121,134,131,136,6,2,8,120,119,116,124,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,116,123,108,137,118,124,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,108,108,0\n359,3231,\"I\",2280,1,1,3,48,32,27,4,\"b\",\"F\",98,2,2,1,0,1,1,2,1,4,1,0,0,0,2,2,NA,3,68,68,2,7,1,2,59,10,27,83,81,25,12,6,81,95,115,105,6,7,14,111,113,107,89,2,9,1,163,136,299,5.98773,5.897059,11.88479,37,22,22,81,1,0,38,1,1,98,106,108,129,102,120,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"4\",\"1\",\"2\",1,1,2.99,1,1,68,68,0\n360,3232,\"F\",2340,1,1,3,45,32,32,2,\"b\",\"M\",86,2,2,2,0,2,2,2,4,1,1,0,20,0,2,2,NA,3,58,58,6,7,2,3,76,20,39,78,81,57,21,28,88,100,93,96,28,25,54,84,87,83,109,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,96,103,90,81,99,82,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,1,1,58,58,0\n361,3234,\"F\",2495,1,1,3,47,32,16,2,\"b\",\"F\",102,2,3,1,0,1,1,2,2,1,2,0,2,0,2,2,NA,3,43,43,8,9,1,2,75,18,36,88,83,63,34,23,56,77,81,77,17,23,40,84,76,95,51,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,63,69,97,81,64,87,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,43,43,0\n362,3235,\"I\",2155,1,1,3,46,31,23,3,\"w\",\"F\",93,1,1,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,97,97,1,3,1,4,32,7,14,132,117,41,16,13,114,105,110,108,12,13,27,114,114,112,106,2,8,1,164,184,348,4.847561,5.402174,10.24973,48,25,22,95,1,0,32,1,1,120,117,111,122,118,117,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.48,1,1,97,97,0\n363,3237,\"F\",740,0,1,3,35,26,34,5,\"w\",\"F\",52,5,5,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,NA,NA,3,5,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,29,0,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"4\",\"1\",\"1\",1,0,0,0,0,74.0070306379356,99.0218464682718,0\n364,3239,\"I\",900,0,1,3,34,24,28,5,\"b\",\"M\",76,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,83,83,3,6,1,2,33,10,20,43,NA,22,9,9,18,47,45,44,9,16,30,44,50,46,19,1,7,2,157,189,346,6.216561,6.560847,12.77741,36,26,20,82,1,0,26,1,1,23,38,22,31,25,14,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,4,\"b\",\"3\",\"4\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.46,1,1,83,83,0\n365,3240,\"F\",1300,0,1,3,41,28,30,5,\"w\",\"F\",116,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,6,7,2,2,21,6,13,105,130,23,11,7,119,122,110,118,8,15,25,117,114,117,119,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,99,103,94,111,102,100,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n366,3248,\"F\",2353,1,1,3,NA,NA,29,4,\"w\",\"F\",110,1,1,1,0,1,1,3,2,1,1,0,0,0,2,2,NA,3,97,97,9,9,1,2,54,9,30,95,102,25,10,10,87,91,96,93,10,23,31,99,106,91,95,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,98,96,103,117,96,110,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"2\",\"1\",\"1\",\"3\",1,0,0,1,1,97,97,0\n367,3249,\"F\",1220,0,1,3,39,28,29,5,\"w\",\"F\",117,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,95,95,4,7,2,2,18,7,8,108,75,12,7,1,NA,NA,NA,NA,8,3,14,106,114,96,89,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,134,123,115,132,130,125,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,95,95,0\n368,3250,\"F\",1910,0,1,3,47,31,22,2,\"b\",\"M\",103,2,2,2,0,1,2,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,4,6,1,2,54,14,29,71,75,12,6,5,56,72,74,71,22,16,44,61,59,69,60,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,72,73,80,78,71,76,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,80.5686123195671,70.3834457898093,0\n369,3252,\"F\",2310,1,1,3,48,34,28,2,\"b\",\"M\",108,2,2,2,0,2,2,1,1,1,1,0,0,4,2,2,NA,3,74,74,8,9,1,2,24,1,14,78,77,33,15,18,79,79,88,81,20,20,41,92,101,82,99,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,106,113,111,97,109,103,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,74,74,0\n370,3255,\"F\",1350,0,1,3,41,28,23,3,\"b\",\"M\",118,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,77,77,8,9,1,2,51,9,29,120,94,43,20,20,NA,NA,NA,NA,18,24,49,105,105,104,108,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,100,93,104,91,97,97,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,77,77,0\n371,3256,\"F\",1720,0,1,3,38,31,26,3,\"b\",\"F\",103,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,68,68,3,7,2,1,56,12,28,55,NA,29,12,7,18,47,64,51,10,20,39,NA,NA,72,NA,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,48,NA,NA,NA,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,68,68,0\n372,3258,\"I\",2020,1,1,3,47,30,18,2,\"w\",\"F\",84,1,1,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,66,66,8,8,1,2,71,9,39,78,89,NA,NA,NA,NA,NA,NA,NA,6,19,30,85,90,82,81,2,2,3,63,153,216,4.412698,6.156863,10.56956,39,29,20,88,1,0,32,0,1,87,86,88,82,86,82,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.16,0,0,66,66,0\n373,3259,\"F\",790,0,1,3,34,23,38,4,\"h\",\"M\",84,3,3,4,0,4,4,1,1,2,1,0,0,0,2,2,NA,3,NA,NA,4,5,2,2,47,7,33,59,NA,46,18,31,62,77,85,79,7,21,34,75,73,81,69,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,1,80,69,71,76,73,68,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,3,\"h\",\"3\",\"3\",\"0\",\"1\",\"2\",\"1\",\"1\",0,0,0,1,1,72.4661186876466,66.7176299420057,0\n374,3264,\"F\",1920,0,1,3,44,31,23,3,\"w\",\"F\",129,1,1,1,0,1,1,1,1,1,2,0,20,4,2,2,NA,3,104,104,8,9,1,2,58,7,31,118,114,29,13,10,107,100,101,101,13,26,45,101,106,96,108,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,116,120,97,106,117,100,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,104,104,0\n375,3268,\"I\",1970,0,1,3,45,31,31,3,\"w\",\"M\",117,1,1,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,69,69,8,9,1,2,44,12,24,66,63,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,9,0,9,5.111111,0,5.111111,28,14,12,54,1,0,36,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"4\",\"1\",\"1\",0,1,0.09,0,0,69,69,0\n376,3269,\"I\",1400,0,1,3,38,28,18,3,\"b\",\"M\",65,2,2,2,0,2,2,1,1,1,1,0,0,0,2,1,NA,3,115,115,1,4,2,4,59,8,33,93,90,51,24,22,82,96,104,100,24,27,53,95,94,96,99,2,7,1,153,165,318,6.405229,6.042424,12.44765,29,26,19,74,1,0,32,0,1,125,114,114,108,120,111,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.18,0,0,115,115,0\n377,3274,\"F\",1650,0,1,3,42,30,28,3,\"b\",\"M\",102,2,2,1,1,1,1,2,2,4,1,0,0,0,2,2,NA,1,63,63,3,2,2,3,43,11,24,50,NA,33,20,9,59,71,82,74,8,4,12,78,73,89,81,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,80,1,33,1,1,86,82,85,87,82,84,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"1\",\"2\",\"4\",\"1\",\"2\",0,0,0,1,1,63,63,0\n380,3278,\"F\",2420,1,1,3,48,33,27,4,\"w\",\"M\",84,1,1,1,2,1,1,1,1,1,1,0,0,0,2,2,NA,1,115,115,7,9,1,2,15,2,9,139,131,19,10,9,27,122,122,124,5,15,20,131,129,127,124,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,81,1,34,1,1,134,136,97,133,133,115,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,115,115,0\n381,3281,\"I\",1640,0,1,3,43,30,27,2,\"b\",\"F\",117,2,2,2,0,2,2,2,4,1,2,0,1,1,1,2,NA,3,NA,NA,6,8,1,2,29,4,19,72,69,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,131,80,211,8.183206,6.325,14.50821,20,24,14,58,1,0,37,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,2.11,1,1,72.1933328158079,80.2708443956587,0\n382,3283,\"F\",1240,0,1,3,37,27,30,3,\"w\",\"M\",97,1,1,1,0,1,1,1,1,1,2,0,10,2,2,2,NA,3,87,87,7,8,1,1,55,7,30,103,94,34,14,19,99,91,101,96,31,31,64,106,99,112,105,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,117,114,86,113,115,98,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,87,87,0\n383,3284,\"F\",2330,1,1,3,49,33,16,1,\"w\",\"M\",111,1,1,1,0,1,1,2,2,1,2,0,4,0,2,2,NA,3,68,68,1,5,1,2,46,8,23,93,94,19,9,5,96,105,107,106,3,2,12,92,98,86,98,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,86,84,82,103,84,92,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,68,68,0\n384,3288,\"I\",2300,1,1,3,47,32,19,2,\"h\",\"M\",89,3,3,3,0,3,3,2,1,2,1,1,0,0,2,2,NA,3,61,61,8,9,1,2,36,6,22,81,77,18,8,7,67,70,103,84,5,7,13,99,92,108,84,2,4,1,169,206,375,6.295858,6.718447,13.0143,42,23,20,85,1,0,34,0,1,104,118,99,92,109,95,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,\"h\",\"3\",\"1\",\"0\",\"1\",\"2\",\"1\",\"2\",0,1,3.75,0,0,61,61,0\n386,3290,\"I\",1210,0,1,3,38,27,26,4,\"w\",\"F\",101,1,1,3,2,2,3,1,1,1,1,0,10,0,2,2,NA,1,85,85,2,7,2,1,40,6,29,115,102,39,18,17,87,97,101,99,7,18,27,97,98,96,80,2,4,1,168,191,359,5.39881,5.801047,11.19986,38,24,22,84,83,1,30,1,1,88,99,93,115,93,103,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",1,1,3.59,1,1,85,85,0\n387,3294,\"F\",1725,0,1,3,44,28,22,2,\"w\",\"F\",81,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,96,96,4,7,1,2,66,19,29,105,111,88,40,35,NA,NA,NA,NA,32,47,84,98,89,110,112,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,108,118,95,98,112,96,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,96,96,0\n388,3296,\"I\",2230,1,1,3,46,32,22,2,\"b\",\"M\",112,2,2,2,0,1,2,2,1,1,1,0,5,2,2,2,NA,3,65,65,8,9,1,2,26,4,14,98,94,24,13,9,86,86,93,88,10,12,26,83,93,74,71,2,7,1,189,202,391,6.153439,6.945545,13.09898,38,24,19,81,1,0,37,0,1,98,105,111,105,101,108,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,3.91,0,0,65,65,0\n389,3307,\"I\",850,0,1,3,36,24,38,3,\"b\",\"F\",105,2,2,2,0,2,2,2,3,4,1,0,0,0,2,2,NA,3,NA,NA,7,8,2,1,28,5,18,98,81,28,16,4,79,84,89,85,NA,NA,NA,77,84,74,87,2,10,1,190,178,368,8.026316,7.983146,16.00946,40,25,18,83,1,0,28,1,1,98,102,107,105,100,107,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"3\",\"4\",\"1\",\"2\",1,1,3.68,1,1,74.1715489683491,77.8228702164302,0\n390,3313,\"F\",2300,1,1,3,45,32,33,5,\"w\",\"F\",109,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,101,101,9,9,1,2,38,6,28,100,92,NA,NA,NA,NA,NA,NA,NA,13,19,33,109,107,110,79,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,108,121,99,108,113,104,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,101,101,0\n391,3314,\"F\",2030,1,1,3,48,32,25,3,\"w\",\"M\",120,1,1,2,0,2,2,1,1,1,1,1,5,0,2,2,NA,3,73,73,9,9,1,4,44,7,28,NA,NA,33,9,21,80,80,93,85,17,24,45,95,94,96,78,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,96,98,100,114,96,107,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,73,73,0\n392,3319,\"F\",2490,1,1,3,NA,34,28,4,\"h\",\"M\",102,3,3,3,0,3,3,3,4,2,1,0,0,0,2,2,NA,3,NA,NA,7,9,1,2,22,6,13,57,66,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,3,\"h\",\"3\",\"3\",\"0\",\"4\",\"2\",\"1\",\"3\",0,0,0,1,1,84.9409116373328,100.535083609039,0\n393,3321,\"F\",1710,0,1,3,42,33,19,1,\"w\",\"F\",117,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,83,83,8,9,2,1,51,6,27,108,93,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,83,83,0\n394,3323,\"F\",2250,1,1,3,44,33,27,4,\"w\",\"F\",111,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,5,8,1,2,43,8,16,110,110,38,20,12,126,122,111,119,10,19,34,123,129,112,120,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,143,146,122,117,142,120,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n395,3327,\"I\",2096,1,1,3,45,31,22,2,\"b\",\"F\",110,2,2,2,0,2,2,2,4,1,2,1,30,0,2,2,NA,3,73,73,7,8,2,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,13,0,0,13,2,0,37,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,0,1,1,73,73,0\n396,3333,\"I\",1600,0,1,3,42,29,19,3,\"w\",\"F\",95,1,1,1,1,2,2,1,1,1,1,0,0,0,2,2,NA,1,93,93,5,9,2,1,39,7,25,81,90,57,30,17,95,92,108,100,8,14,28,104,108,98,98,2,9,1,182,176,358,7.087912,5.982955,13.07087,32,26,17,75,86,1,33,1,1,131,117,94,106,124,98,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",1,1,3.58,1,1,93,93,0\n398,3341,\"F\",2110,1,1,3,46,31,27,5,\"w\",\"M\",90,1,1,1,0,3,1,1,1,1,1,0,0,2,2,2,NA,3,88,88,7,8,2,1,34,3,22,108,116,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,88,88,0\n399,3342,\"F\",2450,1,1,3,47,32,23,5,\"w\",\"M\",94,1,1,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,111,111,7,8,1,2,38,9,14,120,111,23,7,9,NA,NA,NA,NA,4,8,12,120,125,110,124,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,131,136,139,129,131,135,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,111,111,0\n400,3347,\"I\",1786,0,1,3,42,31,36,5,\"w\",\"F\",103,1,1,1,0,1,1,1,1,1,1,1,10,0,2,1,NA,3,117,117,7,8,1,2,56,9,32,88,89,42,30,4,94,109,95,102,6,3,12,94,105,83,83,2,8,1,117,111,228,5.478632,4.243243,9.721876,42,25,20,87,1,0,32,1,1,105,114,97,117,109,106,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.28,1,1,117,117,0\n401,3352,\"I\",1440,0,1,3,42,29,33,5,\"w\",\"M\",101,1,1,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,123,123,3,6,2,1,40,12,20,78,101,18,4,10,110,95,88,91,7,11,21,84,88,83,108,2,9,1,0,0,0,0,0,0,15,0,0,15,1,0,31,1,0,87,74,91,76,79,81,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,123,123,0\n402,3356,\"I\",1175,0,1,3,35,26,24,3,\"w\",\"M\",85,1,1,4,0,4,4,1,1,1,1,0,20,0,2,2,NA,3,88,88,1,5,2,3,49,10,28,88,79,28,12,11,101,101,93,97,10,11,26,97,102,93,100,2,9,1,0,0,0,0,0,0,34,8,0,42,1,0,30,1,1,105,110,122,117,107,120,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,88,88,0\n403,3358,\"I\",1670,0,1,3,44,29,34,3,\"b\",\"M\",118,2,2,4,0,4,4,3,1,1,1,0,1,0,2,2,NA,3,58,58,6,7,2,4,73,15,39,73,87,51,27,25,51,79,85,80,16,17,37,95,95,96,93,2,5,3,207,214,421,7.135266,7.88785,15.02312,30,21,23,74,1,0,34,1,1,92,104,96,91,97,92,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"3\",0,1,4.21,1,1,58,58,1\n404,3365,\"F\",1550,0,1,3,42,28,27,4,\"w\",\"F\",88,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,86,86,2,6,1,1,NA,NA,NA,108,90,26,10,8,NA,NA,NA,NA,11,7,22,111,107,113,109,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,108,133,80,111,118,92,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,86,86,0\n405,3373,\"F\",2250,1,1,3,46,34,30,5,\"w\",\"M\",91,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,117,117,5,7,1,1,34,7,17,110,110,19,11,5,112,119,115,119,13,14,29,122,127,112,121,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,143,126,118,129,133,125,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,117,117,0\n406,3374,\"I\",1600,0,1,3,43,29,30,3,\"w\",\"M\",108,1,1,2,0,2,2,2,1,1,3,0,0,0,2,2,NA,3,74,74,8,9,2,1,NA,NA,NA,76,75,NA,NA,NA,NA,NA,NA,NA,56,59,128,75,80,74,44,2,9,1,126,55,181,6.309524,6.363636,12.67316,38,26,5,69,1,0,34,1,1,68,53,74,85,57,76,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"3\",\"2\",0,1,1.81,1,1,74,74,0\n407,3375,\"F\",2211,1,1,3,46,33,31,4,\"b\",\"F\",95,2,2,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,NA,NA,5,7,2,4,29,3,18,66,46,36,14,18,54,76,81,76,21,41,69,82,88,79,74,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,105,120,94,94,112,92,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"4\",\"1\",\"1\",1,0,0,1,1,71.6375696660213,57.7999613321314,0\n408,3379,\"I\",1690,0,1,3,42,30,38,2,\"b\",\"M\",115,2,2,1,0,1,1,2,2,1,3,0,14,3,2,2,NA,3,76,76,8,9,2,2,4,0,2,118,113,16,4,7,87,101,107,104,5,11,17,101,100,102,92,2,7,1,210,192,402,7.966667,7.989583,15.95625,42,22,17,81,1,0,34,1,1,120,120,115,118,119,117,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,4.02,1,1,76,76,1\n409,3382,\"F\",2330,1,1,3,46,32,38,5,\"w\",\"M\",111,1,1,2,0,1,2,1,1,1,1,1,0,1,2,2,NA,3,120,120,7,9,1,2,60,5,37,115,120,42,22,20,123,124,100,114,16,16,36,119,125,108,136,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,107,107,99,118,106,108,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,120,120,0\n410,3390,\"I\",1890,0,1,3,44,31,34,5,\"w\",\"M\",90,1,1,2,0,2,2,1,1,1,1,1,0,1,2,2,NA,3,106,106,8,9,2,1,24,6,9,108,98,11,6,3,86,94,104,99,5,6,11,109,108,110,100,2,9,1,113,0,113,4.265487,0,4.265487,33,17,17,67,1,0,34,1,1,106,116,93,119,110,106,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,1.13,1,1,106,106,0\n411,3392,\"F\",1975,0,1,3,43,31,32,4,\"b\",\"M\",96,2,2,3,0,3,3,1,1,4,1,0,0,0,2,2,NA,3,56,56,8,9,1,2,40,11,22,76,66,12,2,6,90,102,101,102,3,4,10,87,92,83,92,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,118,120,101,91,119,95,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"4\",\"1\",\"1\",0,0,0,1,1,56,56,0\n412,3393,\"I\",1230,0,1,3,40,26,32,5,\"w\",\"F\",114,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,121,121,6,8,2,2,31,6,15,122,123,25,15,5,121,121,107,116,18,10,31,126,129,117,127,2,9,1,109,145,254,6.495413,6.524138,13.01955,37,23,21,81,1,0,30,1,1,NA,139,87,131,NA,106,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.54,1,1,121,121,0\n413,3394,\"F\",900,0,1,3,34,25,32,5,\"b\",\"F\",119,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,125,125,7,10,2,4,23,2,18,98,110,20,7,5,102,109,105,108,3,9,14,102,108,95,95,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,119,120,94,111,118,100,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,4,\"b\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,125,125,0\n414,3401,\"F\",2210,1,1,3,44,33,26,4,\"b\",\"M\",117,2,2,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,NA,NA,8,10,1,2,45,8,23,81,83,12,6,2,NA,NA,NA,NA,8,9,23,93,92,95,93,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,123,114,103,97,118,99,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,71.1642290292194,105.864622221794,0\n415,3402,\"I\",2360,1,1,3,44,32,31,5,\"h\",\"M\",96,3,3,1,0,1,1,1,1,2,1,0,0,0,2,2,NA,3,NA,NA,1,2,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,31,0,0,31,1,0,36,0,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,4,\"h\",\"3\",\"4\",\"0\",\"1\",\"2\",\"1\",\"1\",0,1,0,0,0,82.2722416091122,107.125986508568,0\n416,3411,\"F\",1770,0,1,3,45,30,25,3,\"w\",\"F\",106,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,91,91,6,7,1,2,50,10,33,105,122,12,7,1,NA,NA,NA,NA,14,22,38,112,117,106,103,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,95,110,93,111,100,100,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,91,91,0\n417,3412,\"I\",2150,1,1,3,41,31,34,5,\"b\",\"F\",117,2,2,4,0,4,4,1,1,1,1,1,0,0,2,2,NA,3,104,104,8,9,1,2,22,4,13,122,122,26,7,7,118,109,99,104,5,9,16,115,121,107,126,2,9,1,140,159,299,5.814286,4.849057,10.66334,31,26,21,78,1,0,35,1,1,119,118,106,118,117,111,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,4,\"b\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.99,1,1,104,104,0\n418,3416,\"F\",1810,0,1,3,43,30,36,4,\"w\",\"M\",95,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,117,117,3,7,2,1,35,5,21,147,114,41,16,12,134,125,110,119,11,15,35,137,138,130,126,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,98,128,107,132,111,122,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,117,117,0\n420,3420,\"I\",2440,1,1,3,47,33,29,5,\"w\",\"F\",76,1,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,94,94,2,5,2,4,NA,NA,NA,110,119,22,6,11,88,100,91,95,4,9,14,101,101,100,106,2,5,1,187,173,360,7.122995,7.514451,14.63745,33,25,22,80,87,1,35,1,1,96,NA,95,99,NA,96,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",1,1,3.6,1,1,94,94,0\n421,3428,\"F\",740,0,1,3,NA,NA,31,5,\"w\",\"M\",96,1,2,1,0,1,1,1,1,1,1,0,5,0,2,2,NA,3,110,110,3,6,2,4,61,13,34,113,112,24,5,17,102,106,111,109,17,13,31,107,125,86,120,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,98,124,99,122,109,111,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,110,110,0\n422,3431,\"F\",2495,1,1,3,47,33,22,4,\"b\",\"F\",98,2,2,1,0,1,1,1,1,1,1,0,12,0,2,2,NA,3,79,79,6,8,1,2,63,19,22,90,79,24,11,5,91,95,108,101,9,11,23,103,110,95,112,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,106,125,93,115,115,103,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,79,79,0\n423,3437,\"I\",2425,1,1,3,48,34,30,5,\"w\",\"F\",88,1,1,1,0,1,1,1,1,1,3,0,0,2,2,2,NA,3,112,112,9,9,1,2,17,0,10,120,112,20,13,6,129,119,118,120,3,3,6,118,121,112,115,2,9,1,161,94,255,7.751553,7.468085,15.21964,29,21,18,68,1,0,36,1,1,144,128,121,124,135,125,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"3\",\"1\",1,1,2.55,1,1,112,112,0\n424,3442,\"I\",2150,1,1,3,46,32,16,2,\"b\",\"M\",117,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,71,71,9,9,1,4,56,12,34,88,94,34,14,14,71,90,89,88,3,5,6,82,88,79,83,2,3,1,174,123,297,6.247126,5.487805,11.73493,40,27,20,87,1,0,35,0,1,86,84,94,94,84,92,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,\"b\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,2.97,0,0,71,71,0\n425,3446,\"F\",1706,0,1,3,41,28,22,3,\"b\",\"F\",109,2,2,3,0,3,3,2,2,1,2,1,10,0,2,2,NA,3,NA,NA,8,8,1,2,56,11,29,66,58,12,8,3,NA,NA,NA,NA,4,7,13,68,70,71,68,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,79,76,90,76,75,80,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,83.7765893929968,74.6339966578445,0\n426,3462,\"F\",1700,0,1,3,42,30,28,4,\"w\",\"F\",107,1,1,1,0,1,1,1,1,1,1,0,1,0,2,2,NA,3,96,96,8,9,1,2,37,9,21,142,131,12,5,3,124,127,110,121,10,12,22,122,132,106,122,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,132,143,117,119,135,120,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,96,96,0\n427,3468,\"I\",2040,1,1,3,42,29,17,2,\"w\",\"M\",85,1,1,1,0,1,1,2,2,1,1,0,10,0,2,2,NA,3,89,89,6,8,1,2,49,12,28,98,102,39,20,16,NA,NA,NA,NA,16,14,34,96,89,106,94,2,5,1,193,185,378,4.668394,6.248649,10.91704,48,24,22,94,1,0,32,0,1,120,114,128,103,117,117,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,\"w\",\"3\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.78,0,0,89,89,0\n428,3474,\"F\",1644,0,1,3,NA,30,35,5,\"w\",\"F\",17,1,1,1,0,1,1,1,1,1,1,0,0,4,2,2,NA,3,128,128,6,7,2,4,NA,NA,NA,105,103,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,128,128,0\n429,3477,\"I\",1950,0,1,3,44,31,21,3,\"w\",\"M\",68,1,1,1,0,1,1,1,1,1,1,0,6,0,2,2,NA,3,87,87,7,9,1,2,64,16,31,122,114,30,18,10,111,114,108,112,17,12,30,109,115,102,112,2,8,1,144,180,324,5.270833,5.744444,11.01528,38,22,21,81,1,0,32,1,1,103,123,127,129,112,128,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.24,1,1,87,87,0\n430,3479,\"F\",1490,0,1,3,39,27,27,4,\"b\",\"F\",124,2,2,2,0,2,2,1,1,1,1,1,10,0,2,2,NA,3,84,84,6,8,1,2,47,11,20,81,NA,21,6,8,NA,NA,NA,NA,7,6,12,85,89,83,76,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,94,98,92,92,95,90,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,84,84,0\n431,3482,\"F\",1590,0,1,3,42,28,19,4,\"b\",\"F\",102,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,76,76,6,8,1,2,37,5,25,103,94,47,27,18,113,111,101,107,12,22,37,104,108,99,102,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,134,129,127,125,130,127,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,76,76,0\n432,3483,\"F\",1690,0,1,3,42,29,21,4,\"h\",\"F\",107,3,3,1,0,1,1,2,1,2,1,0,5,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,NA,NA,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,3,\"h\",\"3\",\"3\",\"0\",\"1\",\"2\",\"1\",\"2\",1,0,0,0,1,77.0626010002263,56.3760953930765,0\n433,3494,\"I\",1780,0,1,3,42,29,27,4,\"b\",\"F\",115,2,2,1,0,1,1,2,2,1,2,0,44,0,1,2,NA,3,81,81,8,8,1,2,17,3,9,120,94,28,6,11,87,105,108,107,3,18,25,109,119,96,114,2,9,1,140,161,301,6.007143,5.863354,11.8705,36,23,21,80,1,0,34,0,1,125,114,122,141,119,134,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.01,0,0,81,81,0\n434,3501,\"F\",920,0,1,3,NA,NA,26,4,\"b\",\"M\",104,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,NA,NA,7,8,1,2,71,11,40,73,72,45,16,20,NA,NA,NA,NA,19,26,51,80,88,75,70,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,1,105,117,94,81,111,85,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,76.8118787723199,85.8038795974777,0\n435,3505,\"F\",2000,0,1,3,NA,31,29,3,\"w\",\"F\",116,1,1,1,0,1,1,3,2,1,1,0,0,1,2,2,NA,3,50,50,9,9,2,4,74,18,33,86,79,73,38,22,81,96,110,103,30,38,81,90,94,86,70,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,97,104,106,96,99,99,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"2\",\"1\",\"1\",\"3\",1,0,0,1,1,50,50,0\n436,3506,\"I\",1871,0,1,3,NA,31,22,4,\"w\",\"F\",105,5,5,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,64,NA,7,8,1,2,43,9,19,95,85,23,8,6,74,80,95,86,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,177,135,312,7.225989,5.911111,13.1371,45,24,19,88,1,0,36,0,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,3,\"w\",\"3\",\"3\",\"0\",\"1\",\"4\",\"1\",\"1\",1,1,3.12,0,0,64,64,0\n437,3508,\"F\",1490,0,1,3,NA,28,22,3,\"b\",\"M\",122,2,5,2,0,2,1,2,4,1,1,0,4,1,2,2,NA,3,NA,NA,4,6,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,2,\"b\",\"3\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,85.7101314983827,80.8352210585814,0\n438,3518,\"F\",1460,0,1,3,41,28,28,3,\"w\",\"F\",87,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,83,83,4,6,2,4,78,23,42,43,NA,85,53,23,NA,NA,NA,NA,9,16,30,40,46,46,19,1,7,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,21,53,33,0,33,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,83,83,0\n439,3522,\"F\",1900,0,1,3,43,31,34,5,\"w\",\"M\",109,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,113,113,8,8,1,2,40,7,30,115,126,43,11,24,93,114,103,109,10,32,50,100,105,95,120,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,98,119,97,136,107,117,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,113,113,0\n440,3524,\"F\",1980,0,1,3,47,30,22,4,\"b\",\"F\",114,2,2,4,0,4,4,1,1,1,1,0,0,0,2,2,NA,3,80,80,8,9,1,2,41,7,32,108,85,5,0,2,111,96,108,102,0,7,8,107,102,111,99,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,131,133,131,120,130,125,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,80,80,0\n441,3540,\"F\",1600,0,1,3,40,30,26,4,\"b\",\"M\",123,2,2,1,0,1,1,1,1,4,3,0,0,0,2,2,NA,3,NA,NA,5,7,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,22,43,NA,NA,57,NA,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,NA,NA,79,NA,NA,NA,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,3,\"b\",\"3\",\"3\",\"0\",\"1\",\"4\",\"3\",\"1\",0,0,0,0,0,87.9490585460287,63.9989921318866,0\n442,3550,\"F\",1100,0,1,3,40,29,36,5,\"w\",\"F\",106,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,123,123,9,9,2,4,14,1,6,125,103,12,5,3,96,105,103,104,8,7,19,104,107,100,88,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,90,1,32,0,1,105,117,103,106,111,104,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,123,123,0\n444,3560,\"I\",1980,0,1,3,48,32,25,3,\"w\",\"F\",102,1,1,1,0,1,1,3,2,1,2,0,15,1,1,2,NA,3,72,72,4,8,2,1,44,6,23,108,90,20,9,7,NA,NA,NA,NA,10,21,31,109,107,110,88,2,9,1,93,123,216,4.505376,5.081301,9.586677,26,21,22,69,1,0,34,0,1,99,112,115,127,104,122,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,2,\"w\",\"3\",\"2\",\"0\",\"2\",\"1\",\"2\",\"3\",1,1,2.16,0,0,72,72,0\n446,3566,\"I\",1580,0,1,3,41,31,32,5,\"w\",\"M\",110,1,1,2,2,2,2,1,1,1,1,0,0,0,2,2,NA,1,125,125,6,7,2,1,21,4,15,113,108,34,14,15,92,106,105,106,7,6,13,110,107,112,106,2,9,1,198,177,375,7.323232,8.169492,15.49272,39,22,22,83,91,1,33,1,1,93,99,108,117,96,113,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",0,1,3.75,1,1,125,125,0\n447,3577,\"F\",1930,0,1,3,42,30,35,5,\"w\",\"F\",115,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,128,128,8,9,1,2,35,4,26,122,114,28,11,10,111,124,108,118,8,17,26,123,122,120,131,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,128,144,113,144,134,131,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,4,\"w\",\"3\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,128,128,0\n448,4025,\"F\",1240,0,1,4,39,28,25,4,\"b\",\"M\",68,2,2,3,0,1,2,1,1,1,2,2,0,0,2,1,NA,3,72,72,7,7,2,2,47,8,35,52,NA,57,18,33,49,67,52,56,9,25,38,49,55,52,30,1,4,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,34,56,28,55,40,32,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,72,72,0\n449,4034,\"F\",1360,0,1,4,38,28,22,2,\"h\",\"M\",93,3,3,2,1,2,3,1,1,2,1,1,0,0,2,2,NA,1,68,68,8,9,1,2,78,19,43,52,NA,61,26,30,29,59,91,71,12,23,37,97,92,103,55,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,94,1,32,0,0,110,115,100,104,111,101,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"1\",\"1\",\"2\",\"1\",\"1\",0,0,0,0,0,68,68,0\n451,4049,\"F\",1540,0,1,4,41,29,29,2,\"b\",\"F\",103,2,2,2,0,2,2,2,1,1,2,1,5,1,2,2,NA,3,67,67,6,7,1,4,85,20,35,81,63,70,39,21,78,84,89,85,29,33,67,83,85,82,84,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,89,93,94,91,91,90,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,1,1,67,67,0\n452,4058,\"F\",800,0,1,4,34,24,18,3,\"b\",\"F\",99,2,2,1,0,1,1,2,2,1,1,0,0,0,2,1,NA,3,70,70,3,6,1,2,53,13,31,86,72,29,13,10,83,96,92,93,5,8,15,71,79,69,88,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,91,98,108,97,94,101,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,70,70,0\n453,4078,\"F\",880,0,1,4,37,24,23,2,\"b\",\"F\",79,2,2,2,0,2,2,2,2,1,1,0,7,0,2,1,NA,3,69,69,1,6,2,3,101,20,57,73,63,106,49,44,83,72,89,78,29,60,95,73,80,70,87,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,84,96,96,85,89,89,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,69,69,0\n454,4079,\"F\",1610,0,1,4,40,30,29,2,\"b\",\"M\",95,2,2,3,0,2,3,2,2,1,2,0,10,7,2,2,NA,3,83,83,4,8,2,2,37,8,23,68,NA,17,6,8,65,65,76,67,3,8,11,72,76,72,73,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,78,84,92,88,79,88,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,83,83,0\n455,4095,\"I\",1950,0,1,4,46,30,15,2,\"b\",\"M\",117,2,2,1,0,1,1,2,2,1,0,0,0,0,2,2,NA,3,NA,NA,7,8,1,4,59,17,33,83,81,26,12,10,51,69,60,61,4,9,11,63,69,63,50,2,4,1,181,194,375,6.060773,5.793814,11.85459,47,19,21,87,1,0,34,0,0,73,84,96,98,77,96,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,1,3.75,0,0,85.9998245778641,62.9488903908586,0\n456,4101,\"F\",940,0,1,4,37,25,21,2,\"h\",\"F\",77,3,3,2,0,2,2,1,1,2,1,1,0,0,2,1,NA,3,NA,NA,7,8,1,2,22,6,12,50,NA,12,5,4,19,52,63,53,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"1\",\"1\",1,0,0,1,1,77.0299339033958,77.8204261397393,0\n457,4105,\"F\",2100,1,1,4,46,29,28,3,\"b\",\"M\",58,2,2,2,0,1,2,2,2,1,3,0,0,0,2,2,NA,3,66,66,1,5,1,4,48,12,29,52,81,24,16,8,67,84,89,85,6,10,17,84,85,84,77,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,104,100,128,91,103,108,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"3\",\"2\",0,0,0,1,1,66,66,0\n458,4107,\"F\",2290,1,1,4,46,33,23,2,\"h\",\"M\",80,3,3,3,0,2,3,1,1,2,1,1,0,0,2,2,NA,3,73,73,8,9,1,4,48,10,31,46,NA,71,32,35,29,76,86,79,25,32,59,96,107,84,85,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,125,123,97,120,124,108,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"1\",\"1\",0,0,0,0,0,73,73,0\n459,4116,\"I\",1840,0,1,4,46,31,21,3,\"b\",\"F\",111,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,53,53,7,9,1,4,43,11,25,76,75,40,25,13,59,89,73,79,17,20,36,65,67,68,40,2,4,1,173,178,351,5.774566,5.786517,11.56108,49,25,23,97,1,0,34,1,1,71,69,96,85,68,89,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,3.51,1,1,53,53,0\n460,4131,\"F\",2400,1,1,4,44,31,29,4,\"b\",\"F\",63,2,2,1,0,1,1,2,3,4,1,0,0,0,2,2,NA,3,44,44,3,7,1,2,26,7,15,71,79,18,5,3,71,80,84,80,4,2,7,95,102,89,95,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,109,NA,99,108,NA,103,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"3\",\"4\",\"1\",\"2\",1,0,0,1,1,44,44,0\n461,4143,\"F\",1916,0,1,4,46,31,19,4,\"b\",\"F\",116,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,90,90,7,8,1,2,51,10,31,103,103,31,12,9,108,109,97,104,11,29,39,99,105,93,118,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,96,104,96,108,99,100,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,90,90,0\n462,4153,\"I\",1280,0,1,4,37,28,19,2,\"b\",\"M\",96,2,2,1,0,1,1,2,1,1,2,0,0,0,2,1,NA,3,69,69,8,9,2,4,30,6,17,66,NA,10,2,5,75,84,89,85,3,3,7,90,107,73,99,2,8,1,145,159,304,6.310345,6.446541,12.75689,37,20,20,77,1,0,31,1,1,107,101,100,123,104,111,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,1,3.04,1,1,69,69,0\n463,4156,\"I\",800,0,1,4,36,23,26,3,\"b\",\"M\",72,2,2,2,0,2,2,2,2,1,2,1,20,0,2,1,NA,3,73,73,7,9,2,2,60,9,34,86,85,17,6,9,85,79,77,76,6,21,27,69,73,70,58,2,2,1,190,172,362,5.952632,5.901163,11.85379,37,23,20,80,1,0,27,0,1,78,76,96,103,75,98,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.62,0,0,73,73,0\n465,4159,\"I\",2000,0,1,4,44,31,25,3,\"b\",\"F\",102,2,2,2,1,1,3,1,1,4,2,0,0,0,2,2,NA,1,NA,NA,3,7,2,2,91,19,49,83,72,47,24,15,66,82,64,71,10,10,27,89,95,83,54,2,6,1,195,224,419,5.897436,6.098214,11.99565,48,20,25,93,95,1,34,1,1,90,101,110,109,94,108,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"1\",\"1\",\"4\",\"2\",\"1\",1,1,4.19,1,1,72.9395752490351,53.249671230329,1\n467,4174,\"I\",2240,1,1,4,43,31,20,2,\"b\",\"F\",108,2,2,2,1,2,3,1,1,4,2,0,0,0,2,2,NA,1,50,50,8,9,1,2,34,10,17,93,85,11,6,5,82,89,105,96,2,5,8,87,88,90,56,2,3,1,208,182,390,5.980769,5.89011,11.87088,40,22,22,84,97,1,36,1,1,101,111,124,108,105,117,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"1\",\"1\",\"4\",\"2\",\"1\",1,1,3.9,1,1,50,50,0\n468,4179,\"F\",2390,1,1,4,47,34,30,2,\"b\",\"M\",84,2,2,6,0,6,6,3,4,1,1,2,0,0,2,2,NA,3,48,48,8,9,1,2,94,21,51,50,NA,81,36,33,46,72,81,74,32,34,81,72,75,73,43,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,64,69,92,73,64,80,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,1,1,48,48,0\n469,4180,\"F\",2470,1,1,4,48,33,16,2,\"b\",\"M\",85,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,59,59,8,9,1,2,92,18,51,78,NA,33,10,20,52,82,72,75,18,33,51,66,70,68,65,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,73,76,105,91,73,97,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,59,59,0\n470,4193,\"F\",1880,0,1,4,44,30,21,3,\"b\",\"F\",106,2,2,4,0,4,4,2,4,1,1,1,0,0,2,2,NA,3,54,54,1,5,2,2,NA,NA,NA,90,72,29,7,13,76,81,103,91,2,0,4,83,85,83,86,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,81,89,92,98,84,94,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,0,0,54,54,0\n471,4202,\"I\",860,0,1,4,38,26,18,2,\"b\",\"M\",121,2,2,2,0,2,1,2,2,1,1,1,0,0,2,2,NA,3,68,68,8,9,2,4,44,7,29,78,90,29,15,13,70,76,85,78,11,19,31,85,87,86,53,2,4,1,126,217,343,5.857143,7.046083,12.90323,34,16,18,68,1,0,30,0,0,120,117,92,91,118,90,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.43,0,0,68,68,0\n472,4216,\"F\",1760,0,1,4,45,30,28,2,\"b\",\"F\",109,2,2,1,0,1,1,1,1,4,2,0,0,0,2,2,NA,3,NA,NA,7,8,1,2,NA,NA,NA,66,NA,39,20,9,79,85,103,93,14,17,35,83,85,82,71,2,7,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,93,98,85,91,95,86,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"4\",\"2\",\"1\",1,0,0,1,1,77.132621151667,38.3380908922377,0\n473,4217,\"I\",1010,0,1,4,34,26,16,2,\"b\",\"F\",92,2,2,2,0,1,1,2,2,1,2,0,0,0,2,1,NA,3,47,47,1,5,2,1,82,20,43,88,79,14,6,6,69,69,88,76,13,24,41,73,72,79,46,2,3,1,211,210,421,5.905213,5.87619,11.7814,41,24,23,88,1,0,29,NA,NA,73,84,99,88,77,92,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,4.21,1,0,47,47,1\n474,4220,\"I\",1700,0,1,4,43,29,24,4,\"b\",\"F\",98,2,2,7,0,6,6,2,2,1,1,1,5,0,2,2,NA,3,87,87,8,9,1,4,35,7,16,95,93,44,14,21,72,89,86,86,10,29,47,85,88,84,70,2,10,1,175,185,360,5.92,5.924324,11.84432,44,21,19,84,1,0,33,0,1,94,104,105,85,98,94,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.6,0,0,87,87,0\n475,4221,\"F\",1780,0,1,4,44,30,36,4,\"b\",\"F\",118,2,2,3,0,3,3,3,1,1,1,0,10,0,2,2,NA,3,NA,NA,8,9,2,2,48,7,32,79,89,25,5,10,NA,NA,NA,NA,7,18,30,85,91,81,84,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,120,114,95,95,116,94,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"1\",\"1\",\"1\",\"3\",1,0,0,1,1,75.2937805668076,73.9727825122184,0\n476,4238,\"F\",1520,0,1,4,41,28,18,2,\"b\",\"M\",103,2,2,2,0,2,2,2,1,1,2,1,0,0,2,2,NA,3,45,45,3,6,2,4,62,16,40,72,77,26,12,11,74,82,99,89,19,27,48,90,89,93,74,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,94,98,99,98,96,98,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,0,0,45,45,0\n477,4239,\"F\",960,0,1,4,34,24,32,3,\"b\",\"F\",82,2,2,3,0,3,2,3,2,1,2,0,4,0,2,1,NA,3,63,63,3,6,2,4,24,5,13,46,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,40,46,46,19,2,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,21,53,33,0,33,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"2\",\"3\",1,0,0,0,0,63,63,0\n478,4241,\"I\",2080,1,1,4,47,31,16,2,\"b\",\"F\",111,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,73,73,6,8,1,2,44,7,25,68,72,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,79,63,142,5.405063,5.603175,11.00824,50,23,12,85,1,0,32,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,1,1.42,0,0,73,73,0\n479,4254,\"F\",2010,1,1,4,46,30,22,1,\"b\",\"F\",116,2,2,3,0,3,3,2,1,1,2,1,0,0,2,2,NA,3,81,81,7,8,1,2,45,5,27,76,72,41,26,8,78,87,82,84,18,19,33,76,80,75,68,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,85,91,92,85,87,86,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,0,0,81,81,0\n480,4268,\"I\",860,0,1,4,36,24,20,2,\"b\",\"M\",100,2,2,2,0,1,1,2,2,1,2,0,0,0,2,1,NA,3,55,55,3,8,1,4,58,23,26,78,NA,52,21,16,77,84,88,84,12,6,29,79,87,75,56,2,3,1,122,114,236,5.491803,5.789474,11.28128,43,23,22,88,1,0,31,0,0,80,81,74,77,79,70,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,2.36,0,0,55,55,0\n481,4275,\"I\",1620,0,1,4,40,28,33,2,\"b\",\"F\",107,2,2,4,0,4,4,3,2,1,1,0,0,0,2,2,NA,3,53,53,4,7,2,1,38,9,20,105,96,16,6,9,76,89,100,93,1,13,16,85,94,78,65,2,7,1,213,212,425,5.779343,5.811321,11.59066,48,22,16,86,1,0,30,1,1,87,94,128,104,89,115,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",1,1,4.25,1,1,53,53,1\n482,4276,\"I\",1800,0,1,4,42,30,21,2,\"h\",\"F\",104,3,3,3,0,3,3,1,1,2,2,0,0,0,2,2,NA,3,50,NA,8,9,2,3,72,20,44,NA,NA,NA,NA,NA,NA,NA,NA,NA,15,40,51,78,78,82,43,2,4,1,150,127,277,5.746667,5.80315,11.54982,47,20,20,87,1,0,31,0,1,101,94,99,95,97,96,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"2\",\"1\",1,1,2.77,0,0,50,50,0\n484,4285,\"I\",1515,0,1,4,38,29,40,3,\"b\",\"F\",110,2,2,7,2,7,7,3,4,1,1,0,0,0,2,2,NA,1,52,52,8,9,1,1,49,14,27,83,53,10,3,2,41,84,81,81,10,27,37,69,79,64,45,2,8,1,221,209,430,5.972851,5.808612,11.78146,45,24,18,87,99,1,32,1,1,115,101,124,89,108,103,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"2\",\"4\",\"1\",\"1\",\"3\",1,1,4.3,1,1,52,52,1\n485,4286,\"I\",1890,0,1,4,46,28,17,2,\"b\",\"M\",132,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,66,66,3,9,1,2,46,8,31,73,NA,NA,NA,NA,NA,NA,NA,NA,14,16,31,58,56,68,39,2,4,1,190,173,363,5.778947,5.699422,11.47837,48,24,23,95,1,0,34,0,0,68,67,76,65,65,65,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.63,0,0,66,66,0\n486,4288,\"F\",2320,1,1,4,48,31,18,2,\"b\",\"F\",102,2,2,1,0,1,1,2,2,1,1,0,0,1,2,2,NA,3,NA,NA,7,8,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,86.3442140864223,64.8037779769901,0\n487,4292,\"I\",2190,1,1,4,47,29,22,2,\"b\",\"M\",115,2,2,4,0,4,4,2,4,1,2,0,20,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,36,0,0,36,2,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,1,0,0,0,64.2927071777376,70.4825104048919,0\n488,4301,\"I\",1370,0,1,4,41,28,19,3,\"b\",\"F\",99,2,2,2,0,2,2,2,2,1,2,1,0,0,2,2,NA,3,76,76,6,7,1,4,81,25,49,81,NA,NA,NA,NA,NA,NA,NA,NA,23,50,69,77,85,73,76,2,7,1,98,70,168,5.887755,5.814286,11.70204,43,22,17,82,1,0,31,0,0,96,96,96,88,96,90,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,1.68,0,0,76,76,0\n489,4307,\"F\",2000,0,1,4,42,30,16,2,\"b\",\"F\",108,2,2,2,0,2,2,2,2,1,3,0,7,0,2,2,NA,3,NA,NA,5,7,1,2,57,22,24,64,53,31,18,12,56,71,80,73,7,16,26,81,76,89,53,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,80,89,96,95,84,94,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,0,0,73.5405053852384,79.7531474875184,0\n490,4308,\"I\",1480,0,1,4,39,26,30,1,\"h\",\"M\",104,3,3,4,0,2,2,3,4,2,2,1,0,0,2,2,NA,3,NA,NA,8,9,1,4,60,6,31,73,NA,78,26,46,37,54,95,71,18,39,59,92,81,106,74,2,6,1,12,124,136,5.833333,5.895161,11.72849,37,18,20,75,1,0,32,0,0,87,86,92,82,86,84,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"4\",\"2\",\"2\",\"3\",0,1,1.36,0,0,82.6512739733823,52.9007071488591,0\n492,4314,\"F\",900,0,1,4,35,23,35,2,\"b\",\"F\",84,2,2,6,2,6,6,3,2,4,1,0,0,0,2,1,NA,1,NA,NA,6,8,1,1,30,4,17,50,NA,37,19,6,56,67,78,70,16,7,30,75,72,82,40,2,6,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,101,1,26,1,1,77,65,87,85,69,83,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"2\",\"2\",\"4\",\"1\",\"3\",1,0,0,1,1,76.3147590256037,41.0597873966549,0\n493,4323,\"I\",2110,1,1,4,45,30,20,2,\"b\",\"F\",113,2,2,5,0,3,3,2,2,1,0,0,0,0,1,2,NA,3,68,68,2,5,2,1,30,9,14,66,NA,23,10,11,57,74,82,76,6,26,36,84,87,83,53,2,3,1,139,118,257,5.884892,5.838983,11.72388,49,21,22,92,1,0,35,0,0,90,100,111,113,95,113,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,1,2.57,0,0,68,68,0\n494,4340,\"I\",1160,0,1,4,40,26,23,4,\"b\",\"F\",99,2,2,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,83,83,7,8,1,4,47,6,28,83,69,42,16,18,70,86,97,91,8,21,36,89,90,90,73,2,7,1,62,0,62,5.725806,0,5.725806,23,7,0,30,1,0,31,1,1,105,110,118,111,107,114,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",1,1,0.62,1,1,83,83,0\n495,4342,\"F\",1980,0,1,4,44,29,16,2,\"b\",\"F\",112,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,65,65,8,9,1,2,42,9,18,86,79,31,13,14,69,81,84,81,2,14,20,86,82,93,70,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,90,98,99,103,94,100,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,65,65,0\n496,4343,\"I\",960,0,1,4,36,24,29,4,\"w\",\"F\",96,4,3,1,1,2,1,1,1,1,1,0,0,0,2,1,NA,3,79,79,5,8,2,NA,47,8,26,88,77,38,17,16,52,74,115,93,17,29,47,87,84,94,72,2,7,1,63,0,63,5.539683,0,5.539683,31,20,21,72,1,0,28,1,1,128,114,96,95,121,94,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,3,\"w\",\"4\",\"3\",\"1\",\"1\",\"1\",\"1\",\"1\",1,1,0.63,1,1,79,79,0\n497,4352,\"I\",2250,1,1,4,46,29,18,2,\"b\",\"F\",103,2,2,1,0,1,1,2,2,1,1,0,6,0,2,2,NA,3,67,67,8,9,1,4,NA,NA,NA,71,81,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,92,118,210,5.804348,5.915254,11.7196,46,21,21,88,1,0,36,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,2.1,0,0,67,67,0\n498,4354,\"I\",2240,1,1,4,47,32,26,4,\"w\",\"M\",89,1,2,4,0,4,4,2,3,1,2,1,0,0,1,2,NA,3,NA,NA,1,6,2,4,45,5,31,110,93,NA,NA,NA,NA,NA,NA,NA,19,25,46,96,97,96,101,2,10,1,205,215,420,5.678049,5.623256,11.3013,44,24,19,87,1,0,32,1,0,83,93,85,97,87,90,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,3,\"w\",\"4\",\"3\",\"0\",\"3\",\"1\",\"2\",\"2\",0,1,4.2,1,1,87.3451176037398,101.635468159422,1\n500,4360,\"I\",2260,1,1,4,47,33,20,3,\"w\",\"F\",106,1,3,2,2,2,2,1,1,1,2,0,0,0,2,2,NA,3,73,73,9,9,1,2,27,4,17,88,89,47,30,16,60,76,85,78,4,14,18,88,93,84,83,2,5,1,210,209,419,5.747619,5.92823,11.67585,41,21,18,80,103,1,34,1,1,107,121,115,99,113,106,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,2,\"w\",\"4\",\"2\",\"2\",\"1\",\"1\",\"2\",\"1\",1,1,4.19,1,1,73,73,1\n501,4362,\"I\",1380,0,1,4,37,27,27,2,\"b\",\"M\",103,2,2,6,2,5,6,2,2,1,2,1,10,12,1,2,NA,1,NA,NA,2,6,1,1,33,9,17,62,85,31,10,21,18,77,91,82,5,9,15,64,63,70,44,2,7,1,29,61,90,5.517241,4.032787,9.550028,35,20,12,67,106,1,31,0,1,52,50,67,71,47,62,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"2\",\"2\",\"1\",\"2\",\"2\",0,1,0.9,0,0,78.8766152090506,75.4091810459264,0\n503,4364,\"F\",1740,0,1,4,43,30,18,3,\"b\",\"M\",126,2,2,1,0,2,1,2,2,1,1,0,0,0,2,2,NA,3,69,69,8,9,1,2,42,10,21,83,77,16,9,4,83,100,111,106,8,13,25,99,98,100,88,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,0,90,100,105,108,95,107,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,69,69,0\n504,4377,\"F\",2210,1,1,4,43,30,24,3,\"b\",\"M\",106,2,2,8,0,3,3,1,1,1,2,1,0,0,2,2,NA,3,66,66,8,9,1,2,23,3,14,81,63,10,3,5,90,87,108,97,6,17,23,87,82,95,84,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,78,84,96,88,79,90,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,66,66,0\n505,4378,\"I\",1900,0,1,4,44,30,18,2,\"b\",\"M\",121,2,2,4,0,3,3,2,2,1,2,1,0,0,2,2,NA,3,60,60,8,9,1,1,51,15,24,81,87,55,23,29,59,75,73,71,19,28,54,79,82,80,38,2,2,1,198,173,371,5.90404,5.728324,11.63236,39,19,21,79,1,0,35,1,1,68,65,99,98,64,98,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.71,1,1,60,60,0\n506,4379,\"I\",880,0,1,4,33,24,17,2,\"b\",\"F\",103,2,2,1,0,1,1,2,2,1,2,0,0,0,2,1,NA,3,71,71,7,8,1,4,68,21,29,108,93,39,20,8,77,86,93,88,8,13,27,91,93,90,55,2,10,1,131,161,292,5.427481,5.801242,11.22872,44,22,24,90,1,0,28,1,1,84,88,97,91,85,92,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,2.92,1,1,71,71,0\n507,4385,\"F\",800,0,1,4,34,27,26,2,\"w\",\"M\",89,1,1,1,0,1,1,3,2,1,0,0,20,20,2,1,NA,3,79,79,2,9,1,4,31,9,13,81,94,43,19,17,94,96,93,94,16,20,41,91,100,82,73,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,115,111,92,103,113,96,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,\"w\",\"4\",\"1\",\"0\",\"2\",\"1\",\"0\",\"3\",0,0,0,0,0,79,79,0\n508,4387,\"I\",1740,0,1,4,44,30,36,4,\"h\",\"M\",109,3,5,2,0,2,2,2,4,2,1,0,0,0,2,2,NA,3,61,61,5,7,2,4,52,9,26,64,69,22,7,11,74,74,95,82,9,10,20,85,85,87,65,2,6,1,186,195,381,5.876344,5.892308,11.76865,40,18,23,81,1,0,32,1,1,93,98,94,87,95,88,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,3,\"h\",\"4\",\"3\",\"0\",\"4\",\"2\",\"1\",\"2\",0,1,3.81,1,1,61,61,0\n509,4388,\"I\",1380,0,1,4,39,28,16,2,\"b\",\"M\",53,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,NA,NA,2,5,2,2,42,8,22,76,72,44,19,21,75,75,73,71,15,24,42,84,84,87,66,2,4,1,188,186,374,5.664894,5.596774,11.26167,39,24,21,84,1,0,32,0,0,79,90,90,78,84,81,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.74,0,0,61.3972087563719,57.4574665795468,0\n510,4390,\"F\",860,0,1,4,33,24,27,4,\"b\",\"F\",93,2,2,2,0,2,2,1,1,1,1,0,0,0,2,1,NA,3,69,69,6,8,2,4,34,4,17,76,85,19,9,4,65,95,92,93,19,12,39,96,94,99,93,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,0,101,114,111,98,106,104,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,69,69,0\n511,4393,\"I\",2500,1,1,4,46,31,30,2,\"b\",\"F\",90,2,2,3,0,3,3,3,4,1,1,0,0,0,2,2,NA,3,69,69,8,9,2,2,37,5,21,90,87,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,198,198,396,5.979798,5.954545,11.93434,39,17,22,78,1,0,37,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",1,1,3.96,0,0,69,69,0\n512,4398,\"F\",2200,1,1,4,45,32,23,2,\"b\",\"F\",110,2,2,4,0,4,4,2,1,1,1,0,0,0,2,2,NA,3,53,53,NA,NA,1,2,49,13,23,81,NA,44,23,14,47,84,82,81,13,18,33,83,87,82,58,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,72,69,94,84,69,87,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,53,53,0\n513,4399,\"I\",1880,0,1,4,44,29,18,2,\"b\",\"M\",97,2,2,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,92,92,8,8,1,1,66,18,37,81,69,34,14,13,45,81,86,82,5,8,19,70,80,65,53,2,4,1,135,96,231,5.844444,5.9375,11.78194,43,23,21,87,1,0,34,0,0,107,100,99,98,104,98,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,2.31,0,0,92,92,0\n514,4410,\"I\",2480,1,1,4,45,32,19,3,\"b\",\"M\",65,2,2,3,0,3,3,2,2,1,1,2,0,0,2,2,NA,3,89,89,8,7,1,2,29,6,15,81,93,NA,NA,NA,NA,NA,NA,NA,11,13,22,100,100,100,58,2,10,3,205,200,405,5.590244,5.5,11.09024,24,24,21,69,1,0,34,1,1,85,98,96,103,92,98,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,4.05,1,1,89,89,1\n515,4413,\"I\",1970,0,1,4,45,32,15,1,\"b\",\"M\",119,2,2,1,0,1,1,2,1,1,0,0,0,0,2,2,NA,3,55,55,9,9,1,2,52,13,26,76,NA,9,1,6,NA,NA,NA,NA,8,8,22,83,81,87,81,2,10,1,208,188,396,5.634615,5.851064,11.48568,40,22,19,81,1,0,34,NA,NA,92,99,93,97,95,94,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"0\",\"2\",0,1,3.96,1,0,55,55,0\n517,4415,\"F\",2420,1,1,4,45,33,19,3,\"b\",\"M\",110,2,2,2,2,1,2,2,2,1,1,0,0,0,2,2,NA,1,59,59,9,9,1,4,59,10,37,78,85,34,12,17,66,72,76,71,8,14,26,91,94,89,84,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,107,1,37,0,0,107,108,106,99,108,101,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"2\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,59,59,0\n518,4417,\"F\",940,0,1,4,37,26,27,2,\"b\",\"M\",111,2,2,2,2,2,2,2,4,1,2,1,4,0,2,2,NA,3,NA,NA,6,7,2,1,47,9,24,71,75,26,13,8,32,65,60,59,8,10,21,68,81,59,54,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,73,81,79,82,76,76,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"2\",\"4\",\"1\",\"2\",\"2\",0,0,0,1,1,92.3807855866427,67.7557944890173,0\n519,4431,\"I\",1140,0,1,4,36,27,26,1,\"w\",\"M\",94,1,3,4,0,3,3,3,2,1,2,1,20,0,2,1,NA,3,46,46,8,8,1,4,NA,NA,NA,73,81,78,36,24,56,80,69,72,27,23,51,61,75,52,51,1,3,2,0,117,117,0,3.623932,3.623932,29,7,19,55,1,0,33,0,0,77,61,76,72,61,70,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,\"w\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"3\",0,1,1.17,0,0,46,46,0\n520,4434,\"F\",2480,1,1,4,47,34,18,2,\"b\",\"M\",81,2,2,3,0,4,3,2,2,1,2,1,0,0,2,2,NA,3,NA,NA,7,9,1,2,29,4,15,52,NA,17,8,9,37,47,60,49,15,18,34,NA,NA,58,43,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,45,53,33,56,46,34,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,72.4691848335928,47.2563674525013,0\n521,4435,\"I\",2080,1,1,4,45,31,16,2,\"b\",\"F\",119,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,42,42,8,9,1,2,40,12,24,96,88,23,9,11,63,94,85,88,1,16,18,84,89,82,74,2,3,1,164,141,305,5.768293,5.879433,11.64773,45,21,23,89,1,0,33,0,0,85,94,92,98,89,94,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.05,0,0,42,42,0\n522,4438,\"F\",2360,1,1,4,47,31,17,2,\"b\",\"M\",92,2,2,2,0,3,2,2,2,1,3,1,0,0,2,2,NA,3,79,79,8,9,2,2,43,10,27,81,72,16,6,6,77,89,82,84,1,5,9,91,108,74,84,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,114,120,118,101,116,108,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,0,0,0,0,79,79,0\n523,4440,\"I\",2020,1,1,4,46,30,21,3,\"b\",\"M\",104,2,2,2,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,83,83,9,9,1,2,57,7,31,88,79,44,13,28,82,90,111,100,10,17,26,102,108,95,108,2,8,1,119,164,283,5.571429,5.884146,11.45557,47,22,22,91,1,0,31,1,1,115,113,117,124,113,122,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,2.83,1,1,83,83,0\n524,4450,\"F\",1060,0,1,4,37,26,19,2,\"b\",\"M\",76,2,2,2,0,2,2,2,4,4,2,0,0,0,2,1,NA,3,NA,NA,1,6,2,2,56,20,25,62,NA,NA,NA,NA,NA,NA,NA,NA,16,20,42,72,70,79,57,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,60,79,71,76,67,68,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"4\",\"2\",\"2\",0,0,0,1,0,67.910071331185,65.4214693655516,0\n525,4452,\"F\",880,0,1,4,34,25,15,1,\"b\",\"F\",99,2,2,1,0,1,1,2,2,1,1,0,2,0,1,1,NA,3,NA,NA,7,8,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,87.980030597022,72.0487527008214,0\n526,4454,\"I\",1370,0,1,4,40,27,25,1,\"h\",\"M\",101,3,3,5,0,4,4,1,1,2,1,1,0,0,2,2,NA,3,51,NA,5,8,1,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,114,0,114,5.77193,0,5.77193,45,13,0,58,1,0,31,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"1\",\"1\",0,1,1.14,0,0,51,51,0\n527,4459,\"I\",1715,0,1,4,48,30,26,3,\"b\",\"M\",136,2,2,2,0,1,1,3,2,4,2,1,0,0,2,2,NA,3,NA,NA,8,9,1,4,59,14,29,71,85,35,18,18,72,69,67,65,5,9,17,82,91,75,76,2,5,1,175,176,351,5.72,5.829545,11.54955,35,19,21,75,1,0,35,0,1,95,98,131,101,96,115,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"4\",\"2\",\"3\",0,1,3.51,0,0,87.5057124194362,45.2182297080845,0\n528,4473,\"F\",750,0,1,4,34,24,20,2,\"b\",\"F\",107,2,2,1,0,1,1,2,2,1,2,0,4,2,2,1,NA,3,52,52,1,5,1,1,71,20,32,66,79,37,20,11,66,77,80,76,20,7,30,75,80,74,58,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,0,1,89,93,90,97,91,92,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,52,52,0\n529,4481,\"F\",1640,0,1,4,NA,29,25,2,\"b\",\"M\",122,2,2,6,2,6,5,1,1,1,0,0,0,0,2,2,NA,1,49,49,7,8,1,2,66,14,29,73,77,25,16,10,60,71,82,74,9,20,29,76,76,79,53,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,110,1,34,1,1,71,71,89,84,70,83,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"2\",\"1\",\"1\",\"0\",\"1\",0,0,0,1,1,49,49,0\n531,4489,\"F\",1380,0,1,4,39,27,15,2,\"b\",\"M\",108,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,79,79,7,8,1,4,54,8,37,68,87,24,10,9,78,71,92,79,11,10,24,77,88,71,72,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,0,0,93,90,94,81,91,85,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,79,79,0\n532,4512,\"F\",820,0,1,4,32,26,24,3,\"h\",\"M\",110,3,3,4,0,1,1,1,1,2,1,0,0,0,2,1,NA,3,71,71,7,7,2,2,47,8,29,50,NA,27,12,12,41,55,80,63,14,17,34,70,72,73,46,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,72,79,90,84,74,84,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,2,\"h\",\"4\",\"2\",\"0\",\"1\",\"2\",\"1\",\"1\",0,0,0,1,1,71,71,0\n533,4513,\"F\",2280,1,1,4,45,29,20,2,\"h\",\"M\",74,3,3,1,0,3,1,2,1,2,1,0,2,0,2,2,NA,3,61,61,7,8,1,2,61,19,32,50,81,38,18,19,83,82,92,86,19,24,45,81,83,81,77,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,66,88,94,91,86,90,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"1\",\"2\",0,0,0,0,0,61,61,0\n534,4523,\"F\",2080,1,1,4,40,32,19,3,\"b\",\"M\",87,2,2,2,0,3,2,2,2,1,2,0,0,0,2,2,NA,3,68,68,0,5,2,1,58,7,38,67,NA,39,16,15,41,66,91,76,5,16,25,86,84,91,56,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,91,96,103,94,93,97,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,68,68,0\n535,4524,\"I\",2280,1,1,4,49,33,27,2,\"b\",\"M\",105,2,2,4,0,4,5,1,1,1,1,1,20,0,2,2,NA,3,70,70,4,7,2,4,37,11,22,95,79,19,5,8,86,96,103,99,8,12,27,91,99,83,89,2,7,1,196,152,348,5.683673,5.842105,11.52578,47,21,21,89,112,1,34,0,0,109,99,97,124,104,111,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.48,0,0,70,70,0\n537,4526,\"F\",1920,0,1,4,42,30,17,2,\"b\",\"M\",116,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,65,65,NA,7,1,4,78,16,44,59,46,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,65,65,0\n538,4528,\"F\",2440,1,1,4,46,33,20,2,\"b\",\"M\",98,2,2,2,0,3,2,3,4,1,2,0,0,0,2,2,NA,3,70,70,8,9,1,4,84,24,49,43,NA,30,10,15,57,86,103,93,3,11,15,89,89,91,57,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,86,82,97,97,82,96,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"1\",\"2\",\"3\",0,0,0,0,0,70,70,0\n539,4532,\"F\",840,0,1,4,35,25,34,2,\"h\",\"M\",119,3,3,5,0,3,3,1,1,2,2,0,0,0,2,2,NA,3,66,66,7,8,2,4,55,8,28,48,NA,36,14,18,34,57,103,77,9,20,31,78,72,90,55,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,93,94,115,113,94,114,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"1\",\"2\",\"2\",\"1\",0,0,0,0,0,66,66,0\n540,4534,\"F\",840,0,1,4,35,24,26,3,\"b\",\"F\",103,2,2,3,0,3,2,2,1,1,1,0,0,0,2,1,NA,3,NA,NA,8,9,2,4,95,24,44,62,NA,75,35,26,59,61,63,58,46,61,109,53,56,58,54,2,6,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,90,87,79,78,88,75,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,87.1901147368674,66.7457750670483,0\n541,4537,\"F\",1480,0,1,4,41,28,16,2,\"b\",\"F\",111,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,55,55,8,9,2,4,54,12,30,78,79,12,4,3,67,90,97,93,5,3,11,91,85,99,56,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,79,79,122,94,78,106,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,55,55,0\n542,4539,\"F\",1900,0,1,4,44,30,17,2,\"b\",\"F\",115,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,64,64,7,9,1,2,36,5,20,81,83,39,19,13,86,110,101,106,7,21,35,102,104,100,103,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,119,110,108,111,115,110,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,64,64,0\n543,4546,\"F\",980,0,1,4,35,25,22,3,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,3,0,0,0,2,1,NA,3,70,70,4,7,2,4,58,10,31,73,85,32,14,9,85,92,95,93,19,20,48,85,95,77,89,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,95,110,85,94,100,88,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,2,\"b\",\"4\",\"2\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,70,70,0\n544,4549,\"I\",2000,0,1,4,45,30,21,2,\"b\",\"F\",100,2,2,3,0,2,2,2,4,1,3,0,5,0,1,2,NA,3,65,65,3,7,1,2,50,10,26,83,89,36,13,12,85,92,96,93,15,27,47,90,101,80,94,2,5,1,127,143,270,5.559055,5.608392,11.16745,45,25,19,89,1,0,33,1,1,115,128,117,105,120,111,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"4\",\"1\",\"3\",\"2\",1,1,2.7,1,1,65,65,0\n545,4555,\"F\",1760,0,1,4,43,31,23,2,\"b\",\"M\",101,2,2,6,0,4,4,2,2,1,1,4,20,0,2,2,NA,3,58,58,3,7,2,1,74,16,42,73,NA,56,25,27,57,75,73,71,13,28,47,84,81,90,71,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,70,69,85,106,67,94,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,58,58,0\n546,4571,\"F\",1380,0,1,4,41,26,27,2,\"h\",\"F\",88,3,3,3,0,2,2,3,2,1,2,0,20,0,2,2,NA,3,100,100,6,8,1,2,68,14,39,86,93,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"3\",1,0,0,0,0,100,100,0\n547,4581,\"F\",2340,1,1,4,42,32,22,2,\"b\",\"F\",90,2,2,3,0,3,3,3,2,1,3,0,0,0,2,2,NA,3,77,77,7,7,1,2,82,17,54,74,93,13,7,2,85,89,74,80,6,30,40,82,89,78,87,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,95,98,97,91,96,92,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"3\",\"3\",1,0,0,0,0,77,77,0\n548,4582,\"F\",1840,0,1,4,43,30,25,1,\"b\",\"M\",125,2,2,3,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,NA,NA,8,8,1,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,0,0,72.6902484868685,75.4104396251884,0\n549,4584,\"I\",2150,1,1,4,38,30,21,2,\"b\",\"F\",100,2,2,4,0,3,3,1,1,1,2,2,0,0,2,2,NA,3,NA,NA,7,8,1,4,51,10,32,62,NA,17,6,7,43,74,67,68,5,13,18,64,66,66,66,2,5,1,0,0,0,0,0,0,16,0,0,16,1,0,36,0,1,86,84,90,94,84,90,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,0,0,0,63.7603153283605,61.8191609625607,0\n550,4597,\"I\",1120,0,1,4,37,26,34,2,\"b\",\"M\",104,2,2,5,0,4,3,4,2,1,1,2,8,0,2,1,NA,3,51,51,7,7,1,2,15,4,7,66,NA,8,2,5,43,61,52,53,3,11,16,64,75,57,85,2,2,1,73,147,220,5.767123,5.870748,11.63787,37,17,22,76,1,0,31,0,1,57,48,52,70,49,54,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,\"b\",\"4\",\"1\",\"0\",\"2\",\"1\",\"1\",\"4\",0,1,2.2,0,0,51,51,0\n551,4604,\"I\",2140,1,1,4,40,31,16,2,\"w\",\"M\",111,1,3,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,75,75,6,8,1,4,52,9,33,73,53,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3,193,175,368,5.606218,5.76,11.36622,44,22,21,87,1,0,35,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,\"w\",\"4\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.68,0,0,75,75,0\n552,4607,\"F\",2460,1,1,4,47,33,21,4,\"b\",\"M\",93,2,2,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,72,72,8,9,1,2,13,5,7,76,63,12,4,6,70,82,95,87,2,13,17,84,89,81,74,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,91,88,108,101,89,104,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,72,72,0\n553,4609,\"F\",2380,1,1,4,47,32,22,3,\"w\",\"M\",67,1,3,2,0,2,2,3,4,1,1,0,0,0,2,2,NA,3,72,72,6,7,1,4,55,9,28,52,NA,40,21,15,62,70,91,78,17,13,32,77,82,75,80,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,67,48,76,78,54,73,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,2,\"w\",\"4\",\"2\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,1,1,72,72,0\n554,4610,\"F\",1280,0,1,4,38,26,20,3,\"w\",\"F\",96,1,1,1,0,1,1,2,1,1,1,0,5,0,2,1,NA,3,NA,NA,7,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,2,\"w\",\"4\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,69.62682033751,64.95998285128,0\n555,4620,\"F\",2200,1,1,4,45,32,22,2,\"h\",\"F\",89,3,3,4,0,4,4,2,2,2,2,0,0,0,2,2,NA,3,56,NA,8,9,1,2,23,8,11,50,NA,22,9,11,37,49,104,73,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,1,\"h\",\"4\",\"1\",\"0\",\"2\",\"2\",\"2\",\"2\",1,0,0,0,0,56,56,0\n556,4641,\"F\",2230,1,1,4,46,33,27,4,\"b\",\"F\",113,2,2,4,0,4,4,2,2,1,2,2,10,0,1,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,34,0,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,3,\"b\",\"4\",\"3\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,92.49885090573,58.7127039341822,0\n557,4644,\"I\",2400,1,1,4,48,28,31,3,\"h\",\"F\",93,3,3,4,0,2,2,3,2,1,2,0,0,0,2,2,NA,3,NA,NA,7,8,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,5,0,0,5,1,0,34,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,2,\"h\",\"4\",\"2\",\"0\",\"2\",\"1\",\"2\",\"3\",1,1,0,0,0,80.5648626917525,72.1838630721732,0\n558,5050,\"F\",1570,0,1,5,41,NA,25,3,\"b\",\"F\",105,2,2,3,0,2,3,2,1,1,1,0,0,0,2,2,NA,3,79,79,8,9,1,2,57,13,34,73,77,34,15,12,96,106,100,104,5,7,16,105,101,108,90,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,100,108,108,117,103,114,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,79,79,0\n559,5055,\"F\",1500,0,1,5,40,27,20,3,\"b\",\"F\",103,2,2,2,0,1,2,2,1,1,1,0,0,1,2,2,NA,3,62,62,8,8,1,2,33,3,24,71,58,23,8,10,85,87,84,84,2,7,11,70,84,60,78,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,97,111,92,95,103,92,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,62,62,0\n560,5056,\"I\",1970,0,1,5,43,30,27,3,\"b\",\"M\",82,2,2,3,0,3,3,2,4,1,1,0,0,0,2,2,NA,3,62,62,4,7,2,1,49,16,26,88,87,18,7,7,97,85,85,84,2,2,5,82,95,71,89,2,2,1,182,189,371,5.78022,5.936508,11.71673,42,19,18,79,1,0,32,1,1,NA,104,99,91,NA,94,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.71,1,1,62,62,0\n561,5057,\"F\",840,0,1,5,36,24,26,3,\"b\",\"M\",96,2,2,3,0,3,3,2,4,1,1,0,0,0,2,2,NA,3,64,NA,9,7,1,2,38,8,20,64,72,19,10,8,62,87,70,77,4,10,15,70,76,69,69,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,0,0,77,61,62,71,67,60,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,64,64,0\n562,5059,\"F\",1170,0,1,5,38,25,27,4,\"b\",\"M\",92,2,2,2,0,2,2,1,1,1,1,0,25,1,2,2,NA,3,96,96,2,7,1,1,36,4,25,100,96,17,6,9,110,111,96,104,9,11,22,87,94,81,99,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,86,NA,91,98,NA,94,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,96,96,0\n563,5062,\"F\",1690,0,1,5,44,31,31,5,\"w\",\"F\",108,1,1,2,0,2,2,1,1,1,1,0,0,5,2,2,NA,3,125,125,8,9,2,4,20,4,10,132,122,31,15,9,117,129,133,134,9,4,16,123,125,117,110,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,119,129,108,129,123,120,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,4,\"w\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,125,125,0\n564,5063,\"I\",1200,0,1,5,39,27,31,3,\"b\",\"M\",105,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,66,66,8,9,2,1,49,9,34,108,98,22,6,8,104,104,124,115,7,8,21,92,89,98,110,2,5,1,201,209,410,6.089552,6.186603,12.27616,34,17,22,73,1,0,28,1,1,123,117,93,91,120,92,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,4.1,1,1,66,66,1\n565,5073,\"I\",1580,0,1,5,31,29,30,2,\"b\",\"M\",93,2,2,2,0,3,2,2,1,1,2,0,10,0,2,2,NA,3,NA,NA,8,8,2,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,1,0,0,1,1,0,33,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,1,0,0,1,80.4995521201456,64.7923812591731,0\n567,5078,\"F\",1250,0,1,5,39,28,18,3,\"b\",\"F\",92,2,2,2,2,1,2,2,2,1,1,0,0,0,2,2,NA,1,66,66,7,8,2,4,26,4,14,90,81,27,10,13,92,95,101,98,8,17,35,86,91,82,85,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,113,1,35,1,1,NA,120,92,103,NA,96,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"2\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,66,66,0\n568,5079,\"F\",2190,1,1,5,42,30,17,2,\"b\",\"M\",99,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,56,56,9,9,1,2,69,13,36,78,66,27,9,11,81,81,91,84,4,13,22,92,100,84,97,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,NA,NA,92,130,121,120,106,121,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,1,56,56,0\n569,5082,\"I\",2430,1,1,5,32,32,29,3,\"w\",\"F\",46,5,5,3,0,3,3,1,1,1,1,1,0,0,2,2,NA,3,65,65,8,9,1,4,71,21,31,83,85,42,21,9,86,101,101,101,12,10,28,95,97,95,92,2,7,1,186,191,377,5.817204,5.832461,11.64967,28,19,19,66,1,0,37,1,1,101,113,84,105,105,94,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,2,\"w\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.77,1,1,65,65,0\n571,5087,\"F\",2140,1,1,5,50,31,34,4,\"b\",\"F\",107,2,2,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,90,90,9,10,2,1,23,3,16,93,87,8,2,4,93,105,105,106,1,5,8,109,123,94,85,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,115,1,35,1,1,119,120,139,61,118,91,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,90,90,0\n572,5092,\"F\",1890,0,1,5,45,31,25,3,\"b\",\"F\",115,2,2,3,0,3,3,2,1,1,1,0,0,0,2,2,NA,3,77,77,8,9,1,2,34,7,22,76,77,22,9,8,57,74,86,78,2,10,10,86,90,83,58,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,80,84,71,87,81,75,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,77,77,0\n573,5105,\"F\",2360,1,1,5,46,32,17,2,\"b\",\"F\",97,2,2,1,1,1,1,2,2,1,1,0,20,0,2,2,NA,3,40,40,9,9,1,2,49,14,28,73,66,33,8,21,45,67,74,68,4,23,31,70,76,69,61,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,NA,NA,91,96,94,91,93,90,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"1\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,0,40,40,0\n574,5121,\"I\",1700,0,1,5,42,27,22,2,\"b\",\"F\",100,2,2,2,0,2,2,2,4,1,2,0,4,1,2,2,NA,3,66,66,9,9,1,2,4,0,2,105,81,68,25,35,95,100,116,109,22,34,55,104,113,94,86,2,4,1,166,186,352,5.76506,5.913978,11.67904,33,16,13,62,1,0,34,1,1,88,88,94,106,87,98,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,3.52,1,1,66,66,0\n575,5127,\"I\",2210,1,1,5,46,30,27,2,\"b\",\"F\",117,2,2,5,0,4,4,1,1,1,1,2,0,0,2,2,NA,3,61,61,8,9,1,2,9,2,2,100,85,10,1,7,71,87,91,88,8,12,21,89,92,87,79,2,3,1,171,181,352,5.877193,5.966851,11.84404,34,19,19,72,1,0,34,0,0,92,94,99,91,93,94,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.52,0,0,61,61,0\n576,5137,\"F\",2160,1,1,5,45,29,18,2,\"b\",\"M\",112,2,2,3,0,3,3,2,4,1,2,1,10,0,2,2,NA,3,75,75,8,9,2,2,58,12,31,66,NA,NA,NA,NA,NA,NA,NA,NA,3,5,10,77,76,81,60,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,70,86,86,76,76,78,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,75,75,0\n577,5143,\"I\",946,0,1,5,36,26,16,2,\"b\",\"F\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,61,61,8,8,2,3,11,2,6,88,85,23,8,8,88,80,81,78,7,6,16,77,88,70,64,1,5,1,215,217,432,5.860465,5.857143,11.71761,37,19,22,78,118,1,33,NA,NA,126,111,115,98,119,106,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,4.32,0,1,61,61,1\n578,5161,\"F\",1710,0,1,5,45,29,23,4,\"b\",\"F\",117,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,83,83,8,9,1,4,30,1,21,88,85,26,8,9,18,82,95,87,4,27,36,86,82,93,84,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,84,96,76,78,89,73,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,83,83,0\n580,5170,\"F\",946,0,1,5,33,24,19,2,\"b\",\"F\",97,2,2,2,0,2,2,2,2,1,1,1,0,0,2,2,NA,3,47,47,8,8,1,4,35,8,19,64,69,27,12,11,56,72,73,70,4,9,17,83,83,84,60,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,0,0,96,96,97,94,96,94,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,47,47,0\n581,5171,\"F\",2460,1,1,5,47,30,16,2,\"b\",\"F\",98,2,2,1,0,1,1,2,2,1,0,0,0,0,2,2,NA,3,50,50,9,9,1,4,65,22,36,57,58,55,26,29,22,56,60,54,0,0,0,56,58,63,28,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,NA,NA,71,78,74,71,73,67,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,1,1,50,50,0\n582,5172,\"I\",1730,0,1,5,44,28,34,3,\"b\",\"M\",122,2,2,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,6,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,14,0,0,14,1,0,36,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,79.0881626986354,80.7732052354166,0\n583,5182,\"F\",900,0,1,5,33,25,31,5,\"b\",\"F\",85,2,2,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,131,131,5,8,2,4,11,6,1,43,NA,10,4,0,18,47,45,44,NA,NA,NA,40,46,46,19,1,9,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,120,1,27,1,1,20,48,28,0,29,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,131,131,0\n585,5191,\"F\",2190,1,1,5,NA,NA,16,2,\"b\",\"F\",32,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,78,78,7,7,2,4,63,14,25,81,85,37,19,9,72,81,110,94,17,17,39,77,73,84,68,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,NA,NA,81,89,92,91,84,90,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,78,78,0\n587,5197,\"I\",2180,1,1,5,45,32,24,2,\"b\",\"M\",111,2,2,2,2,1,2,2,2,1,0,0,0,0,2,2,NA,1,68,68,8,9,2,3,60,14,36,93,92,4,1,3,67,80,85,81,1,2,4,83,81,89,88,2,4,1,121,150,271,5.652893,5.786667,11.43956,38,14,15,67,121,1,35,0,1,83,76,71,81,78,72,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"2\",\"2\",\"1\",\"0\",\"2\",0,1,2.71,0,0,68,68,0\n588,5198,\"F\",936,0,1,5,35,25,31,3,\"b\",\"F\",100,2,2,3,0,4,3,2,2,1,1,1,2,0,2,2,NA,3,79,79,7,8,1,2,48,13,23,62,NA,8,7,1,32,52,74,59,12,11,22,69,78,65,57,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,1,94,94,92,82,93,84,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,79,79,0\n589,5201,\"I\",2150,1,1,5,49,31,24,3,\"b\",\"M\",113,2,2,3,0,3,3,1,1,1,2,0,40,28,2,2,NA,3,60,60,9,9,1,2,61,12,34,95,98,27,4,17,69,79,85,80,4,14,21,81,83,82,56,2,5,1,202,213,415,5.861386,6.00939,11.87078,37,16,18,71,1,0,38,1,1,84,89,99,103,86,100,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,4.15,1,1,60,60,1\n590,5204,\"I\",2380,1,1,5,47,34,19,4,\"b\",\"F\",90,2,2,1,0,1,1,2,2,1,1,0,7,0,2,2,NA,3,94,94,8,9,2,4,59,13,30,93,93,55,18,22,82,100,104,102,14,26,49,105,114,94,102,2,3,1,210,202,412,6.852381,6.831683,13.68406,42,20,20,82,1,0,36,1,1,105,117,97,117,111,106,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,4.12,1,1,94,94,1\n591,5209,\"F\",1750,0,1,5,46,28,42,4,\"b\",\"F\",108,2,2,4,0,4,3,1,1,1,1,3,0,0,2,2,NA,3,87,87,7,9,2,4,15,1,9,73,90,20,7,6,87,94,89,91,1,8,14,86,85,90,80,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,97,96,92,85,97,86,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,87,87,0\n592,5213,\"I\",2400,1,1,5,50,31,22,3,\"b\",\"M\",106,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,89,89,9,9,1,2,57,7,34,110,98,35,7,23,78,90,107,98,5,12,18,94,101,87,100,2,7,1,185,188,373,5.794595,5.792553,11.58715,27,17,15,59,1,0,38,1,1,99,107,111,108,103,110,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.73,1,1,89,89,0\n593,5215,\"I\",2130,1,1,5,49,31,33,2,\"b\",\"M\",114,2,2,6,0,6,5,2,4,1,1,3,0,0,2,2,NA,3,78,78,8,9,2,2,8,2,3,86,92,43,22,10,69,71,61,63,5,9,18,70,87,57,65,2,7,1,187,192,379,5.780749,5.760417,11.54117,45,17,20,82,1,0,35,0,0,94,83,89,78,88,80,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.79,0,0,78,78,0\n594,5217,\"I\",1690,0,1,5,42,27,23,2,\"b\",\"F\",105,2,2,4,0,4,4,2,2,1,0,0,20,0,2,2,NA,3,NA,NA,1,8,1,2,11,3,2,90,NA,8,2,1,82,87,86,86,9,10,20,81,88,77,72,2,6,1,184,220,404,5.690217,5.754545,11.44476,32,15,22,69,1,0,33,0,1,97,108,83,99,101,90,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,1,4.04,0,0,87.4247211736708,75.4461329288707,1\n596,5219,\"I\",1760,0,1,5,40,31,33,2,\"b\",\"M\",104,2,2,5,2,4,5,2,2,1,0,0,10,0,2,2,NA,1,90,90,6,7,1,2,29,7,15,83,NA,9,3,5,91,79,80,77,1,6,11,102,102,102,104,2,1,1,155,176,331,5.845161,5.835227,11.68039,37,17,21,75,123,1,34,1,1,115,113,97,105,113,100,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"2\",\"2\",\"1\",\"0\",\"2\",0,1,3.31,1,1,90,90,0\n597,5223,\"F\",2180,1,1,5,48,31,26,4,\"b\",\"F\",87,2,2,2,0,2,2,2,2,1,1,1,10,0,2,2,NA,3,86,86,3,8,2,4,36,10,20,78,72,11,5,1,84,82,100,90,3,2,8,90,95,86,102,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,106,116,101,93,110,97,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,86,86,0\n598,5227,\"F\",2100,1,1,5,46,31,23,3,\"b\",\"F\",119,2,2,2,0,2,2,2,4,1,2,0,3,1,2,2,NA,3,65,65,8,9,1,2,21,1,11,83,79,38,20,10,90,100,100,100,1,5,11,101,104,99,101,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,115,120,99,91,117,94,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"2\",\"2\",1,0,0,1,1,65,65,0\n599,5243,\"F\",2370,1,1,5,48,32,21,3,\"b\",\"M\",100,2,2,2,0,2,2,2,2,1,1,1,1,0,2,2,NA,3,72,72,8,8,1,2,65,14,44,93,89,34,12,22,82,91,86,88,18,34,59,90,98,82,56,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,94,102,101,100,97,101,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,72,72,0\n600,5244,\"F\",1690,0,1,5,43,28,18,3,\"b\",\"F\",107,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,83,83,8,9,1,2,20,2,10,100,69,22,9,8,88,109,84,96,0,11,11,86,90,84,89,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,96,106,97,125,100,111,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,0,0,83,83,0\n601,5245,\"F\",1640,0,1,5,42,30,20,3,\"b\",\"F\",105,2,2,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,79,79,6,9,2,1,44,7,29,93,75,31,17,11,98,89,103,95,5,17,24,86,92,81,77,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,128,120,113,97,124,103,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,79,79,0\n602,5248,\"F\",2050,1,1,5,44,29,24,4,\"w\",\"M\",113,4,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,83,83,7,8,2,1,64,17,36,83,94,53,20,24,88,84,110,96,23,28,53,104,100,107,81,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,114,117,113,97,115,103,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,3,\"w\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,83,83,0\n603,5250,\"I\",1600,0,1,5,42,28,20,3,\"b\",\"M\",119,2,2,1,0,1,1,2,4,1,1,0,0,0,2,2,NA,3,68,68,8,9,2,4,47,11,28,100,81,24,15,9,81,79,86,81,10,6,17,98,105,91,106,2,3,1,191,155,346,5.780105,5.696774,11.47688,33,16,17,66,1,0,35,1,1,84,93,103,111,88,107,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.46,1,1,68,68,0\n604,5254,\"F\",740,0,1,5,33,23,19,2,\"b\",\"F\",96,2,2,1,0,1,1,2,2,1,1,0,1,0,2,2,NA,3,NA,NA,3,5,2,4,16,3,9,115,83,15,8,2,97,105,104,105,1,0,4,101,110,91,106,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,136,1,26,0,0,117,117,79,91,117,82,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,92.7541545272213,60.7327890715712,0\n605,5256,\"F\",1980,0,1,5,44,29,18,3,\"b\",\"M\",93,2,2,1,0,1,1,2,2,1,1,0,10,0,2,2,NA,3,94,94,8,9,1,2,45,6,26,81,81,31,13,13,92,85,88,85,5,16,22,81,82,83,88,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,109,111,74,108,110,87,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,94,94,0\n606,5257,\"F\",2350,1,1,5,49,33,26,3,\"b\",\"M\",109,2,2,2,0,2,1,2,2,1,1,1,0,1,2,2,NA,3,87,87,9,9,1,2,75,18,38,78,89,40,23,14,86,96,95,95,15,20,39,96,102,90,89,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,93,101,88,110,96,97,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,87,87,0\n607,5262,\"F\",2040,1,1,5,48,28,26,4,\"b\",\"M\",93,2,2,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,104,104,7,8,1,2,34,1,25,111,87,41,11,24,98,111,123,119,14,16,32,113,114,111,113,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,117,123,136,131,119,136,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,104,104,0\n608,5264,\"I\",2340,1,1,5,46,30,35,5,\"w\",\"F\",67,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,120,120,9,9,1,2,35,7,16,120,106,21,10,8,102,131,129,133,2,8,12,120,128,106,109,2,9,1,0,0,0,0,0,0,44,17,12,73,1,0,31,1,1,140,126,108,117,132,113,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,4,\"w\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,120,120,0\n609,5290,\"F\",2340,1,1,5,46,31,21,2,\"b\",\"F\",109,2,2,2,0,2,2,2,2,1,1,0,0,0,2,2,NA,3,91,91,9,9,1,2,32,9,18,88,89,23,6,12,63,81,84,81,2,9,17,71,73,73,53,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,79,82,90,78,79,81,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,91,91,0\n610,5291,\"I\",1600,0,1,5,42,28,27,4,\"b\",\"M\",106,2,2,2,0,2,2,2,1,1,1,1,20,0,2,2,NA,3,86,86,7,9,1,2,69,12,37,103,96,57,22,27,100,97,96,96,11,15,33,107,110,103,101,2,8,1,208,219,427,7.730769,7.141553,14.87232,38,15,20,73,1,0,33,1,1,95,103,108,117,98,113,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",0,1,4.27,1,1,86,86,1\n611,5293,\"I\",1550,0,1,5,42,29,17,2,\"b\",\"F\",95,2,2,2,0,2,2,2,2,1,1,0,0,0,2,2,NA,3,73,73,1,3,2,4,79,14,42,93,90,50,25,17,97,79,80,77,25,33,56,85,98,74,102,2,6,1,34,0,34,5.764706,0,5.764706,43,8,0,51,1,0,30,0,0,80,93,90,91,86,88,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,0.34,0,0,73,73,0\n612,5294,\"I\",2280,1,1,5,47,31,23,3,\"b\",\"F\",72,2,1,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,8,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,27,0,0,27,2,0,35,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,0,1,1,61.51785319467,70.5528941734179,0\n613,5305,\"I\",2280,1,1,5,45,29,21,2,\"b\",\"M\",113,2,2,2,0,1,2,2,2,1,3,0,0,0,2,2,NA,3,49,49,8,9,1,2,63,16,36,95,75,42,20,19,77,79,80,77,5,11,19,69,71,72,65,2,5,1,130,145,275,5.576923,5.268966,10.84589,30,18,21,69,1,0,33,0,1,70,69,71,81,67,72,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,2.75,0,0,49,49,0\n614,5307,\"I\",1880,0,1,5,47,30,18,2,\"b\",\"F\",76,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,62,62,6,8,1,2,117,30,60,81,66,NA,NA,NA,NA,NA,NA,NA,15,35,54,81,82,83,85,2,5,1,17,0,17,5.764706,0,5.764706,30,4,0,34,1,0,31,0,0,88,92,93,97,89,94,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,0.17,0,0,62,62,0\n615,5322,\"F\",2420,1,1,5,51,34,23,5,\"b\",\"M\",72,2,2,1,0,1,1,1,1,1,1,0,0,2,2,2,NA,3,92,92,8,9,2,4,41,8,23,108,97,31,10,11,109,110,118,115,16,10,32,115,127,99,134,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,0,145,136,148,148,139,150,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,92,92,0\n616,5323,\"I\",2200,1,1,5,46,30,27,2,\"b\",\"M\",66,2,2,3,0,3,3,1,4,1,3,0,8,0,2,2,NA,3,56,56,9,9,1,4,22,7,12,68,81,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,137,176,313,5.759124,5.818182,11.57731,23,10,20,53,1,0,36,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"4\",\"1\",\"3\",\"1\",0,1,3.13,0,0,56,56,0\n617,5324,\"F\",2080,1,1,5,46,31,24,2,\"h\",\"M\",101,3,3,3,0,3,3,3,2,1,2,0,20,1,2,2,NA,3,NA,NA,9,9,1,4,49,18,24,57,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,\"h\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"3\",0,0,0,0,0,79.6769629645437,77.3539491533962,0\n618,5327,\"F\",1730,0,1,5,41,29,14,2,\"b\",\"M\",98,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,80,80,5,6,1,2,28,7,14,83,83,22,9,11,43,70,82,73,16,17,34,97,95,100,87,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,93,96,97,97,94,96,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,80,80,0\n619,5331,\"F\",2140,1,1,5,46,30,23,2,\"b\",\"M\",121,2,2,3,0,3,3,1,1,1,1,0,10,1,2,2,NA,3,NA,NA,7,9,1,2,46,11,29,83,58,13,8,5,91,77,67,70,19,28,45,68,76,63,70,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,72,73,71,65,71,62,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,63.6301773831416,72.8519979636232,0\n620,5332,\"I\",2080,1,1,5,45,30,16,2,\"b\",\"F\",125,2,2,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,57,57,9,9,1,4,42,8,26,76,63,21,11,7,56,69,58,60,6,18,27,66,65,72,69,2,4,1,2,0,2,6,0,6,33,3,0,36,1,0,37,NA,NA,72,56,59,70,61,58,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,0.02,0,0,57,57,0\n621,5333,\"I\",2400,1,1,5,46,30,25,2,\"b\",\"M\",106,2,2,3,0,3,3,2,2,1,2,1,6,0,2,2,NA,3,67,67,8,9,1,2,62,17,30,90,63,25,7,16,74,75,82,76,7,9,17,81,82,83,71,2,3,1,171,193,364,5.97076,5.88601,11.85677,32,15,20,67,1,0,36,0,1,93,96,103,106,94,104,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.64,0,0,67,67,0\n622,5334,\"I\",2480,1,1,5,47,31,23,3,\"b\",\"F\",101,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,89,89,9,9,1,2,45,9,23,98,75,30,13,12,95,94,91,91,3,1,4,86,83,91,83,2,7,1,206,211,417,6.76699,6.78673,13.55372,38,19,21,78,1,0,37,1,1,90,94,77,99,91,85,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,4.17,1,1,89,89,1\n623,5338,\"I\",1230,0,1,5,37,26,22,2,\"b\",\"M\",106,2,2,2,0,2,2,2,2,1,2,1,4,0,2,2,NA,3,73,73,7,9,1,2,34,6,22,93,75,40,18,18,84,96,92,93,19,40,69,79,72,91,80,2,5,1,171,195,366,5.760234,5.902564,11.6628,39,16,26,81,1,0,28,0,0,91,96,90,84,93,84,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.66,0,0,73,73,0\n624,5339,\"I\",1550,0,1,5,42,28,26,2,\"b\",\"M\",97,2,2,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,56,56,8,8,1,2,52,14,26,90,98,22,8,10,87,87,91,88,2,2,7,94,101,87,64,2,6,1,147,191,338,5.333333,5.157068,10.4904,35,20,19,74,1,0,30,0,0,117,96,120,108,106,114,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.38,0,0,56,56,0\n625,5353,\"I\",1530,0,1,5,40,27,36,5,\"b\",\"F\",97,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,123,123,4,7,2,2,43,10,20,86,93,6,1,1,90,102,80,91,2,5,11,85,101,71,88,1,9,2,175,95,270,6.645714,6.663158,13.30887,33,26,16,75,1,0,30,1,1,107,108,120,96,108,106,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.7,1,1,123,123,0\n627,5357,\"I\",1720,0,1,5,44,31,29,4,\"b\",\"M\",116,2,2,2,2,1,2,1,1,1,1,0,6,0,2,2,NA,1,68,68,9,9,2,2,22,4,12,93,92,20,8,6,105,75,82,76,4,8,14,65,73,63,75,2,9,1,148,213,361,6.344595,6.840376,13.18497,32,19,25,76,126,1,34,1,1,80,69,67,77,73,66,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",0,1,3.61,1,1,68,68,0\n628,5358,\"F\",1440,0,1,5,38,28,18,2,\"b\",\"M\",105,2,2,2,0,2,1,2,2,1,3,1,6,1,1,2,NA,3,49,49,8,8,1,4,84,28,44,71,46,28,16,9,67,75,70,70,5,11,20,81,90,75,86,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,75,82,80,101,77,88,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,0,0,0,0,49,49,0\n629,5370,\"F\",1700,0,1,5,43,28,19,2,\"b\",\"M\",105,2,2,2,0,2,2,2,2,1,2,1,0,6,2,2,NA,3,NA,NA,3,6,1,2,57,21,35,71,79,36,14,19,40,77,85,79,6,14,20,84,84,86,62,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,106,109,121,93,107,106,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,88.0205883984536,85.0525723382689,0\n630,5373,\"F\",1780,0,1,5,42,28,24,4,\"b\",\"F\",103,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,6,9,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,0,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,79.5607445772782,97.1664403719676,0\n631,5378,\"F\",1690,0,1,5,41,29,22,2,\"b\",\"M\",100,2,2,3,1,3,4,1,1,1,2,0,0,0,2,2,NA,1,59,59,9,9,2,1,64,19,32,71,79,14,8,5,71,75,91,81,2,2,5,77,76,81,72,2,3,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,129,1,33,1,1,78,74,84,86,74,83,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"1\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,59,59,0\n633,5380,\"F\",1130,0,1,5,35,26,16,2,\"b\",\"F\",112,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,63,63,5,8,2,3,24,4,10,93,75,7,3,1,97,95,99,96,1,3,4,86,93,81,85,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,96,103,103,101,99,101,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,63,63,0\n634,5383,\"F\",1750,0,1,5,40,28,16,2,\"b\",\"F\",108,2,2,1,1,1,2,2,2,1,1,0,0,0,2,2,NA,1,65,65,8,9,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,133,1,33,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"1\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,1,65,65,0\n636,5387,\"I\",2360,1,1,5,48,32,28,5,\"b\",\"M\",108,2,2,2,0,2,2,1,1,1,0,0,5,1,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,2,0,0,2,1,0,34,NA,NA,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"0\",\"1\",0,1,0,1,0,91.6945486020012,116.043124690624,0\n637,5388,\"I\",2480,1,1,5,46,29,29,3,\"b\",\"F\",101,2,2,1,0,1,1,3,2,1,2,0,20,0,2,2,NA,3,63,63,9,9,1,2,70,15,38,105,94,21,9,9,71,79,95,85,18,47,66,90,89,94,83,2,6,1,126,131,257,5.761905,5.89313,11.65503,30,15,18,63,1,0,36,1,1,81,80,93,86,80,87,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"2\",\"3\",1,1,2.57,1,1,63,63,0\n638,5401,\"I\",2210,1,1,5,47,32,32,5,\"b\",\"F\",109,2,2,2,0,1,2,1,1,1,1,2,0,0,2,2,NA,3,75,75,8,9,2,2,29,3,15,125,108,18,11,5,93,91,114,102,3,4,7,96,95,98,95,2,8,1,204,212,416,5.838235,5.872642,11.71088,37,18,18,73,1,0,37,1,1,86,88,97,94,86,94,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.16,1,1,75,75,1\n639,5402,\"F\",2010,1,1,5,41,30,29,4,\"b\",\"M\",112,2,2,2,1,2,3,1,1,1,2,0,0,0,2,2,NA,1,95,95,8,9,2,2,77,19,36,81,94,21,11,12,81,80,99,88,19,25,48,83,84,83,78,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,135,1,35,1,1,109,99,97,60,104,75,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"1\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,95,95,0\n642,5437,\"F\",2160,1,1,5,46,32,24,3,\"b\",\"M\",106,2,2,3,0,3,3,2,2,1,2,0,20,0,2,2,NA,3,68,68,8,9,2,1,54,16,30,88,87,21,8,9,78,94,99,96,16,19,40,90,89,93,65,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,70,61,67,77,63,66,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,68,68,0\n643,5439,\"I\",2420,1,1,5,46,30,21,2,\"b\",\"F\",105,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,84,84,4,6,1,2,44,8,26,86,79,26,11,13,65,86,84,84,7,26,34,73,85,65,74,2,6,1,205,199,404,5.882927,5.894472,11.7774,42,21,21,84,1,0,37,0,0,92,97,93,93,94,92,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,4.04,0,0,84,84,1\n644,5440,\"I\",2230,1,1,5,46,33,30,3,\"b\",\"F\",116,2,2,3,0,3,3,2,1,1,0,2,0,0,2,2,NA,3,88,88,8,9,1,2,51,8,29,105,100,25,12,11,101,112,86,100,8,20,30,99,117,80,88,2,4,1,172,186,358,5.755814,5.860215,11.61603,38,20,22,80,1,0,33,1,1,125,126,103,117,125,110,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"0\",\"2\",1,1,3.58,1,1,88,88,0\n645,5441,\"I\",1950,0,1,5,NA,NA,17,2,\"b\",\"M\",86,2,2,1,0,1,1,2,2,1,2,0,10,1,2,2,NA,3,NA,NA,7,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,14,0,0,14,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,0,0,0,89.0645696208653,49.6469598436864,0\n646,5443,\"F\",1740,0,1,5,43,29,21,2,\"b\",\"F\",107,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,41,41,8,9,1,2,40,10,26,71,90,48,24,18,43,70,60,62,8,22,34,69,76,66,42,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,63,61,71,76,60,68,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,41,41,0\n647,5450,\"I\",2410,1,1,5,45,34,15,2,\"b\",\"F\",105,2,2,1,0,1,1,2,2,1,2,1,0,0,2,2,NA,3,144,144,8,9,1,2,25,7,16,81,92,16,8,6,85,80,86,81,7,5,14,81,81,84,80,2,4,1,178,178,356,5.853933,5.803371,11.6573,38,24,14,76,1,0,36,NA,NA,101,104,99,88,103,92,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.56,0,1,144,144,0\n648,5451,\"F\",2160,1,1,5,43,30,18,2,\"b\",\"F\",120,2,2,1,0,1,1,2,2,1,0,0,20,6,2,2,NA,3,75,75,9,9,1,2,82,16,42,93,98,NA,NA,NA,NA,NA,NA,NA,16,32,48,91,95,87,NA,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,72,72,91,85,70,85,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,0,0,75,75,0\n649,5455,\"F\",2310,1,1,5,48,31,15,2,\"b\",\"M\",107,2,2,1,0,1,1,2,2,1,0,0,0,0,2,2,NA,3,104,104,7,9,1,2,40,7,27,83,63,25,4,16,83,92,112,102,11,17,31,95,101,90,79,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,94,95,93,105,94,98,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,0,0,0,0,104,104,0\n650,5458,\"F\",2330,1,1,5,47,30,16,2,\"b\",\"F\",88,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,74,74,4,6,1,2,59,14,41,73,72,55,26,17,49,77,76,74,22,27,50,70,75,69,46,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,0,90,105,89,75,96,79,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,74,74,0\n651,5460,\"F\",2130,1,1,5,46,31,22,5,\"b\",\"F\",118,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,95,95,8,9,1,2,36,11,13,93,108,37,25,3,84,89,86,86,6,6,14,86,95,78,81,2,4,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,121,116,117,90,117,100,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,95,95,0\n652,5463,\"F\",1770,0,1,5,41,29,27,3,\"b\",\"F\",105,2,2,2,0,2,2,1,1,1,1,0,0,2,2,2,NA,3,60,60,8,9,2,4,66,14,34,93,101,40,19,9,98,99,95,96,8,5,18,92,87,99,85,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,99,103,103,97,102,99,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,60,60,0\n653,5478,\"I\",1830,0,1,5,43,29,25,3,\"b\",\"m\",109,2,2,3,0,3,3,1,4,1,1,0,10,0,2,2,NA,3,71,71,8,9,2,2,67,16,37,88,90,15,1,7,83,87,95,90,10,22,39,88,92,86,63,2,7,1,114,208,322,5.95614,6.461538,12.41768,33,15,18,66,1,0,33,0,0,81,89,70,78,84,69,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"1\",\"1\",0,1,3.22,0,0,71,71,0\n654,5505,\"F\",1050,0,1,5,34,26,31,3,\"b\",\"M\",38,2,2,7,0,7,7,2,4,1,1,3,10,0,2,2,NA,3,86,86,1,6,2,4,28,3,15,68,63,34,7,17,70,80,80,78,6,19,27,66,70,68,57,2,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,1,71,77,75,75,73,71,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,86,86,0\n655,5516,\"F\",1900,0,1,5,42,29,22,3,\"b\",\"F\",103,2,2,3,0,3,3,2,1,1,1,2,0,0,2,2,NA,3,70,70,9,9,1,2,64,10,37,86,77,46,13,19,73,79,92,84,5,34,44,73,78,72,62,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,89,94,83,83,90,79,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,0,0,70,70,0\n656,5522,\"I\",1050,0,1,5,35,27,27,5,\"b\",\"F\",98,2,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,93,93,4,7,2,1,39,11,22,114,100,19,9,6,94,96,107,101,12,21,37,89,87,94,88,2,7,1,201,212,413,5.855721,5.867925,11.72365,44,22,15,81,1,0,29,1,1,115,105,117,105,109,111,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.13,1,1,93,93,1\n657,5523,\"I\",1310,0,1,5,39,28,24,4,\"b\",\"M\",112,2,2,1,0,1,1,2,1,1,2,0,2,0,2,2,NA,3,NA,NA,8,9,1,2,57,14,28,98,94,83,30,42,59,85,93,88,9,19,25,86,98,77,87,2,6,3,47,0,47,5.702128,0,5.702128,35,10,0,45,1,0,31,1,1,95,99,93,80,96,84,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"2\",\"2\",0,1,0.47,1,1,74.8769084004191,90.8152512208126,0\n658,5531,\"F\",2420,1,1,5,42,32,29,3,\"b\",\"M\",97,2,2,1,0,1,1,2,4,1,0,0,6,0,2,2,NA,3,110,110,7,8,2,1,75,21,38,73,66,27,12,11,74,90,97,93,2,9,12,82,94,72,72,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,94,98,128,109,95,118,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"4\",\"1\",\"0\",\"2\",0,0,0,1,1,110,110,0\n659,5536,\"I\",1840,0,1,5,44,28,15,2,\"b\",\"F\",96,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,104,104,8,8,1,4,18,0,15,95,87,24,7,13,82,81,114,96,7,14,27,84,84,87,89,2,9,1,188,183,371,6.143617,5.994536,12.13815,28,21,18,67,1,0,33,0,0,119,114,113,101,116,106,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.71,0,0,104,104,0\n660,5550,\"I\",1760,0,1,5,46,30,26,3,\"b\",\"M\",96,2,2,1,1,1,2,2,2,1,2,0,20,2,2,2,NA,1,66,66,7,7,2,NA,31,4,20,104,95,17,5,8,76,77,77,75,6,11,17,84,89,81,76,2,7,1,195,217,412,6.14359,5.930876,12.07447,38,25,22,85,140,1,31,1,1,81,104,96,108,92,100,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"1\",\"2\",\"1\",\"2\",\"2\",0,1,4.12,1,1,66,66,1\n662,5559,\"I\",2500,1,1,5,48,31,21,3,\"b\",\"M\",100,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,74,74,8,9,1,2,39,8,21,76,90,25,8,11,64,85,85,84,9,10,20,86,101,73,56,2,7,1,109,105,214,5.697248,5.457143,11.15439,31,12,1,44,1,0,37,0,0,103,103,131,117,104,124,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,2.14,0,0,74,74,0\n663,5568,\"I\",1940,0,1,5,47,30,20,2,\"b\",\"F\",92,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,72,72,7,8,1,2,67,10,38,98,89,39,17,14,95,104,96,100,21,33,55,88,93,84,79,2,4,1,196,120,316,5.897959,5.858333,11.75629,30,15,12,57,1,0,31,1,1,91,96,94,94,93,92,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.16,1,1,72,72,0\n664,5575,\"I\",2070,1,1,5,47,30,14,1,\"b\",\"M\",73,2,2,1,0,1,1,2,2,2,1,0,20,2,1,2,NA,3,NA,NA,6,9,1,2,10,3,7,81,83,15,8,6,85,94,84,88,36,56,102,86,100,74,101,2,3,3,166,166,332,5.849398,5.801205,11.6506,24,17,17,58,1,0,34,0,0,79,63,89,93,70,90,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"2\",\"1\",\"2\",0,1,3.32,0,0,79.3939807495789,65.3198100876724,0\n665,5585,\"F\",1191,0,1,5,39,28,18,2,\"b\",\"F\",97,2,2,2,0,2,2,2,2,1,2,1,0,0,2,2,NA,3,61,61,6,8,2,1,83,17,50,73,77,72,39,31,79,92,99,95,25,43,71,77,84,73,76,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,0,83,73,97,97,77,96,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,61,61,0\n666,5588,\"I\",1729,0,1,5,43,28,15,2,\"b\",\"F\",101,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,79,79,8,9,1,2,15,2,7,106,95,15,6,4,91,92,84,87,2,4,8,89,104,75,94,2,5,1,127,164,291,5.818898,5.762195,11.58109,36,15,21,72,1,0,31,0,0,103,117,113,117,109,114,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,2.91,0,0,79,79,0\n667,5618,\"F\",1880,0,1,5,44,30,32,5,\"b\",\"F\",94,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,110,110,7,8,1,2,15,3,4,103,111,12,7,2,103,99,114,106,5,2,8,114,113,113,112,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,123,126,90,111,124,98,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,4,\"b\",\"5\",\"4\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,110,110,0\n668,5627,\"I\",1860,0,1,5,42,29,24,3,\"b\",\"F\",108,2,2,3,0,3,2,2,2,1,2,0,5,0,2,2,NA,3,64,64,8,9,1,4,84,15,43,95,92,47,29,12,70,81,73,75,8,8,19,80,80,83,68,2,7,1,186,170,356,5.967742,5.852941,11.82068,33,20,16,69,1,0,37,0,0,72,76,94,94,72,92,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,2,\"b\",\"5\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.56,0,0,64,64,0\n669,5638,\"I\",1080,0,1,5,40,26,23,2,\"b\",\"F\",96,2,2,5,0,5,5,2,3,1,1,0,20,24,2,2,NA,3,68,68,6,7,2,4,30,2,16,125,90,30,16,9,104,122,115,121,12,7,19,108,118,96,115,2,7,1,0,184,184,0,5.815217,5.815217,27,4,17,48,1,0,29,0,0,112,109,97,132,110,115,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,\"b\",\"5\",\"1\",\"0\",\"3\",\"1\",\"1\",\"2\",1,1,1.84,0,0,68,68,0\n670,5657,\"F\",1910,0,1,5,44,31,25,4,\"b\",\"M\",95,2,2,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,90,90,9,9,1,2,51,4,35,103,101,34,11,16,85,87,100,93,7,27,34,94,99,90,92,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,90,99,79,97,94,85,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,3,\"b\",\"5\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,90,90,0\n671,6029,\"I\",940,0,1,6,NA,25,14,1,\"b\",\"F\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,6,8,1,2,37,9,18,86,69,23,11,6,54,71,85,76,4,6,15,67,72,66,69,2,8,1,161,90,251,7.360248,7.677778,15.03803,44,19,17,80,1,0,28,NA,NA,89,93,80,72,91,72,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,2.51,1,0,74.3940730531596,58.3832453875858,0\n672,6038,\"F\",900,0,1,6,35,25,16,2,\"b\",\"M\",94,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,2,8,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,28,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,76.0329447050265,68.4202891091918,0\n674,6050,\"F\",1010,0,1,6,36,26,19,2,\"b\",\"F\",117,2,2,4,2,3,4,2,4,1,0,0,0,0,2,2,NA,1,66,66,8,9,2,2,45,7,27,73,46,26,9,15,56,75,80,75,3,19,29,66,73,64,63,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,141,1,30,1,1,72,66,71,76,67,68,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"2\",\"4\",\"1\",\"0\",\"2\",1,0,0,1,1,66,66,0\n676,6053,\"I\",1430,0,1,6,42,27,18,3,\"b\",\"F\",102,2,2,2,2,1,2,2,1,1,2,0,0,0,2,2,NA,1,62,62,8,9,2,2,69,12,41,76,75,88,37,41,33,62,72,63,10,30,38,69,74,68,56,2,4,1,167,141,308,7.443114,7.347518,14.79063,28,11,6,45,143,1,30,1,1,72,73,59,72,71,60,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"2\",\"1\",\"1\",\"2\",\"2\",1,1,3.08,1,1,62,62,0\n677,6057,\"I\",1540,0,1,6,41,29,23,4,\"b\",\"M\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,62,62,9,9,2,4,27,5,16,73,92,15,5,9,77,86,77,80,4,8,13,76,84,71,81,2,1,1,171,188,359,7.093567,6.765957,13.85952,39,22,14,75,1,0,29,1,1,NA,82,90,87,NA,86,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.59,1,1,62,62,0\n678,6058,\"F\",1460,0,1,6,40,27,18,3,\"b\",\"F\",99,2,2,2,0,2,2,2,2,1,2,0,0,0,2,2,NA,3,NA,NA,8,9,1,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,30,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,88.7825181127132,59.9976215106615,0\n679,6059,\"F\",760,0,1,6,31,26,19,2,\"b\",\"F\",97,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,59,59,6,7,2,4,NA,NA,NA,86,87,42,25,10,60,84,82,81,24,22,49,93,94,93,78,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,0,0,99,100,99,103,99,100,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,59,59,0\n680,6060,\"F\",1300,0,1,6,39,26,22,2,\"w\",\"F\",111,1,3,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,66.9749323421608,68.5203296380381,0\n681,6061,\"F\",1210,0,1,6,38,26,18,3,\"b\",\"F\",104,2,3,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,67,67,7,9,1,2,63,13,35,83,69,52,26,22,69,77,76,74,6,15,22,84,93,78,74,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,87,99,93,93,92,92,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,67,67,0\n682,6069,\"F\",1560,0,1,6,41,28,20,2,\"h\",\"M\",92,3,3,3,0,3,3,1,1,1,0,0,0,0,2,2,NA,3,64,64,9,9,1,2,57,17,35,73,75,58,28,27,83,86,85,84,15,30,48,82,78,90,87,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,90,84,88,91,86,88,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",0,0,0,1,1,64,64,0\n683,6075,\"I\",1500,0,1,6,41,29,24,2,\"h\",\"M\",15,3,3,3,0,3,3,1,1,1,2,1,0,0,2,2,NA,3,66,66,8,9,2,3,41,14,12,73,75,NA,NA,NA,NA,NA,NA,NA,16,19,42,88,99,79,83,2,3,1,50,137,187,6.44,6.686131,13.12613,27,27,15,69,1,0,27,0,0,108,121,99,98,113,99,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,1.87,0,0,66,66,0\n684,6089,\"F\",2180,1,1,6,44,NA,18,2,\"b\",\"F\",100,2,2,2,0,2,2,3,2,1,1,1,0,0,2,2,NA,3,52,52,8,9,1,2,91,25,52,78,79,52,22,18,76,97,107,102,15,28,44,99,92,107,87,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,NA,NA,96,107,92,122,99,106,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",1,0,0,0,1,52,52,0\n685,6091,\"I\",2080,1,1,6,47,30,34,3,\"h\",\"M\",82,3,3,4,0,5,4,1,1,2,1,0,0,0,2,2,NA,3,70,70,4,7,1,2,3,0,0,88,90,6,4,1,NA,NA,NA,NA,4,9,12,88,84,95,85,2,7,1,18,0,18,3.555556,0,3.555556,40,16,12,68,1,0,36,0,1,72,63,66,95,65,78,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,2,\"h\",\"6\",\"2\",\"0\",\"1\",\"2\",\"1\",\"1\",0,1,0.18,0,0,70,70,0\n686,6092,\"F\",1320,0,1,6,40,27,18,2,\"b\",\"M\",103,2,2,3,0,3,3,2,2,1,0,2,0,0,2,2,NA,3,62,62,9,9,1,2,19,4,9,98,92,23,9,12,81,91,95,92,3,6,11,77,81,77,80,2,2,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,0,87,NA,92,85,NA,86,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,0,0,1,1,62,62,0\n687,6093,\"F\",1040,0,1,6,36,25,32,5,\"b\",\"F\",104,2,2,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,NA,NA,4,7,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,4,\"b\",\"6\",\"4\",\"0\",\"1\",\"4\",\"1\",\"1\",1,0,0,0,0,73.803474720024,78.5631713565357,0\n688,6098,\"F\",1960,0,1,6,47,29,25,3,\"b\",\"M\",98,2,2,3,0,3,3,3,2,1,3,0,7,0,2,2,NA,3,54,54,8,9,1,4,70,21,35,88,90,60,28,32,83,96,93,94,13,28,42,84,87,83,92,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,85,89,99,95,86,96,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"3\",\"3\",0,0,0,0,0,54,54,0\n689,6102,\"F\",1030,0,1,6,36,26,35,2,\"b\",\"M\",108,2,2,6,0,6,5,4,4,1,2,1,4,3,2,2,NA,3,64,64,8,9,2,2,52,9,30,76,75,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"4\",\"1\",\"2\",\"4\",0,0,0,1,1,64,64,0\n690,6106,\"F\",1210,0,1,6,39,29,18,2,\"b\",\"M\",123,2,2,1,0,1,1,2,1,1,2,0,0,0,2,2,NA,3,54,54,8,9,2,1,27,7,12,86,72,19,9,8,88,72,97,83,3,5,9,87,92,83,79,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,90,96,115,95,93,103,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,1,1,54,54,0\n691,6115,\"F\",1210,0,1,6,40,27,18,2,\"b\",\"M\",83,2,2,2,0,2,2,1,1,1,0,1,2,0,2,2,NA,3,65,65,4,6,2,1,103,21,69,57,58,51,18,24,63,79,92,84,16,22,40,70,66,78,46,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,68,65,83,73,64,74,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",0,0,0,0,0,65,65,0\n692,6126,\"I\",1920,0,1,6,48,30,24,3,\"b\",\"M\",114,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,84,84,9,9,1,2,57,13,25,95,85,87,49,33,78,87,84,84,25,21,47,77,87,72,79,2,4,1,145,85,230,6.944828,6.494118,13.43895,31,25,6,62,1,0,36,1,1,80,82,71,72,80,66,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,2.3,1,1,84,84,0\n693,6127,\"I\",1170,0,1,6,39,26,17,2,\"b\",\"M\",85,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,58,58,8,8,1,2,60,13,31,66,63,31,15,12,82,76,81,76,7,17,25,73,66,84,81,2,8,1,204,118,322,6.941176,6.559322,13.5005,28,13,6,47,1,0,33,0,1,84,81,92,79,81,83,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.22,0,0,58,58,0\n695,6135,\"I\",1850,0,1,6,47,27,37,2,\"b\",\"F\",82,2,2,7,2,6,7,3,4,1,0,1,0,0,2,2,NA,1,54,54,9,9,1,2,76,20,49,76,66,52,23,26,32,62,61,58,9,24,33,57,63,59,56,2,2,3,152,139,291,7.342105,7.741007,15.08311,35,13,20,68,145,1,33,1,1,78,76,62,66,75,57,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"2\",\"4\",\"1\",\"0\",\"3\",1,1,2.91,1,1,54,54,0\n697,6146,\"I\",1470,0,1,6,42,28,20,2,\"b\",\"F\",97,2,2,2,2,1,2,2,2,1,0,0,0,0,2,2,NA,1,57,57,7,8,2,3,67,17,29,78,83,76,40,23,66,70,78,71,23,37,58,77,80,78,70,2,1,1,179,150,329,6.787709,6.026667,12.81438,38,16,16,70,147,1,30,1,1,81,89,96,85,84,89,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"2\",\"2\",\"1\",\"0\",\"2\",1,1,3.29,1,1,57,57,0\n698,6147,\"I\",2100,1,1,6,45,31,23,3,\"w\",\"M\",84,1,1,3,0,3,3,1,1,1,2,0,10,3,2,2,NA,3,95,95,9,9,1,2,39,1,31,103,92,24,4,16,87,94,86,89,5,14,25,104,102,104,98,2,8,1,229,216,445,7.152838,6.546296,13.69913,49,14,20,83,1,0,34,0,1,117,120,115,122,118,120,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,4.45,0,0,95,95,1\n699,6148,\"I\",2230,1,1,6,47,31,17,2,\"b\",\"M\",99,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,70,70,9,9,1,2,53,5,41,81,85,20,4,11,74,87,93,89,9,16,25,85,93,79,89,2,7,1,208,208,416,7.259615,7.019231,14.27885,39,19,9,67,1,0,34,1,1,94,107,74,85,98,76,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,4.16,1,1,70,70,1\n700,6149,\"F\",1960,0,1,6,44,30,19,3,\"b\",\"F\",111,2,2,2,1,2,3,1,1,1,2,0,5,0,2,2,NA,1,53,53,9,9,1,2,44,17,21,68,72,29,17,12,77,79,66,70,8,16,24,54,58,58,36,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,150,1,35,1,1,67,61,71,78,61,70,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"1\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,53,53,0\n702,6159,\"I\",2490,1,1,6,48,27,25,3,\"b\",\"F\",74,2,2,2,0,2,2,1,1,1,2,0,20,0,2,2,NA,3,79,79,8,8,1,2,46,12,21,95,102,18,5,8,71,84,84,82,2,13,21,99,111,86,89,2,7,1,222,211,433,7.40991,7.739336,15.14925,40,15,16,71,1,0,34,1,1,98,105,107,124,101,117,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,4.33,1,1,79,79,1\n703,6168,\"I\",1550,0,1,6,41,31,20,2,\"w\",\"F\",80,1,1,1,0,1,1,1,1,1,1,0,15,2,2,2,NA,3,106,106,3,8,2,1,62,7,26,83,72,37,10,16,90,105,104,105,14,25,45,96,102,90,96,2,6,1,0,0,0,0,0,0,0,0,0,0,1,0,29,NA,NA,101,114,88,113,106,98,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,106,106,0\n704,6172,\"F\",2250,1,1,6,44,30,15,2,\"b\",\"F\",113,2,2,2,0,2,1,2,2,1,0,2,0,0,2,2,NA,3,71,71,9,9,1,2,29,5,14,81,83,56,24,19,81,90,92,90,7,22,34,84,82,89,74,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,NA,NA,96,107,99,95,99,96,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,0,0,71,71,0\n705,6175,\"I\",2090,1,1,6,46,32,16,1,\"b\",\"F\",110,2,2,1,0,1,1,1,3,1,2,0,0,0,2,2,NA,3,78,78,9,9,1,2,59,15,32,90,92,30,12,12,79,85,119,101,4,2,6,93,91,96,89,2,4,3,155,130,285,7.548387,6.992308,14.54069,38,15,11,64,1,0,34,0,0,112,126,115,98,118,106,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"3\",\"1\",\"2\",\"1\",1,1,2.85,0,0,78,78,0\n706,6177,\"I\",1000,0,1,6,36,25,20,3,\"b\",\"F\",118,2,2,2,0,2,2,2,2,1,2,1,10,0,2,2,NA,3,73,73,6,6,2,2,38,11,21,98,100,46,22,8,66,77,84,78,22,23,52,90,87,95,84,2,3,1,173,125,298,6.751445,6.552,13.30345,32,16,15,63,1,0,28,1,1,125,117,103,97,120,99,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,2.98,1,1,73,73,0\n707,6179,\"F\",2350,1,1,6,47,31,25,2,\"b\",\"M\",107,2,2,2,0,2,2,3,2,1,1,1,4,1,2,2,NA,3,59,59,9,9,1,2,57,10,31,73,72,34,13,14,60,84,73,76,12,16,33,76,91,65,85,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,1,1,97,100,105,118,98,113,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",0,0,0,1,1,59,59,0\n708,6181,\"F\",2290,1,1,6,44,34,17,2,\"h\",\"M\",101,3,3,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,63,63,8,9,1,2,60,19,30,81,79,111,47,56,62,86,88,86,15,30,51,85,83,90,76,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,80,65,79,88,71,80,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,63,63,0\n709,6184,\"F\",2030,1,1,6,45,28,17,2,\"w\",\"F\",95,1,1,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,73,73,8,8,1,2,35,11,19,91,93,33,15,11,101,109,107,109,13,20,33,106,97,115,98,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,83,86,86,98,83,91,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,73,73,0\n710,6186,\"I\",1130,0,1,6,38,28,22,3,\"w\",\"F\",103,1,1,2,1,2,3,1,1,1,2,1,0,0,2,2,NA,1,75,75,8,9,1,2,57,16,30,46,NA,41,16,17,19,49,45,44,7,20,33,40,46,46,19,1,3,2,0,41,41,0,0.5365854,0.5365854,32,21,19,72,152,1,32,NA,NA,27,53,33,21,36,14,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"1\",\"1\",\"1\",\"2\",\"1\",1,1,0.41,0,1,75,75,0\n712,6191,\"I\",2020,1,1,6,45,30,22,3,\"w\",\"M\",84,1,1,2,0,3,2,1,1,1,1,0,18,0,2,2,NA,3,NA,NA,9,9,1,2,58,15,36,64,75,41,19,20,60,69,63,63,6,12,22,57,59,63,66,2,4,1,110,139,249,6.772727,7.460432,14.23316,14,5,15,34,1,0,32,0,1,73,86,55,59,78,50,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,2.49,0,0,49.4622273666605,95.3464093850358,0\n713,6193,\"F\",2340,1,1,6,46,31,21,3,\"h\",\"F\",104,3,3,3,0,3,3,1,1,2,2,2,0,0,2,2,NA,3,72,NA,8,9,2,2,22,8,9,62,NA,2,1,0,35,56,118,84,5,1,7,77,62,98,62,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,78,89,83,82,83,79,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,2,\"h\",\"6\",\"2\",\"0\",\"1\",\"2\",\"2\",\"1\",1,0,0,0,0,72,72,0\n714,6199,\"I\",2220,1,1,6,47,33,18,2,\"b\",\"M\",111,2,2,3,0,3,3,2,2,1,0,1,0,0,2,2,NA,3,57,57,8,9,1,2,60,14,37,105,85,37,10,21,76,91,107,99,8,22,31,84,82,90,106,2,5,1,234,118,352,6.824786,6.457627,13.28241,45,24,13,82,1,0,34,0,0,96,96,96,98,96,96,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,1,3.52,0,0,57,57,0\n715,6200,\"I\",1840,0,1,6,42,30,20,1,\"b\",\"F\",98,2,2,5,0,4,4,1,1,1,2,1,0,0,2,2,NA,3,78,78,8,9,1,2,30,8,21,105,96,19,8,7,100,110,105,109,6,3,10,95,102,87,91,2,5,1,166,193,359,5.560241,6.761658,12.3219,44,18,13,75,1,0,30,0,1,103,103,97,117,104,106,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,3.59,0,0,78,78,0\n716,6204,\"I\",2100,1,1,6,43,32,23,3,\"b\",\"F\",105,2,2,2,1,2,3,2,2,1,1,0,10,0,2,2,NA,1,65,65,3,8,2,2,26,4,14,95,81,7,2,4,72,86,95,89,0,3,3,95,95,96,84,2,2,1,210,197,407,6.919048,6.741117,13.66016,38,17,17,72,154,1,36,1,1,99,104,99,118,101,108,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"1\",\"2\",\"1\",\"1\",\"2\",1,1,4.07,1,1,65,65,1\n718,6209,\"F\",2170,1,1,6,46,32,24,4,\"h\",\"M\",108,3,3,4,0,4,4,1,1,1,2,0,0,0,2,2,NA,3,96,96,3,9,1,2,21,5,12,95,72,33,15,19,84,89,99,93,7,20,33,96,88,107,96,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,107,107,99,91,106,94,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,3,\"h\",\"6\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,96,96,0\n719,6212,\"F\",1470,0,1,6,40,29,19,3,\"b\",\"M\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,75,75,9,9,1,2,44,6,29,95,85,23,9,13,86,89,103,95,15,18,37,95,94,96,92,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,119,126,97,117,122,106,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,75,75,0\n720,6213,\"F\",1960,0,1,6,46,28,17,2,\"b\",\"F\",107,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,65,65,8,9,1,2,5,0,1,90,92,2,1,0,76,84,92,86,1,2,5,89,93,86,88,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,99,110,118,87,105,98,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,65,65,0\n721,6215,\"F\",2096,1,1,6,43,32,21,4,\"b\",\"F\",98,2,2,2,0,2,2,2,1,1,1,0,1,0,2,2,NA,3,55,55,8,9,1,2,18,1,14,83,63,29,10,7,83,100,93,96,13,27,42,98,102,94,88,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,101,100,105,95,101,99,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,55,55,0\n722,6217,\"F\",1390,0,1,6,40,28,16,1,\"w\",\"F\",80,1,1,1,0,1,1,1,1,1,3,0,10,0,1,2,NA,3,78,78,8,9,1,2,41,11,27,76,77,35,12,14,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,1,1,78,78,0\n723,6220,\"I\",2000,0,1,6,43,32,25,2,\"w\",\"F\",104,1,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,80,80,9,9,1,2,21,3,9,103,97,6,2,2,74,85,95,88,2,0,6,101,100,102,88,2,6,1,62,74,136,6.629032,6.472973,13.10201,3,19,15,37,1,0,35,0,0,96,111,92,113,101,100,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,1.36,0,0,80,80,0\n724,6226,\"F\",2380,1,1,6,47,34,23,3,\"w\",\"F\",105,5,1,4,0,3,4,1,1,1,1,2,3,0,2,2,NA,3,87,87,7,8,2,1,18,2,6,76,NA,25,15,6,93,84,81,81,11,37,48,89,92,87,62,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,99,117,85,91,107,86,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,87,87,0\n725,6228,\"I\",2170,1,1,6,41,31,39,2,\"w\",\"M\",72,1,1,2,0,2,2,2,1,1,2,0,6,1,2,2,NA,3,NA,NA,8,9,2,1,10,3,3,78,104,8,0,6,56,54,66,55,9,26,38,74,80,72,80,2,8,1,189,219,408,6.920635,7.497717,14.41835,29,21,24,74,1,0,36,0,1,97,92,89,78,94,80,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,1,4.08,0,0,68.7582120496754,70.1388688595429,1\n726,6229,\"F\",1930,0,1,6,45,29,25,2,\"h\",\"F\",101,3,3,3,1,3,4,1,1,1,1,0,0,0,2,2,NA,1,66,66,8,9,1,2,37,9,19,76,85,14,5,4,71,75,115,93,2,1,4,104,104,104,99,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,156,1,34,1,1,104,114,111,108,108,110,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,66,66,0\n728,6232,\"I\",1300,0,1,6,40,28,41,5,\"b\",\"F\",117,2,2,2,0,1,2,1,4,4,2,0,0,0,2,2,NA,3,NA,NA,7,8,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,0,1,0,29,NA,NA,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,4,\"b\",\"6\",\"4\",\"0\",\"4\",\"4\",\"2\",\"1\",1,1,0,0,1,88.3151202762584,89.0339833558578,0\n729,6233,\"F\",1680,0,1,6,44,29,20,2,\"w\",\"F\",102,1,1,1,0,1,1,2,1,1,2,0,0,1,2,2,NA,3,NA,NA,9,9,1,2,25,4,13,105,97,29,14,9,NA,NA,NA,NA,7,16,22,112,108,115,90,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,110,124,132,109,115,120,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,1,1,91.4669293645991,84.1208569173267,0\n730,6237,\"F\",1350,0,1,6,43,27,17,2,\"b\",\"F\",111,2,2,2,0,2,2,2,2,1,3,0,3,0,2,2,NA,3,63,63,8,9,2,2,46,14,27,74,79,48,22,21,56,71,78,72,12,21,32,75,62,93,68,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,78,86,92,85,81,86,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,63,63,0\n731,6240,\"I\",2320,1,1,6,46,33,17,2,\"b\",\"M\",102,2,2,1,0,1,1,2,2,1,2,0,20,0,2,2,NA,3,NA,NA,9,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,8,0,0,8,1,0,37,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,0,1,1,78.3282401888389,55.9196714655758,0\n732,6242,\"I\",2150,1,1,6,41,30,19,2,\"w\",\"F\",99,1,1,1,0,1,1,2,2,1,1,0,20,0,2,2,NA,3,69,69,9,9,1,2,20,2,13,120,112,13,8,3,114,122,96,111,7,6,14,121,128,107,109,2,8,1,184,196,380,7.597826,7.479592,15.07742,42,21,21,84,1,0,35,0,1,140,129,103,133,133,120,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.8,0,0,69,69,0\n733,6244,\"F\",2180,1,1,6,45,31,20,3,\"w\",\"M\",102,1,1,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,82,82,9,9,1,2,55,13,26,93,90,22,9,12,87,90,100,94,15,9,27,88,99,79,87,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,90,96,96,103,93,98,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,0,0,82,82,0\n734,6245,\"I\",1550,0,1,6,42,27,24,3,\"b\",\"F\",116,2,2,4,0,4,4,2,2,1,1,2,0,2,2,2,NA,3,60,60,6,9,2,2,28,5,18,98,92,51,22,23,69,90,91,89,16,13,31,82,89,78,68,2,2,1,80,136,216,4.7625,6.522059,11.28456,41,21,12,74,1,0,33,0,1,80,90,94,87,84,88,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,2.16,0,0,60,60,0\n735,6249,\"I\",1010,0,1,6,36,26,18,1,\"h\",\"M\",52,3,3,2,0,2,2,2,1,1,0,1,0,0,2,2,NA,3,NA,NA,6,8,1,2,52,20,20,43,NA,22,10,8,NA,NA,NA,NA,8,11,28,40,46,46,19,1,10,1,63,71,134,0.7619048,0.5633803,1.325285,34,20,12,66,1,0,27,1,1,21,53,33,0,33,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"2\",0,1,1.34,1,1,75.4381340885903,70.2371036954133,0\n736,6258,\"I\",1950,0,1,6,41,31,19,3,\"b\",\"M\",93,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,83,83,4,8,2,1,36,6,24,105,89,23,11,10,62,100,115,108,2,9,12,102,104,100,77,2,6,1,180,180,360,6.711111,6.755556,13.46667,38,14,11,63,1,0,32,1,1,94,97,93,110,95,100,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.6,1,1,83,83,0\n737,6260,\"I\",1880,0,1,6,42,31,20,3,\"b\",\"F\",101,2,2,1,0,1,1,1,2,1,2,0,0,0,2,2,NA,3,76,76,1,3,2,1,46,15,22,98,111,20,5,10,77,72,93,81,8,17,25,87,85,93,60,2,5,1,161,138,299,6.950311,6.608696,13.55901,32,18,16,66,1,0,33,1,1,83,79,90,81,80,82,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"1\",1,1,2.99,1,1,76,76,0\n738,6262,\"F\",1830,0,1,6,42,30,17,2,\"b\",\"F\",102,2,2,1,0,1,1,2,1,1,1,0,0,0,2,2,NA,3,53,53,8,9,1,2,49,11,34,68,66,25,13,9,39,81,74,76,17,26,41,76,79,78,70,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,84,84,94,81,84,85,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,53,53,0\n739,6263,\"I\",1530,0,1,6,42,27,21,2,\"b\",\"F\",109,2,2,3,0,3,3,2,3,1,1,1,0,0,2,2,NA,3,45,45,7,8,1,2,48,12,22,68,69,54,33,13,45,67,66,63,4,19,26,50,50,58,19,2,3,1,193,183,376,7.295337,6.989071,14.28441,38,24,17,79,1,0,30,1,1,45,53,33,46,46,28,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"3\",\"1\",\"1\",\"2\",1,1,3.76,1,1,45,45,0\n740,6271,\"F\",2060,1,1,6,41,30,19,2,\"h\",\"F\",88,3,3,1,0,1,1,2,1,1,3,0,0,0,2,2,NA,3,NA,NA,9,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"3\",\"2\",1,0,0,0,0,88.0106457313969,50.0505543034498,0\n741,6281,\"F\",2110,1,1,6,43,31,24,3,\"b\",\"F\",104,2,2,3,0,3,3,3,4,1,2,1,10,0,2,2,NA,3,48,48,8,9,2,2,77,15,49,81,81,41,18,14,76,97,88,92,4,16,25,80,89,74,69,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,85,94,115,98,89,106,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"2\",\"3\",1,0,0,1,1,48,48,0\n742,6283,\"F\",1910,0,1,6,44,31,19,2,\"w\",\"M\",86,1,1,2,0,2,2,1,1,1,1,0,20,0,2,2,NA,3,92,92,8,8,1,2,57,15,37,66,75,34,17,17,47,82,84,81,3,8,10,75,72,81,70,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,1,90,89,96,88,89,90,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,92,92,0\n743,6284,\"I\",1490,0,1,6,43,30,22,3,\"b\",\"M\",88,2,2,2,0,1,2,2,2,1,3,0,20,0,2,2,NA,3,74,74,3,5,1,2,40,7,26,98,107,43,20,18,81,91,86,88,23,33,64,81,83,82,91,2,8,1,198,159,357,7.409091,7.144654,14.55374,35,23,16,74,1,0,33,1,1,98,98,103,87,98,93,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,3.57,1,1,74,74,0\n744,6296,\"F\",1200,0,1,6,41,26,20,2,\"b\",\"F\",106,2,2,2,0,2,2,1,1,1,1,1,0,0,2,2,NA,3,59,59,1,5,2,2,51,11,31,83,69,11,7,1,80,94,97,95,4,4,7,103,94,112,77,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,96,100,111,118,98,115,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,59,59,0\n745,6297,\"F\",1950,0,1,6,46,31,28,2,\"h\",\"M\",116,3,3,2,0,2,2,1,1,1,1,0,10,0,2,2,NA,3,63,63,9,9,1,2,53,11,34,86,85,25,11,14,75,80,95,86,3,14,19,92,84,103,80,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,89,90,108,106,89,107,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,63,63,0\n746,6304,\"I\",2450,1,1,6,46,32,32,4,\"b\",\"M\",81,2,2,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,95,95,9,9,2,2,46,5,27,86,87,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,183,199,382,7.360656,7.718593,15.07925,41,17,19,77,1,0,36,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,3.82,1,1,95,95,0\n747,6311,\"F\",2140,1,1,6,46,33,30,2,\"h\",\"M\",94,3,3,3,0,3,3,1,1,2,2,0,0,0,2,2,NA,3,75,75,4,8,2,2,44,10,24,83,90,36,15,17,87,100,100,100,11,15,31,96,90,104,86,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,126,117,120,122,121,122,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"2\",\"2\",\"1\",0,0,0,0,0,75,75,0\n748,6313,\"F\",2050,1,1,6,44,31,20,2,\"b\",\"F\",116,2,2,2,0,2,2,2,1,1,1,1,0,1,1,2,NA,3,72,72,9,9,1,2,56,15,27,88,93,26,16,7,75,76,97,85,6,5,13,82,80,87,81,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,96,98,92,91,97,90,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,72,72,0\n749,6328,\"F\",1800,0,1,6,48,28,16,2,\"b\",\"F\",106,2,2,2,0,2,2,1,1,1,3,0,0,0,2,2,NA,3,80,80,8,9,1,2,66,15,36,76,89,28,11,9,NA,NA,NA,NA,9,14,22,108,112,103,90,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,115,117,93,111,115,100,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,0,0,80,80,0\n750,6330,\"F\",2500,1,1,6,48,32,22,1,\"w\",\"F\",102,1,1,5,0,5,5,1,1,1,0,0,40,0,2,2,NA,3,NA,NA,9,9,1,2,70,18,40,78,85,36,16,18,84,96,82,88,17,30,48,74,72,80,73,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,78,78,96,98,76,96,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",1,0,0,1,1,77.4463645101374,85.0441702065703,0\n751,6333,\"F\",1930,0,1,6,45,31,19,2,\"b\",\"F\",103,2,2,1,0,1,1,2,2,1,0,0,10,1,2,2,NA,3,65,65,4,9,1,2,40,10,23,71,63,31,15,12,66,86,93,88,8,21,29,86,85,89,56,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,107,100,128,113,104,122,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,0,0,65,65,0\n752,6338,\"F\",840,0,1,6,32,24,28,3,\"b\",\"F\",116,2,2,1,0,1,1,1,1,1,1,0,10,0,2,2,NA,3,60,60,3,6,2,1,27,6,16,86,103,14,6,6,76,90,81,84,2,8,9,77,87,72,65,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,87,94,96,91,89,92,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,60,60,0\n753,6343,\"F\",1230,0,1,6,40,27,21,2,\"b\",\"F\",133,2,2,2,0,2,2,2,2,1,3,0,0,0,2,2,NA,3,63,63,6,7,1,2,58,14,28,98,101,31,19,7,80,86,93,88,4,8,12,100,93,108,92,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,115,114,96,108,114,100,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,63,63,0\n754,6345,\"F\",1680,0,1,6,40,28,22,3,\"b\",\"F\",87,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,60,60,8,9,2,2,70,16,33,78,87,62,28,21,86,96,104,100,12,17,31,90,91,91,95,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,92,92,97,90,91,92,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,60,60,0\n755,6350,\"I\",1700,0,1,6,41,29,17,1,\"h\",\"F\",82,3,3,3,0,3,2,1,1,1,1,2,0,0,2,2,NA,3,40,40,9,9,1,2,58,17,30,68,63,34,14,12,45,56,84,66,0,1,2,78,66,95,57,2,7,1,54,31,85,6.240741,6.677419,12.91816,29,5,0,34,1,0,32,0,0,89,84,88,71,85,76,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0.85,0,0,40,40,0\n756,6351,\"I\",1500,0,1,6,42,29,19,2,\"b\",\"M\",103,2,2,2,1,2,3,2,1,1,1,0,20,0,2,2,NA,1,47,47,9,9,1,2,44,12,25,66,63,14,7,5,59,59,80,65,13,21,37,65,59,77,56,2,5,2,178,144,322,6.865169,6.8125,13.67767,28,14,11,53,158,1,33,0,1,81,95,51,78,87,57,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"1\",\"1\",\"1\",\"1\",\"2\",0,1,3.22,0,0,47,47,0\n758,6353,\"F\",1000,0,1,6,36,21,20,1,\"b\",\"M\",97,2,2,1,0,1,1,2,2,1,1,0,20,0,2,2,NA,3,52,52,5,7,1,2,86,25,36,71,81,38,16,17,65,75,88,79,35,33,83,84,88,82,68,2,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,75,76,90,76,73,80,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,52,52,0\n759,6354,\"F\",1620,0,1,6,42,26,20,2,\"b\",\"F\",108,2,2,2,0,2,2,2,2,1,3,0,0,0,2,2,NA,3,72,72,7,9,1,2,31,4,17,88,77,15,2,4,71,100,82,91,5,5,11,91,92,91,81,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,99,98,105,113,98,110,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,72,72,0\n760,6356,\"F\",960,0,1,6,34,25,26,2,\"b\",\"M\",66,2,2,5,0,3,2,3,2,1,1,4,0,0,2,2,NA,3,58,58,4,NA,2,2,62,11,43,115,111,41,23,17,82,94,105,99,10,12,28,84,85,84,84,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,81,78,92,82,78,84,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"3\",0,0,0,1,1,58,58,0\n761,6365,\"F\",1750,0,1,6,42,29,34,2,\"w\",\"F\",81,1,1,5,0,5,5,1,1,1,0,0,0,1,2,2,NA,3,72,72,9,9,1,2,59,18,32,78,97,21,8,10,92,96,82,88,20,36,59,79,83,79,70,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,73,NA,92,82,NA,84,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",1,0,0,1,1,72,72,0\n762,6366,\"F\",2340,1,1,6,46,32,22,3,\"b\",\"F\",101,2,2,2,0,2,2,2,4,1,3,1,0,0,2,2,NA,3,NA,NA,8,9,1,2,66,26,34,71,81,87,55,23,51,69,73,68,28,28,58,55,56,62,48,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,73,69,92,71,69,78,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"3\",\"2\",1,0,0,0,0,85.3320332197943,63.1170025663133,0\n763,6371,\"F\",2400,1,1,6,44,30,23,3,\"b\",\"F\",97,2,2,3,1,2,2,2,2,1,1,2,10,0,2,2,NA,1,77,77,8,9,2,1,20,1,15,71,79,33,16,13,78,89,85,86,11,6,21,88,92,86,88,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,160,1,35,1,1,98,98,85,101,98,92,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"1\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,77,77,0\n765,6373,\"I\",1560,0,1,6,40,27,15,1,\"b\",\"M\",103,2,2,2,0,2,2,2,2,1,0,1,0,0,2,2,NA,3,66,66,8,9,1,2,37,11,17,76,83,37,21,13,64,81,80,78,25,59,85,83,90,78,70,2,10,1,184,179,363,6.972826,6.782123,13.75495,35,14,9,58,1,0,32,0,1,80,76,92,88,76,88,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",0,1,3.63,0,0,66,66,0\n766,6374,\"F\",1800,0,1,6,43,28,23,4,\"w\",\"F\",92,1,1,1,0,1,2,1,1,1,1,0,10,0,2,2,NA,3,NA,NA,9,9,1,2,43,7,16,113,104,36,15,14,NA,NA,NA,NA,30,31,66,109,113,103,120,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,NA,NA,132,137,107,136,132,124,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,3,\"w\",\"6\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,78.2057844803314,75.0495393669834,0\n767,6379,\"F\",1610,0,1,6,43,28,21,3,\"b\",\"M\",92,2,2,3,0,3,3,1,1,1,2,0,0,0,2,2,NA,3,69,69,9,9,1,2,74,12,49,95,89,67,22,41,84,106,96,101,13,21,38,92,102,81,86,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,87,98,83,103,92,90,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,69,69,0\n768,6381,\"I\",2260,1,1,6,46,31,21,3,\"b\",\"F\",106,2,2,3,0,3,3,1,1,1,2,1,5,0,2,2,NA,3,52,52,9,9,2,4,70,20,43,81,102,28,14,13,73,100,92,96,9,15,25,85,85,87,88,2,7,1,122,5,127,6.295082,7,13.29508,26,8,7,41,1,0,35,1,0,87,92,89,100,88,94,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,1.27,1,1,52,52,0\n769,6384,\"I\",1880,0,1,6,48,31,20,3,\"b\",\"M\",126,2,2,3,0,3,3,2,4,1,1,1,0,0,2,2,NA,3,69,69,5,9,2,2,46,11,22,81,93,45,23,19,37,76,77,74,15,20,37,75,76,77,48,2,4,1,210,205,415,7.442857,7.668293,15.11115,33,13,13,59,1,0,36,0,1,61,78,79,66,68,67,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,4.15,0,0,69,69,1\n770,6390,\"F\",2330,1,1,6,44,32,40,3,\"h\",\"F\",108,3,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,68,68,9,9,1,2,21,7,12,110,116,22,7,13,98,96,101,99,1,7,10,97,100,94,92,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,116,106,103,117,111,110,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,2,\"h\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,68,68,0\n771,6392,\"F\",920,0,1,6,36,23,19,2,\"b\",\"F\",71,2,2,2,0,2,2,2,2,1,0,1,0,0,2,2,NA,3,67,67,6,6,1,2,31,7,16,66,93,13,5,4,56,79,78,76,7,13,21,65,71,65,56,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,0,0,72,69,76,76,69,72,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"0\",\"2\",1,0,0,0,0,67,67,0\n772,6394,\"F\",2110,1,1,6,43,32,19,2,\"w\",\"M\",58,1,1,2,0,2,2,3,1,1,0,1,0,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,96,91,37,14,17,86,102,105,104,8,15,25,99,101,96,92,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,108,103,95,133,106,114,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,\"w\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"3\",0,0,0,0,0,85.9468516457649,86.2790266737053,0\n773,6396,\"F\",910,0,1,6,34,24,25,3,\"b\",\"M\",95,2,2,3,0,2,2,1,2,1,1,2,0,0,2,2,NA,3,74,74,7,8,1,2,38,3,29,76,90,39,19,14,80,84,97,89,3,15,17,91,92,91,72,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,0,1,81,89,92,88,84,88,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"1\",0,0,0,0,0,74,74,0\n774,6401,\"F\",1660,0,1,6,42,31,24,3,\"b\",\"F\",73,2,2,1,0,1,1,2,4,1,1,0,1,0,2,2,NA,3,57,57,7,9,2,1,42,10,22,71,72,48,20,22,34,51,64,53,4,32,40,48,52,52,39,2,10,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,80,78,92,77,77,82,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,1,1,57,57,0\n775,6404,\"I\",2050,1,1,6,44,31,25,3,\"b\",\"M\",110,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,60,60,9,9,1,2,41,9,30,86,103,13,6,8,41,66,67,63,4,16,20,70,78,66,51,2,1,1,189,211,400,6.724868,6.056872,12.78174,30,17,9,56,1,0,37,1,1,78,84,96,91,79,92,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,4,1,1,60,60,0\n777,6406,\"F\",1950,0,1,6,44,31,23,3,\"b\",\"F\",96,2,2,2,2,1,2,2,2,1,2,0,0,0,2,2,NA,1,63,63,8,9,1,2,5,2,1,88,92,6,1,2,70,79,105,91,0,1,1,93,89,100,73,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,161,1,35,1,1,112,111,128,103,112,117,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"2\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,1,63,63,0\n778,6409,\"F\",2190,1,1,6,47,31,15,1,\"b\",\"F\",113,2,2,2,0,2,2,2,2,1,1,1,0,0,2,2,NA,3,58,58,8,9,2,2,71,15,28,76,63,44,23,9,60,70,86,76,25,21,55,81,81,84,68,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,99,107,99,88,103,92,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,58,58,0\n779,6421,\"F\",2200,1,1,6,44,30,19,4,\"b\",\"M\",113,2,2,2,0,2,2,2,2,1,2,1,0,0,2,2,NA,3,104,104,9,9,1,2,36,4,22,90,94,10,3,6,80,99,110,104,2,8,9,106,106,104,91,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,145,123,122,141,133,134,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,104,104,0\n780,6422,\"F\",1960,0,1,6,44,30,19,2,\"b\",\"M\",99,2,2,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,64,64,9,9,1,2,45,13,22,59,NA,12,7,6,66,67,82,72,5,10,16,72,72,77,73,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,0,57,61,85,81,56,80,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,64,64,0\n781,6426,\"I\",1380,0,1,6,41,27,19,3,\"h\",\"F\",105,3,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,93,93,7,7,2,2,32,6,23,98,90,8,4,4,88,92,108,100,3,2,5,111,110,111,104,2,8,1,130,101,231,7.169231,6.465347,13.63458,38,22,22,82,1,0,30,1,1,123,123,136,127,123,134,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,2,\"h\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.31,1,1,93,93,0\n782,6427,\"F\",1660,0,1,6,39,29,22,2,\"b\",\"F\",51,2,2,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,64,64,8,9,1,2,54,8,36,71,NA,38,12,16,82,99,88,93,19,19,47,84,94,75,72,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,93,98,103,117,95,110,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,64,64,0\n783,6433,\"F\",2070,1,1,6,41,30,19,2,\"b\",\"M\",109,2,2,3,0,3,3,2,4,1,1,0,10,0,2,2,NA,3,69,69,8,9,1,2,38,9,22,86,69,22,9,10,56,76,84,78,6,17,30,110,105,115,96,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,104,114,128,138,108,136,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,1,1,69,69,0\n784,6440,\"F\",2020,1,1,6,43,28,19,3,\"b\",\"F\",105,2,2,2,0,2,2,2,1,1,2,1,0,0,2,2,NA,3,64,64,8,9,1,2,NA,NA,NA,98,87,50,17,26,NA,NA,NA,NA,5,8,15,77,78,81,73,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,84,79,83,77,79,76,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,0,0,64,64,0\n785,6441,\"F\",1500,0,1,6,40,27,22,3,\"b\",\"F\",109,2,2,2,0,2,2,3,2,1,1,1,0,0,2,2,NA,3,NA,NA,9,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10,5,18,92,95,90,85,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,99,94,128,96,96,110,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"3\",1,0,0,1,1,79.9922438250291,80.411239953209,0\n786,6442,\"F\",1660,0,1,6,41,29,28,3,\"w\",\"M\",121,1,1,1,0,1,1,1,1,1,1,0,15,0,2,2,NA,3,88,88,9,10,1,2,24,2,19,98,109,27,11,12,111,100,107,104,13,24,40,119,115,119,109,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,109,123,105,127,115,117,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,2,\"w\",\"6\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,88,88,0\n787,6449,\"F\",2130,1,1,6,47,31,25,4,\"b\",\"M\",103,2,5,2,0,2,2,2,3,1,0,1,0,0,2,2,NA,3,63,63,9,9,2,1,62,10,41,86,90,21,11,9,49,79,81,78,10,13,24,84,84,86,69,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,85,86,88,122,85,101,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"3\",\"1\",\"0\",\"2\",0,0,0,1,1,63,63,0\n788,6452,\"F\",2240,1,1,6,46,30,17,3,\"b\",\"F\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,70,70,8,9,1,2,65,15,40,73,89,18,7,10,71,80,89,83,7,19,25,92,93,91,88,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,108,110,94,97,109,94,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,70,70,0\n789,6454,\"I\",1410,0,1,6,41,28,22,3,\"b\",\"F\",123,2,2,1,0,1,1,2,1,1,2,0,0,0,2,2,NA,3,82,82,9,9,2,2,44,9,22,113,77,36,15,9,87,95,91,92,6,17,27,101,107,94,85,2,6,1,0,0,0,0,0,0,15,0,0,15,1,0,31,0,0,107,114,115,131,110,125,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",1,1,0,0,0,82,82,0\n790,6460,\"I\",2040,1,1,6,43,30,17,2,\"b\",\"M\",104,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,NA,NA,4,9,1,2,67,9,44,98,87,16,12,5,69,91,97,93,21,30,60,75,79,75,61,2,4,1,198,208,406,6.30303,6.850962,13.15399,36,22,13,71,1,0,35,1,1,96,104,96,103,99,98,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,4.06,1,1,76.4873778294746,85.9301148048854,1\n791,6462,\"I\",2150,1,1,6,45,31,19,3,\"b\",\"F\",112,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,74,74,7,9,1,2,33,9,16,120,107,23,14,3,99,105,131,119,10,2,15,123,112,132,116,2,8,1,202,194,396,7.39604,7.489691,14.88573,30,8,22,60,1,0,36,1,1,128,117,120,131,123,128,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.96,1,1,74,74,0\n792,6471,\"F\",2060,1,1,6,41,30,21,3,\"b\",\"M\",105,2,2,2,0,2,2,2,4,1,3,1,0,0,2,2,NA,3,62,62,9,9,1,2,60,12,35,57,63,49,17,25,75,69,88,76,36,49,95,77,87,71,81,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,84,76,74,79,78,72,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"3\",\"2\",0,0,0,1,1,62,62,0\n793,6477,\"F\",2150,1,1,6,46,31,16,2,\"h\",\"M\",89,3,3,1,0,1,1,2,1,1,2,0,0,0,2,2,NA,3,79,79,3,9,1,2,81,21,41,71,77,81,31,46,67,69,84,73,7,17,25,62,67,63,58,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,0,67,48,71,70,54,65,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,0,0,79,79,0\n794,6480,\"F\",2180,1,1,6,42,30,17,2,\"b\",\"F\",81,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,55,55,7,9,1,2,NA,NA,NA,81,69,28,14,13,49,84,89,85,6,10,17,81,84,80,64,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,75,76,94,97,73,94,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,55,55,0\n795,6491,\"F\",2110,1,1,6,43,32,18,2,\"b\",\"F\",100,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,66,66,7,9,1,3,NA,NA,NA,NA,NA,21,4,6,26,54,77,61,1,8,14,76,74,81,69,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,84,96,99,91,89,94,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,66,66,0\n796,6497,\"F\",1300,0,1,6,40,26,20,2,\"b\",\"M\",92,2,2,3,0,3,3,2,4,1,1,0,7,0,2,2,NA,3,58,58,4,8,2,2,37,14,16,76,90,49,24,19,83,84,97,89,36,46,89,79,87,75,88,2,2,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,97,89,92,77,93,82,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,58,58,0\n797,6499,\"F\",1800,0,1,6,42,29,28,1,\"b\",\"M\",115,2,2,2,0,2,2,2,4,1,2,1,0,0,2,2,NA,3,NA,NA,7,9,2,2,58,23,30,68,90,39,19,15,32,61,69,61,13,24,40,52,60,50,62,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,70,73,28,70,70,40,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,72.9899002034178,69.754570286362,0\n798,6500,\"I\",1760,0,1,6,42,30,19,2,\"b\",\"M\",117,2,2,3,0,3,3,2,2,1,1,2,0,0,2,2,NA,3,66,66,8,8,1,2,12,4,6,95,NA,21,9,11,77,95,85,89,3,10,11,79,89,73,78,2,2,1,197,184,381,7.182741,6.038043,13.22078,36,13,17,66,1,0,36,1,1,99,94,88,103,96,94,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.81,1,1,66,66,0\n799,6503,\"I\",2090,1,1,6,42,31,19,2,\"h\",\"M\",110,3,3,2,0,2,1,2,1,1,2,1,0,0,2,2,NA,3,88,88,5,9,1,2,23,5,15,93,87,10,1,7,NA,NA,NA,NA,4,16,19,96,93,100,91,2,2,1,0,14,14,0,5.642857,5.642857,13,0,0,13,1,0,36,1,1,115,111,105,122,113,114,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,1,0.14,1,1,88,88,0\n800,6510,\"F\",2350,1,1,6,48,31,18,2,\"b\",\"M\",85,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,78,78,8,9,1,2,94,21,46,83,89,51,27,23,78,91,93,91,16,29,47,81,90,75,72,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,92,NA,99,98,NA,98,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,78,78,0\n801,6512,\"F\",1470,0,1,6,40,28,27,4,\"b\",\"F\",96,2,2,3,0,2,2,2,2,1,3,2,2,2,2,2,NA,3,63,63,8,9,1,2,54,12,27,64,58,21,11,7,NA,NA,NA,NA,20,31,52,64,74,59,80,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,95,102,93,84,98,86,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,3,\"b\",\"6\",\"3\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,63,63,0\n802,6513,\"I\",1440,0,1,6,40,27,16,2,\"b\",\"M\",104,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,55,55,8,8,1,2,52,14,20,55,NA,28,12,9,37,62,50,52,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,40,165,205,0.65,0.4969697,1.14697,30,19,16,65,1,0,30,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,2.05,1,1,55,55,0\n803,6522,\"F\",1830,0,1,6,43,30,19,2,\"b\",\"F\",101,2,2,2,0,2,2,1,1,1,3,0,0,0,2,2,NA,3,59,59,1,1,1,2,66,13,39,88,58,6,3,0,47,82,85,82,5,10,20,84,84,86,70,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,80,81,69,88,79,74,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,0,0,59,59,0\n804,6533,\"I\",1460,0,1,6,41,27,30,2,\"h\",\"M\",99,3,2,3,0,3,3,3,1,1,0,0,10,6,2,2,NA,3,68,68,4,8,2,2,20,6,8,81,81,12,7,4,85,96,108,102,10,16,27,106,95,116,88,2,7,1,215,216,431,6.390698,6.564815,12.95551,38,21,16,75,1,0,33,1,1,115,107,96,103,111,98,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"0\",\"1\",\"1\",\"0\",\"3\",0,1,4.31,1,1,68,68,1\n805,6538,\"F\",1850,0,1,6,42,30,22,3,\"b\",\"F\",106,2,2,2,0,2,2,2,4,1,2,1,0,0,2,2,NA,3,70,70,8,8,1,2,43,13,17,55,66,12,8,3,51,61,81,68,0,8,7,84,73,100,58,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,78,86,88,73,81,77,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"4\",\"1\",\"2\",\"2\",1,0,0,1,1,70,70,0\n806,6541,\"F\",1290,0,1,6,39,26,16,2,\"b\",\"M\",98,2,2,1,0,1,1,2,2,1,2,0,2,0,1,2,NA,3,NA,NA,3,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,32,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,73.0635693970955,81.5995919452752,0\n807,6544,\"I\",1860,0,1,6,43,29,29,4,\"w\",\"F\",100,1,1,3,0,3,3,1,1,1,2,0,30,0,2,2,NA,3,101,101,8,9,2,2,18,1,12,115,119,13,4,8,97,101,95,98,2,13,14,102,101,103,92,2,7,1,186,140,326,8.290323,7.771429,16.06175,30,19,19,68,1,0,34,1,0,85,91,96,113,87,103,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,3,\"w\",\"6\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,3.26,1,1,101,101,0\n808,6549,\"I\",1320,0,1,6,41,28,21,3,\"b\",\"F\",122,2,2,4,0,2,2,1,1,1,0,1,14,0,2,2,NA,3,62,62,2,7,2,3,51,8,35,95,93,41,20,15,90,90,100,94,4,19,27,80,83,80,84,2,9,1,178,215,393,6.544944,6.437209,12.98215,22,22,8,52,1,0,32,0,1,73,78,83,82,74,79,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"1\",\"1\",\"0\",\"1\",1,1,3.93,0,0,62,62,0\n809,6550,\"I\",1630,0,1,6,41,28,18,3,\"b\",\"M\",98,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,69,69,9,9,1,2,48,7,29,100,89,50,17,19,98,95,92,93,14,17,37,85,90,82,80,2,7,1,199,192,391,6.693467,6.838542,13.53201,35,20,23,78,1,0,32,0,0,92,96,99,103,94,100,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,2,\"b\",\"6\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.91,0,0,69,69,0\n810,6563,\"F\",1480,0,1,6,39,29,16,2,\"b\",\"M\",106,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,NA,NA,3,7,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,0,33,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,0,0,0,0,92.1485273595285,74.9073952893967,0\n812,6569,\"F\",1890,0,1,6,46,31,18,2,\"b\",\"M\",123,2,2,4,2,3,4,2,4,1,2,0,0,0,2,2,NA,3,64,64,8,9,2,2,27,6,14,71,58,12,3,8,54,61,76,65,2,6,10,68,67,73,43,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,163,1,35,0,1,73,73,46,82,71,57,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"2\",\"4\",\"1\",\"2\",\"2\",0,0,0,0,0,64,64,0\n813,6576,\"F\",1870,0,1,6,44,30,38,1,\"h\",\"M\",114,3,3,3,1,3,4,1,1,2,2,0,0,0,2,2,NA,1,50,NA,8,9,2,2,54,17,30,64,NA,51,17,24,75,81,101,90,10,12,24,97,99,95,74,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,166,1,37,0,0,101,96,111,134,98,125,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"1\",\"1\",\"2\",\"2\",\"1\",0,0,0,0,0,50,50,0\n815,6578,\"F\",1600,0,1,6,43,29,25,3,\"h\",\"M\",115,3,3,3,0,3,3,2,2,1,2,0,10,0,2,2,NA,3,63,63,1,3,2,1,28,3,24,93,83,21,9,10,81,79,88,81,3,8,11,75,76,78,86,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,88,88,76,78,87,73,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,2,\"h\",\"6\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,63,63,0\n816,6580,\"F\",1660,0,1,6,44,31,26,2,\"b\",\"M\",105,2,2,2,0,2,2,2,4,1,2,1,0,0,2,2,NA,3,51,51,8,9,1,2,44,9,30,81,90,40,17,22,83,86,96,90,9,17,31,78,82,78,76,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,76,78,96,98,75,96,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",0,0,0,1,1,51,51,0\n817,6585,\"F\",1850,0,1,6,39,29,16,2,\"b\",\"F\",110,2,2,1,0,1,1,2,2,1,1,0,0,0,1,2,NA,3,58,NA,9,9,1,2,77,19,45,88,83,69,33,29,78,92,105,99,22,35,57,92,89,96,66,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,0,97,107,124,108,101,117,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,58,58,0\n818,6588,\"F\",1290,0,1,6,38,27,20,2,\"b\",\"F\",122,2,2,2,0,2,2,2,1,1,2,1,10,0,2,2,NA,3,66,66,9,9,2,2,41,6,29,88,81,25,8,14,86,94,99,96,19,33,53,93,99,87,87,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,84,94,92,95,88,92,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,1,1,66,66,0\n819,6589,\"F\",1710,0,1,6,36,31,17,2,\"b\",\"F\",84,2,2,1,0,1,1,2,1,1,1,2,0,0,2,2,NA,3,97,97,6,9,2,1,39,4,28,62,58,34,14,18,41,59,76,63,4,12,15,55,55,64,36,2,6,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,71,69,46,66,68,48,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,\"b\",\"6\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,97,97,0\n820,6597,\"F\",1730,0,1,6,38,29,20,2,\"h\",\"F\",113,3,3,2,1,3,3,3,4,2,1,0,0,0,2,2,NA,1,62,62,9,9,1,2,30,10,15,59,NA,28,10,16,32,54,82,64,3,12,18,69,71,71,46,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,168,1,36,1,1,76,73,92,82,72,84,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,\"h\",\"6\",\"1\",\"1\",\"4\",\"2\",\"1\",\"3\",1,0,0,1,1,62,62,0\n822,7003,\"F\",540,0,1,7,25,20,30,3,\"w\",\"F\",84,1,1,2,0,2,2,1,1,1,1,0,5,0,2,2,NA,3,85,85,2,3,2,1,79,15,41,62,90,79,43,26,88,89,100,93,17,17,32,84,76,96,91,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,0,1,83,79,85,91,80,86,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,85,85,0\n823,7004,\"F\",1060,0,1,7,NA,26,31,5,\"w\",\"M\",80,1,1,1,0,1,1,1,1,1,1,0,1,3,2,2,NA,3,121,121,5,7,2,1,39,9,23,93,90,32,16,13,116,119,131,127,10,6,14,114,111,116,113,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,25,1,1,87,92,93,115,88,103,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,121,121,0\n824,7023,\"I\",1240,0,1,7,38,28,20,3,\"w\",\"M\",93,1,1,1,0,1,1,2,2,1,1,0,0,0,1,2,NA,3,NA,NA,5,8,1,2,52,17,17,66,83,53,23,28,83,77,54,63,26,35,61,50,62,46,60,2,7,3,0,0,0,0,0,0,33,22,19,74,1,0,29,1,1,67,61,28,59,61,34,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,0,1,1,97.4281594322706,88.8482466182681,0\n825,7029,\"F\",1190,0,1,7,40,25,28,3,\"w\",\"M\",52,1,1,1,0,1,1,1,1,1,1,0,20,1,2,2,NA,3,77,77,5,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,77,77,0\n826,7035,\"I\",1840,0,1,7,46,30,31,3,\"w\",\"M\",91,1,1,2,0,2,2,1,1,1,1,1,50,0,1,2,NA,3,104,104,6,9,1,2,41,5,25,110,101,35,4,23,100,96,120,109,18,34,55,85,88,84,95,2,3,3,172,214,386,4.744186,4.630841,9.375027,38,20,22,80,1,0,32,1,1,112,100,105,108,106,107,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.86,1,1,104,104,0\n827,7043,\"I\",1630,0,1,7,43,25,28,4,\"w\",\"M\",99,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,103,103,7,8,1,2,61,13,28,120,113,61,32,25,108,109,105,108,37,27,65,104,107,99,99,2,9,3,209,219,428,8.133971,9.077626,17.2116,41,18,17,76,1,0,32,1,1,93,98,76,106,95,88,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.28,1,1,103,103,1\n828,7047,\"I\",1800,0,1,7,46,29,30,4,\"b\",\"F\",108,2,2,2,0,2,2,2,4,1,2,0,10,0,2,2,NA,3,NA,NA,3,9,1,2,23,0,17,60,NA,15,5,7,NA,NA,NA,NA,2,22,21,70,79,66,85,2,6,1,0,0,0,0,0,0,31,0,0,31,1,0,31,1,1,87,91,87,83,88,81,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,0,1,1,64.100839886316,88.2395421328917,0\n829,7050,\"F\",1920,0,1,7,45,NA,24,3,\"w\",\"M\",96,1,4,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,93,93,8,8,1,2,64,14,35,110,100,53,23,27,81,95,120,108,14,21,35,99,90,110,104,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,87,89,107,115,87,113,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,93,93,0\n830,7052,\"F\",1220,0,1,7,38,29,29,4,\"w\",\"M\",95,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,110,110,1,6,1,2,52,13,19,115,129,58,27,19,139,117,107,114,47,26,81,113,110,115,120,2,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,115,123,88,88,118,86,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,110,110,0\n831,7055,\"I\",1350,0,1,7,38,28,30,4,\"b\",\"M\",111,2,2,1,1,2,2,2,4,1,1,0,0,0,2,2,NA,1,70,70,5,7,2,3,66,12,41,83,92,39,21,16,90,85,86,84,15,17,35,71,74,73,91,2,9,1,18,0,18,1.222222,0,1.222222,43,19,0,62,170,1,30,1,1,87,96,92,82,91,84,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"1\",\"4\",\"1\",\"1\",\"2\",0,1,0.18,1,1,70,70,0\n833,7058,\"F\",1440,0,1,7,41,28,22,3,\"w\",\"M\",100,1,1,1,0,1,1,1,1,1,1,0,25,0,2,2,NA,3,85,85,4,6,2,1,75,15,45,78,81,72,28,36,66,79,93,84,33,30,68,72,65,83,87,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,81,92,101,93,86,97,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,85,85,0\n834,7059,\"F\",1530,0,1,7,41,NA,27,4,\"w\",\"F\",101,1,1,2,0,2,2,1,1,1,1,0,0,1,2,2,NA,3,99,99,1,6,2,4,22,3,13,118,102,11,5,2,93,111,108,111,1,3,9,96,98,95,103,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,93,106,94,101,98,96,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,99,99,0\n835,7068,\"I\",2440,1,1,7,48,31,17,2,\"h\",\"M\",84,3,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,66,66,8,9,1,2,65,12,29,105,97,NA,NA,NA,NA,NA,NA,NA,11,12,29,104,101,106,100,2,6,1,142,170,312,5.239437,5.041176,10.28061,38,17,10,65,1,0,35,1,0,112,125,97,110,116,103,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,\"h\",\"7\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.12,1,1,66,66,0\n836,7070,\"F\",1260,0,1,7,42,NA,24,3,\"b\",\"F\",117,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,72,72,6,8,2,4,30,5,22,78,NA,26,14,9,62,79,88,81,7,14,26,68,67,73,51,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,91,93,85,91,92,86,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,72,72,0\n837,7072,\"F\",2190,1,1,7,45,28,34,5,\"w\",\"F\",108,1,1,1,0,1,1,3,4,1,1,0,0,0,2,2,NA,3,128,128,6,9,2,4,53,14,24,127,108,47,23,16,114,125,118,124,16,15,31,119,123,111,124,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,NA,NA,134,138,108,141,134,125,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"4\",\"1\",\"1\",\"3\",1,0,0,0,1,128,128,0\n838,7073,\"F\",1580,0,1,7,40,28,25,4,\"w\",\"F\",91,1,1,2,0,2,2,1,1,1,3,1,20,0,2,2,NA,3,NA,NA,8,8,1,2,30,4,15,108,94,27,13,10,85,111,110,111,14,14,25,101,108,94,95,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,94,100,99,113,97,106,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,0,0,90.8213510064465,106.59148416782,0\n839,7085,\"I\",2030,1,1,7,47,31,28,4,\"w\",\"M\",116,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,104,104,7,7,1,2,46,9,27,120,121,20,9,9,124,120,116,120,7,15,22,112,115,106,122,2,8,3,122,128,250,5.196721,5.039062,10.23578,38,18,18,74,1,0,35,1,1,115,120,120,134,117,129,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,2.5,1,1,104,104,0\n840,7086,\"I\",1120,0,1,7,39,NA,28,4,\"w\",\"M\",113,1,1,1,0,1,1,1,1,1,1,0,10,0,2,2,NA,3,97,97,6,9,1,2,54,12,34,105,94,38,21,18,103,100,97,99,13,15,30,93,100,86,96,2,8,1,140,181,321,5.571429,6.154696,11.72612,39,18,18,75,1,0,29,1,1,117,111,96,103,114,98,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.21,1,1,97,97,0\n841,7090,\"F\",1990,0,1,7,44,29,31,5,\"w\",\"M\",90,1,1,2,0,2,2,1,1,1,1,0,12,1,2,2,NA,3,121,121,6,9,1,2,NA,NA,NA,90,97,75,28,46,76,79,110,93,15,22,40,108,100,116,88,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,78,75,73,109,75,87,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,121,121,0\n842,7102,\"F\",1660,0,1,7,39,NA,15,2,\"w\",\"M\",90,1,1,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,105,105,7,7,1,2,32,6,17,110,101,15,6,6,122,126,99,114,12,8,21,108,123,91,126,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,107,123,99,122,114,111,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,105,105,0\n843,7106,\"F\",2350,1,1,7,48,32,22,3,\"w\",\"M\",122,1,5,3,0,3,2,1,1,1,1,3,0,0,2,2,NA,3,80,80,8,9,1,2,30,6,15,58,NA,22,8,9,70,91,100,95,13,25,41,106,102,108,56,2,4,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,1,1,123,117,115,122,120,120,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,80,80,0\n844,7108,\"I\",2350,1,1,7,50,33,22,2,\"b\",\"F\",113,2,2,1,0,1,1,2,3,1,3,0,10,1,2,2,NA,3,NA,NA,7,9,1,2,52,11,22,86,83,38,25,5,100,97,91,93,10,5,19,93,105,82,109,2,5,1,182,196,378,5.236264,5.520408,10.75667,28,15,11,54,1,0,37,1,1,134,111,99,113,123,106,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"3\",\"1\",\"3\",\"2\",1,1,3.78,1,1,67.2495661517002,53.9915017870494,0\n845,7110,\"I\",1960,0,1,7,42,30,25,2,\"b\",\"F\",120,2,2,2,0,2,2,1,1,1,1,0,7,1,2,2,NA,3,62,62,5,8,1,2,42,12,25,88,96,44,16,15,84,92,99,95,23,35,59,93,88,100,85,2,3,1,203,193,396,5.374384,4.911917,10.2863,26,20,20,66,1,0,35,1,1,96,99,85,72,98,75,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.96,1,1,62,62,0\n846,7112,\"F\",940,0,1,7,38,26,20,2,\"b\",\"F\",136,2,2,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,79,79,4,7,2,4,52,9,25,90,83,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,79,79,0\n847,7113,\"F\",1880,0,1,7,46,30,25,3,\"b\",\"M\",112,2,2,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,58,58,6,8,2,4,52,6,30,71,81,17,3,11,76,81,89,84,7,10,15,84,84,87,73,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,85,96,99,95,91,96,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,58,58,0\n848,7115,\"F\",1850,0,1,7,44,31,24,3,\"w\",\"M\",102,1,1,3,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,102,102,4,8,1,2,46,10,24,129,113,42,19,20,112,144,135,144,31,25,58,111,107,113,112,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,104,111,79,113,107,92,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,102,102,0\n849,7116,\"F\",2340,1,1,7,31,32,16,2,\"w\",\"M\",87,1,1,1,0,1,1,1,1,1,1,0,20,0,1,2,NA,3,81,81,7,9,2,4,78,17,44,98,96,75,33,40,85,81,77,74,34,38,72,87,83,94,93,2,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,0,0,77,79,85,91,77,86,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,81,81,0\n850,7119,\"F\",1120,0,1,7,37,28,27,3,\"w\",\"F\",77,1,1,4,0,4,4,2,1,1,1,0,2,0,2,2,NA,3,92,92,5,6,2,4,43,14,16,43,NA,53,31,12,19,47,45,44,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,92,92,0\n851,7121,\"F\",1420,0,1,7,40,26,27,3,\"w\",\"M\",96,1,1,2,0,2,2,1,1,1,1,0,20,0,2,2,NA,3,NA,NA,1,6,1,1,NA,NA,NA,52,NA,21,8,7,NA,NA,NA,NA,9,16,29,78,71,91,70,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,83,90,90,78,85,81,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,69.7689878071284,83.8015028327121,0\n852,7123,\"F\",2010,1,1,7,45,NA,22,4,\"w\",\"F\",115,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,106,106,6,8,2,4,17,0,12,93,100,5,3,1,102,102,108,106,5,1,6,105,108,100,104,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,125,120,94,91,122,90,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,106,106,0\n853,7133,\"F\",1780,0,1,7,44,30,34,5,\"w\",\"M\",97,4,4,2,0,2,2,1,1,4,1,0,0,0,2,2,NA,3,84,84,8,9,1,2,54,8,35,86,77,24,8,8,98,112,112,114,8,12,27,105,97,113,93,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,103,99,103,120,102,111,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"4\",\"1\",\"1\",0,0,0,0,0,84,84,0\n854,7136,\"F\",2250,1,1,7,46,30,34,4,\"w\",\"F\",93,4,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,85,85,6,6,1,2,52,5,35,95,79,52,24,20,86,91,118,104,16,29,45,126,123,125,122,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,145,111,99,131,128,117,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,85,85,0\n855,7139,\"F\",1390,0,1,7,38,28,26,3,\"w\",\"F\",115,1,1,1,0,1,1,1,1,1,2,0,15,1,2,2,NA,3,81,81,3,8,2,1,75,15,36,98,96,38,17,14,92,100,100,100,17,20,39,89,85,95,102,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,99,100,79,88,99,80,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,81,81,0\n856,7141,\"I\",640,0,1,7,32,21,34,5,\"w\",\"F\",74,1,1,2,0,3,2,1,1,1,1,0,20,2,2,2,NA,3,120,120,3,6,2,4,65,8,44,68,93,38,14,21,90,84,91,86,12,29,38,70,65,79,83,1,9,3,218,228,446,5.577982,4.758772,10.33675,36,20,22,78,1,0,25,1,1,104,94,92,85,98,86,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.46,1,1,120,120,1\n857,7148,\"F\",2360,1,1,7,46,31,33,5,\"w\",\"M\",68,1,1,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,112,112,9,9,1,2,52,8,32,120,111,27,6,20,93,110,131,122,3,9,13,123,118,126,114,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,117,117,111,142,117,128,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,112,112,0\n858,7150,\"F\",1460,0,1,7,39,27,23,2,\"w\",\"F\",91,1,1,1,0,1,1,1,1,1,1,0,20,3,2,2,NA,3,115,115,8,9,1,2,39,7,25,95,90,22,13,7,95,99,118,109,7,8,19,86,94,80,96,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,NA,107,96,88,NA,90,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n859,7153,\"I\",1860,0,1,7,42,30,18,2,\"w\",\"F\",103,1,1,1,0,1,1,2,2,1,2,0,0,1,2,2,NA,3,NA,NA,4,7,1,2,19,3,11,93,97,26,10,9,NA,NA,NA,NA,9,13,22,107,112,100,100,2,7,1,0,0,0,0,0,0,13,0,0,13,1,0,34,1,1,119,118,128,123,117,125,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,0,1,1,82.2263882723615,61.4011059739228,0\n860,7154,\"F\",1900,0,1,7,44,30,23,3,\"w\",\"M\",86,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,78,78,7,9,2,1,49,9,27,110,90,31,10,21,NA,NA,NA,NA,9,23,36,80,81,82,88,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,68,69,115,99,66,106,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,78,78,0\n861,7156,\"F\",1070,0,1,7,37,27,16,2,\"b\",\"M\",111,2,2,1,0,1,1,2,2,1,2,0,0,1,2,2,NA,3,87,87,1,4,1,2,110,26,62,76,69,102,43,54,88,82,92,86,22,31,61,90,85,96,74,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,0,99,100,96,95,99,94,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,87,87,0\n862,7158,\"F\",2420,1,1,7,46,32,31,4,\"w\",\"M\",89,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,100,100,9,9,2,3,67,5,44,95,92,24,7,12,92,94,119,106,15,28,44,116,104,127,98,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,84,84,92,108,83,98,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,100,100,0\n863,7162,\"F\",2460,1,1,7,45,33,24,3,\"w\",\"M\",92,1,1,5,1,4,6,1,1,1,1,0,0,0,2,2,NA,1,98,98,8,9,1,2,28,4,21,90,77,19,10,7,93,90,101,95,4,3,9,90,88,95,76,2,6,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,172,1,35,0,0,83,73,76,106,77,88,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,98,98,0\n865,7168,\"F\",1900,0,1,7,40,32,32,4,\"w\",\"F\",91,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,121,121,2,4,1,2,45,10,21,127,125,51,21,19,117,114,114,115,19,19,40,126,122,127,114,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,94,108,95,123,99,108,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,121,121,0\n866,7172,\"F\",1540,0,1,7,39,27,31,5,\"w\",\"M\",95,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,125,125,6,6,1,2,64,11,32,115,110,41,13,17,113,125,103,116,14,22,40,132,144,113,120,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,1,1,131,123,118,129,125,125,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,125,125,0\n867,7173,\"I\",2260,1,1,7,46,32,25,2,\"w\",\"F\",117,1,1,4,0,4,3,1,1,1,2,3,20,0,2,2,NA,3,78,78,8,9,2,1,50,18,20,88,77,23,17,2,80,89,86,86,NA,NA,NA,79,64,100,79,2,10,1,171,201,372,4.77193,4.686567,9.458497,43,23,13,79,1,0,36,0,0,84,76,71,87,79,75,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,3.72,0,0,78,78,0\n868,7177,\"F\",1500,0,1,7,42,29,18,3,\"w\",\"M\",90,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,98,98,4,6,1,2,44,7,26,76,90,19,7,9,74,102,108,106,12,16,29,116,119,110,106,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,125,120,108,129,122,120,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,98,98,0\n869,7178,\"F\",1690,0,1,7,31,29,26,3,\"w\",\"F\",71,1,1,3,0,3,3,1,1,1,1,0,15,0,2,2,NA,3,109,109,5,7,2,2,32,1,19,105,100,39,16,13,98,100,108,104,56,63,121,99,94,106,110,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,93,93,94,106,92,98,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,109,109,0\n870,7187,\"F\",2120,1,1,7,46,31,18,2,\"b\",\"F\",109,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,70,70,7,8,1,2,48,12,26,100,85,27,15,6,90,100,105,103,12,23,34,93,98,89,81,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,121,109,89,105,115,96,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,70,70,0\n871,7195,\"F\",1500,0,1,7,42,28,32,2,\"w\",\"M\",98,1,2,2,0,2,1,1,1,1,2,1,10,0,2,2,NA,3,74,74,2,5,2,4,58,8,33,64,63,41,14,23,75,75,66,68,22,23,45,62,78,50,85,1,3,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,71,76,46,50,72,38,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,0,0,74,74,0\n872,7199,\"I\",2040,1,1,7,43,31,16,1,\"w\",\"M\",78,1,3,1,0,1,1,2,3,1,2,0,0,0,1,2,NA,3,NA,NA,8,8,2,2,72,24,39,100,87,78,38,31,82,100,95,97,51,45,104,106,108,103,106,2,9,3,121,135,256,4.859504,4.859259,9.718763,44,19,20,83,1,0,33,NA,NA,92,94,96,127,92,111,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"3\",\"1\",\"2\",\"2\",0,1,2.56,0,0,73.0811169013567,75.1097088556946,0\n873,7200,\"I\",1330,0,1,7,38,26,35,5,\"w\",\"F\",84,4,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,120,120,8,8,2,1,14,4,7,132,124,4,1,1,127,125,137,134,5,3,9,127,122,129,115,2,9,1,212,218,430,6.283019,6.036697,12.31972,41,21,20,82,1,0,30,1,1,99,111,115,113,105,114,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.3,1,1,120,120,1\n874,7201,\"F\",2300,1,1,7,46,30,30,4,\"w\",\"M\",89,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,84,84,7,8,1,4,33,7,21,122,94,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,84,84,0\n875,7208,\"F\",2460,1,1,7,45,31,42,5,\"w\",\"M\",100,1,1,3,0,3,3,1,1,1,1,0,10,2,2,2,NA,3,143,143,8,9,1,2,50,8,31,93,109,57,23,33,114,100,92,96,6,23,38,97,99,96,103,2,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,104,111,92,88,107,88,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,143,143,0\n876,7216,\"I\",1136,0,1,7,38,25,24,4,\"w\",\"F\",91,5,5,2,0,1,2,2,1,1,0,0,0,0,2,2,NA,3,79,79,1,6,1,2,82,17,49,52,63,57,28,17,39,49,45,44,31,45,78,49,55,50,40,1,6,2,49,0,49,4.55102,0,4.55102,29,19,21,69,1,0,30,1,1,42,60,33,34,48,22,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"0\",\"2\",1,1,0.49,1,1,79,79,0\n877,7220,\"I\",2450,1,1,7,46,33,30,3,\"w\",\"F\",92,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,78,78,5,7,1,2,60,14,29,105,100,19,10,2,106,114,111,114,14,11,26,92,93,91,115,2,5,1,3,0,3,5.666667,0,5.666667,35,2,0,37,1,0,37,1,1,124,109,117,119,116,120,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0.03,1,1,78,78,0\n878,7221,\"F\",1900,0,1,7,43,30,27,3,\"w\",\"F\",88,1,1,3,0,3,3,2,2,1,1,0,20,0,2,2,NA,3,72,72,7,7,2,1,29,3,18,81,75,23,10,10,87,82,93,86,9,15,26,93,83,107,92,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,83,89,89,97,85,92,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,72,72,0\n879,7223,\"I\",980,0,1,7,36,23,32,5,\"b\",\"M\",107,2,2,1,0,1,1,2,4,1,1,0,0,0,2,2,NA,3,121,121,2,7,2,4,35,3,25,108,114,42,9,22,109,117,111,116,12,33,52,108,119,95,102,2,8,1,227,241,468,8.255507,6.228216,14.48372,37,21,19,77,1,0,30,1,1,127,108,92,99,117,94,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,4,\"b\",\"7\",\"4\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,4.68,1,1,121,121,1\n880,7227,\"I\",1860,0,1,7,43,30,26,3,\"w\",\"F\",107,1,1,2,0,2,2,2,1,1,2,1,20,0,2,2,NA,3,81,81,5,7,1,2,37,8,20,113,122,19,7,6,106,114,111,114,15,16,35,110,111,108,109,2,3,1,191,170,361,5.340314,5.1,10.44031,42,20,19,81,1,0,34,1,1,119,126,118,125,122,122,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",1,1,3.61,1,1,81,81,0\n881,7229,\"F\",2430,1,1,7,49,30,23,2,\"w\",\"F\",113,1,1,3,0,3,3,2,2,1,1,0,10,0,2,2,NA,3,NA,NA,7,9,1,2,42,7,25,93,89,42,18,14,95,96,85,90,11,33,44,107,111,102,100,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,87,86,99,103,86,100,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,93.1265440791457,84.141404711532,0\n882,7230,\"I\",1920,0,1,7,43,31,31,5,\"w\",\"M\",119,1,1,2,0,2,2,3,4,1,1,0,10,0,2,2,NA,3,103,103,8,8,1,2,64,14,35,100,106,67,29,32,94,100,101,101,24,34,59,100,104,96,115,2,6,1,196,61,257,4.683673,4.491803,9.175477,39,15,7,61,1,0,35,1,1,97,108,100,104,101,101,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"4\",\"1\",\"1\",\"3\",0,1,2.57,1,1,103,103,0\n883,7231,\"I\",2140,1,1,7,45,32,19,2,\"w\",\"F\",120,1,1,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,NA,NA,7,8,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,23,0,0,23,1,0,38,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,0,0,0,95.3127403542045,91.8685381673718,0\n884,7233,\"I\",2360,1,1,7,44,31,27,1,\"w\",\"M\",97,1,2,1,0,1,1,2,2,1,3,0,50,5,1,2,NA,3,87,87,8,9,1,2,51,4,35,108,112,16,2,8,112,109,100,105,4,20,29,91,97,86,99,2,2,1,147,188,335,5.571429,5.074468,10.6459,39,21,22,82,1,0,36,1,1,114,110,94,101,112,96,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"2\",\"1\",\"3\",\"2\",0,1,3.35,1,1,87,87,0\n885,7236,\"I\",2450,1,1,7,47,30,34,5,\"w\",\"F\",81,1,1,2,0,2,1,1,1,1,1,1,0,0,2,2,NA,3,120,120,7,9,1,2,27,10,8,144,125,17,13,1,95,129,116,125,20,10,29,122,129,108,120,2,8,1,0,0,0,0,0,0,2,0,0,2,1,0,34,1,1,126,126,147,138,125,145,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,120,120,0\n886,7238,\"F\",1940,0,1,7,46,29,19,2,\"w\",\"M\",101,4,4,1,0,1,1,1,1,4,3,0,0,0,2,2,NA,3,NA,NA,8,9,1,2,69,11,40,48,NA,37,16,19,26,52,57,50,NA,NA,NA,NA,NA,NA,NA,NA,NA,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"4\",\"3\",\"1\",0,0,0,0,0,62.7197516378798,80.9383920131736,0\n888,7240,\"F\",1540,0,1,7,42,30,23,4,\"b\",\"F\",136,2,2,5,2,4,5,2,1,1,2,0,0,3,1,2,NA,1,88,88,6,7,2,2,29,7,19,73,66,29,12,9,54,72,81,74,4,27,34,93,88,100,66,NA,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,173,1,36,0,1,90,94,95,104,91,99,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"2\",\"1\",\"1\",\"2\",\"2\",1,0,0,0,0,88,88,0\n890,7242,\"F\",1860,0,1,7,44,31,23,4,\"b\",\"M\",115,2,2,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,90,90,5,7,2,2,59,10,32,127,111,26,4,17,NA,NA,NA,NA,15,40,59,86,83,91,115,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,175,1,35,1,1,119,106,97,111,113,103,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,90,90,0\n891,7248,\"F\",1840,0,1,7,43,31,27,4,\"w\",\"M\",112,1,1,1,0,1,1,1,1,1,1,0,10,0,2,2,NA,3,NA,NA,3,8,2,1,26,4,15,118,103,13,3,7,NA,NA,NA,NA,6,7,15,116,131,98,127,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,105,114,95,125,109,111,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,71.8825096888367,104.899892217182,0\n892,7249,\"I\",1400,0,1,7,40,28,33,4,\"w\",\"F\",118,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,113,113,2,7,2,1,59,13,31,95,97,34,21,9,109,115,107,112,21,9,30,116,123,106,118,1,5,2,0,0,0,0,0,0,45,24,22,91,1,0,31,0,1,104,105,107,119,104,114,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,113,113,0\n893,7253,\"I\",2370,1,1,7,48,30,38,5,\"w\",\"M\",102,4,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,109,109,9,9,1,2,50,15,24,103,106,24,3,16,109,116,104,111,4,17,23,111,124,95,116,2,9,1,184,160,344,8.005435,8.11875,16.12418,37,18,20,75,1,0,37,1,1,119,117,131,120,117,125,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.44,1,1,109,109,0\n894,7255,\"I\",1060,0,1,7,38,25,26,2,\"b\",\"F\",113,2,2,2,1,2,3,2,4,1,2,1,8,0,2,2,NA,1,73,73,8,8,1,4,3,0,3,68,69,15,4,6,19,85,89,86,11,24,35,78,71,91,80,2,1,3,202,232,434,4.509901,4.836207,9.346108,31,17,18,66,178,1,30,1,1,78,76,69,77,75,68,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"1\",\"4\",\"1\",\"2\",\"2\",1,1,4.34,1,1,73,73,1\n896,7258,\"F\",1960,0,1,7,44,32,30,5,\"w\",\"M\",104,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,5,9,2,4,51,8,34,121,113,22,9,9,112,124,103,115,17,21,44,104,117,90,125,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,124,122,97,115,122,106,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,86.2183123430383,113.583162430611,0\n897,7259,\"F\",1900,0,1,7,43,30,30,2,\"w\",\"F\",103,1,1,4,0,4,4,1,1,1,0,0,30,0,1,2,NA,3,84,84,5,6,1,4,57,10,32,78,75,21,6,10,100,100,88,93,8,25,36,81,84,80,104,2,3,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,NA,NA,89,86,88,88,87,86,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"0\",\"1\",1,0,0,1,1,84,84,0\n898,7264,\"F\",1940,0,1,7,43,29,24,4,\"w\",\"F\",97,5,5,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,NA,NA,9,9,1,2,43,13,25,73,69,31,16,10,80,96,107,101,21,24,49,107,108,104,92,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,143,126,103,125,133,114,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"4\",\"1\",\"1\",1,0,0,0,0,91.689147204716,103.9869124909,0\n900,7266,\"I\",1940,0,1,7,45,30,34,2,\"b\",\"F\",99,2,2,5,2,4,5,1,2,1,1,0,0,0,2,2,NA,1,56,56,2,7,2,4,30,3,16,98,94,5,0,3,81,92,91,91,6,19,27,86,88,87,74,2,6,1,202,135,337,4.589109,4.644444,9.233553,34,17,18,69,179,1,34,0,1,80,84,94,97,81,94,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"2\",\"2\",\"1\",\"1\",\"1\",1,1,3.37,0,0,56,56,0\n901,7268,\"F\",1890,0,1,7,42,30,28,2,\"w\",\"M\",77,1,1,2,0,2,2,1,1,1,1,0,15,0,2,2,NA,3,96,96,2,6,2,1,39,8,23,100,107,29,9,14,111,112,120,118,4,11,16,127,115,135,128,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,150,113,97,128,131,114,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,96,96,0\n902,7271,\"I\",2280,1,1,7,47,32,19,2,\"w\",\"M\",101,5,5,3,0,3,3,1,1,1,2,0,5,0,2,2,NA,3,NA,NA,8,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,2,0,0,2,2,0,34,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,0,0,0,81.098549876387,89.5961133361412,0\n903,7272,\"F\",1030,0,1,7,35,25,32,3,\"w\",\"M\",82,4,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,79,79,4,7,2,1,71,23,35,73,87,24,15,9,83,91,80,84,16,20,39,78,83,78,86,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,88,83,101,93,85,97,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,79,79,0\n904,7275,\"F\",2310,1,1,7,46,32,39,5,\"w\",\"F\",111,1,1,1,0,1,1,1,1,1,1,0,0,1,2,2,NA,3,123,123,8,9,2,4,34,3,20,129,119,11,7,2,124,130,152,144,11,14,25,147,134,152,113,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,134,137,155,150,135,156,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,123,123,0\n905,7276,\"I\",2110,1,1,7,45,32,25,2,\"w\",\"M\",105,1,1,1,1,1,2,1,1,1,2,0,0,0,2,2,NA,1,90,90,9,9,2,1,26,2,17,98,109,26,11,15,94,96,101,99,8,13,22,111,104,117,112,2,9,1,201,237,438,4.825871,4.818565,9.644436,44,20,14,78,182,1,35,1,1,106,92,79,115,98,94,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"1\",\"1\",\"1\",\"2\",\"1\",0,1,4.38,1,1,90,90,1\n907,7278,\"I\",2450,1,1,7,47,32,19,3,\"w\",\"F\",104,1,1,1,0,2,1,2,2,1,2,0,20,0,1,2,NA,3,93,93,7,8,2,1,50,6,29,127,104,39,23,13,95,99,111,105,24,28,49,113,104,123,108,2,8,1,185,185,370,6.2,5.135135,11.33514,29,21,19,69,1,0,36,1,1,119,120,97,111,118,103,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,1,3.7,1,1,93,93,0\n908,7279,\"I\",1540,0,1,7,41,30,22,2,\"w\",\"M\",123,5,5,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,70,70,6,8,2,1,53,14,31,98,92,34,12,17,75,79,91,83,7,15,22,93,91,96,87,2,9,1,208,211,419,5.115385,4.938389,10.05377,44,20,21,85,1,0,34,1,1,94,94,115,95,93,103,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"4\",\"1\",\"1\",0,1,4.19,1,1,70,70,1\n909,7281,\"F\",1790,0,1,7,42,28,25,5,\"w\",\"F\",84,1,1,1,1,1,2,1,1,1,2,0,2,0,2,2,NA,1,NA,NA,8,9,1,2,28,4,18,88,87,13,8,5,NA,NA,NA,NA,19,28,45,120,112,125,109,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,184,1,34,1,1,117,121,99,122,118,111,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"1\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,78.345550166498,105.991465258236,0\n911,7289,\"F\",2240,1,1,7,43,32,28,3,\"b\",\"F\",115,2,2,3,0,3,3,3,2,1,3,0,10,2,1,2,NA,3,NA,NA,7,10,2,4,79,10,51,78,89,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,0,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"0\",\"2\",\"1\",\"3\",\"3\",1,0,0,1,1,90.0240201349091,52.2961520593751,0\n912,7290,\"F\",2110,1,1,7,45,30,35,3,\"w\",\"F\",115,1,1,7,0,7,7,3,3,1,1,0,20,0,2,2,NA,3,91,91,2,6,1,2,29,8,13,81,85,27,13,7,NA,NA,NA,NA,8,13,24,116,123,106,109,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,145,126,118,133,135,127,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"3\",\"1\",\"1\",\"3\",1,0,0,1,1,91,91,0\n913,7294,\"I\",2390,1,1,7,46,30,30,4,\"w\",\"F\",95,1,3,1,0,2,1,2,2,1,1,0,0,0,2,2,NA,3,92,92,7,9,1,2,31,5,16,139,125,16,11,5,133,126,119,125,7,17,23,123,127,115,140,2,9,3,193,228,421,5.471503,4.982456,10.45396,42,19,21,82,1,0,36,1,1,123,126,103,137,124,121,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,4.21,1,1,92,92,1\n914,7295,\"F\",1720,0,1,7,49,29,25,3,\"w\",\"F\",120,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,89,89,7,9,2,4,66,12,32,95,89,68,39,18,84,95,100,97,17,18,41,101,100,103,98,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,38,1,1,116,120,118,106,117,111,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,89,89,0\n915,7298,\"F\",920,0,1,7,39,26,33,4,\"b\",\"M\",95,2,2,2,0,2,2,2,4,1,1,0,0,0,2,2,NA,3,106,106,5,6,2,4,65,9,43,48,43,14,3,6,66,65,97,78,1,3,6,70,56,90,48,2,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,93,100,82,76,95,75,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,1,1,106,106,0\n916,7299,\"I\",1550,0,1,7,42,27,27,4,\"w\",\"M\",128,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,89,89,9,9,1,2,45,10,26,122,123,23,11,7,130,116,101,110,10,14,24,105,111,98,112,2,9,1,218,209,427,8.885321,9.066986,17.95231,47,19,21,87,1,0,33,1,1,138,122,117,115,129,117,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.27,1,1,89,89,1\n917,7302,\"I\",2000,0,1,7,45,32,21,3,\"b\",\"M\",108,2,2,2,1,2,3,2,3,1,2,1,0,0,2,2,NA,1,73,NA,7,8,1,2,56,17,28,71,53,45,25,18,77,81,77,77,14,40,60,86,88,87,85,2,11,1,191,138,329,4.628272,4.855072,9.483345,36,20,8,64,186,1,35,1,1,87,83,89,100,84,94,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"1\",\"3\",\"1\",\"2\",\"2\",0,1,3.29,1,1,73,73,0\n919,7307,\"F\",2040,1,1,7,42,29,33,5,\"w\",\"M\",92,4,4,4,0,4,4,1,1,4,1,0,0,0,2,2,NA,3,97,97,9,9,1,2,45,9,28,108,97,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"4\",\"1\",\"1\",0,0,0,1,1,97,97,0\n920,7308,\"F\",2470,1,1,7,47,31,28,2,\"w\",\"F\",86,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,108,108,5,7,1,2,16,5,7,64,72,12,9,1,67,77,96,85,3,14,16,89,81,100,69,2,3,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,80,84,96,82,81,87,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,108,108,0\n921,7309,\"F\",2470,1,1,7,47,33,40,5,\"w\",\"M\",74,1,1,2,0,2,1,1,1,1,1,1,0,0,2,2,NA,3,128,NA,8,9,1,2,50,11,29,118,110,37,15,17,131,125,130,130,17,28,45,137,131,139,136,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,119,136,118,129,125,125,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,128,128,0\n922,7318,\"I\",1970,0,1,7,41,30,24,3,\"w\",\"F\",112,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,7,9,1,2,37,6,22,134,122,24,14,6,117,120,137,131,11,3,17,111,100,121,100,2,7,1,0,0,0,0,0,0,23,0,0,23,1,0,33,0,1,126,123,99,108,125,103,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,115,115,0\n923,7319,\"F\",2290,1,1,7,47,34,31,2,\"w\",\"F\",89,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,110,110,7,9,2,3,43,11,21,78,72,44,23,21,96,100,110,105,8,15,27,99,98,100,103,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,96,99,97,91,98,92,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,110,110,0\n924,7323,\"F\",2290,1,1,7,48,31,29,3,\"w\",\"M\",87,1,1,2,0,2,2,1,1,1,2,0,20,0,2,2,NA,3,106,106,1,2,2,4,43,10,26,113,102,38,15,21,97,106,103,105,15,24,38,107,107,107,109,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,108,120,108,120,113,114,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,106,106,0\n925,7324,\"F\",2490,1,1,7,45,31,24,3,\"h\",\"F\",99,3,3,1,0,1,1,2,1,1,2,0,0,0,2,2,NA,3,83,83,7,8,2,3,76,11,35,98,107,41,20,16,91,95,108,101,19,29,56,98,97,100,101,2,4,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,94,100,92,79,97,83,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,2,\"h\",\"7\",\"2\",\"0\",\"1\",\"1\",\"2\",\"2\",1,0,0,1,1,83,83,0\n926,7331,\"F\",1920,0,1,7,46,33,33,4,\"w\",\"F\",102,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,113,113,7,8,1,2,58,15,35,95,85,22,11,7,88,91,124,108,29,22,49,107,105,110,90,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,188,1,34,1,1,119,108,110,127,113,120,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,113,113,0\n928,7340,\"F\",2230,1,1,7,44,32,32,4,\"w\",\"F\",101,4,4,2,0,2,2,1,1,3,1,1,0,0,2,2,NA,3,NA,NA,6,9,1,2,NA,NA,NA,52,NA,33,19,8,57,75,107,89,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"3\",\"1\",\"1\",1,0,0,0,0,89.6765416161008,94.4765180151093,0\n929,7354,\"F\",2430,1,1,7,46,31,19,3,\"w\",\"F\",105,1,1,1,0,1,1,1,1,1,2,0,0,0,2,2,NA,3,99,99,8,9,1,2,57,13,30,81,96,27,13,9,87,84,93,87,14,24,40,90,89,93,92,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,95,95,97,80,95,86,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,99,99,0\n930,7355,\"I\",1810,0,1,7,40,28,27,4,\"w\",\"F\",60,1,1,2,0,3,2,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,2,7,2,4,53,12,32,98,108,25,18,5,NA,NA,NA,NA,8,17,25,90,92,89,99,2,8,1,0,0,0,0,0,0,39,2,0,41,1,0,33,1,1,101,120,89,87,109,85,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,76.6402449599858,95.3165178993949,0\n931,7362,\"F\",2180,1,1,7,46,32,21,2,\"w\",\"M\",137,1,1,1,0,1,1,2,1,1,2,0,10,0,2,2,NA,3,NA,NA,8,9,1,2,64,12,35,73,69,77,35,41,NA,NA,NA,NA,5,21,29,69,71,72,88,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,83,76,66,81,78,68,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"2\",0,0,0,1,1,72.5870813324689,87.2899289222684,0\n932,7366,\"F\",2140,1,1,7,45,31,27,3,\"w\",\"M\",91,1,3,3,0,3,3,3,4,1,2,1,5,1,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"4\",\"1\",\"2\",\"3\",0,0,0,1,1,69.58031216245,97.0864750108184,0\n933,7368,\"F\",2040,1,1,7,43,29,33,5,\"w\",\"M\",116,1,2,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,133,133,6,9,1,2,40,6,24,86,89,27,11,12,92,99,118,109,11,11,24,116,115,113,98,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,115,109,121,124,111,125,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,133,133,0\n934,7369,\"I\",1670,0,1,7,42,30,25,3,\"w\",\"M\",62,1,1,2,0,2,2,1,1,1,1,0,10,0,2,2,NA,3,81,81,1,3,2,4,26,5,14,98,94,57,27,25,97,97,112,105,14,19,32,92,88,99,113,2,9,1,183,191,374,4.491803,4.47644,8.968243,37,19,20,76,1,0,31,1,1,109,99,125,124,104,127,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.74,1,1,81,81,0\n935,7370,\"F\",2270,1,1,7,43,33,33,2,\"b\",\"F\",117,2,2,4,0,4,4,1,1,1,2,2,20,0,1,2,NA,3,103,103,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,103,103,0\n936,7371,\"F\",1670,0,1,7,42,30,20,2,\"w\",\"F\",132,1,1,1,0,1,1,2,1,1,1,0,5,1,2,2,NA,3,78,78,2,7,1,2,94,8,61,86,89,67,31,31,100,92,99,95,30,46,81,99,101,98,94,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,94,99,97,105,96,100,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"2\",1,0,0,1,1,78,78,0\n937,7375,\"I\",1670,0,1,7,42,30,28,3,\"w\",\"F\",109,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,110,110,7,9,1,2,39,8,19,118,115,28,11,9,108,124,122,125,2,0,5,108,114,100,104,2,9,1,222,234,456,8.306306,8.055556,16.36186,6,20,21,47,190,1,34,NA,NA,136,120,127,120,127,124,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",1,1,4.56,0,1,110,110,1\n939,7378,\"I\",2140,1,1,7,43,31,23,4,\"w\",\"M\",106,1,1,1,0,1,1,1,1,1,1,0,8,0,2,2,NA,3,124,124,7,9,1,2,59,17,31,122,118,45,17,22,120,112,118,116,24,22,53,121,123,115,120,2,6,1,183,202,385,5.224044,4.980198,10.20424,44,17,22,83,1,0,35,1,1,146,135,101,128,138,117,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.85,1,1,124,124,0\n940,7391,\"F\",1950,0,1,7,43,30,29,3,\"b\",\"M\",110,2,2,4,0,4,4,4,4,1,2,2,10,4,1,2,NA,3,86,86,7,8,1,2,44,7,29,100,92,65,26,30,102,96,86,91,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"0\",\"4\",\"1\",\"2\",\"4\",0,0,0,0,0,86,86,0\n942,7393,\"I\",2000,0,1,7,43,30,21,2,\"b\",\"F\",113,2,2,2,2,1,2,2,4,1,1,0,20,0,2,2,NA,1,78,78,8,8,1,1,52,14,29,90,79,50,21,18,81,87,89,87,8,18,27,88,92,86,98,2,3,1,222,217,439,4.554054,4.437788,8.991842,39,21,20,80,191,1,34,1,1,138,116,107,86,125,95,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"2\",\"4\",\"1\",\"1\",\"2\",1,1,4.39,1,1,78,78,1\n943,7395,\"I\",1620,0,1,7,42,28,25,2,\"w\",\"M\",76,1,4,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,62,62,1,6,2,1,33,4,19,86,93,28,8,15,97,86,101,93,19,25,41,98,94,103,92,2,1,1,167,145,312,4.808383,4.668966,9.477349,32,21,2,55,1,0,31,1,1,88,84,90,97,85,92,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.12,1,1,62,62,0\n944,7398,\"F\",2270,1,1,7,43,32,27,5,\"w\",\"F\",97,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,93,93,9,9,1,2,26,4,17,118,111,9,2,6,96,101,112,107,0,10,13,111,106,115,112,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,103,103,103,120,104,111,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,93,93,0\n945,7401,\"I\",1410,0,1,7,39,27,33,1,\"w\",\"M\",108,5,2,5,0,8,5,3,4,1,2,4,60,0,1,2,NA,3,NA,NA,6,8,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,4,0,0,4,1,0,31,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"4\",\"1\",\"2\",\"3\",0,1,0,0,0,92.6516373812913,76.4679561799999,0\n946,7403,\"F\",1140,0,1,7,36,26,34,5,\"w\",\"F\",98,1,1,1,0,1,1,1,1,1,1,0,0,0,1,2,NA,3,109,109,7,9,2,4,26,3,13,113,102,14,6,1,98,106,107,107,7,7,14,97,97,98,99,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,98,114,76,87,105,78,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,109,109,0\n947,7406,\"F\",2470,1,1,7,46,32,32,4,\"w\",\"F\",82,4,4,1,0,1,1,1,1,3,1,0,0,0,2,2,NA,3,NA,NA,3,8,2,1,45,10,24,81,75,4,2,0,85,131,133,135,6,4,14,127,121,130,109,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,129,119,117,128,123,125,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"3\",\"1\",\"1\",1,0,0,0,0,90.4342842796507,89.8692234268908,0\n948,7412,\"F\",2200,1,1,7,44,30,17,2,\"b\",\"F\",86,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,NA,NA,7,9,2,2,71,18,35,68,66,25,11,12,80,99,80,88,10,24,37,87,93,82,85,2,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,99,104,115,96,101,103,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,\"b\",\"7\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,67.0959866258775,64.7457107540959,0\n949,7413,\"F\",2270,1,1,7,48,32,32,5,\"w\",\"M\",97,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,100,100,6,8,1,2,51,7,24,108,114,34,17,15,111,100,104,102,14,29,45,119,114,120,121,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,107,118,87,114,111,98,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,100,100,0\n951,7417,\"F\",1870,0,1,7,43,29,32,4,\"w\",\"F\",112,1,1,2,2,1,2,1,1,1,1,0,10,0,1,2,NA,1,NA,NA,6,8,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,193,1,35,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,76.9153633681128,95.0751193565526,0\n952,7420,\"I\",1810,0,1,7,45,30,20,3,\"w\",\"F\",76,1,3,2,0,2,2,2,1,1,1,0,0,0,2,2,NA,3,86,86,8,6,1,2,23,7,11,59,79,89,47,26,54,66,45,51,47,66,117,47,56,46,68,1,5,2,170,170,340,4.764706,4.582353,9.347059,35,17,12,64,1,0,32,0,1,39,41,23,43,35,20,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",1,1,3.4,0,0,86,86,0\n953,7422,\"F\",1230,0,1,7,40,28,20,3,\"w\",\"M\",137,1,1,2,0,2,2,1,1,1,1,0,4,0,2,2,NA,3,77,77,9,9,1,2,32,6,15,81,81,60,22,34,NA,NA,NA,NA,39,48,90,86,88,87,79,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,0,88,95,93,97,91,94,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,2,\"w\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,77,77,0\n954,7424,\"I\",1720,0,1,7,45,31,27,5,\"w\",\"M\",94,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,113,113,5,7,1,4,76,22,36,118,110,53,25,24,114,115,110,114,10,14,23,121,124,112,116,2,8,1,216,211,427,4.592593,4.876777,9.46937,41,20,19,80,1,0,34,1,1,133,121,83,96,127,87,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.27,1,1,113,113,1\n955,7427,\"I\",1440,0,1,7,39,28,22,5,\"w\",\"M\",100,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,93,93,8,9,2,4,20,2,8,115,100,24,13,5,110,119,126,124,11,9,19,121,115,121,95,2,9,1,208,207,415,4.490385,4.415459,8.905844,35,21,18,74,1,0,31,1,0,106,116,107,128,110,120,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.15,1,1,93,93,1\n956,7428,\"I\",2340,1,1,7,44,31,20,2,\"w\",\"F\",110,1,1,2,0,2,2,1,1,1,2,0,30,0,2,2,NA,3,76,76,6,8,2,4,NA,NA,NA,95,94,47,16,24,108,105,119,113,27,26,62,102,101,103,92,2,3,1,0,0,0,0,0,0,0,0,0,0,1,0,34,NA,NA,115,117,96,118,115,106,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,1,0,1,1,76,76,0\n957,7431,\"F\",1360,0,1,7,38,27,31,3,\"b\",\"M\",104,2,2,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,95,95,4,7,2,3,54,15,27,81,107,24,9,6,108,104,124,115,20,28,57,101,100,102,104,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,110,104,87,104,107,94,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,2,\"b\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,95,95,0\n958,7432,\"F\",1630,0,1,7,42,30,26,3,\"h\",\"F\",99,3,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,98,98,8,9,2,4,36,9,16,93,81,65,23,25,85,90,92,90,23,22,50,96,105,87,108,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,94,92,89,110,92,98,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,2,\"h\",\"7\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,98,98,0\n959,7442,\"I\",1550,0,1,7,39,29,33,5,\"b\",\"F\",89,2,1,3,0,3,3,3,1,1,0,0,2,0,1,2,NA,3,NA,NA,6,7,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,4,0,0,4,1,0,31,0,1,NA,NA,NA,NA,NA,NA,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,4,\"b\",\"7\",\"4\",\"0\",\"1\",\"1\",\"0\",\"3\",1,1,0,0,0,91.693733835031,137.79316039219,0\n960,7444,\"I\",1550,0,1,7,41,29,24,4,\"w\",\"M\",110,1,1,1,0,1,1,2,4,1,1,0,10,0,2,2,NA,3,87,87,8,10,1,4,66,11,40,103,101,85,35,47,102,100,101,101,38,56,98,110,111,108,106,2,9,1,215,217,432,4.930233,4.875576,9.805809,41,18,19,78,1,0,34,1,1,109,116,93,110,111,100,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,4.32,1,1,87,87,1\n961,7449,\"F\",1730,0,1,7,41,20,33,5,\"w\",\"F\",84,1,1,2,2,1,1,1,1,1,1,0,0,0,2,2,NA,3,128,128,5,8,1,2,26,4,13,122,114,29,17,4,130,119,133,128,15,11,29,128,121,132,112,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,124,119,125,132,120,131,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,4,\"w\",\"7\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,128,128,0\n962,7450,\"I\",1620,0,1,7,42,30,35,4,\"b\",\"F\",129,2,2,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,106,106,6,9,2,4,24,2,16,108,109,23,9,7,116,110,103,107,4,13,20,97,99,95,98,2,9,1,198,204,402,4.580808,4.803922,9.38473,39,18,17,74,1,0,34,1,1,99,98,87,96,99,90,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.02,1,1,106,106,1\n963,7453,\"F\",1450,0,1,7,NA,27,20,2,\"w\",\"F\",98,1,1,1,0,1,1,3,1,1,2,0,10,0,1,2,NA,3,79,79,4,6,1,2,79,18,43,78,85,27,12,11,100,110,112,112,6,23,28,112,108,115,117,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,115,108,95,99,111,96,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,\"w\",\"7\",\"1\",\"0\",\"1\",\"1\",\"2\",\"3\",1,0,0,0,0,79,79,0\n964,7456,\"I\",1850,0,1,7,NA,NA,22,4,\"w\",\"M\",111,4,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,108,108,8,9,1,2,68,12,42,86,101,27,12,10,NA,NA,NA,NA,10,18,29,107,113,100,103,2,8,3,194,231,425,5.221649,5.865801,11.08745,41,21,18,80,1,0,33,1,1,119,115,100,123,116,111,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,3,\"w\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.25,1,1,108,108,1\n965,7467,\"I\",1890,0,1,7,40,31,28,4,\"b\",\"F\",91,2,2,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,95,95,7,9,2,1,43,10,22,120,93,36,20,8,86,116,129,124,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,228,203,431,7.311404,6.807882,14.11929,39,18,21,78,1,0,33,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,3,\"b\",\"7\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.31,1,1,95,95,1\n966,8012,\"I\",990,0,1,8,NA,NA,20,2,\"w\",\"M\",84,1,1,1,0,1,1,2,4,1,1,0,2,0,2,2,NA,3,89,89,1,8,1,4,39,5,20,105,89,22,14,9,84,91,103,96,10,6,16,99,94,104,86,2,2,1,67,91,158,7.58209,6.494505,14.0766,33,22,20,75,1,0,32,1,1,94,113,84,110,100,96,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,1.58,1,1,89,89,0\n967,8029,\"I\",1780,0,1,8,NA,30,32,4,\"w\",\"F\",71,1,1,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,86,86,6,8,2,1,11,1,5,113,87,8,4,2,116,99,105,102,4,7,11,94,100,89,99,2,9,1,116,131,247,7.284483,6.847328,14.13181,34,23,19,76,1,0,29,1,1,114,114,97,141,113,120,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,2.47,1,1,86,86,0\n969,8036,\"I\",1330,0,1,8,40,29,22,2,\"b\",\"M\",113,2,2,3,2,2,3,2,2,1,1,0,0,0,2,2,NA,1,73,73,4,7,2,1,35,4,22,98,87,41,10,23,49,77,95,84,8,19,25,77,75,82,81,2,5,1,191,151,342,6.052356,6.543046,12.5954,45,20,17,82,195,1,33,0,0,96,96,92,82,96,84,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"2\",\"2\",\"1\",\"1\",\"2\",0,1,3.42,0,0,73,73,0\n970,8038,\"F\",1410,0,1,8,NA,28,28,5,\"w\",\"M\",93,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,101,101,5,9,2,1,21,1,16,110,108,16,4,7,119,107,129,119,8,8,16,120,106,131,107,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,117,129,79,122,123,96,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,101,101,0\n971,8039,\"I\",1910,0,1,8,40,29,33,4,\"w\",\"M\",55,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,93,93,6,9,2,2,39,7,22,88,89,18,7,9,85,77,81,77,9,15,24,78,82,79,94,2,9,1,0,0,0,0,0,0,39,25,21,85,1,0,33,NA,NA,96,120,88,88,105,86,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,0,1,93,93,0\n972,8044,\"F\",1730,0,1,8,43,24,20,2,\"w\",\"F\",93,1,1,1,0,1,1,1,1,1,3,0,9,0,2,2,NA,3,69,69,1,4,1,4,30,6,20,91,90,14,7,6,82,101,91,96,8,15,23,99,100,99,103,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,89,91,92,89,89,87,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"1\",\"1\",\"3\",\"1\",1,0,0,1,1,69,69,0\n973,8045,\"F\",1070,0,1,8,NA,25,35,2,\"b\",\"M\",107,2,2,3,0,3,3,3,4,1,1,0,0,0,2,1,NA,3,71,71,6,9,1,4,43,10,24,76,93,36,15,20,96,87,73,78,13,20,33,74,85,66,70,2,3,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,86,84,90,91,84,88,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,0,0,71,71,0\n974,8047,\"F\",1570,0,1,8,43,29,21,2,\"b\",\"M\",108,2,2,4,0,4,3,2,4,1,1,0,30,0,2,2,NA,3,64,64,8,8,2,1,62,16,39,73,58,34,15,15,63,84,86,84,8,15,25,81,84,80,69,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,104,104,96,98,105,96,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,64,64,0\n975,8049,\"F\",970,0,1,8,38,24,43,5,\"w\",\"F\",103,1,1,1,0,1,1,1,1,1,1,0,0,1,1,2,NA,3,117,117,3,6,2,1,50,11,20,120,124,33,21,5,113,114,129,123,19,17,35,124,124,120,116,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,115,123,88,113,118,98,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,117,117,0\n976,8050,\"F\",1330,0,1,8,42,29,28,3,\"w\",\"M\",86,1,1,2,0,2,2,1,1,1,1,0,20,0,2,2,NA,3,78,78,9,9,2,1,85,18,59,90,72,63,25,34,121,107,118,114,16,35,56,112,107,115,116,2,9,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,96,107,92,127,99,108,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,78,78,0\n977,8056,\"F\",1640,0,1,8,41,30,17,2,\"w\",\"M\",99,1,1,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,103,103,8,8,1,4,25,7,8,98,66,13,6,5,122,124,120,124,8,11,18,120,124,111,120,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,0,123,129,108,120,125,114,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,103,103,0\n978,8060,\"F\",1300,0,1,8,39,27,16,2,\"b\",\"F\",87,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,69,69,6,6,1,4,54,13,31,76,69,10,5,1,69,87,91,88,4,8,15,81,74,91,74,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,0,0,104,104,92,98,105,94,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,69,69,0\n979,8061,\"I\",1880,0,1,8,46,31,28,5,\"h\",\"M\",115,3,3,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,82,82,7,8,2,4,50,7,28,95,94,27,10,12,74,85,99,91,8,11,23,96,95,98,76,2,8,1,211,194,405,7.682464,6.948454,14.63092,41,21,21,83,1,0,34,1,1,131,123,97,117,125,106,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,4,\"h\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,4.05,1,1,82,82,1\n980,8066,\"F\",2340,1,1,8,49,33,28,4,\"w\",\"M\",63,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,89,89,9,9,1,4,41,7,22,120,115,47,25,18,112,121,112,119,23,34,57,119,123,111,124,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,107,126,105,118,115,113,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,89,89,0\n981,8076,\"F\",1890,0,1,8,NA,NA,25,3,\"w\",\"M\",90,1,1,2,0,2,2,1,1,1,1,0,1,0,2,2,NA,3,113,113,9,9,1,4,32,5,20,76,100,27,9,13,93,77,110,92,8,13,25,86,83,91,93,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,0,1,104,96,79,103,99,88,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,113,113,0\n982,8078,\"F\",1460,0,1,8,NA,NA,23,5,\"w\",\"F\",101,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,104,104,8,9,2,4,42,6,24,95,90,19,7,7,92,105,111,109,7,12,19,112,115,106,99,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,1,1,109,126,105,113,117,110,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,104,104,0\n983,8083,\"I\",2120,1,1,8,NA,NA,35,5,\"w\",\"F\",114,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,128,128,8,9,2,1,35,2,21,142,110,13,3,5,127,130,138,137,3,17,22,126,125,123,121,2,9,1,0,0,0,0,0,0,34,17,18,69,1,0,33,1,1,111,126,85,133,117,106,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,128,128,0\n985,8086,\"I\",1930,0,1,8,NA,NA,27,4,\"b\",\"M\",109,2,2,2,2,1,2,2,2,1,1,0,10,0,2,2,NA,1,80,80,4,9,1,1,NA,NA,NA,90,87,36,12,15,63,84,85,83,18,36,58,98,106,90,91,2,3,1,207,178,385,6.033816,5.870787,11.9046,35,20,18,73,197,1,37,1,1,105,129,94,125,116,108,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"2\",\"2\",\"1\",\"1\",\"2\",0,1,3.85,1,1,80,80,0\n986,8087,\"F\",1580,0,1,8,43,30,32,2,\"b\",\"F\",98,2,2,1,0,1,1,2,4,1,2,0,10,0,2,2,NA,3,52,52,8,9,1,4,73,22,34,90,58,66,36,20,43,94,82,87,20,42,61,88,102,75,76,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,107,100,99,98,104,98,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"4\",\"1\",\"2\",\"2\",1,0,0,0,0,52,52,0\n987,8089,\"F\",790,0,1,8,34,24,19,4,\"b\",\"F\",108,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,74,74,2,3,2,4,58,19,29,100,90,38,16,16,86,76,89,81,6,16,29,87,89,87,86,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,0,90,94,92,88,92,88,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,74,74,0\n988,8094,\"F\",1630,0,1,8,NA,NA,19,2,\"b\",\"M\",79,2,2,3,0,3,3,2,4,1,0,0,20,0,2,2,NA,3,65,65,5,5,1,2,95,18,61,83,NA,67,23,37,81,80,88,82,32,57,94,78,81,80,93,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,0,92,98,74,91,95,79,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"4\",\"1\",\"0\",\"2\",0,0,0,0,0,65,65,0\n989,8095,\"I\",1790,0,1,8,42,29,23,4,\"w\",\"F\",87,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,91,91,8,9,1,2,27,2,13,105,108,16,3,8,100,90,100,94,7,19,30,87,87,90,19,2,6,1,198,210,408,5.823232,6.914286,12.73752,38,25,20,83,1,0,33,0,1,78,60,74,82,66,74,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.08,0,0,91,91,1\n990,8098,\"I\",2100,1,1,8,NA,NA,19,3,\"b\",\"F\",100,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,55,55,7,9,1,2,70,13,37,118,108,31,12,14,97,102,95,99,5,15,22,105,105,104,109,2,6,1,181,189,370,7.160221,7.031746,14.19197,42,25,23,90,1,0,34,1,0,99,110,94,91,105,90,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,3.7,1,1,55,55,0\n991,8102,\"F\",2200,1,1,8,NA,NA,21,3,\"b\",\"F\",80,2,2,1,0,1,1,2,2,1,1,0,7,0,2,2,NA,3,NA,NA,2,7,1,4,15,3,7,52,NA,10,7,3,18,51,50,45,7,14,24,40,46,46,19,1,5,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,NA,NA,30,48,28,0,35,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,86.558357923708,79.726143472856,0\n992,8105,\"F\",2220,1,1,8,44,32,23,5,\"w\",\"M\",90,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,98,98,9,9,1,2,23,7,9,115,113,7,3,1,90,109,119,115,1,1,4,119,113,121,96,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,128,129,92,127,128,108,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,98,98,0\n993,8106,\"I\",1000,0,1,8,36,24,32,4,\"b\",\"F\",69,2,2,4,0,4,4,3,4,1,3,0,10,0,2,2,NA,3,92,92,NA,5,1,4,55,12,29,73,79,16,8,4,57,77,81,77,9,17,29,75,73,81,58,2,3,1,134,43,177,7.052239,7.116279,14.16852,26,23,8,57,1,0,30,0,1,92,98,96,95,95,94,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"4\",\"1\",\"3\",\"3\",1,1,1.77,0,0,92,92,0\n994,8108,\"F\",2180,1,1,8,NA,NA,29,4,\"w\",\"M\",106,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,9,9,1,4,20,1,12,86,100,11,2,7,87,112,84,99,2,8,10,93,100,87,109,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,0,1,134,129,99,113,131,106,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,75.7108697024993,108.055452517741,0\n995,8109,\"I\",2460,1,1,8,45,31,21,2,\"w\",\"M\",73,1,1,1,0,1,1,2,2,1,2,0,20,0,2,2,NA,3,78,78,8,8,1,4,35,5,24,105,116,31,5,19,NA,NA,NA,NA,10,25,38,109,101,116,119,2,7,1,135,169,304,7.162963,6.905325,14.06829,9,18,19,46,1,0,34,1,1,106,113,93,100,109,96,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.04,1,1,78,78,0\n996,8119,\"F\",1080,0,1,8,38,25,29,5,\"w\",\"F\",111,1,1,1,0,1,1,1,1,1,1,0,0,14,2,2,NA,3,NA,NA,9,9,1,4,NA,NA,NA,95,107,20,11,4,NA,NA,NA,NA,3,2,5,98,108,87,106,1,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,103,99,97,101,102,98,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,91.204986164385,118.312676060297,0\n997,8121,\"F\",1660,0,1,8,42,30,30,3,\"b\",\"M\",111,2,3,4,0,4,4,3,4,1,0,1,10,12,2,2,NA,3,NA,NA,7,8,2,1,NA,NA,NA,NA,NA,35,21,13,93,95,93,93,10,10,26,98,105,91,94,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,NA,NA,109,107,105,118,108,113,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"0\",\"3\",0,0,0,0,1,68.5779708463409,56.0446444941401,0\n998,8122,\"I\",2160,1,1,8,NA,31,30,5,\"w\",\"F\",102,1,1,1,0,1,1,1,1,1,1,0,0,3,2,2,NA,3,106,106,9,9,2,3,29,8,14,76,85,52,27,18,77,60,54,53,11,29,47,46,48,49,64,2,9,3,28,0,28,4.607143,0,4.607143,40,16,0,56,1,0,30,1,1,70,69,28,45,67,26,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0.28,1,1,106,106,0\n999,8125,\"I\",2480,1,1,8,46,32,24,3,\"w\",\"F\",89,1,1,2,0,2,2,3,1,1,1,0,30,1,2,2,NA,3,75,75,9,10,1,2,29,4,19,108,106,30,15,9,106,94,101,97,6,12,20,104,105,103,102,2,9,1,182,182,364,6.703297,6.307692,13.01099,39,15,16,70,1,0,33,1,1,123,120,105,113,121,110,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"3\",1,1,3.64,1,1,75,75,0\n1000,8126,\"I\",2470,1,1,8,48,30,28,4,\"w\",\"M\",94,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,99,99,9,9,1,2,NA,NA,NA,NA,NA,7,4,2,93,97,103,100,NA,NA,NA,NA,NA,NA,NA,2,7,1,0,0,0,0,0,0,34,23,18,75,1,0,36,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,99,99,0\n1001,8129,\"F\",2410,1,1,8,48,33,25,3,\"b\",\"M\",85,2,2,6,0,6,5,3,4,1,1,0,0,0,2,2,NA,3,65,65,9,9,2,2,93,19,54,62,46,50,20,26,51,74,70,69,25,53,83,59,67,57,65,2,8,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,0,1,72,69,90,70,69,76,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"1\",\"3\",0,0,0,0,0,65,65,0\n1002,8131,\"I\",2110,1,1,8,44,31,28,5,\"w\",\"F\",88,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,121,121,9,9,1,2,17,1,12,127,127,NA,NA,NA,NA,NA,NA,NA,8,14,24,120,138,95,148,2,9,1,0,0,0,0,0,0,42,23,17,82,1,0,35,0,1,140,140,99,127,139,114,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,0,0,121,121,0\n1003,8136,\"I\",2310,1,1,8,42,31,29,3,\"w\",\"M\",84,1,1,1,0,1,1,1,1,1,1,0,10,0,2,2,NA,3,94,94,9,9,1,2,NA,NA,NA,120,107,18,4,11,122,114,131,124,0,2,2,119,119,115,109,2,5,1,182,156,338,6.637363,6.358974,12.99634,28,16,15,59,1,0,33,1,1,117,131,99,125,122,114,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.38,1,1,94,94,0\n1005,8141,\"F\",1910,0,1,8,43,32,33,5,\"w\",\"M\",40,1,1,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,125,125,8,9,1,1,25,9,9,122,125,13,5,1,103,107,96,102,4,3,10,118,121,112,115,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,199,1,33,1,1,123,126,111,138,125,127,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,125,125,0\n1006,8143,\"I\",1600,0,1,8,44,29,41,4,\"w\",\"F\",121,5,5,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,8,9,1,2,NA,NA,NA,NA,NA,18,8,3,101,104,104,104,NA,NA,NA,NA,NA,NA,NA,2,9,1,0,0,0,0,0,0,36,7,0,43,1,0,33,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,85.8042670964279,112.564487911389,0\n1007,8149,\"F\",1410,0,1,8,40,29,19,4,\"b\",\"M\",132,2,2,1,0,2,1,1,1,1,1,0,0,0,2,2,NA,3,73,73,7,8,1,2,32,8,24,76,83,21,7,13,81,65,95,77,2,8,12,88,88,91,103,2,7,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,96,91,88,98,93,92,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,73,73,0\n1008,8150,\"I\",1700,0,1,8,43,30,31,3,\"b\",\"M\",120,2,2,4,0,4,4,1,1,1,1,1,10,2,2,2,NA,3,NA,NA,8,9,1,2,60,16,43,93,77,5,1,4,75,85,72,76,18,51,70,92,92,94,86,2,10,1,0,0,0,0,0,0,25,0,11,36,1,0,34,1,1,116,110,97,101,113,98,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0,1,1,89.3875792174983,107.358546261883,0\n1009,8151,\"I\",2370,1,1,8,NA,NA,28,5,\"w\",\"F\",101,1,1,1,0,1,1,1,1,4,1,0,0,0,2,2,NA,3,120,NA,9,9,1,2,46,14,23,108,83,31,16,11,101,114,130,124,12,17,31,137,140,127,120,2,9,1,0,0,0,0,0,0,19,0,0,19,1,0,33,0,1,142,140,120,150,141,138,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"4\",\"1\",\"1\",1,1,0,0,0,120,120,0\n1011,8157,\"I\",2230,1,1,8,44,33,30,5,\"w\",\"M\",103,1,1,2,2,1,2,1,1,1,1,0,3,0,2,2,NA,1,106,106,5,8,2,4,11,2,5,105,110,18,7,5,100,112,101,108,9,11,19,113,119,104,107,2,9,1,177,183,360,6.480226,7.142077,13.6223,31,16,14,61,201,1,35,1,1,99,110,103,111,105,107,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",0,1,3.6,1,1,106,106,0\n1012,8158,\"F\",1730,0,1,8,41,31,23,4,\"w\",\"F\",123,1,1,1,0,1,1,1,1,1,1,0,20,0,2,2,NA,3,108,108,9,9,2,2,40,11,22,105,107,9,5,4,100,81,110,94,10,8,20,99,93,106,115,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,105,126,139,117,115,128,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,108,108,0\n1013,8161,\"I\",2330,1,1,8,44,29,19,3,\"w\",\"F\",113,1,1,1,0,1,1,1,1,1,1,0,1,0,2,2,NA,3,103,103,9,9,1,2,48,13,27,119,107,36,20,11,88,97,100,99,17,25,45,99,98,100,99,2,9,1,190,191,381,6.452632,6.324607,12.77724,43,24,21,88,1,0,34,1,1,101,111,92,113,105,100,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.81,1,1,103,103,0\n1014,8162,\"F\",2230,1,1,8,NA,31,29,4,\"w\",\"M\",82,1,1,1,0,1,1,1,1,1,1,0,12,1,2,2,NA,3,93,93,6,8,1,2,26,2,16,95,77,35,15,18,125,115,95,106,11,16,30,99,108,90,108,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,96,114,95,98,103,96,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,93,93,0\n1015,8167,\"I\",2470,1,1,8,47,NA,28,4,\"w\",\"M\",98,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,101,101,8,9,1,2,59,3,41,108,103,25,10,14,96,114,116,116,10,13,28,127,125,126,127,2,7,1,0,121,121,0,6.710744,6.710744,35,25,20,80,1,0,35,1,0,114,117,103,133,115,120,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,1.21,1,1,101,101,0\n1016,8168,\"I\",2360,1,1,8,44,31,31,5,\"w\",\"F\",117,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,9,9,1,2,4,0,3,115,94,5,0,2,109,102,110,106,1,5,6,99,95,103,101,2,9,1,0,0,0,0,0,0,23,0,0,23,1,0,37,1,1,95,102,97,105,98,100,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,0,1,1,69.5916581518542,106.574410587928,0\n1017,8169,\"I\",960,0,1,8,38,26,37,5,\"w\",\"F\",90,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,128,128,3,5,2,4,41,9,26,113,118,27,12,10,98,97,97,97,17,20,37,120,122,113,122,2,9,1,203,215,418,5.985222,6.725581,12.7108,40,23,22,85,1,0,30,1,1,123,114,103,117,118,110,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,4.18,1,1,128,128,1\n1018,8171,\"I\",2440,1,1,8,45,33,37,4,\"w\",\"M\",92,1,1,3,0,3,3,1,1,1,1,0,13,5,2,2,NA,3,110,110,8,9,1,2,31,3,19,129,81,16,6,6,119,120,115,119,4,4,14,126,128,119,116,2,6,1,176,203,379,5.602273,6.270936,11.87321,44,28,23,95,1,0,36,0,1,120,132,111,127,125,120,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.79,0,0,110,110,0\n1019,8178,\"F\",1160,0,1,8,39,27,37,5,\"w\",\"M\",120,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,123,123,5,9,2,1,39,8,17,115,123,22,8,8,NA,NA,NA,NA,14,6,26,121,133,103,121,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,32,1,1,143,133,103,141,136,122,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,123,123,0\n1020,8180,\"F\",2480,1,1,8,45,32,23,4,\"w\",\"F\",103,1,1,1,0,1,1,1,1,1,2,0,20,0,2,2,NA,3,84,84,9,9,1,2,40,6,27,108,109,6,3,1,96,102,111,107,7,5,14,98,93,104,114,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,123,126,92,108,125,98,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,1,1,84,84,0\n1021,8182,\"I\",1750,0,1,8,41,28,17,2,\"b\",\"M\",101,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,65,65,3,4,2,4,48,12,26,86,81,32,10,14,64,89,92,89,11,14,28,83,81,87,63,2,2,1,157,194,351,7.10828,6.829897,13.93818,35,21,13,69,1,0,31,0,1,85,84,105,103,83,104,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,1,3.51,0,0,65,65,0\n1022,8185,\"I\",1860,0,1,8,44,30,24,5,\"w\",\"M\",103,1,1,1,0,1,1,2,4,1,2,0,10,1,2,2,NA,3,128,128,9,9,1,2,24,5,14,118,121,20,3,12,130,137,126,135,6,11,16,135,141,121,131,2,9,1,186,212,398,7.483871,6.84434,14.32821,39,24,20,83,1,0,33,1,1,145,141,122,144,141,135,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"4\",\"1\",\"2\",\"2\",0,1,3.98,1,1,128,128,0\n1023,8187,\"I\",2160,1,1,8,44,31,28,5,\"w\",\"M\",77,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,103,103,8,9,1,2,26,2,12,108,125,33,14,11,116,124,103,115,20,16,40,124,126,117,119,2,8,1,171,192,363,7.94152,8.229167,16.17069,41,19,21,81,1,0,32,1,1,109,123,120,134,115,129,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.63,1,1,103,103,0\n1024,8188,\"F\",760,0,1,8,32,23,23,3,\"w\",\"M\",86,1,1,1,1,1,1,1,1,1,1,0,20,0,2,2,NA,3,90,90,3,4,2,1,60,12,33,83,NA,22,12,6,94,79,96,86,4,5,10,92,85,102,101,2,9,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,1,1,98,NA,118,106,NA,111,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,90,90,0\n1025,8190,\"I\",1130,0,1,8,39,26,32,5,\"w\",\"M\",46,1,1,1,0,1,1,1,1,1,1,0,30,0,2,2,NA,3,92,92,6,6,1,2,45,15,18,95,110,36,20,9,90,82,103,91,9,12,25,80,73,91,57,2,8,2,45,96,141,7.177778,5.552083,12.72986,37,19,19,75,1,0,27,1,1,70,66,59,84,66,66,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,1.41,1,1,92,92,0\n1026,8191,\"I\",1990,0,1,8,39,29,26,3,\"w\",\"M\",98,1,1,1,0,1,1,2,4,1,1,0,2,0,2,2,NA,3,100,100,8,8,1,2,43,8,28,132,129,28,15,10,127,109,115,113,23,25,49,130,127,129,113,2,8,1,192,192,384,7.817708,7.5625,15.38021,40,21,17,78,1,0,33,1,1,105,114,122,129,109,127,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,1,3.84,1,1,100,100,0\n1027,8192,\"I\",2490,1,1,8,47,33,25,2,\"w\",\"F\",82,1,1,3,0,2,1,1,1,1,1,2,20,0,2,2,NA,3,84,84,9,9,1,2,62,16,32,86,104,51,26,15,92,89,88,87,20,18,39,90,100,80,79,2,2,2,176,209,385,7.710227,6.937799,14.64803,38,18,17,73,1,0,34,1,1,98,110,113,117,104,114,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,3.85,1,1,84,84,0\n1028,8194,\"F\",2190,1,1,8,44,33,32,3,\"b\",\"M\",100,2,2,6,0,6,6,1,1,1,1,2,0,3,2,2,NA,3,87,87,9,9,1,2,22,2,14,68,77,34,16,15,60,89,74,80,14,18,39,83,99,69,89,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,104,NA,99,113,NA,106,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,87,87,0\n1029,8196,\"I\",1720,0,1,8,42,30,31,4,\"w\",\"M\",115,5,5,1,0,1,1,1,2,4,1,0,0,0,2,2,NA,3,104,104,8,9,1,2,44,12,26,110,100,42,15,21,87,97,100,99,8,2,13,110,118,100,114,2,9,1,26,72,98,4.269231,5.972222,10.24145,32,23,13,68,1,0,34,1,1,130,121,95,118,125,106,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"2\",\"4\",\"1\",\"1\",0,1,0.98,1,1,104,104,0\n1030,8197,\"I\",1700,0,1,8,44,30,15,2,\"w\",\"M\",106,1,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,106,106,8,9,1,2,NA,NA,NA,113,118,18,6,8,NA,NA,NA,NA,15,14,34,108,114,100,100,2,9,1,171,157,328,7.953216,8.382166,16.33538,35,23,15,73,1,0,34,0,0,NA,123,111,108,NA,110,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,1,3.28,0,0,106,106,0\n1031,8200,\"I\",2430,1,1,8,46,31,19,3,\"b\",\"F\",101,2,2,1,0,1,1,2,2,1,3,0,0,0,2,2,NA,3,89,89,9,9,2,4,48,7,30,100,92,30,15,12,83,85,78,80,25,42,69,89,95,83,127,2,10,1,193,197,390,6.207254,7.588832,13.79609,49,21,19,89,1,0,35,0,1,97,96,99,98,97,98,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"2\",\"1\",\"3\",\"2\",1,1,3.9,0,0,89,89,0\n1032,8202,\"I\",2496,1,1,8,48,30,19,3,\"b\",\"M\",101,2,2,2,0,2,2,2,4,1,2,1,0,0,2,2,NA,3,62,62,8,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,22,32,70,104,107,99,68,2,2,1,79,0,79,7.582278,0,7.582278,34,17,0,51,1,0,34,1,1,117,125,124,123,119,125,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"2\",\"2\",0,1,0.79,1,1,62,62,0\n1033,8203,\"F\",2170,1,1,8,44,33,19,3,\"w\",\"M\",98,1,1,1,0,1,1,2,2,1,2,0,10,0,2,2,NA,3,87,87,8,9,1,2,50,7,36,100,94,51,22,31,84,97,111,104,19,32,52,101,101,100,104,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,123,120,122,120,120,122,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,87,87,0\n1034,8206,\"I\",1380,0,1,8,41,30,32,2,\"w\",\"F\",108,1,1,1,0,1,1,3,1,1,1,0,0,0,2,2,NA,3,78,78,4,6,2,2,59,11,30,81,98,101,51,34,94,75,82,76,53,66,110,71,74,73,79,2,9,3,148,147,295,8.506757,8.006803,16.51356,39,25,20,84,1,0,31,1,1,72,73,71,72,71,66,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"1\",\"1\",\"1\",\"3\",1,1,2.95,1,1,78,78,0\n1035,8208,\"I\",2160,1,1,8,43,31,22,4,\"b\",\"F\",99,2,2,1,0,1,1,2,2,1,1,0,0,0,2,2,NA,3,65,65,7,8,1,2,35,10,19,108,83,19,9,6,82,86,99,91,2,12,17,83,80,89,84,2,5,1,177,76,253,7.706215,7.631579,15.33779,25,12,7,44,1,0,34,1,1,95,99,94,91,97,90,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"2\",\"1\",\"1\",\"2\",1,1,2.53,1,1,65,65,0\n1036,8211,\"F\",1590,0,1,8,42,31,27,3,\"w\",\"M\",120,1,1,1,1,1,2,1,1,1,1,0,0,0,2,2,NA,1,95,95,7,8,1,2,18,2,10,118,112,10,2,8,97,112,105,110,8,9,21,110,105,115,101,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,204,1,33,1,1,123,126,99,113,125,106,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,95,95,0\n1038,8215,\"I\",1550,0,1,8,41,29,20,2,\"w\",\"F\",100,1,1,1,0,1,1,2,4,1,1,0,0,0,2,2,NA,3,78,78,5,7,1,2,75,14,42,95,94,36,20,12,108,100,77,88,29,32,57,70,79,65,93,1,8,2,181,216,397,6.469613,5.902778,12.37239,34,20,22,76,1,0,34,1,1,85,83,70,69,83,63,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"4\",\"1\",\"1\",\"2\",1,1,3.97,1,1,78,78,0\n1040,8217,\"F\",1800,0,1,8,39,29,25,4,\"w\",\"F\",103,1,1,2,2,1,2,1,1,1,1,0,7,0,2,2,NA,1,106,106,8,8,2,1,48,8,27,103,85,25,11,6,117,120,105,114,4,8,13,114,124,102,118,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,205,1,31,1,1,125,144,118,133,133,127,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"2\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,106,106,0\n1041,8218,\"F\",1910,0,1,8,42,30,22,2,\"w\",\"F\",100,1,1,3,0,4,3,1,1,1,2,2,10,0,2,2,NA,3,76,76,8,9,1,2,17,4,6,93,97,5,1,4,NA,NA,NA,NA,11,24,38,93,89,100,103,1,8,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,0,1,84,90,94,81,86,85,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"1\",\"1\",\"2\",\"1\",1,0,0,0,0,76,76,0\n1042,8222,\"F\",2070,1,1,8,46,32,28,5,\"w\",\"M\",108,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,109,109,9,9,2,4,38,9,23,108,108,49,19,25,103,101,103,102,11,21,34,104,108,99,108,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,143,141,85,125,140,101,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,109,109,0\n1043,8225,\"F\",1000,0,1,8,NA,NA,27,4,\"h\",\"F\",111,3,2,3,0,3,3,2,4,1,2,1,10,0,2,1,NA,3,68,68,3,7,2,1,73,16,47,66,NA,85,37,30,NA,NA,NA,NA,14,29,41,78,79,82,86,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,27,0,1,84,100,91,78,90,82,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,3,\"h\",\"8\",\"3\",\"0\",\"4\",\"1\",\"2\",\"2\",1,0,0,0,0,68,68,0\n1044,8226,\"F\",1130,0,1,8,37,27,23,3,\"b\",\"F\",85,2,2,2,0,2,1,1,1,1,1,1,0,1,2,1,NA,3,58,58,3,5,1,2,37,9,21,76,83,43,23,13,39,72,63,65,10,27,37,65,66,69,58,2,10,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,29,1,1,94,100,96,88,97,90,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,58,58,0\n1045,8228,\"F\",1590,0,1,8,39,30,20,3,\"b\",\"F\",118,2,2,1,0,1,1,2,2,1,1,0,3,4,2,2,NA,3,66,66,3,7,2,4,63,15,32,66,87,54,26,17,66,74,53,60,18,31,60,65,70,65,64,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,84,91,69,68,87,62,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",1,0,0,1,1,66,66,0\n1046,8229,\"F\",2110,1,1,8,44,31,29,5,\"w\",\"M\",108,4,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,66,NA,8,8,1,2,29,2,18,105,87,38,16,20,NA,NA,NA,NA,14,18,36,86,85,90,83,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,208,1,34,0,1,96,96,103,97,96,99,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,66,66,0\n1048,8240,\"I\",1730,0,1,8,39,30,32,4,\"w\",\"F\",101,1,1,3,0,3,3,1,1,1,1,0,0,0,2,2,NA,3,95,95,6,9,2,1,34,7,17,118,109,30,12,13,126,107,103,106,9,11,21,113,112,112,95,2,9,1,132,161,293,6.174242,6.335404,12.50965,34,20,18,72,1,0,35,1,1,119,120,108,133,118,122,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,1,2.93,1,1,95,95,0\n1049,8242,\"I\",2340,1,1,8,41,31,22,3,\"w\",\"M\",107,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,105,105,9,9,1,2,17,3,5,73,79,20,5,12,74,77,104,89,7,14,26,85,75,99,99,2,7,3,182,186,368,7.774725,6.935484,14.71021,35,20,16,71,1,0,34,1,1,86,82,66,78,82,67,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,3.68,1,1,105,105,0\n1050,8243,\"F\",2410,1,1,8,48,32,15,2,\"b\",\"F\",107,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,64,64,8,9,1,2,50,11,30,81,63,16,3,9,63,65,70,64,3,6,11,77,78,81,80,2,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,NA,NA,99,114,94,91,105,90,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,1,0,64,64,0\n1051,8246,\"I\",1680,0,1,8,43,30,34,2,\"w\",\"M\",98,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,63,63,6,9,1,2,29,5,15,88,79,20,9,7,72,75,86,78,7,8,18,90,92,90,88,2,4,3,3,0,3,3,0,3,38,24,22,84,1,0,32,1,1,92,91,99,98,91,98,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,\"w\",\"8\",\"1\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,0.03,1,1,63,63,0\n1052,8247,\"F\",970,0,1,8,33,26,30,5,\"w\",\"M\",82,1,1,2,0,2,2,1,1,1,1,0,0,0,2,2,NA,3,101,101,3,3,1,2,34,5,25,73,89,NA,NA,NA,NA,NA,NA,NA,1,4,4,80,91,72,71,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,0,1,95,113,93,86,102,87,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,101,101,0\n1053,8248,\"F\",1010,0,1,8,NA,26,27,2,\"b\",\"M\",114,2,2,1,0,4,1,2,3,1,1,0,0,1,2,1,NA,3,54,54,5,6,1,2,46,12,24,71,69,18,11,4,64,76,70,71,3,11,16,60,69,57,48,2,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,28,1,1,80,89,74,71,84,67,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"3\",\"1\",\"1\",\"2\",0,0,0,1,1,54,54,0\n1055,8252,\"F\",2000,0,1,8,31,NA,30,5,\"w\",\"M\",100,1,1,3,2,2,3,1,1,1,1,0,0,0,2,2,NA,1,140,140,6,8,1,2,48,14,23,93,87,17,10,7,87,115,116,117,5,9,18,114,123,103,131,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,209,1,31,0,1,112,129,128,142,119,138,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,140,140,0\n1056,8253,\"F\",2290,1,1,8,46,31,17,2,\"b\",\"M\",115,2,2,1,0,1,1,2,2,1,1,0,10,0,2,2,NA,3,85,85,7,8,1,2,NA,NA,NA,73,63,NA,NA,NA,NA,NA,NA,NA,4,18,26,82,85,81,86,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,89,97,91,103,92,96,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,0,0,85,85,0\n1057,8255,\"F\",1010,0,1,8,36,27,31,4,\"b\",\"F\",117,2,2,2,0,2,2,1,1,1,1,0,0,1,2,2,NA,3,NA,NA,3,6,2,1,NA,NA,NA,NA,NA,45,19,20,NA,NA,NA,NA,3,10,13,81,90,74,83,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,96,98,97,97,97,96,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,78.4683927511346,79.8408582694203,0\n1058,8260,\"F\",800,0,1,8,35,23,21,3,\"w\",\"M\",94,1,1,2,0,2,2,1,1,1,1,1,20,0,2,1,NA,3,NA,NA,4,6,2,4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,13,10,35,81,82,82,76,2,3,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,0,0,91,89,77,79,89,74,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,86.2711598883721,73.7604159198899,0\n1059,8265,\"F\",2340,1,1,8,47,29,23,3,\"b\",\"M\",112,2,2,1,0,1,1,2,2,1,1,0,5,0,2,2,NA,3,62,62,3,6,1,2,41,9,24,83,94,58,30,24,71,87,91,88,25,25,50,97,97,98,87,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,99,114,97,111,105,103,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"2\",\"1\",\"1\",\"2\",0,0,0,1,1,62,62,0\n1060,8267,\"F\",2380,1,1,8,46,30,32,3,\"b\",\"F\",104,2,2,2,0,2,2,2,4,1,1,1,0,0,2,2,NA,3,89,89,8,8,1,2,29,6,21,95,90,11,3,5,32,110,107,109,0,7,7,113,107,119,93,2,2,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,0,1,111,106,103,125,109,114,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",1,0,0,0,0,89,89,0\n1061,8268,\"F\",2130,1,1,8,48,32,26,4,\"w\",\"M\",117,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,88,88,8,8,1,2,55,10,35,68,75,30,12,15,94,110,111,111,13,19,33,96,98,95,114,2,6,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,116,120,113,117,117,114,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,88,88,0\n1062,8270,\"F\",1830,0,1,8,41,28,23,3,\"b\",\"F\",103,2,2,1,1,1,2,2,2,1,1,0,3,0,2,2,NA,1,69,69,8,9,1,2,54,14,23,68,69,39,20,9,48,69,74,68,20,23,45,73,79,72,70,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,212,1,33,0,1,79,82,80,87,79,80,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"1\",\"2\",\"1\",\"1\",\"2\",1,0,0,0,0,69,69,0\n1064,8276,\"F\",2340,1,1,8,NA,33,20,2,\"b\",\"M\",112,2,2,2,0,2,2,2,2,1,2,0,10,0,2,2,NA,3,80,80,9,9,1,2,38,7,19,71,NA,54,17,28,73,77,80,76,14,41,63,70,73,72,91,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,74,92,68,74,81,66,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,80,80,0\n1065,8277,\"F\",2420,1,1,8,NA,32,29,4,\"b\",\"M\",97,2,2,2,0,2,2,2,1,1,1,0,20,0,2,2,NA,3,90,90,7,9,2,4,25,1,18,93,85,11,2,5,95,110,100,106,1,2,4,104,115,91,99,2,7,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,131,126,122,129,127,127,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,90,90,0\n1066,8280,\"F\",1390,0,1,8,41,30,29,4,\"b\",\"M\",88,2,2,2,0,2,1,1,1,1,1,0,0,0,2,2,NA,3,NA,NA,5,6,1,2,33,8,15,103,90,6,2,1,NA,NA,NA,NA,12,5,18,118,119,112,108,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,31,1,1,131,123,113,117,125,114,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,82.3943048480166,78.459167635593,0\n1067,8282,\"F\",2040,1,1,8,NA,30,23,3,\"b\",\"M\",93,2,2,2,0,2,2,1,1,1,2,0,0,0,2,2,NA,3,68,68,6,6,1,2,83,25,51,64,NA,37,22,11,39,74,81,75,23,22,51,70,78,66,62,2,4,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,33,1,1,79,56,66,72,65,64,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,0,0,1,1,68,68,0\n1068,8285,\"F\",1340,0,1,8,NA,28,18,3,\"w\",\"F\",96,1,1,1,0,1,1,2,2,1,2,0,3,0,2,2,NA,3,97,97,4,5,1,2,47,7,23,110,123,28,11,13,120,107,116,113,16,22,42,106,104,108,115,2,5,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,30,0,1,99,106,103,101,103,101,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"2\",\"1\",\"2\",\"2\",1,0,0,0,0,97,97,0\n1069,8297,\"F\",2180,1,1,8,NA,32,39,5,\"w\",\"M\",114,1,1,2,1,2,2,1,1,1,1,1,0,2,2,2,NA,3,123,123,9,9,2,2,41,9,23,132,121,43,22,16,126,117,119,120,8,10,22,128,127,125,108,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,36,1,1,108,133,135,117,118,125,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"1\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,123,123,0\n1070,8298,\"F\",1770,0,1,8,42,29,26,3,\"b\",\"M\",109,2,2,3,0,3,3,2,4,1,1,0,5,0,2,2,NA,3,91,91,9,9,1,2,33,6,20,68,NA,25,11,13,34,64,73,65,6,19,25,80,74,90,55,2,6,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,96,91,74,79,93,72,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"1\",\"2\",0,0,0,0,0,91,91,0\n1071,8300,\"F\",1740,0,1,8,43,30,19,4,\"b\",\"F\",130,2,2,2,0,2,2,2,2,1,3,1,6,0,2,2,NA,3,83,83,9,9,1,2,18,6,7,108,90,28,18,7,99,119,92,106,2,0,4,93,94,94,101,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,121,95,121,119,106,122,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"0\",\"2\",\"1\",\"3\",\"2\",1,0,0,0,0,83,83,0\n1072,8305,\"F\",1970,0,1,8,45,29,25,4,\"w\",\"M\",117,5,5,1,0,1,1,1,1,4,2,0,0,0,2,2,NA,3,NA,NA,6,8,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,35,1,1,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"4\",\"2\",\"1\",0,0,0,1,1,81.8715458387396,71.3450545119762,0\n1073,8309,\"I\",1930,0,1,8,44,31,21,3,\"b\",\"F\",105,2,2,3,0,3,3,2,4,1,2,1,20,0,2,2,NA,3,64,64,8,9,1,2,58,9,39,68,53,71,29,28,71,81,91,84,15,24,36,87,81,96,77,2,1,1,44,46,90,6.386364,6.021739,12.4081,34,20,13,67,1,0,35,0,1,89,100,95,84,94,87,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"4\",\"1\",\"2\",\"2\",1,1,0.9,0,0,64,64,0\n1075,8311,\"F\",2130,1,1,8,48,31,22,4,\"b\",\"M\",121,2,2,2,2,1,2,2,2,1,2,0,3,0,2,2,NA,1,NA,NA,7,8,1,2,49,14,30,66,66,25,11,13,84,92,84,87,6,11,16,90,100,81,104,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,213,1,36,1,1,108,114,90,87,111,86,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"2\",\"2\",\"1\",\"2\",\"2\",0,0,0,1,1,83.3406342677665,72.9702544014872,0\n1076,8314,\"F\",800,0,1,8,NA,NA,17,2,\"b\",\"M\",110,2,2,1,0,1,1,2,2,1,2,0,0,0,2,2,NA,3,73,73,9,9,2,4,54,10,36,98,94,34,11,16,72,76,78,75,5,11,17,83,88,81,84,2,9,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,26,0,1,88,97,79,80,92,76,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,\"b\",\"8\",\"1\",\"0\",\"2\",\"1\",\"2\",\"2\",0,0,0,0,0,73,73,0\n1078,8317,\"F\",930,0,1,8,NA,NA,26,4,\"b\",\"F\",98,2,2,4,2,3,4,2,2,1,3,0,20,0,2,2,NA,1,NA,NA,6,7,2,3,50,8,23,71,81,15,5,3,97,90,80,84,5,16,22,70,84,59,78,2,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,215,1,27,NA,NA,84,84,71,81,84,72,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,3,\"b\",\"8\",\"3\",\"2\",\"2\",\"1\",\"3\",\"2\",1,0,0,1,1,86.6682812425527,78.4039913612017,0\n1079,8319,\"F\",2380,1,1,8,NA,33,27,4,\"w\",\"F\",93,1,1,4,0,4,4,1,1,1,1,2,15,0,2,2,NA,3,113,113,9,9,2,2,NA,NA,NA,NA,NA,18,4,12,NA,NA,NA,NA,16,24,40,111,110,111,106,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,0,141,119,142,136,129,142,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,113,113,0\n1081,8325,\"I\",1430,0,1,8,40,28,26,5,\"b\",\"M\",91,2,2,2,2,1,2,1,1,1,1,0,0,0,2,2,NA,1,86,86,8,8,1,2,31,3,18,98,97,21,8,7,89,95,110,102,10,12,26,90,98,82,86,2,6,1,176,170,346,6.113636,6.094118,12.20775,40,18,16,74,217,1,28,0,0,112,119,107,100,115,104,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,4,\"b\",\"8\",\"4\",\"2\",\"1\",\"1\",\"1\",\"1\",0,1,3.46,0,0,86,86,0\n1082,8337,\"F\",1650,0,1,8,42,31,34,3,\"w\",\"F\",105,1,1,2,1,2,3,1,1,1,1,0,0,0,2,2,NA,1,117,117,6,7,1,2,50,8,29,129,106,21,8,8,88,107,115,112,8,17,29,123,131,111,112,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,220,1,34,0,1,134,120,113,129,125,122,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"1\",\"1\",\"1\",\"1\",\"1\",1,0,0,0,0,117,117,0\n1084,8345,\"I\",2250,1,1,8,43,30,21,2,\"h\",\"F\",113,3,3,3,0,3,3,2,4,1,0,2,10,0,2,2,NA,3,NA,NA,9,9,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,25,7,0,32,1,0,36,0,1,NA,NA,NA,NA,NA,NA,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,\"h\",\"8\",\"1\",\"0\",\"4\",\"1\",\"0\",\"2\",1,1,0,0,0,87.9885825707417,54.2150059622632,0\n1085,8347,\"F\",1800,0,1,8,42,29,36,4,\"w\",\"M\",94,1,1,2,0,2,2,1,1,1,1,1,2,0,2,2,NA,3,117,117,7,8,2,4,32,5,17,127,121,13,3,5,116,120,118,121,1,5,9,102,106,98,113,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,0,1,105,114,94,101,109,96,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,3,\"w\",\"8\",\"3\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,0,0,117,117,0\n1086,8349,\"I\",2140,1,1,8,46,29,32,5,\"w\",\"M\",112,1,1,1,0,1,1,1,1,1,1,0,0,2,2,2,NA,3,96,96,7,8,1,2,23,1,13,105,90,41,12,18,112,100,93,96,9,22,36,100,100,100,98,2,9,1,86,102,188,6.372093,6.666667,13.03876,27,18,11,56,1,0,35,1,1,76,74,70,115,73,88,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",0,1,1.88,1,1,96,96,0\n1087,8360,\"F\",2350,1,1,8,46,30,28,3,\"b\",\"M\",111,2,2,2,0,2,2,2,1,1,1,1,0,0,2,2,NA,3,74,74,9,9,1,2,12,2,5,73,77,2,1,0,66,84,93,87,8,8,16,94,88,103,63,2,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,95,98,94,97,96,94,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"2\",0,0,0,1,1,74,74,0\n1088,8361,\"F\",1670,0,1,8,42,29,28,5,\"w\",\"F\",125,1,1,1,0,1,1,1,1,1,1,0,0,0,2,2,NA,3,115,115,9,9,1,2,30,6,17,127,100,12,4,4,121,120,116,120,3,10,18,128,122,131,120,2,9,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,37,1,1,119,136,135,141,125,139,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,4,\"w\",\"8\",\"4\",\"0\",\"1\",\"1\",\"1\",\"1\",1,0,0,1,1,115,115,0\n1089,8380,\"F\",1740,0,1,8,43,31,26,3,\"w\",\"M\",107,1,1,1,0,1,1,1,1,1,1,0,15,3,2,2,NA,3,87,87,9,9,1,2,45,8,30,98,113,35,14,15,128,114,93,104,23,25,51,94,93,96,108,2,8,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,0,34,1,1,73,81,92,95,76,92,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,2,\"w\",\"8\",\"2\",\"0\",\"1\",\"1\",\"1\",\"1\",0,0,0,1,1,87,87,0\n1090,8409,\"I\",2000,0,1,8,NA,30,26,3,\"b\",\"M\",110,2,2,5,0,5,5,1,1,1,2,0,10,7,2,2,NA,3,62,62,3,7,2,1,NA,NA,NA,72,69,NA,NA,NA,NA,NA,NA,NA,15,37,58,76,83,73,77,2,1,1,0,0,0,0,0,0,34,19,15,68,1,0,35,1,1,73,84,88,91,77,88,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,2,\"b\",\"8\",\"2\",\"0\",\"1\",\"1\",\"2\",\"1\",0,1,0,1,1,62,62,0\n"
  },
  {
    "path": "econml/data/ihdp/sim.csv",
    "content": "treat,bw,b.head,preterm,birth.o,nnhealth,momage,sex,twin,b.marr,mom.lths,mom.hs,mom.scoll,cig,first,booze,drugs,work.dur,prenatal,site1,site2,site3,site4,site5,site6,site7,site8,momwhite,momblack,momhisp\n1,1559,28.64852128,10,2,94,33,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1420,27,4,2,85,15,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1,0\n0,1000,25,8,4,89,33,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1430,29,6,1,112,22,0,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1984,31,2,1,99,20,0,0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1320,28,7,2,110,23,1,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2240,31,3,2,105,22,1,0,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2020,29,5,2,100,37,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1900,30,6,1,110,13,1,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2041,31,9,3,98,41,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1320,26.16250092,10,1,110,27,1,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2150,32,7,3,87,30,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1620,28,8,2,109,22,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,1550,29,8,1,74,25,1,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1814,30,7,2,98,35,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1280,28,10,2,106,26,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1210,26,10,1,100,18,1,0,0,0,1,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2296,32.53986256,7,1,99,25,1,0,1,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,810,24,14,4,92,27,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2270,32,5,4,104,19,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1670,30,7,1,104,18,0,0,0,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2030,31,5,2,131,18,1,0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2030,32,5,2,125,23,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1840,29,8,1,81,18,1,1,0,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1550,28,4,1,121,19,0,0,0,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2330,32,9,2,89,26,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1310,28,9,2,102,28,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2350,33,6,4,93,23,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1990,31,4,1,103,25,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2410,33,3,3,90,20,0,0,1,1,0,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1400,28,8,4,109,34,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1950,30,6,3,101,29,1,1,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1990,30,6,1,101,26,1,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1776,28,6,2,83,23,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1750,33,8,2,58,28,0,0,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2140,34,5,3,119,28,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,970,24,10,2,89,28,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1150,25,11,2,93,27,1,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2369,35,3,1,92,32,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2250,30,6,1,113,15,0,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2210,31,6,2,85,33,1,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1770,31,5,4,128,29,1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,730,22,12,1,98,22,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,870,25,12,3,99,18,1,1,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1510,28,10,2,100,26,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2360,33,3,2,103,20,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2500,30,3,2,88,28,1,0,1,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1880,30,4,4,109,34,1,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2220,32,7,2,87,23,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2490,32,6,2,80,24,1,0,1,0,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,2350,28,6,4,99,21,1,0,1,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1370,28,8,1,116,24,0,0,0,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,910,25,12,1,84,22,1,0,1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2445,32,5,3,98,32,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1550,28,7,2,100,23,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2180,31,6,1,87,29,1,0,1,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2070,30,10,1,75,18,1,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1786,31,8,2,42,25,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2160,32,6,2,118,25,1,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1928,30,8,2,89,34,1,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1750,29,5,2,99,17,1,1,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1590,29,10,3,83,19,1,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2350,32,6,1,113,18,1,0,0,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2250,33,7,2,99,19,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1890,31,9,1,81,20,1,0,1,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2410,31,6,4,65,40,0,0,1,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2500,33,6,2,91,25,1,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2353,31,6,2,99,28,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2040,32,6,4,110,26,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1960,31,5,2,109,24,0,0,1,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,2180,31,6,3,106,23,1,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,920,25,13,1,84,19,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2300,33,5,1,110,22,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1985,29,5,1,108,24,1,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1516,29,10,1,98,26,0,1,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1740,30,7,4,127,26,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1970,30,6,2,117,19,1,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,1650,30,8,1,92,20,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2390,30,5,2,105,19,1,0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1750,30,6,1,119,16,1,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1970,31,8,1,107,33,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2070,31,6,3,93,21,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1400,28,9,2,107,18,1,0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1360,29,7,3,117,26,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0,0\n0,2155,32,5,1,110,28,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2300,32,3,1,116,20,0,0,0,1,0,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1190,27,8,4,118,26,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1530,30,7,2,106,25,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,1\n0,1950,31,5,2,103,19,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1240,27,10,3,100,22,1,0,1,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1410,29,9,1,93,24,0,0,1,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2170,32,6,4,109,22,1,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1920,30,8,3,114,24,1,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2270,31,6,2,117,24,1,0,1,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1840,30,10,2,72,24,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1670,30,6,1,113,23,1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2400,30,9,3,63,25,0,0,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,2230,33,7,2,100,23,1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2140,34,6,4,102,19,0,0,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,1520,29,9,2,99,20,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1070,26,10,1,85,19,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2025,32,3,1,106,19,0,0,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1350,29,6,1,116,21,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,2200,34,7,1,108,27,0,1,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1790,29,8,1,73,26,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2220,33,6,4,67,29,0,0,0,0,1,0,1,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,890,24,14,1,89,22,1,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1420,35,10,3,86,18,0,1,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1730,29,9,3,90,24,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,1560,27,7,1,107,17,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1730,28,6,1,122,20,1,0,0,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n1,1580,30,6,1,124,15,0,0,0,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n1,1956,31,8,2,99,22,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2325,32,3,1,98,19,1,0,1,0,1,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1580,29,10,2,87,23,0,1,1,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,2296,32,7,1,72,35,0,0,1,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,2417,32,6,3,96,29,1,0,1,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0\n0,1210,27,12,1,86,25,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1570,30,6,4,95,23,0,1,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2190,32,5,2,116,19,0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0\n0,2001,32,5,1,105,37,0,1,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2200,31,4,2,121,21,0,0,1,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,2000,31,5,3,122,28,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n0,1990,30,7,1,127,17,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0\n1,1480,28,6,1,123,27,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n0,2120,31,6,2,85,24,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,1830,28,6,1,122,20,1,0,0,1,0,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0\n0,1950,31,3,1,135,20,1,0,0,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0\n1,1170,25,10,2,109,23,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1380,27,10,1,80,23,0,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1320,27,9,1,89,15,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,960,24,13,1,92,19,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,850,24,14,1,86,30,0,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1580,30,7,2,109,26,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1860,29,7,4,98,27,0,0,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1800,30,6,1,110,18,0,0,0,1,0,0,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1550,30,7,3,66,30,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1880,31,9,1,112,33,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n1,1915,31,10,2,96,29,1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n1,1815,29,8,1,109,21,0,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1910,32,8,3,104,34,0,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1980,31,6,1,110,15,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1560,30,8,2,108,29,0,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1210,27,10,3,92,39,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1470,28,10,2,116,33,0,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1735,30,8,3,115,29,1,0,1,1,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2175,32,3,3,109,33,1,0,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2200,31,5,2,111,23,1,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2280,31,6,4,105,27,1,0,0,0,0,1,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1790,29,9,4,109,36,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1790,28,7,2,102,24,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,850,24,11,3,104,34,0,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1980,31,5,1,123,25,1,0,0,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2420,31,3,2,91,31,0,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,2260,31,6,2,80,24,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2160,31,6,2,104,21,1,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1700,29,8,1,86,19,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,2340,32,6,1,108,17,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1270,26,10,2,105,29,1,0,0,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,2100,30,5,2,115,33,0,0,0,0,0,1,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1300,26,10,2,112,22,1,0,0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0\n0,1950,31,6,1,105,18,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,670,23,14,1,90,34,0,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,2360,32,2,2,92,34,0,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,1340,25,10,1,103,28,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1100,27,13,3,88,39,0,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1440,29,9,2,109,33,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1800,30,5,1,101,16,1,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1000,24,12,4,63,30,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2240,29,6,1,108,20,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1870,29,6,3,94,39,1,0,1,0,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1700,29,8,2,62,34,1,0,1,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1220,26,10,2,81,23,0,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1140,25,10,2,78,25,0,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1720,29,9,1,100,24,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,1310,25,10,3,110,33,0,0,1,0,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,2090,31,7,1,99,18,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,2200,30,6,1,119,17,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1270,25,10,3,84,29,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1930,30,6,1,92,21,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1825,29,6,2,116,25,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1090,26,13,4,81,32,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,2240,29,6,1,111,21,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1390,26,10,3,106,32,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n1,1540,29,7,1,106,19,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,2340,31,6,1,91,17,0,0,0,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,2340,32,7,1,97,23,1,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2050,30,6,1,130,17,0,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1840,30,5,1,109,18,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2340,31,7,1,86,29,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1720,28,6,2,116,23,1,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2240,31,5,2,116,31,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,2260,30,6,1,106,22,1,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,2320,31,6,3,110,26,0,0,0,0,0,1,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,2150,30,8,1,95,27,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2250,31,4,1,81,35,0,0,0,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,1800,30,3,2,50,20,0,1,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n1,1480,29,9,4,123,37,0,0,1,1,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,1680,29,8,1,115,19,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1840,29,9,1,103,26,0,0,1,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n1,1500,27,8,2,113,24,1,1,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2500,33,4,2,97,35,1,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1935,29,9,4,108,26,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1540,28,8,3,93,29,0,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1920,30,9,2,96,22,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2070,30,8,2,88,22,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0\n0,1960,31,6,1,96,30,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1950,30,6,2,97,39,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2080,30,6,1,127,20,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1210,27,6,4,66,24,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1120,25,8,1,127,21,0,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,2180,32,6,2,93,23,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2340,32,5,2,79,32,0,0,1,1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1310,26,10,4,105,39,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,2500,32,6,1,97,26,1,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1440,27,10,1,109,20,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1040,25,10,4,106,28,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1\n0,2170,31,6,3,121,16,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2460,34,3,2,77,22,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2300,30,5,1,97,19,0,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,2150,32,3,1,105,20,0,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1740,30,10,1,109,23,1,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1450,28,10,2,109,18,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,2130,31,5,4,116,37,1,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n1,2250,32,5,1,115,28,1,0,1,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n1,1830,29,6,1,94,31,1,0,1,0,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,2000,31,4,2,133,18,1,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,1970,29,12,2,37,16,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,1480,30,9,1,118,18,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2000,32,5,1,108,20,1,0,1,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,1650,29,9,2,115,30,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2235,31,4,1,96,21,1,0,0,1,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n1,2110,30,5,1,105,21,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,1380,27,10,2,79,17,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1750,30,10,2,74,27,1,1,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2140,31,6,4,85,27,1,0,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1990,30,4,2,111,27,1,0,0,0,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1810,30,7,3,107,32,0,0,0,0,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1890,31,8,1,109,22,1,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1870,32,6,2,103,17,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0\n0,2000,32,8,3,97,21,0,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1620,29,7,4,102,24,0,0,0,1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2320,31,6,3,78,42,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1700,31,8,2,115,22,0,1,0,1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n0,1860,30,10,1,79,22,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1370,29,7,4,110,32,0,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n0,1260,26,11,1,98,23,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,1230,27,10,1,114,26,1,0,1,0,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,2180,31,6,1,106,28,0,0,1,0,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,2430,32,5,2,94,22,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2500,31,4,1,74,30,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,2450,33,3,2,100,31,1,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0\n0,2000,32,7,2,85,22,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1840,30,8,1,100,16,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,1700,29,6,2,92,25,1,0,0,1,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2430,33,6,2,70,19,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1720,30,6,1,109,17,1,0,0,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n1,1040,27,11,1,120,21,0,0,1,1,0,0,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,1,0\n1,2000,31,6,1,94,19,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2080,31,8,4,105,33,1,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,2380,33,6,4,85,29,0,0,1,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n1,1760,30,4,1,113,22,1,0,1,1,0,0,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2130,32,4,1,124,17,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1\n0,2400,34,3,1,87,22,0,0,0,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0\n0,1840,30,6,2,120,26,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0\n0,1980,30,4,1,112,21,1,0,1,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,1\n1,920,25,11,1,97,23,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,1620,28,6,1,95,28,1,0,1,0,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1620,28,7,1,104,17,1,0,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1850,30,9,2,76,21,0,0,1,0,0,1,1,0,1,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,960,24,11,1,106,22,1,0,1,0,1,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1550,29,6,1,102,23,0,1,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1800,29,6,1,107,34,1,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1900,29,8,2,109,37,1,0,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,2150,31,3,3,121,25,1,0,1,0,0,1,1,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2210,32,5,3,104,27,0,0,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2150,31,6,1,80,32,1,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1925,31,5,1,115,27,0,1,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1\n0,2250,32,6,3,100,36,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1775,30,8,1,92,21,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2020,32,9,1,91,30,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1620,28,8,1,88,32,0,0,1,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1950,32,6,1,106,23,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1840,31,6,4,107,27,1,0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,900,24,12,2,117,23,0,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1\n0,2140,32,5,1,90,20,1,0,1,1,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1\n0,1660,29,11,2,96,28,1,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1170,27,10,1,102,17,0,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,1600,29,10,1,84,19,0,0,0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1\n0,1540,29,6,1,111,18,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1080,25,13,1,112,34,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1890,30,7,1,96,31,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1600,28,10,2,75,32,0,0,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,1480,30,10,1,105,32,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1325,30,10,1,103,18,0,0,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1840,30,10,1,98,39,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1080,27,12,1,111,31,1,0,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1517,29,10,1,73,34,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2300,31,5,1,95,27,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1240,25,13,1,95,28,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1490,29,5,2,71,33,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2150,31,5,1,91,30,0,0,0,0,1,0,1,1,1,0,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1730,29,8,2,91,35,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2320,30,4,3,108,34,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,720,22,10,2,119,26,1,0,1,0,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1370,28,10,2,79,32,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2050,31,6,2,95,29,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1610,28,6,1,105,21,1,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1980,32,4,2,123,27,1,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1150,27,11,1,92,30,1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1675,31,8,1,97,27,0,0,1,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2466,33,4,1,91,20,0,0,1,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,950,25,14,1,105,14,1,0,0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,1320,27,10,2,64,26,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2100,31,4,2,104,34,1,1,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,910,36,9,1,120,26,0,0,1,0,1,0,1,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,2140,31,8,1,71,27,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2460,33,3,3,94,30,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2390,34,6,2,95,34,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2050,31,4,1,116,23,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1880,30,8,1,100,25,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1350,29,9,1,112,29,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2280,32,2,1,98,27,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2340,32,3,2,86,32,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2495,32,5,1,102,16,1,0,0,1,0,0,1,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n1,2155,31,8,1,93,23,1,0,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,740,26,11,1,52,34,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,900,24,14,1,76,28,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1300,28,8,1,116,30,1,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2353,31.80511526,4,1,110,29,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1220,28,10,1,117,29,1,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1910,31,6,2,103,22,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,2310,34,4,2,108,28,0,0,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1350,28,9,1,118,23,0,0,1,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1720,31,6,1,103,26,1,0,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,2020,30,8,2,84,18,1,0,1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,790,23,14,4,84,38,0,0,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1\n0,1920,31,5,1,129,23,1,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1970,31,4,1,117,31,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,1400,28,8,2,65,18,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,1650,30,7,1,102,28,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2420,33,6,1,84,27,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1640,30,3,2,117,27,1,0,0,1,0,0,1,0,1,0,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1240,27,10,1,97,30,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2330,33,3,1,111,16,0,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2300,32,6,3,89,19,0,0,0,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1\n1,1210,27,10,3,101,26,1,1,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1725,28,9,1,81,22,1,0,1,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2230,32,3,2,112,22,0,0,0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n1,850,24,12,2,105,38,1,0,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2300,32,4,3,109,33,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2030,32,5,2,120,25,0,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2490,34,4,3,102,28,0,0,0,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1\n0,1710,33,5,1,117,19,1,0,1,1,0,0,1,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,2250,33,4,1,111,27,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2096,31,3,2,110,22,1,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,1600,29,7,1,95,19,1,1,1,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2110,31,6,1,90,27,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2450,32,4,1,94,23,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1786,31,8,1,103,36,1,0,1,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1440,29,9,1,101,33,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1175,26,10,4,85,24,0,0,1,0,1,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1670,29,6,4,118,34,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1550,28,10,1,88,27,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2250,34,6,1,91,30,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1600,29,6,2,108,30,0,0,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2211,33,4,1,95,31,1,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,1690,30,6,1,115,38,0,0,0,1,0,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2330,32,5,2,111,38,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1890,31,6,2,90,34,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1975,31,7,3,96,32,0,0,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,1230,26,10,1,114,32,1,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,900,25,13,1,119,32,1,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2210,33,6,2,117,26,0,0,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,2360,32,4,1,96,31,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1\n0,1770,30,9,1,106,25,1,0,1,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2150,31,5,4,117,34,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1810,30,10,1,95,36,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,2440,33,5,2,76,29,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,740,27.84757921,13,1,96,31,0,0,1,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,2495,33,3,1,98,22,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n1,2425,34,4,1,88,30,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2150,32,5,1,117,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,1706,28,9,3,109,22,1,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1700,30,3,1,107,28,1,0,1,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,2040,29,8,1,85,17,0,0,0,1,0,0,1,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1644,30,8,1,17,35,1,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1950,31,8,1,68,21,0,0,1,0,1,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1490,27,7,2,124,27,1,0,1,0,0,1,1,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1590,28,8,1,102,19,1,0,0,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1690,29,6,1,107,21,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,1\n1,1780,29,6,1,115,27,1,0,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,920,25.83375972,14,1,104,26,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,2000,31,3,1,116,29,1,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n1,1871,31,4,1,105,22,1,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1490,28,6,2,122,22,0,0,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,1460,28,9,2,87,28,1,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n0,1900,31,6,1,109,34,0,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1980,30,6,4,114,22,1,0,1,0,0,1,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0\n0,1600,30,7,1,123,26,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0\n0,1100,29,8,2,106,36,1,1,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,1980,32,6,1,102,25,1,0,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0\n1,1580,31,7,2,110,32,0,1,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1930,30,5,1,115,35,1,0,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0\n0,1240,28,6,3,68,25,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1360,28,8,2,93,22,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,1540,29,8,2,103,29,1,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,800,24,9,1,99,18,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,880,24,8,2,79,23,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1610,30,3,3,95,29,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1950,30,6,1,117,15,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0\n0,940,25,14,2,77,21,1,0,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1\n0,2100,29,3,2,58,28,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2290,33,5,3,80,23,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n1,1840,31,6,1,111,21,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2400,31,8,1,63,29,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1916,31,7,1,116,19,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1280,28,9,1,96,19,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,800,23,13,2,72,26,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2000,31,6,2,102,25,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,2240,31,4,2,108,20,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2390,34,5,4,84,30,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2470,33,6,1,85,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1880,30,7,4,106,21,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,860,26,10,2,121,18,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1760,30,6,1,109,28,1,0,1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,1010,26,11,2,92,16,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1700,29,7,4,98,24,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1780,30,6,3,118,36,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1520,28,8,2,103,18,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,960,24,9,3,82,32,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2080,31,8,1,111,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,2010,30,4,3,116,22,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,860,24,9,2,100,20,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1620,28,10,4,107,33,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,1800,30,9,3,104,21,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n1,1515,29,8,4,110,40,1,1,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,1890,28,6,1,132,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,2320,31,4,1,102,18,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,2190,29,6,4,115,22,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1370,28,9,2,99,19,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,2000,30,8,2,108,16,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1480,26,8,4,104,30,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,900,23,14,4,84,35,1,1,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,2110,30,5,4,113,20,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0\n1,1160,26,9,2,99,23,1,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1980,29,5,1,112,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,960,24,12,1,96,29,1,0,1,0,0,1,0,1,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0\n1,2250,29,4,1,103,18,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2240,32,8,4,89,26,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0\n1,2260,33,6,2,106,20,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0\n1,1380,27,9,4,103,27,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1740,30,7,1,126,18,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2210,30,4,4,106,24,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1900,30,5,4,121,18,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,880,24,12,1,103,17,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,800,27,10,1,89,26,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0\n1,1740,30,8,2,109,36,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1\n1,1380,28,8,1,53,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,860,24,7,2,93,27,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,2500,31,3,3,90,30,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,2200,32,7,4,110,23,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1880,29,6,2,97,18,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2480,32,6,3,65,19,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,1970,32,6,1,119,15,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0\n0,2420,33,3,2,110,19,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,940,26,6,2,111,27,0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,1140,27,7,4,94,26,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0\n0,2480,34,6,3,81,18,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2080,31,7,1,119,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,2360,31,6,2,92,17,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2020,30,9,2,104,21,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1060,26,9,2,76,19,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,880,25,12,1,99,15,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1370,27,9,4,101,25,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n1,1715,30,5,2,136,26,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,750,24,13,1,107,20,1,0,0,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1640,29,6,4,122,25,0,1,1,1,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0\n0,1380,27,11,1,108,15,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,820,26,10,4,110,24,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,1\n0,2280,29,6,1,74,20,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,2080,32,6,2,87,19,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2280,33,6,4,105,27,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1920,30,7,1,116,17,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2440,33,5,2,98,20,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,840,25,10,4,119,34,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,840,24,11,3,103,26,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1480,28,6,1,111,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1900,30,6,1,115,17,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,980,25,12,1,109,22,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n1,2000,30,7,3,100,21,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,1760,31,7,4,101,23,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1380,26,10,3,88,27,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,2340,32,6,3,90,22,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n0,1840,30,6,3,125,25,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2150,30,4,4,100,21,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,1120,26,9,4,104,34,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2140,31,5,1,111,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0\n0,2460,33,6,2,93,21,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,1,0\n0,2380,32,6,2,67,22,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,1,0,0\n0,1280,26,9,1,96,20,1,0,0,0,1,0,1,1,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0\n0,2200,32,6,4,89,22,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,2230,33,6,4,113,27,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0\n1,2400,28,6,4,93,31,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1\n0,1570,28.56144708,6,3,105,25,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1500,27,6,2,103,20,1,0,0,0,1,0,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1970,30,8,3,82,27,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,840,24,11,3,96,26,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1170,25,9,2,92,27,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1690,31,6,2,108,31,1,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0\n1,1200,27,12,1,105,31,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1580,29,7,2,93,30,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1250,28,5,2,92,18,1,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2190,30,5,1,99,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2430,32,3,3,46,29,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0\n0,2140,31,5,2,107,34,1,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1890,31,6,3,115,25,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2360,32,3,1,97,17,1,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1700,27,6,2,100,22,1,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2210,30,6,4,117,27,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2160,29,6,3,112,18,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,946,26,7,1,110,16,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1710,29,5,1,117,23,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,946,24,11,2,97,19,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2460,30,3,1,98,16,1,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0\n1,1730,28,4,3,122,34,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,900,25,13,2,85,31,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2190,29.15970434,8,1,32,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2180,32,5,2,111,24,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0\n0,936,25,12,3,100,31,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2150,31,2,3,113,24,0,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2380,34,4,1,90,19,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1750,28,4,4,108,42,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2400,31,2,1,106,22,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2130,31,5,4,114,33,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1690,27,7,4,105,23,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0\n1,1760,31,6,4,104,33,0,1,0,1,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0\n0,2180,31,5,2,87,26,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2100,31,6,2,119,23,1,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2370,32,5,2,100,21,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1690,28,7,1,107,18,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1640,30,6,1,105,20,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2050,29,4,1,113,24,0,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0\n1,1600,28,5,1,119,20,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,740,23,14,1,96,19,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1980,29,4,1,93,18,0,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2350,33,5,2,109,26,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2040,28,6,1,93,26,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2340,30,9,1,67,35,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,1,0,0\n0,2340,31,4,2,109,21,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1600,28,7,2,106,27,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1550,29,10,2,95,17,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2280,31,5,1,72,23,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2280,29,7,2,113,21,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1880,30,9,1,76,18,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2420,34,6,1,72,23,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2200,30,4,3,66,27,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2080,31,6,3,101,24,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,0,1\n0,1730,29,7,1,98,14,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2140,30,4,3,121,23,0,0,1,1,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2080,30,3,1,125,16,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2400,30,4,3,106,25,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2480,31,3,1,101,23,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1230,26,12,2,106,22,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1550,28,10,2,97,26,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1530,27,10,1,97,36,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1720,31,6,2,116,29,0,1,1,0,0,1,1,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1440,28,7,2,105,18,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1700,28,5,2,105,19,0,0,0,1,0,0,0,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1780,28,6,1,103,24,1,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1690,29,7,3,100,22,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1130,26,7,1,112,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1750,28,7,1,108,16,1,1,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2360,32,6,2,108,28,0,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0\n1,2480,29,4,1,101,29,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2210,32,3,2,109,32,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2010,30,5,2,112,29,0,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2160,32,4,3,106,24,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2420,30,3,2,105,21,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,2230,33,7,3,116,30,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0\n1,1950,30.71239884,6,1,86,17,0,0,0,1,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1740,29,4,1,107,21,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2410,34,4,1,105,15,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2160,30,3,1,120,18,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1,0\n0,2310,31,6,1,107,15,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0\n0,2330,30,7,1,88,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,2130,31,4,1,118,22,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,1770,29,6,2,105,27,1,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1830,29,7,3,109,25,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1050,26,12,4,38,31,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1900,29,10,3,103,22,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1050,27,11,1,98,27,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1310,28,9,1,112,24,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n0,2420,32,3,1,97,29,0,0,0,0,1,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,1,0\n1,1840,28,7,1,96,15,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1760,30,9,1,96,26,0,1,0,0,1,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2500,31,3,1,100,21,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1940,30,9,1,92,20,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,2070,30,6,1,73,14,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1191,28,12,2,97,18,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1729,28,9,1,101,15,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1880,30,3,1,94,32,1,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,1860,29,3,3,108,24,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n1,1080,26,11,4,96,23,1,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,0\n0,1910,31,5,1,95,25,0,0,1,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0\n1,940,25,12,1,110,14,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,900,25,12,1,94,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1010,26,10,4,117,19,1,1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0\n1,1430,27,10,2,102,18,1,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1540,29,11,1,110,23,0,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1460,27,10,2,99,18,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,760,26,11,1,97,19,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1300,26,10,1,111,22,1,0,1,1,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,1210,26,10,2,104,18,1,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1560,28,9,3,92,20,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1\n1,1500,29,13,3,15,24,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,2180,28.57243937,5,2,100,18,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2080,30,4,4,82,34,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,1320,27,10,3,103,18,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0\n0,1040,25,12,1,104,32,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1960,29,3,3,98,25,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1030,26,12,4,108,35,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1210,29,7,1,123,18,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1210,27,10,2,83,18,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n1,1920,30,4,1,114,24,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1170,26,7,1,85,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1850,27,7,4,82,37,1,1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0\n1,1470,28,10,2,97,20,1,1,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0\n1,2100,31,6,3,84,23,0,0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n1,2230,31,6,1,99,17,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1960,30,5,2,111,19,1,1,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2490,27,6,2,74,25,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1550,31,11,1,80,20,1,0,1,1,0,0,1,1,1,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,2250,30,5,2,113,15,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n1,2090,32,6,1,110,16,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1000,25,12,2,118,20,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2350,31,2,2,107,25,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2290,34,6,1,101,17,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,2030,28,7,2,95,17,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n1,1130,28,8,2,103,22,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n1,2020,30,8,2,84,22,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,2340,31,5,3,104,21,1,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n1,2220,33,6,3,111,18,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n1,1840,30,10,4,98,20,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,2100,32,4,2,105,23,1,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2170,32,4,4,108,24,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n0,1470,29,10,1,110,19,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1960,28,6,1,107,17,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2096,32,6,2,98,21,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1390,28,10,1,80,16,1,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0\n1,2000,32,5,1,104,25,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,2380,34,5,4,105,23,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n1,2170,31,4,2,72,39,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,1930,29,6,3,101,25,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n1,1300,28,11,2,117,41,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1680,29,10,1,102,20,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n0,1350,27,11,2,111,17,1,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2320,33,3,1,102,17,0,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2150,30,5,1,99,19,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n0,2180,31,7,2,102,20,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n1,1550,27,7,4,116,24,1,0,0,0,1,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1010,26,13,2,52,18,0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,1\n1,1950,31,8,1,93,19,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1880,31,7,1,101,20,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1830,30,6,1,102,17,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1530,27,10,3,109,21,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2060,30,6,1,88,19,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,2110,31,4,3,104,24,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1910,31,8,2,86,19,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0\n1,1490,30,7,2,88,22,0,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1200,26,10,2,106,20,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1950,31,4,2,116,28,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n1,2450,32,4,1,81,32,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2140,33,6,3,94,30,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,2050,31,3,2,116,20,1,0,0,1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1800,28,6,2,106,16,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,2500,32,4,4,102,22,1,0,1,1,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,0,1,0,0\n0,1930,31,6,1,103,19,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n0,840,24,10,1,116,28,1,0,1,0,1,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1230,27,7,2,133,21,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1680,28,8,1,87,22,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1700,29,8,3,82,17,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n1,1500,29,7,2,103,19,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1000,21,10,1,97,20,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1620,26,6,2,108,20,1,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,960,25,12,4,66,26,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1750,29,5,4,81,34,1,0,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0\n0,2340,32,3,2,101,22,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,2400,30,5,3,97,23,1,1,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1560,27,8,2,103,15,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n0,1800,28,8,1,92,23,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n0,1610,28,7,3,92,21,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,2260,31,5,3,106,21,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1880,31,4,3,126,20,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,2330,32,4,2,108,40,1,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,920,23,14,2,71,19,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n0,2110,32,8,2,58,19,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0\n0,910,24,13,3,95,25,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1660,31,5,1,73,24,1,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2050,31,3,1,110,25,0,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1950,31,5,2,96,23,1,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2190,31,4,2,113,15,1,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,2200,30,6,2,113,19,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1960,30,6,2,99,19,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1380,27,10,3,105,19,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n0,1660,29,6,1,51,22,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2070,30,3,3,109,19,0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2020,28,4,2,105,19,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1500,27,9,2,109,22,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1660,29,4,1,121,28,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n0,2130,31,6,2,103,25,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,1,0\n0,2240,30,5,1,110,17,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1410,28,9,1,123,22,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,2040,30,5,1,104,17,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2150,31,4,1,112,19,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2060,30,6,2,105,21,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,2150,31,5,1,89,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,2180,30,6,1,81,17,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,2110,32,5,2,100,18,1,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1300,26,10,3,92,20,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1800,29,4,2,115,28,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1760,30,4,3,117,19,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,2090,31,4,2,110,19,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n0,2350,31,4,1,85,18,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1470,28,11,3,96,27,1,0,0,0,0,1,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n1,1440,27,10,1,104,16,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1830,30,6,2,101,19,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1460,27,7,3,99,30,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,1\n0,1850,30,5,2,106,22,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1290,26,8,1,98,16,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0\n1,1860,29,6,3,100,29,1,0,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,1,0,0,1,0,0\n1,1320,28,8,4,122,21,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0\n1,1630,28,8,1,98,18,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1480,29,7,1,106,16,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1890,31,5,4,123,18,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1870,30,3,3,114,38,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,1\n0,1600,29,6,3,115,25,0,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n0,1660,31,6,2,105,26,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1850,29,4,1,110,16,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0\n0,1290,27,4,2,122,20,1,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1710,31,4,1,84,17,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0\n0,1730,29,4,2,113,20,1,1,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1\n0,540,20,14,2,84,30,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1060,26,15,1,80,31,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1240,28,11,1,93,20,0,0,0,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1190,25,11,1,52,28,0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1840,30,8,2,91,31,0,0,1,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1630,25,8,1,99,28,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1800,29,9,2,108,30,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1920,29.70699795,9,1,96,24,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1220,29,13,1,95,29,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1350,28,10,1,111,30,0,1,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1440,28,10,1,100,22,0,0,1,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1530,28.16861652,6,2,101,27,1,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2440,31,5,1,84,17,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1\n0,1260,26.30435002,9,2,117,24,1,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,2190,28,5,1,108,34,1,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1580,28,9,2,91,25,1,0,1,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,2030,31,5,2,116,28,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1120,25.54790653,11,1,113,28,0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1990,29,5,2,90,31,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1660,27.71230177,11,1,90,15,0,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2350,32,2,3,122,22,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2350,33,3,1,113,22,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n1,1960,30,5,2,120,25,1,0,1,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,940,26,7,1,136,20,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1880,30,7,2,112,25,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1850,31,7,3,102,24,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2340,32,2,1,87,16,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1120,28,12,4,77,27,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1420,26,10,2,96,27,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2010,28.84778451,3,1,115,22,1,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1780,30,6,2,97,34,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,2250,30,7,2,93,34,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1390,28,6,1,115,26,1,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,640,21,15,2,74,34,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2360,31,3,1,68,33,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1460,27,10,1,91,23,1,0,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1860,30,6,1,103,18,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1900,30,7,1,86,23,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1070,27,10,1,111,16,0,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0\n0,2420,32,9,2,89,31,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2460,33,5,4,92,24,0,1,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1900,32,10,2,91,32,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1540,27,14,1,95,31,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2260,32,4,4,117,25,1,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1500,29,7,1,90,18,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1690,29,8,3,71,26,1,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2120,31,3,1,109,18,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1500,28,10,2,98,32,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,2040,31,7,1,78,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1330,26,10,2,84,35,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2300,30,6,1,89,30,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2460,31,3,3,100,42,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1136,25,10,2,91,24,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0\n1,2450,33,3,1,92,30,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1900,30,8,3,88,27,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,980,23,10,1,107,32,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n1,1860,30,6,2,107,26,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2430,30,4,3,113,23,1,0,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1920,31,5,2,119,31,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2140,32,2,1,120,19,1,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,2360,31,4,1,97,27,0,0,0,1,0,0,1,1,1,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2450,30,6,2,81,34,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1940,29,6,1,101,19,0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1540,30,4,4,136,23,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0\n0,1860,31,5,2,115,23,0,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1840,31,4,1,112,27,0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1400,28,9,1,118,33,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,2370,30,3,1,102,38,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1060,25,10,2,113,26,1,1,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1960,32,5,1,104,30,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1900,30,4,4,103,30,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0\n0,1940,29,6,1,97,24,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1940,30,6,4,99,34,1,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0\n0,1890,30,6,2,77,28,0,0,1,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2280,32,6,3,101,19,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1030,25,13,3,82,32,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2310,32,3,1,111,39,1,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2110,32,5,1,105,25,0,1,1,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2450,32,4,1,104,19,1,0,0,0,1,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1540,30,6,1,123,22,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1790,28,6,1,84,25,1,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2240,32,3,3,115,28,1,0,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,2110,30,3,4,115,35,1,0,0,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2390,30,4,1,95,30,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1720,29,2,1,120,25,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,920,26,9,2,95,33,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n1,1550,27,7,1,128,27,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2000,32,5,2,108,21,0,1,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,2040,29,6,4,92,33,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2470,31,3,3,86,28,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,2470,33,4,2,74,40,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1970,30,7,1,112,24,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,2290,34,4,2,89,31,1,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2290,31,7,2,87,29,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2490,31,6,1,99,24,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1\n0,1920,33,6,2,102,33,1,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2230,32,3,2,101,32,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,2430,31,4,1,105,19,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1810,28,7,2,60,27,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2180,32,5,1,137,21,0,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2140,31,6,3,91,27,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2040,29,5,1,116,33,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1670,30,9,2,62,25,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2270,33,4,4,117,33,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1670,30,5,1,132,20,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1670,30,6,2,109,28,1,1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2140,31,5,1,106,23,0,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1950,30,5,4,110,29,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0\n1,2000,30,6,2,113,21,1,1,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n1,1620,28,9,1,76,25,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2270,32,3,2,97,27,1,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1410,27,9,4,108,33,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1140,26,9,1,98,34,1,0,1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,2470,32,3,1,82,32,1,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,2200,30,6,1,86,17,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0\n0,2270,32,4,1,97,32,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1870,29,5,2,112,32,1,1,1,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1810,30,8,2,76,20,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1230,28,6,2,137,20,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1720,31,6,1,94,27,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1440,28,9,1,100,22,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,2340,31,6,2,110,20,1,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,0\n0,1360,27,10,3,104,31,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1630,30,6,1,99,26,1,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,1\n1,1550,29,9,3,89,33,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0\n1,1550,29,6,1,110,24,0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n0,1730,20,8,2,84,33,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1620,30,6,2,129,35,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n0,1450,27,9,1,98,20,1,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0\n1,1850,29.31460624,7,1,111,22,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,1,0,1,0,0\n1,1890,31,7,3,91,28,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0\n1,990,26.15645675,8,1,84,20,0,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1780,30,11,1,71,32,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1330,29,7,3,113,22,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1410,28,9,1,93,28,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1910,29,7,3,55,33,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,1730,24,5,1,93,20,1,0,1,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1070,25,10,3,107,35,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1570,29,7,4,108,21,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,970,24,12,1,103,43,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1330,29,10,2,86,28,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1640,30,9,1,99,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,1300,27,8,1,87,16,1,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n1,1880,31,6,1,115,28,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,0,1\n0,2340,33,6,1,63,28,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1890,32.22031547,7,2,90,25,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,1460,27.05942762,10,1,101,23,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2120,29.26160704,7,1,114,35,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1930,29.41135239,3,2,109,27,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1580,30,5,1,98,32,1,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,790,24,12,1,108,19,1,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1630,30.06406422,6,3,79,19,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0\n1,1790,29,7,2,87,23,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2100,29.99092986,6,1,100,19,1,0,0,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2200,32.17152809,4,1,80,21,1,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2220,32,6,1,90,23,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1000,24,10,4,69,32,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2180,31.01353799,4,1,106,29,0,0,1,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2460,31,6,1,73,21,0,0,0,1,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1080,25,11,1,111,29,1,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1660,30,9,4,111,30,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,1,0\n1,2160,31,10,1,102,30,1,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2480,32,7,2,89,24,1,0,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2470,30,4,1,94,28,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2410,33,3,4,85,25,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n1,2110,31,5,1,88,28,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2310,31,7,1,84,29,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1910,32,7,2,40,33,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1600,29,7,2,121,41,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1410,29,6,1,132,19,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n1,1700,30,6,4,120,31,0,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n1,2370,31.72866727,7,1,101,28,1,0,1,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2230,33,5,2,103,30,0,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1730,31,3,1,123,23,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2330,29,6,1,113,19,1,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2230,31,6,1,82,29,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2470,32.45981849,5,2,98,28,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2360,31,3,2,117,31,1,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,960,26,10,1,90,37,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2440,33,4,3,92,37,0,0,1,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,1160,27,8,1,120,37,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2480,32,6,1,103,23,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1750,28,9,1,101,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n1,1860,30,7,1,103,24,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2160,31,8,1,77,28,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,760,23,13,1,86,23,0,0,1,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1130,26,13,1,46,32,0,0,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1990,29,7,1,98,26,0,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2490,33,6,3,82,25,1,0,1,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2190,33,7,4,100,32,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n1,1720,30,6,1,115,31,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1700,30,6,1,106,15,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2430,31,5,1,101,19,1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n1,2496,30,6,2,101,19,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2170,33,6,1,98,19,0,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1380,30,9,1,108,32,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2160,31,6,1,99,22,1,0,0,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1590,31,7,1,120,27,0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1550,29,6,1,100,20,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1800,29,9,2,103,25,1,1,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1910,30,9,3,100,22,1,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,2070,32,6,1,108,28,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1000,24.99807526,13,3,111,27,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,1\n0,1130,27,11,2,85,23,1,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1590,30,9,1,118,20,1,0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2110,31,6,2,108,29,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,1730,30,5,3,101,32,1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2340,31,6,1,107,22,0,0,1,0,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2410,32,4,1,107,15,1,0,0,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n1,1680,30,8,1,98,34,0,0,1,1,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,970,26,12,2,82,30,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,1010,26,12,1,114,27,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2000,31.25663958,9,3,100,30,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,2290,31,5,1,115,17,0,0,0,1,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1010,27,5,2,117,31,1,0,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,800,23,14,2,94,21,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,2340,29,5,1,112,23,0,0,0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2380,30,5,2,104,32,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2130,32,6,1,117,26,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1830,28,7,1,103,23,1,1,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2340,33,6,2,112,20,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2420,32,5,2,97,29,0,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1390,30,9,2,88,29,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2040,30,7,2,93,23,0,0,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1340,28,10,1,96,18,1,0,0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n0,2180,32,4,2,114,39,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1770,29,6,3,109,26,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1740,30,6,2,130,19,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1970,29,5,1,117,25,0,0,1,0,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1930,31,5,3,105,21,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,2130,31,4,2,121,22,0,1,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,800,25.85739992,14,1,110,17,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,930,25.24419746,13,4,98,26,1,1,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,2380,33,3,4,93,27,1,0,1,0,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,1430,28,12,2,91,26,0,1,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,1,0\n0,1650,31,6,2,105,34,1,1,1,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2250,30,4,3,113,21,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1\n0,1800,29,6,2,94,36,0,0,1,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1,0,0\n1,2140,29,5,1,112,32,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,2350,30,3,2,111,28,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n0,1670,29,3,1,125,28,1,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n0,1740,31,6,1,107,26,0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0\n1,2000,30,5,4,110,26,0,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,0\n"
  },
  {
    "path": "econml/dml/__init__.py",
    "content": "\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"\r\nDouble Machine Learning.\r\n\r\nThe method uses machine learning methods to identify the\r\npart of the observed outcome and treatment that is not predictable by the controls X, W\r\n(aka residual outcome and residual treatment).\r\nThen estimates a CATE model by regressing the residual outcome on the residual treatment\r\nin a manner that accounts for heterogeneity in the regression coefficient, with respect\r\nto X. For the theoretical foundations of these methods see [dml]_, [rlearner]_, [paneldml]_,\r\n[lassodml]_, [ortholearner]_.\r\n\r\nReferences\r\n----------\r\n\r\n.. [dml] V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W. Newey.\r\n    Double Machine Learning for Treatment and Causal Parameters.\r\n    `<https://arxiv.org/abs/1608.00060>`_, 2016.\r\n\r\n.. [rlearner] X. Nie and S. Wager.\r\n    Quasi-Oracle Estimation of Heterogeneous Treatment Effects.\r\n    arXiv preprint arXiv:1712.04912, 2017. URL `<http://arxiv.org/abs/1712.04912>`_.\r\n\r\n.. [paneldml] V. Chernozhukov, M. Goldman, V. Semenova, and M. Taddy.\r\n    Orthogonal Machine Learning for Demand Estimation: High Dimensional Causal Inference in Dynamic Panels.\r\n    `<https://arxiv.org/abs/1712.09988>`_, December 2017.\r\n\r\n.. [lassodml] V. Chernozhukov, D. Nekipelov, V. Semenova, and V. Syrgkanis.\r\n    Two-Stage Estimation with a High-Dimensional Second Stage.\r\n    `<https://arxiv.org/abs/1806.04823>`_, 2018.\r\n\r\n.. [ortholearner] Dylan Foster, Vasilis Syrgkanis (2019).\r\n    Orthogonal Statistical Learning.\r\n    ACM Conference on Learning Theory. `<https://arxiv.org/abs/1901.09036>`_\r\n\"\"\"\r\n\r\nfrom .dml import (DML, LinearDML, SparseLinearDML,\r\n                  KernelDML, NonParamDML)\r\nfrom .causal_forest import CausalForestDML\r\n\r\n__all__ = [\"DML\",\r\n           \"LinearDML\",\r\n           \"SparseLinearDML\",\r\n           \"KernelDML\",\r\n           \"NonParamDML\",\r\n           \"CausalForestDML\"]\r\n"
  },
  {
    "path": "econml/dml/_rlearner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"\nThe R Learner plus associated machinery.\n\nThe R Learner is an approach for estimating flexible non-parametric models\nof conditional average treatment effects in the setting with no unobserved confounders.\nThe method is based on the idea of Neyman orthogonality and estimates a CATE\nwhose mean squared error is robust to the estimation errors of auxiliary submodels\nthat also need to be estimated from data:\n\n    1) the outcome or regression model\n    2) the treatment or propensity or policy or logging policy model\n\nReferences\n----------\nXinkun Nie, Stefan Wager (2017). Quasi-Oracle Estimation of Heterogeneous Treatment Effects.\n    https://arxiv.org/abs/1712.04912\n\nDylan Foster, Vasilis Syrgkanis (2019). Orthogonal Statistical Learning.\n    ACM Conference on Learning Theory. https://arxiv.org/abs/1901.09036\n\nChernozhukov et al. (2017). Double/debiased machine learning for treatment and structural parameters.\n    The Econometrics Journal. https://arxiv.org/abs/1608.00060\n\"\"\"\n\nfrom abc import abstractmethod\nimport numpy as np\nimport pandas as pd\nfrom sklearn.metrics import (\n    get_scorer,\n    get_scorer_names\n)\nfrom typing import Callable, Union\nfrom ..sklearn_extensions.model_selection import ModelSelector\nfrom ..utilities import (filter_none_kwargs)\nfrom .._ortho_learner import _OrthoLearner\n\nclass _ModelNuisance(ModelSelector):\n    \"\"\"\n    RLearner nuisance model.\n\n    Fits the model_y and model_t at fit time and at predict time\n    calculates the residual Y and residual T based on the fitted models and returns\n    the residuals as two nuisance parameters.\n    \"\"\"\n\n    def __init__(self, model_y: ModelSelector, model_t: ModelSelector):\n        self._model_y = model_y\n        self._model_t = model_t\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        assert Z is None, \"Cannot accept instrument!\"\n        self._model_t.train(is_selecting, folds, X, W, T, **\n                            filter_none_kwargs(sample_weight=sample_weight, groups=groups))\n        self._model_y.train(is_selecting, folds, X, W, Y, **\n                            filter_none_kwargs(sample_weight=sample_weight, groups=groups))\n        return self\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None,\n              y_scoring=None, t_scoring=None, t_score_by_dim=False):\n        # note that groups are not passed to score because they are only used for fitting\n        T_score = self._model_t.score(X, W, T, **filter_none_kwargs(sample_weight=sample_weight),\n                                       scoring=t_scoring, score_by_dim=t_score_by_dim)\n        Y_score = self._model_y.score(X, W, Y, **filter_none_kwargs(sample_weight=sample_weight),\n                                      scoring=y_scoring)\n        return Y_score, T_score\n\n    def predict(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        Y_pred = self._model_y.predict(X, W)\n        T_pred = self._model_t.predict(X, W)\n        if (X is None) and (W is None):  # In this case predict above returns a single row\n            Y_pred = np.tile(Y_pred.reshape(1, -1), (Y.shape[0], 1))\n            T_pred = np.tile(T_pred.reshape(1, -1), (T.shape[0], 1))\n        Y_res = Y - Y_pred.reshape(Y.shape)\n        T_res = T - T_pred.reshape(T.shape)\n        return Y_res, T_res\n\n\nclass _ModelFinal:\n    \"\"\"\n    RLearner final model.\n\n    At fit time, fits a residual on residual regression with a heterogeneous coefficient\n    that depends on X, i.e.\n\n        .. math ::\n            Y - E[Y | X, W] = \\\\theta(X) \\\\cdot (T - E[T | X, W]) + \\\\epsilon\n\n    and at predict time returns :math:`\\\\theta(X)`. The score method returns the MSE of this final\n    residual on residual regression.\n    \"\"\"\n\n    def __init__(self, model_final):\n        self._model_final = model_final\n\n    def fit(self, Y, T, X=None, W=None, Z=None, nuisances=None,\n            sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        Y_res, T_res = nuisances\n        self._model_final.fit(X, T, T_res, Y_res, sample_weight=sample_weight,\n                              freq_weight=freq_weight, sample_var=sample_var)\n        return self\n\n    def predict(self, X=None):\n        return self._model_final.predict(X)\n\n    def score(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, groups=None,\n              scoring='mean_squared_error'):\n        \"\"\"\n        Score final model fit of residualized outcomes from residualized treatments and nuisances.\n\n        The default scoring method \"mean_squared_error\" is the score used to fit residualized\n        outcomes from residualized treatments and nuisances, and reproduces the behavior of this\n        score function from before the scoring method option.\n\n        :param Y: Unused\n        :param T: Unused\n        :param X: Combined nuisances, treatments and instruments to call _model_final.predict\n        :param W: Unused\n        :param Z: Unused\n        :param nuisances: tuple of the outcome (Y) residuals and treatment (T) residuals\n        :param sample_weight: Optional weighting on the samples\n        :param groups: Unused\n        :param scoring: Optional alternative scoring metric from sklearn.get_scorer\n        :return: Float score\n        \"\"\"\n        Y_res, T_res = nuisances\n        if Y_res.ndim == 1:\n            Y_res = Y_res.reshape((-1, 1))\n        if T_res.ndim == 1:\n            T_res = T_res.reshape((-1, 1))\n        effects = self._model_final.predict(X).reshape((-1, Y_res.shape[1], T_res.shape[1]))\n        Y_res_pred = np.einsum('ijk,ik->ij', effects, T_res).reshape(Y_res.shape)\n        return _ModelFinal._wrap_scoring(Y_true=Y_res, Y_pred=Y_res_pred, scoring=scoring, sample_weight=sample_weight)\n\n\n    @staticmethod\n    def _wrap_scoring(scoring:Union[str, Callable], Y_true, Y_pred, sample_weight=None):\n        \"\"\"\n        Pull the scoring function from sklearn.get_scorer and call it with Y_true, Y_pred.\n\n        Standard score names like \"mean_squared_error\" are present in sklearn scoring as\n        \"neg_...\" so score names are accepted either with or without the \"neg_\" prefix.\n        The function _score_func is called directly because the scorer objects from get_scorer()\n        do not accept a sample_weight parameter. The _score_func member has been available in\n        sklearn scorers since before sklearn 1.0. Note that custom callable score functions\n        are allowed but they are not validated before use; any errors will be raised.\n\n\n        :param scoring: A string name of a scoring function from sklearn, or any callable that will\n            function as thes core.\n        :param Y_true: True Y values\n        :param Y_pred: Predicted Y values\n        :param sample_weight: Optional weighting on the examples\n        :return: Float score\n        \"\"\"\n        if isinstance(scoring,str) and scoring in get_scorer_names():\n            score_fn = get_scorer(scoring)._score_func\n        elif isinstance(scoring,str) and 'neg_' + scoring in get_scorer_names():\n            score_fn = get_scorer('neg_' + scoring)._score_func\n        elif callable(scoring):\n            score_fn =  scoring\n        else:\n            raise NotImplementedError(f\"_wrap_scoring does not support '{scoring}'\" )\n\n        # Some score like functions are partial to np.array and not np.ndarray with shape (N,1)\n        Y_true = Y_true.squeeze() if len(Y_true.shape)==2 and Y_true.shape[1]==1 else Y_true\n        Y_pred = Y_pred.squeeze() if len(Y_pred.shape)==2 and Y_pred.shape[1]==1 else Y_pred\n        if sample_weight is not None:\n            res = score_fn(Y_true, Y_pred, sample_weight=sample_weight)\n        else:\n            res = score_fn(Y_true, Y_pred)\n\n        return res\n\n\n    @staticmethod\n    def wrap_scoring(scoring, Y_true, Y_pred, sample_weight=None, score_by_dim=False):\n        \"\"\"\n        In case the caller wants a score for each dimension of a multiple treatment model.\n\n        Loop over the call to the single score wrapper.\n        \"\"\"\n        if not score_by_dim:\n            return _ModelFinal._wrap_scoring(scoring, Y_true, Y_pred, sample_weight)\n        else:\n            assert Y_true.shape == Y_pred.shape, \"Mismatch shape in wrap_scoring\"\n            n_out = Y_pred.shape[1]\n            res = [None]*Y_pred.shape[1]\n            for yidx in range(n_out):\n                res[yidx]= _ModelFinal.wrap_scoring(scoring, Y_true[:,yidx], Y_pred[:,yidx], sample_weight)\n            return res\n\n\nclass _RLearner(_OrthoLearner):\n    \"\"\"\n    Base class for CATE learners that residualize treatment and outcome and run residual on residual regression.\n\n    The estimator is a special of an :class:`._OrthoLearner` estimator, so it follows the two\n    stage process, where a set of nuisance functions are estimated in the first stage in a crossfitting\n    manner and a final stage estimates the CATE model. See the documentation of\n    :class:`._OrthoLearner` for a description of this two stage process.\n\n    In this estimator, the CATE is estimated by using the following estimating equations:\n\n    .. math ::\n        Y - \\\\E[Y | X, W] = \\\\Theta(X) \\\\cdot (T - \\\\E[T | X, W]) + \\\\epsilon\n\n    Thus if we estimate the nuisance functions :math:`q(X, W) = \\\\E[Y | X, W]` and\n    :math:`f(X, W)=\\\\E[T | X, W]` in the first stage, we can estimate the final stage cate for each\n    treatment t, by running a regression, minimizing the residual on residual square loss:\n\n    .. math ::\n        \\\\hat{\\\\theta} = \\\\arg\\\\min_{\\\\Theta}\\\n        \\\\E_n\\\\left[ (\\\\tilde{Y} - \\\\Theta(X) \\\\cdot \\\\tilde{T})^2 \\\\right]\n\n    Where :math:`\\\\tilde{Y}=Y - \\\\E[Y | X, W]` and :math:`\\\\tilde{T}=T-\\\\E[T | X, W]` denotes the\n    residual outcome and residual treatment.\n\n    Parameters\n    ----------\n    discrete_outcome: bool\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer` or None\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    random_state: int, :class:`~numpy.random.mtrand.RandomState` instance or None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply nuisance models that can handle\n        missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to speed up the cross-fitting step.\n\n    ray_remote_func_options : dict, optional\n        Options to pass to ray.remote function decorator.\n        see more at https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    The example code below implements a very simple version of the double machine learning\n    method on top of the :class:`._RLearner` class, for expository purposes.\n    For a more elaborate implementation of a Double Machine Learning child class of the class\n    checkout :class:`.DML` and its child classes:\n\n    .. testcode::\n\n        import numpy as np\n        from sklearn.linear_model import LinearRegression\n        from econml.dml._rlearner import _RLearner\n        from econml.sklearn_extensions.model_selection import SingleModelSelector\n        from sklearn.base import clone\n        class ModelFirst:\n            def __init__(self, model):\n                self._model = clone(model, safe=False)\n            def fit(self, X, W, Y, sample_weight=None):\n                self._model.fit(np.hstack([X, W]), Y)\n                return self\n            def predict(self, X, W):\n                return self._model.predict(np.hstack([X, W]))\n        class ModelSelector(SingleModelSelector):\n            def __init__(self, model):\n                self._model = ModelFirst(model)\n            def train(self, is_selecting, folds, X, W, Y, sample_weight=None):\n                self._model.fit(X, W, Y, sample_weight=sample_weight)\n                return self\n            @property\n            def best_model(self):\n                return self._model\n            @property\n            def best_score(self):\n                return 0\n        class ModelFinal:\n            def fit(self, X, T, T_res, Y_res, sample_weight=None, freq_weight=None, sample_var=None):\n                self.model = LinearRegression(fit_intercept=False).fit(X * T_res.reshape(-1, 1),\n                                                                       Y_res)\n                return self\n            def predict(self, X):\n                return self.model.predict(X)\n        class RLearner(_RLearner):\n            def _gen_model_y(self):\n                return ModelSelector(LinearRegression())\n            def _gen_model_t(self):\n                return ModelSelector(LinearRegression())\n            def _gen_rlearner_model_final(self):\n                return ModelFinal()\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 3))\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, 0.01, size=(1000,))\n        est = RLearner(cv=2, discrete_outcome=False, discrete_treatment=False,\n                       treatment_featurizer=None, categories='auto', random_state=None)\n        est.fit(y, X[:, 0], X=np.ones((X.shape[0], 1)), W=X[:, 1:])\n\n    >>> est.const_marginal_effect(np.ones((1,1)))\n    array([0.999631...])\n    >>> est.effect(np.ones((1,1)), T0=0, T1=10)\n    array([9.996314...])\n    >>> est.score(y, X[:, 0], X=np.ones((X.shape[0], 1)), W=X[:, 1:])\n    9.73638006...e-05\n    >>> est.rlearner_model_final_.model\n    LinearRegression(fit_intercept=False)\n    >>> est.rlearner_model_final_.model.coef_\n    array([0.999631...])\n    >>> est.score_\n    9.82623204...e-05\n    >>> [mdl._model for mdls in est.models_y for mdl in mdls]\n    [LinearRegression(), LinearRegression()]\n    >>> [mdl._model for mdls in est.models_t for mdl in mdls]\n    [LinearRegression(), LinearRegression()]\n\n    Attributes\n    ----------\n    models_y: nested list of objects of type(model_y)\n        A nested list of instances of the model_y object. Number of sublist equals to number of monte carlo\n        iterations, each element in the sublist corresponds to a crossfitting\n        fold and is the model instance that was fitted for that training fold.\n    models_t: nested list of objects of type(model_t)\n        A nested list of instances of the model_t object. Number of sublist equals to number of monte carlo\n        iterations, each element in the sublist corresponds to a crossfitting\n        fold and is the model instance that was fitted for that training fold.\n    rlearner_model_final_ : object of type(model_final)\n        An instance of the model_final object that was fitted after calling fit.\n    score_ : float\n        The MSE in the final residual on residual regression\n    nuisance_scores_y : nested list of float\n        The out-of-sample scores for each outcome model\n    nuisance_scores_t : nested list of float\n        The out-of-sample scores for each treatment model\n\n        .. math::\n            \\\\frac{1}{n} \\\\sum_{i=1}^n (Y_i - \\\\hat{E}[Y|X_i, W_i]\\\n                                        - \\\\hat{\\\\theta}(X_i)\\\\cdot (T_i - \\\\hat{E}[T|X_i, W_i]))^2\n\n        If `sample_weight` is not None at fit time, then a weighted average is returned. If the outcome Y\n        is multidimensional, then the average of the MSEs for each dimension of Y is returned.\n    \"\"\"\n\n    def __init__(self,\n                 *,\n                 discrete_outcome,\n                 discrete_treatment,\n                 treatment_featurizer,\n                 categories,\n                 cv,\n                 random_state,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         discrete_instrument=False,  # no instrument, so doesn't matter\n                         categories=categories,\n                         cv=cv,\n                         random_state=random_state,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    @abstractmethod\n    def _gen_model_y(self):\n        \"\"\"\n        Generate the Y model.\n\n        Returns\n        -------\n        model_y: selector for the estimator of E[Y | X, W]\n            The estimator for fitting the response to the features and controls. Must implement\n            `fit` and `predict` methods.  Unlike sklearn estimators both methods must\n            take an extra second argument (the controls), i.e. ::\n\n                model_y.fit(X, W, Y, sample_weight=sample_weight)\n                model_y.predict(X, W)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abstractmethod\n    def _gen_model_t(self):\n        \"\"\"\n        Generate the T model.\n\n        Returns\n        -------\n        model_t: selector for the estimator of E[T | X, W]\n            The estimator for fitting the treatment to the features and controls. Must implement\n            `fit` and `predict` methods.  Unlike sklearn estimators both methods must\n            take an extra second argument (the controls), i.e. ::\n\n                model_t.fit(X, W, T, sample_weight=sample_weight)\n                model_t.predict(X, W)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abstractmethod\n    def _gen_rlearner_model_final(self):\n        \"\"\"\n        Generate the RLearner's final model.\n\n        Returns\n        -------\n        model_final: estimator for fitting the response residuals to the features and treatment residuals\n            Must implement `fit` and `predict` methods. Unlike sklearn estimators the fit methods must\n            take an extra second argument (the treatment residuals). Predict, on the other hand,\n            should just take the features and return the constant marginal effect. More, concretely::\n\n                model_final.fit(X, T_res, Y_res,\n                                sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var)\n                model_final.predict(X)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def _gen_ortho_learner_model_nuisance(self):\n        return _ModelNuisance(self._gen_model_y(), self._gen_model_t())\n\n    def _gen_ortho_learner_model_final(self):\n        return _ModelFinal(self._gen_rlearner_model_final())\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=None):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n, ) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of:class:`.BootstrapInference`).\n\n        Returns\n        -------\n        self: _RLearner instance\n        \"\"\"\n        # Replacing fit from _OrthoLearner, to enforce Z=None and improve the docstring\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    def score(self, Y, T, X=None, W=None, sample_weight=None, scoring=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        # Replacing score from _OrthoLearner, to enforce Z=None and improve the docstring\n        return super().score(Y, T, X=X, W=W, sample_weight=sample_weight, scoring=scoring)\n\n    @property\n    def rlearner_model_final_(self):\n        # NOTE: important to get parent's wrapped copy so that\n        #       after training wrapped featurizer is also trained, etc.\n        return self.ortho_learner_model_final_._model_final\n\n    @property\n    def models_y(self):\n        return [[mdl._model_y.best_model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t(self):\n        return [[mdl._model_t.best_model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y(self):\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t(self):\n        return self.nuisance_scores_[1]\n\n    @property\n    def residuals_(self):\n        \"\"\"\n        Get the residuals.\n\n        Returns a tuple (y_res, T_res, X, W), of the residuals from the first stage estimation\n        along with the associated X and W. Samples are not guaranteed to be in the same\n        order as the input order.\n        \"\"\"\n        if not hasattr(self, '_cached_values'):\n            raise AttributeError(\"Estimator is not fitted yet!\")\n        if self._cached_values is None:\n            raise AttributeError(\"`fit` was called with `cache_values=False`. \"\n                                 \"Set to `True` to enable residual storage.\")\n        Y_res, T_res = self._cached_values.nuisances\n        return Y_res, T_res, self._cached_values.X, self._cached_values.W\n\n    @staticmethod\n    def scoring_name(scoring: Union[str,Callable,None])->str:\n        if scoring is None:\n            return 'default_score'\n        elif isinstance(scoring,str):\n            return scoring\n        elif callable(scoring):\n            return scoring.__name__\n        else:\n            raise ValueError(\"Scoring should be str|Callable|None\")\n\n\n    def score_nuisances(self, Y, T, X=None, W=None, Z=None, sample_weight=None, y_scoring=None,\n                        t_scoring=None, t_score_by_dim=False):\n        \"\"\"\n        Score the fitted nuisance models on arbitrary data and using any supported sklearn scoring.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        X: (n, d_x) matrix, optional\n            Features for each sample\n        W: (n, d_w) matrix, optional\n            Controls for each sample\n        Z: (n, d_z) matrix, optional\n            Instruments for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n        t_scoring: str, optional\n            Name of an sklearn scoring function to use instead of the default for model_t, choices\n            are from sklearn.get_scoring_names() plus pearsonr\n        y_scoring: str, optional\n            Name of an sklearn scoring function to use instead of the default for model_y, choices\n            are from sklearn.get_scoring_names() plus pearsonr\n        t_score_by_dim: bool, default=False\n            Score prediction of treatment dimensions separately\n\n        Returns\n        -------\n        score_dict : dict[str,list[float]]\n            A dictionary where the keys indicate the Y and T scores used and the values are\n            lists of scores, one per CV fold model.\n        \"\"\"\n        Y_key = f'Y_{_RLearner.scoring_name(y_scoring)}'\n        T_Key = f'T_{_RLearner.scoring_name(t_scoring)}'\n        score_dict = {\n            Y_key : [],\n            T_Key : []\n        }\n\n        # For discrete treatments, these will have to be one hot encoded\n        Y_2_score = pd.get_dummies(Y) if self.discrete_outcome and (len(Y.shape) == 1 or Y.shape[1] == 1) else Y\n        T_2_score = pd.get_dummies(T) if self.discrete_treatment and (len(T.shape) == 1 or T.shape[1] == 1) else T\n\n        for m in self._models_nuisance[0]:\n            Y_score, T_score = m.score(Y_2_score, T_2_score, X=X, W=W, Z=Z, sample_weight=sample_weight,\n                                       y_scoring=y_scoring, t_scoring=t_scoring,\n                                       t_score_by_dim=t_score_by_dim)\n            score_dict[Y_key].append(Y_score)\n            score_dict[T_Key].append(T_score)\n        return score_dict\n"
  },
  {
    "path": "econml/dml/causal_forest.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom warnings import warn\n\nimport numpy as np\nfrom sklearn.base import clone\nfrom sklearn.model_selection import train_test_split\nfrom itertools import product\nfrom .dml import _BaseDML\nfrom .dml import _make_first_stage_selector\nfrom ..inference import NormalInferenceResults\nfrom ..inference._inference import Inference\nfrom ..utilities import (shape, check_input_arrays,\n                         cross_product, Summary)\nfrom ..grf import CausalForest, MultiOutputGRF\nfrom .._cate_estimator import LinearCateEstimator\nfrom .._shap import _shap_explain_multitask_model_cate\nfrom .._ortho_learner import _OrthoLearner\nfrom ..validate.sensitivity_analysis import (sensitivity_interval, RV, dml_sensitivity_values,\n                                             sensitivity_summary)\n\n\nclass _CausalForestFinalWrapper:\n\n    def __init__(self, model_final, featurizer, discrete_treatment, drate):\n        self._model = clone(model_final, safe=False)\n        self._original_featurizer = clone(featurizer, safe=False)\n        self._featurizer = self._original_featurizer\n        self._discrete_treatment = discrete_treatment\n        self._drate = drate\n\n    def _combine(self, X, fitting=True):\n        if X is not None:\n            if self._featurizer is not None:\n                F = self._featurizer.fit_transform(X) if fitting else self._featurizer.transform(X)\n            else:\n                F = X\n        else:\n            raise AttributeError(\"Cannot use this method with X=None. Consider \"\n                                 \"using the LinearDML estimator.\")\n        return F\n\n    def _ate_and_stderr(self, drpreds, mask=None):\n        if mask is not None:\n            drpreds = drpreds[mask]\n        point = np.nanmean(drpreds, axis=0).reshape(self._d_y + self._d_t)\n        nonnan = np.sum(~np.isnan(drpreds))\n        stderr = (np.nanstd(drpreds, axis=0) / np.sqrt(nonnan)).reshape(self._d_y + self._d_t)\n        return point, stderr\n\n    def fit(self, X, T, T_res, Y_res, sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        # Track training dimensions to see if Y or T is a vector instead of a 2-dimensional array\n        self._d_t = shape(T_res)[1:]\n        self._d_y = shape(Y_res)[1:]\n        fts = self._combine(X)\n        if T_res.ndim == 1:\n            T_res = T_res.reshape((-1, 1))\n        if Y_res.ndim == 1:\n            Y_res = Y_res.reshape((-1, 1))\n\n        # if binary/continuous treatment and single outcome, can calculate sensitivity params\n        if not ((self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1)):\n            self.sensitivity_params = dml_sensitivity_values(T_res, Y_res)\n\n        self._model.fit(fts, T_res, Y_res, sample_weight=sample_weight)\n        # Fit a doubly robust average effect\n        if self._discrete_treatment and self._drate:\n            oob_preds = self._model.oob_predict(fts)\n            self._oob_preds = oob_preds\n            if np.any(np.isnan(oob_preds)):\n                warn(\"Could not generate out-of-bag predictions on some training data. \"\n                     \"Consider increasing the number of trees. `ate_` results will take the \"\n                     \"average of the subset of training data for which out-of-bag predictions \"\n                     \"where available.\")\n            residuals = Y_res - np.einsum('ijk,ik->ij', oob_preds, T_res)\n            propensities = T - T_res\n            VarT = np.clip(propensities * (1 - propensities), 1e-2, np.inf)\n            drpreds = oob_preds\n            drpreds += cross_product(residuals, T_res / VarT).reshape((-1, Y_res.shape[1], T_res.shape[1]))\n            drpreds[np.isnan(oob_preds)] = np.nan\n            self.ate_, self.ate_stderr_ = self._ate_and_stderr(drpreds)\n            self.att_ = []\n            self.att_stderr_ = []\n            att, stderr = self._ate_and_stderr(drpreds, np.all(T == 0, axis=1))\n            self.att_.append(att)\n            self.att_stderr_.append(stderr)\n            for t in range(self._d_t[0]):\n                att, stderr = self._ate_and_stderr(drpreds, (T[:, t] == 1))\n                self.att_.append(att)\n                self.att_stderr_.append(stderr)\n\n        return self\n\n    def predict(self, X):\n        return self._model.predict(self._combine(X, fitting=False)).reshape((-1,) + self._d_y + self._d_t)\n\n    @property\n    def ate_(self):\n        if not self._discrete_treatment:\n            raise AttributeError(\"Doubly Robust ATE calculation on training data \"\n                                 \"is available only on discrete treatments!\")\n        if not self._drate:\n            raise AttributeError(\"Doubly Robust ATE calculation on training data \"\n                                 \"is available only when `drate=True`!\")\n        return self._ate\n\n    @ate_.setter\n    def ate_(self, value):\n        self._ate = value\n\n    @property\n    def ate_stderr_(self):\n        if not self._discrete_treatment:\n            raise AttributeError(\"Doubly Robust ATE calculation on training data \"\n                                 \"is available only on discrete treatments!\")\n        if not self._drate:\n            raise AttributeError(\"Doubly Robust ATE calculation on training data \"\n                                 \"is available only when `drate=True`!\")\n        return self._ate_stderr\n\n    @ate_stderr_.setter\n    def ate_stderr_(self, value):\n        self._ate_stderr = value\n\n    @property\n    def att_(self):\n        if not self._discrete_treatment:\n            raise AttributeError(\"Doubly Robust ATT calculation on training data \"\n                                 \"is available only on discrete treatments!\")\n        if not self._drate:\n            raise AttributeError(\"Doubly Robust ATT calculation on training data \"\n                                 \"is available only when `drate=True`!\")\n        return self._att\n\n    @att_.setter\n    def att_(self, value):\n        self._att = value\n\n    @property\n    def att_stderr_(self):\n        if not self._discrete_treatment:\n            raise AttributeError(\"Doubly Robust ATT calculation on training data \"\n                                 \"is available only on discrete treatments!\")\n        if not self._drate:\n            raise AttributeError(\"Doubly Robust ATT calculation on training data \"\n                                 \"is available only when `drate=True`!\")\n        return self._att_stderr\n\n    @att_stderr_.setter\n    def att_stderr_(self, value):\n        self._att_stderr = value\n\n\nclass _GenericSingleOutcomeModelFinalWithCovInference(Inference):\n\n    def prefit(self, estimator, *args, **kwargs):\n        self.model_final = estimator.model_final_\n        self.featurizer = estimator.featurizer_ if hasattr(estimator, 'featurizer_') else None\n\n    def fit(self, estimator, *args, **kwargs):\n        # once the estimator has been fit, it's kosher to store d_t here\n        # (which needs to have been expanded if there's a discrete treatment)\n        self._est = estimator\n        self._d_t = estimator._d_t\n        self._d_y = estimator._d_y\n        self.d_t = self._d_t[0] if self._d_t else 1\n        self.d_y = self._d_y[0] if self._d_y else 1\n\n    def const_marginal_effect_interval(self, X, *, alpha=0.05):\n        return self.const_marginal_effect_inference(X).conf_int(alpha=alpha)\n\n    def const_marginal_effect_inference(self, X):\n        if X is None:\n            raise ValueError(\"This inference method currently does not support X=None!\")\n        if self.featurizer is not None:\n            X = self.featurizer.transform(X)\n        pred, pred_var = self.model_final.predict_and_var(X)\n        pred = pred.reshape((-1,) + self._d_y + self._d_t)\n        pred_stderr = np.sqrt(np.diagonal(pred_var, axis1=2, axis2=3).reshape((-1,) + self._d_y + self._d_t))\n        return NormalInferenceResults(d_t=self.d_t, d_y=self.d_y, pred=pred,\n                                      pred_stderr=pred_stderr, mean_pred_stderr=None, inf_type='effect')\n\n    def effect_interval(self, X, *, T0, T1, alpha=0.05):\n        return self.effect_inference(X, T0=T0, T1=T1).conf_int(alpha=alpha)\n\n    def effect_inference(self, X, *, T0, T1):\n        if X is None:\n            raise ValueError(\"This inference method currently does not support X=None!\")\n        X, T0, T1 = self._est._expand_treatments(X, T0, T1)\n        if self.featurizer is not None:\n            X = self.featurizer.transform(X)\n        dT = T1 - T0\n        if dT.ndim == 1:\n            dT = dT.reshape((-1, 1))\n        pred, pred_var = self.model_final.predict_projection_and_var(X, dT)\n        pred = pred.reshape((-1,) + self._d_y)\n        pred_stderr = np.sqrt(pred_var.reshape((-1,) + self._d_y))\n        return NormalInferenceResults(d_t=None, d_y=self.d_y, pred=pred,\n                                      pred_stderr=pred_stderr, mean_pred_stderr=None, inf_type='effect')\n\n    def marginal_effect_interval(self, T, X, alpha=0.05):\n        return self.marginal_effect_inference(T, X).conf_int(alpha=alpha)\n\n    def marginal_effect_inference(self, T, X):\n        if X is None:\n            raise ValueError(\"This inference method currently does not support X=None!\")\n        if not self._est._original_treatment_featurizer:\n            return self.const_marginal_effect_inference(X)\n        X, T = self._est._expand_treatments(X, T, transform=False)\n        if self.featurizer is not None:\n            X = self.featurizer.transform(X)\n\n        feat_T = self._est.transformer.transform(T)\n        jac_T = self._est.transformer.jac(T)\n\n        d_t_orig = T.shape[1:]\n        d_t_orig = d_t_orig[0] if d_t_orig else 1\n\n        output_shape = [X.shape[0]]\n        if self._d_y:\n            output_shape.append(self._d_y[0])\n        if T.shape[1:]:\n            output_shape.append(T.shape[1])\n        me_pred = np.zeros(shape=output_shape)\n        me_stderr = np.zeros(shape=output_shape)\n\n        for i in range(d_t_orig):\n            # conditionally index multiple dimensions depending on shapes of T, Y and feat_T\n            jac_index = [slice(None)]\n            me_index = [slice(None)]\n            if self._d_y:\n                me_index.append(slice(None))\n            if T.shape[1:]:\n                jac_index.append(i)\n                me_index.append(i)\n            if feat_T.shape[1:]:  # if featurized T is not a vector\n                jac_index.append(slice(None))\n\n            jac_slice = jac_T[tuple(jac_index)]\n            if jac_slice.ndim == 1:\n                jac_slice.reshape((-1, 1))\n\n            e_pred, e_var = self.model_final.predict_projection_and_var(X, jac_slice)\n            e_stderr = np.sqrt(e_var)\n\n            if not self._d_y:\n                e_pred = e_pred.squeeze(axis=1)\n                e_stderr = e_stderr.squeeze(axis=1)\n\n            me_pred[tuple(me_index)] = e_pred\n            me_stderr[tuple(me_index)] = e_stderr\n\n        return NormalInferenceResults(d_t=d_t_orig, d_y=self.d_y, pred=me_pred,\n                                      pred_stderr=me_stderr, mean_pred_stderr=None, inf_type='effect')\n\n\nclass CausalForestDML(_BaseDML):\n    \"\"\"\n    A Causal Forest [cfdml1]_ combined with DML-based residualization of the treatment and outcome variables.\n\n    It fits a forest that solves the local moment equation problem:\n\n    .. code-block::\n\n        E[ (Y - E[Y|X, W] - <theta(x), T - E[T|X, W]> - beta(x)) (T;1) | X=x] = 0\n\n    where E[Y|X, W] and E[T|X, W] are fitted in a first stage in a cross-fitting manner.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    drate : bool, default True\n        Whether to calculate doubly robust average treatment effect estimate on training data at fit time.\n        This happens only if `discrete_treatment=True`. Doubly robust ATE estimation on the training data\n        is not available for continuous treatments.\n\n    n_estimators : int, default 100\n        Number of trees\n\n    criterion : {``\"mse\"``, ``\"het\"``}, default \"mse\"\n        The function to measure the quality of a split. Supported criteria\n        are ``\"mse\"`` for the mean squared error in a linear moment estimation tree and ``\"het\"`` for\n        heterogeneity score.\n\n        - The ``\"mse\"`` criterion finds splits that minimize the score\n\n          .. code-block::\n\n            sum_{child} E[(Y - <theta(child), T> - beta(child))^2 | X=child] weight(child)\n\n          Internally, for the case of more than two treatments or for the case of two treatments with\n          ``fit_intercept=True`` then this criterion is approximated by computationally simpler variants for\n          computational purposes. In particular, it is replaced by:\n\n          .. code-block::\n\n            sum_{child} weight(child) * rho(child).T @ E[(T;1) @ (T;1).T | X in child] @ rho(child)\n\n          where:\n\n          .. code-block::\n\n                rho(child) := E[(T;1) @ (T;1).T | X in parent]^{-1}\n                                * E[(Y - <theta(x), T> - beta(x)) (T;1) | X in child]\n\n          This can be thought as a heterogeneity inducing score, but putting more weight on scores\n          with a large minimum eigenvalue of the child jacobian ``E[(T;1) @ (T;1).T | X in child]``,\n          which leads to smaller variance of the estimate and stronger identification of the parameters.\n\n        - The \"het\" criterion finds splits that maximize the pure parameter heterogeneity score\n\n          .. code-block::\n\n            sum_{child} weight(child) * rho(child)[:n_T].T @ rho(child)[:n_T]\n\n          This can be thought as an approximation to the ideal heterogeneity score:\n\n          .. code-block::\n\n            weight(left) * weight(right) || theta(left) - theta(right)||_2^2 / weight(parent)^2\n\n          as outlined in [cfdml1]_\n\n    max_depth : int, default None\n        The maximum depth of the tree. If None, then nodes are expanded until\n        all leaves are pure or until all leaves contain less than\n        min_samples_split samples.\n\n    min_samples_split : int or float, default 10\n        The minimum number of samples required to split an internal node:\n\n        - If int, then consider `min_samples_split` as the minimum number.\n        - If float, then `min_samples_split` is a fraction and `ceil(min_samples_split * n_samples)` are the minimum\n          number of samples for each split.\n\n    min_samples_leaf : int or float, default 5\n        The minimum number of samples required to be at a leaf node.\n        A split point at any depth will only be considered if it leaves at\n        least ``min_samples_leaf`` training samples in each of the left and\n        right branches.  This may have the effect of smoothing the model,\n        especially in regression.\n\n        - If int, then consider `min_samples_leaf` as the minimum number.\n        - If float, then `min_samples_leaf` is a fraction and `ceil(min_samples_leaf * n_samples)` are the minimum\n          number of samples for each node.\n\n    min_weight_fraction_leaf : float, default 0.0\n        The minimum weighted fraction of the sum total of weights (of all\n        the input samples) required to be at a leaf node. Samples have\n        equal weight when sample_weight is not provided.\n\n    min_var_fraction_leaf : None or float in (0, 1], default None\n        A constraint on some proxy of the variation of the treatment vector that should be contained within each\n        leaf as a percentage of the total variance of the treatment vector on the whole sample. This avoids\n        performing splits where either the variance of the treatment is small and hence the local parameter\n        is not well identified and has high variance. The proxy of variance is different for different criterion,\n        primarily for computational efficiency reasons. If ``criterion='het'``, then this constraint translates to::\n\n            for all i in {1, ..., T.shape[1]}:\n                Var(T[i] | X in leaf) > `min_var_fraction_leaf` * Var(T[i])\n\n        If ``criterion='mse'``, because the criterion stores more information about the leaf for\n        every candidate split, then this constraint imposes further constraints on the pairwise correlations\n        of different coordinates of each treatment, i.e.::\n\n            for all i neq j:\n                sqrt( Var(T[i]|X in leaf) * Var(T[j]|X in leaf)\n                    * ( 1 - rho(T[i], T[j]| in leaf)^2 ) )\n                    > `min_var_fraction_leaf` sqrt( Var(T[i]) * Var(T[j]) * (1 - rho(T[i], T[j])^2 ) )\n\n        where rho(X, Y) is the Pearson correlation coefficient of two random variables X, Y. Thus this\n        constraint also enforces that no two pairs of treatments be very co-linear within a leaf. This\n        extra constraint primarily has bite in the case of more than two input treatments and also avoids\n        leafs where the parameter estimate has large variance due to local co-linearities of the treatments.\n\n    min_var_leaf_on_val : bool, default False\n        Whether the `min_var_fraction_leaf` constraint should also be enforced to hold on the validation set of the\n        honest split too. If ``min_var_leaf=None`` then this flag does nothing. Setting this to True should\n        be done with caution, as this partially violates the honesty structure, since the treatment variable\n        of the validation set is used to inform the split structure of the tree. However, this is a benign\n        dependence as it only uses local correlation structure of the treatment T to decide whether\n        a split is feasible.\n\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\n        The number of features to consider when looking for the best split:\n\n        - If int, then consider `max_features` features at each split.\n        - If float, then `max_features` is a fraction and `int(max_features * n_features)` features\n          are considered at each split.\n        - If \"auto\", then `max_features=n_features`.\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\n        - If \"log2\", then `max_features=log2(n_features)`.\n        - If None, then `max_features=n_features`.\n\n        Note: the search for a split does not stop until at least one\n        valid partition of the node samples is found, even if it requires to\n        effectively inspect more than ``max_features`` features.\n\n    min_impurity_decrease : float, default 0.0\n        A node will be split if this split induces a decrease of the impurity\n        greater than or equal to this value.\n        The weighted impurity decrease equation is the following::\n\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\n                                - N_t_L / N_t * left_impurity)\n\n        where ``N`` is the total number of samples, ``N_t`` is the number of\n        samples at the current node, ``N_t_L`` is the number of samples in the\n        left child, and ``N_t_R`` is the number of samples in the right child.\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\n        if ``sample_weight`` is passed.\n\n    max_samples : int or float in (0, 1], default .45,\n        The number of samples to use for each subsample that is used to train each tree:\n\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\n        - If float, then train each tree on `ceil(`max_samples` * `n_samples`)`, sampled without replacement\n          from all the samples.\n\n        If ``inference=True``, then `max_samples` must either be an integer smaller than `n_samples//2` or a float\n        less than or equal to .5.\n\n    min_balancedness_tol: float in [0, .5], default .45\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\n        to be valid, this has to be any positive constant bounded away from zero.\n\n    honest : bool, default True\n        Whether each tree should be trained in an honest manner, i.e. the training set is split into two equal\n        sized subsets, the train and the val set. All samples in train are used to create the split structure\n        and all samples in val are used to calculate the value of each node in the tree.\n\n    inference : bool, default True\n        Whether inference (i.e. confidence interval construction and uncertainty quantification of the estimates)\n        should be enabled. If ``inference=True``, then the estimator uses a bootstrap-of-little-bags approach\n        to calculate the covariance of the parameter vector, with am objective Bayesian debiasing correction\n        to ensure that variance quantities are positive.\n\n    fit_intercept : bool, default True\n        Whether we should fit an intercept nuisance parameter beta(x).\n\n    subforest_size : int, default 4,\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\n\n    n_jobs : int or None, default -1\n        The number of parallel jobs to be used for parallelism; follows joblib semantics.\n        `n_jobs=-1` means all available cpu cores. `n_jobs=None` means no parallelism.\n\n    random_state : int, RandomState instance, or None, default None\n        Controls the randomness of the estimator. The features are always\n        randomly permuted at each split. When ``max_features < n_features``, the algorithm will\n        select ``max_features`` at random at each split before finding the best\n        split among them. But the best found split may vary across different\n        runs, even if ``max_features=n_features``. That is the case, if the\n        improvement of the criterion is identical for several splits and one\n        split has to be selected at random. To obtain a deterministic behaviour\n        during fitting, ``random_state`` has to be fixed to an integer.\n\n    verbose : int, default 0\n        Controls the verbosity when fitting and predicting.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_y, model_y that can handle\n        missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models and discrete treatment:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import CausalForestDML\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = CausalForestDML(discrete_treatment=True)\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.62769..., 1.64575..., 0.68497...])\n    >>> est.effect_interval(X[:3])\n    (array([0.18798..., 1.17144..., 0.10788...]),\n    array([1.06739..., 2.12006..., 1.26205...]))\n\n    Attributes\n    ----------\n    ate_ : ndarray of shape (n_outcomes, n_treatments)\n        The average constant marginal treatment effect of each treatment for each outcome,\n        averaged over the training data and with a doubly robust correction. Available only\n        when `discrete_treatment=True` and `drate=True`.\n    ate_stderr_ : ndarray of shape (n_outcomes, n_treatments)\n        The standard error of the `ate_` attribute.\n    feature_importances_ : ndarray of shape (n_features,)\n        The feature importances based on the amount of parameter heterogeneity they create.\n        The higher, the more important the feature.\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\n        creates. Each split that the feature was chosen adds::\n\n            parent_weight * (left_weight * right_weight)\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\n\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\n        By default splits below `max_depth=4` are not used in this calculation and also each split\n        at depth `depth`, is re-weighted by 1 / (1 + `depth`)**2.0. See the method ``feature_importances``\n        for a method that allows one to change these defaults.\n\n    References\n    ----------\n    .. [cfdml1] Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\n        The Annals of Statistics 47.2 (2019): 1148-1178\n        https://arxiv.org/pdf/1610.01271.pdf\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y='auto',\n                 model_t='auto',\n                 featurizer=None,\n                 treatment_featurizer=None,\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 drate=True,\n                 n_estimators=100,\n                 criterion=\"mse\",\n                 max_depth=None,\n                 min_samples_split=10,\n                 min_samples_leaf=5,\n                 min_weight_fraction_leaf=0.,\n                 min_var_fraction_leaf=None,\n                 min_var_leaf_on_val=False,\n                 max_features=\"auto\",\n                 min_impurity_decrease=0.,\n                 max_samples=.45,\n                 min_balancedness_tol=.45,\n                 honest=True,\n                 inference=True,\n                 fit_intercept=True,\n                 subforest_size=4,\n                 n_jobs=-1,\n                 random_state=None,\n                 verbose=0,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n\n        # TODO: consider whether we need more care around stateful featurizers,\n        #       since we clone it and fit separate copies\n        self.drate = drate\n        self.model_y = clone(model_y, safe=False)\n        self.model_t = clone(model_t, safe=False)\n        self.featurizer = clone(featurizer, safe=False)\n        self.discrete_instrument = discrete_treatment\n        self.categories = categories\n        self.cv = cv\n        self.n_estimators = n_estimators\n        self.criterion = criterion\n        self.max_depth = max_depth\n        self.min_samples_split = min_samples_split\n        self.min_samples_leaf = min_samples_leaf\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\n        self.min_var_fraction_leaf = min_var_fraction_leaf\n        self.min_var_leaf_on_val = min_var_leaf_on_val\n        self.max_features = max_features\n        self.min_impurity_decrease = min_impurity_decrease\n        self.max_samples = max_samples\n        self.min_balancedness_tol = min_balancedness_tol\n        self.honest = honest\n        self.inference = inference\n        self.fit_intercept = fit_intercept\n        self.subforest_size = subforest_size\n        self.n_jobs = n_jobs\n        self.verbose = verbose\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _get_inference_options(self):\n        options = super()._get_inference_options()\n        options.update(blb=_GenericSingleOutcomeModelFinalWithCovInference)\n        options.update(auto=_GenericSingleOutcomeModelFinalWithCovInference)\n        return options\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y(self):\n        return _make_first_stage_selector(self.model_y, self.discrete_outcome, self.random_state)\n\n    def _gen_model_t(self):\n        return _make_first_stage_selector(self.model_t, self.discrete_treatment, self.random_state)\n\n    def _gen_model_final(self):\n        return MultiOutputGRF(CausalForest(n_estimators=self.n_estimators,\n                                           criterion=self.criterion,\n                                           max_depth=self.max_depth,\n                                           min_samples_split=self.min_samples_split,\n                                           min_samples_leaf=self.min_samples_leaf,\n                                           min_weight_fraction_leaf=self.min_weight_fraction_leaf,\n                                           min_var_fraction_leaf=self.min_var_fraction_leaf,\n                                           min_var_leaf_on_val=self.min_var_leaf_on_val,\n                                           max_features=self.max_features,\n                                           min_impurity_decrease=self.min_impurity_decrease,\n                                           max_samples=self.max_samples,\n                                           min_balancedness_tol=self.min_balancedness_tol,\n                                           honest=self.honest,\n                                           inference=self.inference,\n                                           fit_intercept=self.fit_intercept,\n                                           subforest_size=self.subforest_size,\n                                           n_jobs=self.n_jobs,\n                                           random_state=self.random_state,\n                                           verbose=self.verbose,\n                                           warm_start=False))\n\n    def _gen_rlearner_model_final(self):\n        return _CausalForestFinalWrapper(self._gen_model_final(), self._gen_featurizer(),\n                                         self.discrete_treatment, self.drate)\n\n    @property\n    def tunable_params(self):\n        return ['n_estimators', 'criterion', 'max_depth', 'min_samples_split', 'min_samples_leaf',\n                'min_weight_fraction_leaf', 'min_var_fraction_leaf', 'min_var_leaf_on_val',\n                'max_features', 'min_impurity_decrease', 'max_samples', 'min_balancedness_tol',\n                'honest', 'inference', 'fit_intercept', 'subforest_size']\n\n    def tune(self, Y, T, *, X=None, W=None,\n             sample_weight=None, groups=None,\n             params='auto'):\n        \"\"\"\n        Tunes the major hyperparameters of the final stage causal forest based on out-of-sample R-score performance.\n\n        It trains small forests of size 100 trees on a grid of parameters and tests the\n        out of sample R-score. After the function is called, then all parameters of `self` have been\n        set to the optimal hyperparameters found. The estimator however remains un-fitted, so you need to\n        call fit afterwards to fit the estimator with the chosen hyperparameters. The list of tunable parameters\n        can be accessed via the property `tunable_params`.\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X: (n × dₓ) matrix\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight:  (n,) vector, optional\n            Weights for each row\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        params: dict or 'auto', default 'auto'\n            A dictionary that contains the grid of hyperparameters to try, i.e.\n            {'param1': [value1, value2, ...], 'param2': [value1, value2, ...], ...}\n            If `params='auto'`, then a default grid is used.\n\n        Returns\n        -------\n        self : CausalForestDML object\n            The tuned causal forest object. This is the same object (not a copy) as the original one, but where\n            all parameters of the object have been set to the best performing parameters from the tuning grid.\n        \"\"\"\n        from ..score import RScorer  # import here to avoid circular import issue\n        Y, T, X, sample_weight, groups = check_input_arrays(Y, T, X, sample_weight, groups)\n        W, = check_input_arrays(W, force_all_finite='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n\n        if params == 'auto':\n            params = {\n                'min_weight_fraction_leaf': [0.0001, .01],\n                'max_depth': [3, 5, None],\n                'min_var_fraction_leaf': [0.001, .01]\n            }\n        else:\n            # If custom param grid, check that only estimator parameters are being altered\n            estimator_param_names = self.tunable_params\n            for key in params:\n                if key not in estimator_param_names:\n                    raise ValueError(f\"Parameter `{key}` is not an tunable causal forest parameter.\")\n\n        strata = None\n        if self.discrete_treatment:\n            strata = self._strata(Y, T, X=X, W=W, sample_weight=sample_weight, groups=groups)\n        # use 0.699 instead of 0.7 as train size so that if there are 5 examples in a stratum, we get 2 in test\n        train, test = train_test_split(np.arange(Y.shape[0]), train_size=0.699,\n                                       random_state=self.random_state, stratify=strata)\n        ytrain, yval, Ttrain, Tval = Y[train], Y[test], T[train], T[test]\n        Xtrain, Xval = (X[train], X[test]) if X is not None else (None, None)\n        Wtrain, Wval = (W[train], W[test]) if W is not None else (None, None)\n        groups_train, groups_val = (groups[train], groups[test]) if groups is not None else (None, None)\n        if sample_weight is not None:\n            sample_weight_train, sample_weight_val = sample_weight[train], sample_weight[test]\n        else:\n            sample_weight_train, sample_weight_val = None, None\n\n        est = clone(self, safe=False)\n        est.n_estimators = 100\n        est.inference = False\n\n        scorer = RScorer(model_y=est.model_y, model_t=est.model_t,\n                         discrete_outcome=est.discrete_outcome,\n                         discrete_treatment=est.discrete_treatment, categories=est.categories,\n                         cv=est.cv, mc_iters=est.mc_iters, mc_agg=est.mc_agg,\n                         random_state=est.random_state)\n        scorer.fit(yval, Tval, X=Xval, W=Wval, sample_weight=sample_weight_val, groups=groups_val)\n\n        names = params.keys()\n        scores = []\n        for it, values in enumerate(product(*params.values())):\n            for key, value in zip(names, values):\n                setattr(est, key, value)\n            if it == 0:\n                est.fit(ytrain, Ttrain, X=Xtrain, W=Wtrain, sample_weight=sample_weight_train,\n                        groups=groups_train, cache_values=True)\n            else:\n                est.refit_final()\n            scores.append((scorer.score(est), tuple(zip(names, values))))\n\n        bestind = np.argmax([s[0] for s in scores])\n        _, best_params = scores[bestind]\n        for key, value in best_params:\n            setattr(self, key, value)\n\n        return self\n\n    def sensitivity_summary(self, null_hypothesis=0, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., decimals=3):\n        \"\"\"\n        Generate a summary of the sensitivity analysis for the ATE.\n\n        Parameters\n        ----------\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return sensitivity_summary(**sensitivity_params._asdict(), null_hypothesis=null_hypothesis, alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, decimals=decimals)\n\n    def sensitivity_interval(self, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., interval_type='ci'):\n        \"\"\"\n        Calculate the sensitivity interval for the ATE.\n\n        The sensitivity interval is the range of values for the ATE that are\n        consistent with the observed data, given a specified level of confounding.\n\n        Can only be calculated when Y and T are single arrays, and T is binary or continuous.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        (lb, ub): tuple of floats\n            sensitivity interval for the ATE\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return sensitivity_interval(**sensitivity_params._asdict(), alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, interval_type=interval_type)\n\n    def robustness_value(self, null_hypothesis=0, alpha=0.05, interval_type='ci'):\n        \"\"\"\n        Calculate the robustness value for the ATE.\n\n        The robustness value is the level of confounding (between 0 and 1) in\n        *both* the treatment and outcome that would result in enough omitted variable bias such that\n        we can no longer reject the null hypothesis. When null_hypothesis is the default of 0, the robustness value\n        has the interpretation that it is the level of confounding that would make the\n        ATE statistically insignificant.\n\n        A higher value indicates a more robust estimate.\n\n        Returns 0 if the original interval already includes the null_hypothesis.\n\n        Can only be calculated when Y and T are single arrays, and T is binary or continuous.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the robustness value.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        float\n            The robustness value\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return RV(**sensitivity_params._asdict(), null_hypothesis=null_hypothesis,\n                  alpha=alpha, interval_type=interval_type)\n\n    # override only so that we can update the docstring to indicate support for `blb`\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X: (n × dₓ) matrix\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`), 'blb' or 'auto'\n            (for Bootstrap-of-Little-Bags based inference)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        if X is None:\n            raise ValueError(\"This estimator does not support X=None!\")\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\n        imps = self.model_final_.feature_importances(max_depth=max_depth, depth_decay_exponent=depth_decay_exponent)\n        return imps.reshape(self._d_y + (-1,))\n\n    def summary(self, alpha=0.05, value=0, decimals=3, feature_names=None, treatment_names=None, output_names=None):\n        \"\"\"\n        Get a summary of coefficient and intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        feature_names: list of str, optional\n            The input of the feature names\n        treatment_names: list of str, optional\n            The names of the treatments\n        output_names: list of str, optional\n            The names of the outputs\n\n        Returns\n        -------\n        smry : Summary instance\n            this holds the summary tables and text, which can be printed or\n            converted to various output formats.\n        \"\"\"\n        # Get input names\n        treatment_names = self.cate_treatment_names(treatment_names)\n        output_names = self.cate_output_names(output_names)\n        # Summary\n        if self._cached_values is not None:\n            print(\"Population summary of CATE predictions on Training Data\")\n            smry = self.const_marginal_ate_inference(self._cached_values.X).summary(alpha=alpha, value=value,\n                                                                                    decimals=decimals,\n                                                                                    output_names=output_names,\n                                                                                    treatment_names=treatment_names)\n        else:\n            print(\"Population summary results are available only if `cache_values=True` at fit time!\")\n            smry = Summary()\n        d_t = self._d_t[0] if self._d_t else 1\n\n        try:\n            intercept_table = self.ate__inference().summary_frame(alpha=alpha,\n                                                                  value=value, decimals=decimals,\n                                                                  feature_names=None,\n                                                                  treatment_names=treatment_names,\n                                                                  output_names=output_names)\n            intercept_array = intercept_table.values\n            intercept_headers = intercept_table.columns.tolist()\n            n_level = intercept_table.index.nlevels\n            if n_level > 1:\n                intercept_stubs = [\"|\".join(ind_value) for ind_value in intercept_table.index.values]\n            else:\n                intercept_stubs = intercept_table.index.tolist()\n            intercept_title = 'Doubly Robust ATE on Training Data Results'\n            smry.add_table(intercept_array, intercept_headers, intercept_stubs, intercept_title)\n        except Exception as e:\n            print(\"Doubly Robust ATE on Training Data Results: \", str(e))\n\n        for t in range(0, d_t + 1):\n            try:\n                intercept_table = self.att__inference(T=t).summary_frame(alpha=alpha,\n                                                                         value=value, decimals=decimals,\n                                                                         feature_names=None,\n                                                                         output_names=output_names)\n                intercept_array = intercept_table.values\n                intercept_headers = intercept_table.columns.tolist()\n                n_level = intercept_table.index.nlevels\n                if n_level > 1:\n                    intercept_stubs = [\"|\".join(ind_value) for ind_value in intercept_table.index.values]\n                else:\n                    intercept_stubs = intercept_table.index.tolist()\n                intercept_title = \"Doubly Robust ATT(T={}) on Training Data Results\".format(t)\n                smry.add_table(intercept_array, intercept_headers, intercept_stubs, intercept_title)\n            except Exception as e:\n                print(\"Doubly Robust ATT on Training Data Results: \", str(e))\n                break\n        if len(smry.tables) > 0:\n            return smry\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        return _shap_explain_multitask_model_cate(self.const_marginal_effect, self.model_cate.estimators_, X,\n                                                  self._d_t, self._d_y, featurizer=self.featurizer_,\n                                                  feature_names=feature_names,\n                                                  treatment_names=treatment_names,\n                                                  output_names=output_names,\n                                                  input_names=self._input_names,\n                                                  background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n\n    def ate__inference(self):\n        \"\"\"\n        Get inference results for the average treatment effect over the training data.\n\n        Returns\n        -------\n        ate__inference : NormalInferenceResults\n            Inference results information for the `ate_` attribute, which is the average\n            constant marginal treatment effect of each treatment for each outcome, averaged\n            over the training data and with a doubly robust correction.\n            Available only when `discrete_treatment=True` and `drate=True`.\n        \"\"\"\n        return NormalInferenceResults(d_t=self._d_t[0] if self._d_t else 1,\n                                      d_y=self._d_y[0] if self._d_y else 1,\n                                      pred=self.ate_,\n                                      pred_stderr=self.ate_stderr_,\n                                      mean_pred_stderr=None,\n                                      inf_type='ate',\n                                      feature_names=self.cate_feature_names(),\n                                      output_names=self.cate_output_names(),\n                                      treatment_names=self.cate_treatment_names())\n\n    @property\n    def ate_(self):\n        return self.rlearner_model_final_.ate_\n\n    @property\n    def ate_stderr_(self):\n        return self.rlearner_model_final_.ate_stderr_\n\n    def att__inference(self, *, T):\n        \"\"\"\n        Get inference results for the average treatment effect on the treated for the training data.\n\n        Parameters\n        ----------\n        T : int\n            The index of the treatment for which to get the ATT. It corresponds to the\n            lexicographic rank of the discrete input treatments.\n\n        Returns\n        -------\n        att__inference : NormalInferenceResults\n            Inference results information for the `att_` attribute, which is the average\n            constant marginal treatment effect of each treatment for each outcome, averaged\n            over the training data treated with treatment T and with a doubly robust correction.\n            Available only when `discrete_treatment=True` and `drate=True`.\n        \"\"\"\n        return NormalInferenceResults(d_t=self._d_t[0] if self._d_t else 1,\n                                      d_y=self._d_y[0] if self._d_y else 1,\n                                      pred=self.att_(T=T),\n                                      pred_stderr=self.att_stderr_(T=T),\n                                      mean_pred_stderr=None,\n                                      inf_type='att',\n                                      feature_names=self.cate_feature_names(),\n                                      output_names=self.cate_output_names(),\n                                      treatment_names=self.cate_treatment_names())\n\n    def att_(self, *, T):\n        \"\"\"\n        Get the average treatment effect on the treated for the training data.\n\n        Parameters\n        ----------\n        T : int\n            The index of the treatment for which to get the ATT. It corresponds to the\n            lexicographic rank of the discrete input treatments.\n\n        Returns\n        -------\n        att_ : ndarray (n_y, n_t)\n            The average constant marginal treatment effect of each treatment for each outcome, averaged\n            over the training data treated with treatment T and with a doubly robust correction.\n            Singleton dimensions are dropped if input variable was a vector.\n        \"\"\"\n        return self.rlearner_model_final_.att_[T]\n\n    def att_stderr_(self, *, T):\n        \"\"\"\n        Get the standard error of the average treatment effect on the treated in the training data.\n\n        Parameters\n        ----------\n        T : int\n            The index of the treatment for which to get the ATT. It corresponds to the\n            lexicographic rank of the discrete input treatments.\n\n        Returns\n        -------\n        att_stderr_ : ndarray (n_y, n_t)\n            The standard error of the corresponding `att_`\n        \"\"\"\n        return self.rlearner_model_final_.att_stderr_[T]\n\n    @property\n    def feature_importances_(self):\n        return self.feature_importances()\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n    def __len__(self):\n        \"\"\"Return the number of estimators in the ensemble.\"\"\"\n        return self.model_cate.__len__()\n\n    def __getitem__(self, index):\n        \"\"\"Return the index'th estimator in the ensemble.\"\"\"\n        return self.model_cate.__getitem__(index)\n\n    def __iter__(self):\n        \"\"\"Return iterator over estimators in the ensemble.\"\"\"\n        return self.model_cate.__iter__()\n"
  },
  {
    "path": "econml/dml/dml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom warnings import warn\n\nimport numpy as np\nfrom sklearn.base import TransformerMixin, clone\nfrom sklearn.linear_model import (ElasticNetCV)\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import (FunctionTransformer)\nfrom sklearn.utils import check_random_state\n\n\nfrom .._ortho_learner import _OrthoLearner\nfrom ._rlearner import _RLearner, _ModelFinal\nfrom .._cate_estimator import (DebiasedLassoCateEstimatorMixin,\n                               LinearModelFinalCateEstimatorMixin,\n                               StatsModelsCateEstimatorMixin,\n                               LinearCateEstimator)\nfrom ..inference import GenericSingleTreatmentModelFinalInference\nfrom ..sklearn_extensions.linear_model import (MultiOutputDebiasedLasso,\n                                               StatsModelsLinearRegression)\nfrom ..utilities import (add_intercept,\n                         broadcast_unit_treatments, check_high_dimensional,\n                         cross_product, hstack, inverse_onehot, reshape_treatmentwise_effects,\n                         shape, get_feature_names_or_default, filter_none_kwargs)\nfrom .._shap import _shap_explain_model_cate\nfrom ..sklearn_extensions.model_selection import get_selector, SingleModelSelector\nfrom ..validate.sensitivity_analysis import (sensitivity_interval, RV, dml_sensitivity_values,\n                                             sensitivity_summary)\n\n\ndef _combine(X, W, n_samples):\n    if X is None:\n        # if both X and W are None, just return a column of ones\n        return (W if W is not None else np.ones((n_samples, 1)))\n    return hstack([X, W]) if W is not None else X\n\n\nclass _FirstStageWrapper:\n    def __init__(self, model, discrete_target):\n        self._model = model  # plain sklearn-compatible model, not a ModelSelector\n        self._discrete_target = discrete_target\n\n    def predict(self, X, W):\n        n_samples = X.shape[0] if X is not None else (W.shape[0] if W is not None else 1)\n        if self._discrete_target:\n            if hasattr(self._model, 'predict_proba'):\n                return self._model.predict_proba(_combine(X, W, n_samples))[:, 1:]\n            else:\n                warn('First stage model has discrete target but model is not a classifier!', UserWarning)\n                return self._model.predict(_combine(X, W, n_samples))\n        else:\n            if hasattr(self._model, 'predict_proba'):\n                raise AttributeError(\"Cannot use a classifier as a first stage model when the target is continuous!\")\n            return self._model.predict(_combine(X, W, n_samples))\n\n    def score(self, X, W, Target, sample_weight=None, scoring=None, score_by_dim=False):\n        \"\"\"\n        Score the first stage model on provided data.\n\n        :param X: Nuisances\n        :param W: Treatments\n        :param Target: The true targets\n        :param sample_weight: optional sample weights\n        :param scoring: non-standard scoring function name from sklearn get_scorer. Results in\n            call to _rlearner._wrap_scoring\n        :param score_by_dim: If a multi-dimension treatment, score each treatment separately.\n        :return:\n        \"\"\"\n        XW_combined = _combine(X, W, Target.shape[0])\n        if self._discrete_target:\n            # In this case, the Target is the one-hot-encoding of the treatment variable\n            # We need to go back to the label representation of the one-hot so as to call\n            # the classifier.\n            Target = inverse_onehot(Target)\n        if hasattr(self._model, 'score') and scoring is None and not score_by_dim:\n            # Standard default model scoring\n            if sample_weight is not None:\n                return self._model.score(XW_combined, Target, sample_weight=sample_weight)\n            else:\n                return self._model.score(XW_combined, Target)\n        elif hasattr(self._model, 'score'):\n            return _FirstStageWrapper._wrap_scoring(scoring,Y_true=Target, X=XW_combined, est=self._model,\n                            sample_weight=sample_weight, score_by_dim=score_by_dim)\n        else:\n            return None\n\n    @staticmethod\n    def _wrap_scoring(scoring, Y_true, X, est, sample_weight=None, score_by_dim=False):\n        \"\"\"Predict from the estimator, and use the _ModelFinal.wrap_scoring function.\"\"\"\n        Y_pred = est.predict(X)\n        return _ModelFinal.wrap_scoring(scoring, Y_true, Y_pred, sample_weight, score_by_dim=score_by_dim)\n\nclass _FirstStageSelector(SingleModelSelector):\n    def __init__(self, model: SingleModelSelector, discrete_target):\n        self._model = clone(model, safe=False)\n        self._discrete_target = discrete_target\n\n    def train(self, is_selecting, folds, X, W, Target, sample_weight=None, groups=None):\n        if self._discrete_target:\n            # In this case, the Target is the one-hot-encoding of the treatment variable\n            # We need to go back to the label representation of the one-hot so as to call\n            # the classifier.\n            if np.any(np.all(Target == 0, axis=0)) or (not np.any(np.all(Target == 0, axis=1))):\n                raise AttributeError(\"Provided crossfit folds contain training splits that \" +\n                                     \"don't contain all treatments\")\n            Target = inverse_onehot(Target)\n\n        self._model.train(is_selecting, folds, _combine(X, W, Target.shape[0]), Target,\n                          **filter_none_kwargs(groups=groups, sample_weight=sample_weight))\n        return self\n\n    @property\n    def best_model(self):\n        return _FirstStageWrapper(self._model.best_model, self._discrete_target)\n\n    @property\n    def best_score(self):\n        return self._model.best_score\n\n\ndef _make_first_stage_selector(model, is_discrete, random_state):\n    if model == 'auto':\n        model = ['forest', 'linear']\n    return _FirstStageSelector(get_selector(model,\n                                            is_discrete=is_discrete,\n                                            random_state=random_state),\n                               discrete_target=is_discrete)\n\n\nclass _FinalWrapper:\n    def __init__(self, model_final, fit_cate_intercept, featurizer,\n                 use_weight_trick, allow_sensitivity_analysis=False):\n        self._model = clone(model_final, safe=False)\n        self._use_weight_trick = use_weight_trick\n        self._original_featurizer = clone(featurizer, safe=False)\n        self.allow_sensitivity_analysis = allow_sensitivity_analysis\n        if self._use_weight_trick:\n            self._fit_cate_intercept = False\n            self._featurizer = self._original_featurizer\n        else:\n            self._fit_cate_intercept = fit_cate_intercept\n            if self._fit_cate_intercept:\n                # data is already validated at initial fit time\n                add_intercept_trans = FunctionTransformer(add_intercept,\n                                                          validate=False)\n                if featurizer:\n                    self._featurizer = Pipeline([('featurize', self._original_featurizer),\n                                                 ('add_intercept', add_intercept_trans)])\n                else:\n                    self._featurizer = add_intercept_trans\n            else:\n                self._featurizer = self._original_featurizer\n\n    def _combine(self, X, T, fitting=True):\n        if X is not None:\n            if self._featurizer is not None:\n                F = self._featurizer.fit_transform(X) if fitting else self._featurizer.transform(X)\n            else:\n                F = X\n        else:\n            if not self._fit_cate_intercept:\n                if self._use_weight_trick:\n                    raise AttributeError(\"Cannot use this method with X=None. Consider \"\n                                         \"using the LinearDML estimator.\")\n                else:\n                    raise AttributeError(\"Cannot have X=None and also not allow for a CATE intercept!\")\n            F = np.ones((T.shape[0], 1))\n        return cross_product(F, T)\n\n    def fit(self, X, T, T_res, Y_res, sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        # Track training dimensions to see if Y or T is a vector instead of a 2-dimensional array\n        self._d_t = shape(T_res)[1:]\n        self._d_y = shape(Y_res)[1:]\n        if not self._use_weight_trick:\n\n            # if binary/continuous treatment and single outcome, can calculate sensitivity params\n            if self.allow_sensitivity_analysis and not (\n                (self._d_t and self._d_t[0] > 1) or (\n                    self._d_y and self._d_y[0] > 1)\n            ):\n                self.sensitivity_params = dml_sensitivity_values(T_res, Y_res)\n\n            fts = self._combine(X, T_res)\n            filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight,\n                                                 freq_weight=freq_weight, sample_var=sample_var)\n            self._model.fit(fts, Y_res, **filtered_kwargs)\n            self._intercept = None\n            intercept = self._model.predict(np.zeros_like(fts[0:1]))\n            if (np.count_nonzero(intercept) > 0):\n                warn(\"The final model has a nonzero intercept for at least one outcome; \"\n                     \"it will be subtracted, but consider fitting a model without an intercept if possible.\",\n                     UserWarning)\n                self._intercept = intercept\n        elif not self._fit_cate_intercept:\n            if (np.ndim(T_res) > 1) and (self._d_t[0] > 1):\n                raise AttributeError(\"This method can only be used with single-dimensional continuous treatment \"\n                                     \"or binary categorical treatment.\")\n            F = self._combine(X, np.ones(T_res.shape[0]))\n            self._intercept = None\n            T_res = T_res.ravel()\n            sign_T_res = np.sign(T_res)\n            sign_T_res[(sign_T_res < 1) & (sign_T_res > -1)] = 1\n            clipped_T_res = sign_T_res * np.clip(np.abs(T_res), 1e-5, np.inf)\n            if np.ndim(Y_res) > 1:\n                clipped_T_res = clipped_T_res.reshape(-1, 1)\n            target = Y_res / clipped_T_res\n            target_var = sample_var / clipped_T_res**2 if sample_var is not None else None\n            if sample_weight is not None:\n                sample_weight = sample_weight * T_res.flatten()**2\n            else:\n                sample_weight = T_res.flatten()**2\n            filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight,\n                                                 freq_weight=freq_weight, sample_var=target_var)\n            self._model.fit(F, target, **filtered_kwargs)\n        else:\n            raise AttributeError(\"This combination is not a feasible one!\")\n        return self\n\n    def predict(self, X):\n        X2, T = broadcast_unit_treatments(X if X is not None else np.empty((1, 0)),\n                                          self._d_t[0] if self._d_t else 1)\n        # This works both with our without the weighting trick as the treatments T are unit vector\n        # treatments. And in the case of a weighting trick we also know that treatment is single-dimensional\n        prediction = self._model.predict(self._combine(None if X is None else X2, T, fitting=False))\n        if self._intercept is not None:\n            prediction -= self._intercept\n        return reshape_treatmentwise_effects(prediction,\n                                             self._d_t, self._d_y)\n\n\nclass _BaseDML(_RLearner):\n    # A helper class that access all the internal fitted objects of a DML Cate Estimator. Used by\n    # both Parametric and Non Parametric DML.\n\n    @property\n    def original_featurizer(self):\n        # NOTE: important to use the rlearner_model_final_ attribute instead of the\n        #       attribute so that the trained featurizer will be passed through\n        return self.rlearner_model_final_._original_featurizer\n\n    @property\n    def featurizer_(self):\n        # NOTE This is used by the inference methods and has to be the overall featurizer. intended\n        # for internal use by the library\n        return self.rlearner_model_final_._featurizer\n\n    @property\n    def model_final_(self):\n        # NOTE This is used by the inference methods and is more for internal use to the library\n        #      We need to use the rlearner's copy to retain the information from fitting\n        return self.rlearner_model_final_._model\n\n    @property\n    def model_cate(self):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Returns\n        -------\n        model_cate: object of type(model_final)\n            An instance of the model_final object that was fitted after calling fit which corresponds\n            to the constant marginal CATE model.\n        \"\"\"\n        return self.rlearner_model_final_._model\n\n    @property\n    def models_y(self):\n        \"\"\"\n        Get the fitted models for E[Y | X, W].\n\n        Returns\n        -------\n        models_y: nested list of objects of type(`model_y`)\n            A nested list of instances of the `model_y` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model for mdl in mdls] for mdls in super().models_y]\n\n    @property\n    def models_t(self):\n        \"\"\"\n        Get the fitted models for E[T | X, W].\n\n        Returns\n        -------\n        models_t: nested list of objects of type(`model_t`)\n            A nested list of instances of the `model_y` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model for mdl in mdls] for mdls in super().models_t]\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final constant marginal CATE model is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Not available when the featurizer is not None and\n            does not have a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.original_featurizer is None:\n            return feature_names\n        return get_feature_names_or_default(self.original_featurizer, feature_names)\n\n\nclass DML(LinearModelFinalCateEstimatorMixin, _BaseDML):\n    \"\"\"\n    The base class for parametric Double ML estimators.\n\n    The estimator is a special case of an :class:`._RLearner` estimator, which in turn is a special case\n    of an :class:`_OrthoLearner` estimator, so it follows the two\n    stage process, where a set of nuisance functions are estimated in the first stage in a crossfitting\n    manner and a final stage estimates the CATE model. See the documentation of\n    :class:`._OrthoLearner` for a description of this two stage process.\n\n    In this estimator, the CATE is estimated by using the following estimating equations:\n\n    .. math ::\n        Y - \\\\E[Y | X, W] = \\\\Theta(X) \\\\cdot (T - \\\\E[T | X, W]) + \\\\epsilon\n\n    Thus if we estimate the nuisance functions :math:`q(X, W) = \\\\E[Y | X, W]` and\n    :math:`f(X, W)=\\\\E[T | X, W]` in the first stage, we can estimate the final stage cate for each\n    treatment t, by running a regression, minimizing the residual on residual square loss:\n\n    .. math ::\n        \\\\hat{\\\\theta} = \\\\arg\\\\min_{\\\\Theta}\\\n        \\\\E_n\\\\left[ (\\\\tilde{Y} - \\\\Theta(X) \\\\cdot \\\\tilde{T})^2 \\\\right]\n\n    Where :math:`\\\\tilde{Y}=Y - \\\\E[Y | X, W]` and :math:`\\\\tilde{T}=T-\\\\E[T | X, W]` denotes the\n    residual outcome and residual treatment.\n\n    The DML estimator further assumes a linear parametric form for the cate, i.e. for each outcome\n    :math:`i` and treatment :math:`j`:\n\n    .. math ::\n        \\\\Theta_{i, j}(X) =  \\\\phi(X)' \\\\cdot \\\\Theta_{ij}\n\n    For some given feature mapping :math:`\\\\phi(X)` (the user can provide this featurizer via the `featurizer`\n    parameter at init time and could be any arbitrary class that adheres to the scikit-learn transformer\n    interface :class:`~sklearn.base.TransformerMixin`).\n\n    The second nuisance function :math:`q` is a simple regression problem and the\n    :class:`.DML`\n    class takes as input the parameter `model_y`, which is an arbitrary scikit-learn regressor that\n    is internally used to solve this regression problem.\n\n    The problem of estimating the nuisance function :math:`f` is also a regression problem and\n    the :class:`.DML`\n    class takes as input the parameter `model_t`, which is an arbitrary scikit-learn regressor that\n    is internally used to solve this regression problem. If the init flag `discrete_treatment` is set\n    to `True`, then the parameter `model_t` is treated as a scikit-learn classifier. The input categorical\n    treatment is one-hot encoded (excluding the lexicographically smallest treatment which is used as the\n    baseline) and the `predict_proba` method of the `model_t` classifier is used to\n    residualize the one-hot encoded treatment.\n\n    The final stage is (potentially multi-task) linear regression problem with outcomes the labels\n    :math:`\\\\tilde{Y}` and regressors the composite features\n    :math:`\\\\tilde{T}\\\\otimes \\\\phi(X) = \\\\mathtt{vec}(\\\\tilde{T}\\\\cdot \\\\phi(X)^T)`.\n    The :class:`.DML` takes as input parameter\n    ``model_final``, which is any linear scikit-learn regressor that is internally used to solve this\n    (multi-task) linear regresion problem.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_final: estimator\n        The estimator for fitting the response residuals to the treatment residuals. Must implement\n        `fit` and `predict` methods, and must be a linear model for correctness.\n\n    featurizer: :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    verbose: int, default 2\n        The verbosity level of the output messages. Higher values indicate more verbosity.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply model_y, model_t, and model_final\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with discrete treatment and a linear model_final (equivalent to LinearDML):\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import DML\n        from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = DML(\n            model_y=RandomForestRegressor(),\n            model_t=RandomForestClassifier(),\n            model_final=StatsModelsLinearRegression(fit_intercept=False),\n            discrete_treatment=True\n        )\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.63382..., 1.78225..., 0.71859...])\n    >>> est.effect_interval(X[:3])\n    (array([0.27937..., 1.27619..., 0.42091...]),\n    array([0.98827... , 2.28831..., 1.01628...]))\n    >>> est.coef_\n    array([ 0.42857...,  0.04488..., -0.03317...,  0.02258..., -0.14875...])\n    >>> est.coef__interval()\n    (array([ 0.25179..., -0.10558..., -0.16723... , -0.11916..., -0.28759...]),\n    array([ 0.60535...,  0.19536...,  0.10088...,  0.16434..., -0.00990...]))\n    >>> est.intercept_\n    1.01166...\n    >>> est.intercept__interval()\n    (0.87125..., 1.15207...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y,\n                 model_t,\n                 model_final,\n                 featurizer=None,\n                 treatment_featurizer=None,\n                 fit_cate_intercept=True,\n                 linear_first_stages=\"deprecated\",\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n        self.fit_cate_intercept = fit_cate_intercept\n        if linear_first_stages != \"deprecated\":\n            warn(\"The linear_first_stages parameter is deprecated and will be removed in a future version of EconML\",\n                 DeprecationWarning)\n        self.featurizer = clone(featurizer, safe=False)\n        self.model_y = clone(model_y, safe=False)\n        self.model_t = clone(model_t, safe=False)\n        self.model_final = clone(model_final, safe=False)\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_allowed_missing_vars(self):\n        return ['X', 'W'] if self.allow_missing else []\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y(self):\n        return _make_first_stage_selector(self.model_y, self.discrete_outcome, self.random_state)\n\n    def _gen_model_t(self):\n        return _make_first_stage_selector(self.model_t, self.discrete_treatment, self.random_state)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_rlearner_model_final(self):\n        return _FinalWrapper(self._gen_model_final(), self.fit_cate_intercept,\n                             self._gen_featurizer(), False, allow_sensitivity_analysis=True)\n\n    # override only so that we can update the docstring to indicate support for `LinearModelFinalInference`\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.LinearModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        return super().fit(Y, T, X=X, W=W, sample_weight=sample_weight, freq_weight=freq_weight,\n                           sample_var=sample_var, groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    @property\n    def bias_part_of_coef(self):\n        return self.rlearner_model_final_._fit_cate_intercept\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.rlearner_model_final_._fit_cate_intercept\n\n    def sensitivity_summary(self, null_hypothesis=0, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., decimals=3):\n        \"\"\"\n        Generate a summary of the sensitivity analysis for the ATE.\n\n        Parameters\n        ----------\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return sensitivity_summary(**sensitivity_params._asdict(), null_hypothesis=null_hypothesis, alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, decimals=decimals)\n\n\n    def sensitivity_interval(self, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., interval_type='ci'):\n        \"\"\"\n        Calculate the sensitivity interval for the ATE.\n\n        The sensitivity interval is the range of values for the ATE that are\n        consistent with the observed data, given a specified level of confounding.\n\n        Can only be calculated when Y and T are single arrays, and T is binary or continuous.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        (lb, ub): tuple of floats\n            sensitivity interval for the ATE\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return sensitivity_interval(**sensitivity_params._asdict(), alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, interval_type=interval_type)\n\n    def robustness_value(self, null_hypothesis=0, alpha=0.05, interval_type='ci'):\n        \"\"\"\n        Calculate the robustness value for the ATE.\n\n        The robustness value is the level of confounding (between 0 and 1) in\n        *both* the treatment and outcome that would result in enough omitted variable bias such that\n        we can no longer reject the null hypothesis. When null_hypothesis is the default of 0, the robustness value\n        has the interpretation that it is the level of confounding that would make the\n        ATE statistically insignificant.\n\n        A higher value indicates a more robust estimate.\n\n        Returns 0 if the original interval already includes the null_hypothesis.\n\n        Can only be calculated when Y and T are single arrays, and T is binary or continuous.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the robustness value.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        float\n            The robustness value\n        \"\"\"\n        if (self._d_t and self._d_t[0] > 1) or (self._d_y and self._d_y[0] > 1):\n            raise ValueError(\n                \"Sensitivity analysis for DML is not supported for multi-dimensional outcomes or treatments.\")\n        sensitivity_params = self._ortho_learner_model_final._model_final.sensitivity_params\n        return RV(**sensitivity_params._asdict(), null_hypothesis=null_hypothesis,\n                  alpha=alpha, interval_type=interval_type)\n\n\nclass LinearDML(StatsModelsCateEstimatorMixin, DML):\n    \"\"\"\n    The Double ML Estimator with a low-dimensional linear final stage implemented as a statsmodel regression.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_y, model_t that can handle\n        missing values.\n\n    enable_federation: bool, default False\n        Whether to enable federation for the final model.  This has a memory cost so should be enabled only\n        if this model will be aggregated with other models.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models and discrete treatment:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import LinearDML\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = LinearDML(discrete_treatment=True)\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.49976..., 1.91673..., 0.70800...])\n    >>> est.effect_interval(X[:3])\n    (array([0.15122..., 1.40182..., 0.40956...]),\n    array([0.84831..., 2.43164..., 1.00645...]))\n    >>> est.coef_\n    array([ 0.48825...,  0.00104...,  0.00244...,  0.02217..., -0.08472...])\n    >>> est.coef__interval()\n    (array([ 0.30470... , -0.13905..., -0.12789..., -0.11513..., -0.22506...]),\n    array([0.67180..., 0.14114..., 0.13278..., 0.15949..., 0.05561...]))\n    >>> est.intercept_\n    1.01248...\n    >>> est.intercept__interval()\n    (0.87481..., 1.15015...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y='auto', model_t='auto',\n                 featurizer=None,\n                 treatment_featurizer=None,\n                 fit_cate_intercept=True,\n                 linear_first_stages=\"deprecated\",\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 enable_federation=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n\n        super().__init__(model_y=model_y,\n                         model_t=model_t,\n                         model_final=None,\n                         featurizer=featurizer,\n                         treatment_featurizer=treatment_featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         linear_first_stages=linear_first_stages,\n                         discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n        self.enable_federation = enable_federation\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return StatsModelsLinearRegression(fit_intercept=False, enable_federation=self.enable_federation)\n\n    # override only so that we can update the docstring to indicate support for `StatsModelsInference`\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'statsmodels'\n            (or an instance of :class:`.StatsModelsInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass SparseLinearDML(DebiasedLassoCateEstimatorMixin, DML):\n    \"\"\"\n    A specialized version of the Double ML estimator for the sparse linear case.\n\n    This estimator should be used when the features of heterogeneity are high-dimensional\n    and the coefficients of the linear CATE function are sparse.\n\n    The last stage is an instance of the\n    :class:`.MultiOutputDebiasedLasso`\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    alpha: str or float, default 'auto'\n        CATE L1 regularization applied through the debiased lasso in the final model.\n        'auto' corresponds to a CV form of the :class:`MultiOutputDebiasedLasso`.\n\n    n_alphas : int, default 100\n        How many alphas to try if alpha='auto'\n\n    alpha_cov : str | float, default 'auto'\n        The regularization alpha that is used when constructing the pseudo inverse of\n        the covariance matrix Theta used to for correcting the final state lasso coefficient\n        in the debiased lasso. Each such regression corresponds to the regression of one feature\n        on the remainder of the features.\n\n    n_alphas_cov : int, default 10\n        How many alpha_cov to try if alpha_cov='auto'.\n\n    max_iter : int, default 1000\n        The maximum number of iterations in the Debiased Lasso\n\n    tol : float, default 1e-4\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    n_jobs : int or None, optional\n        The number of jobs to run in parallel for both `fit` and `predict`.\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\n        ``-1`` means using all processors.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_y, model_t that can handle\n        missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models and discrete treatment:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import SparseLinearDML\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = SparseLinearDML(discrete_treatment=True)\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.50083..., 1.91668..., 0.70388...])\n    >>> est.effect_interval(X[:3])\n    (array([0.14616..., 1.40370..., 0.40675...]),\n    array([0.85550..., 2.42966..., 1.00101...]))\n    >>> est.coef_\n    array([ 0.49123...,  0.00493... ,  0.00007...,  0.02302..., -0.08484...])\n    >>> est.coef__interval()\n    (array([ 0.31323..., -0.13850..., -0.13720..., -0.11141..., -0.22962...]),\n    array([0.66923..., 0.14837..., 0.13735..., 0.15745..., 0.05992...]))\n    >>> est.intercept_\n    1.01477...\n    >>> est.intercept__interval()\n    (0.87621..., 1.15333...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y='auto', model_t='auto',\n                 alpha='auto',\n                 n_alphas=100,\n                 alpha_cov='auto',\n                 n_alphas_cov=10,\n                 max_iter=1000,\n                 tol=1e-4,\n                 n_jobs=None,\n                 featurizer=None,\n                 treatment_featurizer=None,\n                 fit_cate_intercept=True,\n                 linear_first_stages=\"deprecated\",\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.alpha = alpha\n        self.n_alphas = n_alphas\n        self.alpha_cov = alpha_cov\n        self.n_alphas_cov = n_alphas_cov\n        self.max_iter = max_iter\n        self.tol = tol\n        self.n_jobs = n_jobs\n        super().__init__(model_y=model_y,\n                         model_t=model_t,\n                         model_final=None,\n                         featurizer=featurizer,\n                         treatment_featurizer=treatment_featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         linear_first_stages=linear_first_stages,\n                         discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return MultiOutputDebiasedLasso(alpha=self.alpha,\n                                        n_alphas=self.n_alphas,\n                                        alpha_cov=self.alpha_cov,\n                                        n_alphas_cov=self.n_alphas_cov,\n                                        fit_intercept=False,\n                                        max_iter=self.max_iter,\n                                        tol=self.tol,\n                                        n_jobs=self.n_jobs,\n                                        random_state=self.random_state)\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, `Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'debiasedlasso'\n            (or an instance of :class:`.LinearModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        # TODO: support freq_weight and sample_var in debiased lasso\n        check_high_dimensional(X, T, threshold=5, featurizer=self.featurizer,\n                               discrete_treatment=self.discrete_treatment,\n                               msg=\"The number of features in the final model (< 5) is too small for a sparse model. \"\n                               \"We recommend using the LinearDML estimator for this low-dimensional setting.\")\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass _RandomFeatures(TransformerMixin):\n    def __init__(self, *, dim, bw, random_state):\n        self.dim = dim\n        self.bw = bw\n        self.random_state = random_state\n\n    def fit(self, X):\n        random_state = check_random_state(self.random_state)\n        self.omegas_ = random_state.normal(0, 1 / self.bw, size=(shape(X)[1], self.dim))\n        self.biases_ = random_state.uniform(0, 2 * np.pi, size=(1, self.dim))\n        self.dim_ = self.dim\n        return self\n\n    def transform(self, X):\n        return np.sqrt(2 / self.dim_) * np.cos(np.matmul(X, self.omegas_) + self.biases_)\n\n\nclass KernelDML(DML):\n    \"\"\"\n    A specialized version of the linear Double ML Estimator that uses random fourier features.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    dim: int, default 20\n        The number of random Fourier features to generate\n\n    bw: float, default 1.0\n        The bandwidth of the Gaussian used to generate features\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_y, model_t that can handle\n        missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models and discrete treatment:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import KernelDML\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = KernelDML(discrete_treatment=True, dim=10, bw=5)\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.63042..., 1.86101..., 0.74220...])\n    \"\"\"\n\n    def __init__(self, model_y='auto', model_t='auto',\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 fit_cate_intercept=True,\n                 dim=20,\n                 bw=1.0,\n                 cv=2,\n                 mc_iters=None, mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.dim = dim\n        self.bw = bw\n        super().__init__(model_y=model_y,\n                         model_t=model_t,\n                         model_final=None,\n                         featurizer=None,\n                         treatment_featurizer=treatment_featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return ElasticNetCV(fit_intercept=False, random_state=self.random_state)\n\n    def _gen_featurizer(self):\n        return _RandomFeatures(dim=self.dim, bw=self.bw, random_state=self.random_state)\n\n    def fit(self, Y, T, X=None, W=None, *, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.LinearModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def featurizer(self):\n        return self._gen_featurizer()\n\n    @featurizer.setter\n    def featurizer(self, value):\n        if value is not None:\n            raise ValueError(\"Parameter `featurizer` cannot be altered for this estimator!\")\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass NonParamDML(_BaseDML):\n    \"\"\"\n    The base class for non-parametric Double ML estimators, that can have arbitrary final ML models of the CATE.\n\n    Works only for single-dimensional continuous treatment or for binary categorical treatment and uses\n    the re-weighting trick, reducing the final CATE estimation to a weighted square loss minimization.\n    The model_final parameter must support the sample_weight keyword argument at fit time.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_final: estimator\n        The estimator for fitting the response residuals to the treatment residuals. Must implement\n        `fit` and `predict` methods. It can be an arbitrary scikit-learn regressor. The `fit` method\n        must accept `sample_weight` as a keyword argument.\n\n    featurizer: transformer\n        The transformer used to featurize the raw features when fitting the final model.  Must implement\n        a `fit_transform` method.\n\n    discrete_outcome: bool, default ``False``\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_y, model_t, and model_final\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with a discrete treatment:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dml import NonParamDML\n        from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = NonParamDML(\n            model_y=RandomForestRegressor(min_samples_leaf=20),\n            model_t=RandomForestClassifier(min_samples_leaf=20),\n            model_final=RandomForestRegressor(min_samples_leaf=20),\n            discrete_treatment=True\n        )\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([0.35318..., 1.28760..., 0.83506...])\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y, model_t, model_final,\n                 featurizer=None,\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        # TODO: consider whether we need more care around stateful featurizers,\n        #       since we clone it and fit separate copies\n        self.model_y = clone(model_y, safe=False)\n        self.model_t = clone(model_t, safe=False)\n        self.featurizer = clone(featurizer, safe=False)\n        self.model_final = clone(model_final, safe=False)\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_allowed_missing_vars(self):\n        return ['X', 'W'] if self.allow_missing else []\n\n    def _get_inference_options(self):\n        # add blb to parent's options\n        options = super()._get_inference_options()\n        options.update(auto=GenericSingleTreatmentModelFinalInference)\n        return options\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y(self):\n        return _make_first_stage_selector(self.model_y, is_discrete=self.discrete_outcome,\n                                          random_state=self.random_state)\n\n    def _gen_model_t(self):\n        return _make_first_stage_selector(self.model_t, is_discrete=self.discrete_treatment,\n                                          random_state=self.random_state)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_rlearner_model_final(self):\n        return _FinalWrapper(self._gen_model_final(), False, self._gen_featurizer(), True)\n\n    # override only so that we can update the docstring to indicate\n    # support for `GenericSingleTreatmentModelFinalInference`\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.GenericSingleTreatmentModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        return super().fit(Y, T, X=X, W=W, sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var,\n                           groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        return _shap_explain_model_cate(self.const_marginal_effect, self.model_cate, X, self._d_t, self._d_y,\n                                        featurizer=self.featurizer_,\n                                        feature_names=feature_names,\n                                        treatment_names=treatment_names,\n                                        output_names=output_names,\n                                        input_names=self._input_names,\n                                        background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n"
  },
  {
    "path": "econml/dowhy.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\n\"\"\"Helper class to allow other functionalities from dowhy package.\n\nReferences\n----------\nDoWhy, https://www.pywhy.org/dowhy/\n\n\"\"\"\n\nimport inspect\nimport pandas as pd\nimport numpy as np\nimport warnings\nfrom econml.utilities import check_input_arrays, reshape_arrays_2dim, get_input_columns, MissingModule\ntry:\n    import dowhy\n    from dowhy import CausalModel\nexcept ImportError as exn:\n    dowhy = CausalModel = MissingModule(\"dowhy is no longer a dependency of the main econml \"\n                                        \"package; install econml[dowhy] or econml[all] to require it, or install \"\n                                        \"dowhy separately to use dowhy from econml\", exn)\n\n\nclass DoWhyWrapper:\n    \"\"\"\n    Wrapper to call other methods (e.g. causal graph, refutation test, etc.) from dowhy package through EconML.\n\n    Parameters\n    ----------\n    cate_estimator: instance\n        An instance of any CATE estimator we currently support\n    \"\"\"\n\n    def __init__(self, cate_estimator):\n        from packaging.version import parse\n        if parse(dowhy.__version__) >= parse('0.13'):\n            warnings.warn(\"econml has not been tested with dowhy versions >= 0.13\")\n        self._cate_estimator = cate_estimator\n\n    def _get_params(self):\n        init = self._cate_estimator.__init__\n        # introspect the constructor arguments to find the model parameters\n        # to represent\n        init_signature = inspect.signature(init)\n        parameters = init_signature.parameters.values()\n        params = []\n        for p in parameters:\n            if p.kind == p.VAR_POSITIONAL or p.kind == p.VAR_KEYWORD:\n                raise RuntimeError(\"cate estimators should always specify their parameters in the signature \"\n                                   \"of their __init__ (no varargs, no varkwargs). \"\n                                   f\"{self._cate_estimator} with constructor {init_signature} doesn't \"\n                                   \"follow this convention.\")\n            # if the argument is deprecated, ignore it\n            if p.default != \"deprecated\":\n                params.append(p.name)\n        # Extract and sort argument names excluding 'self'\n        return sorted(params)\n\n    def fit(self, Y, T, X=None, W=None, Z=None, *, outcome_names=None, treatment_names=None, feature_names=None,\n            confounder_names=None, instrument_names=None, graph=None, estimand_type=\"nonparametric-ate\",\n            proceed_when_unidentifiable=True, missing_nodes_as_confounders=False,\n            control_value=0, treatment_value=1, target_units=\"ate\", **kwargs):\n        \"\"\"\n        Estimate the counterfactual model from data through dowhy package.\n\n        Parameters\n        ----------\n        Y: vector of length n\n            Outcomes for each sample\n        T: vector of length n\n            Treatments for each sample\n        X: (n, d_x) matrix, optional\n            Features for each sample\n        W: (n, d_w) matrix, optional\n            Controls for each sample\n        Z: (n, d_z) matrix, optional\n            Instruments for each sample\n        outcome_names: list, optional\n            Name of the outcome\n        treatment_names: list, optional\n            Name of the treatment\n        feature_names: list, optional\n            Name of the features\n        confounder_names: list, optional\n            Name of the confounders\n        instrument_names: list, optional\n            Name of the instruments\n        graph:  str, optional\n            Path to DOT file containing a DAG or a string containing a DAG specification in DOT format\n        estimand_type:  str, optional\n            Type of estimand requested (currently only \"nonparametric-ate\" is supported).\n            In the future, may support other specific parametric forms of identification\n        proceed_when_unidentifiable: bool, default True\n            Whether the identification should proceed by ignoring potential unobserved confounders\n        missing_nodes_as_confounders: bool, default False\n            Whether variables in the dataframe that are not included in the causal graph should be automatically\n            included as confounder nodes\n        control_value: scalar, default 0\n            Value of the treatment in the control group, for effect estimation\n        treatment_value: scalar, default 1\n            Value of the treatment in the treated group, for effect estimation\n        target_units: str or obj, default \"ate\"\n            The units for which the treatment effect should be estimated.\n            This can be of three types:\n\n            1. A string for common specifications of target units (namely, \"ate\", \"att\" and \"atc\"),\n            2. A lambda function that can be used as an index for the data (pandas DataFrame),\n            3. A new DataFrame that contains values of the effect_modifiers and effect will be estimated\n               only for this new data\n\n        kwargs:  dict, optional\n            Other keyword arguments from fit method for CATE estimator\n\n        Returns\n        -------\n        self\n        \"\"\"\n        # column names\n        if outcome_names is None:\n            outcome_names = get_input_columns(Y, prefix=\"Y\")\n        if treatment_names is None:\n            treatment_names = get_input_columns(T, prefix=\"T\")\n        if feature_names is None:\n            if X is not None:\n                feature_names = get_input_columns(X, prefix=\"X\")\n            else:\n                feature_names = []\n        if confounder_names is None:\n            if W is not None:\n                confounder_names = get_input_columns(W, prefix=\"W\")\n            else:\n                confounder_names = []\n        if instrument_names is None:\n            if Z is not None:\n                instrument_names = get_input_columns(Z, prefix=\"Z\")\n            else:\n                instrument_names = []\n        column_names = outcome_names + treatment_names + feature_names + confounder_names + instrument_names\n\n        # transfer input to numpy arrays\n        if 'X' in self._cate_estimator._gen_allowed_missing_vars():\n            raise ValueError(\n                'DoWhyWrapper does not support missing values in X. Please set allow_missing=False before proceeding.'\n            )\n        Y, T, X, Z = check_input_arrays(Y, T, X, Z)\n        W, = check_input_arrays(\n            W, force_all_finite='allow-nan' if 'W' in self._cate_estimator._gen_allowed_missing_vars() else True)\n        # transfer input to 2d arrays\n        n_obs = Y.shape[0]\n        Y, T, X, W, Z = reshape_arrays_2dim(n_obs, Y, T, X, W, Z)\n        # create dataframe\n        df = pd.DataFrame(np.hstack((Y, T, X, W, Z)), columns=column_names)\n\n        # currently dowhy only support single outcome and single treatment\n        assert Y.shape[1] == 1, \"Can only accept single dimensional outcome.\"\n        assert T.shape[1] == 1, \"Can only accept single dimensional treatment.\"\n\n        # call dowhy\n        self.dowhy_ = CausalModel(\n            data=df,\n            treatment=treatment_names,\n            outcome=outcome_names,\n            graph=graph,\n            common_causes=feature_names + confounder_names if X.shape[1] > 0 or W.shape[1] > 0 else None,\n            instruments=instrument_names if Z.shape[1] > 0 else None,\n            effect_modifiers=feature_names if X.shape[1] > 0 else None,\n            estimand_type=estimand_type,\n            proceed_when_unidetifiable=proceed_when_unidentifiable,\n            missing_nodes_as_confounders=missing_nodes_as_confounders\n        )\n        self.identified_estimand_ = self.dowhy_.identify_effect(proceed_when_unidentifiable=True)\n        method_name = \"backdoor.\" + self._cate_estimator.__module__ + \".\" + self._cate_estimator.__class__.__name__\n        init_params = {}\n        for p in self._get_params():\n            init_params[p] = getattr(self._cate_estimator, p)\n        self.estimate_ = self.dowhy_.estimate_effect(self.identified_estimand_,\n                                                     method_name=method_name,\n                                                     control_value=control_value,\n                                                     treatment_value=treatment_value,\n                                                     target_units=target_units,\n                                                     method_params={\n                                                         \"init_params\": init_params,\n                                                         \"fit_params\": kwargs,\n                                                     },\n                                                     )\n        return self\n\n    def refute_estimate(self, *, method_name, **kwargs):\n        \"\"\"\n        Refute an estimated causal effect.\n\n        If method_name is provided, uses the provided method. In the future, we may support automatic\n        selection of suitable refutation tests.\n        Following refutation methods are supported:\n\n        - Adding a randomly-generated confounder: \"random_common_cause\"\n        - Adding a confounder that is associated with both treatment and outcome: \"add_unobserved_common_cause\"\n        - Replacing the treatment with a placebo (random) variable): \"placebo_treatment_refuter\"\n        - Removing a random subset of the data: \"data_subset_refuter\"\n\n        For more details, see docs :mod:`dowhy.causal_refuters`\n\n        Parameters\n        ----------\n        method_name: str\n            Name of the refutation method\n        kwargs:  dict, optional\n            Additional arguments that are passed directly to the refutation method.\n            Can specify a random seed here to ensure reproducible results ('random_seed' parameter).\n            For method-specific parameters, consult the documentation for the specific method.\n            All refutation methods are in the causal_refuters subpackage.\n\n        Returns\n        -------\n        RefuteResult: an instance of the RefuteResult class\n        \"\"\"\n        return self.dowhy_.refute_estimate(\n            self.identified_estimand_, self.estimate_, method_name=method_name, **kwargs\n        )\n\n    # We don't allow user to call refit_final from this class, since internally dowhy effect estimate will only update\n    # cate estimator but not the effect.\n    def refit_final(self, inference=None):\n        raise AttributeError(\n            \"Method refit_final is not allowed through a dowhy object; please perform a full fit instead.\")\n\n    def __getattr__(self, attr):\n        # don't proxy special methods\n        if attr.startswith('__'):\n            raise AttributeError(attr)\n        elif attr == \"dowhy_\":\n            if \"dowhy_\" not in dir(self):\n                raise AttributeError(\"Please call `DoWhyWrapper.fit` first before any other operations.\")\n            else:\n                return self.dowhy_\n        elif attr in ['_cate_estimator', 'identified_estimand_', 'estimate_']:\n            if attr in dir(self):\n                return getattr(self, attr)\n            else:\n                raise AttributeError(\"call `DoWhyWrapper.fit` first before any other operations.\")\n        elif attr.startswith('dowhy__'):\n            return getattr(self.dowhy_, attr[len('dowhy__'):])\n        elif hasattr(self.estimate_._estimator_object, attr):\n            if hasattr(self.dowhy_, attr):\n                warnings.warn(\"This call is ambiguous, \"\n                              \"we're defaulting to CATE estimator's attribute. \"\n                              \"Please add 'dowhy__' as prefix if you want to get dowhy attribute.\", UserWarning)\n            return getattr(self.estimate_._estimator_object, attr)\n        else:\n            return getattr(self.dowhy_, attr)\n\n    def __setattr__(self, attr, value):\n        if attr in ['_cate_estimator', 'dowhy_',\n                    'identified_estimand_', 'estimate_']:\n            super().__setattr__(attr, value)\n        elif attr.startswith('dowhy__'):\n            setattr(self.dowhy_, attr[len('dowhy__'):], value)\n        elif hasattr(self.estimate_._estimator_object, attr):\n            if hasattr(self.dowhy_, attr):\n                warnings.warn(\"This call is ambiguous, \"\n                              \"we're defaulting to CATE estimator's attribute. \"\n                              \"Please add 'dowhy__' as prefix if you want to set dowhy attribute.\", UserWarning)\n            setattr(self.estimate_._estimator_object, attr, value)\n        else:\n            setattr(self.dowhy_, attr, value)\n"
  },
  {
    "path": "econml/dr/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._drlearner import (DRLearner, LinearDRLearner, SparseLinearDRLearner, ForestDRLearner)\r\n\r\n__all__ = [\"DRLearner\",\r\n           \"LinearDRLearner\",\r\n           \"SparseLinearDRLearner\",\r\n           \"ForestDRLearner\"]\r\n"
  },
  {
    "path": "econml/dr/_drlearner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"\nDoubly Robust Learner.\n\nThe method uses the doubly robust correction to construct doubly\nrobust estimates of all the potential outcomes of each samples. Then estimates a CATE model\nby regressing the potential outcome differences on the heterogeneity features X.\n\nReferences\n----------\nDylan Foster, Vasilis Syrgkanis (2019).\n    Orthogonal Statistical Learning.\n    ACM Conference on Learning Theory. https://arxiv.org/abs/1901.09036\n\nRobins, J.M., Rotnitzky, A., and Zhao, L.P. (1994).\n    Estimation of regression coefficients when some regressors are not always observed.\n    Journal of the American Statistical Association 89,846–866.\n\nBang, H. and Robins, J.M. (2005).\n    Doubly robust estimation in missing data and causal inference models.\n    Biometrics 61,962–972.\n\nTsiatis AA (2006).\n    Semiparametric Theory and Missing Data.\n    New York: Springer; 2006.\n\n.. testcode::\n    :hide:\n\n    import numpy as np\n    import scipy.special\n    np.set_printoptions(suppress=True)\n\n\"\"\"\n\nfrom warnings import warn\n\nimport numpy as np\nfrom sklearn.base import clone\n\n\nfrom .._ortho_learner import _OrthoLearner\nfrom .._cate_estimator import (DebiasedLassoCateEstimatorDiscreteMixin, ForestModelFinalCateEstimatorDiscreteMixin,\n                               StatsModelsCateEstimatorDiscreteMixin, LinearCateEstimator)\nfrom ..inference import GenericModelFinalInferenceDiscrete\nfrom ..grf import RegressionForest\nfrom ..sklearn_extensions.linear_model import (\n    DebiasedLasso, StatsModelsLinearRegression)\nfrom ..sklearn_extensions.model_selection import ModelSelector, SingleModelSelector, get_selector\nfrom ..utilities import (check_high_dimensional,\n                         filter_none_kwargs, inverse_onehot, get_feature_names_or_default)\nfrom .._shap import _shap_explain_multitask_model_cate, _shap_explain_model_cate\nfrom ..validate.sensitivity_analysis import (sensitivity_interval, RV,\n                                             sensitivity_summary, dr_sensitivity_values)\n\n\ndef _calculate_crump_threshold(propensities):\n    \"\"\"\n    Calculate the optimal trimming threshold following Crump et al. (2009).\n\n    The optimal threshold alpha minimizes the asymptotic variance of the treatment\n    effect estimator. For binary treatment, this is found by solving:\n    alpha = 1/2 - sqrt(1/4 - gamma) where gamma is determined by the\n    propensity score distribution.\n\n    Parameters\n    ----------\n    propensities : ndarray of shape (n_samples, n_treatments + 1)\n        Propensity scores for each sample and treatment.\n\n    Returns\n    -------\n    alpha : float\n        The optimal trimming threshold. Observations with any propensity score\n        below alpha or above 1-alpha should be trimmed.\n\n    References\n    ----------\n    [Crump2009]_\n    \"\"\"\n    n_samples = propensities.shape[0]\n\n    # compute the product of the propensities across treatments (e.g. p(1-p) for binary treatment), then sort\n    sorted_props = np.sort(np.prod(propensities, axis=1))[::-1]\n    # Set any zeros to 1 when inverting to avoid division by zero; we won't use these values anyway\n    sorted_inv = 1 / (sorted_props + (sorted_props == 0))\n    cum_avg = np.cumsum(sorted_inv) / np.arange(1, n_samples + 1)\n    # We want to find the first index where sorted_inv = 2*cum_avg\n    for i in range(n_samples):\n        if sorted_props[i] == 0:\n            # at this point, all remaining are zero,\n            # so the average of the inverse will become infinite and we don't need to continue\n            threshold_index = n_samples - 1\n            break\n        if sorted_inv[i] >= 2*cum_avg[i]:\n            threshold_index = i\n            break\n    else:\n        threshold_index = n_samples - 1\n\n    gamma = sorted_props[threshold_index]\n    alpha = 1/2 - np.sqrt(1/4 - gamma)\n    # Subtract small tolerance in case precision was lost in sqrt\n    return max(0, alpha - 1e-10)\n\n\nclass _ModelNuisance(ModelSelector):\n    def __init__(self,\n                 model_propensity: SingleModelSelector,\n                 model_regression: SingleModelSelector,\n                 min_propensity,\n                 discrete_outcome):\n        self._model_propensity = model_propensity\n        self._model_regression = model_regression\n        self._min_propensity = min_propensity\n        self._discrete_outcome = discrete_outcome\n\n    def _combine(self, X, W):\n        return np.hstack([arr for arr in [X, W] if arr is not None])\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, *, sample_weight=None, groups=None):\n        if Y.ndim != 1 and (Y.ndim != 2 or Y.shape[1] != 1):\n            raise ValueError(\"The outcome matrix must be of shape ({0}, ) or ({0}, 1), \"\n                             \"instead got {1}.\".format(len(X), Y.shape))\n        if (X is None) and (W is None):\n            raise AttributeError(\"At least one of X or W has to not be None!\")\n        if np.any(np.all(T == 0, axis=0)) or (not np.any(np.all(T == 0, axis=1))):\n            raise AttributeError(\"Provided crossfit folds contain training splits that \" +\n                                 \"don't contain all treatments\")\n        XW = self._combine(X, W)\n        filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight)\n\n        self._model_propensity.train(is_selecting, folds, XW, inverse_onehot(T), groups=groups, **filtered_kwargs)\n        self._model_regression.train(is_selecting, folds, np.hstack([XW, T]), Y, groups=groups, **filtered_kwargs)\n        return self\n\n    def score(self, Y, T, X=None, W=None, *, sample_weight=None, groups=None):\n        XW = self._combine(X, W)\n        filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight)\n\n        propensity_score = self._model_propensity.score(XW, inverse_onehot(T), **filtered_kwargs)\n        regression_score = self._model_regression.score(np.hstack([XW, T]), Y, **filtered_kwargs)\n\n        return propensity_score, regression_score\n\n    def predict(self, Y, T, X=None, W=None, *, sample_weight=None, groups=None):\n        XW = self._combine(X, W)\n        if hasattr(self._model_propensity, 'predict_proba'):\n            raw_propensities = self._model_propensity.predict_proba(XW)\n        else:\n            warn(\"A regressor was passed to model_propensity. \"\n                 \"Using a classifier is recommended.\", UserWarning)\n            # NOTE: we assume binary treatment here since there's no way to recover more than one\n            #       propensity with a regressor\n            raw_propensities = self._model_propensity.predict(XW).reshape(-1)\n            raw_propensities = np.stack([1 - raw_propensities, raw_propensities], axis=1)\n            # Ensure raw propensities are valid probabilities before further clipping and trimming\n            raw_propensities = np.clip(raw_propensities, 0, 1)\n        propensities = np.clip(raw_propensities, self._min_propensity, 1-self._min_propensity)\n\n        n = T.shape[0]\n        Y_pred = np.zeros((T.shape[0], T.shape[1] + 1))\n        T_counter = np.zeros(T.shape)\n        if hasattr(self._model_regression, 'predict_proba'):\n            if self._discrete_outcome:\n                Y_pred[:, 0] = self._model_regression.predict_proba(np.hstack([XW, T_counter]))[:, 1].reshape(n)\n            else:\n                raise AttributeError(\"Cannot use a classifier for model_regression when discrete_outcome=False!\")\n        else:\n            if self._discrete_outcome:\n                warn(\"A regressor was passed to model_regression when discrete_outcome=True. \"\n                     \"Using a classifier is recommended.\", UserWarning)\n            Y_pred[:, 0] = self._model_regression.predict(np.hstack([XW, T_counter])).reshape(n)\n        # NOTE: We compute pseudo-outcomes using clipped propensities regardless of trimming\n        #       This is okay because these samples will be discarded in the final model if trimming is used and\n        #       the raw probability is below the trimming threshold.\n        Y_pred[:, 0] += (Y.reshape(n) - Y_pred[:, 0]) * np.all(T == 0, axis=1) / propensities[:, 0]\n        for t in np.arange(T.shape[1]):\n            T_counter = np.zeros(T.shape)\n            T_counter[:, t] = 1\n            if self._discrete_outcome and hasattr(self._model_regression, 'predict_proba'):\n                Y_pred[:, t + 1] = self._model_regression.predict_proba(np.hstack([XW, T_counter]))[:, 1].reshape(n)\n            else:\n                Y_pred[:, t + 1] = self._model_regression.predict(np.hstack([XW, T_counter])).reshape(n)\n            Y_pred[:, t + 1] += (Y.reshape(n) - Y_pred[:, t + 1]) * (T[:, t] == 1) / propensities[:, t + 1]\n        # Return both clipped propensities (for DR adjustment) and raw propensities (for trimming)\n        return Y_pred.reshape(Y.shape + (T.shape[1] + 1,)), propensities, raw_propensities\n\n\ndef _make_first_stage_selector(model, is_discrete, random_state):\n    if model == \"auto\":\n        model = ['linear', 'forest']\n    return get_selector(model, is_discrete=is_discrete, random_state=random_state)\n\n\nclass _ModelFinal:\n    # Coding Remark: The reasoning around the multitask_model_final could have been simplified if\n    # we simply wrapped the model_final with a MultiOutputRegressor. However, because we also want\n    # to allow even for model_final objects whose fit(X, y) can accept X=None\n    # (e.g. the StatsModelsLinearRegression), we cannot take that route, because the MultiOutputRegressor\n    # checks that X is 2D array.\n    def __init__(self, model_final, featurizer, multitask_model_final, trimming_threshold=None):\n        self._model_final = clone(model_final, safe=False)\n        self._featurizer = clone(featurizer, safe=False)\n        self._multitask_model_final = multitask_model_final\n        self._trimming_threshold = trimming_threshold\n        return\n\n    def _compute_trim_mask(self, T_pred):\n        \"\"\"\n        Compute the trim mask based on propensity scores following Crump et al. (2009).\n\n        Parameters\n        ----------\n        T_pred : ndarray of shape (n_samples, n_treatments + 1)\n            Propensity scores for each sample and treatment.\n\n        Returns\n        -------\n        trim_mask : ndarray of shape (n_samples,), dtype bool\n            True for samples to keep, False for samples to trim.\n        \"\"\"\n        # If no trimming threshold specified, keep all samples\n        if self._trimming_threshold is None:\n            return np.ones(T_pred.shape[0], dtype=bool)\n\n        # Check for multiple treatments with trimming and bail early\n        if T_pred.shape[1] > 2:\n            warn(\"Sample trimming is currently only supported for binary treatment \"\n                 \"(single treatment plus control).\", UserWarning)\n            return np.ones(T_pred.shape[0], dtype=bool)\n\n        if self._trimming_threshold == 'auto':\n            # Calculate optimal threshold using Crump et al. criterion\n            threshold = _calculate_crump_threshold(T_pred)\n        else:\n            threshold = self._trimming_threshold\n\n        # Create mask for samples to keep (not trimmed)\n        # Trim if any propensity is below threshold or above 1-threshold\n        trim_mask = np.all((T_pred >= threshold) & (T_pred <= 1 - threshold), axis=1)\n        return trim_mask\n\n    def fit(self, Y, T, X=None, W=None, *, nuisances,\n            sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        Y_pred, T_pred, T_pred_raw = nuisances\n\n        # Apply sample trimming based on Crump et al. (2009) if enabled\n        # Use raw (unclipped) propensities for trimming decisions\n        trim_mask = self._compute_trim_mask(T_pred_raw)\n        self.n_samples_original_ = len(trim_mask)\n        self.n_samples_trimmed_ = int(np.sum(~trim_mask))\n\n        if self.n_samples_trimmed_ > 0:\n            # Filter all inputs based on trim_mask\n            Y = Y[trim_mask]\n            T = T[trim_mask]\n            Y_pred = Y_pred[trim_mask]\n            T_pred = T_pred[trim_mask]\n            if X is not None:\n                X = X[trim_mask]\n            if sample_weight is not None:\n                sample_weight = sample_weight[trim_mask]\n            if freq_weight is not None:\n                freq_weight = freq_weight[trim_mask]\n            if sample_var is not None:\n                sample_var = sample_var[trim_mask]\n\n        self.sensitivity_params = dr_sensitivity_values(Y, T, Y_pred, T_pred)\n\n        T_complete = np.hstack(((np.all(T == 0, axis=1) * 1).reshape(-1, 1), T))\n        propensities = np.sum(T_pred * T_complete, axis=1).reshape((T.shape[0],))\n\n        self.d_y = Y_pred.shape[1:-1]  # track whether there's a Y dimension (must be a singleton)\n        self.d_t = Y_pred.shape[-1] - 1  # track # of treatment (exclude baseline treatment)\n\n        if (X is not None) and (self._featurizer is not None):\n            X = self._featurizer.fit_transform(X)\n\n        if self._multitask_model_final:\n            ys = Y_pred[..., 1:] - Y_pred[..., [0]]  # subtract control results from each other arm\n            if self.d_y:  # need to squeeze out singleton so that we fit on 2D array\n                ys = ys.squeeze(1)\n            weighted_sample_var = np.tile((sample_var / propensities**2).reshape((-1, 1)),\n                                          self.d_t) if sample_var is not None else None\n            filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight,\n                                                 freq_weight=freq_weight, sample_var=weighted_sample_var)\n            self.model_cate = self._model_final.fit(X, ys, **filtered_kwargs)\n        else:\n            weighted_sample_var = sample_var / propensities**2 if sample_var is not None else None\n            filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight,\n                                                 freq_weight=freq_weight, sample_var=weighted_sample_var)\n            self.models_cate = [clone(self._model_final, safe=False).fit(X, Y_pred[..., t] - Y_pred[..., 0],\n                                                                         **filtered_kwargs)\n                                for t in np.arange(1, Y_pred.shape[-1])]\n        return self\n\n    def predict(self, X=None):\n        if (X is not None) and (self._featurizer is not None):\n            X = self._featurizer.transform(X)\n        if self._multitask_model_final:\n            pred = self.model_cate.predict(X).reshape((-1, self.d_t))\n            if self.d_y:  # need to reintroduce singleton Y dimension\n                return pred[:, np.newaxis, :]\n            return pred\n        else:\n            preds = np.array([mdl.predict(X).reshape((-1,) + self.d_y) for mdl in self.models_cate])\n            return np.moveaxis(preds, 0, -1)  # move treatment dim to end\n\n    def score(self, Y, T, X=None, W=None, *, nuisances, sample_weight=None, groups=None):\n        if (X is not None) and (self._featurizer is not None):\n            X = self._featurizer.transform(X)\n        Y_pred, T_pred, T_pred_raw = nuisances\n\n        # Apply sample trimming if enabled (use raw propensities for trimming)\n        trim_mask = self._compute_trim_mask(T_pred_raw)\n        if np.sum(~trim_mask) > 0:\n            Y_pred = Y_pred[trim_mask]\n            if X is not None:\n                X = X[trim_mask]\n            if sample_weight is not None:\n                sample_weight = sample_weight[trim_mask]\n\n        if self._multitask_model_final:\n            Y_pred_diff = Y_pred[..., 1:] - Y_pred[..., [0]]\n            cate_pred = self.model_cate.predict(X).reshape((-1, self.d_t))\n            if self.d_y:\n                cate_pred = cate_pred[:, np.newaxis, :]\n            return np.mean(np.average((Y_pred_diff - cate_pred)**2, weights=sample_weight, axis=0))\n\n        else:\n            scores = []\n            for t in np.arange(1, Y_pred.shape[-1]):\n                # since we only allow single dimensional y, we could flatten the prediction\n                Y_pred_diff = (Y_pred[..., t] - Y_pred[..., 0]).flatten()\n                cate_pred = self.models_cate[t - 1].predict(X).flatten()\n                score = np.average((Y_pred_diff - cate_pred)**2, weights=sample_weight, axis=0)\n                scores.append(score)\n            return np.mean(scores)\n\n\nclass DRLearner(_OrthoLearner):\n    \"\"\"\n    CATE estimator that uses doubly-robust correction to account for selection bias between the treatment arms.\n\n    The estimator is a special case of an :class:`._OrthoLearner` estimator, so it follows the two\n    stage process, where a set of nuisance functions are estimated in the first stage in a crossfitting\n    manner and a final stage estimates the CATE model. See the documentation of\n    :class:`._OrthoLearner` for a description of this two stage process.\n\n    In this estimator, the CATE is estimated by using the following estimating equations. If we let:\n\n    .. math ::\n        Y_{i, t}^{DR} = E[Y | X_i, W_i, T_i=t]\\\n            + \\\\frac{Y_i - E[Y | X_i, W_i, T_i=t]}{Pr[T_i=t | X_i, W_i]} \\\\cdot 1\\\\{T_i=t\\\\}\n\n    Then the following estimating equation holds:\n\n    .. math ::\n        E\\\\left[Y_{i, t}^{DR} - Y_{i, 0}^{DR} | X_i\\\\right] = \\\\theta_t(X_i)\n\n    Thus if we estimate the nuisance functions :math:`h(X, W, T) = E[Y | X, W, T]` and\n    :math:`p_t(X, W)=Pr[T=t | X, W]` in the first stage, we can estimate the final stage cate for each\n    treatment t, by running a regression, regressing :math:`Y_{i, t}^{DR} - Y_{i, 0}^{DR}` on :math:`X_i`.\n\n    The problem of estimating the nuisance function :math:`p` is a simple multi-class classification\n    problem of predicting the label :math:`T` from :math:`X, W`. The :class:`.DRLearner`\n    class takes as input the parameter ``model_propensity``, which is an arbitrary scikit-learn\n    classifier, that is internally used to solve this classification problem.\n\n    The second nuisance function :math:`h` is a simple regression problem and the :class:`.DRLearner`\n    class takes as input the parameter ``model_regressor``, which is an arbitrary scikit-learn regressor that\n    is internally used to solve this regression problem.\n\n    The final stage is multi-task regression problem with outcomes the labels :math:`Y_{i, t}^{DR} - Y_{i, 0}^{DR}`\n    for each non-baseline treatment t. The :class:`.DRLearner` takes as input parameter\n    ``model_final``, which is any scikit-learn regressor that is internally used to solve this multi-task\n    regresion problem. If the parameter ``multitask_model_final`` is False, then this model is assumed\n    to be a mono-task regressor, and separate clones of it are used to solve each regression target\n    separately.\n\n    Parameters\n    ----------\n    model_propensity: estimator, default ``'auto'``\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options\n\n    model_regression: estimator, default ``'auto'``\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\n        concatenated. The one-hot-encoding excludes the baseline treatment.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_final :\n        estimator for the final cate model. Trained on regressing the doubly robust potential outcomes\n        on (features X).\n\n        - If X is None, then the fit method of model_final should be able to handle X=None.\n        - If featurizer is not None and X is not None, then it is trained on the outcome of\n          featurizer.fit_transform(X).\n        - If multitask_model_final is True, then this model must support multitasking\n          and it is trained by regressing all doubly robust target outcomes on (featurized) features simultanteously.\n        - The output of the predict(X) of the trained model will contain the CATEs for each treatment compared to\n          baseline treatment (lexicographically smallest). If multitask_model_final is False, it is assumed to be a\n          mono-task model and a separate clone of the model is trained for each outcome. Then predict(X) of the t-th\n          clone will be the CATE of the t-th lexicographically ordered treatment compared to the baseline.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    multitask_model_final : bool, default False\n        Whether the model_final should be treated as a multi-task model. See description of model_final.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    min_propensity : float, default ``1e-6``\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\n        This clipping is applied after trimming, so it only affects samples that remain after\n        any trimming is performed. See `trimming_threshold` for the interaction between these settings.\n\n    trimming_threshold : float, 'auto', or None, default None\n        Threshold for sample trimming based on propensity scores, following [Crump2009]_.\n        Observations with propensity scores below `trimming_threshold` or above `1 - trimming_threshold`\n        for any treatment arm will be excluded from the final stage estimation.\n\n        - If None (default), no trimming is performed.\n        - If 'auto', the optimal threshold is calculated following [Crump2009]_,\n          which minimizes the asymptotic variance of the treatment effect estimator.\n        - If a float between 0 and 0.5, observations are trimmed if any propensity score\n          falls outside the interval [trimming_threshold, 1-trimming_threshold].\n\n        Trimming can improve estimation when there is limited overlap between treatment groups\n        by focusing on the subpopulation where causal effects can be estimated reliably.\n        Note that after trimming, the estimated treatment effects are only valid for the\n        subpopulation that was not trimmed.\n\n        When using trimming, the `trimming_threshold` should typically be set at least as large as\n        `min_propensity`. If `trimming_threshold < min_propensity`, samples with propensities between\n        these values will be kept but have their propensities clipped, which may not be desirable.\n        A warning is emitted in this case.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state: int, :class:`~numpy.random.mtrand.RandomState` instance or None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply model_propensity,\n        model_regression, and model_final that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dr import DRLearner\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 3))\n        T = np.random.binomial(2, scipy.special.expit(X[:, 0]))\n        sigma = 0.001\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(0, sigma, size=(1000,))\n        est = DRLearner()\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.const_marginal_effect(X[:2])\n    array([[0.516888..., 0.995747...],\n           [0.356386..., 0.671889...]])\n    >>> est.effect(X[:2], T0=0, T1=1)\n    array([0.516888..., 0.356386...])\n    >>> est.score_\n    np.float64(2.845660...)\n    >>> est.score(y, T, X=X)\n    np.float64(1.062668...)\n    >>> est.model_cate(T=1).coef_\n    array([ 0.447146..., -0.001025...,  0.018984...])\n    >>> est.model_cate(T=2).coef_\n    array([ 0.925064..., -0.012351...,  0.033480...])\n    >>> est.cate_feature_names()\n    ['X0', 'X1', 'X2']\n\n    Beyond default models:\n\n    .. testcode::\n\n        from sklearn.linear_model import LassoCV\n        from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\n        from econml.dr import DRLearner\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 3))\n        T = np.random.binomial(2, scipy.special.expit(X[:, 0]))\n        sigma = 0.01\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(0, sigma, size=(1000,))\n        est = DRLearner(model_propensity=RandomForestClassifier(n_estimators=100, min_samples_leaf=10),\n                        model_regression=RandomForestRegressor(n_estimators=100, min_samples_leaf=10),\n                        model_final=LassoCV(cv=3),\n                        featurizer=None)\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.score_\n    np.float64(1.73...)\n    >>> est.const_marginal_effect(X[:3])\n    array([[0.68..., 1.10...],\n           [0.56..., 0.79... ],\n           [0.34..., 0.10... ]])\n    >>> est.model_cate(T=2).coef_\n    array([0.74..., 0.        , 0.        ])\n    >>> est.model_cate(T=2).intercept_\n    np.float64(1.9...)\n    >>> est.model_cate(T=1).coef_\n    array([0.24..., 0.00..., 0.        ])\n    >>> est.model_cate(T=1).intercept_\n    np.float64(0.94...)\n\n    Attributes\n    ----------\n    score_ : float\n        The MSE in the final doubly robust potential outcome regressions, i.e.\n\n        .. math::\n            \\\\frac{1}{n_t} \\\\sum_{t=1}^{n_t} \\\\frac{1}{n} \\\\sum_{i=1}^n (Y_{i, t}^{DR} - \\\\hat{\\\\theta}_t(X_i))^2\n\n        where n_t is the number of treatments (excluding control).\n\n        If `sample_weight` is not None at fit time, then a weighted average across samples is returned.\n\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_propensity='auto',\n                 model_regression='auto',\n                 model_final=StatsModelsLinearRegression(),\n                 discrete_outcome=False,\n                 multitask_model_final=False,\n                 featurizer=None,\n                 min_propensity=1e-6,\n                 trimming_threshold=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n        self.model_propensity = clone(model_propensity, safe=False)\n        self.model_regression = clone(model_regression, safe=False)\n        self.model_final = clone(model_final, safe=False)\n        self.multitask_model_final = multitask_model_final\n        self.featurizer = clone(featurizer, safe=False)\n        self.min_propensity = min_propensity\n        self.trimming_threshold = trimming_threshold\n        super().__init__(cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         discrete_outcome=discrete_outcome,\n                         discrete_treatment=True,\n                         treatment_featurizer=None,  # treatment featurization not supported with discrete treatment\n                         discrete_instrument=False,  # no instrument, so doesn't matter\n                         categories=categories,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_allowed_missing_vars(self):\n        return ['X', 'W'] if self.allow_missing else []\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_effect(self, X=None):\n        \"\"\"\n        Calculate the constant marginal CATE :math:`\\\\theta(·)`.\n\n        The marginal effect is conditional on a vector of\n        features on a set of m test samples X[i].\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (m, d_y, d_t) matrix or (d_y, d_t) matrix if X is None\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return super().const_marginal_effect(X=X)\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_ate(self, X=None):\n        \"\"\"\n        Calculate the average constant marginal CATE :math:`E_X[\\\\theta(X)]`.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (d_y, d_t) matrix\n            Average constant marginal CATE of each treatment on each outcome.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return super().const_marginal_ate(X=X)\n\n    def _get_inference_options(self):\n        options = super()._get_inference_options()\n        if not self.multitask_model_final:\n            options.update(auto=GenericModelFinalInferenceDiscrete)\n        else:\n            options.update(auto=lambda: None)\n        return options\n\n    def _gen_ortho_learner_model_nuisance(self):\n        model_propensity = _make_first_stage_selector(self.model_propensity, True, self.random_state)\n        model_regression = _make_first_stage_selector(self.model_regression, self.discrete_outcome, self.random_state)\n\n        return _ModelNuisance(model_propensity, model_regression, self.min_propensity, self.discrete_outcome)\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_ortho_learner_model_final(self):\n        return _ModelFinal(self._gen_model_final(), self._gen_featurizer(), self.multitask_model_final,\n                           self.trimming_threshold)\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`).\n\n        Returns\n        -------\n        self: DRLearner instance\n        \"\"\"\n        # Check for potentially problematic combination of min_propensity and trimming_threshold\n        if (self.trimming_threshold is not None\n                and self.trimming_threshold != 'auto'\n                and self.trimming_threshold < self.min_propensity):\n            warn(f\"trimming_threshold ({self.trimming_threshold}) is less than min_propensity \"\n                 f\"({self.min_propensity}). This may lead to unexpected behavior, as samples with propensities between \"\n                 \"these values will be kept but have their propensities clipped. Consider setting \"\n                 \"trimming_threshold >= min_propensity.\", UserWarning)\n        if (self.trimming_threshold is not None\n                and self.trimming_threshold != 'auto'\n                and (self.trimming_threshold <= 0 or self.trimming_threshold >= 0.5)):\n            raise ValueError(\"trimming_threshold must be None, 'auto', or a float in the interval (0, 0.5).\")\n        # Replacing fit from _OrthoLearner, to enforce Z=None and improve the docstring\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    def score(self, Y, T, X=None, W=None, sample_weight=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        # Replacing score from _OrthoLearner, to enforce Z=None and improve the docstring\n        return super().score(Y, T, X=X, W=W, sample_weight=sample_weight)\n\n    @property\n    def multitask_model_cate(self):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Returns\n        -------\n        multitask_model_cate: object of type(`model_final`)\n            An instance of the model_final object that was fitted after calling fit which corresponds whose\n            vector of outcomes correspond to the CATE model for each treatment, compared to baseline.\n            Available only when multitask_model_final=True.\n        \"\"\"\n        if not self.ortho_learner_model_final_._multitask_model_final:\n            raise AttributeError(\"Separate CATE models were fitted for each treatment! Use model_cate.\")\n        return self.ortho_learner_model_final_.model_cate\n\n    def model_cate(self, T=1):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The treatment with respect to which we want the fitted CATE model.\n\n        Returns\n        -------\n        model_cate: object of type(model_final)\n            An instance of the model_final object that was fitted after calling fit which corresponds\n            to the CATE model for treatment T=t, compared to baseline. Available when multitask_model_final=False.\n        \"\"\"\n        if self.ortho_learner_model_final_._multitask_model_final:\n            raise AttributeError(\"A single multitask model was fitted for all treatments! Use multitask_model_cate.\")\n        _, T = self._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.ortho_learner_model_final_.models_cate[ind]\n\n    @property\n    def models_propensity(self):\n        \"\"\"\n        Get the fitted propensity models.\n\n        Returns\n        -------\n        models_propensity: nested list of objects of type(`model_propensity`)\n            A nested list of instances of the `model_propensity` object. Number of sublist equals to number of\n            monte carlo iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_propensity.best_model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_regression(self):\n        \"\"\"\n        Get the fitted regression models.\n\n        Returns\n        -------\n        model_regression: nested list of objects of type(`model_regression`)\n            A nested list of instances of the model_regression object. Number of sublist equals to number of\n            monte carlo iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_regression.best_model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_propensity(self):\n        \"\"\"Get the score for the propensity model on out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_regression(self):\n        \"\"\"Get the score for the regression model on out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[1]\n\n    @property\n    def n_samples_trimmed_(self):\n        \"\"\"\n        Get the number of samples that were trimmed due to extreme propensity scores.\n\n        Returns\n        -------\n        n_trimmed : int\n            The number of samples that were trimmed. Returns 0 if trimming was not enabled.\n\n        See Also\n        --------\n        n_samples_used_ : Number of samples used after trimming.\n        \"\"\"\n        return getattr(self.ortho_learner_model_final_, 'n_samples_trimmed_', 0)\n\n    @property\n    def n_samples_used_(self):\n        \"\"\"\n        Get the number of samples used in the final stage estimation after trimming.\n\n        Returns\n        -------\n        n_used : int\n            The number of samples used in the final stage estimation.\n        \"\"\"\n        original = getattr(self.ortho_learner_model_final_, 'n_samples_original_', None)\n        trimmed = getattr(self.ortho_learner_model_final_, 'n_samples_trimmed_', 0)\n        if original is not None:\n            return original - trimmed\n        return None\n\n    @property\n    def featurizer_(self):\n        \"\"\"\n        Get the fitted featurizer.\n\n        Returns\n        -------\n        featurizer: object of type(`featurizer`)\n            An instance of the fitted featurizer that was used to preprocess X in the final CATE model training.\n            Available only when featurizer is not None and X is not None.\n        \"\"\"\n        return self.ortho_learner_model_final_._featurizer\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final CATE model for each treatment is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Available only when the featurizer is not None and has\n            a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.featurizer_ is None:\n            return feature_names\n        return get_feature_names_or_default(self.featurizer_, feature_names)\n\n    @property\n    def model_final_(self):\n        return self.ortho_learner_model_final_._model_final\n\n    @property\n    def fitted_models_final(self):\n        return self.ortho_learner_model_final_.models_cate\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        if self.ortho_learner_model_final_._multitask_model_final:\n            return _shap_explain_multitask_model_cate(self.const_marginal_effect, self.multitask_model_cate, X,\n                                                      self._d_t, self._d_y,\n                                                      featurizer=self.featurizer_,\n                                                      feature_names=feature_names,\n                                                      treatment_names=treatment_names,\n                                                      output_names=output_names,\n                                                      input_names=self._input_names,\n                                                      background_samples=background_samples)\n        else:\n            return _shap_explain_model_cate(self.const_marginal_effect, self.fitted_models_final,\n                                            X, self._d_t, self._d_y,\n                                            featurizer=self.featurizer_,\n                                            feature_names=feature_names,\n                                            treatment_names=treatment_names,\n                                            output_names=output_names,\n                                            input_names=self._input_names,\n                                            background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n\n    def sensitivity_summary(self, T, null_hypothesis=0, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., decimals=3):\n        \"\"\"\n        Generate a summary of the sensitivity analysis for the ATE for a given treatment.\n\n        Parameters\n        ----------\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n\n        \"\"\"\n        if T not in self.transformer.categories_[0]:\n            # raise own ValueError here because sometimes error from sklearn is not transparent\n            raise ValueError(f\"Treatment {T} not in the list of treatments {self.transformer.categories_[0]}\")\n        _, T = self._expand_treatments(None, T)\n        T_ind = inverse_onehot(T).item() - 1\n        assert T_ind >= 0, \"No model was fitted for the control\"\n        sensitivity_params = {\n            k: v[T_ind] for k, v in self._ortho_learner_model_final.sensitivity_params._asdict().items()}\n        return sensitivity_summary(**sensitivity_params, null_hypothesis=null_hypothesis, alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, decimals=decimals)\n\n    def sensitivity_interval(self, T, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., interval_type='ci'):\n        \"\"\"\n        Calculate the sensitivity interval for the ATE for a given treatment category.\n\n        The sensitivity interval is the range of values for the ATE that are\n        consistent with the observed data, given a specified level of confounding.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The treatment with respect to calculate the sensitivity interval.\n\n        alpha: float, default 0.05\n            The significance level for the sensitivity interval.\n\n        c_y: float, default 0.05\n            The level of confounding in the outcome. Ranges from 0 to 1.\n\n        c_d: float, default 0.05\n            The level of confounding in the treatment. Ranges from 0 to 1.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        (lb, ub): tuple of floats\n            sensitivity interval for the ATE for treatment T\n        \"\"\"\n        if T not in self.transformer.categories_[0]:\n            # raise own ValueError here because sometimes error from sklearn is not transparent\n            raise ValueError(f\"Treatment {T} not in the list of treatments {self.transformer.categories_[0]}\")\n        _, T = self._expand_treatments(None, T)\n        T_ind = inverse_onehot(T).item() - 1\n        assert T_ind >= 0, \"No model was fitted for the control\"\n        sensitivity_params = {\n            k: v[T_ind] for k, v in self._ortho_learner_model_final.sensitivity_params._asdict().items()}\n        return sensitivity_interval(**sensitivity_params, alpha=alpha,\n                                    c_y=c_y, c_t=c_t, rho=rho, interval_type=interval_type)\n\n\n    def robustness_value(self, T, null_hypothesis=0, alpha=0.05, interval_type='ci'):\n        \"\"\"\n        Calculate the robustness value for the ATE for a given treatment category.\n\n        The robustness value is the level of confounding (between 0 and 1) in\n        *both* the treatment and outcome that would result in enough omitted variable bias such that\n        we can no longer reject the null hypothesis. When null_hypothesis is the default of 0, the robustness value\n        has the interpretation that it is the level of confounding that would make the\n        ATE statistically insignificant.\n\n        A higher value indicates a more robust estimate.\n\n        Returns 0 if the original interval already includes the null_hypothesis.\n\n        Based on [Chernozhukov2022]_\n\n        Parameters\n        ----------\n        T: alphanumeric\n            The treatment with respect to calculate the robustness value.\n\n        null_hypothesis: float, default 0\n            The null_hypothesis value for the ATE.\n\n        alpha: float, default 0.05\n            The significance level for the robustness value.\n\n        interval_type: str, default 'ci'\n            The type of interval to return. Can be 'ci' or 'theta'\n\n        Returns\n        -------\n        float\n            The robustness value\n        \"\"\"\n        if T not in self.transformer.categories_[0]:\n            # raise own ValueError here because sometimes error from sklearn is not transparent\n            raise ValueError(f\"Treatment {T} not in the list of treatments {self.transformer.categories_[0]}\")\n        _, T = self._expand_treatments(None, T)\n        T_ind = inverse_onehot(T).item() - 1\n        assert T_ind >= 0, \"No model was fitted for the control\"\n        sensitivity_params = {\n            k: v[T_ind] for k, v in self._ortho_learner_model_final.sensitivity_params._asdict().items()}\n        return RV(**sensitivity_params, null_hypothesis=null_hypothesis, alpha=alpha, interval_type=interval_type)\n\n\nclass LinearDRLearner(StatsModelsCateEstimatorDiscreteMixin, DRLearner):\n    \"\"\"\n    Special case of :class:`.DRLearner` where the final stage is Linear Regression on a low dimensional set of features.\n\n    In this case, inference can be performed via the asymptotic normal characterization of the estimated parameters.\n    This is computationally faster than bootstrap inference. To do this, just leave the setting ``inference='auto'``\n    unchanged, or explicitly set ``inference='statsmodels'`` or alter the covariance type calculation via\n    ``inference=StatsModelsInferenceDiscrete(cov_type='HC1)``.\n\n    More concretely, this estimator assumes that the final cate model for each treatment takes a linear form:\n\n    .. math ::\n        \\\\theta_t(X) = \\\\left\\\\langle \\\\theta_t, \\\\phi(X) \\\\right\\\\rangle + \\\\beta_t\n\n    where :math:`\\\\phi(X)` is the outcome features of the featurizers, or `X` if featurizer is None. :math:`\\\\beta_t`\n    is an intercept of the CATE, which is included if ``fit_cate_intercept=True`` (Default). It fits this by\n    running a standard ordinary linear regression (OLS), regressing the doubly robust outcome differences on X:\n\n    .. math ::\n        \\\\min_{\\\\theta_t, \\\\beta_t}\\\n        E_n\\\\left[\\\\left(Y_{i, t}^{DR} - Y_{i, 0}^{DR}\\\n            - \\\\left\\\\langle \\\\theta_t, \\\\phi(X_i) \\\\right\\\\rangle - \\\\beta_t\\\\right)^2\\\\right]\n\n    Then inference can be performed via standard approaches for inference of OLS, via asympotic normal approximations\n    of the estimated parameters. The default covariance estimator used is heteroskedasticity robust (HC1).\n    For other methods see :class:`.StatsModelsInferenceDiscrete`. Use can invoke them by setting:\n    ``inference=StatsModelsInferenceDiscrete(cov_type=...)``.\n\n    This approach is valid even if the CATE model is not linear in :math:`\\\\phi(X)`. In this case it performs\n    inference on the best linear approximation of the CATE model.\n\n    Parameters\n    ----------\n    model_propensity: estimator, default ``'auto'``\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options\n\n    model_regression: estimator, default ``'auto'``\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\n        concatenated. The one-hot-encoding excludes the baseline treatment.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    min_propensity : float, default ``1e-6``\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\n        This clipping is applied after trimming, so it only affects samples that remain after\n        any trimming is performed. See `trimming_threshold` for the interaction between these settings.\n\n    trimming_threshold : float, 'auto', or None, default None\n        Threshold for sample trimming based on propensity scores, following [Crump2009]_.\n        Observations with propensity scores below `trimming_threshold` or above `1 - trimming_threshold`\n        for any treatment arm will be excluded from the final stage estimation.\n\n        - If None (default), no trimming is performed.\n        - If 'auto', the optimal threshold is calculated following [Crump2009]_,\n          which minimizes the asymptotic variance of the treatment effect estimator.\n        - If a float between 0 and 0.5, observations are trimmed if any propensity score\n          falls outside the interval [trimming_threshold, 1-trimming_threshold].\n\n        Trimming can improve estimation when there is limited overlap between treatment groups\n        by focusing on the subpopulation where causal effects can be estimated reliably.\n        Note that after trimming, the estimated treatment effects are only valid for the\n        subpopulation that was not trimmed.\n\n        When using trimming, the `trimming_threshold` should typically be set at least as large as\n        `min_propensity`. If `trimming_threshold < min_propensity`, samples with propensities between\n        these values will be kept but have their propensities clipped, which may not be desirable.\n        A warning is emitted in this case.\n\n        .. note::\n            Trimming is currently only supported for binary treatment (single treatment plus control).\n            Using trimming with multiple treatments will emit a warning and the setting will be ignored.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state: int, :class:`~numpy.random.mtrand.RandomState` instance or None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_propensity and\n        model_regression that can handle missing values.\n\n    enable_federation: bool, default False\n        Whether to enable federation for the final model.  This has a memory cost so should be enabled only\n        if this model will be aggregated with other models.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-fitting step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dr import DRLearner, LinearDRLearner\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 3))\n        T = np.random.binomial(2, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = LinearDRLearner()\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([ 0.432365...,  0.359694..., -0.085428...])\n    >>> est.effect_interval(X[:3])\n    (array([ 0.084048..., -0.177951... , -0.734747...]),\n    array([0.780683..., 0.897341..., 0.563889...]))\n    >>> est.coef_(T=1)\n    array([ 0.450666..., -0.008821...,  0.075271...])\n    >>> est.coef__interval(T=1)\n    (array([ 0.156245..., -0.252216..., -0.159709...]),\n    array([0.745086..., 0.234572..., 0.310252...]))\n    >>> est.intercept_(T=1)\n    np.float64(0.909121...)\n    >>> est.intercept__interval(T=1)\n    (np.float64(0.668518...), np.float64(1.149723...))\n\n    Attributes\n    ----------\n    score_ : float\n        The MSE in the final doubly robust potential outcome regressions, i.e.\n\n        .. math::\n            \\\\frac{1}{n_t} \\\\sum_{t=1}^{n_t} \\\\frac{1}{n} \\\\sum_{i=1}^n (Y_{i, t}^{DR} - \\\\hat{\\\\theta}_t(X_i))^2\n\n        where n_t is the number of treatments (excluding control).\n\n        If `sample_weight` is not None at fit time, then a weighted average across samples is returned.\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_propensity='auto',\n                 model_regression='auto',\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 discrete_outcome=False,\n                 min_propensity=1e-6,\n                 trimming_threshold=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 enable_federation=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n\n        self.fit_cate_intercept = fit_cate_intercept\n        self.enable_federation = enable_federation\n        super().__init__(model_propensity=model_propensity,\n                         model_regression=model_regression,\n                         model_final=None,\n                         discrete_outcome=discrete_outcome,\n                         featurizer=featurizer,\n                         multitask_model_final=False,\n                         min_propensity=min_propensity,\n                         trimming_threshold=trimming_threshold,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return StatsModelsLinearRegression(fit_intercept=self.fit_cate_intercept,\n                                           enable_federation=self.enable_federation)\n\n    def _gen_ortho_learner_model_final(self):\n        return _ModelFinal(self._gen_model_final(), self._gen_featurizer(), False, self.trimming_threshold)\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports ``'bootstrap'``\n            (or an instance of :class:`.BootstrapInference`) and ``'statsmodels'``\n            (or an instance of :class:`.StatsModelsInferenceDiscrete`).\n\n        Returns\n        -------\n        self: DRLearner instance\n        \"\"\"\n        # Replacing fit from DRLearner, to add statsmodels inference in docstring\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.model_final_.fit_intercept\n\n    @property\n    def multitask_model_cate(self):\n        # Replacing this method which is invalid for this class, so that we make the\n        # dosctring empty and not appear in the docs.\n        return super().multitask_model_cate\n\n    @property\n    def multitask_model_final(self):\n        return False\n\n    @multitask_model_final.setter\n    def multitask_model_final(self, value):\n        if value:\n            raise ValueError(\"Parameter `multitask_model_final` cannot change from `False` for this estimator!\")\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass SparseLinearDRLearner(DebiasedLassoCateEstimatorDiscreteMixin, DRLearner):\n    \"\"\"\n    Special case of the :class:`.DRLearner` where the final stage is a Debiased Lasso Regression.\n\n    In this case, inference can be performed via the debiased lasso approach\n    and its asymptotic normal characterization of the estimated parameters. This is computationally\n    faster than bootstrap inference. Leave the default ``inference='auto'`` unchanged, or explicitly set\n    ``inference='debiasedlasso'`` at fit time to enable inference via asymptotic normality.\n\n    More concretely, this estimator assumes that the final cate model for each treatment takes a linear form:\n\n    .. math ::\n        \\\\theta_t(X) = \\\\left\\\\langle \\\\theta_t, \\\\phi(X) \\\\right\\\\rangle + \\\\beta_t\n\n    where :math:`\\\\phi(X)` is the outcome features of the featurizers, or `X` if featurizer is None. :math:`\\\\beta_t`\n    is a an intercept of the CATE, which is included if ``fit_cate_intercept=True`` (Default). It fits this by\n    running a debiased lasso regression (i.e. :math:`\\\\ell_1`-penalized regression with debiasing),\n    regressing the doubly robust outcome differences on X: i.e. first solves the penalized square loss problem\n\n    .. math ::\n        \\\\min_{\\\\theta_t, \\\\beta_t}\\\n        E_n\\\\left[\\\\left(Y_{i, t}^{DR} - Y_{i, 0}^{DR}\\\n            - \\\\left\\\\langle \\\\theta_t, \\\\phi(X_i) \\\\right\\\\rangle - \\\\beta_t\\\\right)^2\\\\right]\\\n                + \\\\lambda \\\\left\\\\lVert \\\\theta_t \\\\right\\\\rVert_1\n\n    and then adds a debiasing correction to the solution. If alpha='auto' (recommended), then the penalty\n    weight :math:`\\\\lambda` is set optimally via cross-validation.\n\n    This approach is valid even if the CATE model is not linear in :math:`\\\\phi(X)`. In this case it performs\n    inference on the best sparse linear approximation of the CATE model.\n\n    Parameters\n    ----------\n    model_propensity: estimator, default ``'auto'``\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options\n\n    model_regression: estimator, default ``'auto'``\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\n        concatenated. The one-hot-encoding excludes the baseline treatment.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    alpha: str | float, optional., default 'auto'.\n        CATE L1 regularization applied through the debiased lasso in the final model.\n        'auto' corresponds to a CV form of the :class:`DebiasedLasso`.\n\n    n_alphas : int, default 100\n        How many alphas to try if alpha='auto'\n\n    alpha_cov : str | float, default 'auto'\n        The regularization alpha that is used when constructing the pseudo inverse of\n        the covariance matrix Theta used to for correcting the final state lasso coefficient\n        in the debiased lasso. Each such regression corresponds to the regression of one feature\n        on the remainder of the features.\n\n    n_alphas_cov : int, default 10\n        How many alpha_cov to try if alpha_cov='auto'.\n\n    max_iter : int, default 1000\n        The maximum number of iterations in the Debiased Lasso\n\n    tol : float, default 1e-4\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    n_jobs : int or None, optional\n        The number of jobs to run in parallel for both `fit` and `predict`.\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\n        ``-1`` means using all processors.\n\n    min_propensity : float, default ``1e-6``\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\n        This clipping is applied after trimming, so it only affects samples that remain after\n        any trimming is performed. See `trimming_threshold` for the interaction between these settings.\n\n    trimming_threshold : float, 'auto', or None, default None\n        Threshold for sample trimming based on propensity scores, following [Crump2009]_.\n        Observations with propensity scores below `trimming_threshold` or above `1 - trimming_threshold`\n        for any treatment arm will be excluded from the final stage estimation.\n\n        - If None (default), no trimming is performed.\n        - If 'auto', the optimal threshold is calculated following [Crump2009]_,\n          which minimizes the asymptotic variance of the treatment effect estimator.\n        - If a float between 0 and 0.5, observations are trimmed if any propensity score\n          falls outside the interval [trimming_threshold, 1-trimming_threshold].\n\n        Trimming can improve estimation when there is limited overlap between treatment groups\n        by focusing on the subpopulation where causal effects can be estimated reliably.\n        Note that after trimming, the estimated treatment effects are only valid for the\n        subpopulation that was not trimmed.\n\n        When using trimming, the `trimming_threshold` should typically be set at least as large as\n        `min_propensity`. If `trimming_threshold < min_propensity`, samples with propensities between\n        these values will be kept but have their propensities clipped, which may not be desirable.\n        A warning is emitted in this case.\n\n        .. note::\n            Trimming is currently only supported for binary treatment (single treatment plus control).\n            Using trimming with multiple treatments will emit a warning and the setting will be ignored.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(X,T)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state: int, :class:`~numpy.random.mtrand.RandomState` instance or None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_propensity and\n        model_regression that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.dr import DRLearner, SparseLinearDRLearner\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 3))\n        T = np.random.binomial(2, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = SparseLinearDRLearner()\n        est.fit(y, T, X=X, W=None)\n\n    >>> est.effect(X[:3])\n    array([ 0.43...,  0.35..., -0.08...])\n    >>> est.effect_interval(X[:3])\n    (array([-0.01..., -0.26..., -0.81...]), array([0.87..., 0.98..., 0.65...]))\n    >>> est.coef_(T=1)\n    array([ 0.44..., -0.00...,  0.07...])\n    >>> est.coef__interval(T=1)\n    (array([ 0.19... , -0.24..., -0.17...]), array([0.70..., 0.22..., 0.32...]))\n    >>> est.intercept_(T=1)\n    np.float64(0.90...)\n    >>> est.intercept__interval(T=1)\n    (np.float64(0.66...), np.float64(1.14...))\n\n    Attributes\n    ----------\n    score_ : float\n        The MSE in the final doubly robust potential outcome regressions, i.e.\n\n        .. math::\n            \\\\frac{1}{n_t} \\\\sum_{t=1}^{n_t} \\\\frac{1}{n} \\\\sum_{i=1}^n (Y_{i, t}^{DR} - \\\\hat{\\\\theta}_t(X_i))^2\n\n        where n_t is the number of treatments (excluding control).\n\n        If `sample_weight` is not None at fit time, then a weighted average across samples is returned.\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_propensity='auto',\n                 model_regression='auto',\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 discrete_outcome=False,\n                 alpha='auto',\n                 n_alphas=100,\n                 alpha_cov='auto',\n                 n_alphas_cov=10,\n                 max_iter=1000,\n                 tol=1e-4,\n                 n_jobs=None,\n                 min_propensity=1e-6,\n                 trimming_threshold=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n\n        self.fit_cate_intercept = fit_cate_intercept\n        self.alpha = alpha\n        self.n_alphas = n_alphas\n        self.alpha_cov = alpha_cov\n        self.n_alphas_cov = n_alphas_cov\n        self.max_iter = max_iter\n        self.tol = tol\n        self.n_jobs = n_jobs\n        super().__init__(model_propensity=model_propensity,\n                         model_regression=model_regression,\n                         model_final=None,\n                         discrete_outcome=discrete_outcome,\n                         featurizer=featurizer,\n                         multitask_model_final=False,\n                         min_propensity=min_propensity,\n                         trimming_threshold=trimming_threshold,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return DebiasedLasso(alpha=self.alpha,\n                             n_alphas=self.n_alphas,\n                             alpha_cov=self.alpha_cov,\n                             n_alphas_cov=self.n_alphas_cov,\n                             fit_intercept=self.fit_cate_intercept,\n                             max_iter=self.max_iter,\n                             tol=self.tol,\n                             n_jobs=self.n_jobs,\n                             random_state=self.random_state)\n\n    def _gen_ortho_learner_model_final(self):\n        return _ModelFinal(self._gen_model_final(), self._gen_featurizer(), False, self.trimming_threshold)\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports ``'bootstrap'``\n            (or an instance of :class:`.BootstrapInference`) and ``'debiasedlasso'``\n            (or an instance of :class:`.LinearModelInferenceDiscrete`).\n\n        Returns\n        -------\n        self: DRLearner instance\n        \"\"\"\n        # TODO: support freq_weight and sample_var in debiased lasso\n        # Replacing fit from DRLearner, to add debiasedlasso inference in docstring\n        check_high_dimensional(X, T, threshold=5, featurizer=self.featurizer,\n                               discrete_treatment=self.discrete_treatment,\n                               msg=\"The number of features in the final model (< 5) is too small for a sparse model. \"\n                                   \"We recommend using the LinearDRLearner for this low-dimensional setting.\")\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.model_final_.fit_intercept\n\n    @property\n    def multitask_model_final(self):\n        return False\n\n    @multitask_model_final.setter\n    def multitask_model_final(self, value):\n        if value:\n            raise ValueError(\"Parameter `multitask_model_final` cannot change from `False` for this estimator!\")\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass ForestDRLearner(ForestModelFinalCateEstimatorDiscreteMixin, DRLearner):\n    \"\"\"\n    Instance of DRLearner with a :class:`~econml.grf.RegressionForest` final model to enable non-parametric inference.\n\n    Parameters\n    ----------\n    model_propensity: estimator, default ``'auto'``\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options\n\n    model_regression: estimator, default ``'auto'``\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\n        concatenated. The one-hot-encoding excludes the baseline treatment.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    min_propensity : float, default ``1e-6``\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\n        This clipping is applied after trimming, so it only affects samples that remain after\n        any trimming is performed. See `trimming_threshold` for the interaction between these settings.\n\n    trimming_threshold : float, 'auto', or None, default None\n        Threshold for sample trimming based on propensity scores, following [Crump2009]_.\n        Observations with propensity scores below `trimming_threshold` or above `1 - trimming_threshold`\n        for any treatment arm will be excluded from the final stage estimation.\n\n        - If None (default), no trimming is performed.\n        - If 'auto', the optimal threshold is calculated following [Crump2009]_,\n          which minimizes the asymptotic variance of the treatment effect estimator.\n        - If a float between 0 and 0.5, observations are trimmed if any propensity score\n          falls outside the interval [trimming_threshold, 1-trimming_threshold].\n\n        Trimming can improve estimation when there is limited overlap between treatment groups\n        by focusing on the subpopulation where causal effects can be estimated reliably.\n        Note that after trimming, the estimated treatment effects are only valid for the\n        subpopulation that was not trimmed.\n\n        When using trimming, the `trimming_threshold` should typically be set at least as large as\n        `min_propensity`. If `trimming_threshold < min_propensity`, samples with propensities between\n        these values will be kept but have their propensities clipped, which may not be desirable.\n        A warning is emitted in this case.\n\n        .. note::\n            Trimming is currently only supported for binary treatment (single treatment plus control).\n            Using trimming with multiple treatments will emit a warning and the setting will be ignored.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    n_estimators : int, default 100\n        The total number of trees in the forest. The forest consists of a\n        forest of sqrt(n_estimators) sub-forests, where each sub-forest\n        contains sqrt(n_estimators) trees.\n\n    max_depth : int or None, optional\n        The maximum depth of the tree. If None, then nodes are expanded until\n        all leaves are pure or until all leaves contain less than\n        min_samples_split samples.\n\n    min_samples_split : int, float, default 2\n        The minimum number of splitting samples required to split an internal node.\n\n        - If int, then consider `min_samples_split` as the minimum number.\n        - If float, then `min_samples_split` is a fraction and\n          `ceil(min_samples_split * n_samples)` are the minimum\n          number of samples for each split.\n\n    min_samples_leaf : int, float, default 1\n        The minimum number of samples required to be at a leaf node.\n        A split point at any depth will only be considered if it leaves at\n        least ``min_samples_leaf`` splitting samples in each of the left and\n        right branches.  This may have the effect of smoothing the model,\n        especially in regression. After construction the tree is also pruned\n        so that there are at least min_samples_leaf estimation samples on\n        each leaf.\n\n        - If int, then consider `min_samples_leaf` as the minimum number.\n        - If float, then `min_samples_leaf` is a fraction and\n          `ceil(min_samples_leaf * n_samples)` are the minimum\n          number of samples for each node.\n\n    min_weight_fraction_leaf : float, default 0.\n        The minimum weighted fraction of the sum total of weights (of all\n        splitting samples) required to be at a leaf node. Samples have\n        equal weight when sample_weight is not provided. After construction\n        the tree is pruned so that the fraction of the sum total weight\n        of the estimation samples contained in each leaf node is at\n        least min_weight_fraction_leaf\n\n    max_features : int, float, str, or None, default \"auto\"\n        The number of features to consider when looking for the best split:\n\n        - If int, then consider `max_features` features at each split.\n        - If float, then `max_features` is a fraction and\n          `int(max_features * n_features)` features are considered at each\n          split.\n        - If \"auto\", then `max_features=n_features`.\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\n        - If \"log2\", then `max_features=log2(n_features)`.\n        - If None, then `max_features=n_features`.\n\n        Note: the search for a split does not stop until at least one\n        valid partition of the node samples is found, even if it requires to\n        effectively inspect more than ``max_features`` features.\n\n    min_impurity_decrease : float, default 0.\n        A node will be split if this split induces a decrease of the impurity\n        greater than or equal to this value.\n\n        The weighted impurity decrease equation is the following::\n\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\n                                - N_t_L / N_t * left_impurity)\n\n        where ``N`` is the total number of split samples, ``N_t`` is the number of\n        split samples at the current node, ``N_t_L`` is the number of split samples in the\n        left child, and ``N_t_R`` is the number of split samples in the right child.\n\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\n        if ``sample_weight`` is passed.\n\n    max_samples : int or float in (0, .5], default .45,\n        The number of samples to use for each subsample that is used to train each tree:\n\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\n          from all the samples.\n\n    min_balancedness_tol: float in [0, .5], default .45\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\n        to be valid, this has to be any positive constant bounded away from zero.\n\n    honest : bool, default True\n        Whether to use honest trees, i.e. half of the samples are used for\n        creating the tree structure and the other half for the estimation at\n        the leafs. If False, then all samples are used for both parts.\n\n    subforest_size : int, default 4,\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\n\n    n_jobs : int or None, default -1\n        The number of jobs to run in parallel for both `fit` and `predict`.\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    verbose : int, default 0\n        Controls the verbosity when fitting and predicting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply model_propensity and\n        model_regression that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_regression=\"auto\",\n                 model_propensity=\"auto\",\n                 discrete_outcome=False,\n                 featurizer=None,\n                 min_propensity=1e-6,\n                 trimming_threshold=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 n_estimators=1000,\n                 max_depth=None,\n                 min_samples_split=5,\n                 min_samples_leaf=5,\n                 min_weight_fraction_leaf=0.,\n                 max_features=\"auto\",\n                 min_impurity_decrease=0.,\n                 max_samples=.45,\n                 min_balancedness_tol=.45,\n                 honest=True,\n                 subforest_size=4,\n                 n_jobs=-1,\n                 verbose=0,\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.n_estimators = n_estimators\n        self.max_depth = max_depth\n        self.min_samples_split = min_samples_split\n        self.min_samples_leaf = min_samples_leaf\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\n        self.max_features = max_features\n        self.min_impurity_decrease = min_impurity_decrease\n        self.max_samples = max_samples\n        self.min_balancedness_tol = min_balancedness_tol\n        self.honest = honest\n        self.subforest_size = subforest_size\n        self.n_jobs = n_jobs\n        self.verbose = verbose\n        super().__init__(model_regression=model_regression,\n                         model_propensity=model_propensity,\n                         model_final=None,\n                         discrete_outcome=discrete_outcome,\n                         featurizer=featurizer,\n                         multitask_model_final=False,\n                         min_propensity=min_propensity,\n                         trimming_threshold=trimming_threshold,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_model_final(self):\n        return RegressionForest(n_estimators=self.n_estimators,\n                                max_depth=self.max_depth,\n                                min_samples_split=self.min_samples_split,\n                                min_samples_leaf=self.min_samples_leaf,\n                                min_weight_fraction_leaf=self.min_weight_fraction_leaf,\n                                max_features=self.max_features,\n                                min_impurity_decrease=self.min_impurity_decrease,\n                                max_samples=self.max_samples,\n                                min_balancedness_tol=self.min_balancedness_tol,\n                                honest=self.honest,\n                                inference=True,\n                                subforest_size=self.subforest_size,\n                                n_jobs=self.n_jobs,\n                                random_state=self.random_state,\n                                verbose=self.verbose,\n                                warm_start=False)\n\n    def _gen_ortho_learner_model_final(self):\n        return _ModelFinal(self._gen_model_final(), self._gen_featurizer(), False, self.trimming_threshold)\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·,·,·), ∂τ(·,·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n × dₜ) matrix or vector of length n\n            Treatments for each sample\n        X:  (n × dₓ) matrix, optional\n            Features for each sample\n        W:  (n × d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, `Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'blb'\n            (for Bootstrap-of-Little-Bags based inference)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        if X is None:\n            raise ValueError(\"This estimator does not support X=None!\")\n\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    def multitask_model_cate(self):\n        # Replacing to remove docstring\n        super().multitask_model_cate()\n\n    @property\n    def multitask_model_final(self):\n        return False\n\n    @multitask_model_final.setter\n    def multitask_model_final(self, value):\n        if value:\n            raise ValueError(\"Parameter `multitask_model_final` cannot change from `False` for this estimator!\")\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n"
  },
  {
    "path": "econml/federated_learning.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom sklearn import clone\r\n\r\nfrom econml.utilities import check_input_arrays\r\nfrom ._cate_estimator import (LinearCateEstimator, TreatmentExpansionMixin,\r\n                              StatsModelsCateEstimatorMixin, StatsModelsCateEstimatorDiscreteMixin)\r\nfrom .dml import LinearDML\r\nfrom .inference import StatsModelsInference, StatsModelsInferenceDiscrete\r\nfrom .sklearn_extensions.linear_model import StatsModelsLinearRegression\r\nfrom typing import List\r\n\r\n# TODO: This could be extended to also work with our sparse and 2SLS estimators,\r\n#       if we add an aggregate method to them\r\n#       Remember to update the docs if this changes\r\n\r\n\r\nclass FederatedEstimator(TreatmentExpansionMixin, LinearCateEstimator):\r\n    \"\"\"\r\n    A class for federated learning using LinearDML, LinearDRIV, and LinearDRLearner estimators.\r\n\r\n    Parameters\r\n    ----------\r\n    estimators : list of LinearDML, LinearDRIV, or LinearDRLearner\r\n        List of estimators to aggregate (all of the same type), which must already have\r\n        been fit.\r\n    \"\"\"\r\n\r\n    def __init__(self, estimators: List[LinearDML]):\r\n        self.estimators = estimators\r\n        dummy_est = clone(self.estimators[0], safe=False)  # used to extract various attributes later\r\n        infs = [est._inference for est in self.estimators]\r\n        assert (\r\n            all(isinstance(inf, StatsModelsInference) for inf in infs) or\r\n            all(isinstance(inf, StatsModelsInferenceDiscrete) for inf in infs)\r\n        ), \"All estimators must use either StatsModelsInference or StatsModelsInferenceDiscrete\"\r\n        cov_types = set(inf.cov_type for inf in infs)\r\n        assert len(cov_types) == 1, f\"All estimators must use the same covariance type, got {cov_types}\"\r\n        if isinstance(infs[0], StatsModelsInference):\r\n            inf = StatsModelsInference(cov_type=cov_types.pop())\r\n            cate_est_type = StatsModelsCateEstimatorMixin\r\n            self.model_final_ = StatsModelsLinearRegression.aggregate([est.model_final_ for est in self.estimators])\r\n            inf.model_final = self.model_final_\r\n            inf.bias_part_of_coef = dummy_est.bias_part_of_coef\r\n        else:\r\n            inf = StatsModelsInferenceDiscrete(cov_type=cov_types.pop())\r\n            cate_est_type = StatsModelsCateEstimatorDiscreteMixin\r\n            self.fitted_models_final = [\r\n                StatsModelsLinearRegression.aggregate(models)\r\n                for models in zip(*[est.fitted_models_final for est in self.estimators])]\r\n            inf.fitted_models_final = self.fitted_models_final\r\n\r\n        # mix in the appropriate inference class\r\n        self.__class__ = type(\"FederatedEstimator\", (FederatedEstimator, cate_est_type), {})\r\n\r\n        # assign all of the attributes from the dummy estimator that would normally be assigned during fitting\r\n        # TODO: This seems hacky; is there a better abstraction to maintain these?\r\n        #       This should also include bias_part_of_coef, model_final_, and fitted_models_final above\r\n        inf.featurizer = dummy_est.featurizer_ if hasattr(dummy_est, 'featurizer_') else None\r\n        inf._est = self\r\n        self._d_t = inf._d_t = dummy_est._d_t\r\n        self._d_y = inf._d_y = dummy_est._d_y\r\n        self.d_t = inf.d_t = inf._d_t[0] if inf._d_t else 1\r\n        self.d_y = inf.d_y = inf._d_y[0] if inf._d_y else 1\r\n        self._d_t_in = inf._d_t_in = dummy_est._d_t_in\r\n        self.fit_cate_intercept_ = inf.fit_cate_intercept = dummy_est.fit_cate_intercept\r\n        self._inference = inf\r\n\r\n        # Assign treatment expansion attributes\r\n        self.transformer = dummy_est.transformer\r\n\r\n        self._allowed_missing_vars = dummy_est._gen_allowed_missing_vars()\r\n\r\n    def _gen_allowed_missing_vars(self):\r\n        \"\"\"Generate the allowed missing variables for the federated estimator.\"\"\"\r\n        return self._allowed_missing_vars\r\n\r\n    # Methods needed to implement the LinearCateEstimator interface\r\n\r\n    def const_marginal_effect(self, X=None):\r\n        X, = check_input_arrays(X)\r\n        return self._inference.const_marginal_effect_inference(X).point_estimate\r\n\r\n    def fit(self, *args, **kwargs):\r\n        \"\"\"Do not call this method; it is included only for compatibility with the CATE estimation APIs.\"\"\"\r\n        raise NotImplementedError(\"FederatedEstimator does not support fit\")\r\n\r\n    # Methods needed to implement the LinearFinalModelCateEstimatorMixin\r\n    def bias_part_of_coef(self):\r\n        return self._inference.bias_part_of_coef\r\n"
  },
  {
    "path": "econml/grf/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"\r\nAn efficient Cython implementation of Generalized Random Forests [grf]_ and special case python classes.\r\n\r\nReferences\r\n----------\r\n.. [grf] Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\r\n    The Annals of Statistics 47.2 (2019): 1148-1178\r\n    https://arxiv.org/pdf/1610.01271.pdf\r\n\"\"\"\r\n\r\nfrom ._criterion import LinearMomentGRFCriterion, LinearMomentGRFCriterionMSE\r\nfrom .classes import CausalForest, CausalIVForest, RegressionForest, MultiOutputGRF\r\n\r\n__all__ = [\"CausalForest\",\r\n           \"CausalIVForest\",\r\n           \"RegressionForest\",\r\n           \"MultiOutputGRF\",\r\n           \"LinearMomentGRFCriterion\",\r\n           \"LinearMomentGRFCriterionMSE\"]\r\n"
  },
  {
    "path": "econml/grf/_base_grf.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code contains snippets of code from\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/ensemble/_forest.py\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nimport numbers\r\nfrom warnings import warn\r\nfrom abc import ABCMeta, abstractmethod\r\nimport numpy as np\r\nimport threading\r\nfrom .._ensemble import (BaseEnsemble, _partition_estimators, _get_n_samples_subsample,\r\n                         _accumulate_prediction, _accumulate_prediction_and_var,\r\n                         _accumulate_oob_preds)\r\nfrom ..utilities import check_inputs\r\nfrom ..tree._tree import DTYPE, DOUBLE\r\nfrom ._base_grftree import GRFTree\r\nfrom joblib import Parallel, delayed\r\nfrom scipy.sparse import hstack as sparse_hstack\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.utils.validation import _check_sample_weight, check_is_fitted\r\nfrom sklearn.utils import check_X_y\r\nimport scipy.stats\r\nfrom scipy.special import erfc\r\n\r\n__all__ = [\"BaseGRF\"]\r\n\r\nMAX_INT = np.iinfo(np.int32).max\r\n\r\n# =============================================================================\r\n# Base Generalized Random Forest\r\n# =============================================================================\r\n\r\n\r\nclass BaseGRF(BaseEnsemble, metaclass=ABCMeta):\r\n    \"\"\"\r\n    Base class for Genearlized Random Forests.\r\n\r\n    Solves a linear moment equations of the form::\r\n\r\n        E[J * theta(x) - A | X = x] = 0\r\n\r\n    where J is an (d, d) random matrix, A is an (d, 1) random vector and theta(x)\r\n    is a local parameter to be estimated, which might contain both relevant and\r\n    nuisance parameters.\r\n\r\n    Warning: This class should not be used directly. Use derived classes\r\n    instead.\r\n    \"\"\"\r\n\r\n    def __init__(self,\r\n                 n_estimators=100, *,\r\n                 criterion=\"mse\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 min_var_fraction_leaf=None,\r\n                 min_var_leaf_on_val=False,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.45,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 inference=True,\r\n                 fit_intercept=True,\r\n                 subforest_size=4,\r\n                 n_jobs=-1,\r\n                 random_state=None,\r\n                 verbose=0,\r\n                 warm_start=False):\r\n        super().__init__(\r\n            base_estimator=GRFTree(),\r\n            n_estimators=n_estimators,\r\n            estimator_params=(\"criterion\", \"max_depth\", \"min_samples_split\",\r\n                              \"min_samples_leaf\", \"min_weight_fraction_leaf\",\r\n                              \"min_var_leaf\", \"min_var_leaf_on_val\",\r\n                              \"max_features\", \"min_impurity_decrease\", \"honest\",\r\n                              \"min_balancedness_tol\",\r\n                              \"random_state\"))\r\n\r\n        self.criterion = criterion\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.min_var_fraction_leaf = min_var_fraction_leaf\r\n        self.min_var_leaf_on_val = min_var_leaf_on_val\r\n        self.max_features = max_features\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n        self.inference = inference\r\n        self.fit_intercept = fit_intercept\r\n        self.subforest_size = subforest_size\r\n        self.n_jobs = n_jobs\r\n        self.random_state = random_state\r\n        self.verbose = verbose\r\n        self.warm_start = warm_start\r\n        self.max_samples = max_samples\r\n\r\n    @abstractmethod\r\n    def _get_alpha_and_pointJ(self, X, T, y, **kwargs):\r\n        \"\"\"\r\n        Get the point-wise alpha and jacobian random variables.\r\n\r\n        This function must be implemented by child class and given input variables\r\n        X, T, y and any auxiliary variables passed as keyword only, should be calculating\r\n        the point-wise random vector A and the point-wise jacobian random variable J of\r\n        the linear moment equation for every sample in the input samples.\r\n\r\n        Returns\r\n        -------\r\n        A : array of shape (n_samples, n_outputs)\r\n            The A part of the moment equation for each sample\r\n        J : array of shape (n_samples, n_outputs * n_outputs)\r\n            The J matrix part of the moment equation, flattened in Fortran-contiguous format.\r\n        \"\"\"\r\n        raise NotImplementedError(\"Abstract method\")\r\n\r\n    @abstractmethod\r\n    def _get_n_outputs_decomposition(self, X, T, y, **kwargs):\r\n        \"\"\"\r\n        Get the number of outputs and the number of relevant outputs.\r\n\r\n        This function must be implemented by child class and given input variables\r\n        X, T, y and any auxiliary variables passed as keyword only, should return a tuple\r\n        (n_outputs, n_relevant_outputs), which determines how many parameters is the moment\r\n        estimating and what prefix of these parameters are the relevant ones that we care about.\r\n\r\n        Returns\r\n        -------\r\n        n_outputs : int\r\n            The number of parameters we are estimating\r\n        n_relevant_outputs : int\r\n            The length of the prefix of parameters that we care about (remainder are nuisance)\r\n        \"\"\"\r\n        raise NotImplementedError(\"Abstract method\")\r\n\r\n    def apply(self, X):\r\n        \"\"\"\r\n        Apply trees in the forest to X, return leaf indices.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        X_leaves : ndarray of shape (n_samples, n_estimators)\r\n            For each datapoint x in X and for each tree in the forest,\r\n            return the index of the leaf x ends up in.\r\n        \"\"\"\r\n        X = self._validate_X_predict(X)\r\n        results = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend=\"threading\")(\r\n            delayed(tree.apply)(X, check_input=False)\r\n            for tree in self.estimators_)\r\n\r\n        return np.array(results).T\r\n\r\n    def decision_path(self, X):\r\n        \"\"\"\r\n        Return the decision path in the forest.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        indicator : sparse matrix of shape (n_samples, n_nodes)\r\n            Return a node indicator matrix where non zero elements indicates\r\n            that the samples goes through the nodes. The matrix is of CSR\r\n            format.\r\n        n_nodes_ptr : ndarray of shape (n_estimators + 1,)\r\n            The columns from indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]]\r\n            gives the indicator value for the i-th estimator.\r\n        \"\"\"\r\n        X = self._validate_X_predict(X)\r\n        indicators = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend='threading')(\r\n            delayed(tree.decision_path)(X, check_input=False)\r\n            for tree in self.estimators_)\r\n\r\n        n_nodes = [0]\r\n        n_nodes.extend([i.shape[1] for i in indicators])\r\n        n_nodes_ptr = np.array(n_nodes).cumsum()\r\n\r\n        return sparse_hstack(indicators).tocsr(), n_nodes_ptr\r\n\r\n    def fit(self, X, T, y, *, sample_weight=None, **kwargs):\r\n        \"\"\"\r\n        Build a forest of trees from the training set (X, T, y) and any other auxiliary variables.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples. Internally, its dtype will be converted\r\n            to ``dtype=np.float64``.\r\n        T : array_like of shape (n_samples, n_treatments)\r\n            The treatment vector for each sample\r\n        y : array_like of shape (n_samples,) or (n_samples, n_outcomes)\r\n            The outcome values for each sample.\r\n        sample_weight : array_like of shape (n_samples,), default None\r\n            Sample weights. If None, then samples are equally weighted. Splits\r\n            that would create child nodes with net zero or negative weight are\r\n            ignored while searching for a split in each node.\r\n        **kwargs : dictionary of array_like items of shape (n_samples, d_var)\r\n            Auxiliary random variables that go into the moment function (e.g. instrument, censoring etc)\r\n            Any of these variables will be passed on as is to the `get_pointJ` and\r\n            `get_alpha` method of the children classes.\r\n\r\n        Returns\r\n        -------\r\n        self : object\r\n        \"\"\"\r\n        # TODO: support freq_weight and sample_var\r\n        y, T, X, _ = check_inputs(y, T, X, W=None, multi_output_T=True, multi_output_Y=True)\r\n\r\n        if sample_weight is not None:\r\n            sample_weight = _check_sample_weight(sample_weight, X, dtype=DOUBLE)\r\n\r\n        # Remap output\r\n        n_samples, self.n_features_ = X.shape\r\n\r\n        y = np.atleast_1d(y)\r\n        if y.ndim == 1:\r\n            # reshape is necessary to preserve the data contiguity against vs\r\n            # [:, np.newaxis] that does not.\r\n            y = np.reshape(y, (-1, 1))\r\n\r\n        self.n_y_ = y.shape[1]\r\n\r\n        T = np.atleast_1d(T)\r\n        if T.ndim == 1:\r\n            # reshape is necessary to preserve the data contiguity against vs\r\n            # [:, np.newaxis] that does not.\r\n            T = np.reshape(T, (-1, 1))\r\n\r\n        alpha, pointJ = self._get_alpha_and_pointJ(X, T, y, **kwargs)\r\n        self.n_outputs_, self.n_relevant_outputs_ = self._get_n_outputs_decomposition(X, T, y, **kwargs)\r\n        yaug = np.hstack([y, alpha, pointJ])\r\n\r\n        if getattr(yaug, \"dtype\", None) != DOUBLE or not yaug.flags.contiguous:\r\n            yaug = np.ascontiguousarray(yaug, dtype=DOUBLE)\r\n\r\n        if getattr(X, \"dtype\", None) != DTYPE:\r\n            X = X.astype(DTYPE)\r\n\r\n        # Get subsample sample size\r\n        n_samples_subsample = _get_n_samples_subsample(\r\n            n_samples=n_samples,\r\n            max_samples=self.max_samples\r\n        )\r\n\r\n        # Converting `min_var_fraction_leaf` to an absolute `min_var_leaf` that the GRFTree can handle\r\n        if self.min_var_fraction_leaf is None:\r\n            self.min_var_leaf = None\r\n        elif (not isinstance(self.min_var_fraction_leaf, numbers.Real)) or (not (0 < self.min_var_fraction_leaf <= 1)):\r\n            msg = \"`min_var_fraction_leaf` must be in range (0, 1) but got value {}\"\r\n            raise ValueError(msg.format(self.min_var_fraction_leaf))\r\n        else:\r\n            # We calculate the min eigenvalue proxy that each criterion is considering\r\n            # on the overall mean jacobian, to determine the absolute level of `min_var_leaf`\r\n            jac = np.mean(pointJ, axis=0).reshape((self.n_outputs_, self.n_outputs_))\r\n            min_var = np.min(np.abs(np.diag(jac)))\r\n            if self.criterion == 'mse':\r\n                for i in range(self.n_outputs_):\r\n                    for j in range(self.n_outputs_):\r\n                        if j != i:\r\n                            det = np.sqrt(np.abs(jac[i, i] * jac[j, j] - jac[i, j] * jac[j, i]))\r\n                            if det < min_var:\r\n                                min_var = det\r\n            self.min_var_leaf = min_var * self.min_var_fraction_leaf\r\n\r\n        # Check parameters\r\n        self._validate_estimator()\r\n\r\n        random_state = check_random_state(self.random_state)\r\n        # We re-initialize the subsample_random_seed_ only if we are not in warm_start mode or\r\n        # if this is the first `fit` call of the warm start mode.\r\n        if (not self.warm_start) or (not hasattr(self, 'subsample_random_seed_')):\r\n            self.subsample_random_seed_ = random_state.randint(MAX_INT)\r\n        else:\r\n            random_state.randint(MAX_INT)  # just advance random_state\r\n        subsample_random_state = check_random_state(self.subsample_random_seed_)\r\n\r\n        if (self.warm_start and hasattr(self, 'inference_') and (self.inference != self.inference_)):\r\n            raise ValueError(\"Parameter inference cannot be altered in between `fit` \"\r\n                             \"calls when `warm_start=True`.\")\r\n        self.inference_ = self.inference\r\n        self.warm_start_ = self.warm_start\r\n\r\n        if not self.warm_start or not hasattr(self, \"estimators_\"):\r\n            # Free allocated memory, if any\r\n            self.estimators_ = []\r\n            self.slices_ = []\r\n            # the below are needed to replicate randomness of subsampling when warm_start=True\r\n            self.slices_n_samples_ = []\r\n            self.slices_n_samples_subsample_ = []\r\n            self.n_samples_ = []\r\n            self.n_samples_subsample_ = []\r\n\r\n        n_more_estimators = self.n_estimators - len(self.estimators_)\r\n\r\n        if n_more_estimators < 0:\r\n            raise ValueError('n_estimators=%d must be larger or equal to '\r\n                             'len(estimators_)=%d when warm_start==True'\r\n                             % (self.n_estimators, len(self.estimators_)))\r\n\r\n        elif n_more_estimators == 0:\r\n            warn(\"Warm-start fitting without increasing n_estimators does not \"\r\n                 \"fit new trees.\")\r\n        else:\r\n            if self.inference:\r\n                if not isinstance(self.subforest_size, numbers.Integral):\r\n                    raise ValueError(\"Parameter `subforest_size` must be \"\r\n                                     \"an integer but got value {}.\".format(self.subforest_size))\r\n                if self.subforest_size < 2:\r\n                    raise ValueError(\"Parameter `subforest_size` must be at least 2 if `inference=True`, \"\r\n                                     \"but got value {}\".format(self.subforest_size))\r\n                if not (n_more_estimators % self.subforest_size == 0):\r\n                    raise ValueError(\"The number of estimators to be constructed must be divisible \"\r\n                                     \"the `subforest_size` parameter. Asked to build `n_estimators={}` \"\r\n                                     \"with `subforest_size={}`.\".format(n_more_estimators, self.subforest_size))\r\n                if n_samples_subsample > n_samples // 2:\r\n                    if isinstance(self.max_samples, numbers.Integral):\r\n                        raise ValueError(\"Parameter `max_samples` must be in [1, n_samples // 2], \"\r\n                                         \"if `inference=True`. \"\r\n                                         \"Got values n_samples={}, max_samples={}\".format(n_samples, self.max_samples))\r\n                    else:\r\n                        raise ValueError(\"Parameter `max_samples` must be in (0, .5], if `inference=True`. \"\r\n                                         \"Got value {}\".format(self.max_samples))\r\n\r\n            if self.warm_start and len(self.estimators_) > 0:\r\n                # We draw from the random state to get the random state we\r\n                # would have got if we hadn't used a warm_start.\r\n                random_state.randint(MAX_INT, size=len(self.estimators_))\r\n\r\n            trees = [self._make_estimator(append=False,\r\n                                          random_state=random_state).init()\r\n                     for i in range(n_more_estimators)]\r\n\r\n            if self.inference:\r\n                if self.warm_start:\r\n                    # Advancing subsample_random_state. Assumes each prior fit call has the same number of\r\n                    # samples at fit time. If not then this would not exactly replicate a single batch execution,\r\n                    # but would still advance randomness enough so that tree subsamples will be different.\r\n                    for sl, n_, ns_ in zip(self.slices_, self.slices_n_samples_, self.slices_n_samples_subsample_):\r\n                        subsample_random_state.choice(n_, n_ // 2, replace=False)\r\n                        for _ in range(len(sl)):\r\n                            subsample_random_state.choice(n_ // 2, ns_, replace=False)\r\n\r\n                # Generating indices a priori before parallelism ended up being orders of magnitude\r\n                # faster than how sklearn does it. The reason is that random samplers do not release the\r\n                # gil it seems.\r\n                n_groups = n_more_estimators // self.subforest_size\r\n                new_slices = np.array_split(np.arange(len(self.estimators_),\r\n                                                      len(self.estimators_) + n_more_estimators),\r\n                                            n_groups)\r\n                s_inds = []\r\n                for sl in new_slices:\r\n                    half_sample_inds = subsample_random_state.choice(n_samples, n_samples // 2, replace=False)\r\n                    s_inds.extend([half_sample_inds[subsample_random_state.choice(n_samples // 2,\r\n                                                                                  n_samples_subsample,\r\n                                                                                  replace=False)]\r\n                                   for _ in range(len(sl))])\r\n            else:\r\n                if self.warm_start:\r\n                    # Advancing subsample_random_state. Assumes each prior fit call has the same number of\r\n                    # samples at fit time. If not then this would not exactly replicate a single batch execution,\r\n                    # but would still advance randomness enough so that tree subsamples will be different.\r\n                    for _, n_, ns_ in zip(range(len(self.estimators_)), self.n_samples_, self.n_samples_subsample_):\r\n                        subsample_random_state.choice(n_, ns_, replace=False)\r\n                new_slices = []\r\n                s_inds = [subsample_random_state.choice(n_samples, n_samples_subsample, replace=False)\r\n                          for _ in range(n_more_estimators)]\r\n\r\n            # Parallel loop: we prefer the threading backend as the Cython code\r\n            # for fitting the trees is internally releasing the Python GIL\r\n            # making threading more efficient than multiprocessing in\r\n            # that case. However, for joblib 0.12+ we respect any\r\n            # parallel_backend contexts set at a higher level,\r\n            # since correctness does not rely on using threads.\r\n            trees = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend='threading')(\r\n                delayed(t.fit)(X[s], yaug[s], self.n_y_, self.n_outputs_, self.n_relevant_outputs_,\r\n                               sample_weight=sample_weight[s] if sample_weight is not None else None,\r\n                               check_input=False)\r\n                for t, s in zip(trees, s_inds))\r\n\r\n            # Collect newly grown trees\r\n            self.estimators_.extend(trees)\r\n            self.n_samples_.extend([n_samples] * len(trees))\r\n            self.n_samples_subsample_.extend([n_samples_subsample] * len(trees))\r\n            self.slices_.extend(list(new_slices))\r\n            self.slices_n_samples_.extend([n_samples] * len(new_slices))\r\n            self.slices_n_samples_subsample_.extend([n_samples_subsample] * len(new_slices))\r\n\r\n        return self\r\n\r\n    def get_subsample_inds(self,):\r\n        \"\"\"Re-generate the example same sample indices as those at fit time using same pseudo-randomness.\"\"\"\r\n        check_is_fitted(self)\r\n        subsample_random_state = check_random_state(self.subsample_random_seed_)\r\n        if self.inference_:\r\n            s_inds = []\r\n            for sl, n_, ns_ in zip(self.slices_, self.slices_n_samples_, self.slices_n_samples_subsample_):\r\n                half_sample_inds = subsample_random_state.choice(n_, n_ // 2, replace=False)\r\n                s_inds.extend([half_sample_inds[subsample_random_state.choice(n_ // 2, ns_, replace=False)]\r\n                               for _ in range(len(sl))])\r\n            return s_inds\r\n        else:\r\n            return [subsample_random_state.choice(n_, ns_, replace=False)\r\n                    for n_, ns_ in zip(self.n_samples_, self.n_samples_subsample_)]\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        \"\"\"\r\n        Get feature importances based on the amount of parameter heterogeneity they create.\r\n\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. For each tree and for each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n        These importances are normalized at the tree level and then averaged across trees.\r\n\r\n        Parameters\r\n        ----------\r\n        max_depth : int, default 4\r\n            Splits of depth larger than `max_depth` are not used in this calculation\r\n        depth_decay_exponent: double, default 2.0\r\n            The contribution of each split to the total score is re-weighted by 1 / (1 + `depth`)**2.0.\r\n\r\n        Returns\r\n        -------\r\n        feature_importances_ : ndarray of shape (n_features,)\r\n            Normalized total parameter heterogeneity inducing importance of each feature\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n\r\n        all_importances = Parallel(n_jobs=self.n_jobs, backend='threading')(\r\n            delayed(tree.feature_importances)(\r\n                max_depth=max_depth, depth_decay_exponent=depth_decay_exponent)\r\n            for tree in self.estimators_ if tree.tree_.node_count > 1)\r\n\r\n        if not all_importances:\r\n            return np.zeros(self.n_features_, dtype=np.float64)\r\n\r\n        all_importances = np.mean(all_importances,\r\n                                  axis=0, dtype=np.float64)\r\n        return all_importances / np.sum(all_importances)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n    def _validate_X_predict(self, X):\r\n        \"\"\"Validate X whenever one tries to predict, apply, and other predict methods.\"\"\"\r\n        check_is_fitted(self)\r\n\r\n        return self.estimators_[0]._validate_X_predict(X, check_input=True)\r\n\r\n    def predict_tree_average_full(self, X):\r\n        \"\"\"\r\n        Return the fitted local parameters for each X, i.e. theta(X).\r\n\r\n        This method simply returns the average of the parameters estimated by each tree. `predict_full`\r\n        should be preferred over `pred_tree_average_full`, as it performs a more stable averaging across\r\n        trees.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        theta(X) : array_like of shape (n_samples, n_outputs)\r\n            The estimated relevant parameters for each row of X\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        # Check data\r\n        X = self._validate_X_predict(X)\r\n\r\n        # Assign chunk of trees to jobs\r\n        n_jobs, _, _ = _partition_estimators(self.n_estimators, self.n_jobs)\r\n\r\n        # avoid storing the output of every estimator by summing them here\r\n        y_hat = np.zeros((X.shape[0], self.n_outputs_), dtype=np.float64)\r\n\r\n        # Parallel loop\r\n        lock = threading.Lock()\r\n        Parallel(n_jobs=n_jobs, verbose=self.verbose, backend='threading', require=\"sharedmem\")(\r\n            delayed(_accumulate_prediction)(e.predict_full, X, [y_hat], lock)\r\n            for e in self.estimators_)\r\n\r\n        y_hat /= len(self.estimators_)\r\n\r\n        return y_hat\r\n\r\n    def predict_tree_average(self, X):\r\n        \"\"\"\r\n        Return the prefix of relevant fitted local parameters for each X, i.e. theta(X)[1..n_relevant_outputs].\r\n\r\n        This method simply returns the average of the parameters estimated by each tree. `predict`\r\n        should be preferred over `pred_tree_average`, as it performs a more stable averaging across\r\n        trees.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        theta(X)[1, .., n_relevant_outputs] : array_like of shape (n_samples, n_relevant_outputs)\r\n            The estimated relevant parameters for each row of X\r\n        \"\"\"\r\n        y_hat = self.predict_tree_average_full(X)\r\n        if self.n_relevant_outputs_ == self.n_outputs_:\r\n            return y_hat\r\n        return y_hat[:, :self.n_relevant_outputs_]\r\n\r\n    def predict_moment_and_var(self, X, parameter, slice=None, parallel=True):\r\n        \"\"\"\r\n        Return the value of the conditional expected moment vector and variance at each sample.\r\n\r\n        For the given parameter estimate for each sample::\r\n\r\n            M(x; theta(x)) := E[J | X=x] theta(x) - E[A | X=x]\r\n\r\n        where conditional expectations are estimated based on the forest weights, i.e.::\r\n\r\n            M_tree(x; theta(x)) := (1/ |leaf(x)|) sum_{val sample i in leaf(x)} w[i] (J[i] theta(x) - A[i])\r\n            M(x; theta(x) = (1/n_trees) sum_{trees} M_tree(x; theta(x))\r\n\r\n        where w[i] is the sample weight (1.0 if sample_weight is None), as well as the variance of the local\r\n        moment vector across trees::\r\n\r\n            Var(M_tree(x; theta(x))) = (1/n_trees) sum_{trees} M_tree(x; theta(x)) @ M_tree(x; theta(x)).T\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        parameter : array_like of shape (n_samples, n_outputs)\r\n            An estimate of the parameter theta(x) for each sample x in X\r\n        slice : list of int or None, default None\r\n            If not None, then only the trees with index in slice, will be used to calculate the mean\r\n            and the variance.\r\n        parallel : bool , default True\r\n            Whether the averaging should happen using parallelism or not. Parallelism adds some overhead\r\n            but makes it faster with many trees.\r\n\r\n        Returns\r\n        -------\r\n        moment : array_like of shape (n_samples, n_outputs)\r\n            The estimated conditional moment M(x; theta(x)) for each sample x in X\r\n        moment_var : array_like of shape (n_samples, n_outputs)\r\n            The variance of the conditional moment Var(M_tree(x; theta(x))) across trees for each sample x\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        # Check data\r\n        X = self._validate_X_predict(X)\r\n\r\n        # Assign chunk of trees to jobs\r\n        if slice is None:\r\n            slice = np.arange(len(self.estimators_))\r\n\r\n        moment_hat = np.zeros((X.shape[0], self.n_outputs_), dtype=np.float64)\r\n        moment_var_hat = np.zeros((X.shape[0], self.n_outputs_, self.n_outputs_), dtype=np.float64)\r\n        lock = threading.Lock()\r\n        if parallel:\r\n            n_jobs, _, _ = _partition_estimators(len(slice), self.n_jobs)\r\n            verbose = self.verbose\r\n            # Parallel loop\r\n            Parallel(n_jobs=n_jobs, verbose=verbose, backend='threading', require=\"sharedmem\")(\r\n                delayed(_accumulate_prediction_and_var)(self.estimators_[t].predict_moment, X,\r\n                                                        [moment_hat], [moment_var_hat], lock,\r\n                                                        parameter)\r\n                for t in slice)\r\n        else:\r\n            [_accumulate_prediction_and_var(self.estimators_[t].predict_moment, X,\r\n                                            [moment_hat], [moment_var_hat], lock,\r\n                                            parameter)\r\n             for t in slice]\r\n\r\n        moment_hat /= len(slice)\r\n        moment_var_hat /= len(slice)\r\n\r\n        return moment_hat, moment_var_hat\r\n\r\n    def predict_alpha_and_jac(self, X, slice=None, parallel=True):\r\n        \"\"\"\r\n        Get the predicted alpha and jacobian values.\r\n\r\n        The value of the conditional jacobian E[J | X=x] and the conditional alpha E[A | X=x]\r\n        use the forest as kernel weights, i.e.::\r\n\r\n            alpha(x) = (1/n_trees) sum_{trees} (1/ |leaf(x)|) sum_{val sample i in leaf(x)} w[i] A[i]\r\n            jac(x) = (1/n_trees) sum_{trees} (1/ |leaf(x)|) sum_{val sample i in leaf(x)} w[i] J[i]\r\n\r\n        where w[i] is the sample weight (1.0 if sample_weight is None).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        slice : list of int or None, default None\r\n            If not None, then only the trees with index in slice, will be used to calculate the mean\r\n            and the variance.\r\n        parallel : bool , default True\r\n            Whether the averaging should happen using parallelism or not. Parallelism adds some overhead\r\n            but makes it faster with many trees.\r\n\r\n        Returns\r\n        -------\r\n        alpha : array_like of shape (n_samples, n_outputs)\r\n            The estimated conditional A, alpha(x) for each sample x in X\r\n        jac : array_like of shape (n_samples, n_outputs, n_outputs)\r\n            The estimated conditional J, jac(x) for each sample x in X\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        # Check data\r\n        X = self._validate_X_predict(X)\r\n\r\n        # Assign chunk of trees to jobs\r\n        if slice is None:\r\n            slice = np.arange(len(self.estimators_))\r\n        n_jobs = 1\r\n        verbose = 0\r\n        if parallel:\r\n            n_jobs, _, _ = _partition_estimators(len(slice), self.n_jobs)\r\n            verbose = self.verbose\r\n\r\n        alpha_hat = np.zeros((X.shape[0], self.n_outputs_), dtype=np.float64)\r\n        jac_hat = np.zeros((X.shape[0], self.n_outputs_**2), dtype=np.float64)\r\n\r\n        # Parallel loop\r\n        lock = threading.Lock()\r\n        Parallel(n_jobs=n_jobs, verbose=verbose, backend='threading', require=\"sharedmem\")(\r\n            delayed(_accumulate_prediction)(self.estimators_[t].predict_alpha_and_jac, X, [alpha_hat, jac_hat], lock)\r\n            for t in slice)\r\n\r\n        alpha_hat /= len(slice)\r\n        jac_hat /= len(slice)\r\n\r\n        return alpha_hat, jac_hat.reshape((-1, self.n_outputs_, self.n_outputs_))\r\n\r\n    def _predict_point_and_var(self, X, full=False, point=True, var=False, project=False, projector=None):\r\n        \"\"\"\r\n        Coordinate all prediction functionality.\r\n\r\n        Tries to share\r\n        as much computation between different predict methods to avoid re-computation and re-spawining of\r\n        parallel executions.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        full : bool, default False\r\n            Whether to return the full estimated parameter or only the relevant part\r\n        point : bool, default True\r\n            Whether to return the point estimate theta(x)\r\n        var : bool, default False\r\n            Whether to return the co-variance of the point estimate V(theta(x))\r\n        project : bool, default False\r\n            Whether to project the point estimate using an inner product with a projector, and also\r\n            return the variance of the projection\r\n        projector : array_like of shape (n_samples, n_outputs)\r\n            The projection vector for each sample. The point estimate theta(x) for each sample will\r\n            be projected and return the inner produce <theta(x), projector(x)> for each sample x.\r\n            Also the variance information will be about the inner product as opposed to the parameter\r\n            theta(x).\r\n\r\n        Returns\r\n        -------\r\n        point : array_like of shape (n_samples, x)\r\n            The point estimate of the parameter theta(x) or its inner product with projector(x) for each\r\n            sample x in X.\r\n            If `point=False`, this return value is omitted. If `project=True`, then `x=1`. If `project=False`\r\n            and `full=True`, then `x=n_outputs`. If `project=False` and `full=False`, then `x=n_relevant_outputs`.\r\n        var : array_like of shape (n_samples, x, x) or (n_samples, 1)\r\n            The covariance of the parameter theta(x) or its inner product with projector(x) for each sample x in X.\r\n            If `var=False`, this return value is omitted. If `project=True`, then return is of shape (n_samples, 1).\r\n            If `project=False` and `full=True`, then `x=n_outputs`. If `project=False` and `full=False`,\r\n            then `x=n_relevant_outputs`.\r\n        \"\"\"\r\n        alpha, jac = self.predict_alpha_and_jac(X)\r\n        invjac = np.linalg.pinv(jac)\r\n        parameter = np.einsum('ijk,ik->ij', invjac, alpha)\r\n\r\n        if var:\r\n            if not self.inference:\r\n                raise AttributeError(\"Inference not available. Forest was initiated with `inference=False`.\")\r\n\r\n            slices = self.slices_\r\n            n_jobs, _, _ = _partition_estimators(len(slices), self.n_jobs)\r\n\r\n            moment_bags, moment_var_bags = zip(*Parallel(n_jobs=n_jobs, verbose=self.verbose, backend='threading')(\r\n                delayed(self.predict_moment_and_var)(X, parameter, slice=sl, parallel=False) for sl in slices))\r\n\r\n            moment = np.mean(moment_bags, axis=0)\r\n\r\n            trans_moment_bags = np.moveaxis(moment_bags, 0, -1)\r\n            sq_between = np.einsum('tij,tjk->tik', trans_moment_bags,\r\n                                   np.transpose(trans_moment_bags, (0, 2, 1))) / len(slices)\r\n            moment_sq = np.einsum('tij,tjk->tik',\r\n                                  moment.reshape(moment.shape + (1,)),\r\n                                  moment.reshape(moment.shape[:-1] + (1, moment.shape[-1])))\r\n            var_between = sq_between - moment_sq\r\n            pred_cov = np.einsum('ijk,ikm->ijm', invjac,\r\n                                 np.einsum('ijk,ikm->ijm', var_between, np.transpose(invjac, (0, 2, 1))))\r\n\r\n            if project:\r\n                pred_var = np.einsum('ijk,ikm->ijm', projector.reshape((-1, 1, projector.shape[1])),\r\n                                     np.einsum('ijk,ikm->ijm', pred_cov,\r\n                                               projector.reshape((-1, projector.shape[1], 1))))[:, 0, 0]\r\n            else:\r\n                pred_var = np.diagonal(pred_cov, axis1=1, axis2=2)\r\n\r\n            #####################\r\n            # Variance correction\r\n            #####################\r\n            # Subtract the average within bag variance. This ends up being equal to the\r\n            # overall (E_{all trees}[moment^2] - E_bags[ E[mean_bag_moment]^2 ]) / sizeof(bag).\r\n            # The negative part is just sq_between.\r\n            var_total = np.mean(moment_var_bags, axis=0)\r\n            correction = (var_total - sq_between) / (len(slices[0]) - 1)\r\n            pred_cov_correction = np.einsum('ijk,ikm->ijm', invjac,\r\n                                            np.einsum('ijk,ikm->ijm', correction, np.transpose(invjac, (0, 2, 1))))\r\n            if project:\r\n                pred_var_correction = np.einsum('ijk,ikm->ijm', projector.reshape((-1, 1, projector.shape[1])),\r\n                                                np.einsum('ijk,ikm->ijm', pred_cov_correction,\r\n                                                          projector.reshape((-1, projector.shape[1], 1))))[:, 0, 0]\r\n            else:\r\n                pred_var_correction = np.diagonal(pred_cov_correction, axis1=1, axis2=2)\r\n            # Objective bayes debiasing for the diagonals where we know a-prior they are positive\r\n            # The off diagonals we have no objective prior, so no correction is applied.\r\n            naive_estimate = pred_var - pred_var_correction\r\n            se = np.maximum(pred_var, pred_var_correction) * np.sqrt(2.0 / len(slices))\r\n            zstat = naive_estimate / np.clip(se, 1e-10, np.inf)\r\n            numerator = np.exp(- (zstat**2) / 2) / np.sqrt(2.0 * np.pi)\r\n            denominator = 0.5 * erfc(-zstat / np.sqrt(2.0))\r\n            pred_var_corrected = naive_estimate + se * numerator / denominator\r\n\r\n            # Finally correcting the pred_cov or pred_var\r\n            if project:\r\n                pred_var = pred_var_corrected\r\n            else:\r\n                pred_cov = pred_cov - pred_cov_correction\r\n                for t in range(self.n_outputs_):\r\n                    pred_cov[:, t, t] = pred_var_corrected[:, t]\r\n\r\n        if project:\r\n            if point:\r\n                pred = np.sum(parameter * projector, axis=1)\r\n                if var:\r\n                    return pred, pred_var\r\n                else:\r\n                    return pred\r\n            else:\r\n                return pred_var\r\n        else:\r\n            n_outputs = self.n_outputs_ if full else self.n_relevant_outputs_\r\n            if point and var:\r\n                return (parameter[:, :n_outputs],\r\n                        pred_cov[:, :n_outputs, :n_outputs],)\r\n            elif point:\r\n                return parameter[:, :n_outputs]\r\n            else:\r\n                return pred_cov[:, :n_outputs, :n_outputs]\r\n\r\n    def predict_full(self, X, interval=False, alpha=0.05):\r\n        \"\"\"Return the fitted local parameters for each x in X, i.e. theta(x).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        interval : bool, default False\r\n            Whether to return a confidence interval too\r\n        alpha : float in (0, 1), default 0.05\r\n            The confidence level of the confidence interval. Returns a symmetric (alpha/2, 1-alpha/2)\r\n            confidence interval.\r\n\r\n        Returns\r\n        -------\r\n        theta(x) : array_like of shape (n_samples, n_outputs)\r\n            The estimated relevant parameters for each row x of X\r\n        lb(x), ub(x) : array_like of shape (n_samples, n_outputs)\r\n            The lower and upper end of the confidence interval for each parameter. Return value is omitted if\r\n            `interval=False`.\r\n        \"\"\"\r\n        if interval:\r\n            point, pred_var = self._predict_point_and_var(X, full=True, point=True, var=True)\r\n            lb, ub = np.zeros(point.shape), np.zeros(point.shape)\r\n            for t in range(self.n_outputs_):\r\n                var = pred_var[:, t, t]\r\n                assert np.isclose(var[var < 0], 0, atol=1e-8).all(), f'`pred_var` must be > 0 {var[var < 0]}'\r\n                var = np.maximum(var, 1e-32)\r\n\r\n                pred_dist = scipy.stats.norm(loc=point[:, t], scale=np.sqrt(var))\r\n                lb[:, t] = pred_dist.ppf(alpha / 2)\r\n                ub[:, t] = pred_dist.ppf(1 - (alpha / 2))\r\n            return point, lb, ub\r\n        return self._predict_point_and_var(X, full=True, point=True, var=False)\r\n\r\n    def predict(self, X, interval=False, alpha=0.05):\r\n        \"\"\"\r\n        Return the prefix of relevant fitted local parameters for each x in X, i.e. theta(x)[1..n_relevant_outputs].\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        interval : bool, default False\r\n            Whether to return a confidence interval too\r\n        alpha : float in (0, 1), default 0.05\r\n            The confidence level of the confidence interval. Returns a symmetric (alpha/2, 1-alpha/2)\r\n            confidence interval.\r\n\r\n        Returns\r\n        -------\r\n        theta(X)[1, .., n_relevant_outputs] : array_like of shape (n_samples, n_relevant_outputs)\r\n            The estimated relevant parameters for each row of X\r\n        lb(x), ub(x) : array_like of shape (n_samples, n_relevant_outputs)\r\n            The lower and upper end of the confidence interval for each parameter. Return value is omitted if\r\n            `interval=False`.\r\n        \"\"\"\r\n        if interval:\r\n            y_hat, lb, ub = self.predict_full(X, interval=interval, alpha=alpha)\r\n            if self.n_relevant_outputs_ == self.n_outputs_:\r\n                return y_hat, lb, ub\r\n            return (y_hat[:, :self.n_relevant_outputs_],\r\n                    lb[:, :self.n_relevant_outputs_], ub[:, :self.n_relevant_outputs_])\r\n        else:\r\n            y_hat = self.predict_full(X, interval=False)\r\n            if self.n_relevant_outputs_ == self.n_outputs_:\r\n                return y_hat\r\n            return y_hat[:, :self.n_relevant_outputs_]\r\n\r\n    def predict_interval(self, X, alpha=0.05):\r\n        \"\"\"\r\n        Return the confidence interval for the relevant fitted local parameters for each x in X.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        alpha : float in (0, 1), default 0.05\r\n            The confidence level of the confidence interval. Returns a symmetric (alpha/2, 1-alpha/2)\r\n            confidence interval.\r\n\r\n        Returns\r\n        -------\r\n        lb(x), ub(x) : array_like of shape (n_samples, n_relevant_outputs)\r\n            The lower and upper end of the confidence interval for each parameter. Return value is omitted if\r\n            `interval=False`.\r\n        \"\"\"\r\n        _, lb, ub = self.predict(X, interval=True, alpha=alpha)\r\n        return lb, ub\r\n\r\n    def predict_and_var(self, X):\r\n        \"\"\"\r\n        Return the prefix of relevant fitted local parameters and their covariance matrix for each x in X.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        theta(x)[1, .., n_relevant_outputs] : array_like of shape (n_samples, n_relevant_outputs)\r\n            The estimated relevant parameters for each row of X\r\n        var(theta(x)) : array_like of shape (n_samples, n_relevant_outputs, n_relevant_outputs)\r\n            The covariance of theta(x)[1, .., n_relevant_outputs]\r\n        \"\"\"\r\n        return self._predict_point_and_var(X, full=False, point=True, var=True)\r\n\r\n    def predict_var(self, X):\r\n        \"\"\"\r\n        Return the covariance matrix of the prefix of relevant fitted local parameters for each x in X.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        var(theta(x)) : array_like of shape (n_samples, n_relevant_outputs, n_relevant_outputs)\r\n            The covariance of theta(x)[1, .., n_relevant_outputs]\r\n        \"\"\"\r\n        return self._predict_point_and_var(X, full=False, point=False, var=True)\r\n\r\n    def prediction_stderr(self, X):\r\n        \"\"\"\r\n        Return the standard deviation of each coordinate of the prefix of relevant fitted local parameters.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        std(theta(x)) : array_like of shape (n_samples, n_relevant_outputs)\r\n            The standard deviation of each theta(x)[i] for i in {1, .., n_relevant_outputs}\r\n        \"\"\"\r\n        return np.sqrt(np.diagonal(self.predict_var(X), axis1=1, axis2=2))\r\n\r\n    def _check_projector(self, X, projector):\r\n        \"\"\"Validate the projector parameter.\"\"\"\r\n        X, projector = check_X_y(X, projector, multi_output=True, y_numeric=True)\r\n        if projector.ndim == 1:\r\n            projector = projector.reshape((-1, 1))\r\n        if self.n_outputs_ > self.n_relevant_outputs_:\r\n            projector = np.hstack([projector,\r\n                                   np.zeros((projector.shape[0], self.n_outputs_ - self.n_relevant_outputs_))])\r\n        return X, projector\r\n\r\n    def predict_projection_and_var(self, X, projector):\r\n        \"\"\"\r\n        Return the product of the prefix of relevant fitted local parameters with a projector vector, and its variance.\r\n\r\n        That is::\r\n\r\n            mu(x) := <theta(x)[1..n_relevant_outputs], projector(x)>\r\n\r\n        as well as the variance of mu(x).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        projector : array_like of shape (n_samples, n_relevant_outputs)\r\n            The projector vector for each sample x in X\r\n\r\n        Returns\r\n        -------\r\n        mu(x) : array_like of shape (n_samples, 1)\r\n            The estimated inner product of the relevant parameters with the projector for each row x of X\r\n        var(mu(x)) : array_like of shape (n_samples, 1)\r\n            The variance of the estimated inner product\r\n        \"\"\"\r\n        X, projector = self._check_projector(X, projector)\r\n        return self._predict_point_and_var(X, full=False, point=True, var=True,\r\n                                           project=True, projector=projector)\r\n\r\n    def predict_projection(self, X, projector):\r\n        \"\"\"\r\n        Return the product of the prefix of relevant fitted local parameters with a projector vector.\r\n\r\n        That is::\r\n\r\n            mu(x) := <theta(x)[1..n_relevant_outputs], projector(x)>\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        projector : array_like of shape (n_samples, n_relevant_outputs)\r\n            The projector vector for each sample x in X\r\n\r\n        Returns\r\n        -------\r\n        mu(x) : array_like of shape (n_samples, 1)\r\n            The estimated inner product of the relevant parameters with the projector for each row x of X\r\n        \"\"\"\r\n        X, projector = self._check_projector(X, projector)\r\n        return self._predict_point_and_var(X, full=False, point=True, var=False,\r\n                                           project=True, projector=projector)\r\n\r\n    def predict_projection_var(self, X, projector):\r\n        \"\"\"\r\n        Return the variance of the product of the prefix of relevant fitted local parameters with a projector vector.\r\n\r\n        That is::\r\n\r\n            Var(mu(x)) for mu(x) := <theta(x)[1..n_relevant_outputs], projector(x)>\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        projector : array_like of shape (n_samples, n_relevant_outputs)\r\n            The projector vector for each sample x in X\r\n\r\n        Returns\r\n        -------\r\n        var(mu(x)) : array_like of shape (n_samples, 1)\r\n            The variance of the estimated inner product\r\n        \"\"\"\r\n        X, projector = self._check_projector(X, projector)\r\n        return self._predict_point_and_var(X, full=False, point=False, var=True,\r\n                                           project=True, projector=projector)\r\n\r\n    def oob_predict(self, Xtrain):\r\n        \"\"\"\r\n        Return the relevant output predictions for each data point, using the trees that didn't use that data point.\r\n\r\n        This method is not available is the estimator was trained with `warm_start=True`.\r\n\r\n        Parameters\r\n        ----------\r\n        Xtrain : (n_training_samples, n_features) matrix\r\n            Must be the same exact X matrix that was passed to the forest at fit time.\r\n\r\n        Returns\r\n        -------\r\n        oob_preds : (n_training_samples, n_relevant_outputs) matrix\r\n            The out-of-bag predictions of the relevant output parameters for each of the training points\r\n        \"\"\"\r\n        if self.warm_start_:\r\n            raise AttributeError(\"`oob_predict` is not available when \"\r\n                                 \"the estimator was fitted with `warm_start=True`\")\r\n\r\n        # avoid storing the output of every estimator by summing them here\r\n        alpha_hat = np.zeros((Xtrain.shape[0], self.n_outputs_), dtype=np.float64)\r\n        jac_hat = np.zeros((Xtrain.shape[0], self.n_outputs_**2), dtype=np.float64)\r\n        counts = np.zeros((Xtrain.shape[0],), dtype=np.intp)\r\n        subsample_inds = self.get_subsample_inds()\r\n\r\n        # Parallel loop\r\n        lock = threading.Lock()\r\n        Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend='threading', require=\"sharedmem\")(\r\n            delayed(_accumulate_oob_preds)(tree, Xtrain, sinds, alpha_hat, jac_hat, counts, lock)\r\n            for tree, sinds in zip(self.estimators_, subsample_inds))\r\n\r\n        pos_count = (counts > 0)\r\n        alpha_hat[pos_count] /= counts[pos_count].reshape((-1, 1))\r\n        jac_hat[pos_count] /= counts[pos_count].reshape((-1, 1))\r\n\r\n        invjac = np.linalg.pinv(jac_hat.reshape((-1, self.n_outputs_, self.n_outputs_)))\r\n        oob_preds = np.einsum('ijk,ik->ij', invjac, alpha_hat)[:, :self.n_relevant_outputs_]\r\n        oob_preds[~pos_count] = np.nan\r\n        return oob_preds\r\n"
  },
  {
    "path": "econml/grf/_base_grftree.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code contains snippets of code from:\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_classes.py\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nimport numpy as np\r\nfrom ._criterion import LinearMomentGRFCriterionMSE, LinearMomentGRFCriterion\r\nfrom ..tree import BaseTree\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.utils.validation import check_is_fitted\r\n\r\n# =============================================================================\r\n# Types and constants\r\n# =============================================================================\r\n\r\n\r\nCRITERIA_GRF = {\"het\": LinearMomentGRFCriterion,\r\n                \"mse\": LinearMomentGRFCriterionMSE}\r\n\r\n# =============================================================================\r\n# Base GRF tree\r\n# =============================================================================\r\n\r\n\r\nclass GRFTree(BaseTree):\r\n    \"\"\"\r\n    A tree of a Generalized Random Forest [grftree1].\r\n\r\n    This method should be used primarily\r\n    through the BaseGRF forest class and its derivatives and not as a standalone\r\n    estimator. It fits a tree that solves the local moment equation problem::\r\n\r\n        E[ m(Z; theta(x)) | X=x] = 0\r\n\r\n    For some moment vector function m, that takes as input random samples of a random variable Z\r\n    and is parameterized by some unknown parameter theta(x). Each node in the tree\r\n    contains a local estimate of the parameter theta(x), for every region of X that\r\n    falls within that leaf.\r\n\r\n    Parameters\r\n    ----------\r\n    criterion : {``'mse'``, ``'het'``}, default 'mse'\r\n        The function to measure the quality of a split. Supported criteria\r\n        are ``'mse'`` for the mean squared error in a linear moment estimation tree and ``'het'`` for\r\n        heterogeneity score. These criteria solve any linear moment problem of the form::\r\n\r\n            E[J * theta(x) - A | X = x] = 0\r\n\r\n        - The ``'mse'`` criterion finds splits that maximize the score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} weight(child) * theta(child).T @ E[J | X in child] @ theta(child)\r\n\r\n            - In the case of a causal tree, this coincides with minimizing the MSE:\r\n\r\n              .. code-block::\r\n\r\n                sum_{child} E[(Y - <theta(child), T>)^2 | X=child] weight(child)\r\n\r\n            - In the case of an IV tree, this roughly coincides with minimize the projected MSE::\r\n\r\n              .. code-block::\r\n\r\n                sum_{child} E[(Y - <theta(child), E[T|Z]>)^2 | X=child] weight(child)\r\n\r\n          Internally, for the case of more than two treatments or for the case of one treatment with\r\n          ``fit_intercept=True`` then this criterion is approximated by computationally simpler variants for\r\n          computationaly purposes. In particular, it is replaced by::\r\n\r\n              sum_{child} weight(child) * rho(child).T @ E[J | X in child] @ rho(child)\r\n\r\n          where:\r\n\r\n          .. code-block::\r\n\r\n              rho(child) := J(parent)^{-1} E[A - J * theta(parent) | X in child]\r\n\r\n          This can be thought as a heterogeneity inducing score, but putting more weight on scores\r\n          with a large minimum eigenvalue of the child jacobian ``E[J | X in child]``, which leads to smaller\r\n          variance of the estimate and stronger identification of the parameters.\r\n\r\n        - The ``'het'`` criterion finds splits that maximize the pure parameter heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} weight(child) * rho(child).T @ rho(child)\r\n\r\n          This can be thought as an approximation to the ideal heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n              weight(left) * weight(right) || theta(left) - theta(right)||_2^2 / weight(parent)^2\r\n\r\n          as outlined in [grftree1]_\r\n\r\n    splitter : {\"best\"}, default \"best\"\r\n        The strategy used to choose the split at each node. Supported\r\n        strategies are \"best\" to choose the best split.\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    min_var_leaf : None or double in (0, infinity), default None\r\n        A constraint on the minimum degree of identification of the parameter of interest. This avoids performing\r\n        splits where either the variance of the treatment is small or the correlation of the instrument with the\r\n        treatment is small, or the variance of the instrument is small. Generically for any linear moment problem\r\n        this translates to conditions on the leaf jacobian matrix J(leaf) that are proxies for a well-conditioned\r\n        matrix, which leads to smaller variance of the local estimate. The proxy of the well-conditioning is\r\n        different for different criterion, primarily for computational efficiency reasons.\r\n\r\n        - If ``criterion='het'``, then the diagonal entries of J(leaf) are constraint to have absolute\r\n          value at least `min_var_leaf`:\r\n\r\n          .. code-block::\r\n\r\n            for all i in {1, ..., n_outputs}: abs(J(leaf)[i, i]) > `min_var_leaf`\r\n\r\n          In the context of a causal tree, when residual treatment is passed\r\n          at fit time, then, this translates to a requirement on Var(T[i]) for every treatment coordinate i.\r\n          In the context of an IV tree, with residual instruments and residual treatments passed at fit time\r\n          this translates to ``Cov(T[i], Z[i]) > min_var_leaf`` for each coordinate i of the instrument and the\r\n          treatment.\r\n\r\n        - If ``criterion='mse'``, because the criterion stores more information about the leaf jacobian for\r\n          every candidate split, then we impose further constraints on the pairwise determininants of the\r\n          leaf jacobian, as they come at small extra computational cost, i.e.::\r\n\r\n            for all i neq j:\r\n                sqrt(abs(J(leaf)[i, i] * J(leaf)[j, j] - J(leaf)[i, j] * J(leaf)[j, i])) > `min_var_leaf`\r\n\r\n          In the context of a causal tree, when residual treatment is passed at fit time, then this\r\n          translates to a constraint on the pearson correlation coefficient on any two coordinates\r\n          of the treatment within the leaf, i.e.::\r\n\r\n            for all i neq j:\r\n                sqrt( Var(T[i]) * Var(T[j]) * (1 - rho(T[i], T[j])^2) ) ) > `min_var_leaf`\r\n\r\n          where rho(X, Y) is the Pearson correlation coefficient of two random variables X, Y. Thus this\r\n          constraint also enforces that no two pairs of treatments be very co-linear within a leaf. This\r\n          extra constraint primarily has bite in the case of more than two input treatments.\r\n\r\n    min_var_leaf_on_val : bool, default False\r\n        Whether the `min_var_leaf` constraint should also be enforced to hold on the validation set of the\r\n        honest split too. If `min_var_leaf=None` then this flag does nothing. Setting this to True should\r\n        be done with caution, as this partially violates the honesty structure, since parts of the variables\r\n        other than the X variable (e.g. the variables that go into the jacobian J of the linear model) are\r\n        used to inform the split structure of the tree. However, this is a benign dependence and for instance\r\n        in a causal tree or an IV tree does not use the label y. It only uses the treatment T and the instrument\r\n        Z and their local correlation structures to decide whether a split is feasible.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        Controls the randomness of the estimator. The features are always\r\n        randomly permuted at each split, even if ``splitter`` is set to\r\n        ``\"best\"``. When ``max_features < n_features``, the algorithm will\r\n        select ``max_features`` at random at each split before finding the best\r\n        split among them. But the best found split may vary across different\r\n        runs, even if ``max_features=n_features``. That is the case, if the\r\n        improvement of the criterion is identical for several splits and one\r\n        split has to be selected at random. To obtain a deterministic behaviour\r\n        during fitting, ``random_state`` has to be fixed to an integer.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest: bool, default True\r\n        Whether the data should be split in two equally sized samples, such that the one half-sample\r\n        is used to determine the optimal split at each node and the other sample is used to determine\r\n        the value of every node.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. Each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n        By default splits below `max_depth=4` are not used in this calculation and also each split\r\n        at depth `depth`, is re-weighted by 1 / (1 + `depth`)**2.0. See the method ``feature_importances``\r\n        for a method that allows one to change these defaults.\r\n\r\n    max_features_ : int\r\n        The inferred value of max_features.\r\n\r\n    n_features_ : int\r\n        The number of features when ``fit`` is performed.\r\n\r\n    n_outputs_ : int\r\n        The number of outputs when ``fit`` is performed.\r\n\r\n    n_relevant_outputs_ : int\r\n        The first `n_relevant_outputs_` where the ones we cared about when ``fit`` was performed.\r\n\r\n    n_y_ : int\r\n        The raw label dimension when ``fit`` is performed.\r\n\r\n    n_samples_ : int\r\n        The number of training samples when ``fit`` is performed.\r\n\r\n    honest_ : int\r\n        Whether honesty was enabled when ``fit`` was performed\r\n\r\n    tree_ : Tree instance\r\n        The underlying Tree object. Please refer to\r\n        ``help(econml.tree._tree.Tree)`` for attributes of Tree object.\r\n\r\n    References\r\n    ----------\r\n    .. [grftree1] Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\r\n        The Annals of Statistics 47.2 (2019): 1148-1178\r\n        https://arxiv.org/pdf/1610.01271.pdf\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 criterion=\"mse\",\r\n                 splitter=\"best\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 min_var_leaf=None,\r\n                 min_var_leaf_on_val=False,\r\n                 max_features=None,\r\n                 random_state=None,\r\n                 min_impurity_decrease=0.,\r\n                 min_balancedness_tol=0.45,\r\n                 honest=True):\r\n        super().__init__(criterion=criterion,\r\n                         splitter=splitter,\r\n                         max_depth=max_depth,\r\n                         min_samples_split=min_samples_split,\r\n                         min_samples_leaf=min_samples_leaf,\r\n                         min_weight_fraction_leaf=min_weight_fraction_leaf,\r\n                         min_var_leaf=min_var_leaf,\r\n                         min_var_leaf_on_val=min_var_leaf_on_val,\r\n                         max_features=max_features,\r\n                         random_state=random_state,\r\n                         min_impurity_decrease=min_impurity_decrease,\r\n                         min_balancedness_tol=min_balancedness_tol,\r\n                         honest=honest)\r\n\r\n    def _get_valid_criteria(self):\r\n        return CRITERIA_GRF\r\n\r\n    def _get_valid_min_var_leaf_criteria(self):\r\n        return (LinearMomentGRFCriterion,)\r\n\r\n    def _get_store_jac(self):\r\n        return True\r\n\r\n    def init(self,):\r\n        \"\"\"\r\n        Initialize this instance.\r\n\r\n        This method that should be called before fit. We added this pre-fit step so that this step\r\n        can be executed without parallelism as it contains code that holds the gil and can hinder\r\n        parallel execution. We also did not merge this step to ``__init__`` as we want ``__init__`` to just\r\n        be storing the parameters for easy cloning. We also don't want to directly pass a RandomState\r\n        object as random_state, as we want to keep the starting seed to be able to replicate the\r\n        randomness of the object outside the object.\r\n        \"\"\"\r\n        self.random_seed_ = self.random_state\r\n        self.random_state_ = check_random_state(self.random_seed_)\r\n        return self\r\n\r\n    def fit(self, X, y, n_y, n_outputs, n_relevant_outputs, sample_weight=None, check_input=True):\r\n        \"\"\"Fit the tree from the data.\r\n\r\n        Parameters\r\n        ----------\r\n        X : (n, d) array\r\n            The features to split on\r\n\r\n        y : (n, m) array\r\n            All the variables required to calculate the criterion function, evaluate splits and\r\n            estimate local values, i.e. all the values that go into the moment function except X.\r\n\r\n        n_y, n_outputs, n_relevant_outputs : auxiliary info passed to the criterion objects that\r\n            help the object parse the variable y into each separate variable components.\r\n\r\n            - In the case when `isinstance(criterion, LinearMomentGRFCriterion)`, then the first\r\n              n_y columns of y are the raw outputs, the next n_outputs columns contain the A part\r\n              of the moment and the next n_outputs * n_outputs columnts contain the J part of the moment\r\n              in row contiguous format. The first n_relevant_outputs parameters of the linear moment\r\n              are the ones that we care about. The rest are nuisance parameters.\r\n\r\n        sample_weight : (n,) array, default None\r\n            The sample weights\r\n\r\n        check_input : bool, defaul=True\r\n            Whether to check the input parameters for validity. Should be set to False to improve\r\n            running time in parallel execution, if the variables have already been checked by the\r\n            forest class that spawned this tree.\r\n        \"\"\"\r\n        return super().fit(X, y, n_y, n_outputs, n_relevant_outputs,\r\n                           sample_weight=sample_weight, check_input=check_input)\r\n\r\n    def predict(self, X, check_input=True):\r\n        \"\"\"Return the prefix of relevant fitted local parameters for each X, i.e. theta(X).\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        theta(X)[:n_relevant_outputs] : array_like of shape (n_samples, n_relevant_outputs)\r\n            The estimated relevant parameters for each row of X\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        pred = self.tree_.predict(X)\r\n        return pred\r\n\r\n    def predict_full(self, X, check_input=True):\r\n        \"\"\"Return the fitted local parameters for each X, i.e. theta(X).\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        theta(X) : array_like of shape (n_samples, n_outputs)\r\n            All the estimated parameters for each row of X\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        pred = self.tree_.predict_full(X)\r\n        return pred\r\n\r\n    def predict_alpha_and_jac(self, X, check_input=True):\r\n        \"\"\"\r\n        Predict the local jacobian ``E[J | X=x]`` and the local alpha ``E[A | X=x]`` of a linear moment equation.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        alpha : array_like of shape (n_samples, n_outputs)\r\n            The local alpha E[A | X=x] for each sample x\r\n        jac : array_like of shape (n_samples, n_outputs * n_outputs)\r\n            The local jacobian E[J | X=x] flattened in a C contiguous format\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        return self.tree_.predict_precond_and_jac(X)\r\n\r\n    def predict_moment(self, X, parameter, check_input=True):\r\n        \"\"\"\r\n        Predict the local moment value for each sample and at the given parameter.\r\n\r\n        This is::\r\n\r\n            E[J | X=x] theta(x) - E[A | X=x]\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``\r\n        parameter : {array_like} of shape (n_samples, n_outputs)\r\n            A parameter estimate for each sample\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        moment : array_like of shape (n_samples, n_outputs)\r\n            The local moment E[J | X=x] theta(x) - E[A | X=x] for each sample x\r\n        \"\"\"\r\n        alpha, jac = self.predict_alpha_and_jac(X)\r\n        return alpha - np.einsum('ijk,ik->ij', jac.reshape((-1, self.n_outputs_, self.n_outputs_)), parameter)\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        \"\"\"\r\n        Get feature importances based on the amount of parameter heterogeneity they create.\r\n\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. Each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n\r\n        Parameters\r\n        ----------\r\n        max_depth : int, default 4\r\n            Splits of depth larger than `max_depth` are not used in this calculation\r\n        depth_decay_exponent: double, default 2.0\r\n            The contribution of each split to the total score is re-weighted by ``1 / (1 + `depth`)**2.0``.\r\n\r\n        Returns\r\n        -------\r\n        feature_importances_ : ndarray of shape (n_features,)\r\n            Normalized total parameter heterogeneity inducing importance of each feature\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n\r\n        return self.tree_.compute_feature_heterogeneity_importances(normalize=True, max_depth=max_depth,\r\n                                                                    depth_decay=depth_decay_exponent)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n\r\n# HACK: sklearn 1.3 enforces that the input to plot_tree is a DecisionTreeClassifier or DecisionTreeRegressor\r\n#       This is a hack to get around that restriction by declaring that GRFTree inherits from DecisionTreeClassifier\r\nfrom sklearn.tree import DecisionTreeClassifier  # noqa: E402\r\nDecisionTreeClassifier.register(GRFTree)\r\n"
  },
  {
    "path": "econml/grf/_criterion.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n# See _criterion.pyx for implementation details.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\n\r\nfrom ..tree._tree cimport DTYPE_t          # Type of X\r\nfrom ..tree._tree cimport DOUBLE_t         # Type of y, sample_weight\r\nfrom ..tree._tree cimport SIZE_t           # Type for indices and counters\r\nfrom ..tree._tree cimport INT32_t          # Signed 32 bit integer\r\nfrom ..tree._tree cimport UINT32_t         # Unsigned 32 bit integer\r\n\r\nfrom ..tree._criterion cimport Criterion, RegressionCriterion\r\n\r\ncdef class LinearMomentGRFCriterion(RegressionCriterion):\r\n    \"\"\" A criterion class that estimates local parameters defined via linear moment equations\r\n    of the form:\r\n\r\n    E[ m(J, A; theta(x)) | X=x] = E[ J * theta(x) - A | X=x] = 0\r\n\r\n    Calculates impurity based on heterogeneity induced on the estimated parameters, based on the proxy score\r\n    defined in the Generalized Random Forest paper:\r\n        Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\r\n        The Annals of Statistics 47.2 (2019): 1148-1178\r\n        https://arxiv.org/pdf/1610.01271.pdf\r\n    \"\"\"\r\n    cdef const DOUBLE_t[:, ::1] alpha   # The A random vector of the linear moment equation for each sample\r\n    cdef const DOUBLE_t[:, ::1] pointJ  # The J random vector of the linear moment equation for each sample\r\n\r\n    cdef DOUBLE_t* rho                  # Proxy heterogeneity label: rho = E[J | X in Node]^{-1} m(J, A; theta(Node))\r\n    cdef DOUBLE_t* moment               # Moment for each sample: m(J, A; theta(Node))\r\n    cdef DOUBLE_t* parameter            # Estimated node parameter: theta(Node) = E[J|X in Node]^{-1} E[A|X in Node]\r\n    cdef DOUBLE_t* parameter_pre        # Preconditioned node parameter: theta_pre(Node) = E[A | X in Node]\r\n    cdef DOUBLE_t* J                    # Node average jacobian: J(Node) = E[J | X in Node]\r\n    cdef DOUBLE_t* invJ                 # Inverse of node average jacobian: J(Node)^{-1}\r\n    cdef DOUBLE_t* var_total            # The diagonal elements of J(Node) (used for proxy of min eigenvalue)\r\n    cdef DOUBLE_t* var_left             # The diagonal elements of J(Left) = E[J | X in Left-Child]\r\n    cdef DOUBLE_t* var_right            # The diagonal elements of J(Right) = E[J | X in Right-Child]\r\n    cdef SIZE_t* node_index_mapping     # Used internally to map between sample index in y, with sample index in\r\n                                        # internal memory space that stores rho and moment for each sample\r\n    cdef DOUBLE_t y_sq_sum_total        # The sum of the raw labels y: \\sum_i sum_k w_i y_{ik}^2\r\n\r\n    cdef int node_reset_jacobian(self, DOUBLE_t* J, DOUBLE_t* invJ, double* weighted_n_node_samples,\r\n                                  const DOUBLE_t[:, ::1] pointJ,\r\n                                  DOUBLE_t* sample_weight,\r\n                                  SIZE_t* samples, SIZE_t start, SIZE_t end) except -1 nogil\r\n    cdef int node_reset_parameter(self, DOUBLE_t* parameter, DOUBLE_t* parameter_pre,\r\n                                   DOUBLE_t* invJ,\r\n                                   const DOUBLE_t[:, ::1] alpha,\r\n                                   DOUBLE_t* sample_weight, double weighted_n_node_samples,\r\n                                   SIZE_t* samples, SIZE_t start, SIZE_t end) except -1 nogil\r\n    cdef int node_reset_rho(self, DOUBLE_t* rho, DOUBLE_t* moment, SIZE_t* node_index_mapping,\r\n                       DOUBLE_t* parameter, DOUBLE_t* invJ, double weighted_n_node_samples,\r\n                       const DOUBLE_t[:, ::1] pointJ, const DOUBLE_t[:, ::1] alpha,\r\n                       DOUBLE_t* sample_weight, SIZE_t* samples, \r\n                       SIZE_t start, SIZE_t end) except -1 nogil\r\n    cdef int node_reset_sums(self, const DOUBLE_t[:, ::1] y, DOUBLE_t* rho,\r\n                             DOUBLE_t* J,\r\n                             DOUBLE_t* sample_weight, SIZE_t* samples,\r\n                             DOUBLE_t* sum_total, DOUBLE_t* var_total,\r\n                             DOUBLE_t* sq_sum_total, DOUBLE_t* y_sq_sum_total,\r\n                             SIZE_t start, SIZE_t end) except -1 nogil\r\n\r\ncdef class LinearMomentGRFCriterionMSE(LinearMomentGRFCriterion):\r\n    cdef DOUBLE_t* J_left           # The jacobian of the left child: J(Left) = E[J | X in Left-Child]\r\n    cdef DOUBLE_t* J_right          # The jacobian of the right child: J(Right) = E[J | X in Right-Child]\r\n    cdef DOUBLE_t* invJ_left           # The jacobian of the left child: J(Left) = E[J | X in Left-Child]\r\n    cdef DOUBLE_t* invJ_right          # The jacobian of the right child: J(Right) = E[J | X in Right-Child]\r\n    cdef DOUBLE_t* parameter_pre_left \r\n    cdef DOUBLE_t* parameter_pre_right\r\n    cdef DOUBLE_t* parameter_left\r\n    cdef DOUBLE_t* parameter_right\r\n\r\n    cdef double _get_min_eigv(self, DOUBLE_t* J_child, DOUBLE_t* var_child,\r\n                              double weighted_n_child) except -1 nogil\r\n"
  },
  {
    "path": "econml/grf/_criterion.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code contains some snippets of code from:\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_criterion.pyx\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nfrom libc.stdlib cimport calloc\r\nfrom libc.stdlib cimport free\r\nfrom libc.string cimport memcpy\r\nfrom libc.string cimport memset\r\nfrom libc.math cimport fabs, sqrt\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\nfrom ._utils cimport matinv_, pinv_\r\n\r\ncdef double INFINITY = np.inf\r\n\r\n###################################################################################\r\n# GRF Criteria\r\n###################################################################################\r\n\r\ncdef class LinearMomentGRFCriterion(RegressionCriterion):\r\n    r\"\"\" A criterion class that estimates local parameters defined via linear moment equations\r\n    of the form::\r\n\r\n        E[ m(J, A; theta(x)) | X=x] = E[ J * theta(x) - A | X=x] = 0\r\n\r\n    Calculates impurity based on heterogeneity induced on the estimated parameters, based on the proxy score\r\n    defined in the Generalized Random Forest paper::\r\n\r\n        Athey, Susan, Julie Tibshirani, and Stefan Wager.\r\n        \"Generalized random forests.\" The Annals of Statistics\r\n        47.2 (2019): 1148-1178 https://arxiv.org/pdf/1610.01271.pdf.\r\n\r\n    Calculates proxy labels for each sample::\r\n\r\n        rho[i] := - J(Node)^{-1} (J[i] * theta(Node) - A[i])\r\n        J(Node) := E[J[i] | X[i] in Node]\r\n        theta(Node) := J(Node)^{-1} E[A[i] | X[i] in Node]\r\n\r\n    Then uses as proxy_impurity_improvement for a split (Left, Right) the quantity::\r\n\r\n        sum_{k=1}^{n_relevant_outputs} E[rho[i, k] | X[i] in Left]^2 + E[rho[i, k] | X[i] in Right]^2\r\n\r\n    Stores as node impurity the quantity::\r\n\r\n        sum_{k=1}^{n_relevant_outputs} Var(rho[i, k] | X[i] in Node)\r\n         = sum_{k=1}^{n_relevant_outputs} E[rho[i, k]^2 | X[i] in Node] - E[rho[i, k] | X[i] in Node]^2\r\n\r\n    \"\"\"\r\n\r\n    def __cinit__(self, SIZE_t n_outputs, SIZE_t n_relevant_outputs, SIZE_t n_features, SIZE_t n_y,\r\n                  SIZE_t n_samples, SIZE_t max_node_samples, UINT32_t random_state):\r\n        \"\"\"Initialize parameters for this criterion. Parent `__cinit__` is always called before children.\r\n        So we only perform extra initializations that were not perfomed by the parent classes.\r\n\r\n        Parameters\r\n        ----------\r\n        n_outputs : SIZE_t\r\n            The number of parameters/values to be estimated\r\n        n_relevant_outputs : SIZE_t\r\n            We only care about the first n_relevant_outputs of these parameters/values\r\n        n_features : SIZE_t\r\n            The number of features\r\n        n_y : SIZE_t\r\n            The first n_y columns of the 2d matrix y, contain the raw labels y_{ik}, the rest are auxiliary variables\r\n        n_samples : SIZE_t\r\n            The total number of rows in the 2d matrix y\r\n        max_node_samples : SIZE_t\r\n            The maximum number of samples that can ever be contained in a node\r\n        random_state : UINT32_t\r\n            A random seed for any internal randomness\r\n        \"\"\"\r\n\r\n        # Most initializations are handled by __cinit__ of RegressionCriterion\r\n        # which is always called in cython. We initialize the extras.\r\n        if n_y > 1:\r\n            raise AttributeError(\"LinearMomentGRFCriterion currently only supports a scalar y\")\r\n\r\n        self.proxy_children_impurity = True     # The children_impurity() only returns an approximate proxy\r\n\r\n        # Allocate accumulators. Make sure they are NULL, not uninitialized,\r\n        # before an exception can be raised (which triggers __dealloc__).\r\n        self.rho = NULL\r\n        self.moment = NULL\r\n        self.parameter = NULL\r\n        self.parameter_pre = NULL\r\n        self.J = NULL\r\n        self.invJ = NULL\r\n        self.var_total = NULL\r\n        self.var_left = NULL\r\n        self.var_right = NULL\r\n        self.node_index_mapping = NULL\r\n\r\n        # Allocate memory for the proxy for y, which rho in the generalized random forest\r\n        # Since rho is node dependent it needs to be re-calculated and stored for each sample\r\n        # in the node for every node we are investigating\r\n        self.rho = <double*> calloc(max_node_samples * n_outputs, sizeof(double))\r\n        self.moment = <double*> calloc(max_node_samples * n_outputs, sizeof(double))\r\n        self.parameter = <double *> calloc(n_outputs, sizeof(double))\r\n        self.parameter_pre = <double *> calloc(n_outputs, sizeof(double))\r\n        self.J = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n        self.invJ = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n        self.var_total = <double *> calloc(n_outputs, sizeof(double))\r\n        self.var_left = <double *> calloc(n_outputs, sizeof(double))\r\n        self.var_right = <double *> calloc(n_outputs, sizeof(double))\r\n        self.node_index_mapping = <SIZE_t *> calloc(n_samples * n_outputs, sizeof(SIZE_t))\r\n\r\n        if (self.rho == NULL or\r\n                self.moment == NULL or\r\n                self.parameter == NULL or\r\n                self.parameter_pre == NULL or\r\n                self.J == NULL or\r\n                self.invJ == NULL or\r\n                self.var_total == NULL or\r\n                self.var_left == NULL or\r\n                self.var_right == NULL or\r\n                self.node_index_mapping == NULL):\r\n            raise MemoryError()\r\n\r\n    def __dealloc__(self):\r\n        # __dealloc__ of parents is also called. Deallocating the extras\r\n        free(self.rho)\r\n        free(self.moment)\r\n        free(self.parameter)\r\n        free(self.parameter_pre)\r\n        free(self.J)\r\n        free(self.invJ)\r\n        free(self.var_total)\r\n        free(self.var_left)\r\n        free(self.var_right)\r\n        free(self.node_index_mapping)\r\n\r\n    cdef int init(self, const DOUBLE_t[:, ::1] y, DOUBLE_t* sample_weight,\r\n                  double weighted_n_samples,\r\n                  SIZE_t* samples) except -1 nogil:\r\n        cdef SIZE_t n_features = self.n_features\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        cdef SIZE_t n_y = self.n_y\r\n\r\n        self.y = y[:, :n_y]                     # The first n_y columns of y are the original raw outcome\r\n        self.alpha = y[:, n_y:(n_y + n_outputs)]        # A[i] part of the moment is the next n_outputs columns\r\n        # J[i] part of the moment is the next n_outputs * n_outputs columns, stored in Fortran contiguous format\r\n        self.pointJ = y[:, (n_y + n_outputs):(n_y + n_outputs + n_outputs * n_outputs)]\r\n        self.sample_weight = sample_weight      # Store the sample_weight locally\r\n        self.samples = samples                  # Store the sample index structure used and updated by the splitter\r\n        self.weighted_n_samples = weighted_n_samples    # Store total weight of all samples computed by splitter\r\n\r\n        return 0\r\n\r\n    cdef int node_reset_jacobian(self, DOUBLE_t* J, DOUBLE_t* invJ, double* weighted_n_node_samples,\r\n                                  const DOUBLE_t[:, ::1] pointJ,\r\n                                  DOUBLE_t* sample_weight,\r\n                                  SIZE_t* samples, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\" Calculate the node un-normalized jacobian::\r\n\r\n            J(node) := E[J[i] | X[i] in Node] weight(node) = sum_{i in Node} w[i] J[i]\r\n\r\n        and its inverse J(node)^{-1} (or revert to pseudo-inverse if the matrix is not invertible). For\r\n        dimensions n_outputs={1, 2}, we also add a small constant of 1e-6 on the diagonals of J, to ensure\r\n        invertibility. For larger dimensions we revert to pseudo-inverse if the matrix is not invertible.\r\n\r\n        Parameters\r\n        ----------\r\n        J : DOUBLE_t* of size n_outputs * n_outputs\r\n            On output, contains the calculated un-normalized jacobian J(node) in Fortran contiguous format\r\n        invJ : DOUBLE_t* of size n_outputs * n_outputs\r\n            On output, contains the inverse (or pseudo-inverse) jacobian J(node)^{-1} in Fortran contiguous format\r\n        weighted_n_node_samples : DOUBLE_t* of size 1\r\n            On output, contains the total weight of the samples in the node\r\n        pointJ : DOUBLE_t[:, ::1] of size (n_samples, n_outputs * n_outputs)\r\n            The memory view that contains the J[i] for each sample i\r\n        sample_weight : DOUBLE_t* of size (n_samples,)\r\n            An array taht holds the sample weight w[i] of each sample i\r\n        samples: SIZE_t*\r\n            An array that contains all the indices of samples from pointJ that are handled by the criterion\r\n        start, end: SIZE_t\r\n            The node is defined as the samples corresponding to the set of indices from [`start`:`end`] in\r\n            the samples array.\r\n        \"\"\"\r\n        cdef SIZE_t i, j, k, p\r\n        cdef double w, local_weighted_n_node_samples, det\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        local_weighted_n_node_samples = 0.0\r\n\r\n        # Init jacobian matrix to zero\r\n        memset(J, 0, n_outputs * n_outputs * sizeof(DOUBLE_t))\r\n\r\n        # Calculate un-normalized empirical jacobian\r\n        w = 1.0\r\n        for p in range(start, end):\r\n            i = samples[p]\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n            for k in range(n_outputs):\r\n                for j in range(n_outputs):\r\n                    J[j + k * n_outputs] += w * pointJ[i, j + k * n_outputs]\r\n            local_weighted_n_node_samples += w\r\n\r\n        # Calcualte inverse and store it in invJ\r\n        if n_outputs <=2:\r\n            # Fast closed form inverse calculation\r\n            _fast_invJ(J, invJ, n_outputs, clip=1e-6)\r\n        else:\r\n            for k in range(n_outputs):\r\n                J[k + k * n_outputs] += 1e-6    # add small diagonal constant for invertibility\r\n\r\n            # Slower matrix inverse via lapack package\r\n            if not matinv_(J, invJ, n_outputs):     # if matrix is invertible use the inverse\r\n                pinv_(J, invJ, n_outputs, n_outputs)    # else calculate pseudo-inverse\r\n\r\n            for k in range(n_outputs):\r\n                J[k + k * n_outputs] -= 1e-6    # remove the invertibility constant\r\n\r\n        # Update weighted_n_node_samples to the amount calculated by for loop\r\n        weighted_n_node_samples[0] = local_weighted_n_node_samples\r\n\r\n        return 0\r\n\r\n    cdef int node_reset_parameter(self, DOUBLE_t* parameter, DOUBLE_t* parameter_pre,\r\n                                   DOUBLE_t* invJ,\r\n                                   const DOUBLE_t[:, ::1] alpha,\r\n                                   DOUBLE_t* sample_weight, double weighted_n_node_samples,\r\n                                   SIZE_t* samples, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\" Calculate the node parameter and the un-normalized pre-conditioned parameter\r\n\r\n            theta_pre(node) := E[A[i] | X[i] in Node] weight(node) = sum_{i in Node} w[i] A[i]\r\n            theta(node) := J(node)^{-1} theta_pre(node)\r\n\r\n        Parameters\r\n        ----------\r\n        parameter : DOUBLE_t* of size n_outputs\r\n            On output, contains the calculated node parameter theta(node)\r\n        parameter_pre : DOUBLE_t* of size n_outputs\r\n            On output, contains the calculated node un-normalized pre-conditioned parameter theta_pre(node)\r\n        invJ : DOUBLE_t* of size n_outputs * n_outputs\r\n            On input, contains the calculated node un-normalized jacobian inverse J(node)^{-1} in F-contiguous format\r\n        alpha : DOUBLE_t[:, ::1] of size (n_samples, n_outputs)\r\n            The memory view that contains the A[i] for each sample i\r\n        sample_weight : DOUBLE_t* of size (n_samples,)\r\n            An array taht holds the sample weight w[i] of each sample i\r\n        weighted_n_node_samples : double\r\n            The total weight of the samples in the node\r\n        samples: SIZE_t*\r\n            An array that contains all the indices of samples from pointJ that are handled by the criterion\r\n        start, end: SIZE_t\r\n            The node is defined as the samples corresponding to the set of indices from [`start`:`end`] in\r\n            the samples array.\r\n        \"\"\"\r\n        cdef SIZE_t i, j, k, p\r\n        cdef double w\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n\r\n        # init parameter and pre-conditioned parameter to zero\r\n        memset(parameter_pre, 0, n_outputs * sizeof(DOUBLE_t))\r\n        memset(parameter, 0, n_outputs * sizeof(DOUBLE_t))\r\n        w = 1.0\r\n        for p in range(start, end):\r\n            i = samples[p]\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n            for j in range(n_outputs):\r\n                parameter_pre[j] += w * alpha[i, j]\r\n\r\n        for j in range(n_outputs):\r\n            for i in range(n_outputs):\r\n                parameter[i] += invJ[i + j * n_outputs] * parameter_pre[j]\r\n\r\n        return 0\r\n\r\n    cdef int node_reset_rho(self, DOUBLE_t* rho, DOUBLE_t* moment, SIZE_t* node_index_mapping,\r\n                       DOUBLE_t* parameter, DOUBLE_t* invJ, double weighted_n_node_samples,\r\n                       const DOUBLE_t[:, ::1] pointJ, const DOUBLE_t[:, ::1] alpha, DOUBLE_t* sample_weight,\r\n                       SIZE_t* samples, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\" Calculate the node proxy labels and moment for each sample i in the node\r\n\r\n            moment[i] := J[i] * theta(Node) - A[i]\r\n            rho[i] := - (J(Node) / weight(node))^{-1} * moment[i]\r\n\r\n        Parameters\r\n        ----------\r\n        rho : DOUBLE_t* of size `max_node_samples` * `n_outputs`\r\n            On output, the first `n_node_samples * n_outputs` entries contain the rho for each sample in the node\r\n            in a C-continguous manner. The rho for sample with index i is stored in the interval\r\n            [`node_index_mapping[i] * n_outputs` : `(node_index_mapping[i] + 1) * n_outputs`]\r\n            location of the array\r\n        moment : DOUBLE_t* of size `max_node_samples` * `n_outputs`\r\n            On output, the first `n_node_samples * n_outputs` entries contain the moment for each sample in the node\r\n            in a C-continguous manner. The moment for sample with index i is stored in the interval\r\n            [`node_index_mapping[i] * n_outputs` : `(node_index_mapping[i] + 1) * n_outputs`]\r\n            location of the array\r\n        node_index_mapping : SIZE_t* of size `n_samples`\r\n            On output, contains the mapping between the original sample index (i.e. the row in pointJ and alpha)\r\n            with the location in the internal arrays rho and moment\r\n        parameter : DOUBLE_t* of size n_outputs\r\n            On input, contains the calculated node parameter theta(node)\r\n        invJ : DOUBLE_t* of size n_outputs * n_outputs\r\n            On input, contains the calculated unnormalized node jacobian inverse J(node)^{-1} in F-contiguous format\r\n        pointJ : DOUBLE_t[:, ::1] of size (n_samples, n_outputs * n_outputs)\r\n            The memory view that contains the J[i] for each sample i\r\n        alpha : DOUBLE_t[:, ::1] of size (n_samples, n_outputs)\r\n            The memory view that contains the A[i] for each sample i\r\n        sample_weight : DOUBLE_t* of size (n_samples,)\r\n            An array taht holds the sample weight w[i] of each sample i\r\n        samples: SIZE_t*\r\n            An array that contains all the indices of samples from pointJ that are handled by the criterion\r\n        start, end: SIZE_t\r\n            The node is defined as the samples corresponding to the set of indices from [`start`:`end`] in\r\n            the samples array.\r\n        \"\"\"\r\n        cdef SIZE_t i, j, k, p, offset\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n\r\n        for p in range(start, end):\r\n            i = samples[p]\r\n            offset = p - start\r\n            node_index_mapping[i] = offset\r\n            for j in range(n_outputs):\r\n                moment[j + offset * n_outputs] = - alpha[i, j]\r\n                for k in range(n_outputs):\r\n                    moment[j + offset * n_outputs] += pointJ[i, j + k * n_outputs] * parameter[k]\r\n            for j in range(n_outputs):\r\n                rho[j + offset * n_outputs] = 0.0\r\n                for k in range(n_outputs):\r\n                    rho[j + offset * n_outputs] -= (invJ[j + k * n_outputs] * moment[k + offset * n_outputs]\r\n                                                     * weighted_n_node_samples)\r\n        return 0\r\n\r\n    cdef int node_reset_sums(self, const DOUBLE_t[:, ::1] y, DOUBLE_t* rho,\r\n                             DOUBLE_t* J,\r\n                             DOUBLE_t* sample_weight, SIZE_t* samples,\r\n                             DOUBLE_t* sum_total, DOUBLE_t* var_total, DOUBLE_t* sq_sum_total,\r\n                             DOUBLE_t* y_sq_sum_total,\r\n                             SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\" Initialize several sums of quantities that will be useful to speed up the `update()` method:\r\n\r\n            for k in {1..n_outputs}: sum_total[k] := sum_{i in Node} w[i] rho[i, k]\r\n            for k in {1..n_outputs}: var_total[k] := J(node)[k, k] (i.e. the k-th diagonal element of J(node))\r\n            sq_sum_total[0] := sum_{i in Node} sum_{j in n_relevant_outputs} w[i] * rho[i, k]^2\r\n            y_sq_sum_total[0] := sum_{i in Node} sum_{j in n_y} w[i] * y[i, k]^2\r\n\r\n        Parameters\r\n        ----------\r\n        y : DOUBLE_t[:, ::1] of size `n_samples` * `n_y`\r\n            The original outcome. Used by child class LinearMomentGRFCriterionMSE, but calculated here\r\n            too for code convenience, so as not to re-implement the node_reset_sums method.\r\n        rho : DOUBLE_t* of size `max_node_samples` * `n_outputs`\r\n            On input, the first `n_node_samples * n_outputs` entries contain the rho for each sample in the node\r\n            in a C-continguous manner. The rho for sample with index i is stored in the interval\r\n            [`node_index_mapping[i] * n_outputs` : `(node_index_mapping[i] + 1) * n_outputs`]\r\n            location of the array\r\n        J : DOUBLE_t* of size n_outputs * n_outputs\r\n            On input, contains the calculate jacobian J(node) in Fortran contiguous format\r\n        sample_weight : DOUBLE_t* of size (n_samples,)\r\n            An array taht holds the sample weight w[i] of each sample i\r\n        samples: SIZE_t*\r\n            An array that contains all the indices of samples from pointJ that are handled by the criterion\r\n        sum_total : DOUBLE_t* of size n_outputs\r\n            On output, contains the calculated sum_total[:] vector\r\n        var_total : DOUBLE_t* of size n_outputs\r\n            On output, contains the calculated var_total[:] vector\r\n        sq_sum_total : DOUBLE_t* of size 1\r\n            On output, contains the calculated sq_sum_total\r\n        y_sq_sum_total : DOUBLE_t* of size 1\r\n            On output, contains the calculated y_sq_sum_total\r\n        start, end: SIZE_t\r\n            The node is defined as the samples corresponding to the set of indices from [`start`:`end`] in\r\n            the samples array.\r\n        \"\"\"\r\n        cdef SIZE_t i, p, k, offset\r\n        cdef DOUBLE_t y_ik, w_y_ik, w = 1.0\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        cdef SIZE_t n_relevant_outputs = self.n_relevant_outputs\r\n        cdef SIZE_t n_y = self.n_y\r\n\r\n        sq_sum_total[0] = 0.0\r\n        y_sq_sum_total[0] = 0.0\r\n        memset(sum_total, 0, n_outputs * sizeof(double))\r\n        memset(var_total, 0, n_outputs * sizeof(double))\r\n\r\n        for p in range(start, end):\r\n            i = samples[p]\r\n            offset = p - start\r\n\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n\r\n            for k in range(n_outputs):\r\n                y_ik = rho[offset * n_outputs + k]\r\n                w_y_ik = w * y_ik\r\n                sum_total[k] += w_y_ik\r\n                if k < n_relevant_outputs:\r\n                    sq_sum_total[0] += w_y_ik * y_ik\r\n            for k in range(n_y):\r\n                y_sq_sum_total[0] += w * (y[i, k]**2)\r\n\r\n        for k in range(n_outputs):\r\n            var_total[k] = J[k + k * n_outputs]\r\n\r\n        return 0\r\n\r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\"Initialize the criterion at node samples[start:end] and\r\n           children samples[start:start] and samples[start:end].\"\"\"\r\n        \r\n        # Initialize fields\r\n        self.start = start\r\n        self.end = end\r\n        self.n_node_samples = end - start\r\n        self.weighted_n_node_samples = 0.\r\n        # calculate jacobian, inverse jacobian and total node weights\r\n        self.node_reset_jacobian(self.J, self.invJ, &self.weighted_n_node_samples,\r\n                                 self.pointJ,\r\n                                 self.sample_weight, self.samples,\r\n                                 self.start, self.end)\r\n        # calculate node parameter and pre-conditioned parameter\r\n        self.node_reset_parameter(self.parameter, self.parameter_pre,\r\n                                  self.invJ, self.alpha,\r\n                                  self.sample_weight, self.weighted_n_node_samples, self.samples,\r\n                                  self.start, self.end)\r\n        # calculate proxy labels rho and moment for each sample in the node and an index map for associating\r\n        # internal array locations with original sample indices\r\n        self.node_reset_rho(self.rho, self.moment, self.node_index_mapping,\r\n                            self.parameter, self.invJ, self.weighted_n_node_samples,\r\n                            self.pointJ, self.alpha,\r\n                            self.sample_weight, self.samples,\r\n                            self.start, self.end)\r\n        # calculate helper sums that are useful for speeding up `update()`\r\n        self.node_reset_sums(self.y, self.rho, self.J,\r\n                             self.sample_weight, self.samples,\r\n                             self.sum_total, self.var_total, &self.sq_sum_total, &self.y_sq_sum_total,\r\n                             self.start, self.end)\r\n\r\n        # Reset to pos=start\r\n        self.reset()\r\n        return 0\r\n\r\n    cdef int reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=start.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * sizeof(double)\r\n\r\n        memset(self.sum_left, 0, n_bytes)\r\n        memcpy(self.sum_right, self.sum_total, n_bytes)\r\n        memset(self.var_left, 0, n_bytes)\r\n        memcpy(self.var_right, self.var_total, n_bytes)\r\n\r\n        self.weighted_n_left = 0\r\n        self.weighted_n_right = self.weighted_n_node_samples\r\n        self.pos = self.start\r\n\r\n        return 0\r\n\r\n    cdef int reverse_reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=end.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * sizeof(double)\r\n        memset(self.sum_right, 0, n_bytes)\r\n        memcpy(self.sum_left, self.sum_total, n_bytes)\r\n        memset(self.var_right, 0, n_bytes)\r\n        memcpy(self.var_left, self.var_total, n_bytes)\r\n\r\n        self.weighted_n_right = 0\r\n        self.weighted_n_left = self.weighted_n_node_samples\r\n        self.pos = self.end\r\n\r\n        return 0\r\n\r\n    cdef int update(self, SIZE_t new_pos) except -1 nogil:\r\n        \"\"\"Updated statistics by moving samples[pos:new_pos] to the left.\"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef double* sum_total = self.sum_total\r\n        cdef double* var_left = self.var_left\r\n        cdef double* var_right = self.var_right\r\n        cdef double* var_total = self.var_total\r\n\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n        cdef SIZE_t* node_index_mapping = self.node_index_mapping\r\n\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t end = self.end\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        cdef double weighted_n_node_samples = self.weighted_n_node_samples\r\n        cdef SIZE_t i, p, k, offset\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        # Update statistics up to new_pos\r\n        #\r\n        # Given that\r\n        #           sum_left[x] + sum_right[x] = sum_total[x]\r\n        #           var_left[x] + var_right[x] = var_total[x]\r\n        # and that sum_total and var_total are known, we are going to update\r\n        # sum_left and var_left from the direction that require the least amount\r\n        # of computations, i.e. from pos to new_pos or from end to new_pos.\r\n        \r\n        # The invariance of the update is that:\r\n        #   sum_left[k] = sum_{i in Left} w[i] rho[i, k]\r\n        #   var_left[k] = sum_{i in Left} w[i] pointJ[i, k, k]\r\n        # and similarly for the right child. Notably, the second is un-normalized,\r\n        # so to be used for further calculations it needs to be normalized by the child weight.\r\n        if (new_pos - pos) <= (end - new_pos):\r\n            for p in range(pos, new_pos):\r\n                i = samples[p]\r\n                offset = node_index_mapping[i]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(n_outputs):\r\n                    # we add w[i] * rho[i, k] to sum_left[k]\r\n                    sum_left[k] += w * self.rho[offset * n_outputs + k]\r\n                    # we add w[i] * J[i, k, k] to var_left[k]\r\n                    var_left[k] += w * self.pointJ[i, k + k * n_outputs]\r\n\r\n                self.weighted_n_left += w\r\n        else:\r\n            self.reverse_reset()\r\n\r\n            for p in range(end - 1, new_pos - 1, -1):\r\n                i = samples[p]\r\n                offset = node_index_mapping[i]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(n_outputs):\r\n                    # we subtract w[i] * rho[i, k] from sum_left[k]\r\n                    sum_left[k] -= w * self.rho[offset * n_outputs + k]\r\n                    # we subtract w[i] * J[i, k, k] from var_left[k]\r\n                    var_left[k] -= w * self.pointJ[i, k + k * n_outputs]\r\n\r\n                self.weighted_n_left -= w\r\n\r\n        self.weighted_n_right = (self.weighted_n_node_samples -\r\n                                 self.weighted_n_left)\r\n        for k in range(n_outputs):\r\n            sum_right[k] = sum_total[k] - sum_left[k]\r\n            var_right[k] = var_total[k] - var_left[k]\r\n\r\n        self.pos = new_pos\r\n\r\n        return 0\r\n\r\n    cdef void node_value(self, double* dest) noexcept nogil:\r\n        \"\"\"Return the estimated node parameter of samples[start:end] into dest.\"\"\"\r\n        memcpy(dest, self.parameter, self.n_outputs * sizeof(double))\r\n\r\n    cdef void node_jacobian(self, double* dest) noexcept nogil:\r\n        \"\"\"Return the node normalized Jacobian of samples[start:end] into dest in a C contiguous format.\"\"\"\r\n        cdef SIZE_t i, j \r\n        # Jacobian is stored in f-contiguous format for fortran. We translate it to c-contiguous for\r\n        # user interfacing. Moreover, we normalize by weight(node).\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        for i in range(n_outputs):\r\n            for j in range(n_outputs):\r\n                dest[i * n_outputs + j] = self.J[i + j * n_outputs] / self.weighted_n_node_samples\r\n        \r\n    cdef void node_precond(self, double* dest) noexcept nogil:\r\n        \"\"\"Return the normalized node preconditioned value of samples[start:end] into dest.\"\"\"\r\n        cdef SIZE_t i\r\n        for i in range(self.n_outputs):\r\n            dest[i] = self.parameter_pre[i] / self.weighted_n_node_samples\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Evaluate the impurity of the current node, i.e. the impurity of\r\n        samples[start:end]. We use as node_impurity the proxy quantity:\r\n        sum_{k=1}^{n_relevant_outputs} Var(rho[i, k] | i in Node) / n_relevant_outputs\r\n        = sum_{k=1}^{n_relevant_outputs} (E[rho[i, k]^2 | i in Node] - E[rho[i, k] | i in Node]^2) / n_relevant_outputs\r\n        \"\"\"\r\n\r\n        cdef double* sum_total = self.sum_total\r\n        cdef double impurity\r\n        cdef SIZE_t k\r\n\r\n        impurity = self.sq_sum_total / self.weighted_n_node_samples\r\n        for k in range(self.n_relevant_outputs):\r\n            impurity -= (sum_total[k] / self.weighted_n_node_samples)**2.0\r\n\r\n        return impurity / self.n_relevant_outputs\r\n\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil:\r\n        \"\"\"Compute a proxy of the impurity reduction.\r\n        This method is used to speed up the search for the best split. It is a proxy quantity such that the\r\n        split that maximizes this value also maximizes the impurity improvement. It neglects all constant terms\r\n        of the impurity decrease for a given split. The absolute impurity improvement is only computed by the\r\n        impurity_improvement method once the best split has been found.\r\n        Here we use the quantity:\r\n            sum_{k=1}^{n_relevant_outputs} sum_{child in {Left, Right}} weight(child) * E[rho[i, k] | i in child]^2\r\n        Since:\r\n            E[rho[i, k] | i in child] = sum_{i in child} w[i] rhp[i, k] / weight(child) = sum_child[k] / weight(child)\r\n        This simplifies to:\r\n            sum_{k=1}^{n_relevant_outputs} sum_{child in {Left, Right}} sum_child[k]^2 / weight(child)\r\n        \"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n\r\n        cdef SIZE_t k\r\n        cdef double proxy_impurity_left = 0.0\r\n        cdef double proxy_impurity_right = 0.0\r\n\r\n        for k in range(self.n_relevant_outputs):\r\n            proxy_impurity_left += sum_left[k] * sum_left[k]\r\n            proxy_impurity_right += sum_right[k] * sum_right[k]\r\n\r\n        return (proxy_impurity_left / self.weighted_n_left +\r\n                proxy_impurity_right / self.weighted_n_right)\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        \"\"\"Evaluate the impurity in children nodes, i.e. the impurity of the\r\n        left child (samples[start:pos]) and the impurity the right child\r\n        (samples[pos:end]). Here we use the proxy child impurity:\r\n            impurity_child[k] = sum_{i in child} w[i] rho[i, k]^2 / weight(child)\r\n                                - (sum_{i in child} w[i] * rho[i, k] / weight(child))^2\r\n            impurity_child = sum_{k in n_relevant_outputs} impurity_child[k] / n_relevant_outputs\r\n        \"\"\"\r\n\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef SIZE_t* node_index_mapping = self.node_index_mapping\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t start = self.start\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef DOUBLE_t y_ik\r\n\r\n        cdef double sq_sum_left = 0.0\r\n        cdef double sq_sum_right\r\n\r\n        cdef SIZE_t i, p, k, offset\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        # We calculate: sq_sum_left = sum_{i in child} w[i] rho[i, k]^2\r\n        for p in range(start, pos):\r\n            i = samples[p]\r\n            offset = node_index_mapping[i]\r\n\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n\r\n            for k in range(self.n_relevant_outputs):\r\n                y_ik = self.rho[offset * self.n_outputs + k]\r\n                sq_sum_left += w * y_ik * y_ik\r\n        # We calculate sq_sum_right = sq_sum_total - sq_sum_left\r\n        sq_sum_right = self.sq_sum_total - sq_sum_left\r\n\r\n        # We normalize each sq_sum_child by the weight of that child\r\n        impurity_left[0] = sq_sum_left / self.weighted_n_left\r\n        impurity_right[0] = sq_sum_right / self.weighted_n_right\r\n\r\n        # We subtract from the impurity_child, the quantity:\r\n        # sum_{k in n_relevant_outputs} (sum_{i in child} w[i] * rho[i, k] / weight(child))^2\r\n        #   = sum_{k in n_relevant_outputs} (sum_child[k] / weight(child))^2\r\n        for k in range(self.n_relevant_outputs):\r\n            impurity_left[0] -= (sum_left[k] / self.weighted_n_left) ** 2.0\r\n            impurity_right[0] -= (sum_right[k] / self.weighted_n_right) ** 2.0\r\n\r\n        impurity_left[0] /= self.n_relevant_outputs\r\n        impurity_right[0] /= self.n_relevant_outputs\r\n\r\n    cdef double min_eig_left(self) noexcept nogil:\r\n        \"\"\" Calculate proxy for minimum eigenvalue of jacobian of left child. Here we simply\r\n        use the minimum absolute value of the diagonals of the jacobian. This proxy needs to be\r\n        super fast as this calculation happens for every candidate split. So we cannot afford\r\n        anything that is not very simple calculation. We tried a power iteration approximation\r\n        algorithm implemented in `_utils.fast_min_eigv_()`. But even such power iteration algorithm\r\n        is slow as it requires calculating a pseudo-inverse first.\r\n        \"\"\"\r\n        cdef int i\r\n        cdef double min, abs\r\n        min = fabs(self.var_left[0])\r\n        for i in range(self.n_outputs):\r\n            abs = fabs(self.var_left[i])\r\n            if abs < min:\r\n                min = abs\r\n        # The `update()` method maintains that var_left[k] = J_left[k, k], where J_left is the\r\n        # un-normalized jacobian of the left child. Thus we normalize by weight(left)\r\n        return min / self.weighted_n_left\r\n\r\n    cdef double min_eig_right(self) noexcept nogil:\r\n        \"\"\" Calculate proxy for minimum eigenvalue of jacobian of right child\r\n        (see min_eig_left for more details).\r\n        \"\"\"\r\n        cdef int i\r\n        cdef double min, abs\r\n        min = fabs(self.var_right[0])\r\n        for i in range(self.n_outputs):\r\n            abs = fabs(self.var_right[i])\r\n            if abs < min:\r\n                min = abs\r\n        return min / self.weighted_n_right\r\n\r\n\r\ncdef class LinearMomentGRFCriterionMSE(LinearMomentGRFCriterion):\r\n\r\n    def __cinit__(self, SIZE_t n_outputs, SIZE_t n_relevant_outputs, SIZE_t n_features, SIZE_t n_y,\r\n                  SIZE_t n_samples, SIZE_t max_node_samples, UINT32_t random_state):\r\n        \"\"\" Initialize parameters. See `LinearMomentGRFCriterion.__cinit__`.\r\n        \"\"\"\r\n\r\n        # Most initializations are handled by __cinit__ of RegressionCriterion\r\n        # which is always called in cython. We initialize the extras.\r\n        \r\n        # If n_outputs is small, then we can invert the child jacobian matrix quickly and calculate\r\n        # exact children impurities and exact impurity improvements. Otherwise, we use the heterogeneity\r\n        # based calculations for min impurity decrease so as to avoid matrix inversion when evaluating\r\n        # a split, and we only use a jacobian re-weighted heterogeneity score, as a proxy for the impurity\r\n        # improvement to find the best split.\r\n        if self.n_outputs > 2:\r\n            self.proxy_children_impurity = True\r\n        else:\r\n            self.proxy_children_impurity = False\r\n\r\n        # Allocate accumulators. Make sure they are NULL, not uninitialized,\r\n        # before an exception can be raised (which triggers __dealloc__).\r\n        self.J_left = NULL\r\n        self.J_right = NULL\r\n        if self.n_outputs <= 2:\r\n            self.invJ_left = NULL\r\n            self.invJ_right = NULL\r\n            self.parameter_pre_left = NULL\r\n            self.parameter_pre_right = NULL\r\n            self.parameter_left = NULL\r\n            self.parameter_right = NULL\r\n\r\n        # Allocate memory for the proxy for y, which rho in the generalized random forest\r\n        # Since rho is node dependent it needs to be re-calculated and stored for each sample\r\n        # in the node for every node we are investigating\r\n        self.J_left = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n        self.J_right = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n        if self.n_outputs <= 2:\r\n            self.invJ_left = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n            self.invJ_right = <double *> calloc(n_outputs * n_outputs, sizeof(double))\r\n            self.parameter_pre_left = <double *> calloc(n_outputs, sizeof(double))\r\n            self.parameter_pre_right = <double *> calloc(n_outputs, sizeof(double))\r\n            self.parameter_left = <double *> calloc(n_outputs, sizeof(double))\r\n            self.parameter_right = <double *> calloc(n_outputs, sizeof(double))\r\n\r\n        if (self.J_left == NULL or\r\n            self.J_right == NULL):\r\n            raise MemoryError()\r\n        if self.n_outputs <= 2 and (self.invJ_left == NULL or\r\n                                    self.invJ_right == NULL or \r\n                                    self.parameter_pre_left == NULL or\r\n                                    self.parameter_pre_right == NULL or\r\n                                    self.parameter_left == NULL or\r\n                                    self.parameter_right == NULL):\r\n            raise MemoryError()\r\n\r\n    def __dealloc__(self):\r\n        # __dealloc__ of parents is also called. Deallocating the extras\r\n        free(self.J_left)\r\n        free(self.J_right)\r\n        if self.n_outputs <= 2:\r\n            free(self.invJ_left)\r\n            free(self.invJ_right)\r\n            free(self.parameter_pre_left)\r\n            free(self.parameter_pre_right)\r\n            free(self.parameter_left)\r\n            free(self.parameter_right)\r\n\r\n    cdef int reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=start.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * self.n_outputs * sizeof(double)\r\n        memset(self.J_left, 0, n_bytes)\r\n        memcpy(self.J_right, self.J, n_bytes)\r\n        if self.n_outputs <= 2:\r\n            n_bytes = self.n_outputs * sizeof(double)\r\n            memset(self.parameter_pre_left, 0, n_bytes)\r\n            memcpy(self.parameter_pre_right, self.parameter_pre, n_bytes)\r\n        return LinearMomentGRFCriterion.reset(self)\r\n\r\n    cdef int reverse_reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=end.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * self.n_outputs * sizeof(double)\r\n        memset(self.J_right, 0, n_bytes)\r\n        memcpy(self.J_left, self.J, n_bytes)\r\n        if self.n_outputs <= 2:\r\n            n_bytes = self.n_outputs * sizeof(double)\r\n            memset(self.parameter_pre_right, 0, n_bytes)\r\n            memcpy(self.parameter_pre_left, self.parameter_pre, n_bytes)\r\n        return LinearMomentGRFCriterion.reverse_reset(self)\r\n\r\n    cdef int update(self, SIZE_t new_pos) except -1 nogil:\r\n        \"\"\"Updated statistics by moving samples[pos:new_pos] to the left.\r\n        We need to re-implement this method, as now we need to keep track of the whole left\r\n        and right jacobian matrices, not just the diagonals.\r\n        \"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef double* sum_total = self.sum_total\r\n        cdef double* J_left = self.J_left\r\n        cdef double* J_right = self.J_right\r\n        cdef double* J = self.J\r\n        cdef double* var_left = self.var_left\r\n        cdef double* var_right = self.var_right\r\n        cdef double* parameter_pre = self.parameter_pre\r\n        cdef double* parameter_pre_left = self.parameter_pre_left\r\n        cdef double* parameter_pre_right = self.parameter_pre_right\r\n\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef SIZE_t* node_index_mapping = self.node_index_mapping\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n        cdef double weighted_n_node_samples = self.weighted_n_node_samples\r\n\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t end = self.end\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        cdef SIZE_t i, p, k, m, offset\r\n        cdef double slm, srm\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        # The invariance of the update is that:\r\n        #   sum_left[k] = sum_{i in Left} w[i] rho[i, k]\r\n        #   J_left[k, m] = sum_{i in Left} w[i] pointJ[i, k, m]\r\n        #   var_left[k] = sum_{i in Left} w[i] pointJ[i, k, k]\r\n        # and similarly for the right child. Notably, the second and third are un-normalized by the total weight\r\n        # of the samples in the child. Also if n_outputs <= 2, then a parameter_pre_left and right is maintained:\r\n        #   parameter_pre_left[k] = sum_{i in Left} w[i] alpha[i, k]\r\n        # to be used for left and right child parameter estimation.\r\n        if (new_pos - pos) <= (end - new_pos):\r\n            for p in range(pos, new_pos):\r\n                i = samples[p]\r\n                offset = node_index_mapping[i]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(n_outputs):\r\n                    sum_left[k] += w * self.rho[offset * n_outputs + k]\r\n\r\n                # update the whole jacobian matrix of left and right child not just diagonals\r\n                for m in range(n_outputs):\r\n                    for k in range(n_outputs):             \r\n                        J_left[k + m * n_outputs] += w * self.pointJ[i, k + m * n_outputs]\r\n                    var_left[m] = J_left[m + m * n_outputs]\r\n                    if self.n_outputs <= 2:\r\n                        parameter_pre_left[m] += w * self.alpha[i, m]\r\n\r\n                self.weighted_n_left += w\r\n        else:\r\n            self.reverse_reset()\r\n\r\n            for p in range(end - 1, new_pos - 1, -1):\r\n                i = samples[p]\r\n                offset = node_index_mapping[i]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(n_outputs):\r\n                    sum_left[k] -= w * self.rho[offset * n_outputs + k]\r\n\r\n                # update the whole jacobian matrix of left and right child not just diagonals\r\n                for m in range(n_outputs):\r\n                    for k in range(n_outputs):\r\n                        J_left[k + m * n_outputs] -= w * self.pointJ[i, k + m * n_outputs]\r\n                    var_left[m] = J_left[m + m * n_outputs]\r\n                    if self.n_outputs <= 2:\r\n                        parameter_pre_left[m] -= w * self.alpha[i, m]\r\n\r\n                self.weighted_n_left -= w\r\n\r\n        self.weighted_n_right = (weighted_n_node_samples -\r\n                                 self.weighted_n_left)\r\n        for k in range(n_outputs):\r\n            sum_right[k] = sum_total[k] - sum_left[k]\r\n        for m in range(n_outputs):\r\n            for k in range(n_outputs):\r\n                J_right[k + m * n_outputs] = J[k + m * n_outputs] - J_left[k + m * n_outputs]\r\n            var_right[m] = J_right[m + m * n_outputs]\r\n            if self.n_outputs <= 2:\r\n                parameter_pre_right[m] = parameter_pre[m] - parameter_pre_left[m]\r\n\r\n        self.pos = new_pos\r\n\r\n        return 0\r\n\r\n    cdef double proxy_node_impurity(self) noexcept nogil:\r\n        \"\"\" For n_outputs > 2, we use parent class children impurity, which is slightly different than\r\n        the MSE criterion. Thus for `min_impurity_decrease` purposes we also use the `node_impurity` of\r\n        the parent class and not the MSE impurity.\r\n        \"\"\"\r\n        if self.n_outputs > 2:\r\n            return LinearMomentGRFCriterion.node_impurity(self)\r\n        else:\r\n            return self.node_impurity()\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Evaluate the impurity of the current node, i.e. the impurity of samples[start:end].\r\n        Here we use the MSE criterion:\r\n\r\n            impurity(Node) = E[y^2 | X in Node] - theta(node).T (J(node)/weight(node)) theta(node)\r\n\r\n        where J(node) / weight(node) is the normalized jacobian of the node: E[J | X in Node].\r\n        - In the case of a causal tree, this is equivalent to the MSE of predicting y:\r\n            impurity(node) = E[( y - <theta(node), T> )^2 | X in Node]\r\n        - In the case of an IV tree, assuming that Z = E[T | Z] (i.e. the optimal instruments are used), then this\r\n          is approximately equivalent to the MSE of the projected treatment:\r\n            impurity(node) ~ E[( y - <theta(node), E[T|Z]> )^2 | X in Node]\r\n          There is a small discrepancy in that the latter has a negative part of\r\n            theta(node)' E[ E[T|Z] E[T|Z].T ] theta(node),\r\n          while we use theta(node).T E[ T E[T|Z].T ] theta(node). In fairly reasonably large samples the two should be\r\n          approximately the same.\r\n        \"\"\"\r\n        cdef SIZE_t k, m\r\n        cdef DOUBLE_t pk\r\n        cdef double impurity\r\n        cdef SIZE_t n_outputs = self.n_outputs\r\n        impurity = self.y_sq_sum_total / self.weighted_n_node_samples\r\n        for k in range(n_outputs):\r\n            pk = self.parameter[k]\r\n            for m in range(n_outputs):\r\n                impurity -= pk * self.parameter[m] * self.J[k + m * n_outputs] / self.weighted_n_node_samples\r\n        return impurity\r\n\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil:\r\n        \"\"\"Compute a proxy of the impurity reduction\r\n        This method is used to speed up the search for the best split. It is a proxy quantity such that the\r\n        split that maximizes this value also maximizes the impurity improvement. It neglects all constant terms\r\n        of the impurity decrease for a given split. The absolute impurity improvement is only computed by the\r\n        impurity_improvement method once the best split has been found.\r\n\r\n        If n_outputs <= 2, we use an exact proxy for impurity improvement:\r\n            sum_{child in {Left, Right}} theta(child).T J(child) theta(child).\r\n        where we remind that J(child) is the un-normalized jacobian of the child node.\r\n        Since, computing theta(child) requires inversion of J(child), and since this method is called for\r\n        every candidate split, for n_outputs > 2, we avoid matrix inversion. Instead, we use an\r\n        approximate proxy_impurity_improvement:\r\n            sum_{child in {Left, Right}} E[rho[i] | i in child].T J(child) E[rho[i] | i in child]\r\n        So this is roughly a heterogeneity criterion but penalizes splits with small minimum eigenvalue\r\n        in J(child). The above criterion uses the approximation fact that:\r\n            theta(child) ~ theta(node) + E[rho[i] | i in child]\r\n        and we only use the rho part in the impurity improvement.\r\n        \"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef DOUBLE_t* J_left = self.J_left\r\n        cdef DOUBLE_t* J_right = self.J_right\r\n\r\n        cdef SIZE_t k, m\r\n        cdef double slm, srm\r\n        cdef double proxy_impurity_left = 0.0\r\n        cdef double proxy_impurity_right = 0.0\r\n\r\n        if self.n_outputs <= 2:\r\n            # We estimate child params\r\n            _fast_invJ(J_left, self.invJ_left, self.n_outputs, clip=1e-6)\r\n            _fast_invJ(J_right, self.invJ_right, self.n_outputs, clip=1e-6)\r\n            for k in range(self.n_outputs):\r\n                self.parameter_left[k] = 0.0\r\n                self.parameter_right[k] = 0.0\r\n                for m in range(self.n_outputs):\r\n                    self.parameter_left[k] += self.invJ_left[k + m * self.n_outputs] * self.parameter_pre_left[m]\r\n                    self.parameter_right[k] += self.invJ_right[k + m * self.n_outputs] * self.parameter_pre_right[m]\r\n            # We calculate exact improvement of criterion\r\n            proxy_impurity_left = 0.0\r\n            proxy_impurity_right = 0.0\r\n            for m in range(self.n_outputs):\r\n                slm = self.parameter_left[m]\r\n                srm = self.parameter_right[m]\r\n                for k in range(self.n_outputs):\r\n                    proxy_impurity_left += ((self.parameter_left[k]) * slm *\r\n                                            J_left[k + m * self.n_outputs])\r\n                    proxy_impurity_right += ((self.parameter_right[k]) * srm *\r\n                                            J_right[k + m * self.n_outputs])\r\n            return (proxy_impurity_left + proxy_impurity_right)\r\n        else:\r\n            for m in range(self.n_outputs):\r\n                slm = sum_left[m] / self.weighted_n_left\r\n                srm = sum_right[m] / self.weighted_n_right\r\n                for k in range(self.n_outputs):\r\n                    proxy_impurity_left += ((sum_left[k] / self.weighted_n_left) * slm * \r\n                                            J_left[k + m * self.n_outputs])\r\n                    proxy_impurity_right += ((sum_right[k] / self.weighted_n_right) * srm *\r\n                                            J_right[k + m * self.n_outputs])\r\n\r\n            return (proxy_impurity_left + proxy_impurity_right)\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        \"\"\"Evaluate the impurity in children nodes, i.e. the impurity of the\r\n        left child (samples[start:pos]) and the impurity the right child\r\n        (samples[pos:end]). For n_outputs > 2, we use the parent class children impurity.\r\n        Fro n_outputs <=2, we calculate child parameters and the exact MSE criterion on\r\n        each child node, i.e.:\r\n            impurity(child) = E[y^2 | X in child] - theta(child).T (J(child)/weight(child)) theta(child)\r\n        \"\"\"\r\n\r\n        if self.n_outputs > 2:\r\n            LinearMomentGRFCriterion.children_impurity(self, impurity_left, impurity_right)\r\n            return\r\n\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef SIZE_t* node_index_mapping = self.node_index_mapping\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t start = self.start\r\n        cdef DOUBLE_t y_ik\r\n\r\n        cdef double y_sq_sum_left = 0.0\r\n        cdef double y_sq_sum_right\r\n        cdef double proxy_impurity_left, proxy_impurity_right, slm, srm\r\n\r\n        cdef SIZE_t i, p, k, m\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        # We calculate: sq_sum_left = sum_{i in child} w[i] rho[i, k]^2\r\n        for p in range(start, pos):\r\n            i = samples[p]\r\n\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n\r\n            for k in range(self.n_y):\r\n                y_ik = self.y[i, k]\r\n                y_sq_sum_left += w * y_ik * y_ik\r\n        # We calculate sq_sum_right = sq_sum_total - sq_sum_left\r\n        y_sq_sum_right = self.y_sq_sum_total - y_sq_sum_left\r\n\r\n        # We normalize each sq_sum_child by the weight of that child\r\n        impurity_left[0] = y_sq_sum_left / self.weighted_n_left\r\n        impurity_right[0] = y_sq_sum_right / self.weighted_n_right\r\n\r\n        _fast_invJ(self.J_left, self.invJ_left, self.n_outputs, clip=1e-6)\r\n        _fast_invJ(self.J_right, self.invJ_right, self.n_outputs, clip=1e-6)\r\n        for k in range(self.n_outputs):\r\n            self.parameter_left[k] = 0.0\r\n            self.parameter_right[k] = 0.0\r\n            for m in range(self.n_outputs):\r\n                self.parameter_left[k] += self.invJ_left[k + m * self.n_outputs] * self.parameter_pre_left[m]\r\n                self.parameter_right[k] += self.invJ_right[k + m * self.n_outputs] * self.parameter_pre_right[m]\r\n        proxy_impurity_left = 0.0\r\n        proxy_impurity_right = 0.0\r\n        for m in range(self.n_outputs):\r\n            slm = self.parameter_left[m]\r\n            srm = self.parameter_right[m]\r\n            for k in range(self.n_outputs):\r\n                proxy_impurity_left += ((self.parameter_left[k]) * slm *\r\n                                        self.J_left[k + m * self.n_outputs])\r\n                proxy_impurity_right += ((self.parameter_right[k]) * srm *\r\n                                        self.J_right[k + m * self.n_outputs])\r\n        impurity_left[0] -= proxy_impurity_left / self.weighted_n_left\r\n        impurity_right[0] -= proxy_impurity_right / self.weighted_n_right\r\n\r\n\r\n    cdef double _get_min_eigv(self, DOUBLE_t* J_child, DOUBLE_t* var_child,\r\n                              double weighted_n_child) except -1 nogil:\r\n        \"\"\" Since in this class we keep track of the whole jacobian of each child, we can\r\n        afford a better proxy for the minimum eigenvalue. Here we propose that on top of the minimum of\r\n        diagonal entries, we also take the minimum of that and the sqrt of every pairwise determinant.\r\n        This roughly corresponds to pairwise Pearson correlation coefficient for each pair of variables\r\n        if the jacobian corresponds to a covariance matrix. If for instance, the jacobian is the co-variance\r\n        of residualized treatment variables, i.e. J[i, j] = E[ Tres[i] * Tres[j] | X in node], then\r\n        the determinant is:\r\n\r\n            E[Tres[i]^2] E[Tres[j]^2] - E[Tres[i] * Tres[j]]^2\r\n                = E[Tres[i]^2] E[Tres[j]^2] (1 -  E[Tres[i] * Tres[j]]^2 / E[Tres[i]^2] E[Tres[j]^2])\r\n                = sigma(Tres[i])^2 * sigma(Tres[j])^2 (1 - rho(Tres[i], Tres[j])^2)\r\n            where rho(X, Y) is the pearson correlation coefficient of two random variables X, Y.\r\n\r\n        This is close to zero if any two treatment variables are very co-linear for samples in the node,\r\n        which implies that there we wont be able to separate the effect of each individual variable\r\n        locally within the node. This quantity needs to be larger or equal to the parameter `min_eig_leaf`,\r\n        for the split to be considered valid.\r\n\r\n        Example. In the causal tree setting, if we have a single treatment variable that *is not residualized*,\r\n        but we append a constant treatment of 1 (i.e. by `fit_intercept=True`), then the pairwise determinant with\r\n        that constant becomes:\r\n            sqrt(E[T[i]^2] - E[T[i]]^2) = sqrt(Var(T[i])) < `min_eig_leaf`\r\n        Thus this constraint implies that we must have a standard deviation of T within the leaf of at least\r\n        `min_eig_leaf`.\r\n\r\n        If we have a single treatment variable that *is residualized*, and we append a constant\r\n        treatment of 1 (i.e. by `fit_intercept=True`), then the pairwise determinant with that constant becomes:\r\n            sqrt(E[Tres[i]^2] - E[Tres[i]]^2) = sqrt(Var[Tres[i]^2]) ~ sqrt(Var(T[i])) > `min_eig_leaf`\r\n        Thus this constraint is for `min_eig_leaf` <= 1 redundant as compared to the diagonal constraint:\r\n            E[Tres[i]^2] ~ Var(T[i]) > `min_eig_leaf`\r\n        in many samples when E[Tres[i]]=0 and the T residual model is relatively unbiased.\r\n        \"\"\"\r\n        cdef SIZE_t i, j, n_outputs\r\n        cdef double min, abs, rescale, Jii, Jij, Jji, Jjj\r\n        n_outputs = self.n_outputs\r\n        # take the min of the square of the diagonals and all pairwise determinants.\r\n        # then at the end we take the root of the min.\r\n        min = var_child[0]\r\n        min *= min\r\n        for i in range(n_outputs):\r\n            abs = fabs(var_child[i])\r\n            abs *= abs\r\n            if abs < min:\r\n                min = abs\r\n            Jii = J_child[i + i * n_outputs]\r\n            for j in range(n_outputs):\r\n                if j != i:\r\n                    Jij = J_child[i + j * n_outputs]\r\n                    Jji = J_child[j + i * n_outputs]\r\n                    Jjj = J_child[j + j * n_outputs]\r\n                    # Since this contains products of un-scaled J_child quantities, we need to multiply by the\r\n                    # square of the rescale factor\r\n                    abs = fabs(Jii * Jjj - Jij * Jji)\r\n                    if abs < min:\r\n                        min = abs\r\n        # Since J_child and var_child that are maintained by `update()` contain variables that are\r\n        # un-normalized, we normalize by child weight.\r\n        return sqrt(min) / weighted_n_child\r\n\r\n    cdef double min_eig_left(self) noexcept nogil:\r\n        return self._get_min_eigv(self.J_left, self.var_left, self.weighted_n_left)\r\n    \r\n    cdef double min_eig_right(self) noexcept nogil:\r\n        return self._get_min_eigv(self.J_right, self.var_right, self.weighted_n_right)\r\n\r\n\r\ncdef void _fast_invJ(DOUBLE_t* J, DOUBLE_t* invJ, SIZE_t n, double clip) noexcept nogil:\r\n    cdef double det\r\n    if n == 1:\r\n        invJ[0] = 1.0 / J[0] if fabs(J[0]) >= clip else 1/clip     # Explicit inverse calculation\r\n    elif n == 2:\r\n        # Explicit inverse calculation\r\n        det = J[0] * J[3] - J[1] * J[2]\r\n        if fabs(det) < clip:\r\n            det = clip\r\n        invJ[0] = J[3] / det\r\n        invJ[1] = - J[1] / det\r\n        invJ[2] = - J[2] / det\r\n        invJ[3] = J[0] / det\r\n"
  },
  {
    "path": "econml/grf/_utils.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\n\r\nctypedef np.npy_float64 DTYPE_t          # Type of X\r\nctypedef np.npy_float64 DOUBLE_t         # Type of y, sample_weight\r\nctypedef np.npy_intp SIZE_t              # Type for indices and counters\r\nctypedef np.npy_int32 INT32_t            # Signed 32 bit integer\r\nctypedef np.npy_uint32 UINT32_t          # Unsigned 32 bit integer\r\n\r\ncpdef bint matinv(DOUBLE_t[::1, :] a, DOUBLE_t[::1, :] inv_a) noexcept nogil\r\n\r\ncdef bint matinv_(DOUBLE_t* a, DOUBLE_t* inv_a, int m) noexcept nogil\r\n\r\ncpdef void lstsq(DOUBLE_t[::1,:] a, DOUBLE_t[::1,:] b, DOUBLE_t[::1, :] sol, bint copy_b=*) noexcept nogil\r\n\r\ncdef void lstsq_(DOUBLE_t* a, DOUBLE_t* b, DOUBLE_t* sol, int m, int n, int ldb, int nrhs, bint copy_b=*) noexcept nogil\r\n\r\ncpdef void pinv(DOUBLE_t[::1,:] a, DOUBLE_t[::1, :] sol) noexcept nogil\r\n\r\ncdef void pinv_(DOUBLE_t* a, DOUBLE_t* sol, int m, int n) noexcept nogil\r\n\r\ncpdef double fast_max_eigv(DOUBLE_t[::1, :] A, int reps, UINT32_t random_state) noexcept nogil\r\n\r\ncdef double fast_max_eigv_(DOUBLE_t* A, int n, int reps, UINT32_t* random_state) noexcept nogil\r\n\r\ncpdef double fast_min_eigv(DOUBLE_t[::1, :] A, int reps, UINT32_t random_state) noexcept nogil\r\n\r\ncdef double fast_min_eigv_(DOUBLE_t* A, int n, int reps, UINT32_t* random_state) noexcept nogil"
  },
  {
    "path": "econml/grf/_utils.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom libc.stdlib cimport free\r\nfrom libc.stdlib cimport malloc\r\nfrom libc.stdlib cimport calloc\r\nfrom libc.stdlib cimport realloc\r\nfrom libc.string cimport memcpy\r\nfrom libc.math cimport log as ln\r\nfrom libc.stdlib cimport abort\r\n\r\nfrom scipy.linalg.cython_lapack cimport dgelsy, dgetrf, dgetri, dgecon, dlacpy, dlange\r\n\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\nfrom ..tree._utils cimport rand_int\r\n\r\n\r\nrcond_ = np.finfo(np.float64).eps\r\ncdef inline double RCOND = rcond_\r\n\r\n\r\n\r\n# =============================================================================\r\n# Linear Algebra Functions\r\n# =============================================================================\r\n\r\n\r\ncpdef bint matinv(DOUBLE_t[::1, :] a, DOUBLE_t[::1, :] inv_a) noexcept nogil:\r\n    \"\"\" Compute matrix inverse and store it in inv_a.\r\n    \"\"\"\r\n    cdef int m, n\r\n    m = a.shape[0]\r\n    if not (m == a.shape[1]):\r\n        raise ValueError(\"Can only invert square matrices!\")\r\n    return matinv_(&a[0, 0], &inv_a[0, 0], m)\r\n\r\ncdef bint matinv_(DOUBLE_t* a, DOUBLE_t* inv_a, int m) noexcept nogil:\r\n    \"\"\" Compute matrix inverse of matrix a of size (m, m) and store it in inv_a.\r\n    \"\"\"\r\n    cdef:\r\n        int* pivot\r\n        DOUBLE_t* work\r\n        int lda, INFO, Lwork\r\n        bint failed\r\n\r\n    lda = m\r\n    Lwork = m**2\r\n    pivot = <int*> malloc(m * sizeof(int))\r\n    work = <DOUBLE_t*> malloc(Lwork * sizeof(DOUBLE_t))\r\n    failed = False\r\n    if (pivot==NULL or work==NULL):\r\n        with gil:\r\n            raise MemoryError()\r\n\r\n    try:\r\n        memcpy(inv_a, a, m * m * sizeof(DOUBLE_t))\r\n\r\n        #Conduct the LU factorization of the array a\r\n        dgetrf(&m, &m, inv_a, &lda, pivot, &INFO)\r\n        if not (INFO == 0):\r\n            failed = True\r\n        else:\r\n            #Now use the LU factorization and the pivot information to invert\r\n            dgetri(&m, inv_a, &lda, pivot, work, &Lwork, &INFO)\r\n            if not (INFO == 0):\r\n                failed = True\r\n    finally:\r\n        free(pivot)\r\n        free(work)\r\n\r\n    return (not failed)\r\n\r\n\r\n\r\ncpdef void lstsq(DOUBLE_t[::1, :] a, DOUBLE_t[::1, :] b, DOUBLE_t[::1, :] sol, bint copy_b=True) noexcept nogil:\r\n    \"\"\" Compute solution to least squares problem min ||b - a sol||_2^2,\r\n    where a is a matrix of size (m, n), b is (m, nrhs). Store (n, nrhs) solution in sol.\r\n    The memory view b, must have at least max(m, n) rows. If m < n, then pad remainder with zeros.\r\n    If copy_b=True, then b is left unaltered on output. Otherwise b is altered by this call.\r\n    \"\"\"\r\n    cdef int m, n, nrhs\r\n    m = a.shape[0]\r\n    n = a.shape[1]\r\n    nrhs = b.shape[1]\r\n    ldb = b.shape[0]\r\n    if ldb < max(m, n):\r\n        with gil:\r\n            raise ValueError(\"Matrix b must have first dimension at least max(a.shape[0], a.shape[1]). \"\r\n                             \"Please pad with zeros.\")\r\n    if (sol.shape[0] != n) or (sol.shape[1] != nrhs):\r\n        with gil:\r\n            raise ValueError(\"Matrix sol must have dimensions (a.shape[1], b.shape[1]).\")\r\n    lstsq_(&a[0, 0], &b[0, 0], &sol[0, 0], m, n, ldb, nrhs, copy_b)\r\n\r\n\r\ncdef void lstsq_(DOUBLE_t* a, DOUBLE_t* b, DOUBLE_t* sol, int m, int n, int ldb, int nrhs, bint copy_b=True) noexcept nogil:\r\n    \"\"\" Compute solution to least squares problem min ||b - a sol||_2^2,\r\n    where a is a matrix of size (m, n), b is (m, nrhs). Store (n, nrhs) solution in sol.\r\n    The leading (row) dimension b, must be at least max(m, n). If m < n, then pad remainder with zeros.\r\n    If copy_b=True, then b is left unaltered on output. Otherwise b is altered by this call.\r\n    \"\"\"\r\n    cdef:\r\n        int lda, rank, info, lwork, n_out\r\n        double rcond\r\n        Py_ssize_t i, j\r\n        #array pointers\r\n        int* jpvt\r\n        double* work\r\n        double* b_copy    \r\n        char* UPLO = 'O' #Any letter other then 'U' or 'L' will copy entire array\r\n    lda = m\r\n    if ldb < max(m, n):\r\n        with gil:\r\n            raise ValueError(\"Matrix b must have dimension at least max(a.shape[0], a.shape[1]). \"\r\n                             \"Please pad with zeros.\")\r\n    rcond = max(m, n) * RCOND\r\n    jpvt = <int*> calloc(n, sizeof(int))\r\n    lwork = max(min(n, m) + 3 * n + 1, 2 * min(n, m) + nrhs)\r\n    work = <DOUBLE_t*> malloc(lwork * sizeof(DOUBLE_t))\r\n\r\n    # TODO. can we avoid all this malloc and copying in our context?\r\n    a_copy = <DOUBLE_t*> calloc(lda * n, sizeof(DOUBLE_t))\r\n    if copy_b:\r\n        b_copy = <DOUBLE_t*> calloc(ldb * nrhs, sizeof(DOUBLE_t))\r\n    else:\r\n        b_copy = b\r\n    try:\r\n        dlacpy(UPLO, &lda, &n, a, &lda, a_copy, &lda)\r\n        if copy_b:\r\n            dlacpy(UPLO, &ldb, &nrhs, b, &ldb, b_copy, &ldb)\r\n\r\n        dgelsy(&m, &n, &nrhs, a_copy, &lda, b_copy, &ldb,\r\n               &jpvt[0], &rcond, &rank, &work[0], &lwork, &info)\r\n\r\n        for i in range(n):\r\n            for j in range(nrhs):\r\n                sol[i + j * n] = b_copy[i + j * ldb]\r\n\r\n    finally:\r\n        free(jpvt)\r\n        free(work)\r\n        free(a_copy)\r\n        if copy_b:\r\n            free(b_copy)\r\n\r\ncpdef void pinv(DOUBLE_t[::1,:] a, DOUBLE_t[::1, :] sol) noexcept nogil:\r\n    \"\"\" Compute pseudo-inverse of (m, n) matrix a and store it in (n, m) matrix sol.\r\n    Matrix a is left un-altered by this call.\r\n    \"\"\"\r\n    cdef int m = a.shape[0]\r\n    cdef int n = a.shape[1]\r\n    pinv_(&a[0, 0], &sol[0, 0], m, n)\r\n\r\ncdef void pinv_(DOUBLE_t* a, DOUBLE_t* sol, int m, int n) noexcept nogil:\r\n    \"\"\" Compute pseudo-inverse of (m, n) matrix a and store it in (n, m) matrix sol.\r\n    Matrix a is left un-altered by this call.\r\n    \"\"\"\r\n    # TODO. can we avoid this mallon in our context. Maybe create some fixed memory allocations?\r\n    cdef int ldb = max(m, n)\r\n    cdef double* b = <DOUBLE_t*> calloc(ldb * m, sizeof(double))\r\n    cdef Py_ssize_t i\r\n    for i in range(m):\r\n        b[i + i * ldb] = 1.0\r\n    try:\r\n        lstsq_(a, b, sol, m, n, ldb, m, copy_b=False)\r\n\r\n    finally:\r\n        free(b)\r\n\r\n\r\ncpdef double fast_max_eigv(DOUBLE_t[::1, :] A, int reps, UINT32_t random_state) noexcept nogil:\r\n    \"\"\" Calculate approximation of maximum eigenvalue via randomized power iteration algorithm.\r\n    See e.g.: http://theory.stanford.edu/~trevisan/expander-online/lecture03.pdf\r\n    Use reps repetition and random seed based on random_state\r\n    \"\"\"\r\n    return fast_max_eigv_(&A[0, 0], A.shape[0], reps, &random_state)\r\n\r\ncdef double fast_max_eigv_(DOUBLE_t* A, int n, int reps, UINT32_t* random_state) noexcept nogil:\r\n    \"\"\" Calculate approximation of maximum eigenvalue via randomized power iteration algorithm.\r\n    See e.g.: http://theory.stanford.edu/~trevisan/expander-online/lecture03.pdf\r\n    Use reps repetition and random seed based on random_state\r\n    \"\"\"\r\n    cdef int t, i, j\r\n    cdef double normx, Anormx\r\n    cdef double* xnew\r\n    cdef double* xold\r\n    cdef double* temp\r\n    xnew = NULL\r\n    xold = NULL\r\n\r\n    try:\r\n        xnew = <double*> calloc(n, sizeof(double))\r\n        xold = <double*> calloc(n, sizeof(double))\r\n\r\n        if xnew == NULL or xold == NULL:\r\n            with gil:\r\n                raise MemoryError()\r\n        for i in range(n):\r\n            xold[i] = (1 - 2*rand_int(0, 2, random_state))\r\n        for t in range(reps):\r\n            for i in range(n):\r\n                xnew[i] = 0\r\n                for j in range(n):\r\n                    xnew[i] += A[i + j * n] * xold[j]\r\n            temp = xold\r\n            xold = xnew\r\n            xnew = temp\r\n        normx = 0\r\n        Anormx = 0\r\n        for i in range(n):\r\n            normx += xnew[i] * xnew[i]\r\n            for j in range(n):\r\n                Anormx += xnew[i] * A[i + j * n] * xnew[j]\r\n\r\n        return Anormx / normx\r\n    finally:\r\n        free(xnew)\r\n        free(xold)\r\n\r\n\r\ncpdef double fast_min_eigv(DOUBLE_t[::1, :] A, int reps, UINT32_t random_state) noexcept nogil:\r\n    \"\"\" Calculate approximation of minimum eigenvalue via randomized power iteration algorithm.\r\n    See e.g.: http://theory.stanford.edu/~trevisan/expander-online/lecture03.pdf\r\n    Use reps repetition and random seed based on random_state\r\n    \"\"\"\r\n    return fast_min_eigv_(&A[0, 0], A.shape[0], reps, &random_state)\r\n\r\ncdef double fast_min_eigv_(DOUBLE_t* A, int n, int reps, UINT32_t* random_state) noexcept nogil:\r\n    \"\"\" Calculate approximation of minimum eigenvalue via randomized power iteration algorithm.\r\n    See e.g.: http://theory.stanford.edu/~trevisan/expander-online/lecture03.pdf\r\n    Use reps repetition and random seed based on random_state.\r\n    \"\"\"\r\n    cdef int t, i, j\r\n    cdef double normx, Anormx\r\n    cdef double* xnew\r\n    cdef double* xold\r\n    cdef double* temp\r\n    cdef double* update\r\n    xnew = NULL\r\n    xold = NULL\r\n\r\n    try:\r\n        xnew = <double*> calloc(n, sizeof(double))\r\n        xold = <double*> calloc(n, sizeof(double))\r\n        update = <double*> calloc(n, sizeof(double))\r\n\r\n        if xnew == NULL or xold == NULL or update == NULL:\r\n            with gil:\r\n                raise MemoryError()\r\n        for i in range(n):\r\n            xold[i] = (1 - 2*rand_int(0, 2, random_state))\r\n        for t in range(reps):\r\n            lstsq_(A, xold, update, n, n, n, 1, copy_b=False)\r\n            for i in range(n):\r\n                xnew[i] = 0\r\n                for j in range(n):\r\n                    xnew[i] += update[i]\r\n            temp = xold\r\n            xold = xnew\r\n            xnew = temp\r\n        normx = 0\r\n        Anormx = 0\r\n        for i in range(n):\r\n            normx += xnew[i] * xnew[i]\r\n            for j in range(n):\r\n                Anormx += xnew[i] * A[i + j * n] * xnew[j]\r\n\r\n        return Anormx / normx\r\n    finally:\r\n        free(xnew)\r\n        free(xold)\r\n        free(update)\r\n"
  },
  {
    "path": "econml/grf/classes.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numpy as np\r\nfrom ..utilities import cross_product\r\nfrom ._base_grf import BaseGRF\r\nfrom ..utilities import check_inputs\r\nfrom sklearn.base import BaseEstimator, clone\r\nfrom sklearn.utils import check_X_y\r\n\r\n__all__ = [\"MultiOutputGRF\",\r\n           \"CausalForest\",\r\n           \"CausalIVForest\",\r\n           \"RegressionForest\"]\r\n\r\n# =============================================================================\r\n# A MultOutputWrapper for GRF classes\r\n# =============================================================================\r\n\r\n\r\nclass MultiOutputGRF(BaseEstimator):\r\n    \"\"\"\r\n    Simple wrapper estimator that enables multiple outcome labels for grf estimators that only accept a single outcome.\r\n\r\n    Similar to MultiOutputRegressor.\r\n    \"\"\"\r\n\r\n    def __init__(self, estimator):\r\n        self.estimator = estimator\r\n\r\n    def fit(self, X, T, y, *, sample_weight=None, **kwargs):\r\n        y, T, X, _ = check_inputs(y, T, X, W=None, multi_output_T=True, multi_output_Y=True)\r\n        y = np.atleast_1d(y)\r\n        if y.ndim == 1:\r\n            y = np.reshape(y, (-1, 1))\r\n        self.estimators_ = [clone(self.estimator) for _ in range(y.shape[1])]\r\n        [estimator.fit(X, T, y[:, [it]], sample_weight=sample_weight, **kwargs)\r\n         for it, estimator in enumerate(self.estimators_)]\r\n        return self\r\n\r\n    def predict(self, X, interval=False, alpha=0.05):\r\n        if interval:\r\n            pred, lb, ub = zip(*[estimator.predict(X, interval=interval, alpha=alpha)\r\n                                 for estimator in self.estimators_])\r\n            return np.moveaxis(np.array(pred), 0, 1), np.moveaxis(np.array(lb), 0, 1), np.moveaxis(np.array(ub), 0, 1)\r\n        else:\r\n            pred = [estimator.predict(X, interval=interval, alpha=alpha) for estimator in self.estimators_]\r\n            return np.moveaxis(np.array(pred), 0, 1)\r\n\r\n    def predict_and_var(self, X):\r\n        pred, var = zip(*[estimator.predict_and_var(X) for estimator in self.estimators_])\r\n        return np.moveaxis(np.array(pred), 0, 1), np.moveaxis(np.array(var), 0, 1)\r\n\r\n    def predict_projection_and_var(self, X, projector):\r\n        pred, var = zip(*[estimator.predict_projection_and_var(X, projector) for estimator in self.estimators_])\r\n        return np.moveaxis(np.array(pred), 0, 1), np.moveaxis(np.array(var), 0, 1)\r\n\r\n    def oob_predict(self, Xtrain):\r\n        pred = [estimator.oob_predict(Xtrain) for estimator in self.estimators_]\r\n        return np.moveaxis(np.array(pred), 0, 1)\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        res = [estimator.feature_importances(max_depth=max_depth, depth_decay_exponent=depth_decay_exponent)\r\n               for estimator in self.estimators_]\r\n        return np.array(res)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n    def __len__(self):\r\n        \"\"\"Return the number of estimators in the ensemble for each target y.\"\"\"\r\n        return len(self.estimators_[0].estimators_)\r\n\r\n    def __getitem__(self, index):\r\n        \"\"\"Return a list of the index'th estimator in the ensemble for each target y.\"\"\"\r\n        return [forest[index] for forest in self.estimators_]\r\n\r\n    def __iter__(self):\r\n        \"\"\"Return iterator over tuples of estimators for each target y in the ensemble.\"\"\"\r\n        return iter(zip(*self.estimators_))\r\n\r\n# =============================================================================\r\n# Instantiations of Generalized Random Forest\r\n# =============================================================================\r\n\r\n\r\nclass CausalForest(BaseGRF):\r\n    \"\"\"\r\n    A Causal Forest [cf1]_.\r\n\r\n    It fits a forest that solves the local moment equation problem:\r\n\r\n    .. code-block::\r\n\r\n        E[ (Y - <theta(x), T> - beta(x)) (T;1) | X=x] = 0\r\n\r\n    Each node in the tree contains a local estimate of the parameter theta(x), for every region of X that\r\n    falls within that leaf.\r\n\r\n    Parameters\r\n    ----------\r\n    n_estimators : int, default 100\r\n        Number of trees\r\n\r\n    criterion : {``\"mse\"``, ``\"het\"``}, default \"mse\"\r\n        The function to measure the quality of a split. Supported criteria\r\n        are \"mse\" for the mean squared error in a linear moment estimation tree and \"het\" for\r\n        heterogeneity score.\r\n\r\n        - The \"mse\" criterion finds splits that minimize the score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} E[(Y - <theta(child), T> - beta(child))^2 | X=child] weight(child)\r\n\r\n          Internally, for the case of more than two treatments or for the case of two treatments with\r\n          ``fit_intercept=True`` then this criterion is approximated by computationally simpler variants for\r\n          computational purposes. In particular, it is replaced by::\r\n\r\n              sum_{child} weight(child) * rho(child).T @ E[(T;1) @ (T;1).T | X in child] @ rho(child)\r\n\r\n          where:\r\n\r\n          .. code-block::\r\n\r\n            rho(child) := E[(T;1) @ (T;1).T | X in parent]^{-1}\r\n                                    * E[(Y - <theta(x), T> - beta(x)) (T;1) | X in child]\r\n\r\n          This can be thought as a heterogeneity inducing score, but putting more weight on scores\r\n          with a large minimum eigenvalue of the child jacobian ``E[(T;1) @ (T;1).T | X in child]``,\r\n          which leads to smaller variance of the estimate and stronger identification of the parameters.\r\n\r\n        - The \"het\" criterion finds splits that maximize the pure parameter heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} weight(child) * rho(child)[:n_T].T @ rho(child)[:n_T]\r\n\r\n          This can be thought as an approximation to the ideal heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n              weight(left) * weight(right) || theta(left) - theta(right)||_2^2 / weight(parent)^2\r\n\r\n          as outlined in [cf1]_\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    min_var_fraction_leaf : None or float in (0, 1], default None\r\n        A constraint on some proxy of the variation of the treatment vector that should be contained within each\r\n        leaf as a percentage of the total variance of the treatment vector on the whole sample. This avoids\r\n        performing splits where either the variance of the treatment is small and hence the local parameter\r\n        is not well identified and has high variance. The proxy of variance is different for different criterion,\r\n        primarily for computational efficiency reasons.\r\n\r\n        - If ``criterion='het'``, then this constraint translates to:\r\n\r\n          .. code-block::\r\n\r\n            for all i in {1, ..., T.shape[1]}:\r\n                E[T[i]^2 | X in leaf] > `min_var_fraction_leaf` * E[T[i]^2]\r\n\r\n          When ``T`` is the residual treatment (i.e. centered), this translates to a requirement that\r\n\r\n          .. code-block::\r\n\r\n            for all i in {1, ..., T.shape[1]}:\r\n                Var(T[i] | X in leaf) > `min_var_fraction_leaf` * Var(T[i])\r\n\r\n        - If ``criterion='mse'``, because the criterion stores more information about the leaf for\r\n          every candidate split, then this constraint imposes further constraints on the pairwise correlations\r\n          of different coordinates of each treatment, i.e.:\r\n\r\n          .. code-block::\r\n\r\n            for all i neq j:\r\n              sqrt(Var(T[i]|X in leaf) * Var(T[j]|X in leaf) * (1 - rho(T[i], T[j]| in leaf)^2))\r\n                  > `min_var_fraction_leaf` sqrt(Var(T[i]) * Var(T[j]) * (1 - rho(T[i], T[j])^2))\r\n\r\n          where rho(X, Y) is the Pearson correlation coefficient of two random variables X, Y. Thus this\r\n          constraint also enforces that no two pairs of treatments be very co-linear within a leaf. This\r\n          extra constraint primarily has bite in the case of more than two input treatments and also avoids\r\n          leafs where the parameter estimate has large variance due to local co-linearities of the treatments.\r\n\r\n    min_var_leaf_on_val : bool, default False\r\n        Whether the `min_var_fraction_leaf` constraint should also be enforced to hold on the validation set of the\r\n        honest split too. If `min_var_leaf=None` then this flag does nothing. Setting this to True should\r\n        be done with caution, as this partially violates the honesty structure, since the treatment variable\r\n        of the validation set is used to inform the split structure of the tree. However, this is a benign\r\n        dependence as it only uses local correlation structure of the treatment T to decide whether\r\n        a split is feasible.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    max_samples : int or float in (0, 1], default .45,\r\n        The number of samples to use for each subsample that is used to train each tree:\r\n\r\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\r\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\r\n          from all the samples.\r\n\r\n        If ``inference=True``, then `max_samples` must either be an integer smaller than `n_samples//2` or a float\r\n        less than or equal to .5.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest : bool, default True\r\n        Whether each tree should be trained in an honest manner, i.e. the training set is split into two equal\r\n        sized subsets, the train and the val set. All samples in train are used to create the split structure\r\n        and all samples in val are used to calculate the value of each node in the tree.\r\n\r\n    inference : bool, default True\r\n        Whether inference (i.e. confidence interval construction and uncertainty quantification of the estimates)\r\n        should be enabled. If `inference=True`, then the estimator uses a bootstrap-of-little-bags approach\r\n        to calculate the covariance of the parameter vector, with am objective Bayesian debiasing correction\r\n        to ensure that variance quantities are positive.\r\n\r\n    fit_intercept : bool, default True\r\n        Whether we should fit an intercept nuisance parameter beta(x). If `fit_intercept=False`, then no (;1) is\r\n        appended to the treatment variable in all calculations in this docstring. If `fit_intercept=True`, then\r\n        the constant treatment of `(;1)` is appended to each treatment vector and the coefficient in front\r\n        of this constant treatment is the intercept beta(x). beta(x) is treated as a nuisance and not returned\r\n        by the predict(X), predict_and_var(X) or the predict_var(X) methods.\r\n        Use predict_full(X) to recover the intercept term too.\r\n\r\n    subforest_size : int, default 4,\r\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\r\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\r\n\r\n    n_jobs : int or None, default -1\r\n        The number of parallel jobs to be used for parallelism; follows joblib semantics.\r\n        ``n_jobs=-1`` means all available cpu cores. ``n_jobs=None`` means no parallelism.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        Controls the randomness of the estimator. The features are always\r\n        randomly permuted at each split. When ``max_features < n_features``, the algorithm will\r\n        select ``max_features`` at random at each split before finding the best\r\n        split among them. But the best found split may vary across different\r\n        runs, even if ``max_features=n_features``. That is the case, if the\r\n        improvement of the criterion is identical for several splits and one\r\n        split has to be selected at random. To obtain a deterministic behaviour\r\n        during fitting, ``random_state`` has to be fixed to an integer.\r\n\r\n    verbose : int, default 0\r\n        Controls the verbosity when fitting and predicting.\r\n\r\n    warm_start : bool, default ``False``\r\n        When set to ``True``, reuse the solution of the previous call to fit\r\n        and add more estimators to the ensemble, otherwise, just fit a whole\r\n        new forest. If ``True``, then `oob_predict` method for out-of-bag predictions is not available.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. Each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n        By default splits below ``max_depth=4`` are not used in this calculation and also each split\r\n        at depth `depth`, is re-weighted by ``1 / (1 + `depth`)**2.0``. See the method ``feature_importances``\r\n        for a method that allows one to change these defaults.\r\n\r\n    estimators_ : list of object of type :class:`~econml.grf.GRFTree`\r\n        The fitted trees.\r\n\r\n    References\r\n    ----------\r\n    .. [cf1] Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\r\n        The Annals of Statistics 47.2 (2019): 1148-1178\r\n        https://arxiv.org/pdf/1610.01271.pdf\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self,\r\n                 n_estimators=100, *,\r\n                 criterion=\"mse\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 min_var_fraction_leaf=None,\r\n                 min_var_leaf_on_val=False,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.45,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 inference=True,\r\n                 fit_intercept=True,\r\n                 subforest_size=4,\r\n                 n_jobs=-1,\r\n                 random_state=None,\r\n                 verbose=0,\r\n                 warm_start=False):\r\n        super().__init__(n_estimators=n_estimators, criterion=criterion, max_depth=max_depth,\r\n                         min_samples_split=min_samples_split,\r\n                         min_samples_leaf=min_samples_leaf, min_weight_fraction_leaf=min_weight_fraction_leaf,\r\n                         min_var_fraction_leaf=min_var_fraction_leaf, min_var_leaf_on_val=min_var_leaf_on_val,\r\n                         max_features=max_features, min_impurity_decrease=min_impurity_decrease,\r\n                         max_samples=max_samples, min_balancedness_tol=min_balancedness_tol,\r\n                         honest=honest, inference=inference, fit_intercept=fit_intercept,\r\n                         subforest_size=subforest_size, n_jobs=n_jobs, random_state=random_state, verbose=verbose,\r\n                         warm_start=warm_start)\r\n\r\n    def fit(self, X, T, y, *, sample_weight=None):\r\n        \"\"\"\r\n        Build a causal forest of trees from the training set (X, T, y).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples. Internally, its dtype will be converted\r\n            to ``dtype=np.float64``.\r\n        T : array_like of shape (n_samples, n_treatments)\r\n            The treatment vector for each sample\r\n        y : array_like of shape (n_samples,) or (n_samples, n_outcomes)\r\n            The outcome values for each sample.\r\n        sample_weight : array_like of shape (n_samples,), default None\r\n            Sample weights. If None, then samples are equally weighted. Splits\r\n            that would create child nodes with net zero or negative weight are\r\n            ignored while searching for a split in each node.\r\n\r\n        Returns\r\n        -------\r\n        self : object\r\n        \"\"\"\r\n        return super().fit(X, T, y, sample_weight=sample_weight)\r\n\r\n    def _get_alpha_and_pointJ(self, X, T, y):\r\n        # Append a constant treatment if `fit_intercept=True`, the coefficient\r\n        # in front of the constant treatment is the intercept in the moment equation.\r\n        if self.fit_intercept:\r\n            T = np.hstack([T, np.ones((T.shape[0], 1))])\r\n        return y * T, cross_product(T, T)\r\n\r\n    def _get_n_outputs_decomposition(self, X, T, y):\r\n        n_relevant_outputs = T.shape[1]\r\n        n_outputs = n_relevant_outputs\r\n        if self.fit_intercept:\r\n            n_outputs = n_relevant_outputs + 1\r\n        return n_outputs, n_relevant_outputs\r\n\r\n\r\nclass CausalIVForest(BaseGRF):\r\n    \"\"\"\r\n    A Causal IV Forest [cfiv1]_.\r\n\r\n    It fits a forest that solves the local moment equation problem:\r\n\r\n    .. code-block\r\n\r\n        E[ (Y - <theta(x), T> - beta(x)) (Z;1) | X=x] = 0\r\n\r\n    Each node in the tree contains a local estimate of the parameter theta(x), for every region of X that\r\n    falls within that leaf.\r\n\r\n    Parameters\r\n    ----------\r\n    n_estimators : int, default 100\r\n        Number of trees\r\n\r\n    criterion : {``\"mse\"``, ``\"het\"``}, default \"mse\"\r\n        The function to measure the quality of a split. Supported criteria\r\n        are \"mse\" for the mean squared error in a linear moment estimation tree and \"het\" for\r\n        heterogeneity score.\r\n\r\n        - The \"mse\" criterion finds splits that approximately minimize the score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} E[(Y - <theta(child), E[T|Z]> - beta(child))^2 | X=child] weight(child)\r\n\r\n          Though we note that the local estimate is still estimated by solving the local moment equation for samples\r\n          that fall within the node and not by minimizing this loss. Internally, for the case of more than two\r\n          treatments or for the case of one treatment with `fit_intercept=True` then this criterion is approximated\r\n          by computationally simpler variants for computationaly purposes. In particular, it is replaced by:\r\n\r\n          .. code-block::\r\n\r\n              sum_{child} weight(child) * rho(child).T @ E[(T;1) @ (Z;1).T | X in child] @ rho(child)\r\n\r\n          where:\r\n\r\n          .. code-block::\r\n\r\n              rho(child) := E[(T;1) @ (Z;1).T | X in parent]^{-1}\r\n                                * E[(Y - <theta(x), T> - beta(x)) (Z;1) | X in child]\r\n\r\n          This can be thought as a heterogeneity inducing score, but putting more weight on scores\r\n          with a large minimum eigenvalue of the child jacobian E[(T;1) @ (Z;1).T | X in child], which leads to smaller\r\n          variance of the estimate and stronger identification of the parameters.\r\n\r\n        - The ``\"het\"`` criterion finds splits that maximize the pure parameter heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n            sum_{child} weight(child) * rho(child)[:n_T].T @ rho(child)[:n_T]\r\n\r\n          This can be thought as an approximation to the ideal heterogeneity score:\r\n\r\n          .. code-block::\r\n\r\n              weight(left) * weight(right) || theta(left) - theta(right)||_2^2 / weight(parent)^2\r\n\r\n          as outlined in [cfiv1]_\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    min_var_fraction_leaf : None or float in (0, 1], default None\r\n        A constraint on some proxy of the variation of the covariance of the treatment vector with the instrument\r\n        vector that should be contained within each leaf as a percentage of the total cov-variance of the treatment\r\n        and instrument on the whole sample. This avoids performing splits where either the variance of the treatment\r\n        is small or the variance of the instrument is small or the strength of the instrument on the treatment is\r\n        locally weak and hence the local parameter is not well identified and has high variance.\r\n        The proxy of variance is different for different criterion, primarily for computational efficiency reasons.\r\n\r\n        - If ``criterion='het'``, then this constraint translates to:\r\n\r\n          .. code-block::\r\n\r\n            for all i in {1, ..., T.shape[1]}:\r\n                E[T[i] Z[i] | X in leaf] > `min_var_fraction_leaf` * E[T[i] Z[i]]\r\n\r\n          When `T` is the residual treatment and `Z` the residual instrument (i.e. centered),\r\n          this translates to a requirement that:\r\n\r\n          .. code-block::\r\n\r\n            for all i in {1, ..., T.shape[1]}:\r\n                Cov(T[i], Z[i] | X in leaf) > `min_var_fraction_leaf` * Cov(T[i], Z[i])\r\n\r\n        - If ``criterion='mse'``, because the criterion stores more information about the leaf for\r\n          every candidate split, then this constraint imposes further constraints on the pairwise correlations\r\n          of different coordinates of each treatment. For instance, when the instrument and treatment are both\r\n          residualized (centered) then this constraint translates to:\r\n\r\n          .. code-block::\r\n\r\n            for all i neq j:\r\n                E[T[i]Z[i]] E[T[j]Z[j]] - E[T[i] Z[j]]\r\n                sqrt(Cov(T[i], Z[i] |X in leaf) * Cov(T[j], Z[j]|X in leaf)\r\n                        * (1 - rho(T[i], Z[j]|X in leaf) * rho(T[j], Z[i]|X in leaf)))\r\n                  > `min_var_fraction_leaf` * sqrt(Cov(T[i], Z[i]) * Cov(T[j], Z[j])\r\n                                                    * (1 - rho(T[i], Z[j]) * rho(T[j], Z[i])))\r\n\r\n          where rho(X, Y) is the Pearson correlation coefficient of two random variables X, Y. Thus this\r\n          constraint also enforces that no two pairs of treatments and instruments be very co-linear within a leaf.\r\n          This extra constraint primarily has bite in the case of more than two input treatments and also avoids\r\n          leafs where the parameter estimate has large variance due to local co-linearities of the treatments.\r\n\r\n    min_var_leaf_on_val : bool, default False\r\n        Whether the `min_var_fraction_leaf` constraint should also be enforced to hold on the validation set of the\r\n        honest split too. If `min_var_leaf=None` then this flag does nothing. Setting this to True should\r\n        be done with caution, as this partially violates the honesty structure, since parts of the variables\r\n        other than the X variable (e.g. the variables that go into the jacobian J of the linear model) are\r\n        used to inform the split structure of the tree. However, this is a benign dependence as it only uses\r\n        the treatment T its local correlation structure to decide whether a split is feasible.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    max_samples : int or float in (0, 1], default .45,\r\n        The number of samples to use for each subsample that is used to train each tree:\r\n\r\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\r\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\r\n          from all the samples.\r\n\r\n        If ``inference=True``, then `max_samples` must either be an integer smaller than `n_samples//2` or a float\r\n        less than or equal to .5.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest : bool, default True\r\n        Whether each tree should be trained in an honest manner, i.e. the training set is split into two equal\r\n        sized subsets, the train and the val set. All samples in train are used to create the split structure\r\n        and all samples in val are used to calculate the value of each node in the tree.\r\n\r\n    inference : bool, default True\r\n        Whether inference (i.e. confidence interval construction and uncertainty quantification of the estimates)\r\n        should be enabled. If ``inference=True``, then the estimator uses a bootstrap-of-little-bags approach\r\n        to calculate the covariance of the parameter vector, with am objective Bayesian debiasing correction\r\n        to ensure that variance quantities are positive.\r\n\r\n    fit_intercept : bool, default True\r\n        Whether we should fit an intercept nuisance parameter beta(x). If `fit_intercept=False`, then no (;1) is\r\n        appended to the treatment variable in all calculations in this docstring. If `fit_intercept=True`, then\r\n        the constant treatment of `(;1)` is appended to each treatment vector and the coefficient in front\r\n        of this constant treatment is the intercept beta(x). beta(x) is treated as a nuisance and not returned\r\n        by the predict(X), predict_and_var(X) or the predict_var(X) methods.\r\n        Use predict_full(X) to recover the intercept term too.\r\n\r\n    subforest_size : int, default 4,\r\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\r\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\r\n\r\n    n_jobs : int or None, default -1\r\n        The number of parallel jobs to be used for parallelism; follows joblib semantics.\r\n        `n_jobs=-1` means all available cpu cores. `n_jobs=None` means no parallelism.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        Controls the randomness of the estimator. The features are always\r\n        randomly permuted at each split. When ``max_features < n_features``, the algorithm will\r\n        select ``max_features`` at random at each split before finding the best\r\n        split among them. But the best found split may vary across different\r\n        runs, even if ``max_features=n_features``. That is the case, if the\r\n        improvement of the criterion is identical for several splits and one\r\n        split has to be selected at random. To obtain a deterministic behaviour\r\n        during fitting, ``random_state`` has to be fixed to an integer.\r\n\r\n    verbose : int, default 0\r\n        Controls the verbosity when fitting and predicting.\r\n\r\n    warm_start : bool, default False\r\n        When set to ``True``, reuse the solution of the previous call to fit\r\n        and add more estimators to the ensemble, otherwise, just fit a whole\r\n        new forest. If ``True``, then `oob_predict` method for out-of-bag predictions is not available.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. Each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n        By default splits below `max_depth=4` are not used in this calculation and also each split\r\n        at depth `depth`, is re-weighted by ``1 / (1 + `depth`)**2.0``. See the method ``feature_importances``\r\n        for a method that allows one to change these defaults.\r\n\r\n    estimators_ : list of object of type :class:`~econml.grf.GRFTree`\r\n        The fitted trees.\r\n\r\n    References\r\n    ----------\r\n    .. [cfiv1] Athey, Susan, Julie Tibshirani, and Stefan Wager. \"Generalized random forests.\"\r\n        The Annals of Statistics 47.2 (2019): 1148-1178\r\n        https://arxiv.org/pdf/1610.01271.pdf\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self,\r\n                 n_estimators=100, *,\r\n                 criterion=\"mse\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 min_var_fraction_leaf=None,\r\n                 min_var_leaf_on_val=False,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.45,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 inference=True,\r\n                 fit_intercept=True,\r\n                 subforest_size=4,\r\n                 n_jobs=-1,\r\n                 random_state=None,\r\n                 verbose=0,\r\n                 warm_start=False):\r\n        super().__init__(n_estimators=n_estimators, criterion=criterion, max_depth=max_depth,\r\n                         min_samples_split=min_samples_split,\r\n                         min_samples_leaf=min_samples_leaf, min_weight_fraction_leaf=min_weight_fraction_leaf,\r\n                         min_var_fraction_leaf=min_var_fraction_leaf, min_var_leaf_on_val=min_var_leaf_on_val,\r\n                         max_features=max_features, min_impurity_decrease=min_impurity_decrease,\r\n                         max_samples=max_samples, min_balancedness_tol=min_balancedness_tol,\r\n                         honest=honest, inference=inference, fit_intercept=fit_intercept,\r\n                         subforest_size=subforest_size, n_jobs=n_jobs, random_state=random_state, verbose=verbose,\r\n                         warm_start=warm_start)\r\n\r\n    def fit(self, X, T, y, *, Z, sample_weight=None):\r\n        \"\"\"\r\n        Build an IV forest of trees from the training set (X, T, y, Z).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples. Internally, its dtype will be converted\r\n            to ``dtype=np.float64``.\r\n        T : array_like of shape (n_samples, n_treatments)\r\n            The treatment vector for each sample\r\n        y : array_like of shape (n_samples,) or (n_samples, n_outcomes)\r\n            The outcome values for each sample.\r\n        Z : array_like of shape (n_samples, n_treatments)\r\n            The instrument vector. This method requires an equal amount of instruments and\r\n            treatments, i.e. an exactly identified IV regression. For low variance, use\r\n            the optimal instruments by project the instrument on the treatment vector, i.e.\r\n            Z -> E[T | Z], in a first stage estimation.\r\n        sample_weight : array_like of shape (n_samples,), default None\r\n            Sample weights. If None, then samples are equally weighted. Splits\r\n            that would create child nodes with net zero or negative weight are\r\n            ignored while searching for a split in each node.\r\n\r\n        Returns\r\n        -------\r\n        self : object\r\n        \"\"\"\r\n        return super().fit(X, T, y, Z=Z, sample_weight=sample_weight)\r\n\r\n    def _get_alpha_and_pointJ(self, X, T, y, *, Z):\r\n        # Append a constant treatment and constant instrument if `fit_intercept=True`,\r\n        # the coefficient in front of the constant treatment is the intercept in the moment equation.\r\n        _, Z = check_X_y(X, Z, y_numeric=True, multi_output=True, accept_sparse=False)\r\n        Z = np.atleast_1d(Z)\r\n        if Z.ndim == 1:\r\n            Z = np.reshape(Z, (-1, 1))\r\n\r\n        if not Z.shape[1] == T.shape[1]:\r\n            raise ValueError(\"The dimension of the instrument should match the dimension of the treatment. \"\r\n                             \"This method handles only exactly identified instrumental variable regression. \"\r\n                             \"Preprocess your instrument by projecting it to the treatment space.\")\r\n\r\n        if self.fit_intercept:\r\n            T = np.hstack([T, np.ones((T.shape[0], 1))])\r\n            Z = np.hstack([Z, np.ones((Z.shape[0], 1))])\r\n\r\n        return y * Z, cross_product(Z, T)\r\n\r\n    def _get_n_outputs_decomposition(self, X, T, y, *, Z):\r\n        n_relevant_outputs = T.shape[1]\r\n        n_outputs = n_relevant_outputs\r\n        if self.fit_intercept:\r\n            n_outputs = n_relevant_outputs + 1\r\n        return n_outputs, n_relevant_outputs\r\n\r\n\r\nclass RegressionForest(BaseGRF):\r\n    \"\"\"\r\n    An implementation of a subsampled honest random forest regressor on top of an sklearn regression tree.\r\n\r\n    Implements subsampling and honesty as described in [rf3]_,\r\n    but uses a scikit-learn regression tree as a base. It provides confidence intervals based on ideas\r\n    described in [rf3]_ and [rf4]_\r\n\r\n    A random forest is a meta estimator that fits a number of classifying\r\n    decision trees on various sub-samples of the dataset and uses averaging\r\n    to improve the predictive accuracy and control over-fitting.\r\n    The sub-sample size is smaller than the original size and subsampling is\r\n    performed without replacement. Each decision tree is built in an honest\r\n    manner: half of the sub-sampled data are used for creating the tree structure\r\n    (referred to as the splitting sample) and the other half for calculating the\r\n    constant regression estimate at each leaf of the tree (referred to as the estimation sample).\r\n    One difference with the algorithm proposed in [rf3]_ is that we do not ensure balancedness\r\n    and we do not consider poisson sampling of the features, so that we guarantee\r\n    that each feature has a positive probability of being selected on each split.\r\n    Rather we use the original algorithm of Breiman [rf1]_, which selects the best split\r\n    among a collection of candidate splits, as long as the max_depth is not reached\r\n    and as long as there are not more than max_leafs and each child contains\r\n    at least min_samples_leaf samples and total weight fraction of\r\n    min_weight_fraction_leaf. Moreover, it allows the use of both mean squared error (MSE)\r\n    and mean absoulte error (MAE) as the splitting criterion. Finally, we allow\r\n    for early stopping of the splits if the criterion is not improved by more than\r\n    min_impurity_decrease. These techniques that date back to the work of [rf1]_,\r\n    should lead to finite sample performance improvements, especially for\r\n    high dimensional features.\r\n\r\n    The implementation also provides confidence intervals\r\n    for each prediction using a bootstrap of little bags approach described in [rf3]_:\r\n    subsampling is performed at hierarchical level by first drawing a set of half-samples\r\n    at random and then sub-sampling from each half-sample to build a forest\r\n    of forests. All the trees are used for the point prediction and the distribution\r\n    of predictions returned by each of the sub-forests is used to calculate the standard error\r\n    of the point prediction.\r\n\r\n    Parameters\r\n    ----------\r\n    n_estimators : int, default 100\r\n        Number of trees\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    max_samples : int or float in (0, 1], default .45,\r\n        The number of samples to use for each subsample that is used to train each tree:\r\n\r\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\r\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\r\n          from all the samples.\r\n\r\n        If `inference=True`, then `max_samples` must either be an integer smaller than `n_samples//2` or a float\r\n        less than or equal to .5.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest : bool, default True\r\n        Whether each tree should be trained in an honest manner, i.e. the training set is split into two equal\r\n        sized subsets, the train and the val set. All samples in train are used to create the split structure\r\n        and all samples in val are used to calculate the value of each node in the tree.\r\n\r\n    inference : bool, default True\r\n        Whether inference (i.e. confidence interval construction and uncertainty quantification of the estimates)\r\n        should be enabled. If `inference=True`, then the estimator uses a bootstrap-of-little-bags approach\r\n        to calculate the covariance of the parameter vector, with am objective Bayesian debiasing correction\r\n        to ensure that variance quantities are positive.\r\n\r\n    subforest_size : int, default 4,\r\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\r\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\r\n\r\n    n_jobs : int or None, default -1\r\n        The number of parallel jobs to be used for parallelism; follows joblib semantics.\r\n        `n_jobs=-1` means all available cpu cores. `n_jobs=None` means no parallelism.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        Controls the randomness of the estimator. The features are always\r\n        randomly permuted at each split. When ``max_features < n_features``, the algorithm will\r\n        select ``max_features`` at random at each split before finding the best\r\n        split among them. But the best found split may vary across different\r\n        runs, even if ``max_features=n_features``. That is the case, if the\r\n        improvement of the criterion is identical for several splits and one\r\n        split has to be selected at random. To obtain a deterministic behaviour\r\n        during fitting, ``random_state`` has to be fixed to an integer.\r\n\r\n    verbose : int, default 0\r\n        Controls the verbosity when fitting and predicting.\r\n\r\n    warm_start : bool, default False\r\n        When set to ``True``, reuse the solution of the previous call to fit\r\n        and add more estimators to the ensemble, otherwise, just fit a whole\r\n        new forest. If ``True``, then `oob_predict` method for out-of-bag predictions is not available.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n        The importance of a feature is computed as the (normalized) total heterogeneity that the feature\r\n        creates. Each split that the feature was chosen adds::\r\n\r\n            parent_weight * (left_weight * right_weight)\r\n                * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n\r\n        to the importance of the feature. Each such quantity is also weighted by the depth of the split.\r\n        By default splits below `max_depth=4` are not used in this calculation and also each split\r\n        at depth `depth`, is re-weighted by ``1 / (1 + `depth`)**2.0``. See the method ``feature_importances``\r\n        for a method that allows one to change these defaults.\r\n\r\n    estimators_ : list of object of type :class:`~econml.grf.GRFTree`\r\n        The fitted trees.\r\n\r\n\r\n    Examples\r\n    --------\r\n\r\n    .. testcode::\r\n\r\n        import numpy as np\r\n        from econml.grf import RegressionForest\r\n        from sklearn.datasets import make_regression\r\n        from sklearn.model_selection import train_test_split\r\n\r\n        np.set_printoptions(suppress=True)\r\n        np.random.seed(123)\r\n        X, y = make_regression(n_samples=1000, n_features=4, n_informative=2,\r\n                               random_state=0, shuffle=False)\r\n        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5)\r\n        regr = RegressionForest(max_depth=None, random_state=0,\r\n                                n_estimators=1000)\r\n\r\n    >>> regr.fit(X_train, y_train)\r\n    RegressionForest(n_estimators=1000, random_state=0)\r\n    >>> regr.feature_importances_\r\n    array([0.88..., 0.11..., 0.00..., 0.00...])\r\n    >>> regr.predict(np.ones((1, 4)), interval=True, alpha=.05)\r\n    (array([[121.0...]]), array([[103.6...]]), array([[138.3...]]))\r\n\r\n    References\r\n    ----------\r\n\r\n    .. [rf1] L. Breiman, \"Random Forests\", Machine Learning, 45(1), 5-32, 2001.\r\n\r\n    .. [rf3] S. Athey, S. Wager, \"Estimation and Inference of Heterogeneous Treatment Effects using Random Forests\",\r\n            Journal of the American Statistical Association 113.523 (2018): 1228-1242.\r\n\r\n    .. [rf4] S. Athey, J. Tibshirani, and S. Wager, \"Generalized random forests\",\r\n            The Annals of Statistics, 47(2), 1148-1178, 2019.\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self,\r\n                 n_estimators=100, *,\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.45,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 inference=True,\r\n                 subforest_size=4,\r\n                 n_jobs=-1,\r\n                 random_state=None,\r\n                 verbose=0,\r\n                 warm_start=False):\r\n        super().__init__(n_estimators=n_estimators, criterion='het', max_depth=max_depth,\r\n                         min_samples_split=min_samples_split,\r\n                         min_samples_leaf=min_samples_leaf, min_weight_fraction_leaf=min_weight_fraction_leaf,\r\n                         min_var_fraction_leaf=None, min_var_leaf_on_val=False,\r\n                         max_features=max_features, min_impurity_decrease=min_impurity_decrease,\r\n                         max_samples=max_samples, min_balancedness_tol=min_balancedness_tol,\r\n                         honest=honest, inference=inference, fit_intercept=False,\r\n                         subforest_size=subforest_size, n_jobs=n_jobs, random_state=random_state, verbose=verbose,\r\n                         warm_start=warm_start)\r\n\r\n    def fit(self, X, y, *, sample_weight=None):\r\n        \"\"\"\r\n        Build an IV forest of trees from the training set (X, y).\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples. Internally, its dtype will be converted\r\n            to ``dtype=np.float64``.\r\n        y : array_like of shape (n_samples,) or (n_samples, n_outcomes)\r\n            The outcome values for each sample.\r\n        sample_weight : array_like of shape (n_samples,), default None\r\n            Sample weights. If None, then samples are equally weighted. Splits\r\n            that would create child nodes with net zero or negative weight are\r\n            ignored while searching for a split in each node.\r\n\r\n        Returns\r\n        -------\r\n        self : object\r\n        \"\"\"\r\n        return super().fit(X, y, np.ones((len(X), 1)), sample_weight=sample_weight)\r\n\r\n    def _get_alpha_and_pointJ(self, X, y, T):\r\n        jac = np.eye(y.shape[1]).reshape((1, -1))\r\n        return y, np.tile(jac, (X.shape[0], 1))\r\n\r\n    def _get_n_outputs_decomposition(self, X, y, T):\r\n        return y.shape[1], y.shape[1]\r\n"
  },
  {
    "path": "econml/inference/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._inference import (BootstrapInference, GenericModelFinalInference, GenericSingleTreatmentModelFinalInference,\r\n                         LinearModelFinalInference, StatsModelsInference, GenericModelFinalInferenceDiscrete,\r\n                         LinearModelFinalInferenceDiscrete, StatsModelsInferenceDiscrete,\r\n                         NormalInferenceResults, EmpiricalInferenceResults,\r\n                         PopulationSummaryResults)\r\n\r\n__all__ = [\"BootstrapInference\",\r\n           \"GenericModelFinalInference\",\r\n           \"GenericSingleTreatmentModelFinalInference\",\r\n           \"LinearModelFinalInference\",\r\n           \"StatsModelsInference\",\r\n           \"GenericModelFinalInferenceDiscrete\",\r\n           \"LinearModelFinalInferenceDiscrete\",\r\n           \"StatsModelsInferenceDiscrete\",\r\n           \"NormalInferenceResults\",\r\n           \"EmpiricalInferenceResults\",\r\n           \"PopulationSummaryResults\"]\r\n"
  },
  {
    "path": "econml/inference/_bootstrap.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Bootstrap sampling.\"\"\"\r\nimport numpy as np\r\nfrom joblib import Parallel, delayed\r\nfrom sklearn.base import clone\r\nfrom scipy.stats import norm\r\n\r\n\r\nclass BootstrapEstimator:\r\n    \"\"\"Estimator that uses bootstrap sampling to wrap an existing estimator.\r\n\r\n    This estimator provides a `fit` method with the same signature as the wrapped estimator.\r\n\r\n    The bootstrap estimator will also wrap all other methods and attributes of the wrapped estimator,\r\n    but return the average of the sampled calculations (this will fail for non-numeric outputs).\r\n\r\n    It will also provide a wrapper method suffixed with `_interval` for each method or attribute of\r\n    the wrapped estimator that takes two additional optional keyword arguments `lower` and `upper` specifiying\r\n    the percentiles of the interval, and which uses `np.percentile` to return the corresponding lower\r\n    and upper bounds based on the sampled calculations.  For example, if the underlying estimator supports\r\n    an `effect` method with signature `(X,T) -> Y`, this class will provide a method `effect_interval`\r\n    with pseudo-signature `(lower=5, upper=95, X, T) -> (Y, Y)` (where `lower` and `upper` cannot be\r\n    supplied as positional arguments).\r\n\r\n    Parameters\r\n    ----------\r\n    wrapped : object\r\n        The basis for the clones used for estimation.\r\n        This object must support a `fit` method which takes numpy arrays with consistent first dimensions\r\n        as arguments.\r\n\r\n    n_bootstrap_samples : int, default: 100\r\n        How many draws to perform.\r\n\r\n    n_jobs: int, default: None\r\n        The maximum number of concurrently running jobs, as in joblib.Parallel.\r\n\r\n    verbose: int, default: 0\r\n        Verbosity level\r\n\r\n    compute_means : bool, default: True\r\n        Whether to pass calls through to the underlying collection and return the mean.  Setting this\r\n        to ``False`` can avoid ambiguities if the wrapped object itself has method names with an `_interval` suffix.\r\n\r\n    bootstrap_type: 'percentile', 'pivot', or 'normal', default 'pivot'\r\n        Bootstrap method used to compute results.  'percentile' will result in using the empiracal CDF of\r\n        the replicated computations of the statistics.   'pivot' will also use the replicates but create a pivot\r\n        interval that also relies on the estimate over the entire dataset.  'normal' will instead compute an interval\r\n        assuming the replicates are normally distributed.\r\n    \"\"\"\r\n\r\n    def __init__(self, wrapped,\r\n                 n_bootstrap_samples=100,\r\n                 n_jobs=None,\r\n                 verbose=0,\r\n                 compute_means=True,\r\n                 bootstrap_type='pivot'):\r\n        self._instances = [clone(wrapped, safe=False) for _ in range(n_bootstrap_samples)]\r\n        self._n_bootstrap_samples = n_bootstrap_samples\r\n        self._n_jobs = n_jobs\r\n        self._verbose = verbose\r\n        self._compute_means = compute_means\r\n        self._bootstrap_type = bootstrap_type\r\n        self._wrapped = wrapped\r\n\r\n    # TODO: Add a __dir__ implementation?\r\n\r\n    @staticmethod\r\n    def __stratified_indices(arr):\r\n        assert 1 <= np.ndim(arr) <= 2\r\n        unique = np.unique(arr, axis=0)\r\n        indices = []\r\n        for el in unique:\r\n            ind, = np.where(np.all(arr == el, axis=1) if np.ndim(arr) == 2 else arr == el)\r\n            indices.append(ind)\r\n        return indices\r\n\r\n    def fit(self, *args, **named_args):\r\n        \"\"\"\r\n        Fit the model.\r\n\r\n        The full signature of this method is the same as that of the wrapped object's `fit` method.\r\n        \"\"\"\r\n        from .._cate_estimator import BaseCateEstimator  # need to nest this here to avoid circular import\r\n\r\n        index_chunks = None\r\n        if isinstance(self._instances[0], BaseCateEstimator):\r\n            index_chunks = self._instances[0]._strata(*args, **named_args)\r\n            if index_chunks is not None:\r\n                index_chunks = self.__stratified_indices(index_chunks)\r\n        if index_chunks is None:\r\n            n_samples = np.shape(args[0] if args else named_args[(*named_args,)[0]])[0]\r\n            index_chunks = [np.arange(n_samples)]  # one chunk with all indices\r\n\r\n        indices = []\r\n        for chunk in index_chunks:\r\n            n_samples = len(chunk)\r\n            indices.append(chunk[np.random.choice(n_samples,\r\n                                                  size=(self._n_bootstrap_samples, n_samples),\r\n                                                  replace=True)])\r\n\r\n        indices = np.hstack(indices)\r\n\r\n        def fit(x, *args, **kwargs):\r\n            x.fit(*args, **kwargs)\r\n            return x  # Explicitly return x in case fit fails to return its target\r\n\r\n        def convertArg(arg, inds):\r\n            if arg is None:\r\n                return None\r\n            arr = np.asarray(arg)\r\n            if arr.ndim > 0:\r\n                return arr[inds]\r\n            else:  # arg was a scalar, so we shouldn't have converted it\r\n                return arg\r\n\r\n        self._instances = Parallel(n_jobs=self._n_jobs, prefer='threads', verbose=self._verbose)(\r\n            delayed(fit)(obj,\r\n                         *[convertArg(arg, inds) for arg in args],\r\n                         **{arg: convertArg(named_args[arg], inds) for arg in named_args})\r\n            for obj, inds in zip(self._instances, indices)\r\n        )\r\n        return self\r\n\r\n    def __getattr__(self, name):\r\n        \"\"\"\r\n        Get proxy attribute that wraps the corresponding attribute with the same name from the wrapped object.\r\n\r\n        Additionally, the suffix \"_interval\" is supported for getting an interval instead of a point estimate.\r\n        \"\"\"\r\n        # don't proxy special methods\r\n        if name.startswith('__'):\r\n            raise AttributeError(name)\r\n\r\n        def proxy(make_call, name, summary):\r\n            def summarize_with(f):\r\n                results = np.array(Parallel(n_jobs=self._n_jobs, prefer='threads', verbose=self._verbose)(\r\n                    (f, (obj, name), {}) for obj in self._instances)), f(self._wrapped, name)\r\n                return summary(*results)\r\n            if make_call:\r\n                def call(*args, **kwargs):\r\n                    return summarize_with(lambda obj, name: getattr(obj, name)(*args, **kwargs))\r\n                return call\r\n            else:\r\n                return summarize_with(lambda obj, name: getattr(obj, name))\r\n\r\n        def get_mean():\r\n            # for attributes that exist on the wrapped object, just compute the mean of the wrapped calls\r\n            return proxy(callable(getattr(self._instances[0], name)), name, lambda arr, _: np.mean(arr, axis=0))\r\n\r\n        def get_std():\r\n            prefix = name[: - len('_std')]\r\n            return proxy(callable(getattr(self._instances[0], prefix)), prefix,\r\n                         lambda arr, _: np.std(arr, axis=0))\r\n\r\n        def get_interval():\r\n            # if the attribute exists on the wrapped object once we remove the suffix,\r\n            # then we should be computing a confidence interval for the wrapped calls\r\n            prefix = name[: - len(\"_interval\")]\r\n\r\n            def call_with_bounds(can_call, lower, upper):\r\n                def percentile_bootstrap(arr, _):\r\n                    return np.percentile(arr, lower, axis=0), np.percentile(arr, upper, axis=0)\r\n\r\n                def pivot_bootstrap(arr, est):\r\n                    return 2 * est - np.percentile(arr, upper, axis=0), 2 * est - np.percentile(arr, lower, axis=0)\r\n\r\n                def normal_bootstrap(arr, est):\r\n                    std = np.std(arr, axis=0)\r\n                    return est - norm.ppf(upper / 100) * std, est - norm.ppf(lower / 100) * std\r\n\r\n                # TODO: studentized bootstrap? this would be more accurate in most cases but can we avoid\r\n                #       second level bootstrap which would be prohibitive computationally?\r\n\r\n                fn = {'percentile': percentile_bootstrap,\r\n                      'normal': normal_bootstrap,\r\n                      'pivot': pivot_bootstrap}[self._bootstrap_type]\r\n                return proxy(can_call, prefix, fn)\r\n\r\n            can_call = callable(getattr(self._instances[0], prefix))\r\n            if can_call:\r\n                # collect extra arguments and pass them through, if the wrapped attribute was callable\r\n                def call(*args, lower=5, upper=95, **kwargs):\r\n                    return call_with_bounds(can_call, lower, upper)(*args, **kwargs)\r\n                return call\r\n            else:\r\n                # don't pass extra arguments if the wrapped attribute wasn't callable to begin with\r\n                def call(lower=5, upper=95):\r\n                    return call_with_bounds(can_call, lower, upper)\r\n                return call\r\n\r\n        def get_inference():\r\n            # can't import from econml.inference at top level without creating cyclical dependencies\r\n            from ._inference import EmpiricalInferenceResults, NormalInferenceResults\r\n            from .._cate_estimator import LinearModelFinalCateEstimatorDiscreteMixin\r\n\r\n            prefix = name[: - len(\"_inference\")]\r\n\r\n            def fname_transformer(x):\r\n                return x\r\n\r\n            if prefix in ['const_marginal_effect', 'marginal_effect', 'effect']:\r\n                inf_type = 'effect'\r\n            elif prefix == 'coef_':\r\n                inf_type = 'coefficient'\r\n                if (hasattr(self._instances[0], 'cate_feature_names') and\r\n                        callable(self._instances[0].cate_feature_names)):\r\n                    def fname_transformer(x):\r\n                        return self._instances[0].cate_feature_names(x)\r\n            elif prefix == 'intercept_':\r\n                inf_type = 'intercept'\r\n            else:\r\n                raise AttributeError(\"Unsupported inference: \" + name)\r\n\r\n            d_t = self._wrapped._d_t[0] if self._wrapped._d_t else 1\r\n            if prefix == 'effect' or (isinstance(self._wrapped, LinearModelFinalCateEstimatorDiscreteMixin) and\r\n                                      (inf_type == 'coefficient' or inf_type == 'intercept')):\r\n                d_t = None\r\n            d_y = self._wrapped._d_y[0] if self._wrapped._d_y else 1\r\n\r\n            can_call = callable(getattr(self._instances[0], prefix))\r\n\r\n            kind = self._bootstrap_type\r\n            if kind == 'percentile' or kind == 'pivot':\r\n                def get_dist(est, arr):\r\n                    if kind == 'percentile':\r\n                        return arr\r\n                    elif kind == 'pivot':\r\n                        return 2 * est - arr\r\n                    else:\r\n                        raise ValueError(\"Invalid kind, must be either 'percentile' or 'pivot'\")\r\n\r\n                def get_result():\r\n                    return proxy(can_call, prefix,\r\n                                 lambda arr, est: EmpiricalInferenceResults(\r\n                                     d_t=d_t, d_y=d_y,\r\n                                     pred=est, pred_dist=get_dist(est, arr),\r\n                                     inf_type=inf_type,\r\n                                     fname_transformer=fname_transformer,\r\n                                     feature_names=self._wrapped.cate_feature_names(),\r\n                                     output_names=self._wrapped.cate_output_names(),\r\n                                     treatment_names=self._wrapped.cate_treatment_names()\r\n                                 ))\r\n\r\n                # Note that inference results are always methods even if the inference is for a property\r\n                # (e.g. coef__inference() is a method but coef_ is a property)\r\n                # Therefore we must insert a lambda if getting inference for a non-callable\r\n                return get_result() if can_call else get_result\r\n\r\n            else:\r\n                assert kind == 'normal'\r\n\r\n                def normal_inference(*args, **kwargs):\r\n                    pred = getattr(self._wrapped, prefix)\r\n                    if can_call:\r\n                        pred = pred(*args, **kwargs)\r\n                    stderr = getattr(self, prefix + '_std')\r\n                    if can_call:\r\n                        stderr = stderr(*args, **kwargs)\r\n                    return NormalInferenceResults(\r\n                        d_t=d_t, d_y=d_y, pred=pred,\r\n                        pred_stderr=stderr, mean_pred_stderr=None, inf_type=inf_type,\r\n                        fname_transformer=fname_transformer,\r\n                        feature_names=self._wrapped.cate_feature_names(),\r\n                        output_names=self._wrapped.cate_output_names(),\r\n                        treatment_names=self._wrapped.cate_treatment_names())\r\n\r\n                # If inference is for a property, create a fresh lambda to avoid passing args through\r\n                return normal_inference if can_call else lambda: normal_inference()\r\n\r\n        caught = None\r\n        m = None\r\n        if name.endswith(\"_interval\"):\r\n            m = get_interval\r\n        elif name.endswith(\"_std\"):\r\n            m = get_std\r\n        elif name.endswith(\"_inference\"):\r\n            m = get_inference\r\n\r\n        # try to get interval/std first if appropriate,\r\n        # since we don't prefer a wrapped method with this name\r\n        if m is not None:\r\n            try:\r\n                return m()\r\n            except AttributeError as err:\r\n                caught = err\r\n        if self._compute_means:\r\n            return get_mean()\r\n\r\n        raise (caught if caught else AttributeError(name))\r\n"
  },
  {
    "path": "econml/inference/_inference.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport abc\nfrom collections import OrderedDict\nfrom warnings import warn\n\nimport numpy as np\nimport pandas as pd\nimport scipy\nfrom scipy.stats import norm\n\nfrom ._bootstrap import BootstrapEstimator\nfrom ..utilities import (Summary, _safe_norm_ppf, broadcast_unit_treatments,\n                         cross_product, inverse_onehot, ndim,\n                         parse_final_model_params, reshape_treatmentwise_effects, shape, filter_none_kwargs,\n                         reshape_outcomewise_effects)\n\n\"\"\"Options for performing inference in estimators.\"\"\"\n\n\nclass Inference(metaclass=abc.ABCMeta):\n    def prefit(self, estimator, *args, **kwargs):\n        \"\"\"Perform any necessary logic before the estimator's fit has been called.\"\"\"\n        pass\n\n    @abc.abstractmethod\n    def fit(self, estimator, *args, **kwargs):\n        \"\"\"\n        Fits the inference model.\n\n        This is called after the estimator's fit.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def ate_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n        return self.effect_inference(X=X, T0=T0, T1=T1).population_summary(alpha=alpha).conf_int_mean()\n\n    def ate_inference(self, X=None, *, T0=0, T1=1):\n        return self.effect_inference(X=X, T0=T0, T1=T1).population_summary()\n\n    def marginal_ate_interval(self, T, X=None, *, alpha=0.05):\n        return self.marginal_effect_inference(T, X=X).population_summary(alpha=alpha).conf_int_mean()\n\n    def marginal_ate_inference(self, T, X=None):\n        return self.marginal_effect_inference(T, X=X).population_summary()\n\n    def const_marginal_ate_interval(self, X=None, *, alpha=0.05):\n        return self.const_marginal_effect_inference(X=X).population_summary(alpha=alpha).conf_int_mean()\n\n    def const_marginal_ate_inference(self, X=None):\n        return self.const_marginal_effect_inference(X=X).population_summary()\n\n\nclass BootstrapInference(Inference):\n    \"\"\"\n    Inference instance to perform bootstrapping.\n\n    This class can be used for inference with any CATE estimator.\n\n    Parameters\n    ----------\n    n_bootstrap_samples : int, default 100\n        How many draws to perform.\n\n    n_jobs: int, default -1\n        The maximum number of concurrently running jobs, as in joblib.Parallel.\n\n    verbose: int, default: 0\n        Verbosity level\n\n    bootstrap_type: 'percentile', 'pivot', or 'normal', default 'pivot'\n        Bootstrap method used to compute results.\n        'percentile' will result in using the empiracal CDF of the replicated computations of the statistics.\n        'pivot' will also use the replicates but create a pivot interval that also relies on the estimate\n        over the entire dataset.\n        'normal' will instead compute a pivot interval assuming the replicates are normally distributed.\n    \"\"\"\n\n    def __init__(self, n_bootstrap_samples=100, n_jobs=-1, bootstrap_type='pivot', verbose=0):\n        self._n_bootstrap_samples = n_bootstrap_samples\n        self._n_jobs = n_jobs\n        self._bootstrap_type = bootstrap_type\n        self._verbose = verbose\n\n    def fit(self, estimator, *args, **kwargs):\n        est = BootstrapEstimator(estimator, self._n_bootstrap_samples, self._n_jobs, compute_means=False,\n                                 bootstrap_type=self._bootstrap_type, verbose=self._verbose)\n        filtered_kwargs = filter_none_kwargs(**kwargs)\n        est.fit(*args, **filtered_kwargs)\n        self._est = est\n        self._d_t = estimator._d_t\n        self._d_y = estimator._d_y\n        self.d_t = self._d_t[0] if self._d_t else 1\n        self.d_y = self._d_y[0] if self._d_y else 1\n\n    def __getattr__(self, name):\n        if name.startswith('__'):\n            raise AttributeError()\n\n        m = getattr(self._est, name)\n        if name.endswith('_interval'):  # convert alpha to lower/upper\n            def wrapped(*args, alpha=0.05, **kwargs):\n                return m(*args, lower=100 * alpha / 2, upper=100 * (1 - alpha / 2), **kwargs)\n            return wrapped\n        else:\n            return m\n\n\nclass GenericModelFinalInference(Inference):\n    \"\"\"\n    Inference based on predict_interval of the model_final model.\n\n    Assumes that estimator\n    class has a model_final method, whose predict(cross_product(X, [0, ..., 1, ..., 0])) gives\n    the const_marginal_effect of the treamtnent at the column with value 1 and which also supports\n    prediction_stderr(X).\n    \"\"\"\n\n    def prefit(self, estimator, *args, **kwargs):\n        self.model_final = estimator.model_final_\n        self.featurizer = estimator.featurizer_ if hasattr(estimator, 'featurizer_') else None\n\n    def fit(self, estimator, *args, **kwargs):\n        # once the estimator has been fit, it's kosher to store d_t here\n        # (which needs to have been expanded if there's a discrete treatment)\n        self._est = estimator\n        self._d_t = estimator._d_t\n        self._d_y = estimator._d_y\n        self.d_t = self._d_t[0] if self._d_t else 1\n        self.d_y = self._d_y[0] if self._d_y else 1\n\n    def const_marginal_effect_interval(self, X, *, alpha=0.05):\n        return self.const_marginal_effect_inference(X).conf_int(alpha=alpha)\n\n    def const_marginal_effect_inference(self, X):\n        if X is None:\n            X = np.ones((1, 1))\n        elif self.featurizer is not None:\n            X = self.featurizer.transform(X)\n        X, T = broadcast_unit_treatments(X, self.d_t)\n        pred = reshape_treatmentwise_effects(self._predict(cross_product(X, T)), self._d_t, self._d_y)\n        pred_stderr = None\n        if hasattr(self.model_final, 'prediction_stderr'):\n            pred_stderr = reshape_treatmentwise_effects(self._prediction_stderr(cross_product(X, T)),\n                                                        self._d_t, self._d_y)\n        else:\n            warn(\"Final model doesn't have a `prediction_stderr` method, \"\n                 \"only point estimates will be returned.\")\n        return NormalInferenceResults(d_t=self.d_t, d_y=self.d_y, pred=pred,\n                                      pred_stderr=pred_stderr, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names(),\n                                      treatment_names=self._est.cate_treatment_names())\n\n    def _predict(self, X):\n        return self.model_final.predict(X)\n\n    def _prediction_stderr(self, X):\n        if not hasattr(self.model_final, 'prediction_stderr'):\n            warn(\"Final model doesn't have a `prediction_stderr` method, \"\n                 \"only point estimates will be returned.\")\n            return None\n        return self.model_final.prediction_stderr(X)\n\n\nclass GenericSingleTreatmentModelFinalInference(GenericModelFinalInference):\n    \"\"\"\n    Inference based on predict_interval of the model_final model.\n\n    Assumes that treatment is single dimensional.\n    Thus, the predict(X) of model_final gives the const_marginal_effect(X). The single dimensionality allows us\n    to implement effect_interval(X, T0, T1) based on the const_marginal_effect_interval.\n    \"\"\"\n\n    def fit(self, estimator, *args, **kwargs):\n        super().fit(estimator, *args, **kwargs)\n        if len(self._d_t) > 1 and (self._d_t[0] > 1):\n            raise AttributeError(\"This method only works for single-dimensional continuous treatment \"\n                                 \"or binary categorical treatment\")\n\n    def effect_interval(self, X, *, T0, T1, alpha=0.05):\n        return self.effect_inference(X, T0=T0, T1=T1).conf_int(alpha=alpha)\n\n    def effect_inference(self, X, *, T0, T1):\n        # We can write effect inference as a function of const_marginal_effect_inference for a single treatment\n        X, T0, T1 = self._est._expand_treatments(X, T0, T1)\n        cme_pred = self.const_marginal_effect_inference(X).point_estimate\n        cme_stderr = self.const_marginal_effect_inference(X).stderr\n        dT = T1 - T0\n        einsum_str = 'myt,mt->my'\n        if ndim(dT) == 1:\n            einsum_str = einsum_str.replace('t', '')\n        if ndim(cme_pred) == ndim(dT):  # y is a vector, rather than a 2D array\n            einsum_str = einsum_str.replace('y', '')\n        e_pred = np.einsum(einsum_str, cme_pred, dT)\n        e_stderr = np.einsum(einsum_str, cme_stderr, np.abs(dT)) if cme_stderr is not None else None\n        d_y = self._d_y[0] if self._d_y else 1\n\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=d_y, pred=e_pred,\n                                      pred_stderr=e_stderr, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n    def marginal_effect_inference(self, T, X):\n        X, T = self._est._expand_treatments(X, T, transform=False)\n\n        cme_inf = self.const_marginal_effect_inference(X)\n        if not self._est._original_treatment_featurizer:\n            return cme_inf\n\n        feat_T = self._est.transformer.transform(T)\n\n        cme_pred = cme_inf.point_estimate\n        cme_stderr = cme_inf.stderr\n\n        jac_T = self._est.transformer.jac(T)\n\n        einsum_str = 'myf, mtf->myt'\n        if ndim(T) == 1:\n            einsum_str = einsum_str.replace('t', '')\n        if ndim(feat_T) == 1:\n            einsum_str = einsum_str.replace('f', '')\n        # y is a vector, rather than a 2D array\n        if (ndim(cme_pred) == ndim(feat_T)):\n            einsum_str = einsum_str.replace('y', '')\n        e_pred = np.einsum(einsum_str, cme_pred, jac_T)\n        e_stderr = np.einsum(einsum_str, cme_stderr, np.abs(jac_T)) if cme_stderr is not None else None\n        d_y = self._d_y[0] if self._d_y else 1\n        d_t_orig = T.shape[1:][0] if T.shape[1:] else 1\n\n        return NormalInferenceResults(d_t=d_t_orig, d_y=d_y, pred=e_pred,\n                                      pred_stderr=e_stderr, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n    def marginal_effect_interval(self, T, X, *, alpha=0.05):\n        return self.marginal_effect_inference(T, X).conf_int(alpha=alpha)\n\n\nclass LinearModelFinalInference(GenericModelFinalInference):\n    \"\"\"\n    Inference based on predict_interval of the model_final model.\n\n    Assumes that estimator\n    class has a model_final method and that model is linear. Thus, the predict(cross_product(X, T1 - T0)) gives\n    the effect(X, T0, T1). This allows us to implement effect_interval(X, T0, T1) based on the\n    predict_interval of model_final.\n    \"\"\"\n\n    def fit(self, estimator, *args, **kwargs):\n        # once the estimator has been fit\n        super().fit(estimator, *args, **kwargs)\n        self._d_t_in = estimator._d_t_in\n        self.bias_part_of_coef = estimator.bias_part_of_coef\n        self.fit_cate_intercept = estimator.fit_cate_intercept\n\n    # replacing _predict of super to fend against misuse, when the user has used a final linear model with\n    # an intercept even when bias is part of coef.\n    def _predict(self, X):\n        intercept = 0\n        if self.bias_part_of_coef:\n            intercept = self.model_final.predict(np.zeros((1, X.shape[1])))\n            if np.any(np.abs(intercept) > 0):\n                warn(\"The final model has a nonzero intercept for at least one outcome; \"\n                     \"it will be subtracted, but consider fitting a model without an intercept if possible. \"\n                     \"Standard errors will also be slightly incorrect if the final model used fits an intercept \"\n                     \"as they will be including the variance of the intercept parameter estimate.\",\n                     UserWarning)\n        return self.model_final.predict(X) - intercept\n\n    def effect_interval(self, X, *, T0, T1, alpha=0.05):\n        return self.effect_inference(X, T0=T0, T1=T1).conf_int(alpha=alpha)\n\n    def effect_inference(self, X, *, T0, T1):\n        # We can write effect inference as a function of prediction and prediction standard error of\n        # the final method for linear models\n        X, T0, T1 = self._est._expand_treatments(X, T0, T1)\n        if X is None:\n            X = np.ones((T0.shape[0], 1))\n        elif self.featurizer is not None:\n            X = self.featurizer.transform(X)\n        XT = cross_product(X, T1 - T0)\n        e_pred = reshape_outcomewise_effects(self._predict(XT), self._d_y)\n        e_stderr = reshape_outcomewise_effects(self._prediction_stderr(XT), self._d_y)\n        d_y = self._d_y[0] if self._d_y else 1\n\n        mean_XT = XT.mean(axis=0, keepdims=True)\n        mean_pred_stderr = self._prediction_stderr(mean_XT)  # shape[0] will always be 1 here\n        # squeeze the first axis\n        mean_pred_stderr = np.squeeze(mean_pred_stderr, axis=0) if mean_pred_stderr is not None else None\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=d_y, pred=e_pred,\n                                      pred_stderr=e_stderr, mean_pred_stderr=mean_pred_stderr, inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n    def const_marginal_effect_inference(self, X):\n        inf_res = super().const_marginal_effect_inference(X)\n\n        # set the mean_pred_stderr\n        if X is None:\n            X = np.ones((1, 1))\n        elif self.featurizer is not None:\n            X = self.featurizer.transform(X)\n        X_mean, T_mean = broadcast_unit_treatments(X.mean(axis=0).reshape(1, -1), self.d_t)\n        mean_XT = cross_product(X_mean, T_mean)\n        mean_pred_stderr = self._prediction_stderr(mean_XT)\n        if mean_pred_stderr is not None:\n            mean_pred_stderr = reshape_treatmentwise_effects(mean_pred_stderr,\n                                                             self._d_t, self._d_y)  # shape[0] will always be 1 here\n            inf_res.mean_pred_stderr = np.squeeze(mean_pred_stderr, axis=0)\n        return inf_res\n\n    def marginal_effect_inference(self, T, X):\n        X, T = self._est._expand_treatments(X, T, transform=False)\n        if not self._est._original_treatment_featurizer:\n            return self.const_marginal_effect_inference(X)\n\n        if X is None:\n            X = np.ones((T.shape[0], 1))\n        elif self.featurizer is not None:\n            X = self.featurizer.transform(X)\n\n        feat_T = self._est.transformer.transform(T)\n\n        jac_T = self._est.transformer.jac(T)\n\n        d_t_orig = T.shape[1:]\n        d_t_orig = d_t_orig[0] if d_t_orig else 1\n\n        d_y = self._d_y[0] if self._d_y else 1\n\n        output_shape = [X.shape[0]]\n        if self._d_y:\n            output_shape.append(self._d_y[0])\n        if T.shape[1:]:\n            output_shape.append(T.shape[1])\n        me_pred = np.zeros(shape=output_shape)\n        me_stderr = np.zeros(shape=output_shape)\n        mean_pred_stderr_res = np.zeros(shape=output_shape[1:])\n        for i in range(d_t_orig):\n            # conditionally index multiple dimensions depending on shapes of T, Y and feat_T\n            jac_index = [slice(None)]\n            me_index = [slice(None)]\n            if self._d_y:\n                me_index.append(slice(None))\n            if T.shape[1:]:\n                jac_index.append(i)\n                me_index.append(i)\n            if feat_T.shape[1:]:  # if featurized T is not a vector\n                jac_index.append(slice(None))\n\n            XT = cross_product(X, jac_T[tuple(jac_index)])\n            e_pred = self._predict(XT).reshape(X.shape[:1] + self._d_y)  # enforce output shape\n            e_stderr = self._prediction_stderr(XT).reshape(X.shape[:1] + self._d_y)\n\n            mean_XT = XT.mean(axis=0, keepdims=True)\n            mean_pred_stderr = self._prediction_stderr(mean_XT)  # shape[0] will always be 1 here\n            # squeeze the first axis\n            mean_pred_stderr = np.squeeze(mean_pred_stderr, axis=0) if mean_pred_stderr is not None else None\n            if mean_pred_stderr is not None:\n                mean_pred_stderr_res[tuple(me_index[1:])] = mean_pred_stderr\n\n            me_pred[tuple(me_index)] = e_pred\n            me_stderr[tuple(me_index)] = e_stderr\n\n        return NormalInferenceResults(d_t=d_t_orig, d_y=d_y, pred=me_pred,\n                                      pred_stderr=me_stderr, mean_pred_stderr=mean_pred_stderr_res, inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n    def marginal_effect_interval(self, T, X, *, alpha=0.05):\n        return self.marginal_effect_inference(T, X).conf_int(alpha=alpha)\n\n    def coef__interval(self, *, alpha=0.05):\n        lo, hi = self.model_final.coef__interval(alpha)\n        lo_int, hi_int = self.model_final.intercept__interval(alpha)\n        lo = parse_final_model_params(lo, lo_int,\n                                      self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                      self.fit_cate_intercept)[0]\n        hi = parse_final_model_params(hi, hi_int,\n                                      self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                      self.fit_cate_intercept)[0]\n        return lo, hi\n\n    def coef__inference(self):\n        coef = self.model_final.coef_\n        intercept = self.model_final.intercept_\n        coef = parse_final_model_params(coef, intercept,\n                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                        self.fit_cate_intercept)[0]\n        if hasattr(self.model_final, 'coef_stderr_') and hasattr(self.model_final, 'intercept_stderr_'):\n            coef_stderr = self.model_final.coef_stderr_\n            intercept_stderr = self.model_final.intercept_stderr_\n            coef_stderr = parse_final_model_params(coef_stderr, intercept_stderr,\n                                                   self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                                   self.fit_cate_intercept)[0]\n        else:\n            warn(\"Final model doesn't have a `coef_stderr_` and `intercept_stderr_` attributes, \"\n                 \"only point estimates will be available.\")\n            coef_stderr = None\n\n        if coef.size == 0:  # X is None\n            raise AttributeError(\"X is None, please call intercept_inference to learn the constant!\")\n\n        fname_transformer = None\n        if hasattr(self._est, 'cate_feature_names') and callable(self._est.cate_feature_names):\n            fname_transformer = self._est.cate_feature_names\n\n        return NormalInferenceResults(d_t=self.d_t, d_y=self.d_y, pred=coef, pred_stderr=coef_stderr,\n                                      mean_pred_stderr=None,\n                                      inf_type='coefficient', fname_transformer=fname_transformer,\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names(),\n                                      treatment_names=self._est.cate_treatment_names())\n\n    def intercept__interval(self, *, alpha=0.05):\n        if not self.fit_cate_intercept:\n            raise AttributeError(\"No intercept was fitted!\")\n        lo, hi = self.model_final.coef__interval(alpha)\n        lo_int, hi_int = self.model_final.intercept__interval(alpha)\n        lo = parse_final_model_params(lo, lo_int,\n                                      self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                      self.fit_cate_intercept)[1]\n        hi = parse_final_model_params(hi, hi_int,\n                                      self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                      self.fit_cate_intercept)[1]\n        return lo, hi\n\n    def intercept__inference(self):\n        if not self.fit_cate_intercept:\n            raise AttributeError(\"No intercept was fitted!\")\n        coef = self.model_final.coef_\n        intercept = self.model_final.intercept_\n        intercept = parse_final_model_params(coef, intercept,\n                                             self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                             self.fit_cate_intercept)[1]\n        if hasattr(self.model_final, 'coef_stderr_') and hasattr(self.model_final, 'intercept_stderr_'):\n            coef_stderr = self.model_final.coef_stderr_\n            intercept_stderr = self.model_final.intercept_stderr_\n            intercept_stderr = parse_final_model_params(coef_stderr, intercept_stderr,\n                                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                                        self.fit_cate_intercept)[1]\n        else:\n            warn(\"Final model doesn't have a `coef_stderr_` and `intercept_stderr_` attributes, \"\n                 \"only point estimates will be available.\")\n            intercept_stderr = None\n\n        return NormalInferenceResults(d_t=self.d_t, d_y=self.d_y, pred=intercept, pred_stderr=intercept_stderr,\n                                      mean_pred_stderr=None,\n                                      inf_type='intercept',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names(),\n                                      treatment_names=self._est.cate_treatment_names())\n\n\nclass StatsModelsInference(LinearModelFinalInference):\n    \"\"\"Stores statsmodels covariance options.\n\n    This class can be used for inference by the LinearDML.\n\n    Parameters\n    ----------\n    cov_type : str, default 'HC1'\n        The type of covariance estimation method to use.  Supported values are 'nonrobust',\n        'HC0', 'HC1'.\n    \"\"\"\n\n    def __init__(self, cov_type='HC1'):\n        if cov_type not in ['nonrobust', 'HC0', 'HC1']:\n            raise ValueError(\"Unsupported cov_type; \"\n                             \"must be one of 'nonrobust', \"\n                             \"'HC0', 'HC1'\")\n\n        self.cov_type = cov_type\n\n    def prefit(self, estimator, *args, **kwargs):\n        super().prefit(estimator, *args, **kwargs)\n        assert not (self.model_final.fit_intercept), (\"Inference can only be performed on models linear in \"\n                                                      \"their features, but here fit_intercept is True\")\n        self.model_final.cov_type = self.cov_type\n\n\nclass GenericModelFinalInferenceDiscrete(Inference):\n    \"\"\"\n    Inference where a separate generic model_final is used to fit the CATE associated with each treatment.\n\n    This model_final supports predict_interval. Inference is based on predict_interval of the model_final model.\n    \"\"\"\n\n    def prefit(self, estimator, *args, **kwargs):\n        self.model_final = estimator.model_final_\n        self.featurizer = estimator.featurizer_ if hasattr(estimator, 'featurizer_') else None\n\n    def fit(self, estimator, *args, **kwargs):\n        # once the estimator has been fit, it's kosher to store d_t here\n        # (which needs to have been expanded if there's a discrete treatment)\n        self._est = estimator\n        self._d_t = estimator._d_t\n        self._d_y = estimator._d_y\n        self.fitted_models_final = estimator.fitted_models_final\n        self.d_t = self._d_t[0] if self._d_t else 1\n        self.d_y = self._d_y[0] if self._d_y else 1\n        if hasattr(estimator, 'fit_cate_intercept'):\n            self.fit_cate_intercept = estimator.fit_cate_intercept\n\n    def const_marginal_effect_interval(self, X, *, alpha=0.05):\n        return self.const_marginal_effect_inference(X).conf_int(alpha=alpha)\n\n    def const_marginal_effect_inference(self, X):\n        if (X is not None) and (self.featurizer is not None):\n            X = self.featurizer.transform(X)\n        pred = np.moveaxis(np.array([mdl.predict(X).reshape((-1,) + self._d_y)\n                                     for mdl in self.fitted_models_final]), 0, -1)\n        if hasattr(self.fitted_models_final[0], 'prediction_stderr'):\n            # send treatment to the end, pull bounds to the front\n            pred_stderr = np.moveaxis(np.array([mdl.prediction_stderr(X).reshape((-1,) + self._d_y)\n                                                for mdl in self.fitted_models_final]),\n                                      0, -1)\n        else:\n            warn(\"Final model doesn't have a `prediction_stderr` method. \"\n                 \"Only point estimates will be available.\")\n            pred_stderr = None\n        return NormalInferenceResults(d_t=self.d_t, d_y=self.d_y, pred=pred,\n                                      pred_stderr=pred_stderr, mean_pred_stderr=None,\n                                      inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names(),\n                                      treatment_names=self._est.cate_treatment_names())\n\n    def effect_interval(self, X, *, T0, T1, alpha=0.05):\n        return self.effect_inference(X, T0=T0, T1=T1).conf_int(alpha=alpha)\n\n    def effect_inference(self, X, *, T0, T1):\n        X, T0, T1 = self._est._expand_treatments(X, T0, T1)\n        if np.any(np.any(T0 > 0, axis=1)) or np.any(np.all(T1 == 0, axis=1)):\n            raise AttributeError(\"Can only calculate inference of effects between a non-baseline treatment \"\n                                 \"and the baseline treatment!\")\n        ind = inverse_onehot(T1)\n        pred = self.const_marginal_effect_inference(X).point_estimate\n        pred = np.concatenate([np.zeros(pred.shape[0:-1] + (1,)), pred], -1)\n        pred_stderr = self.const_marginal_effect_inference(X).stderr\n        if pred_stderr is not None:\n            pred_stderr = np.concatenate([np.zeros(pred_stderr.shape[0:-1] + (1,)), pred_stderr], -1)\n        if X is None:  # Then const_marginal_effect_interval will return a single row\n            pred = np.repeat(pred, T0.shape[0], axis=0)\n            pred_stderr = np.repeat(pred_stderr, T0.shape[0], axis=0) if pred_stderr is not None else None\n        pred = pred[np.arange(T0.shape[0]), ..., ind]\n        pred_stderr = pred_stderr[np.arange(T0.shape[0]), ..., ind] if pred_stderr is not None else None\n\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=self.d_y, pred=pred,\n                                      pred_stderr=pred_stderr, mean_pred_stderr=None,\n                                      inf_type='effect',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n\nclass LinearModelFinalInferenceDiscrete(GenericModelFinalInferenceDiscrete):\n    \"\"\"\n    Inference method for estimators with linear-in-X final models for each categorical treatment.\n\n    Implements the coef__interval and intercept__interval\n    based on the corresponding methods of the underlying model_final estimator.\n    \"\"\"\n\n    def const_marginal_effect_inference(self, X):\n        res_inf = super().const_marginal_effect_inference(X)\n\n        # set the mean_pred_stderr\n        if (X is not None) and (self.featurizer is not None):\n            X = self.featurizer.transform(X)\n\n        if hasattr(self.fitted_models_final[0], 'prediction_stderr'):\n            mean_X = X.mean(axis=0).reshape(1, -1) if X is not None else None\n            mean_pred_stderr = np.moveaxis(np.array([mdl.prediction_stderr(mean_X).reshape((-1,) + self._d_y)\n                                                     for mdl in self.fitted_models_final]),\n                                           0, -1)  # shape[0] will always be 1 here\n            res_inf.mean_pred_stderr = np.squeeze(mean_pred_stderr, axis=0)\n        return res_inf\n\n    def effect_inference(self, X, *, T0, T1):\n        res_inf = super().effect_inference(X, T0=T0, T1=T1)\n\n        # replace the mean_pred_stderr if T1 and T0 is a constant or a constant of vector\n        _, _, T1 = self._est._expand_treatments(X, T0, T1)\n        ind = inverse_onehot(T1)\n        if len(set(ind)) == 1:\n            unique_ind = ind[0] - 1\n            mean_pred_stderr = self.const_marginal_effect_inference(X).mean_pred_stderr[..., unique_ind]\n            res_inf.mean_pred_stderr = mean_pred_stderr\n        return res_inf\n\n    def coef__interval(self, T, *, alpha=0.05):\n        _, T = self._est._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.fitted_models_final[ind].coef__interval(alpha)\n\n    def coef__inference(self, T):\n        _, T = self._est._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        coef = self.fitted_models_final[ind].coef_\n        if hasattr(self.fitted_models_final[ind], 'coef_stderr_'):\n            coef_stderr = self.fitted_models_final[ind].coef_stderr_\n        else:\n            warn(\"Final model doesn't have a `coef_stderr_` attribute. \"\n                 \"Only point estimates will be available.\")\n            coef_stderr = None\n        if coef.size == 0:  # X is None\n            raise AttributeError(\"X is None, please call intercept_inference to learn the constant!\")\n\n        fname_transformer = None\n        if hasattr(self._est, 'cate_feature_names') and callable(self._est.cate_feature_names):\n            fname_transformer = self._est.cate_feature_names\n\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=self.d_y, pred=coef, pred_stderr=coef_stderr,\n                                      mean_pred_stderr=None,\n                                      inf_type='coefficient', fname_transformer=fname_transformer,\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n    def intercept__interval(self, T, *, alpha=0.05):\n        if not self.fit_cate_intercept:\n            raise AttributeError(\"No intercept was fitted!\")\n        _, T = self._est._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        return self.fitted_models_final[ind].intercept__interval(alpha)\n\n    def intercept__inference(self, T):\n        if not self.fit_cate_intercept:\n            raise AttributeError(\"No intercept was fitted!\")\n        _, T = self._est._expand_treatments(None, T)\n        ind = inverse_onehot(T).item() - 1\n        assert ind >= 0, \"No model was fitted for the control\"\n        if hasattr(self.fitted_models_final[ind], 'intercept_stderr_'):\n            intercept_stderr = self.fitted_models_final[ind].intercept_stderr_\n        else:\n            warn(\"Final model doesn't have a `intercept_stderr_` attribute. \"\n                 \"Only point estimates will be available.\")\n            intercept_stderr = None\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=self.d_y, pred=self.fitted_models_final[ind].intercept_,\n                                      pred_stderr=intercept_stderr, mean_pred_stderr=None,\n                                      inf_type='intercept',\n                                      feature_names=self._est.cate_feature_names(),\n                                      output_names=self._est.cate_output_names())\n\n\nclass StatsModelsInferenceDiscrete(LinearModelFinalInferenceDiscrete):\n    \"\"\"\n    Special case where final model is a StatsModelsLinearRegression.\n\n    Parameters\n    ----------\n    cov_type : str, default 'HC1'\n        The type of covariance estimation method to use.  Supported values are 'nonrobust',\n        'HC0', 'HC1'.\n    \"\"\"\n\n    def __init__(self, cov_type='HC1'):\n        if cov_type not in ['nonrobust', 'HC0', 'HC1']:\n            raise ValueError(\"Unsupported cov_type; \"\n                             \"must be one of 'nonrobust', \"\n                             \"'HC0', 'HC1'\")\n\n        self.cov_type = cov_type\n\n    def prefit(self, estimator, *args, **kwargs):\n        super().prefit(estimator, *args, **kwargs)\n        # need to set the fit args before the estimator is fit\n        self.model_final.cov_type = self.cov_type\n\n\nclass InferenceResults(metaclass=abc.ABCMeta):\n    \"\"\"\n    Results class for inferences.\n\n    Parameters\n    ----------\n    d_t: int or None\n        Number of treatments\n    d_y: int\n        Number of outputs\n    pred : array_like, shape (m, d_y, d_t) or (m, d_y)\n        The prediction of the metric for each sample X[i].\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n        (e.g. if both are vectors, then the input of this argument will also be a vector)\n    inf_type: str\n        The type of inference result.\n        It could be either 'effect', 'coefficient' or 'intercept'.\n    fname_transformer: None or predefined function\n        The transform function to get the corresponding feature names from featurizer\n    \"\"\"\n\n    def __init__(self, d_t, d_y, pred, inf_type, fname_transformer=None,\n                 feature_names=None, output_names=None, treatment_names=None):\n        self.d_t = d_t\n        # For effect summaries, d_t is None, but the result arrays behave as if d_t=1\n        self._d_t = d_t or 1\n        self.d_y = d_y\n        self.pred = np.copy(pred) if pred is not None and not np.isscalar(pred) else pred\n        self.inf_type = inf_type\n        self.fname_transformer = fname_transformer\n        self.feature_names = feature_names\n        self.output_names = output_names\n        self.treatment_names = treatment_names\n\n    @property\n    def point_estimate(self):\n        \"\"\"\n        Get the point estimate of each treatment on each outcome for each sample X[i].\n\n        Returns\n        -------\n        prediction : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The point estimate of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return self.pred\n\n    @property\n    @abc.abstractmethod\n    def stderr(self):\n        \"\"\"\n        Get the standard error of the metric of each treatment on each outcome for each sample X[i].\n\n        Returns\n        -------\n        stderr : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The standard error of the metric of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @property\n    def var(self):\n        \"\"\"\n        Get the variance of the metric of each treatment on each outcome for each sample X[i].\n\n        Returns\n        -------\n        var : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The variance of the metric of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        if self.stderr is not None:\n            return self.stderr**2\n        return None\n\n    @abc.abstractmethod\n    def conf_int(self, alpha=0.05):\n        \"\"\"\n        Get the confidence interval of the metric of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (m, d_y, d_t) or (m, d_y)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abc.abstractmethod\n    def pvalue(self, value=0):\n        \"\"\"\n        Get the p value of the z test of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        pvalue : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The p value of the z test of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def zstat(self, value=0):\n        \"\"\"\n        Get the z statistic of the metric of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        zstat : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The z statistic of the metric of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        if self.stderr is None:\n            raise AttributeError(\"Only point estimates are available!\")\n        return (self.point_estimate - value) / self.stderr\n\n    def summary_frame(self, alpha=0.05, value=0, decimals=3,\n                      feature_names=None, output_names=None, treatment_names=None):\n        \"\"\"\n        Output the dataframe for all the inferences above.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        feature_names: list of str, optional\n            The names of the features X\n        output_names: list of str, optional\n            The names of the outputs\n        treatment_names: list of str, optional\n            The names of the treatments\n\n        Returns\n        -------\n        output: DataFrame\n            The output dataframe includes point estimate, standard error, z score, p value and confidence intervals\n            of the estimated metric of each treatment on each outcome for each sample X[i]\n        \"\"\"\n        treatment_names = self.treatment_names if treatment_names is None else treatment_names\n        output_names = self.output_names if output_names is None else output_names\n        to_include = OrderedDict()\n\n        to_include['point_estimate'] = self._reshape_array(self.point_estimate)\n        # get the length of X when it's effect, or length of coefficient/intercept when it's coefficient/intercpet\n        # to_include['point_estimate'] is a flatten vector with length d_t*d_y*nx\n        nx = to_include['point_estimate'].shape[0] // self._d_t // self.d_y\n\n        if self.stderr is not None:\n            ci_mean = self.conf_int(alpha=alpha)\n            to_include['stderr'] = self._reshape_array(self.stderr)\n            to_include['zstat'] = self._reshape_array(self.zstat(value))\n            to_include['pvalue'] = self._reshape_array(self.pvalue(value))\n            to_include['ci_lower'] = self._reshape_array(ci_mean[0])\n            to_include['ci_upper'] = self._reshape_array(ci_mean[1])\n        if output_names is None:\n            output_names = ['Y' + str(i) for i in range(self.d_y)]\n        assert len(output_names) == self.d_y, \"Incompatible length of output names\"\n        if treatment_names is None:\n            treatment_names = ['T' + str(i) for i in range(self._d_t)]\n        names = ['X', 'Y', 'T']\n        if self.d_t:\n            assert len(treatment_names) == self._d_t, \"Incompatible length of treatment names\"\n            index = pd.MultiIndex.from_product([range(nx),\n                                                output_names, treatment_names], names=names)\n        else:\n            index = pd.MultiIndex.from_product([range(nx),\n                                                output_names, [treatment_names[0]]], names=names)\n        res = pd.DataFrame(to_include, index=index).round(decimals)\n\n        if self.inf_type == 'coefficient':\n            if feature_names is not None:\n                if self.fname_transformer is not None:\n                    feature_names = self.fname_transformer(feature_names)\n            else:\n                feature_names = self.feature_names\n            if feature_names is not None:\n                ind = feature_names\n            else:\n                ind = ['X' + str(i) for i in range(nx)]\n            res.index = res.index.set_levels(ind, level=\"X\")\n\n        elif self.inf_type == 'intercept':\n            res.index = res.index.set_levels(['cate_intercept'], level=\"X\")\n        elif self.inf_type == 'ate':\n            res.index = res.index.set_levels(['ATE'], level=\"X\")\n        elif self.inf_type == 'att':\n            res.index = res.index.set_levels(['ATT'], level=\"X\")\n        if self._d_t == 1:\n            res.index = res.index.droplevel(\"T\")\n        if self.d_y == 1:\n            res.index = res.index.droplevel(\"Y\")\n\n        return res\n\n    def population_summary(self, alpha=0.05, value=0, decimals=3, tol=0.001, output_names=None, treatment_names=None):\n        \"\"\"\n        Output the object of population summary results.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        tol:  float, default 0.001\n            The stopping criterion. The iterations will stop when the outcome is less than ``tol``\n        output_names: list of str, optional\n            The names of the outputs\n        treatment_names: list of str, optional\n            The names of the treatments\n\n        Returns\n        -------\n        PopulationSummaryResults: object\n            The population summary results instance contains the different summary analysis of point estimate\n            for sample X on each treatment and outcome.\n        \"\"\"\n        treatment_names = self.treatment_names if treatment_names is None else treatment_names\n        output_names = self.output_names if output_names is None else output_names\n        if self.inf_type == 'effect':\n            return PopulationSummaryResults(pred=self.point_estimate, pred_stderr=self.stderr,\n                                            mean_pred_stderr=None,\n                                            d_t=self.d_t, d_y=self.d_y,\n                                            alpha=alpha, value=value, decimals=decimals, tol=tol,\n                                            output_names=output_names, treatment_names=treatment_names)\n        else:\n            raise AttributeError(self.inf_type + \" inference doesn't support population_summary function!\")\n\n    def _reshape_array(self, arr):\n        if np.isscalar(arr):\n            arr = np.array([arr])\n        if self.inf_type == 'coefficient':\n            arr = np.moveaxis(arr, -1, 0)\n        arr = arr.flatten()\n        return arr\n\n    @abc.abstractmethod\n    def _expand_outputs(self, n_rows):\n        \"\"\"\n        Expand the inference results from 1 row to n_rows identical rows.\n\n        This is used internally when\n        we move from constant effects when X is None to a marginal effect of a different dimension.\n\n        Parameters\n        ----------\n        n_rows: positive int\n            The number of rows to expand to\n\n        Returns\n        -------\n        results: InferenceResults\n            The expanded results\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    def translate(self, offset):\n        \"\"\"\n        Update the results in place by translating by an offset.\n\n        Parameters\n        ----------\n        offset: array_like\n            The offset by which to translate these results\n        \"\"\"\n        # Use broadcast to ensure that the shape of pred isn't being changed due to broadcasting the other direction\n        offset = np.broadcast_to(np.asarray(offset), np.shape(self.pred))\n        self.pred = self.pred + offset\n\n    @abc.abstractmethod\n    def scale(self, factor):\n        \"\"\"\n        Update the results in place by scaling by a factor.\n\n        Parameters\n        ----------\n        factor: array_like\n            The factor by which to scale these results\n        \"\"\"\n        # Use broadcast to ensure that the shape of pred isn't being changed due to broadcasting the other direction\n        factor = np.broadcast_to(np.asarray(factor), np.shape(self.pred))\n        self.pred = self.pred * np.asarray(factor)\n\n\nclass NormalInferenceResults(InferenceResults):\n    \"\"\"\n    Results class for inference assuming a normal distribution.\n\n    Parameters\n    ----------\n    d_t: int or None\n        Number of treatments\n    d_y: int\n        Number of outputs\n    pred : array_like, shape (m, d_y, d_t) or (m, d_y)\n        The prediction of the metric for each sample X[i].\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n        (e.g. if both are vectors, then the input of this argument will also be a vector)\n    pred_stderr : array_like, shape (m, d_y, d_t) or (m, d_y)\n        The prediction standard error of the metric for each sample X[i].\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n        (e.g. if both are vectors, then the input of this argument will also be a vector)\n    mean_pred_stderr: None or array_like or scaler, shape (d_y, d_t) or (d_y,)\n        The standard error of the mean point estimate, this is derived from coefficient stderr when final\n        stage is linear model, otherwise it's None.\n        This is the exact standard error of the mean, which is not conservative.\n    inf_type: str\n        The type of inference result.\n        It could be either 'effect', 'coefficient' or 'intercept'.\n    fname_transformer: None or predefined function\n        The transform function to get the corresponding feature names from featurizer\n    \"\"\"\n\n    def __init__(self, d_t, d_y, pred, pred_stderr, mean_pred_stderr, inf_type, fname_transformer=None,\n                 feature_names=None, output_names=None, treatment_names=None):\n        self.pred_stderr = np.copy(pred_stderr) if pred_stderr is not None and not np.isscalar(\n            pred_stderr) else pred_stderr\n        self.mean_pred_stderr = mean_pred_stderr\n        super().__init__(d_t, d_y, pred, inf_type, fname_transformer, feature_names, output_names, treatment_names)\n\n    @property\n    def stderr(self):\n        \"\"\"\n        Get the standard error of the metric of each treatment on each outcome for each sample X[i].\n\n        Returns\n        -------\n        stderr : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The standard error of the metric of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return self.pred_stderr\n\n    def conf_int(self, alpha=0.05):\n        \"\"\"\n        Get the confidence interval of the metric of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (m, d_y, d_t) or (m, d_y)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        if self.stderr is None:\n            raise AttributeError(\"Only point estimates are available!\")\n        else:\n            return _safe_norm_ppf(alpha / 2, loc=self.point_estimate, scale=self.stderr), \\\n                _safe_norm_ppf(1 - alpha / 2, loc=self.point_estimate, scale=self.stderr)\n\n    def pvalue(self, value=0):\n        \"\"\"\n        Get the p value of the z test of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        pvalue : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The p value of the z test of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return norm.sf(np.abs(self.zstat(value)), loc=0, scale=1) * 2\n\n    def population_summary(self, alpha=0.05, value=0, decimals=3, tol=0.001, output_names=None, treatment_names=None):\n        pop_summ = super().population_summary(alpha=alpha, value=value, decimals=decimals,\n                                              tol=tol, output_names=output_names, treatment_names=treatment_names)\n        pop_summ.mean_pred_stderr = self.mean_pred_stderr\n        return pop_summ\n    population_summary.__doc__ = InferenceResults.population_summary.__doc__\n\n    def _expand_outputs(self, n_rows):\n        assert shape(self.pred)[0] == shape(self.pred_stderr)[0] == 1\n        pred = np.repeat(self.pred, n_rows, axis=0)\n        pred_stderr = np.repeat(self.pred_stderr, n_rows, axis=0) if self.pred_stderr is not None else None\n        return NormalInferenceResults(self.d_t, self.d_y, pred, pred_stderr,\n                                      self.mean_pred_stderr,\n                                      self.inf_type,\n                                      self.fname_transformer, self.feature_names,\n                                      self.output_names, self.treatment_names)\n\n    def scale(self, factor):\n        # scale preds\n        super().scale(factor)\n        # scale std errs\n        factor = np.broadcast_to(np.asarray(factor), np.shape(self.pred))\n        if self.pred_stderr is not None:\n            self.pred_stderr = self.pred_stderr * np.abs(factor)\n        if self.mean_pred_stderr is not None:\n            self.mean_pred_stderr = self.mean_pred_stderr * np.abs(factor)\n\n    scale.__doc__ = InferenceResults.scale.__doc__\n\n\nclass EmpiricalInferenceResults(InferenceResults):\n    \"\"\"\n    Results class for inference with an empirical set of samples.\n\n    Parameters\n    ----------\n    pred : array_like, shape (m, d_y, d_t) or (m, d_y)\n        the point estimates of the metric using the full sample\n    pred_dist : array_like, shape (b, m, d_y, d_t) or (b, m, d_y)\n        the raw predictions of the metric sampled b times.\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n    d_t: int or None\n        Number of treatments\n    d_y: int\n        Number of outputs\n    inf_type: str\n        The type of inference result.\n        It could be either 'effect', 'coefficient' or 'intercept'.\n    fname_transformer: None or predefined function\n        The transform function to get the corresponding feature names from featurizer\n    \"\"\"\n\n    def __init__(self, d_t, d_y, pred, pred_dist, inf_type, fname_transformer=None,\n                 feature_names=None, output_names=None, treatment_names=None):\n        self.pred_dist = np.copy(pred_dist) if pred_dist is not None and not np.isscalar(pred_dist) else pred_dist\n        super().__init__(d_t, d_y, pred, inf_type, fname_transformer, feature_names, output_names, treatment_names)\n\n    @property\n    def stderr(self):\n        \"\"\"\n        Get the standard error of the metric of each treatment on each outcome for each sample X[i].\n\n        Returns\n        -------\n        stderr : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The standard error of the metric of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return np.std(self.pred_dist, axis=0)\n\n    def conf_int(self, alpha=0.05):\n        \"\"\"\n        Get the confidence interval of the metric of each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (m, d_y, d_t) or (m, d_y)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        return np.percentile(self.pred_dist, lower * 100, axis=0), np.percentile(self.pred_dist, upper * 100, axis=0)\n\n    def pvalue(self, value=0):\n        \"\"\"\n        Get the p value of the each treatment on each outcome for each sample X[i].\n\n        Parameters\n        ----------\n        value: float, default 0\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        pvalue : array_like, shape (m, d_y, d_t) or (m, d_y)\n            The p value of of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        pvalues = np.minimum((self.pred_dist <= value).sum(axis=0),\n                             (self.pred_dist >= value).sum(axis=0)) / self.pred_dist.shape[0]\n        # in the degenerate case where every point in the distribution is equal to the value tested, return nan\n        return np.where(np.all(self.pred_dist == value, axis=0), np.nan, pvalues)\n\n    def _expand_outputs(self, n_rows):\n        assert shape(self.pred)[0] == shape(self.pred_dist)[1] == 1\n        pred = np.repeat(self.pred, n_rows, axis=0)\n        pred_dist = np.repeat(self.pred_dist, n_rows, axis=1)\n        return EmpiricalInferenceResults(self.d_t, self.d_y, pred, pred_dist, self.inf_type, self.fname_transformer,\n                                         self.feature_names, self.output_names, self.treatment_names)\n\n    def translate(self, other):\n        # offset preds\n        super().translate(other)\n        # offset the distribution, too\n        other = np.broadcast_to(np.asarray(other), np.shape(self.pred_dist))\n        self.pred_dist = self.pred_dist + other\n\n    translate.__doc__ = InferenceResults.translate.__doc__\n\n    def scale(self, factor):\n        # scale preds\n        super().scale(factor)\n        # scale the distribution, too\n        factor = np.broadcast_to(np.asarray(factor), np.shape(self.pred_dist))\n        self.pred_dist = self.pred_dist * factor\n\n    scale.__doc__ = InferenceResults.scale.__doc__\n\n\nclass PopulationSummaryResults:\n    \"\"\"\n    Population summary results class for inferences.\n\n    Parameters\n    ----------\n    d_t: int or None\n        Number of treatments\n    d_y: int\n        Number of outputs\n    pred : array_like, shape (m, d_y, d_t) or (m, d_y)\n        The prediction of the metric for each sample X[i].\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n        (e.g. if both are vectors, then the input of this argument will also be a vector)\n    pred_stderr : array_like, shape (m, d_y, d_t) or (m, d_y)\n        The prediction standard error of the metric for each sample X[i].\n        Note that when Y or T is a vector rather than a 2-dimensional array,\n        the corresponding singleton dimensions should be collapsed\n        (e.g. if both are vectors, then the input of this argument will also be a vector)\n    mean_pred_stderr: None or array_like or scalar, shape (d_y, d_t) or (d_y,)\n        The standard error of the mean point estimate, this is derived from coefficient stderr when final\n        stage is linear model, otherwise it's None.\n        This is the exact standard error of the mean, which is not conservative.\n    alpha: ffloat in [0, 1], default 0.05\n        The overall level of confidence of the reported interval.\n        The alpha/2, 1-alpha/2 confidence interval is reported.\n    value: float, default 0\n        The mean value of the metric you'd like to test under null hypothesis.\n    decimals: int, default 3\n        Number of decimal places to round each column to.\n    tol: float, default 0.001\n        The stopping criterion. The iterations will stop when the outcome is less than ``tol``\n    output_names: list of str, optional\n            The names of the outputs\n    treatment_names: list of str, optional\n        The names of the treatments\n\n    \"\"\"\n\n    def __init__(self, pred, pred_stderr, mean_pred_stderr, d_t, d_y, alpha=0.05,\n                 value=0, decimals=3, tol=0.001, output_names=None, treatment_names=None):\n        self.pred = pred\n        self.pred_stderr = pred_stderr\n        self.mean_pred_stderr = mean_pred_stderr\n        self.d_t = d_t\n        # For effect summaries, d_t is None, but the result arrays behave as if d_t=1\n        self._d_t = d_t or 1\n        self.d_y = d_y\n        self.alpha = alpha\n        self.value = value\n        self.decimals = decimals\n        self.tol = tol\n        self.output_names = output_names\n        self.treatment_names = treatment_names\n\n    def __str__(self):\n        return self._print().as_text()\n\n    def _repr_html_(self):\n        \"\"\"Display as HTML in IPython notebook.\"\"\"\n        return self._print().as_html()\n\n    @property\n    def mean_point(self):\n        \"\"\"\n        Get the mean of the point estimate of each treatment on each outcome for sample X.\n\n        Returns\n        -------\n        mean_point : array_like, shape (d_y, d_t)\n            The point estimate of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return np.mean(self.pred, axis=0)\n\n    @property\n    def stderr_mean(self):\n        \"\"\"\n        Get the standard error of the mean point estimate of each treatment on each outcome for sample X.\n\n        The output is a conservative upper bound.\n\n        Returns\n        -------\n        stderr_mean : array_like, shape (d_y, d_t)\n            The standard error of the mean point estimate of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        if self.mean_pred_stderr is not None:\n            return self.mean_pred_stderr\n        elif self.pred_stderr is None:\n            raise AttributeError(\"Only point estimates are available!\")\n        return np.sqrt(np.mean(self.pred_stderr**2, axis=0))\n\n    def zstat(self, *, value=None):\n        \"\"\"\n        Get the z statistic of the mean point estimate of each treatment on each outcome for sample X.\n\n        Parameters\n        ----------\n        value:  float, optional\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        zstat : array_like, shape (d_y, d_t)\n            The z statistic of the mean point estimate of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        value = self.value if value is None else value\n        zstat = (self.mean_point - value) / self.stderr_mean\n        return zstat\n\n    def pvalue(self, *, value=None):\n        \"\"\"\n        Get the p value of the z test of each treatment on each outcome for sample X.\n\n        Parameters\n        ----------\n        value:  float, optional\n            The mean value of the metric you'd like to test under null hypothesis.\n\n        Returns\n        -------\n        pvalue : array_like, shape (d_y, d_t)\n            The p value of the z test of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        value = self.value if value is None else value\n        pvalue = norm.sf(np.abs(self.zstat(value=value)), loc=0, scale=1) * 2\n        return pvalue\n\n    def conf_int_mean(self, *, alpha=None):\n        \"\"\"\n        Get the confidence interval of the mean point estimate of each treatment on each outcome for sample X.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], optional\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (d_y, d_t)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        alpha = self.alpha if alpha is None else alpha\n        mean_point = self.mean_point\n        stderr_mean = self.stderr_mean\n        return (_safe_norm_ppf(alpha / 2, loc=mean_point, scale=stderr_mean),\n                _safe_norm_ppf(1 - alpha / 2, loc=mean_point, scale=stderr_mean))\n\n    @property\n    def std_point(self):\n        \"\"\"\n        Get the standard deviation of the point estimate of each treatment on each outcome for sample X.\n\n        Returns\n        -------\n        std_point : array_like, shape (d_y, d_t)\n            The standard deviation of the point estimate of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return np.std(self.pred, axis=0)\n\n    def percentile_point(self, *, alpha=None):\n        \"\"\"\n        Get the confidence interval of the point estimate of each treatment on each outcome for sample X.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (d_y, d_t)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        alpha = self.alpha if alpha is None else alpha\n        lower_percentile_point = np.percentile(self.pred, (alpha / 2) * 100, axis=0)\n        upper_percentile_point = np.percentile(self.pred, (1 - alpha / 2) * 100, axis=0)\n        return lower_percentile_point, upper_percentile_point\n\n    def conf_int_point(self, *, alpha=None, tol=None):\n        \"\"\"\n        Get the confidence interval of the point estimate of each treatment on each outcome for sample X.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], optional\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        tol:  optinal float\n            The stopping criterion. The iterations will stop when the outcome is less than ``tol``\n\n        Returns\n        -------\n        lower, upper: tuple of array, shape (d_y, d_t)\n            The lower and the upper bounds of the confidence interval for each quantity.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        if self.pred_stderr is None:\n            raise AttributeError(\"Only point estimates are available!\")\n        alpha = self.alpha if alpha is None else alpha\n        tol = self.tol if tol is None else tol\n        lower_ci_point = np.array([self._mixture_ppf(alpha / 2, self.pred, self.pred_stderr, tol)])\n        upper_ci_point = np.array([self._mixture_ppf(1 - alpha / 2, self.pred, self.pred_stderr, tol)])\n        return lower_ci_point, upper_ci_point\n\n    @property\n    def stderr_point(self):\n        \"\"\"\n        Get the standard error of the point estimate of each treatment on each outcome for sample X.\n\n        Returns\n        -------\n        stderr_point : array_like, shape (d_y, d_t)\n            The standard error of the point estimate of each treatment on each outcome for sample X.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return np.sqrt(self.stderr_mean**2 + self.std_point**2)\n\n    def summary(self, alpha=None, value=None, decimals=None, tol=None, output_names=None, treatment_names=None):\n        \"\"\"\n        Get a summary of this instance's information.\n\n        Parameters\n        ----------\n        alpha:  float in [0, 1], optional\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n        value:  float, optional\n            The mean value of the metric you'd like to test under null hypothesis.\n        decimals:  int, optional\n            Number of decimal places to round each column to.\n        tol:  float, optional\n            The stopping criterion. The iterations will stop when the outcome is less than ``tol``\n        output_names: list of str, optional\n                The names of the outputs\n        treatment_names: list of str, optional\n            The names of the treatments\n\n        Returns\n        -------\n        smry : Summary instance\n            this holds the summary tables and text, which can be printed or\n            converted to various output formats.\n        \"\"\"\n        return self._print(alpha=alpha, value=value, decimals=decimals,\n                           tol=tol, output_names=output_names, treatment_names=treatment_names)\n\n    def _print(self, *, alpha=None, value=None, decimals=None, tol=None, output_names=None, treatment_names=None):\n        \"\"\"\n        Get a summary of this instance's data.\n\n        Used as a helper function by both `summary` and `__repr__`.\n\n        In the former case with passed attributes\n        in the latter case with None inputs, hence using the `__init__` params.\n        \"\"\"\n        alpha = self.alpha if alpha is None else alpha\n        value = self.value if value is None else value\n        decimals = self.decimals if decimals is None else decimals\n        tol = self.tol if tol is None else tol\n        treatment_names = self.treatment_names if treatment_names is None else treatment_names\n        output_names = self.output_names if output_names is None else output_names\n\n        # 1. Uncertainty of Mean Point Estimate\n        res1 = self._format_res(self.mean_point, decimals)\n        if self.pred_stderr is not None:\n            res1 = np.hstack((res1,\n                              self._format_res(self.stderr_mean, decimals),\n                              self._format_res(self.zstat(value=value), decimals),\n                              self._format_res(self.pvalue(value=value), decimals),\n                              self._format_res(self.conf_int_mean(alpha=alpha)[0], decimals),\n                              self._format_res(self.conf_int_mean(alpha=alpha)[1], decimals)))\n        if treatment_names is None:\n            treatment_names = ['T' + str(i) for i in range(self._d_t)]\n        if output_names is None:\n            output_names = ['Y' + str(i) for i in range(self.d_y)]\n\n        myheaders1 = ['mean_point', 'stderr_mean', 'zstat', 'pvalue', 'ci_mean_lower', 'ci_mean_upper']\n\n        mystubs = self._get_stub_names(self.d_y, self._d_t, treatment_names, output_names)\n        title1 = \"Uncertainty of Mean Point Estimate\"\n\n        # 2. Distribution of Point Estimate\n        res2 = np.hstack((self._format_res(self.std_point, decimals),\n                          self._format_res(self.percentile_point(alpha=alpha)[0], decimals),\n                          self._format_res(self.percentile_point(alpha=alpha)[1], decimals)))\n        myheaders2 = ['std_point', 'pct_point_lower', 'pct_point_upper']\n        title2 = \"Distribution of Point Estimate\"\n\n        smry = Summary()\n        smry.add_table(res1, myheaders1, mystubs, title1)\n        if self.pred_stderr is not None and self.mean_pred_stderr is None:\n            text1 = \"Note: The stderr_mean is a conservative upper bound.\"\n            smry.add_extra_txt([text1])\n        smry.add_table(res2, myheaders2, mystubs, title2)\n\n        if self.pred_stderr is not None:\n            # 3. Total Variance of Point Estimate\n            res3 = np.hstack((self._format_res(self.stderr_point, self.decimals),\n                              self._format_res(self.conf_int_point(alpha=alpha, tol=tol)[0],\n                                               self.decimals),\n                              self._format_res(self.conf_int_point(alpha=alpha, tol=tol)[1],\n                                               self.decimals)))\n            myheaders3 = ['stderr_point', 'ci_point_lower', 'ci_point_upper']\n            title3 = \"Total Variance of Point Estimate\"\n\n            smry.add_table(res3, myheaders3, mystubs, title3)\n        return smry\n\n    def _mixture_ppf(self, alpha, mean, stderr, tol):\n        \"\"\"Get the confidence interval of mixture gaussian distribution.\"\"\"\n        # if stderr is zero, ppf will return nans and the loop below would never terminate\n        # so bail out early; note that it might be possible to correct the algorithm for\n        # this scenario, but since scipy's cdf returns nan whenever scale is zero it won't\n        # be clean\n        if (np.any(stderr == 0)):\n            return np.full(shape(mean)[1:], np.nan)\n        mix_ppf = scipy.stats.norm.ppf(alpha, loc=mean, scale=stderr)\n        lower = np.min(mix_ppf, axis=0)\n        upper = np.max(mix_ppf, axis=0)\n        while True:\n            cur = (lower + upper) / 2\n            cur_mean = np.mean(scipy.stats.norm.cdf(cur, loc=mean, scale=stderr), axis=0)\n            if np.isscalar(cur):\n                if np.abs(cur_mean - alpha) < tol or (cur == lower):\n                    return cur\n                elif cur_mean < alpha:\n                    lower = cur\n                else:\n                    upper = cur\n            else:\n                if np.all((np.abs(cur_mean - alpha) < tol) | (cur == lower)):\n                    return cur\n                lower[cur_mean < alpha] = cur[cur_mean < alpha]\n                upper[cur_mean > alpha] = cur[cur_mean > alpha]\n\n    def _format_res(self, res, decimals):\n        arr = np.array([[res]]) if np.isscalar(res) else res.reshape(-1, 1)\n        arr = np.round(arr, decimals)\n        return arr\n\n    def _get_stub_names(self, d_y, d_t, treatment_names, output_names):\n        if d_y > 1:\n            if d_t > 1:\n                stubs = [oname + \"|\" + tname for oname in output_names for tname in treatment_names]\n            else:\n                stubs = output_names\n        else:\n            if d_t > 1:\n                stubs = treatment_names\n            else:\n                stubs = []\n        return stubs\n"
  },
  {
    "path": "econml/iv/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n__all__ = [\"dml\", \"dr\", \"sieve\"]\r\n"
  },
  {
    "path": "econml/iv/dml/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Orthogonal IV for Heterogeneous Treatment Effects.\r\n\r\nA Double/Orthogonal machine learning approach to estimation of heterogeneous\r\ntreatment effect with an endogenous treatment and an instrument. It\r\nimplements the DMLIV and related algorithms from the paper:\r\n\r\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\r\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\r\nhttps://arxiv.org/abs/1905.10176\r\n\r\n\"\"\"\r\n\r\nfrom ._dml import OrthoIV, DMLIV, NonParamDMLIV\r\n\r\n__all__ = [\"OrthoIV\",\r\n           \"DMLIV\",\r\n           \"NonParamDMLIV\"]\r\n"
  },
  {
    "path": "econml/iv/dml/_dml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Orthogonal IV for Heterogeneous Treatment Effects.\n\nA Double/Orthogonal machine learning approach to estimation of heterogeneous\ntreatment effect with an endogenous treatment and an instrument. It\nimplements the DMLIV and related algorithms from the paper:\n\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\nhttps://arxiv.org/abs/1905.10176\n\n\"\"\"\n\nimport numpy as np\nfrom sklearn.base import clone\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import FunctionTransformer\nfrom itertools import product\n\nfrom ..._ortho_learner import _OrthoLearner\nfrom ..._cate_estimator import LinearModelFinalCateEstimatorMixin, LinearCateEstimator\nfrom ...sklearn_extensions.linear_model import StatsModels2SLS, StatsModelsLinearRegression\nfrom ...sklearn_extensions.model_selection import (ModelSelector, SingleModelSelector)\nfrom ...utilities import (get_feature_names_or_default, filter_none_kwargs, add_intercept,\n                          cross_product, broadcast_unit_treatments, reshape_treatmentwise_effects, shape,\n                          parse_final_model_params, Summary)\nfrom ...dml.dml import _make_first_stage_selector, _FinalWrapper\nfrom ...dml._rlearner import _ModelFinal\nfrom ..._shap import _shap_explain_joint_linear_model_cate, _shap_explain_model_cate\n\n\ndef _combine(W, Z, n_samples):\n    if Z is not None:\n        Z = Z.reshape(n_samples, -1)\n        return Z if W is None else np.hstack([W, Z])\n    return None if W is None else W\n\n\nclass _OrthoIVNuisanceSelector(ModelSelector):\n\n    def __init__(self,\n                 model_y_xw: SingleModelSelector,\n                 model_t_xw: SingleModelSelector,\n                 model_z: SingleModelSelector,\n                 projection):\n        self._model_y_xw = model_y_xw\n        self._model_t_xw = model_t_xw\n        self._projection = projection\n        if self._projection:\n            self._model_t_xwz = model_z\n        else:\n            self._model_z_xw = model_z\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        self._model_y_xw.train(is_selecting, folds, X=X, W=W, Target=Y, sample_weight=sample_weight, groups=groups)\n        self._model_t_xw.train(is_selecting, folds, X=X, W=W, Target=T, sample_weight=sample_weight, groups=groups)\n        if self._projection:\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            self._model_t_xwz.train(is_selecting, folds, X=X, W=WZ, Target=T,\n                                    sample_weight=sample_weight, groups=groups)\n        else:\n            self._model_z_xw.train(is_selecting, folds, X=X, W=W, Target=Z, sample_weight=sample_weight, groups=groups)\n        return self\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        if hasattr(self._model_y_xw, 'score'):\n            Y_X_score = self._model_y_xw.score(X=X, W=W, Target=Y, sample_weight=sample_weight)\n        else:\n            Y_X_score = None\n        if hasattr(self._model_t_xw, 'score'):\n            T_X_score = self._model_t_xw.score(X=X, W=W, Target=T, sample_weight=sample_weight)\n        else:\n            T_X_score = None\n        if self._projection:\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            if hasattr(self._model_t_xwz, 'score'):\n                T_XZ_score = self._model_t_xwz.score(X=X, W=WZ, Target=T, sample_weight=sample_weight)\n            else:\n                T_XZ_score = None\n            return Y_X_score, T_X_score, T_XZ_score\n\n        else:\n            if hasattr(self._model_z_xw, 'score'):\n                Z_X_score = self._model_z_xw.score(X=X, W=W, Target=Z, sample_weight=sample_weight)\n            else:\n                Z_X_score = None\n            return Y_X_score, T_X_score, Z_X_score\n\n    def predict(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        Y_pred = self._model_y_xw.predict(X=X, W=W)\n        T_pred = self._model_t_xw.predict(X=X, W=W)\n\n        if self._projection:\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            T_proj = self._model_t_xwz.predict(X, WZ)\n        else:\n            Z_pred = self._model_z_xw.predict(X=X, W=W)\n\n        if (X is None) and (W is None):  # In this case predict above returns a single row\n            Y_pred = np.tile(Y_pred.reshape(1, -1), (Y.shape[0], 1))\n            T_pred = np.tile(T_pred.reshape(1, -1), (T.shape[0], 1))\n            if not self._projection:\n                Z_pred = np.tile(Z_pred.reshape(1, -1), (Z.shape[0], 1))\n\n        Y_res = Y - Y_pred.reshape(Y.shape)\n        T_res = T - T_pred.reshape(T.shape)\n\n        if self._projection:\n            Z_res = T_proj.reshape(T.shape) - T_pred.reshape(T.shape)\n        else:\n            Z_res = Z - Z_pred.reshape(Z.shape)\n        return Y_res, T_res, Z_res\n\n\nclass _OrthoIVModelFinal:\n    def __init__(self, model_final, featurizer, fit_cate_intercept):\n        self._model_final = clone(model_final, safe=False)\n        self._original_featurizer = clone(featurizer, safe=False)\n        self._fit_cate_intercept = fit_cate_intercept\n\n        if self._fit_cate_intercept:\n            add_intercept_trans = FunctionTransformer(add_intercept,\n                                                      validate=True)\n            if featurizer:\n                self._featurizer = Pipeline([('featurize', self._original_featurizer),\n                                             ('add_intercept', add_intercept_trans)])\n            else:\n                self._featurizer = add_intercept_trans\n        else:\n            self._featurizer = self._original_featurizer\n\n    def _combine(self, X, T, fitting=True):\n        if X is not None:\n            if self._featurizer is not None:\n                F = self._featurizer.fit_transform(X) if fitting else self._featurizer.transform(X)\n            else:\n                F = X\n        else:\n            if not self._fit_cate_intercept:\n                raise AttributeError(\"Cannot have X=None and also not allow for a CATE intercept!\")\n            F = np.ones((T.shape[0], 1))\n        return cross_product(F, T)\n\n    def fit(self, Y, T, X=None, W=None, Z=None, nuisances=None,\n            sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        Y_res, T_res, Z_res = nuisances\n\n        # Track training dimensions to see if Y or T is a vector instead of a 2-dimensional array\n        self._d_t = shape(T_res)[1:]\n        self._d_y = shape(Y_res)[1:]\n\n        XT_res = self._combine(X, T_res)\n        XZ_res = self._combine(X, Z_res)\n        filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight,\n                                             freq_weight=freq_weight, sample_var=sample_var)\n\n        self._model_final.fit(XZ_res, XT_res, Y_res, **filtered_kwargs)\n\n        return self\n\n    def predict(self, X=None):\n        X2, T = broadcast_unit_treatments(X if X is not None else np.empty((1, 0)),\n                                          self._d_t[0] if self._d_t else 1)\n        XT = self._combine(None if X is None else X2, T, fitting=False)\n        prediction = self._model_final.predict(XT)\n        return reshape_treatmentwise_effects(prediction,\n                                             self._d_t, self._d_y)\n\n    def score(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, groups=None):\n        Y_res, T_res, Z_res = nuisances\n        if Y_res.ndim == 1:\n            Y_res = Y_res.reshape((-1, 1))\n        if T_res.ndim == 1:\n            T_res = T_res.reshape((-1, 1))\n        effects = self.predict(X).reshape((-1, Y_res.shape[1], T_res.shape[1]))\n        Y_res_pred = np.einsum('ijk,ik->ij', effects, T_res).reshape(Y_res.shape)\n        if sample_weight is not None:\n            return np.linalg.norm(np.average(cross_product(Z_res, Y_res - Y_res_pred), weights=sample_weight, axis=0),\n                                  ord=2)\n        else:\n            return np.linalg.norm(np.mean(cross_product(Z_res, Y_res - Y_res_pred), axis=0), ord=2)\n\n\nclass OrthoIV(LinearModelFinalCateEstimatorMixin, _OrthoLearner):\n    \"\"\"\n    Implementation of the orthogonal/double ml method for CATE estimation with IV.\n\n    As described in section 4.2:\n\n    Double/Debiased Machine Learning for Treatment and Causal Parameters\n    Victor Chernozhukov, Denis Chetverikov, Mert Demirer, Esther Duflo, Christian Hansen, Whitney Newey, James Robins\n    https://arxiv.org/abs/1608.00060\n\n    Solve the following moment equation:\n\n    .. math::\n        \\\\E[(Y-\\\\E[Y|X]-\\\\theta(X) * (T-\\\\E[T|X]))(Z-\\\\E[Z|X])] = 0\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_z_xw: estimator, default ``'auto'``\n        Determines how to fit the instrument to the features and controls (:math:`\\\\E[Z | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_instrument` is True\n          and a regressor otherwise\n\n    projection: bool, default False\n        If True, we fit a slight variant of OrthoIV where we use E[T|X, W, Z] as the instrument as opposed to Z,\n        model_z_xw will be disabled; If False, model_t_xwz will be disabled.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default False\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dml import OrthoIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = OrthoIV(discrete_treatment=True, discrete_instrument=True)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.28039...,  6.02945..., -2.86845...])\n    >>> est.effect_interval(X[:3])\n    (array([-7.20723... ,  1.75413..., -5.20891...]),\n    array([-1.35355..., 10.30477..., -0.52799...]))\n    >>> est.coef_\n    array([ 4.51656...,  0.78512...,  0.23706...,  0.24127..., -0.47167...])\n    >>> est.coef__interval()\n    (array([ 3.15599..., -0.35785..., -0.89798..., -0.90529..., -1.62444...]),\n    array([5.87712..., 1.92810..., 1.37211..., 1.38783..., 0.68110...]))\n    >>> est.intercept_\n    -0.13668...\n    >>> est.intercept__interval()\n    (-1.27031..., 0.99694...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_z_xw=\"auto\",\n                 projection=False,\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 discrete_instrument=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False):\n        self.model_y_xw = clone(model_y_xw, safe=False)\n        self.model_t_xw = clone(model_t_xw, safe=False)\n        self.model_t_xwz = clone(model_t_xwz, safe=False)\n        self.model_z_xw = clone(model_z_xw, safe=False)\n        self.projection = projection\n        self.featurizer = clone(featurizer, safe=False)\n        self.fit_cate_intercept = fit_cate_intercept\n\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_final(self):\n        return StatsModels2SLS(cov_type=\"HC0\")\n\n    def _gen_ortho_learner_model_final(self):\n        return _OrthoIVModelFinal(self._gen_model_final(), self._gen_featurizer(), self.fit_cate_intercept)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        model_y = _make_first_stage_selector(self.model_y_xw,\n                                             is_discrete=self.discrete_outcome,\n                                             random_state=self.random_state)\n\n        model_t = _make_first_stage_selector(self.model_t_xw,\n                                             is_discrete=self.discrete_treatment,\n                                             random_state=self.random_state)\n\n        if self.projection:\n            # train E[T|X,W,Z]\n            model_z = _make_first_stage_selector(self.model_t_xwz,\n                                                 is_discrete=self.discrete_treatment,\n                                                 random_state=self.random_state)\n\n        else:\n            # train E[Z|X,W]\n            # note: discrete_instrument rather than discrete_treatment in call to _make_first_stage_selector\n            model_z = _make_first_stage_selector(self.model_z_xw,\n                                                 is_discrete=self.discrete_instrument,\n                                                 random_state=self.random_state)\n\n        return _OrthoIVNuisanceSelector(model_y, model_t, model_z,\n                                        self.projection)\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=\"auto\"):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of:class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.LinearModelFinalInference`)\n\n        Returns\n        -------\n        self: OrthoIV instance\n        \"\"\"\n        if self.projection:\n            assert self.model_z_xw == \"auto\", (\"In the case of projection=True, model_z_xw will not be fitted, \"\n                                               \"please leave it when initializing the estimator!\")\n        else:\n            assert self.model_t_xwz == \"auto\", (\"In the case of projection=False, model_t_xwz will not be fitted, \"\n                                                \"please leave it when initializing the estimator!\")\n        #  Replacing fit from _OrthoLearner, to reorder arguments and improve the docstring\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    def score(self, Y, T, Z, X=None, W=None, sample_weight=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix, optional\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        # Replacing score from _OrthoLearner, to enforce Z to be required and improve the docstring\n        return super().score(Y, T, X=X, W=W, Z=Z, sample_weight=sample_weight)\n\n    @property\n    def featurizer_(self):\n        \"\"\"\n        Get the fitted featurizer.\n\n        Returns\n        -------\n        featurizer: object of type(`featurizer`)\n            An instance of the fitted featurizer that was used to preprocess X in the final CATE model training.\n            Available only when featurizer is not None and X is not None.\n        \"\"\"\n        return self.ortho_learner_model_final_._featurizer\n\n    @property\n    def original_featurizer(self):\n        # NOTE: important to use the ortho_learner_model_final_ attribute instead of the\n        #       attribute so that the trained featurizer will be passed through\n        return self.ortho_learner_model_final_._original_featurizer\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final CATE model for each treatment is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Available only when the featurizer is not None and has\n            a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.original_featurizer is None:\n            return feature_names\n        return get_feature_names_or_default(self.original_featurizer, feature_names)\n\n    @property\n    def model_final_(self):\n        # NOTE This is used by the inference methods and is more for internal use to the library\n        return self.ortho_learner_model_final_._model_final\n\n    @property\n    def model_cate(self):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Returns\n        -------\n        model_cate: object of type(model_final)\n            An instance of the model_final object that was fitted after calling fit which corresponds\n            to the constant marginal CATE model.\n        \"\"\"\n        return self.ortho_learner_model_final_._model_final\n\n    @property\n    def models_y_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Y | X]`.\n\n        Returns\n        -------\n        models_y_xw: nested list of objects of type(`model_y_xw`)\n            A nested list of instances of the `model_y_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_y_xw.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X]`.\n\n        Returns\n        -------\n        models_t_xw: nested list of objects of type(`model_t_xw`)\n            A nested list of instances of the `model_t_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_t_xw.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_z_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Z | X]`.\n\n        Returns\n        -------\n        models_z_xw: nested list of objects of type(`model_z_xw`)\n            A nested list of instances of the `model_z_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        if self.projection:\n            raise AttributeError(\"Projection model is fitted for instrument! Use models_t_xwz.\")\n        return [[mdl._model_z_xw.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xwz(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X, Z]`.\n\n        Returns\n        -------\n        models_t_xwz: nested list of objects of type(`model_t_xwz`)\n            A nested list of instances of the `model_t_xwz` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        if not self.projection:\n            raise AttributeError(\"Direct model is fitted for instrument! Use models_z_xw.\")\n        return [[mdl._model_t_xwz.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y_xw(self):\n        \"\"\"Get the scores for y_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t_xw(self):\n        \"\"\"Get the scores for t_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[1]\n\n    @property\n    def nuisance_scores_z_xw(self):\n        \"\"\"Get the scores for z_xw model on the out-of-sample training data.\"\"\"\n        if self.projection:\n            raise AttributeError(\"Projection model is fitted for instrument! Use nuisance_scores_t_xwz.\")\n        return self.nuisance_scores_[2]\n\n    @property\n    def nuisance_scores_t_xwz(self):\n        \"\"\"Get the scores for t_xwz model on the out-of-sample training data.\"\"\"\n        if not self.projection:\n            raise AttributeError(\"Direct model is fitted for instrument! Use nuisance_scores_z_xw.\")\n        return self.nuisance_scores_[2]\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n    @property\n    def residuals_(self):\n        \"\"\"\n        Get the residuals.\n\n        Returns a tuple (y_res, T_res,Z_res, X, W, Z), of the residuals from the first stage estimation\n        along with the associated X, W and Z. Samples are not guaranteed to be in the same\n        order as the input order.\n        \"\"\"\n        if not hasattr(self, '_cached_values'):\n            raise AttributeError(\"Estimator is not fitted yet!\")\n        if self._cached_values is None:\n            raise AttributeError(\"`fit` was called with `cache_values=False`. \"\n                                 \"Set to `True` to enable residual storage.\")\n        Y_res, T_res, Z_res = self._cached_values.nuisances\n        return Y_res, T_res, Z_res, self._cached_values.X, self._cached_values.W, self._cached_values.Z\n\n\nclass _BaseDMLIVNuisanceSelector(ModelSelector):\n    \"\"\"\n    Nuisance model for DMLIV.\n\n    Fits the three models at fit time and at predict time returns :math:`Y-\\\\E[Y|X]` and\n    :math:`\\\\E[T|X,Z]-\\\\E[T|X]` as residuals.\n    \"\"\"\n\n    def __init__(self, model_y_xw: ModelSelector, model_t_xw: ModelSelector, model_t_xwz: ModelSelector):\n        self._model_y_xw = model_y_xw\n        self._model_t_xw = model_t_xw\n        self._model_t_xwz = model_t_xwz\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        self._model_y_xw.train(is_selecting, folds, X, W, Y, **\n                               filter_none_kwargs(sample_weight=sample_weight, groups=groups))\n        self._model_t_xw.train(is_selecting, folds, X, W, T, **\n                               filter_none_kwargs(sample_weight=sample_weight, groups=groups))\n        # concat W and Z\n        WZ = _combine(W, Z, Y.shape[0])\n        self._model_t_xwz.train(is_selecting, folds, X, WZ, T,\n                                **filter_none_kwargs(sample_weight=sample_weight, groups=groups))\n        return self\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # note that groups are not passed to score because they are only used for fitting\n        if hasattr(self._model_y_xw, 'score'):\n            Y_X_score = self._model_y_xw.score(X, W, Y, **filter_none_kwargs(sample_weight=sample_weight))\n        else:\n            Y_X_score = None\n        if hasattr(self._model_t_xw, 'score'):\n            T_X_score = self._model_t_xw.score(X, W, T, **filter_none_kwargs(sample_weight=sample_weight))\n        else:\n            T_X_score = None\n        if hasattr(self._model_t_xwz, 'score'):\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            T_XZ_score = self._model_t_xwz.score(X, WZ, T, **filter_none_kwargs(sample_weight=sample_weight))\n        else:\n            T_XZ_score = None\n        return Y_X_score, T_X_score, T_XZ_score\n\n    def predict(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # note that sample_weight and groups are not passed to predict because they are only used for fitting\n        Y_pred = self._model_y_xw.predict(X, W)\n        # concat W and Z\n        WZ = _combine(W, Z, Y.shape[0])\n        TXZ_pred = self._model_t_xwz.predict(X, WZ)\n        TX_pred = self._model_t_xw.predict(X, W)\n        if (X is None) and (W is None):  # In this case predict above returns a single row\n            Y_pred = np.tile(Y_pred.reshape(1, -1), (Y.shape[0], 1))\n            TX_pred = np.tile(TX_pred.reshape(1, -1), (T.shape[0], 1))\n        Y_res = Y - Y_pred.reshape(Y.shape)\n        T_res = TXZ_pred.reshape(T.shape) - TX_pred.reshape(T.shape)\n        return Y_res, T_res\n\n\nclass _BaseDMLIVModelFinal(_ModelFinal):\n    \"\"\"\n    Final model for DMLIV.\n\n    At fit time, fits a residual on residual regression with a heterogeneous coefficient\n    that depends on X, i.e.\n\n        .. math ::\n            Y - \\\\E[Y | X] = \\\\theta(X) \\\\cdot (\\\\E[T | X, Z] - \\\\E[T | X]) + \\\\epsilon\n\n    and at predict time returns :math:`\\\\theta(X)`. The score method returns the MSE of this final\n    residual on residual regression.\n    \"\"\"\n\n    pass\n\n\nclass _BaseDMLIV(_OrthoLearner):\n    # A helper class that access all the internal fitted objects of a DMLIV Cate Estimator.\n    # Used by both Parametric and Non Parametric DMLIV.\n    # override only so that we can enforce Z to be required\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=None):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W: (n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(n,), (n, d_y)} nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    def score(self, Y, T, Z, X=None, W=None, sample_weight=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        # Replacing score from _OrthoLearner, to enforce Z to be required and improve the docstring\n        return super().score(Y, T, X=X, W=W, Z=Z, sample_weight=sample_weight)\n\n    @property\n    def original_featurizer(self):\n        return self.ortho_learner_model_final_._model_final._original_featurizer\n\n    @property\n    def featurizer_(self):\n        # NOTE This is used by the inference methods and has to be the overall featurizer. intended\n        # for internal use by the library\n        return self.ortho_learner_model_final_._model_final._featurizer\n\n    @property\n    def model_final_(self):\n        # NOTE This is used by the inference methods and is more for internal use to the library\n        return self.ortho_learner_model_final_._model_final._model\n\n    @property\n    def model_cate(self):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Returns\n        -------\n        model_cate: object of type(model_final)\n            An instance of the model_final object that was fitted after calling fit which corresponds\n            to the constant marginal CATE model.\n        \"\"\"\n        return self.ortho_learner_model_final_._model_final._model\n\n    @property\n    def models_y_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Y | X]`.\n\n        Returns\n        -------\n        models_y_xw: nested list of objects of type(`model_y_xw`)\n            A nested list of instances of the `model_y_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_y_xw.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X]`.\n\n        Returns\n        -------\n        models_t_xw: nested list of objects of type(`model_t_xw`)\n            A nested list of instances of the `model_t_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_t_xw.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xwz(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X, Z]`.\n\n        Returns\n        -------\n        models_t_xwz: nested list of objects of type(`model_t_xwz`)\n            A nested list of instances of the `model_t_xwz` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_t_xwz.best_model._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y_xw(self):\n        \"\"\"Get the scores for y_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t_xw(self):\n        \"\"\"Get the scores for t_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[1]\n\n    @property\n    def nuisance_scores_t_xwz(self):\n        \"\"\"Get the scores for t_xwz model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[2]\n\n    @property\n    def residuals_(self):\n        \"\"\"\n        Get the residuals.\n\n        Returns a tuple (y_res, T_res, X, W, Z), of the residuals from the first stage estimation\n        along with the associated X, W and Z. Samples are not guaranteed to be in the same\n        order as the input order.\n        \"\"\"\n        if not hasattr(self, '_cached_values'):\n            raise AttributeError(\"Estimator is not fitted yet!\")\n        if self._cached_values is None:\n            raise AttributeError(\"`fit` was called with `cache_values=False`. \"\n                                 \"Set to `True` to enable residual storage.\")\n        Y_res, T_res = self._cached_values.nuisances\n        return Y_res, T_res, self._cached_values.X, self._cached_values.W, self._cached_values.Z\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final constant marginal CATE model is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Not available when the featurizer is not None and\n            does not have a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.original_featurizer is None:\n            return feature_names\n        return get_feature_names_or_default(self.original_featurizer, feature_names)\n\n\nclass DMLIV(_BaseDMLIV):\n    \"\"\"\n    The base class for parametric DMLIV estimators to estimate a CATE.\n\n    It accepts three generic machine\n    learning models as nuisance functions:\n    1) model_y_xw that estimates :math:`\\\\E[Y | X]`\n    2) model_t_xw that estimates :math:`\\\\E[T | X]`\n    3) model_t_xwz that estimates :math:`\\\\E[T | X, Z]`\n    These are estimated in a cross-fitting manner for each sample in the training set.\n    Then it minimizes the square loss:\n\n    .. math::\n        \\\\sum_i (Y_i - \\\\E[Y|X_i] - \\\\theta(X) * (\\\\E[T|X_i, Z_i] - \\\\E[T|X_i]))^2\n\n    This loss is minimized by the model_final class, which is passed as an input.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_final : estimator (default is :class:`.StatsModelsLinearRegression`)\n        final model that at fit time takes as input :math:`(Y-\\\\E[Y|X])`, :math:`(\\\\E[T|X,Z]-\\\\E[T|X])` and X\n        and supports method predict(X) that produces the CATE at X\n\n    featurizer: transformer\n        The transformer used to featurize the raw features when fitting the final model.  Must implement\n        a `fit_transform` method.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply nuisance models and model_final\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dml import DMLIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = DMLIV(discrete_treatment=True, discrete_instrument=True)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-3.83456...,  5.32010..., -2.78127...])\n    >>> est.coef_\n    array([ 4.03977...,  0.89360...,  0.12047...,  0.37971..., -0.66072...])\n    >>> est.intercept_\n    -0.18452...\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_final=StatsModelsLinearRegression(fit_intercept=False),\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 discrete_instrument=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False):\n        self.model_y_xw = clone(model_y_xw, safe=False)\n        self.model_t_xw = clone(model_t_xw, safe=False)\n        self.model_t_xwz = clone(model_t_xwz, safe=False)\n        self.model_final = clone(model_final, safe=False)\n        self.featurizer = clone(featurizer, safe=False)\n        self.fit_cate_intercept = fit_cate_intercept\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         discrete_instrument=discrete_instrument,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing)\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y_xw(self):\n        return _make_first_stage_selector(self.model_y_xw, self.discrete_outcome, self.random_state)\n\n    def _gen_model_t_xw(self):\n        return _make_first_stage_selector(self.model_t_xw, self.discrete_treatment, self.random_state)\n\n    def _gen_model_t_xwz(self):\n        return _make_first_stage_selector(self.model_t_xwz, self.discrete_treatment, self.random_state)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        return _BaseDMLIVNuisanceSelector(self._gen_model_y_xw(), self._gen_model_t_xw(), self._gen_model_t_xwz())\n\n    def _gen_ortho_learner_model_final(self):\n        return _BaseDMLIVModelFinal(_FinalWrapper(self._gen_model_final(),\n                                                  self.fit_cate_intercept,\n                                                  self._gen_featurizer(),\n                                                  False))\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._model_final._fit_cate_intercept\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._model_final._fit_cate_intercept\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        if hasattr(self, \"featurizer_\") and self.featurizer_ is not None:\n            X = self.featurizer_.transform(X)\n        feature_names = self.cate_feature_names(feature_names)\n        return _shap_explain_joint_linear_model_cate(self.model_final_, X, self._d_t, self._d_y,\n                                                     self.bias_part_of_coef,\n                                                     feature_names=feature_names, treatment_names=treatment_names,\n                                                     output_names=output_names,\n                                                     input_names=self._input_names,\n                                                     background_samples=background_samples)\n\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n\n    @property\n    def coef_(self):\n        \"\"\"\n        The coefficients in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        coef: (n_x,) or (n_t, n_x) or (n_y, n_t, n_x) array_like\n            Where n_x is the number of features that enter the final model (either the\n            dimension of X or the dimension of featurizer.fit_transform(X) if the CATE\n            estimator has a featurizer.), n_t is the number of treatments, n_y is\n            the number of outcomes. Dimensions are omitted if the original input was\n            a vector and not a 2D array. For binary treatment the n_t dimension is\n            also omitted.\n        \"\"\"\n        return parse_final_model_params(self.model_final_.coef_, self.model_final_.intercept_,\n                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                        self.fit_cate_intercept_)[0]\n\n    @property\n    def intercept_(self):\n        \"\"\"\n        The intercept in the linear model of the constant marginal treatment effect.\n\n        Returns\n        -------\n        intercept: float or (n_y,) or (n_y, n_t) array_like\n            Where n_t is the number of treatments, n_y is\n            the number of outcomes. Dimensions are omitted if the original input was\n            a vector and not a 2D array. For binary treatment the n_t dimension is\n            also omitted.\n        \"\"\"\n        if not self.fit_cate_intercept_:\n            raise AttributeError(\"No intercept was fitted!\")\n        return parse_final_model_params(self.model_final_.coef_, self.model_final_.intercept_,\n                                        self._d_y, self._d_t, self._d_t_in, self.bias_part_of_coef,\n                                        self.fit_cate_intercept_)[1]\n\n    def summary(self, decimals=3, feature_names=None, treatment_names=None, output_names=None):\n        \"\"\"\n        Get a summary of coefficient and intercept in the linear model of the constant marginal treatment effect.\n\n        Parameters\n        ----------\n        decimals: int, default 3\n            Number of decimal places to round each column to.\n        feature_names: list of str, optional\n            The input of the feature names\n        treatment_names: list of str, optional\n            The names of the treatments\n        output_names: list of str, optional\n            The names of the outputs\n\n        Returns\n        -------\n        smry : Summary instance\n            this holds the summary tables and text, which can be printed or\n            converted to various output formats.\n        \"\"\"\n        # Get input names\n        treatment_names = self.cate_treatment_names(treatment_names)\n        output_names = self.cate_output_names(output_names)\n        feature_names = self.cate_feature_names(feature_names)\n        # Summary\n        smry = Summary()\n\n        extra_txt = [\"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\"]\n\n        if self._original_treatment_featurizer:\n            extra_txt.append(\"$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$\")\n            extra_txt.append(\"where $\\\\psi(T)$ is the output of the `treatment_featurizer\")\n            extra_txt.append(\n                \"and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\")\n        else:\n            extra_txt.append(\"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\")\n            extra_txt.append(\n                \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\")\n\n        if self.featurizer:\n            extra_txt.append(\"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\")\n            extra_txt.append(\"where $\\\\phi(X)$ is the output of the `featurizer`\")\n        else:\n            extra_txt.append(\"$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$\")\n\n        extra_txt.append(\"Coefficient Results table portrays the $coef_{ij}$ parameter vector for \"\n                         \"each outcome $i$ and treatment $j$. \"\n                         \"Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\")\n\n        smry.add_extra_txt(extra_txt)\n        d_t = self._d_t[0] if self._d_t else 1\n        d_y = self._d_y[0] if self._d_y else 1\n\n        def _reshape_array(arr, type):\n            if np.isscalar(arr):\n                arr = np.array([arr])\n            if type == 'coefficient':\n                arr = np.moveaxis(arr, -1, 0)\n            arr = arr.reshape(-1, 1)\n            return arr\n\n        # coefficient\n        try:\n            if self.coef_.size == 0:  # X is None\n                raise AttributeError(\"X is None, please call intercept_inference to learn the constant!\")\n            else:\n                coef_array = np.round(_reshape_array(self.coef_, \"coefficient\"), decimals)\n                coef_headers = [\"point_estimate\"]\n                if d_t > 1 and d_y > 1:\n                    index = list(product(feature_names, output_names, treatment_names))\n                elif d_t > 1:\n                    index = list(product(feature_names, treatment_names))\n                elif d_y > 1:\n                    index = list(product(feature_names, output_names))\n                else:\n                    index = list(product(feature_names))\n                coef_stubs = [\"|\".join(ind_value) for ind_value in index]\n                coef_title = 'Coefficient Results'\n                smry.add_table(coef_array, coef_headers, coef_stubs, coef_title)\n        except Exception as e:\n            print(\"Coefficient Results: \", str(e))\n\n        # intercept\n        try:\n            if not self.fit_cate_intercept:\n                raise AttributeError(\"No intercept was fitted!\")\n            else:\n                intercept_array = np.round(_reshape_array(self.intercept_, \"intercept\"), decimals)\n                intercept_headers = [\"point_estimate\"]\n                if d_t > 1 and d_y > 1:\n                    index = list(product([\"cate_intercept\"], output_names, treatment_names))\n                elif d_t > 1:\n                    index = list(product([\"cate_intercept\"], treatment_names))\n                elif d_y > 1:\n                    index = list(product([\"cate_intercept\"], output_names))\n                else:\n                    index = list(product([\"cate_intercept\"]))\n                intercept_stubs = [\"|\".join(ind_value) for ind_value in index]\n                intercept_title = 'CATE Intercept Results'\n                smry.add_table(intercept_array, intercept_headers, intercept_stubs, intercept_title)\n        except Exception as e:\n            print(\"CATE Intercept Results: \", str(e))\n        if len(smry.tables) > 0:\n            return smry\n\n\nclass NonParamDMLIV(_BaseDMLIV):\n    \"\"\"\n    The base class for non-parametric DMLIV.\n\n    Allows for an arbitrary square loss based ML\n    method in the final stage of the DMLIV algorithm. The method has to support\n    sample weights and the fit method has to take as input sample_weights (e.g. random forests), i.e.\n    fit(X, y, sample_weight=None)\n    It achieves this by re-writing the final stage square loss of the DMLIV algorithm as:\n\n    .. math ::\n        \\\\sum_i (\\\\E[T|X_i, Z_i] - \\\\E[T|X_i])^2 * ((Y_i - \\\\E[Y|X_i])/(\\\\E[T|X_i, Z_i] - \\\\E[T|X_i]) - \\\\theta(X))^2\n\n    Then this can be viewed as a weighted square loss regression, where the target label is\n\n    .. math ::\n        \\\\tilde{Y}_i = (Y_i - \\\\E[Y|X_i])/(\\\\E[T|X_i, Z_i] - \\\\E[T|X_i])\n\n    and each sample has a weight of\n\n    .. math ::\n        V(X_i) = (\\\\E[T|X_i, Z_i] - \\\\E[T|X_i])^2\n\n    Thus we can call any regression model with inputs:\n\n        fit(X, :math:`\\\\tilde{Y}_i`, sample_weight= :math:`V(X_i)`)\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_final : estimator\n        final model for predicting :math:`\\\\tilde{Y}` from X with sample weights V(X)\n\n    featurizer: transformer\n        The transformer used to featurize the raw features when fitting the final model.  Must implement\n        a `fit_transform` method.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in X, W. If True, will need to supply nuisance models and model_final\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dml import NonParamDMLIV\n        from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = NonParamDMLIV(\n            model_final=StatsModelsLinearRegression(),\n            discrete_treatment=True, discrete_instrument=True,\n            cv=5\n        )\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-5.98684...,  9.03751..., -3.56817...])\n\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_final,\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 discrete_instrument=False,\n                 featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False):\n        self.model_y_xw = clone(model_y_xw, safe=False)\n        self.model_t_xw = clone(model_t_xw, safe=False)\n        self.model_t_xwz = clone(model_t_xwz, safe=False)\n        self.model_final = clone(model_final, safe=False)\n        self.featurizer = clone(featurizer, safe=False)\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         discrete_instrument=discrete_instrument,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing)\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y_xw(self):\n        return _make_first_stage_selector(self.model_y_xw, self.discrete_outcome, self.random_state)\n\n    def _gen_model_t_xw(self):\n        return _make_first_stage_selector(self.model_t_xw, self.discrete_treatment, self.random_state)\n\n    def _gen_model_t_xwz(self):\n        return _make_first_stage_selector(self.model_t_xwz, self.discrete_treatment, self.random_state)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        return _BaseDMLIVNuisanceSelector(self._gen_model_y_xw(), self._gen_model_t_xw(), self._gen_model_t_xwz())\n\n    def _gen_ortho_learner_model_final(self):\n        return _BaseDMLIVModelFinal(_FinalWrapper(self._gen_model_final(),\n                                                  False,\n                                                  self._gen_featurizer(),\n                                                  True))\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        return _shap_explain_model_cate(self.const_marginal_effect, self.model_cate, X, self._d_t, self._d_y,\n                                        featurizer=self.featurizer_,\n                                        feature_names=feature_names,\n                                        treatment_names=treatment_names,\n                                        output_names=output_names,\n                                        input_names=self._input_names,\n                                        background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n"
  },
  {
    "path": "econml/iv/dr/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Orthogonal IV for Heterogeneous Treatment Effects.\r\n\r\nA Double/Orthogonal machine learning approach to estimation of heterogeneous\r\ntreatment effect with an endogenous treatment and an instrument. It\r\nimplements the DMLIV and related algorithms from the paper:\r\n\r\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\r\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\r\nhttps://arxiv.org/abs/1905.10176\r\n\r\n\"\"\"\r\n\r\nfrom ._dr import DRIV, LinearDRIV, SparseLinearDRIV, ForestDRIV, IntentToTreatDRIV, LinearIntentToTreatDRIV\r\n\r\n__all__ = [\"DRIV\",\r\n           \"LinearDRIV\",\r\n           \"SparseLinearDRIV\",\r\n           \"ForestDRIV\",\r\n           \"IntentToTreatDRIV\",\r\n           \"LinearIntentToTreatDRIV\"]\r\n"
  },
  {
    "path": "econml/iv/dr/_dr.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Doubly Robust IV for Heterogeneous Treatment Effects.\n\nAn Doubly Robust machine learning approach to estimation of heterogeneous\ntreatment effect with an endogenous treatment and an instrument.\n\nImplements the DRIV algorithm for estimating CATE with IVs from the paper:\n\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\nhttps://arxiv.org/abs/1905.10176\n\"\"\"\n\nimport numpy as np\nfrom sklearn.base import clone\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import FunctionTransformer\nfrom sklearn.dummy import DummyClassifier\n\n\nfrom ..._ortho_learner import _OrthoLearner\nfrom ..._cate_estimator import (StatsModelsCateEstimatorMixin, DebiasedLassoCateEstimatorMixin,\n                                ForestModelFinalCateEstimatorMixin, GenericSingleTreatmentModelFinalInference,\n                                LinearCateEstimator)\nfrom ...sklearn_extensions.linear_model import StatsModelsLinearRegression, DebiasedLasso\nfrom ...sklearn_extensions.model_selection import ModelSelector, SingleModelSelector\nfrom ...utilities import (add_intercept, filter_none_kwargs,\n                          inverse_onehot, get_feature_names_or_default, check_high_dimensional, check_input_arrays)\nfrom ...grf import RegressionForest\nfrom ...dml.dml import _make_first_stage_selector\nfrom ...iv.dml import NonParamDMLIV\nfrom ..._shap import _shap_explain_model_cate\n\n\ndef _combine(W, Z, n_samples):\n    if Z is not None:  # Z will not be None\n        Z = Z.reshape(n_samples, -1)\n        return Z if W is None else np.hstack([W, Z])\n    return None if W is None else W\n\n\nclass _BaseDRIVNuisanceSelector(ModelSelector):\n    def __init__(self, *, prel_model_effect, model_y_xw, model_t_xw, model_z,\n                 projection,\n                 discrete_treatment, discrete_instrument):\n        self._prel_model_effect = prel_model_effect\n        self._model_y_xw = model_y_xw\n        self._model_t_xw = model_t_xw\n        self._projection = projection\n        self._discrete_treatment = discrete_treatment\n        self._discrete_instrument = discrete_instrument\n        if self._projection:\n            self._model_t_xwz = model_z\n        else:\n            self._model_z_xw = model_z\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # T and Z only allow single continuous or binary, keep the shape of (n,) for continuous and (n,1) for binary\n        T = T.ravel() if not self._discrete_treatment else T\n        Z = Z.ravel() if not self._discrete_instrument else Z\n\n        self._model_y_xw.train(is_selecting, folds, X=X, W=W, Target=Y, sample_weight=sample_weight, groups=groups)\n        self._model_t_xw.train(is_selecting, folds, X=X, W=W, Target=T, sample_weight=sample_weight, groups=groups)\n\n        if self._projection:\n            WZ = _combine(W, Z, Y.shape[0])\n            self._model_t_xwz.train(is_selecting, folds, X=X, W=WZ, Target=T,\n                                    sample_weight=sample_weight, groups=groups)\n        else:\n            self._model_z_xw.train(is_selecting, folds, X=X, W=W, Target=Z, sample_weight=sample_weight, groups=groups)\n\n        # TODO: prel_model_effect could allow sample_var and freq_weight?\n        if self._discrete_instrument:\n            Z = inverse_onehot(Z)\n        if self._discrete_treatment:\n            T = inverse_onehot(T)\n        self._prel_model_effect.fit(Y, T, Z=Z, X=X,\n                                    W=W, sample_weight=sample_weight, groups=groups)\n        return self\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # T and Z only allow single continuous or binary, keep the shape of (n,) for continuous and (n,1) for binary\n        T = T.ravel() if not self._discrete_treatment else T\n        Z = Z.ravel() if not self._discrete_instrument else Z\n\n        if hasattr(self._model_y_xw, 'score'):\n            y_xw_score = self._model_y_xw.score(X=X, W=W, Target=Y, sample_weight=sample_weight)\n        else:\n            y_xw_score = None\n        if hasattr(self._model_t_xw, 'score'):\n            t_xw_score = self._model_t_xw.score(X=X, W=W, Target=T, sample_weight=sample_weight)\n        else:\n            t_xw_score = None\n\n        if hasattr(self._prel_model_effect, 'score'):\n            # we need to undo the one-hot encoding for calling effect,\n            # since it expects raw values\n            raw_T = inverse_onehot(T) if self._discrete_treatment else T\n            raw_Z = inverse_onehot(Z) if self._discrete_instrument else Z\n            effect_score = self._prel_model_effect.score(Y, raw_T,\n                                                         Z=raw_Z, X=X, W=W, sample_weight=sample_weight)\n        else:\n            effect_score = None\n\n        if self._projection:\n            if hasattr(self._model_t_xwz, 'score'):\n                WZ = _combine(W, Z, Y.shape[0])\n                t_xwz_score = self._model_t_xwz.score(X=X, W=WZ, Target=T, sample_weight=sample_weight)\n            else:\n                t_xwz_score = None\n\n            return y_xw_score, t_xw_score, t_xwz_score, effect_score\n\n        else:\n            if hasattr(self._model_z_xw, 'score'):\n                z_xw_score = self._model_z_xw.score(X=X, W=W, Target=Z, sample_weight=sample_weight)\n            else:\n                z_xw_score = None\n\n            return y_xw_score, t_xw_score, z_xw_score, effect_score\n\n    def predict(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        Y_pred = self._model_y_xw.predict(X, W)\n        T_pred = self._model_t_xw.predict(X, W)\n        prel_theta = self._prel_model_effect.effect(X)\n\n        if X is None:\n            prel_theta = np.tile(prel_theta.reshape(1, -1), (Y.shape[0], 1))\n            if W is None:\n                Y_pred = np.tile(Y_pred.reshape(1, -1), (Y.shape[0], 1))\n                T_pred = np.tile(T_pred.reshape(1, -1), (Y.shape[0], 1))\n\n        # for convenience, reshape Z,T to a vector since they are either binary or single dimensional continuous\n        T = T.reshape(T.shape[0],)\n        Z = Z.reshape(Z.shape[0],)\n        # reshape the predictions\n        Y_pred = Y_pred.reshape(Y.shape)\n        T_pred = T_pred.reshape(T.shape)\n\n        Y_res = Y - Y_pred\n        T_res = T - T_pred\n\n        if self._projection:\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            T_proj = self._model_t_xwz.predict(X, WZ).reshape(T.shape)\n            Z_res = T_proj - T_pred\n        else:\n            Z_pred = self._model_z_xw.predict(X, W)\n            if X is None and W is None:\n                Z_pred = np.tile(Z_pred.reshape(1, -1), (Z.shape[0], 1))\n            Z_pred = Z_pred.reshape(Z.shape)\n            Z_res = Z - Z_pred\n\n        # check nuisances outcome shape\n        # Y_res could be a vector or 1-dimensional 2d-array\n        assert T_res.ndim == 1, \"Nuisance outcome should be vector!\"\n        assert Z_res.ndim == 1, \"Nuisance outcome should be vector!\"\n\n        return prel_theta, Y_res, T_res, Z_res\n\n\nclass _BaseDRIVNuisanceCovarianceSelector(ModelSelector):\n    def __init__(self, *, model_tz_xw,\n                 projection, fit_cov_directly,\n                 discrete_treatment, discrete_instrument):\n        self._model_tz_xw = model_tz_xw\n        self._projection = projection\n        self._fit_cov_directly = fit_cov_directly\n        self._discrete_treatment = discrete_treatment\n        self._discrete_instrument = discrete_instrument\n\n    def _get_target(self, T_res, Z_res, T, Z):\n        T = T.ravel() if not self._discrete_treatment else T\n        Z = Z.ravel() if not self._discrete_instrument else Z\n        if self._projection:\n            if self._fit_cov_directly:\n                # We're projecting, so we're treating E[T|X,Z] as the instrument (ignoring W for simplicity)\n                # Then beta(X) = E[T̃ (E[T|X,Z]-E[E[T|X,Z]|X)|X] and we can apply the tower rule several times to get\n                #              = E[(E[T|X,Z]-E[T|X])^2|X]\n                # and also     = E[(E[T|X,Z]-T)^2|X]\n                # so we can compute it either from (T_proj-T_pred)^2 or from (T_proj-T)^2\n                # The first of these is just Z_res^2\n                target = Z_res**2\n            else:\n                # fit on T*T_proj, covariance will be computed by E[T_res * T_proj] = E[T*T_proj] - E[T]^2\n                # return shape (n,)\n                T_pred = T - T_res.reshape(T.shape)\n                T_proj = T_pred + Z_res.reshape(T.shape)\n                target = (T * T_proj).reshape(T.shape[0],)\n        else:\n            if self._fit_cov_directly:\n                # we will fit on the covariance (T_res*Z_res) directly\n                target_shape = Z_res.shape if Z_res.ndim > 1 else T_res.shape\n                target = T_res.reshape(target_shape) * Z_res.reshape(target_shape)\n            else:\n                # fit on TZ, covariance will be computed by E[T_res * Z_res] = TZ_pred - T_pred * Z_pred\n                if self._discrete_treatment:\n                    if self._discrete_instrument:\n                        # target will be discrete and will be inversed from FirstStageWrapper, shape (n,1)\n                        target = T * Z\n                    else:\n                        # shape (n,)\n                        target = inverse_onehot(T) * Z\n                else:\n                    if self._discrete_instrument:\n                        # shape (n,)\n                        target = T * inverse_onehot(Z)\n                    else:\n                        # shape(n,)\n                        target = T * Z\n        return target\n\n    def train(self, is_selecting, folds,\n              prel_theta, Y_res, T_res, Z_res,\n              Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # T and Z only allow single continuous or binary, keep the shape of (n,) for continuous and (n,1) for binary\n        target = self._get_target(T_res, Z_res, T, Z)\n        self._model_tz_xw.train(is_selecting, folds, X=X, W=W, Target=target,\n                                sample_weight=sample_weight, groups=groups)\n\n        return self\n\n    def score(self, prel_theta, Y_res, T_res, Z_res, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        # T and Z only allow single continuous or binary, keep the shape of (n,) for continuous and (n,1) for binary\n        if hasattr(self._model_tz_xw, 'score'):\n            target = self._get_target(T_res, Z_res, T, Z)\n            tz_xw_score = self._model_tz_xw.score(X=X, W=W, Target=target, sample_weight=sample_weight)\n        else:\n            tz_xw_score = None\n\n        return (tz_xw_score,)\n\n    def predict(self, prel_theta, Y_res, T_res, Z_res, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        TZ_pred = self._model_tz_xw.predict(X, W)\n\n        if X is None and W is None:\n            TZ_pred = np.tile(TZ_pred.reshape(1, -1), (Y.shape[0], 1))\n\n        # for convenience, reshape Z,T to a vector since they are either binary or single dimensional continuous\n        T = T.reshape(T.shape[0],)\n        Z = Z.reshape(Z.shape[0],)\n\n        # reshape the predictions\n        TZ_pred = TZ_pred.reshape(T.shape)\n\n        if self._projection:\n            if self._fit_cov_directly:\n                cov = TZ_pred\n            else:\n                T_pred = T - T_res\n                cov = TZ_pred - T_pred**2\n            # in the projection case, this is a variance and should always be non-negative\n            cov = np.maximum(cov, 0)\n        else:\n            if self._fit_cov_directly:\n                cov = TZ_pred\n            else:\n                T_pred = T - T_res\n                Z_pred = Z - Z_res\n                cov = TZ_pred - T_pred * Z_pred\n\n        # check nuisances outcome shape\n        assert cov.ndim == 1, \"Nuisance outcome should be vector!\"\n\n        return (cov,)\n\n\nclass _BaseDRIVModelFinal:\n    def __init__(self, model_final, featurizer, fit_cate_intercept, cov_clip, opt_reweighted):\n        self._model_final = clone(model_final, safe=False)\n        self._original_featurizer = clone(featurizer, safe=False)\n        self._fit_cate_intercept = fit_cate_intercept\n        self._cov_clip = cov_clip\n        self._opt_reweighted = opt_reweighted\n\n        if self._fit_cate_intercept:\n            add_intercept_trans = FunctionTransformer(add_intercept,\n                                                      validate=True)\n            if featurizer:\n                self._featurizer = Pipeline([('featurize', self._original_featurizer),\n                                             ('add_intercept', add_intercept_trans)])\n            else:\n                self._featurizer = add_intercept_trans\n        else:\n            self._featurizer = self._original_featurizer\n\n    def _effect_estimate(self, nuisances):\n        # all could be reshaped to vector since Y, T, Z are all single dimensional.\n        prel_theta, res_y, res_t, res_z, cov = [nuisance.reshape(nuisances[0].shape[0]) for nuisance in nuisances]\n\n        # Estimate final model of theta(X) by minimizing the square loss:\n        # (prel_theta(X) + (Y_res - prel_theta(X) * T_res) * Z_res / cov[T,Z | X] - theta(X))^2\n        # We clip the covariance so that it is bounded away from zero, so as to reduce variance\n        # at the expense of some small bias. For points with very small covariance we revert\n        # to the model-based preliminary estimate and do not add the correction term.\n        cov_sign = np.sign(cov)\n        cov_sign[cov_sign == 0] = 1\n        clipped_cov = cov_sign * np.clip(np.abs(cov),\n                                         self._cov_clip, np.inf)\n        return prel_theta + (res_y - prel_theta * res_t) * res_z / clipped_cov, clipped_cov, res_z\n\n    def _transform_X(self, X, n=1, fitting=True):\n        if X is not None:\n            if self._featurizer is not None:\n                F = self._featurizer.fit_transform(X) if fitting else self._featurizer.transform(X)\n            else:\n                F = X\n        else:\n            if not self._fit_cate_intercept:\n                raise AttributeError(\"Cannot have X=None and also not allow for a CATE intercept!\")\n            F = np.ones((n, 1))\n        return F\n\n    def fit(self, Y, T, X=None, W=None, Z=None, nuisances=None,\n            sample_weight=None, freq_weight=None, sample_var=None, groups=None):\n        self.d_y = Y.shape[1:]\n        self.d_t = T.shape[1:]\n        theta_dr, clipped_cov, res_z = self._effect_estimate(nuisances)\n\n        X = self._transform_X(X, n=theta_dr.shape[0])\n        if self._opt_reweighted and (sample_weight is not None):\n            sample_weight = sample_weight * clipped_cov.ravel()**2\n        elif self._opt_reweighted:\n            sample_weight = clipped_cov.ravel()**2\n        target_var = sample_var * (res_z**2 / clipped_cov**2) if sample_var is not None else None\n        self._model_final.fit(X, theta_dr, **filter_none_kwargs(sample_weight=sample_weight,\n                                                                freq_weight=freq_weight, sample_var=target_var))\n        return self\n\n    def predict(self, X=None):\n        X = self._transform_X(X, fitting=False)\n        return self._model_final.predict(X).reshape((-1,) + self.d_y + self.d_t)\n\n    def score(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, groups=None):\n        theta_dr, clipped_cov, _ = self._effect_estimate(nuisances)\n\n        X = self._transform_X(X, fitting=False)\n\n        if self._opt_reweighted and (sample_weight is not None):\n            sample_weight = sample_weight * clipped_cov.ravel()**2\n        elif self._opt_reweighted:\n            sample_weight = clipped_cov.ravel()**2\n\n        return np.average((theta_dr.ravel() - self._model_final.predict(X).ravel())**2,\n                          weights=sample_weight, axis=0)\n\n\nclass _BaseDRIV(_OrthoLearner):\n    # A helper class that access all the internal fitted objects of a DRIV Cate Estimator.\n    # Used by both DRIV and IntentToTreatDRIV.\n    def __init__(self, *,\n                 model_final,\n                 featurizer=None,\n                 fit_cate_intercept=False,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.model_final = clone(model_final, safe=False)\n        self.featurizer = clone(featurizer, safe=False)\n        self.fit_cate_intercept = fit_cate_intercept\n        self.cov_clip = cov_clip\n        self.opt_reweighted = opt_reweighted\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    # Maggie: I think that would be the case?\n    def _get_inference_options(self):\n        options = super()._get_inference_options()\n        options.update(auto=GenericSingleTreatmentModelFinalInference)\n        return options\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_final(self):\n        return clone(self.model_final, safe=False)\n\n    def _gen_ortho_learner_model_final(self):\n        return _BaseDRIVModelFinal(self._gen_model_final(), self._gen_featurizer(), self.fit_cate_intercept,\n                                   self.cov_clip, self.opt_reweighted)\n\n    def _check_inputs(self, Y, T, Z, X, W):\n        Y1, T1, Z1, = check_input_arrays(Y, T, Z)\n        if len(Y1.shape) > 1 and Y1.shape[1] > 1:\n            raise AssertionError(\"DRIV only supports single dimensional outcome\")\n        if len(T1.shape) > 1 and T1.shape[1] > 1:\n            if self.discrete_treatment:\n                raise AttributeError(\"DRIV only supports binary treatments\")\n            elif self.treatment_featurizer:  # defer possible failure to downstream logic\n                pass\n            else:\n                raise AttributeError(\"DRIV only supports single-dimensional continuous treatments\")\n        if len(Z1.shape) > 1 and Z1.shape[1] > 1:\n            if self.discrete_instrument:\n                raise AttributeError(\"DRIV only supports binary instruments\")\n            else:\n                raise AttributeError(\"DRIV only supports single-dimensional continuous instruments\")\n        return Y, T, Z, X, W\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=\"auto\"):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.GenericSingleTreatmentModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        Y, T, Z, X, W = self._check_inputs(Y, T, Z, X, W)\n        # Replacing fit from _OrthoLearner, to reorder arguments and improve the docstring\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    def refit_final(self, *, inference='auto'):\n        return super().refit_final(inference=inference)\n    refit_final.__doc__ = _OrthoLearner.refit_final.__doc__\n\n    def score(self, Y, T, Z, X=None, W=None, sample_weight=None):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        # Replacing score from _OrthoLearner, to enforce Z to be required and improve the docstring\n        return super().score(Y, T, X=X, W=W, Z=Z, sample_weight=sample_weight)\n\n    @property\n    def featurizer_(self):\n        \"\"\"\n        Get the fitted featurizer.\n\n        Returns\n        -------\n        featurizer: object of type(`featurizer`)\n            An instance of the fitted featurizer that was used to preprocess X in the final CATE model training.\n            Available only when featurizer is not None and X is not None.\n        \"\"\"\n        return self.ortho_learner_model_final_._featurizer\n\n    @property\n    def original_featurizer(self):\n        # NOTE: important to use the ortho_learner_model_final_ attribute instead of the\n        #       attribute so that the trained featurizer will be passed through\n        return self.ortho_learner_model_final_._original_featurizer\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final CATE model for each treatment is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Available only when the featurizer is not None and has\n            a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.original_featurizer is None:\n            return feature_names\n        return get_feature_names_or_default(self.original_featurizer, feature_names)\n\n    @property\n    def model_final_(self):\n        # NOTE This is used by the inference methods and is more for internal use to the library\n        return self.ortho_learner_model_final_._model_final\n\n    @property\n    def model_cate(self):\n        \"\"\"\n        Get the fitted final CATE model.\n\n        Returns\n        -------\n        model_cate: object of type(model_final)\n            An instance of the model_final object that was fitted after calling fit which corresponds\n            to the constant marginal CATE model.\n        \"\"\"\n        return self.ortho_learner_model_final_._model_final\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        return _shap_explain_model_cate(self.const_marginal_effect, self.model_cate, X, self._d_t, self._d_y,\n                                        featurizer=self.featurizer_,\n                                        feature_names=feature_names,\n                                        treatment_names=treatment_names,\n                                        output_names=output_names,\n                                        input_names=self._input_names,\n                                        background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n\n    @property\n    def residuals_(self):\n        \"\"\"\n        Get the residuals.\n\n        Returns a tuple (prel_theta, Y_res, T_res, Z_res, cov, X, W, Z), of the residuals from the first stage\n        estimationalong with the associated X, W and Z. Samples are not guaranteed to be in the same\n        order as the input order.\n        \"\"\"\n        if not hasattr(self, '_cached_values'):\n            raise AttributeError(\"Estimator is not fitted yet!\")\n        if self._cached_values is None:\n            raise AttributeError(\"`fit` was called with `cache_values=False`. \"\n                                 \"Set to `True` to enable residual storage.\")\n        prel_theta, Y_res, T_res, Z_res, cov = self._cached_values.nuisances\n        return (prel_theta, Y_res, T_res, Z_res, cov, self._cached_values.X, self._cached_values.W,\n                self._cached_values.Z)\n\n\nclass _DRIV(_BaseDRIV):\n    \"\"\"Private Base class for the DRIV algorithm.\"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_z_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_tz_xw=\"auto\",\n                 fit_cov_directly=True,\n                 prel_model_effect,\n                 model_final,\n                 projection=False,\n                 featurizer=None,\n                 fit_cate_intercept=False,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n        self.model_y_xw = clone(model_y_xw, safe=False)\n        self.model_t_xw = clone(model_t_xw, safe=False)\n        self.model_t_xwz = clone(model_t_xwz, safe=False)\n        self.model_z_xw = clone(model_z_xw, safe=False)\n        self.model_tz_xw = clone(model_tz_xw, safe=False)\n        self.prel_model_effect = clone(prel_model_effect, safe=False)\n        self.projection = projection\n        self.fit_cov_directly = fit_cov_directly\n        super().__init__(model_final=model_final,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_prel_model_effect(self):\n        return clone(self.prel_model_effect, safe=False)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        model_y_xw = _make_first_stage_selector(self.model_y_xw, self.discrete_outcome, self.random_state)\n        model_t_xw = _make_first_stage_selector(self.model_t_xw, self.discrete_treatment, self.random_state)\n\n        if self.projection:\n            # this is a regression model since the instrument E[T|X,W,Z] is always continuous\n            model_tz_xw = _make_first_stage_selector(self.model_tz_xw,\n                                                     is_discrete=False,\n                                                     random_state=self.random_state)\n\n            # we're using E[T|X,W,Z] as the instrument\n            model_z = _make_first_stage_selector(self.model_t_xwz,\n                                                 is_discrete=self.discrete_treatment,\n                                                 random_state=self.random_state)\n\n        else:\n            model_tz_xw = _make_first_stage_selector(self.model_tz_xw,\n                                                     is_discrete=(self.discrete_treatment and\n                                                                  self.discrete_instrument and\n                                                                  not self.fit_cov_directly),\n                                                     random_state=self.random_state)\n\n            model_z = _make_first_stage_selector(self.model_z_xw,\n                                                 is_discrete=self.discrete_instrument,\n                                                 random_state=self.random_state)\n\n        return [_BaseDRIVNuisanceSelector(prel_model_effect=self._gen_prel_model_effect(),\n                                          model_y_xw=model_y_xw,\n                                          model_t_xw=model_t_xw,\n                                          model_z=model_z,\n                                          projection=self.projection,\n                                          discrete_treatment=self.discrete_treatment,\n                                          discrete_instrument=self.discrete_instrument),\n                _BaseDRIVNuisanceCovarianceSelector(model_tz_xw=model_tz_xw,\n                                                    projection=self.projection,\n                                                    fit_cov_directly=self.fit_cov_directly,\n                                                    discrete_treatment=self.discrete_treatment,\n                                                    discrete_instrument=self.discrete_instrument)]\n\n\nclass DRIV(_DRIV):\n    \"\"\"\n    The DRIV algorithm for estimating CATE with IVs.\n\n    This class is the parent of the public classes {LinearDRIV, SparseLinearDRIV,ForestDRIV}\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_z_xw: estimator, default ``'auto'``\n        Determines how to fit the instrument to the features and controls (:math:`\\\\E[Z | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_instrument` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_tz_xw: estimator, default ``'auto'``\n        Determines how to fit the covariance to the features and controls (:math:`\\\\E[T*Z | X, W]` or\n        :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` depending on `fit_cov_directly`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    fit_cov_directly : bool, default True\n        Whether to fit :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` instead of :math:`\\\\E[T*Z | X, W]`.\n        Otherwise, we compute :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` from\n        :math:`\\\\E[T*Z | X, W] - \\\\E[T | X, W] \\\\E[Z | X, W]`.\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    model_final : estimator, optional\n        a final model for the CATE and projections. If None, then flexible_model_effect is also used as a final model\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    projection: bool, default False\n        If True, we fit a slight variant of DRIV where we use E[T|X, W, Z] as the instrument as opposed to Z,\n        model_z_xw will be disabled; If False, model_t_xwz will be disabled.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default False\n        Whether the linear CATE model should have a constant term.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        model_final.fit must accept sample_weight as a kw argument. If True then\n        assumes the model_final is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_final space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import DRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = DRIV(discrete_treatment=True, discrete_instrument=True)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.15076...,  5.99286..., -2.86512...])\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_z_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_tz_xw=\"auto\",\n                 fit_cov_directly=True,\n                 flexible_model_effect=\"auto\",\n                 model_final=None,\n                 prel_cate_approach=\"driv\",\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 projection=False,\n                 featurizer=None,\n                 fit_cate_intercept=False,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n        if flexible_model_effect == \"auto\":\n            self.flexible_model_effect = StatsModelsLinearRegression(fit_intercept=False)\n        else:\n            self.flexible_model_effect = clone(flexible_model_effect, safe=False)\n        self.prel_cate_approach = prel_cate_approach\n        self.prel_cv = prel_cv\n        self.prel_opt_reweighted = prel_opt_reweighted\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xw=model_t_xw,\n                         model_z_xw=model_z_xw,\n                         model_t_xwz=model_t_xwz,\n                         model_tz_xw=model_tz_xw,\n                         fit_cov_directly=fit_cov_directly,\n                         prel_model_effect=self.prel_cate_approach,\n                         model_final=model_final,\n                         projection=projection,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_model_final(self):\n        if self.model_final is None:\n            return clone(self.flexible_model_effect, safe=False)\n        return clone(self.model_final, safe=False)\n\n    def _gen_prel_model_effect(self):\n        if self.prel_cate_approach == \"driv\":\n            return _DRIV(model_y_xw=clone(self.model_y_xw, safe=False),\n                         model_t_xw=clone(self.model_t_xw, safe=False),\n                         model_z_xw=clone(self.model_z_xw, safe=False),\n                         model_t_xwz=clone(self.model_t_xwz, safe=False),\n                         model_tz_xw=clone(self.model_tz_xw, safe=False),\n                         prel_model_effect=_DummyCATE(),\n                         model_final=clone(self.flexible_model_effect, safe=False),\n                         projection=self.projection,\n                         fit_cov_directly=self.fit_cov_directly,\n                         featurizer=self._gen_featurizer(),\n                         fit_cate_intercept=self.fit_cate_intercept,\n                         cov_clip=self.cov_clip,\n                         opt_reweighted=self.prel_opt_reweighted,\n                         discrete_instrument=self.discrete_instrument,\n                         discrete_treatment=self.discrete_treatment,\n                         discrete_outcome=self.discrete_outcome,\n                         categories=self.categories,\n                         cv=self.prel_cv,\n                         mc_iters=self.mc_iters,\n                         mc_agg=self.mc_agg,\n                         random_state=self.random_state,\n                         allow_missing=self.allow_missing)\n        elif self.prel_cate_approach == \"dmliv\":\n            return NonParamDMLIV(model_y_xw=clone(self.model_y_xw, safe=False),\n                                 model_t_xw=clone(self.model_t_xw, safe=False),\n                                 model_t_xwz=clone(self.model_t_xwz, safe=False),\n                                 model_final=clone(self.flexible_model_effect, safe=False),\n                                 discrete_instrument=self.discrete_instrument,\n                                 discrete_treatment=self.discrete_treatment,\n                                 discrete_outcome=self.discrete_outcome,\n                                 featurizer=self._gen_featurizer(),\n                                 categories=self.categories,\n                                 cv=self.prel_cv,\n                                 mc_iters=self.mc_iters,\n                                 mc_agg=self.mc_agg,\n                                 random_state=self.random_state,\n                                 allow_missing=self.allow_missing)\n        else:\n            raise ValueError(\n                \"We only support 'dmliv' or 'driv' preliminary model effect, \"\n                f\"but received '{self.prel_cate_approach}'!\")\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference=\"auto\"):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.GenericSingleTreatmentModelFinalInference`)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        if self.projection:\n            assert self.model_z_xw == \"auto\", (\"In the case of projection=True, model_z_xw will not be fitted, \"\n                                               \"please keep it as default!\")\n        if self.prel_cate_approach == \"driv\" and not self.projection:\n            assert self.model_t_xwz == \"auto\", (\"In the case of projection=False and prel_cate_approach='driv', \"\n                                                \"model_t_xwz will not be fitted, \"\n                                                \"please keep it as default!\")\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def models_y_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Y | X]`.\n\n        Returns\n        -------\n        models_y_xw: nested list of objects of type(`model_y_xw`)\n            A nested list of instances of the `model_y_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_y_xw.best_model._model for mdl in mdls[0]] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X]`.\n\n        Returns\n        -------\n        models_t_xw: nested list of objects of type(`model_t_xw`)\n            A nested list of instances of the `model_t_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_t_xw.best_model._model for mdl in mdls[0]] for mdls in super().models_nuisance_]\n\n    @property\n    def models_z_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Z | X]`.\n\n        Returns\n        -------\n        models_z_xw: nested list of objects of type(`model_z_xw`)\n            A nested list of instances of the `model_z_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        if self.projection:\n            raise AttributeError(\"Projection model is fitted for instrument! Use models_t_xwz.\")\n        return [[mdl._model_z_xw.best_model._model for mdl in mdls[0]] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xwz(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Z | X]`.\n\n        Returns\n        -------\n        models_z_xw: nested list of objects of type(`model_z_xw`)\n            A nested list of instances of the `model_z_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        if not self.projection:\n            raise AttributeError(\"Direct model is fitted for instrument! Use models_z_xw.\")\n        return [[mdl._model_t_xwz.best_model._model for mdl in mdls[0]] for mdls in super().models_nuisance_]\n\n    @property\n    def models_tz_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T*Z | X]`.\n\n        Returns\n        -------\n        models_tz_xw: nested list of objects of type(`model_tz_xw`)\n            A nested list of instances of the `model_tz_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_tz_xw.best_model._model for mdl in mdls[1]] for mdls in super().models_nuisance_]\n\n    @property\n    def models_prel_model_effect(self):\n        \"\"\"\n        Get the fitted preliminary CATE estimator.\n\n        Returns\n        -------\n        prel_model_effect: nested list of objects of type(`prel_model_effect`)\n            A nested list of instances of the `prel_model_effect` object. Number of sublist equals to number\n            of monte carlo iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._prel_model_effect for mdl in mdls[0]] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y_xw(self):\n        \"\"\"Get the scores for y_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t_xw(self):\n        \"\"\"Get the scores for t_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[1]\n\n    @property\n    def nuisance_scores_z_xw(self):\n        \"\"\"Get the scores for z_xw model on the out-of-sample training data.\"\"\"\n        if self.projection:\n            raise AttributeError(\"Projection model is fitted for instrument! Use nuisance_scores_t_xwz.\")\n        return self.nuisance_scores_[2]\n\n    @property\n    def nuisance_scores_t_xwz(self):\n        \"\"\"Get the scores for z_xw model on the out-of-sample training data.\"\"\"\n        if not self.projection:\n            raise AttributeError(\"Direct model is fitted for instrument! Use nuisance_scores_z_xw.\")\n        return self.nuisance_scores_[2]\n\n    @property\n    def nuisance_scores_prel_model_effect(self):\n        \"\"\"Get the scores for prel_model_effect model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[3]\n\n    @property\n    def nuisance_scores_tz_xw(self):\n        \"\"\"Get the scores for tz_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[4]\n\n\nclass LinearDRIV(StatsModelsCateEstimatorMixin, DRIV):\n    \"\"\"\n    Special case of the :class:`.DRIV` where the final stage is a Linear Regression.\n\n    In this case, inference can be performed via the StatsModels Inference approach\n    and its asymptotic normal characterization of the estimated parameters. This is computationally\n    faster than bootstrap inference. Leave the default ``inference='auto'`` unchanged, or explicitly set\n    ``inference='statsmodels'`` at fit time to enable inference via asymptotic normality.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_z_xw: estimator, default ``'auto'``\n        Determines how to fit the instrument to the features and controls (:math:`\\\\E[Z | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_instrument` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_tz_xw: estimator, default ``'auto'``\n        Determines how to fit the covariance to the features and controls (:math:`\\\\E[T*Z | X, W]` or\n        :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` depending on `fit_cov_directly`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    fit_cov_directly : bool, default True\n        Whether to fit :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` instead of :math:`\\\\E[T*Z | X, W]`.\n        Otherwise, we compute :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` from\n        :math:`\\\\E[T*Z | X, W] - \\\\E[T | X, W] \\\\E[Z | X, W]`.\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    projection: bool, default False\n        If True, we fit a slight variant of DRIV where we use E[T|X, W, Z] as the instrument as opposed to Z,\n        model_z_xw will be disabled; If False, model_t_xwz will be disabled.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        model_final.fit must accept sample_weight as a kw argument. If True then\n        assumes the model_final is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_final space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import LinearDRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = LinearDRIV(discrete_treatment=True, discrete_instrument=True)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.27796...,  5.84996..., -2.98291...])\n    >>> est.effect_interval(X[:3])\n    (array([-7.16134...,  1.71884..., -5.41437...]),\n    array([-1.39458...,  9.98108..., -0.55145...]))\n    >>> est.coef_\n    array([ 4.65222...,  0.93348...,  0.23315...,  0.22842..., -0.42849...])\n    >>> est.coef__interval()\n    (array([ 3.40043..., -0.19165..., -0.95122...  , -0.88663...  , -1.56023...]),\n    array([5.90402..., 2.05861... , 1.41753..., 1.34348..., 0.70325...]))\n    >>> est.intercept_\n    -0.12819...\n    >>> est.intercept__interval()\n    (-1.27151..., 1.01512...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_z_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_tz_xw=\"auto\",\n                 fit_cov_directly=True,\n                 flexible_model_effect=\"auto\",\n                 prel_cate_approach=\"driv\",\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 projection=False,\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None\n                 ):\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xw=model_t_xw,\n                         model_z_xw=model_z_xw,\n                         model_t_xwz=model_t_xwz,\n                         model_tz_xw=model_tz_xw,\n                         fit_cov_directly=fit_cov_directly,\n                         flexible_model_effect=flexible_model_effect,\n                         model_final=None,\n                         prel_cate_approach=prel_cate_approach,\n                         prel_cv=prel_cv,\n                         prel_opt_reweighted=prel_opt_reweighted,\n                         projection=projection,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_model_final(self):\n        return StatsModelsLinearRegression(fit_intercept=False)\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports ``'bootstrap'``\n            (or an instance of :class:`.BootstrapInference`) and ``'statsmodels'``\n            (or an instance of :class:`.StatsModelsInferenceDiscrete`).\n\n        Returns\n        -------\n        self\n        \"\"\"\n        # Replacing fit from _OrthoLearner, to reorder arguments and improve the docstring\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass SparseLinearDRIV(DebiasedLassoCateEstimatorMixin, DRIV):\n    \"\"\"\n    Special case of the :class:`.DRIV` where the final stage is a Debiased Lasso Regression.\n\n    In this case, inference can be performed via the debiased lasso approach\n    and its asymptotic normal characterization of the estimated parameters. This is computationally\n    faster than bootstrap inference. Leave the default ``inference='auto'`` unchanged, or explicitly set\n    ``inference='debiasedlasso'`` at fit time to enable inference via asymptotic normality.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_z_xw: estimator, default ``'auto'``\n        Determines how to fit the instrument to the features and controls (:math:`\\\\E[Z | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_instrument` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_tz_xw: estimator, default ``'auto'``\n        Determines how to fit the covariance to the features and controls (:math:`\\\\E[T*Z | X, W]` or\n        :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` depending on `fit_cov_directly`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    fit_cov_directly : bool, default True\n        Whether to fit :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` instead of :math:`\\\\E[T*Z | X, W]`.\n        Otherwise, we compute :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` from\n        :math:`\\\\E[T*Z | X, W] - \\\\E[T | X, W] \\\\E[Z | X, W]`.\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    projection: bool, default False\n        If True, we fit a slight variant of DRIV where we use E[T|X, W, Z] as the instrument as opposed to Z,\n        model_z_xw will be disabled; If False, model_t_xwz will be disabled.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    alpha: str | float, optional., default 'auto'.\n        CATE L1 regularization applied through the debiased lasso in the final model.\n        'auto' corresponds to a CV form of the :class:`DebiasedLasso`.\n\n    n_alphas : int, default 100\n        How many alphas to try if alpha='auto'\n\n    alpha_cov : str | float, default 'auto'\n        The regularization alpha that is used when constructing the pseudo inverse of\n        the covariance matrix Theta used to for correcting the final state lasso coefficient\n        in the debiased lasso. Each such regression corresponds to the regression of one feature\n        on the remainder of the features.\n\n    n_alphas_cov : int, default 10\n        How many alpha_cov to try if alpha_cov='auto'.\n\n    max_iter : int, default 1000\n        The maximum number of iterations in the Debiased Lasso\n\n    tol : float, default 1e-4\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    n_jobs : int or None, optional\n        The number of jobs to run in parallel for both `fit` and `predict`.\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\n        ``-1`` means using all processors.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        model_final.fit must accept sample_weight as a kw argument. If True then\n        assumes the model_final is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_final space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import SparseLinearDRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = SparseLinearDRIV(discrete_treatment=True, discrete_instrument=True)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.23922...,  5.89221..., -3.01203...])\n    >>> est.effect_interval(X[:3])\n    (array([-6.99782...,  1.96348..., -5.41958...]),\n    array([-1.48062...,  9.82093..., -0.60449...]))\n    >>> est.coef_\n    array([ 4.65817...,  0.94689... ,  0.18314... ,  0.23012..., -0.40375...])\n    >>> est.coef__interval()\n    (array([ 3.51645..., -0.20838..., -0.99568..., -0.89395..., -1.58517...]),\n    array([5.79989..., 2.10218..., 1.36197..., 1.35419..., 0.77767...]))\n    >>> est.intercept_\n    -0.06535...\n    >>> est.intercept__interval()\n    (-1.20712..., 1.07641...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_z_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_tz_xw=\"auto\",\n                 fit_cov_directly=True,\n                 flexible_model_effect=\"auto\",\n                 prel_cate_approach=\"driv\",\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 projection=False,\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 alpha='auto',\n                 n_alphas=100,\n                 alpha_cov='auto',\n                 n_alphas_cov=10,\n                 max_iter=1000,\n                 tol=1e-4,\n                 n_jobs=None,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.alpha = alpha\n        self.n_alphas = n_alphas\n        self.alpha_cov = alpha_cov\n        self.n_alphas_cov = n_alphas_cov\n        self.max_iter = max_iter\n        self.tol = tol\n        self.n_jobs = n_jobs\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xw=model_t_xw,\n                         model_z_xw=model_z_xw,\n                         model_t_xwz=model_t_xwz,\n                         model_tz_xw=model_tz_xw,\n                         fit_cov_directly=fit_cov_directly,\n                         flexible_model_effect=flexible_model_effect,\n                         model_final=None,\n                         prel_cate_approach=prel_cate_approach,\n                         prel_cv=prel_cv,\n                         prel_opt_reweighted=prel_opt_reweighted,\n                         projection=projection,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options\n                         )\n\n    def _gen_model_final(self):\n        return DebiasedLasso(alpha=self.alpha,\n                             n_alphas=self.n_alphas,\n                             alpha_cov=self.alpha_cov,\n                             n_alphas_cov=self.n_alphas_cov,\n                             fit_intercept=False,\n                             max_iter=self.max_iter,\n                             tol=self.tol,\n                             n_jobs=self.n_jobs,\n                             random_state=self.random_state)\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports ``'bootstrap'``\n            (or an instance of :class:`.BootstrapInference`) and ``'debiasedlasso'``\n            (or an instance of :class:`.LinearModelInferenceDiscrete`).\n\n        Returns\n        -------\n        self\n        \"\"\"\n        # TODO: support freq_weight and sample_var in debiased lasso\n        # Replacing fit from _OrthoLearner, to reorder arguments and improve the docstring\n        check_high_dimensional(X, T, threshold=5, featurizer=self.featurizer,\n                               discrete_treatment=self.discrete_treatment,\n                               msg=\"The number of features in the final model (< 5) is too small for a sparse model. \"\n                                   \"We recommend using the LinearDRLearner for this low-dimensional setting.\")\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass ForestDRIV(ForestModelFinalCateEstimatorMixin, DRIV):\n    \"\"\"\n    Instance of DRIV with a :class:`~econml.grf.RegressionForest` as a final model.\n\n    Enables non-parametric inference.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xw: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features and controls (:math:`\\\\E[T | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_z_xw: estimator, default ``'auto'``\n        Determines how to fit the instrument to the features and controls (:math:`\\\\E[Z | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_instrument` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    model_tz_xw: estimator, default ``'auto'``\n        Determines how to fit the covariance to the features and controls (:math:`\\\\E[T*Z | X, W]`\n        or :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` depending on `fit_cov_directly`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    fit_cov_directly : bool, default True\n        Whether to fit :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` instead of :math:`\\\\E[T*Z | X, W]`.\n        Otherwise, we compute :math:`\\\\E[\\\\tilde{T}*\\\\tilde{Z} | X, W]` from\n        :math:`\\\\E[T*Z | X, W] - \\\\E[T | X, W] \\\\E[Z | X, W]`.\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    projection: bool, default False\n        If True, we fit a slight variant of DRIV where we use E[T|X, W, Z] as the instrument as opposed to Z,\n        model_z_xw will be disabled; If False, model_t_xwz will be disabled.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    n_estimators : int, default 100\n        The total number of trees in the forest. The forest consists of a\n        forest of sqrt(n_estimators) sub-forests, where each sub-forest\n        contains sqrt(n_estimators) trees.\n\n    max_depth : int or None, optional\n        The maximum depth of the tree. If None, then nodes are expanded until\n        all leaves are pure or until all leaves contain less than\n        min_samples_split samples.\n\n    min_samples_split : int, float, default 2\n        The minimum number of splitting samples required to split an internal node.\n\n        - If int, then consider `min_samples_split` as the minimum number.\n        - If float, then `min_samples_split` is a fraction and\n          `ceil(min_samples_split * n_samples)` are the minimum\n          number of samples for each split.\n\n    min_samples_leaf : int, float, default 1\n        The minimum number of samples required to be at a leaf node.\n        A split point at any depth will only be considered if it leaves at\n        least ``min_samples_leaf`` splitting samples in each of the left and\n        right branches.  This may have the effect of smoothing the model,\n        especially in regression. After construction the tree is also pruned\n        so that there are at least min_samples_leaf estimation samples on\n        each leaf.\n\n        - If int, then consider `min_samples_leaf` as the minimum number.\n        - If float, then `min_samples_leaf` is a fraction and\n          `ceil(min_samples_leaf * n_samples)` are the minimum\n          number of samples for each node.\n\n    min_weight_fraction_leaf : float, default 0.\n        The minimum weighted fraction of the sum total of weights (of all\n        splitting samples) required to be at a leaf node. Samples have\n        equal weight when sample_weight is not provided. After construction\n        the tree is pruned so that the fraction of the sum total weight\n        of the estimation samples contained in each leaf node is at\n        least min_weight_fraction_leaf\n\n    max_features : int, float, str, or None, default \"auto\"\n        The number of features to consider when looking for the best split:\n\n        - If int, then consider `max_features` features at each split.\n        - If float, then `max_features` is a fraction and\n          `int(max_features * n_features)` features are considered at each\n          split.\n        - If \"auto\", then `max_features=n_features`.\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\n        - If \"log2\", then `max_features=log2(n_features)`.\n        - If None, then `max_features=n_features`.\n\n        Note: the search for a split does not stop until at least one\n        valid partition of the node samples is found, even if it requires to\n        effectively inspect more than ``max_features`` features.\n\n    min_impurity_decrease : float, default 0.\n        A node will be split if this split induces a decrease of the impurity\n        greater than or equal to this value.\n\n        The weighted impurity decrease equation is the following::\n\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\n                                - N_t_L / N_t * left_impurity)\n\n        where ``N`` is the total number of split samples, ``N_t`` is the number of\n        split samples at the current node, ``N_t_L`` is the number of split samples in the\n        left child, and ``N_t_R`` is the number of split samples in the right child.\n\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\n        if ``sample_weight`` is passed.\n\n    max_samples : int or float in (0, .5], default .45,\n        The number of samples to use for each subsample that is used to train each tree:\n\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\n          from all the samples.\n\n    min_balancedness_tol: float in [0, .5], default .45\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\n        to be valid, this has to be any positive constant bounded away from zero.\n\n    honest : bool, default True\n        Whether to use honest trees, i.e. half of the samples are used for\n        creating the tree structure and the other half for the estimation at\n        the leafs. If False, then all samples are used for both parts.\n\n    subforest_size : int, default 4,\n        The number of trees in each sub-forest that is used in the bootstrap-of-little-bags calculation.\n        The parameter `n_estimators` must be divisible by `subforest_size`. Should typically be a small constant.\n\n    n_jobs : int or None, default -1\n        The number of jobs to run in parallel for both `fit` and `predict`.\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    verbose : int, default 0\n        Controls the verbosity when fitting and predicting.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        model_final.fit must accept sample_weight as a kw argument. If True then\n        assumes the model_final is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_final space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_instrument: bool, default False\n        Whether the instrument values should be treated as categorical, rather than continuous, quantities\n\n    discrete_treatment: bool, default False\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import ForestDRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = ForestDRIV(discrete_treatment=True, discrete_instrument=True, random_state=42)\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-2.09730...,  6.31097..., -3.65892...])\n    >>> est.effect_interval(X[:3])\n    (array([-5.56445...,  2.38627..., -7.13980...]),\n    array([ 1.36983..., 10.23568..., -0.17805...]))\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xw=\"auto\",\n                 model_z_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 model_tz_xw=\"auto\",\n                 fit_cov_directly=True,\n                 flexible_model_effect=\"auto\",\n                 prel_cate_approach=\"driv\",\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 projection=False,\n                 featurizer=None,\n                 n_estimators=1000,\n                 max_depth=None,\n                 min_samples_split=5,\n                 min_samples_leaf=5,\n                 min_weight_fraction_leaf=0.,\n                 max_features=\"auto\",\n                 min_impurity_decrease=0.,\n                 max_samples=.45,\n                 min_balancedness_tol=.45,\n                 honest=True,\n                 subforest_size=4,\n                 n_jobs=-1,\n                 verbose=0,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 discrete_outcome=False,\n                 discrete_instrument=False,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.n_estimators = n_estimators\n        self.max_depth = max_depth\n        self.min_samples_split = min_samples_split\n        self.min_samples_leaf = min_samples_leaf\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\n        self.max_features = max_features\n        self.min_impurity_decrease = min_impurity_decrease\n        self.max_samples = max_samples\n        self.min_balancedness_tol = min_balancedness_tol\n        self.honest = honest\n        self.subforest_size = subforest_size\n        self.n_jobs = n_jobs\n        self.verbose = verbose\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xw=model_t_xw,\n                         model_z_xw=model_z_xw,\n                         model_t_xwz=model_t_xwz,\n                         model_tz_xw=model_tz_xw,\n                         fit_cov_directly=fit_cov_directly,\n                         flexible_model_effect=flexible_model_effect,\n                         model_final=None,\n                         prel_cate_approach=prel_cate_approach,\n                         prel_cv=prel_cv,\n                         prel_opt_reweighted=prel_opt_reweighted,\n                         projection=projection,\n                         featurizer=featurizer,\n                         fit_cate_intercept=False,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         discrete_outcome=discrete_outcome,\n                         discrete_instrument=discrete_instrument,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=treatment_featurizer,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_model_final(self):\n        return RegressionForest(n_estimators=self.n_estimators,\n                                max_depth=self.max_depth,\n                                min_samples_split=self.min_samples_split,\n                                min_samples_leaf=self.min_samples_leaf,\n                                min_weight_fraction_leaf=self.min_weight_fraction_leaf,\n                                max_features=self.max_features,\n                                min_impurity_decrease=self.min_impurity_decrease,\n                                max_samples=self.max_samples,\n                                min_balancedness_tol=self.min_balancedness_tol,\n                                honest=self.honest,\n                                inference=True,\n                                subforest_size=self.subforest_size,\n                                n_jobs=self.n_jobs,\n                                random_state=self.random_state,\n                                verbose=self.verbose,\n                                warm_start=False)\n\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n,) vector of length n\n            Outcomes for each sample\n        T: (n,) vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like, optional\n            Individual weights for each sample. If None, it assumes equal weight.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str, `Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'blb'\n            (for Bootstrap-of-Little-Bags based inference)\n\n        Returns\n        -------\n        self\n        \"\"\"\n        if X is None:\n            raise ValueError(\"This estimator does not support X=None!\")\n\n        # Replacing fit from _OrthoLearner, to reorder arguments and improve the docstring\n        return super().fit(Y, T, X=X, W=W, Z=Z,\n                           sample_weight=sample_weight, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n\nclass _IntentToTreatDRIVNuisanceSelector(ModelSelector):\n    def __init__(self,\n                 model_y_xw: SingleModelSelector,\n                 model_t_xwz: SingleModelSelector,\n                 dummy_z: SingleModelSelector,\n                 prel_model_effect):\n        self._model_y_xw = model_y_xw\n        self._model_t_xwz = model_t_xwz\n        self._dummy_z = dummy_z\n        self._prel_model_effect = prel_model_effect\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        self._model_y_xw.train(is_selecting, folds, X=X, W=W, Target=Y, sample_weight=sample_weight, groups=groups)\n        # concat W and Z\n        WZ = _combine(W, Z, Y.shape[0])\n        self._model_t_xwz.train(is_selecting, folds, X=X, W=WZ, Target=T, sample_weight=sample_weight, groups=groups)\n        self._dummy_z.train(is_selecting, folds, X=X, W=W, Target=Z, sample_weight=sample_weight, groups=groups)\n        # we need to undo the one-hot encoding for calling effect,\n        # since it expects raw values\n        self._prel_model_effect.fit(Y, inverse_onehot(T), Z=inverse_onehot(Z), X=X, W=W,\n                                    sample_weight=sample_weight, groups=groups)\n        return self\n\n    def score(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        if hasattr(self._model_y_xw, 'score'):\n            Y_X_score = self._model_y_xw.score(X=X, W=W, Target=Y, sample_weight=sample_weight)\n        else:\n            Y_X_score = None\n        if hasattr(self._model_t_xwz, 'score'):\n            # concat W and Z\n            WZ = _combine(W, Z, Y.shape[0])\n            T_XZ_score = self._model_t_xwz.score(X=X, W=WZ, Target=T, sample_weight=sample_weight)\n        else:\n            T_XZ_score = None\n        if hasattr(self._prel_model_effect, 'score'):\n            # we need to undo the one-hot encoding for calling effect,\n            # since it expects raw values\n            effect_score = self._prel_model_effect.score(Y, inverse_onehot(T),\n                                                         inverse_onehot(Z), X=X, W=W, sample_weight=sample_weight)\n        else:\n            effect_score = None\n\n        return Y_X_score, T_XZ_score, effect_score\n\n    def predict(self, Y, T, X=None, W=None, Z=None, sample_weight=None, groups=None):\n        Y_pred = self._model_y_xw.predict(X, W)\n        T_pred_zero = self._model_t_xwz.predict(X, _combine(W, np.zeros(Z.shape), Y.shape[0]))\n        T_pred_one = self._model_t_xwz.predict(X, _combine(W, np.ones(Z.shape), Y.shape[0]))\n        Z_pred = self._dummy_z.predict(X, W)\n        prel_theta = self._prel_model_effect.effect(X)\n\n        if X is None:  # In this case predict above returns a single row\n            prel_theta = np.tile(prel_theta.reshape(1, -1), (T.shape[0], 1))\n            if W is None:\n                Y_pred = np.tile(Y_pred.reshape(1, -1), (Y.shape[0], 1))\n                Z_pred = np.tile(Z_pred.reshape(1, -1), (Z.shape[0], 1))\n\n        # reshape the predictions\n        Y_pred = Y_pred.reshape(Y.shape)\n        Z_pred = Z_pred.reshape(Z.shape)\n        T_pred_one = T_pred_one.reshape(T.shape)\n        T_pred_zero = T_pred_zero.reshape(T.shape)\n\n        # T_res, Z_res, beta expect shape to be (n,1)\n        beta = Z_pred * (1 - Z_pred) * (T_pred_one - T_pred_zero)\n        T_pred = T_pred_one * Z_pred + T_pred_zero * (1 - Z_pred)\n        Y_res = Y - Y_pred\n        T_res = T - T_pred\n        Z_res = Z - Z_pred\n\n        return prel_theta, Y_res, T_res, Z_res, beta\n\n\nclass _DummyClassifier:\n    \"\"\"\n    A dummy classifier that always returns the prior ratio.\n\n    Parameters\n    ----------\n    ratio: float\n        The ratio of treatment samples\n    \"\"\"\n\n    def __init__(self, *, ratio):\n        self.ratio = ratio\n\n    def fit(self, X, y, **kwargs):\n        return self\n\n    def predict_proba(self, X):\n        n = X.shape[0]\n        return np.hstack((np.tile(1 - self.ratio, (n, 1)), np.tile(self.ratio, (n, 1))))\n\n\nclass _IntentToTreatDRIV(_BaseDRIV):\n    \"\"\"Base class for the DRIV algorithm for the intent-to-treat A/B test setting.\"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 prel_model_effect,\n                 model_final,\n                 z_propensity=\"auto\",\n                 featurizer=None,\n                 fit_cate_intercept=False,\n                 discrete_outcome=False,\n                 cov_clip=1e-3,\n                 opt_reweighted=False,\n                 categories='auto',\n                 cv=3,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        self.model_y_xw = clone(model_y_xw, safe=False)\n        self.model_t_xwz = clone(model_t_xwz, safe=False)\n        self.prel_model_effect = clone(prel_model_effect, safe=False)\n        self.z_propensity = z_propensity\n\n        super().__init__(model_final=model_final,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         discrete_outcome=discrete_outcome,\n                         cov_clip=cov_clip,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         discrete_instrument=True,\n                         discrete_treatment=True,\n                         categories=categories,\n                         opt_reweighted=opt_reweighted,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_prel_model_effect(self):\n        return clone(self.prel_model_effect, safe=False)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        model_y_xw = _make_first_stage_selector(self.model_y_xw,\n                                                is_discrete=self.discrete_outcome,\n                                                random_state=self.random_state)\n        model_t_xwz = _make_first_stage_selector(self.model_t_xwz, is_discrete=True, random_state=self.random_state)\n\n        if self.z_propensity == \"auto\":\n            dummy_z = DummyClassifier(strategy=\"prior\")\n        elif isinstance(self.z_propensity, float):\n            dummy_z = _DummyClassifier(ratio=self.z_propensity)\n        else:\n            raise ValueError(\"Only 'auto' or float is allowed!\")\n\n        dummy_z = _make_first_stage_selector(dummy_z, is_discrete=True, random_state=self.random_state)\n\n        return _IntentToTreatDRIVNuisanceSelector(model_y_xw, model_t_xwz, dummy_z, self._gen_prel_model_effect())\n\n\nclass _DummyCATE:\n    \"\"\"A dummy cate effect model that always returns zero effect.\"\"\"\n\n    def __init__(self):\n        return\n\n    def fit(self, y, T, *, Z, X=None, W=None, sample_weight=None, groups=None, **kwargs):\n        return self\n\n    def effect(self, X):\n        if X is None:\n            return np.zeros(1)\n        return np.zeros(X.shape[0])\n\n\nclass IntentToTreatDRIV(_IntentToTreatDRIV):\n    \"\"\"\n    Implements the DRIV algorithm for the intent-to-treat A/B test setting.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    model_final : estimator, optional\n        a final model for the CATE and projections. If None, then flexible_model_effect is also used as a final model\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    z_propensity: float or \"auto\", default \"auto\"\n        The ratio of the A/B test in treatment group. If \"auto\", we assume that the instrument is fully randomized\n        and independent of any other variables. It's calculated as the proportion of Z=1 in the overall population;\n        If input a ratio, it has to be a float between 0 to 1.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default False\n        Whether the linear CATE model should have a constant term.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    cv: int, cross-validation generator or an iterable, default 3\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        final_model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\n        utilities can be used for any linear model to enable sample_weights). If True then\n        assumes the final_model_effect is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_effect space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import IntentToTreatDRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = IntentToTreatDRIV()\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.52684...,  6.38767..., -2.67082...])\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 prel_cate_approach=\"driv\",\n                 flexible_model_effect=\"auto\",\n                 model_final=None,\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 z_propensity=\"auto\",\n                 featurizer=None,\n                 fit_cate_intercept=False,\n                 discrete_outcome=False,\n                 cov_clip=1e-3,\n                 cv=3,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 opt_reweighted=False,\n                 categories='auto',\n                 random_state=None,\n                 allow_missing=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n\n        # maybe shouldn't expose fit_cate_intercept in this class?\n        if flexible_model_effect == \"auto\":\n            self.flexible_model_effect = StatsModelsLinearRegression(fit_intercept=False)\n        else:\n            self.flexible_model_effect = clone(flexible_model_effect, safe=False)\n        self.prel_cate_approach = prel_cate_approach\n        self.prel_cv = prel_cv\n        self.prel_opt_reweighted = prel_opt_reweighted\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xwz=model_t_xwz,\n                         prel_model_effect=self.prel_cate_approach,\n                         model_final=model_final,\n                         z_propensity=z_propensity,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         discrete_outcome=discrete_outcome,\n                         cov_clip=cov_clip,\n                         opt_reweighted=opt_reweighted,\n                         categories=categories,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n\n    def _gen_model_final(self):\n        if self.model_final is None:\n            return clone(self.flexible_model_effect, safe=False)\n        return clone(self.model_final, safe=False)\n\n    def _gen_prel_model_effect(self):\n        if self.prel_cate_approach == \"driv\":\n            return _IntentToTreatDRIV(model_y_xw=clone(self.model_y_xw, safe=False),\n                                      model_t_xwz=clone(self.model_t_xwz, safe=False),\n                                      prel_model_effect=_DummyCATE(),\n                                      model_final=clone(self.flexible_model_effect, safe=False),\n                                      featurizer=self._gen_featurizer(),\n                                      fit_cate_intercept=self.fit_cate_intercept,\n                                      cov_clip=self.cov_clip,\n                                      categories=self.categories,\n                                      opt_reweighted=self.prel_opt_reweighted,\n                                      cv=self.prel_cv,\n                                      random_state=self.random_state,\n                                      allow_missing=self.allow_missing)\n        elif self.prel_cate_approach == \"dmliv\":\n            return NonParamDMLIV(model_y_xw=clone(self.model_y_xw, safe=False),\n                                 model_t_xw=clone(self.model_t_xwz, safe=False),\n                                 model_t_xwz=clone(self.model_t_xwz, safe=False),\n                                 model_final=clone(self.flexible_model_effect, safe=False),\n                                 discrete_instrument=True,\n                                 discrete_treatment=True,\n                                 featurizer=self._gen_featurizer(),\n                                 categories=self.categories,\n                                 cv=self.prel_cv,\n                                 mc_iters=self.mc_iters,\n                                 mc_agg=self.mc_agg,\n                                 random_state=self.random_state,\n                                 allow_missing=self.allow_missing)\n        else:\n            raise ValueError(\n                \"We only support 'dmliv' or 'driv' preliminary model effect, \"\n                f\"but received '{self.prel_cate_approach}'!\")\n\n    @property\n    def models_y_xw(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[Y | X]`.\n\n        Returns\n        -------\n        models_y_xw: nested list of objects of type(`model_y_xw`)\n            A nested list of instances of the `model_y_xw` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_y_xw._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t_xwz(self):\n        \"\"\"\n        Get the fitted models for :math:`\\\\E[T | X, Z]`.\n\n        Returns\n        -------\n        models_t_xwz: nested list of objects of type(`model_t_xwz`)\n            A nested list of instances of the `model_t_xwz` object. Number of sublist equals to number of monte carlo\n            iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._model_t_xwz._model for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_prel_model_effect(self):\n        \"\"\"\n        Get the fitted preliminary CATE estimator.\n\n        Returns\n        -------\n        prel_model_effect: nested list of objects of type(`prel_model_effect`)\n            A nested list of instances of the `prel_model_effect` object. Number of sublist equals to number\n            of monte carlo iterations, each element in the sublist corresponds to a crossfitting\n            fold and is the model instance that was fitted for that training fold.\n        \"\"\"\n        return [[mdl._prel_model_effect for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y_xw(self):\n        \"\"\"Get the scores for y_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t_xwz(self):\n        \"\"\"Get the scores for t_xw model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[1]\n\n    @property\n    def nuisance_scores_prel_model_effect(self):\n        \"\"\"Get the scores for prel_model_effect model on the out-of-sample training data.\"\"\"\n        return self.nuisance_scores_[2]\n\n\nclass LinearIntentToTreatDRIV(StatsModelsCateEstimatorMixin, IntentToTreatDRIV):\n    \"\"\"\n    Implements the DRIV algorithm for the Linear Intent-to-Treat A/B test setting.\n\n    Parameters\n    ----------\n    model_y_xw: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features and controls (:math:`\\\\E[Y | X, W]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t_xwz: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features, controls, and instrument (:math:`\\\\E[T | X, W, Z]`).\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    flexible_model_effect : estimator or 'auto' (default is 'auto')\n        a flexible model for a preliminary version of the CATE, must accept sample_weight at fit time.\n        If 'auto', :class:`.StatsModelsLinearRegression` will be applied.\n\n    prel_cate_approach : one of {'driv', 'dmliv'}, default 'driv'\n        model that estimates a preliminary version of the CATE.\n        If 'driv', :class:`._DRIV` will be used.\n        If 'dmliv', :class:`.NonParamDMLIV` will be used\n\n    prel_cv : int, cross-validation generator or an iterable, default 1\n        Determines the cross-validation splitting strategy for the preliminary effect model.\n\n    prel_opt_reweighted : bool, default True\n        Whether to reweight the samples to minimize variance for the preliminary effect model.\n\n    z_propensity: float or \"auto\", default \"auto\"\n        The ratio of the A/B test in treatment group. If \"auto\", we assume that the instrument is fully randomized\n        and independent of any other variables. It's calculated as the proportion of Z=1 in the overall population;\n        If input a ratio, it has to be a float between 0 to 1.\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    cov_clip : float, default 0.1\n        clipping of the covariate for regions with low \"overlap\", to reduce variance\n\n    cv: int, cross-validation generator or an iterable, default 3\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer/None inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    opt_reweighted : bool, default False\n        Whether to reweight the samples to minimize variance. If True then\n        final_model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\n        utilities can be used for any linear model to enable sample_weights). If True then\n        assumes the final_model_effect is flexible enough to fit the true CATE model. Otherwise,\n        it method will return a biased projection to the model_effect space, biased\n        to give more weight on parts of the feature space where the instrument is strong.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance models\n        that can handle missing values.\n\n    enable_federation: bool, default False\n        Whether to enable federation for the final model.  This has a memory cost so should be enabled only\n        if this model will be aggregated with other models.\n\n    use_ray: bool, default False\n        Whether to use Ray to parallelize the cross-validation step. If True, Ray must be installed.\n\n    ray_remote_func_options : dict, default None\n        Options to pass to the remote function when using Ray.\n        See https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html\n\n    Examples\n    --------\n    A simple example with the default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.iv.dr import LinearIntentToTreatDRIV\n\n        # Define the data generation functions\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * scipy.special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        def true_heterogeneity_function(X):\n            return 5 * X[:, 0]\n\n        np.random.seed(123)\n        y, T, Z, X = dgp(1000, 5, true_heterogeneity_function)\n        est = LinearIntentToTreatDRIV()\n        est.fit(Y=y, T=T, Z=Z, X=X)\n\n    >>> est.effect(X[:3])\n    array([-4.80543...,  6.10553..., -2.94941...])\n    >>> est.effect_interval(X[:3])\n    (array([-9.20288..., -0.47079..., -6.67443...]),\n    array([-0.40797..., 12.68185...,  0.77560...]))\n    >>> est.coef_\n    array([ 5.52457...,  0.96284...,  0.68162..., -0.16799..., -0.13048...])\n    >>> est.coef__interval()\n    (array([ 3.61389..., -0.81869..., -1.12607..., -1.90211..., -1.92346...]),\n    array([7.43525..., 2.74438..., 2.48932..., 1.56613..., 1.66248...]))\n    >>> est.intercept_\n    -0.28950...\n    >>> est.intercept__interval()\n    (-2.07685..., 1.49784...)\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y_xw=\"auto\",\n                 model_t_xwz=\"auto\",\n                 prel_cate_approach=\"driv\",\n                 flexible_model_effect=\"auto\",\n                 prel_cv=1,\n                 prel_opt_reweighted=True,\n                 z_propensity=\"auto\",\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 discrete_outcome=False,\n                 cov_clip=1e-3,\n                 cv=3,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 opt_reweighted=False,\n                 categories='auto',\n                 random_state=None,\n                 allow_missing=False,\n                 enable_federation=False,\n                 use_ray=False,\n                 ray_remote_func_options=None):\n        super().__init__(model_y_xw=model_y_xw,\n                         model_t_xwz=model_t_xwz,\n                         flexible_model_effect=flexible_model_effect,\n                         model_final=None,\n                         prel_cate_approach=prel_cate_approach,\n                         prel_cv=prel_cv,\n                         prel_opt_reweighted=prel_opt_reweighted,\n                         z_propensity=z_propensity,\n                         featurizer=featurizer,\n                         fit_cate_intercept=fit_cate_intercept,\n                         discrete_outcome=discrete_outcome,\n                         cov_clip=cov_clip,\n                         cv=cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         opt_reweighted=opt_reweighted,\n                         categories=categories,\n                         random_state=random_state,\n                         allow_missing=allow_missing,\n                         use_ray=use_ray,\n                         ray_remote_func_options=ray_remote_func_options)\n        self.enable_federation = enable_federation\n\n    def _gen_model_final(self):\n        return StatsModelsLinearRegression(fit_intercept=False, enable_federation=self.enable_federation)\n\n    # override only so that we can update the docstring to indicate support for `StatsModelsInference`\n    def fit(self, Y, T, *, Z, X=None, W=None, sample_weight=None, freq_weight=None, sample_var=None, groups=None,\n            cache_values=False, inference='auto'):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample\n        Z: (n, d_z) matrix or vector of length n\n            Instruments for each sample\n        X:(n, d_x) matrix, optional\n            Features for each sample\n        W:(n, d_w) matrix, optional\n            Controls for each sample\n        sample_weight : (n,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (n,) array_like of int, optional\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : (n,) nd array_like, optional\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n        groups: (n,) vector, optional\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str,:class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of:class:`.BootstrapInference`) and 'statsmodels'\n            (or an instance of :class:`.StatsModelsInference`).\n\n        Returns\n        -------\n        self : instance\n        \"\"\"\n        # TODO: do correct adjustment for sample_var\n        return super().fit(Y, T, Z=Z, X=X, W=W,\n                           sample_weight=sample_weight, freq_weight=freq_weight, sample_var=sample_var, groups=groups,\n                           cache_values=cache_values, inference=inference)\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._fit_cate_intercept\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, value):\n        if value is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator.\")\n"
  },
  {
    "path": "econml/iv/sieve/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._tsls import HermiteFeatures, DPolynomialFeatures, SieveTSLS\r\n\r\n__all__ = [\"HermiteFeatures\",\r\n           \"DPolynomialFeatures\",\r\n           \"SieveTSLS\"]\r\n"
  },
  {
    "path": "econml/iv/sieve/_tsls.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Provides a non-parametric two-stage least squares instrumental variable estimator.\"\"\"\n\nimport numpy as np\nfrom sklearn import clone\nfrom sklearn.linear_model import LinearRegression\nfrom ...utilities import (shape, transpose, reshape, cross_product, ndim, size,\n                          check_input_arrays)\nfrom ..._cate_estimator import BaseCateEstimator\nfrom numpy.polynomial.hermite_e import hermeval\nfrom sklearn.base import TransformerMixin\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom itertools import product\n\n\nclass HermiteFeatures(TransformerMixin):\n    \"\"\"\n    Featurizer that returns(unscaled) Hermite function evaluations.\n\n    The evaluated functions are of degrees 0..`degree`, differentiated `shift` times.\n\n    If the input has shape(n, x) and `joint` is False, the output will have shape(n, (`degree`+ 1)×x) if `shift` is 0.\n    If the input has shape(n, x) and `joint` is True, the output will have shape(n, (`degree`+ 1) ^ x) if `shift` is 0.\n    In either case, if `shift` is nonzero there will be `shift` additional dimensions of size x\n    between the first and last.\n    \"\"\"\n\n    def __init__(self, degree, shift=0, joint=False):\n        self._degree = degree\n        self._shift = shift\n        self._joint = joint\n\n    def _column_feats(self, X, shift):\n        \"\"\"\n        Apply Hermite function evaluations of degrees 0..`degree` differentiated `shift` times.\n\n        When applied to the column `X` of shape(n,), the resulting array has shape(n, (degree + 1)).\n        \"\"\"\n        assert ndim(X) == 1\n        # this will have dimension (d,) + shape(X)\n        coeffs = np.identity(self._degree + shift + 1)[:, shift:]\n        feats = ((-1) ** shift) * hermeval(X, coeffs) * np.exp(-X * X / 2)\n        # send the first dimension to the end\n        return transpose(feats)\n\n    def fit(self, X):\n        \"\"\"Fits the data(a NOP for this class) and returns self.\"\"\"\n        return self\n\n    def transform(self, X):\n        \"\"\"\n        Transform the data by applying the appropriate Hermite functions.\n\n        Parameters\n        ----------\n        X: array_like\n            2-dimensional array of input features\n\n        Returns\n        -------\n        The transformed data\n        \"\"\"\n        assert ndim(X) == 2\n        n = shape(X)[0]\n        ncols = shape(X)[1]\n        columns = []\n        for indices in product(*[range(ncols) for i in range(self._shift)]):\n            if self._joint:\n                columns.append(cross_product(*[self._column_feats(X[:, i], indices.count(i))\n                                               for i in range(shape(X)[1])]))\n            else:\n                indices = set(indices)\n                if self._shift == 0:  # return features for all columns:\n                    columns.append(np.hstack([self._column_feats(X[:, i], self._shift) for i in range(shape(X)[1])]))\n                # columns are featurized independently; partial derivatives are only non-zero\n                # when taken with respect to the same column each time\n                elif len(indices) == 1:\n                    index = list(indices)[0]\n                    feats = self._column_feats(X[:, index], self._shift)\n                    columns.append(np.hstack([feats if i == index else np.zeros(shape(feats))\n                                              for i in range(shape(X)[1])]))\n                else:\n                    columns.append(np.zeros((n, (self._degree + 1) * ncols)))\n        return reshape(np.hstack(columns), (n,) + (ncols,) * self._shift + (-1,))\n\n\nclass DPolynomialFeatures(TransformerMixin):\n    \"\"\"\n    Featurizer that returns the derivatives of :class:`~sklearn.preprocessing.PolynomialFeatures` features.\n\n    Does this in a way that's compatible with the expectations of :class:`.SieveTSLS`'s `dt_featurizer` parameter.\n\n    If the input has shape `(n, x)` and\n    :meth:`PolynomialFeatures.transform<sklearn.preprocessing.PolynomialFeatures.transform>` returns an output\n    of shape `(n, f)`, then :meth:`.transform` will return an array of shape `(n, x, f)`.\n\n    Parameters\n    ----------\n    degree: int, default = 2\n        The degree of the polynomial features.\n\n    interaction_only: bool, default = False\n        If true, only derivatives of interaction features are produced: features that are products of at most degree\n        distinct input features (so not `x[1] ** 2`, `x[0] * x[2] ** 3`, etc.).\n\n    include_bias: bool, default = True\n        If True (default), then include the derivative of a bias column, the feature in which all polynomial powers\n        are zero.\n    \"\"\"\n\n    def __init__(self, degree=2, interaction_only=False, include_bias=True):\n        self.F = PolynomialFeatures(degree=degree, interaction_only=interaction_only, include_bias=include_bias)\n\n    def fit(self, X, y=None):\n        \"\"\"\n        Compute number of output features.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            The data.\n        y : array, optional\n            Not used\n\n        Returns\n        -------\n        self : instance\n        \"\"\"\n        return self\n\n    def transform(self, X):\n        \"\"\"\n        Transform data to derivatives of polynomial features.\n\n        Parameters\n        ----------\n        X: array_like, shape (n_samples, n_features)\n            The data to transform, row by row.\n\n        Returns\n        -------\n        XP: array_like, shape (n_samples, n_features, n_output_features)\n            The matrix of features, where `n_output_features` is the number of features that\n            would be returned from :class:`~sklearn.preprocessing.PolynomialFeatures`.\n        \"\"\"\n        self.F.fit(X)\n        powers = self.F.powers_\n        result = np.zeros(X.shape + (self.F.n_output_features_,))\n        for i in range(X.shape[1]):\n            p = powers.copy()\n            c = powers[:, i]\n            p[p[:, i] > 0, i] -= 1\n            M = np.float_power(X[:, np.newaxis, :], p[np.newaxis, :, :])\n            result[:, i, :] = c[np.newaxis, :] * np.prod(M, axis=-1)\n        return result\n\n\ndef _add_ones(arr):\n    \"\"\"Add a column of ones to the front of an array.\"\"\"\n    return np.hstack([np.ones((shape(arr)[0], 1)), arr])\n\n\ndef _add_zeros(arr):\n    \"\"\"Add a column of zeros to the front of an array.\"\"\"\n    return np.hstack([np.zeros((shape(arr)[0], 1)), arr])\n\n\nclass SieveTSLS(BaseCateEstimator):\n    \"\"\"\n    Non-parametric instrumental variables estimator.\n\n    Supports the use of arbitrary featurizers for the features, treatments, and instruments.\n\n    Parameters\n    ----------\n    t_featurizer: transformer\n        Featurizer used to transform the treatments\n\n    x_featurizer: transformer\n        Featurizer used to transform the raw features\n\n    z_featurizer: transformer\n        Featurizer used to transform the instruments\n\n    dt_featurizer: transformer\n        Featurizer used to transform the treatments for the computation of the marginal effect.\n        This should produce a 3-dimensional array, containing the per-treatment derivative of\n        each transformed treatment. That is, given a treatment array of shape(n, dₜ),\n        the output should have shape(n, dₜ, fₜ), where fₜ is the number of columns produced by `t_featurizer`.\n\n    \"\"\"\n\n    def __init__(self, *,\n                 t_featurizer,\n                 x_featurizer,\n                 z_featurizer,\n                 dt_featurizer):\n        self._t_featurizer = clone(t_featurizer, safe=False)\n        self._x_featurizer = clone(x_featurizer, safe=False)\n        self._z_featurizer = clone(z_featurizer, safe=False)\n        self._dt_featurizer = clone(dt_featurizer, safe=False)\n        # don't fit intercept; manually add column of ones to the data instead;\n        # this allows us to ignore the intercept when computing marginal effects\n        self._model_T = LinearRegression(fit_intercept=False)\n        self._model_Y = LinearRegression(fit_intercept=False)\n        super().__init__()\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, Z, X=None, W=None, inference=None):\n        \"\"\"\n        Estimate the counterfactual model from data, i.e. estimates functions τ(·, ·, ·), ∂τ(·, ·).\n\n        Parameters\n        ----------\n        Y: (n × d_y) matrix\n            Outcomes for each sample\n        T: (n × dₜ) matrix\n            Treatments for each sample\n        X: (n × dₓ) matrix, optional\n            Features for each sample\n        W: (n × d_w) matrix, optional\n            Controls for each sample\n        Z: (n × d_z) matrix, optional\n            Instruments for each sample\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self\n\n        \"\"\"\n        Y, T, X, W, Z = check_input_arrays(Y, T, X, W, Z)\n        if X is None:\n            X = np.empty((shape(Y)[0], 0))\n        if W is None:\n            W = np.empty((shape(Y)[0], 0))\n        assert shape(Y)[0] == shape(T)[0] == shape(X)[0] == shape(W)[0] == shape(Z)[0]\n\n        # make T 2D if if was a vector\n        if ndim(T) == 1:\n            T = reshape(T, (-1, 1))\n\n        # store number of columns of W so that we can create correctly shaped zero array in effect and marginal effect\n        self._d_w = shape(W)[1]\n\n        # two stage approximation\n        # first, get basis expansions of T, X, and Z\n        ft_X = self._x_featurizer.fit_transform(X)\n        ft_Z = self._z_featurizer.fit_transform(Z)\n        ft_T = self._t_featurizer.fit_transform(T)\n        # TODO: is it right that the effective number of intruments is the\n        #       product of ft_X and ft_Z, not just ft_Z?\n        assert shape(ft_T)[1] <= shape(ft_X)[1] * shape(ft_Z)[1], (\"There can be no more T features than the product \"\n                                                                   \"of the number of X and Z features; otherwise \"\n                                                                   \"there is not enough information to identify their \"\n                                                                   \"structure\")\n\n        # regress T expansion on X,Z expansions concatenated with W\n        features = _add_ones(np.hstack([W, cross_product(ft_X, ft_Z)]))\n        self._model_T.fit(features, ft_T)\n        # predict ft_T from interacted ft_X, ft_Z\n        ft_T_hat = self._model_T.predict(features)\n        self._model_Y.fit(_add_ones(np.hstack([W, cross_product(ft_T_hat, ft_X)])), Y)\n\n    def effect(self, X=None, T0=0, T1=1):\n        \"\"\"\n        Calculate the heterogeneous treatment effect τ(·,·,·).\n\n        The effect is calculated between the two treatment points\n        conditional on a vector of features on a set of m test samples {T0ᵢ, T1ᵢ, Xᵢ}.\n\n        Parameters\n        ----------\n        T0: (m × dₜ) matrix or vector of length m\n            Base treatments for each sample\n        T1: (m × dₜ) matrix or vector of length m\n            Target treatments for each sample\n        X:  (m × dₓ) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        τ: (m × d_y) matrix\n            Heterogeneous treatment effects on each outcome for each sample\n            Note that when Y is a vector rather than a 2-dimensional array, the corresponding\n            singleton dimension will be collapsed (so this method will return a vector)\n\n        \"\"\"\n        if ndim(T0) == 0:\n            T0 = np.full((1 if X is None else shape(X)[0],) + self._d_t, T0)\n        if ndim(T1) == 0:\n            T1 = np.full((1 if X is None else shape(X)[0],) + self._d_t, T1)\n        if ndim(T0) == 1:\n            T0 = reshape(T0, (-1, 1))\n        if ndim(T1) == 1:\n            T1 = reshape(T1, (-1, 1))\n        if X is None:\n            X = np.empty((shape(T0)[0], 0))\n        assert shape(T0) == shape(T1)\n        assert shape(T0)[0] == shape(X)[0]\n\n        W = np.zeros((shape(T0)[0], self._d_w))  # can set arbitrarily since values will cancel\n        ft_X = self._x_featurizer.transform(X)\n        ft_T0 = self._t_featurizer.transform(T0)\n        ft_T1 = self._t_featurizer.transform(T1)\n        Y0 = self._model_Y.predict(_add_ones(np.hstack([W, cross_product(ft_T0, ft_X)])))\n        Y1 = self._model_Y.predict(_add_ones(np.hstack([W, cross_product(ft_T1, ft_X)])))\n        return Y1 - Y0\n\n    def marginal_effect(self, T, X=None):\n        \"\"\"\n        Calculate the heterogeneous marginal effect ∂τ(·, ·).\n\n        The marginal effect is calculated around a base treatment\n        point conditional on a vector of features on a set of m test samples {Tᵢ, Xᵢ}.\n\n        Parameters\n        ----------\n        T: (m × dₜ) matrix\n            Base treatments for each sample\n        X: (m × dₓ) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        grad_tau: (m × d_y × dₜ) array\n            Heterogeneous marginal effects on each outcome for each sample\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        if X is None:\n            X = np.empty((shape(T)[0], 0))\n        assert shape(T)[0] == shape(X)[0]\n\n        ft_X = self._x_featurizer.transform(X)\n        n = shape(T)[0]\n        dT = self._dt_featurizer.transform(T if ndim(T) == 2 else reshape(T, (-1, 1)))\n        W = np.zeros((size(T), self._d_w))\n        # dT should be an n×dₜ×fₜ array (but if T was a vector, or if there is only one feature,\n        # dT may be only 2-dimensional)\n        # promote dT to 3D if necessary (e.g. if T was a vector)\n        if ndim(dT) < 3:\n            dT = reshape(dT, (n, 1, shape(dT)[1]))\n\n        # reshape ft_X and dT to allow cross product (result has shape n×dₜ×fₜ×f_x)\n        features = reshape(ft_X, (n, 1, 1, -1)) * reshape(dT, shape(dT) + (1,))\n        features = transpose(features, [0, 1, 3, 2])  # swap last two dims to match cross_product\n        features = reshape(features, (size(T), -1))\n        output = self._model_Y.predict(_add_zeros(np.hstack([W, features])))\n        output = reshape(output, shape(T) + shape(output)[1:])\n        if ndim(output) == 3:\n            return transpose(output, (0, 2, 1))  # transpose trailing T and Y dims\n        else:\n            return output\n"
  },
  {
    "path": "econml/metalearners/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._metalearners import (TLearner, SLearner, XLearner, DomainAdaptationLearner)\r\n\r\n__all__ = [\"TLearner\",\r\n           \"SLearner\",\r\n           \"XLearner\",\r\n           \"DomainAdaptationLearner\"]\r\n"
  },
  {
    "path": "econml/metalearners/_metalearners.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"\nMetalearners for heterogeneous treatment effects in the context of discrete treatments.\n\nFor more details on these CATE methods, see `<https://arxiv.org/abs/1706.03461>`_\n(Künzel S., Sekhon J., Bickel P., Yu B.) on Arxiv.\n\"\"\"\n\nimport numpy as np\nfrom .._cate_estimator import BaseCateEstimator, LinearCateEstimator, TreatmentExpansionMixin\nfrom sklearn import clone\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.utils import check_array\nfrom ..utilities import (check_inputs, check_models, broadcast_unit_treatments,\n                         one_hot_encoder, inverse_onehot, transpose)\nfrom .._shap import _shap_explain_model_cate\n\n\nclass TLearner(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"\n    Conditional mean regression estimator.\n\n    Parameters\n    ----------\n    models : outcome estimators for both control units and treatment units\n        It can be a single estimator applied to all the control and treatment units or a tuple/list of\n        estimators with one estimator per treatment (including control).\n        Must implement `fit` and `predict` methods.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    allow_missing: bool\n        Whether to allow missing values in X. If True, will need to supply models\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.metalearners import TLearner\n        from sklearn.linear_model import LinearRegression\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = TLearner(models=LinearRegression())\n        est.fit(y, T, X=X)\n\n    >>> est.effect(X[:3])\n    array([0.58547..., 1.82860..., 0.78379...])\n    \"\"\"\n\n    def __init__(self, *,\n                 models,\n                 categories='auto',\n                 allow_missing=False):\n        self.models = clone(models, safe=False)\n        self.categories = categories\n        self.allow_missing = allow_missing\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['X'] if self.allow_missing else []\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X, inference=None):\n        \"\"\"Build an instance of TLearner.\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, ) or (n, d_y)\n            Outcome(s) for the treatment policy.\n\n        T : array_like, shape (n, ) or (n, 1)\n            Treatment policy. Only binary treatments are accepted as input.\n            T will be flattened if shape is (n, 1).\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        inference : str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self : an instance of self.\n\n        \"\"\"\n        # Check inputs\n        Y, T, X, _ = check_inputs(Y, T, X, multi_output_T=False,\n                                  force_all_finite_X='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n        categories = self.categories\n        if categories != 'auto':\n            categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n        self.transformer = one_hot_encoder(categories=categories, drop='first')\n        T = self.transformer.fit_transform(T.reshape(-1, 1))\n        self._d_t = T.shape[1:]\n        T = inverse_onehot(T)\n        self.models = check_models(self.models, self._d_t[0] + 1)\n\n        for ind in range(self._d_t[0] + 1):\n            self.models[ind].fit(X[T == ind], Y[T == ind])\n\n    def const_marginal_effect(self, X):\n        \"\"\"Calculate the constant marignal treatment effect on a vector of features for each sample.\n\n        Parameters\n        ----------\n        X : matrix, shape (m × d_x)\n            Matrix of features for each sample.\n\n        Returns\n        -------\n        τ_hat : matrix, shape (m, d_y, d_t)\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n        \"\"\"\n        # Check inputs\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X = check_array(X, force_all_finite=force_all_finite)\n        taus = []\n        for ind in range(self._d_t[0]):\n            taus.append(self.models[ind + 1].predict(X) - self.models[0].predict(X))\n        taus = np.column_stack(taus).reshape((-1,) + self._d_t + self._d_y)  # shape as of m*d_t*d_y\n        if self._d_y:\n            taus = transpose(taus, (0, 2, 1))  # shape as of m*d_y*d_t\n        return taus\n\n\nclass SLearner(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"\n    Conditional mean regression estimator where the treatment assignment is taken as a feature in the ML model.\n\n    Parameters\n    ----------\n    overall_model : outcome estimator for all units\n        Model will be trained on X|T where '|' denotes concatenation.\n        Must implement `fit` and `predict` methods.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    allow_missing: bool\n        Whether to allow missing values in X. If True, will need to supply overall_model\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.metalearners import SLearner\n        from sklearn.ensemble import RandomForestRegressor\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = SLearner(overall_model=RandomForestRegressor())\n        est.fit(y, T, X=X)\n\n    >>> est.effect(X[:3])\n    array([0.23577..., 1.62784... , 0.45946...])\n    \"\"\"\n\n    def __init__(self, *,\n                 overall_model,\n                 categories='auto',\n                 allow_missing=False):\n        self.overall_model = clone(overall_model, safe=False)\n        self.categories = categories\n        self.allow_missing = allow_missing\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['X'] if self.allow_missing else []\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X=None, inference=None):\n        \"\"\"\n        Build an instance of SLearner.\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, ) or (n, d_y)\n            Outcome(s) for the treatment policy.\n\n        T : array_like, shape (n, ) or (n, 1)\n            Treatment policy. Only binary treatments are accepted as input.\n            T will be flattened if shape is (n, 1).\n\n        X : array_like, shape (n, d_x), optional\n            Feature vector that captures heterogeneity.\n\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self : an instance of self.\n        \"\"\"\n        # Check inputs\n        if X is None:\n            X = np.zeros((Y.shape[0], 1))\n        Y, T, X, _ = check_inputs(Y, T, X, multi_output_T=False,\n                                  force_all_finite_X='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n        categories = self.categories\n        if categories != 'auto':\n            categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n        self.transformer = one_hot_encoder(categories=categories, drop='first')\n        T = self.transformer.fit_transform(T.reshape(-1, 1))\n        self._d_t = (T.shape[1], )\n        # Note: unlike other Metalearners, we need the controls' encoded column for training\n        # Thus, we append the controls column before the one-hot-encoded T\n        # We might want to revisit, though, since it's linearly determined by the others\n        feat_arr = np.concatenate((X, 1 - np.sum(T, axis=1).reshape(-1, 1), T), axis=1)\n        self.overall_model.fit(feat_arr, Y)\n\n    def const_marginal_effect(self, X=None):\n        \"\"\"\n        Calculate the constant marginal treatment effect on a vector of features for each sample.\n\n        Parameters\n        ----------\n        X : matrix, shape (m × dₓ), optional\n            Matrix of features for each sample.\n\n        Returns\n        -------\n        τ_hat : matrix, shape (m, d_y, d_t)\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n        \"\"\"\n        # Check inputs\n        if X is None:\n            X = np.zeros((1, 1))\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X = check_array(X, force_all_finite=force_all_finite)\n        Xs, Ts = broadcast_unit_treatments(X, self._d_t[0] + 1)\n        feat_arr = np.concatenate((Xs, Ts), axis=1)\n        prediction = self.overall_model.predict(feat_arr).reshape((-1, self._d_t[0] + 1,) + self._d_y)\n        if self._d_y:\n            prediction = transpose(prediction, (0, 2, 1))\n            taus = (prediction - np.repeat(prediction[:, :, 0], self._d_t[0] + 1).reshape(prediction.shape))[:, :, 1:]\n        else:\n            taus = (prediction - np.repeat(prediction[:, 0], self._d_t[0] + 1).reshape(prediction.shape))[:, 1:]\n        return taus\n\n\nclass XLearner(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"\n    Meta-algorithm proposed by Kunzel et al.\n\n    Performs best in settings where the number of units in one treatment arm is much larger than others.\n\n    Parameters\n    ----------\n    models : outcome estimators for both control units and treatment units\n        It can be a single estimator applied to all the control and treatment units or a tuple/list of\n        estimators with one estimator per treatment (including control).\n        Must implement `fit` and `predict` methods.\n\n    cate_models : estimator for pseudo-treatment effects on control and treatments\n        It can be a single estimator applied to all the control and treatments or a tuple/list of\n        estimators with one estimator per treatment (including control).\n        If None, it will be same models as the outcome estimators.\n        Must implement `fit` and `predict` methods.\n\n    propensity_model : estimator for the propensity function\n        Must implement `fit` and `predict_proba` methods. The `fit` method must\n        be able to accept X and T, where T is a shape (n, ) array.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    allow_missing: bool\n        Whether to allow missing values in X. If True, will need to supply models, cate_models, and\n        propensity_model that can handle missing values.\n\n    Examples\n    --------\n    A simple example:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.metalearners import XLearner\n        from sklearn.linear_model import LinearRegression\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = XLearner(models=LinearRegression())\n        est.fit(y, T, X=X)\n\n    >>> est.effect(X[:3])\n    array([0.58547..., 1.82860..., 0.78379...])\n    \"\"\"\n\n    def __init__(self, *,\n                 models,\n                 cate_models=None,\n                 propensity_model=LogisticRegression(),\n                 categories='auto',\n                 allow_missing=False):\n        self.models = clone(models, safe=False)\n        self.cate_models = clone(cate_models, safe=False)\n        self.propensity_model = clone(propensity_model, safe=False)\n        self.categories = categories\n        self.allow_missing = allow_missing\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['X'] if self.allow_missing else []\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X, inference=None):\n        \"\"\"Build an instance of XLearner.\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, ) or (n, d_y)\n            Outcome(s) for the treatment policy.\n\n        T : array_like, shape (n, ) or (n, 1)\n            Treatment policy. Only binary treatments are accepted as input.\n            T will be flattened if shape is (n, 1).\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        inference : str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self : an instance of self.\n        \"\"\"\n        # Check inputs\n        Y, T, X, _ = check_inputs(Y, T, X, multi_output_T=False,\n                                  force_all_finite_X='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n        if Y.ndim == 2 and Y.shape[1] == 1:\n            Y = Y.flatten()\n        categories = self.categories\n        if categories != 'auto':\n            categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n        self.transformer = one_hot_encoder(categories=categories, drop='first')\n        T = self.transformer.fit_transform(T.reshape(-1, 1))\n        self._d_t = T.shape[1:]\n        T = inverse_onehot(T)\n        self.models = check_models(self.models, self._d_t[0] + 1)\n        if self.cate_models is None:\n            self.cate_models = [clone(model, safe=False) for model in self.models]\n        else:\n            self.cate_models = check_models(self.cate_models, self._d_t[0] + 1)\n        self.propensity_models = []\n        self.cate_treated_models = []\n        self.cate_controls_models = []\n\n        # Estimate response function\n        for ind in range(self._d_t[0] + 1):\n            self.models[ind].fit(X[T == ind], Y[T == ind])\n        for ind in range(self._d_t[0]):\n            self.cate_treated_models.append(clone(self.cate_models[ind + 1], safe=False))\n            self.cate_controls_models.append(clone(self.cate_models[0], safe=False))\n            self.propensity_models.append(clone(self.propensity_model, safe=False))\n            imputed_effect_on_controls = self.models[ind + 1].predict(X[T == 0]) - Y[T == 0]\n            imputed_effect_on_treated = Y[T == ind + 1] - self.models[0].predict(X[T == ind + 1])\n            self.cate_controls_models[ind].fit(X[T == 0], imputed_effect_on_controls)\n            self.cate_treated_models[ind].fit(X[T == ind + 1], imputed_effect_on_treated)\n            X_concat = np.concatenate((X[T == 0], X[T == ind + 1]), axis=0)\n            T_concat = np.concatenate((T[T == 0], T[T == ind + 1]), axis=0)\n            self.propensity_models[ind].fit(X_concat, T_concat)\n\n    def const_marginal_effect(self, X):\n        \"\"\"Calculate the constant marginal treatment effect on a vector of features for each sample.\n\n        Parameters\n        ----------\n        X : matrix, shape (m × dₓ)\n            Matrix of features for each sample.\n\n        Returns\n        -------\n        τ_hat : matrix, shape (m, d_y, d_t)\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n        \"\"\"\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X = check_array(X, force_all_finite=force_all_finite)\n        m = X.shape[0]\n        taus = []\n        for ind in range(self._d_t[0]):\n            propensity_scores = self.propensity_models[ind].predict_proba(X)[:, 1:]\n            tau_hat = propensity_scores * self.cate_controls_models[ind].predict(X).reshape(m, -1) \\\n                + (1 - propensity_scores) * self.cate_treated_models[ind].predict(X).reshape(m, -1)\n            taus.append(tau_hat)\n        taus = np.column_stack(taus).reshape((-1,) + self._d_t + self._d_y)  # shape as of m*d_t*d_y\n        if self._d_y:\n            taus = transpose(taus, (0, 2, 1))  # shape as of m*d_y*d_t\n        return taus\n\n\nclass DomainAdaptationLearner(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"\n    Meta-algorithm that uses domain adaptation techniques to account for selection bias among the treatment arms.\n\n    Parameters\n    ----------\n    models : outcome estimators for both control units and treatment units\n        It can be a single estimator applied to all the control and treatment units or a tuple/list of\n        estimators with one estimator per treatment (including control).\n        Must implement `fit` and `predict` methods.\n        The `fit` method must accept the `sample_weight` parameter.\n\n    final_models : estimators for pseudo-treatment effects for each treatment\n        It can be a single estimator applied to all the control and treatment units or a tuple/list of\n        estimators with ones estimator per treatments (excluding control).\n        Must implement `fit` and `predict` methods.\n\n    propensity_model : estimator for the propensity function\n        Must implement `fit` and `predict_proba` methods. The `fit` method must\n        be able to accept X and T, where T is a shape (n, 1) array.\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    allow_missing: bool\n        Whether to allow missing values in X. If True, will need to supply models, final_models, and\n        propensity_model that can handle missing values.\n\n    Examples\n    --------\n    A simple example:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        import scipy.special\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.metalearners import DomainAdaptationLearner\n        from sklearn.linear_model import LinearRegression\n\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        est = DomainAdaptationLearner(\n            models=LinearRegression(),\n            final_models=LinearRegression()\n        )\n        est.fit(y, T, X=X)\n\n    >>> est.effect(X[:3])\n    array([0.51237..., 1.99866..., 0.68552...])\n    \"\"\"\n\n    def __init__(self, *,\n                 models,\n                 final_models,\n                 propensity_model=LogisticRegression(),\n                 categories='auto',\n                 allow_missing=False):\n        self.models = clone(models, safe=False)\n        self.final_models = clone(final_models, safe=False)\n        self.propensity_model = clone(propensity_model, safe=False)\n        self.categories = categories\n        self.allow_missing = allow_missing\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['X'] if self.allow_missing else []\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X, inference=None):\n        \"\"\"Build an instance of DomainAdaptationLearner.\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, ) or (n, d_y)\n            Outcome(s) for the treatment policy.\n\n        T : array_like, shape (n, ) or (n, 1)\n            Treatment policy. Only binary treatments are accepted as input.\n            T will be flattened if shape is (n, 1).\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        inference : str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`)\n\n        Returns\n        -------\n        self : an instance of self.\n        \"\"\"\n        # Check inputs\n        Y, T, X, _ = check_inputs(Y, T, X, multi_output_T=False,\n                                  force_all_finite_X='allow-nan' if 'X' in self._gen_allowed_missing_vars() else True)\n        categories = self.categories\n        if categories != 'auto':\n            categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n        self.transformer = one_hot_encoder(categories=categories, drop='first')\n        T = self.transformer.fit_transform(T.reshape(-1, 1))\n        self._d_t = T.shape[1:]\n        T = inverse_onehot(T)\n        self.models = check_models(self.models, self._d_t[0] + 1)\n        self.final_models = check_models(self.final_models, self._d_t[0])\n        self.propensity_models = []\n        self.models_control = []\n        self.models_treated = []\n        for ind in range(self._d_t[0]):\n            self.models_control.append(clone(self.models[0], safe=False))\n            self.models_treated.append(clone(self.models[ind + 1], safe=False))\n            self.propensity_models.append(clone(self.propensity_model, safe=False))\n\n            X_concat = np.concatenate((X[T == 0], X[T == ind + 1]), axis=0)\n            T_concat = np.concatenate((T[T == 0], T[T == ind + 1]), axis=0)\n            self.propensity_models[ind].fit(X_concat, T_concat)\n            pro_scores = self.propensity_models[ind].predict_proba(X_concat)[:, 1]\n\n            # Train model on controls. Assign higher weight to units resembling\n            # treated units.\n            self._fit_weighted_pipeline(self.models_control[ind], X[T == 0], Y[T == 0],\n                                        sample_weight=pro_scores[T_concat == 0] / (1 - pro_scores[T_concat == 0]))\n            # Train model on the treated. Assign higher weight to units resembling\n            # control units.\n            self._fit_weighted_pipeline(self.models_treated[ind], X[T == ind + 1], Y[T == ind + 1],\n                                        sample_weight=(1 - pro_scores[T_concat == ind + 1]) /\n                                        pro_scores[T_concat == ind + 1])\n            imputed_effect_on_controls = self.models_treated[ind].predict(X[T == 0]) - Y[T == 0]\n            imputed_effect_on_treated = Y[T == ind + 1] - self.models_control[ind].predict(X[T == ind + 1])\n\n            imputed_effects_concat = np.concatenate((imputed_effect_on_controls, imputed_effect_on_treated), axis=0)\n            self.final_models[ind].fit(X_concat, imputed_effects_concat)\n\n    def const_marginal_effect(self, X):\n        \"\"\"Calculate the constant marginal treatment effect on a vector of features for each sample.\n\n        Parameters\n        ----------\n        X : matrix, shape (m × dₓ)\n            Matrix of features for each sample.\n\n        Returns\n        -------\n        τ_hat : matrix, shape (m, d_y, d_t)\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n        \"\"\"\n        if 'X' in self._gen_allowed_missing_vars():\n            force_all_finite = 'allow-nan'\n        else:\n            force_all_finite = False\n        X = check_array(X, force_all_finite=force_all_finite)\n        taus = []\n        for model in self.final_models:\n            taus.append(model.predict(X))\n        taus = np.column_stack(taus).reshape((-1,) + self._d_t + self._d_y)  # shape as of m*d_t*d_y\n        if self._d_y:\n            taus = transpose(taus, (0, 2, 1))  # shape as of m*d_y*d_t\n        return taus\n\n    def _fit_weighted_pipeline(self, model_instance, X, y, sample_weight):\n        if not isinstance(model_instance, Pipeline):\n            model_instance.fit(X, y, sample_weight)\n        else:\n            last_step_name = model_instance.steps[-1][0]\n            model_instance.fit(X, y, **{\"{0}__sample_weight\".format(last_step_name): sample_weight})\n\n    def shap_values(self, X, *, feature_names=None, treatment_names=None, output_names=None, background_samples=100):\n        return _shap_explain_model_cate(self.const_marginal_effect, self.final_models, X, self._d_t, self._d_y,\n                                        featurizer=None,\n                                        feature_names=feature_names,\n                                        treatment_names=treatment_names,\n                                        output_names=output_names,\n                                        input_names=self._input_names,\n                                        background_samples=background_samples)\n    shap_values.__doc__ = LinearCateEstimator.shap_values.__doc__\n"
  },
  {
    "path": "econml/orf/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"\r\nAn implementation of Orthogonal Random Forests [orf]_ and special case python classes.\r\n\r\nReferences\r\n----------\r\n.. [orf] M. Oprescu, V. Syrgkanis and Z. S. Wu.\r\n    Orthogonal Random Forest for Causal Inference.\r\n    *Proceedings of the 36th International Conference on Machine Learning*, 2019.\r\n    URL http://proceedings.mlr.press/v97/oprescu19a.html.\r\n\"\"\"\r\n\r\nfrom ._ortho_forest import DMLOrthoForest, DROrthoForest\r\n\r\n__all__ = [\"DMLOrthoForest\",\r\n           \"DROrthoForest\"]\r\n"
  },
  {
    "path": "econml/orf/_causal_tree.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Basic tree utilities and methods.\n\nClass :class:`CausalTree` is the base estimator for the Orthogonal Random Forest, whereas\nclass :class:`Node` represents the core unit of the :class:`CausalTree` class.\n\"\"\"\n\nimport numpy as np\nfrom sklearn.utils import check_random_state\n\n\nclass Node:\n    \"\"\"Building block of :class:`CausalTree` class.\n\n    Parameters\n    ----------\n    sample_inds : array_like, shape (n, )\n        Indices defining the sample that the split criterion will be computed on.\n\n    estimate_inds : array_like, shape (n, )\n        Indices defining the sample used for calculating balance criteria.\n\n    \"\"\"\n\n    def __init__(self, sample_inds, estimate_inds):\n        self.feature = -1\n        self.threshold = np.inf\n        self.split_sample_inds = sample_inds\n        self.est_sample_inds = estimate_inds\n        self.left = None\n        self.right = None\n\n    def find_tree_node(self, value):\n        \"\"\"\n        Recursively find and return the node of the causal tree that corresponds to the input feature vector.\n\n        Parameters\n        ----------\n        value : array_like, shape (d_x,)\n            Feature vector whose node we want to find.\n        \"\"\"\n        if self.feature == -1:\n            return self\n        elif value[self.feature] < self.threshold:\n            return self.left.find_tree_node(value)\n        else:\n            return self.right.find_tree_node(value)\n\n\nclass CausalTree:\n    \"\"\"Base class for growing an OrthoForest.\n\n    Parameters\n    ----------\n    nuisance_estimator : method\n        Method that estimates the nuisances at each node.\n        Takes in (Y, T, X, W) and returns nuisance estimates.\n\n    parameter_estimator : method\n        Method that estimates the parameter of interest at each node.\n        Takes in (Y, T, nuisance_estimates) and returns the parameter estimate.\n\n    moment_and_mean_gradient_estimator : method\n        Method that estimates the moments and mean moment gradient at each node.\n        Takes in (Y, T, X, W, nuisance_estimates, parameter_estimate) and returns\n        the moments and the mean moment gradient.\n\n    min_leaf_size : int, default 10\n        The minimum number of samples in a leaf.\n\n    max_depth : int, default 10\n        The maximum number of splits to be performed when expanding the tree.\n\n    n_proposals :  int, default 1000\n        Number of split proposals to be considered. A smaller number will improve\n        execution time, but might reduce accuracy of prediction.\n\n    balancedness_tol : float, default .3\n        Tolerance for balance between child nodes in a split. A smaller value\n        will result in an unbalanced tree prone to overfitting. Has to lie\n        between 0 and .5 as it is used to control both directions of imbalancedness.\n        With the default value we guarantee that each child of a split contains\n        at least 20% and at most 80% of the data of the parent node.\n\n    random_state : int, RandomState instance, or None, default None\n            If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n    \"\"\"\n\n    def __init__(self,\n                 min_leaf_size=10,\n                 max_depth=10,\n                 n_proposals=1000,\n                 balancedness_tol=.3,\n                 random_state=None):\n        # Causal tree parameters\n        self.min_leaf_size = min_leaf_size\n        self.max_depth = max_depth\n        self.balancedness_tol = balancedness_tol\n        self.n_proposals = n_proposals\n        self.random_state = check_random_state(random_state)\n        # Tree structure\n        self.tree = None\n\n    def create_splits(self, Y, T, X, W,\n                      nuisance_estimator, parameter_estimator, moment_and_mean_gradient_estimator):\n        \"\"\"\n        Recursively build a causal tree.\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, d_y)\n                Outcome for the treatment policy.\n\n        T : array_like, shape (n, d_t)\n            Treatment policy.\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        W : array_like, shape (n, d_w), optional\n            High-dimensional controls.\n        \"\"\"\n        # No need for a random split since the data is already\n        # a random subsample from the original input\n        n = Y.shape[0] // 2\n        self.tree = Node(np.arange(n), np.arange(n, Y.shape[0]))\n        # node list stores the nodes that are yet to be splitted\n        node_list = [(self.tree, 0)]\n\n        while len(node_list) > 0:\n            node, depth = node_list.pop()\n\n            # If by splitting we have too small leaves or if we reached the maximum number of splits we stop\n            if node.split_sample_inds.shape[0] // 2 >= self.min_leaf_size and depth < self.max_depth:\n\n                # Create local sample set\n                node_X = X[node.split_sample_inds]\n                node_W = W[node.split_sample_inds] if W is not None else None\n                node_T = T[node.split_sample_inds]\n                node_Y = Y[node.split_sample_inds]\n                node_X_estimate = X[node.est_sample_inds]\n                node_size_split = node_X.shape[0]\n                node_size_est = node_X_estimate.shape[0]\n\n                # Compute nuisance estimates for the current node\n                nuisance_estimates = nuisance_estimator(node_Y, node_T, node_X, node_W)\n                if nuisance_estimates is None:\n                    # Nuisance estimate cannot be calculated\n                    continue\n                # Estimate parameter for current node\n                node_estimate = parameter_estimator(node_Y, node_T, node_X, nuisance_estimates)\n                if node_estimate is None:\n                    # Node estimate cannot be calculated\n                    continue\n                # Calculate moments and gradient of moments for current data\n                moments, mean_grad = moment_and_mean_gradient_estimator(\n                    node_Y, node_T, node_X, node_W,\n                    nuisance_estimates,\n                    node_estimate)\n                # Calculate inverse gradient\n                try:\n                    inverse_grad = np.linalg.inv(mean_grad)\n                except np.linalg.LinAlgError as exc:\n                    if 'Singular matrix' in str(exc):\n                        # The gradient matrix is not invertible.\n                        # No good split can be found\n                        continue\n                    else:\n                        raise exc\n                # Calculate point-wise pseudo-outcomes rho\n                rho = np.matmul(moments, inverse_grad)\n\n                # a split is determined by a feature and a sample pair\n                # the number of possible splits is at most (number of features) * (number of node samples)\n                n_proposals = min(self.n_proposals, node_X.size)\n                #  we draw random such pairs by drawing a random number in {0, n_feats * n_node_samples}\n                random_pair = self.random_state.choice(node_X.size, size=n_proposals, replace=False)\n                # parse row and column of random pair\n                thr_inds, dim_proposals = np.unravel_index(random_pair, node_X.shape)\n                # the sample of the pair is the integer division of the random number with n_feats\n                thr_proposals = node_X[thr_inds, dim_proposals]\n\n                # calculate the binary indicator of whether sample i is on the left or the right\n                # side of proposed split j. So this is an n_samples x n_proposals matrix\n                side = node_X[:, dim_proposals] < thr_proposals\n                # calculate the number of samples on the left child for each proposed split\n                size_left = np.sum(side, axis=0)\n                # calculate the analogous binary indicator for the samples in the estimation set\n                side_est = node_X_estimate[:, dim_proposals] < thr_proposals\n                # calculate the number of estimation samples on the left child of each proposed split\n                size_est_left = np.sum(side_est, axis=0)\n\n                # find the upper and lower bound on the size of the left split for the split\n                # to be valid so as for the split to be balanced and leave at least min_leaf_size\n                # on each side.\n                lower_bound = max((.5 - self.balancedness_tol) * node_size_split, self.min_leaf_size)\n                upper_bound = min((.5 + self.balancedness_tol) * node_size_split, node_size_split - self.min_leaf_size)\n                valid_split = (lower_bound <= size_left)\n                valid_split &= (size_left <= upper_bound)\n\n                # similarly for the estimation sample set\n                lower_bound_est = max((.5 - self.balancedness_tol) * node_size_est, self.min_leaf_size)\n                upper_bound_est = min((.5 + self.balancedness_tol) * node_size_est, node_size_est - self.min_leaf_size)\n                valid_split &= (lower_bound_est <= size_est_left)\n                valid_split &= (size_est_left <= upper_bound_est)\n\n                # if there is no valid split then don't create any children\n                if ~np.any(valid_split):\n                    continue\n\n                # filter only the valid splits\n                valid_dim_proposals = dim_proposals[valid_split]\n                valid_thr_proposals = thr_proposals[valid_split]\n                valid_side = side[:, valid_split]\n                valid_size_left = size_left[valid_split]\n                valid_side_est = side_est[:, valid_split]\n\n                # calculate the average influence vector of the samples in the left child\n                left_diff = np.matmul(rho.T, valid_side)\n                # calculate the average influence vector of the samples in the right child\n                right_diff = np.matmul(rho.T, 1 - valid_side)\n                # take the square of each of the entries of the influence vectors and normalize\n                # by size of each child\n                left_score = left_diff**2 / valid_size_left.reshape(1, -1)\n                right_score = right_diff**2 / (node_size_split - valid_size_left).reshape(1, -1)\n                # calculate the vector score of each candidate split as the average of left and right\n                # influence vectors\n                spl_score = (right_score + left_score) / 2\n\n                # eta specifies how much weight to put on individual heterogeneity vs common heterogeneity\n                # across parameters. we give some benefit to individual heterogeneity factors for cases\n                # where there might be large discontinuities in some parameter as the conditioning set varies\n                eta = np.random.uniform(0.25, 1)\n                # calculate the scalar score of each split by aggregating across the vector of scores\n                split_scores = np.max(spl_score, axis=0) * eta + np.mean(spl_score, axis=0) * (1 - eta)\n\n                # Find split that minimizes criterion\n                best_split_ind = np.argmax(split_scores)\n                node.feature = valid_dim_proposals[best_split_ind]\n                node.threshold = valid_thr_proposals[best_split_ind]\n\n                # Create child nodes with corresponding subsamples\n                left_split_sample_inds = node.split_sample_inds[valid_side[:, best_split_ind]]\n                left_est_sample_inds = node.est_sample_inds[valid_side_est[:, best_split_ind]]\n                node.left = Node(left_split_sample_inds, left_est_sample_inds)\n                right_split_sample_inds = node.split_sample_inds[~valid_side[:, best_split_ind]]\n                right_est_sample_inds = node.est_sample_inds[~valid_side_est[:, best_split_ind]]\n                node.right = Node(right_split_sample_inds, right_est_sample_inds)\n\n                # add the created children to the list of not yet split nodes\n                node_list.append((node.left, depth + 1))\n                node_list.append((node.right, depth + 1))\n\n    def print_tree_rec(self, node):\n        if not node:\n            return\n        print(\"Node: ({}, {})\".format(node.feature, node.threshold))\n        print(\"Left Child\")\n        self.print_tree_rec(node.left)\n        print(\"Right Child\")\n        self.print_tree_rec(node.right)\n\n    def print_tree(self):\n        self.print_tree_rec(self.tree)\n\n    def find_split(self, value):\n        return self.tree.find_tree_node(value.astype(np.float64))\n"
  },
  {
    "path": "econml/orf/_ortho_forest.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Orthogonal Random Forest.\n\nOrthogonal Random Forest (ORF) is an algorithm for heterogenous treatment effect\nestimation. Orthogonal Random Forest combines orthogonalization,\na technique that effectively removes the confounding effect in two-stage estimation,\nwith generalized random forests, a flexible method for estimating treatment\neffect heterogeneity.\n\nThis file consists of classes that implement the following variants of the ORF method:\n\n- The :class:`DMLOrthoForest`, a two-forest approach for learning continuous or discrete treatment effects\n  using kernel two stage estimation.\n\n- The :class:`DROrthoForest`, a two-forest approach for learning discrete treatment effects\n  using kernel two stage estimation.\n\nFor more details on these methods, see our paper [Oprescu2019]_.\n\"\"\"\n\nimport numpy as np\nimport warnings\nfrom joblib import Parallel, delayed\nfrom sklearn import clone\nfrom scipy.stats import norm\nfrom sklearn.exceptions import NotFittedError\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, \\\n    LogisticRegressionCV\nfrom sklearn.model_selection import KFold, StratifiedKFold\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.utils import check_random_state, check_array, column_or_1d\nfrom ..sklearn_extensions.linear_model import WeightedLassoCVWrapper\nfrom .._cate_estimator import BaseCateEstimator, LinearCateEstimator, TreatmentExpansionMixin\nfrom ._causal_tree import CausalTree\nfrom ..inference import NormalInferenceResults\nfrom ..inference._inference import Inference\nfrom ..utilities import (one_hot_encoder, reshape_Y_T, MAX_RAND_SEED, check_inputs, cross_product, check_input_arrays,\n                         jacify_featurizer, _RegressionWrapper, ndim)\nfrom sklearn.model_selection import check_cv\n# TODO: consider working around relying on sklearn implementation details\nfrom ..sklearn_extensions.model_selection import _cross_val_predict\n\n\ndef _build_tree_in_parallel(tree, Y, T, X, W,\n                            nuisance_estimator, parameter_estimator, moment_and_mean_gradient_estimator):\n    # Create splits of causal tree\n    tree.create_splits(Y, T, X, W, nuisance_estimator, parameter_estimator, moment_and_mean_gradient_estimator)\n    return tree\n\n\ndef _fit_weighted_pipeline(model_instance, X, y, sample_weight):\n    weights_error_msg = (\n        \"Estimators of type {} do not accept weights. \"\n        \"Consider using the class WeightedModelWrapper from econml.utilities to build a weighted model.\"\n    )\n    expected_error_msg = \"fit() got an unexpected keyword argument 'sample_weight'\"\n    if not isinstance(model_instance, Pipeline):\n        try:\n            model_instance.fit(X, y, sample_weight=sample_weight)\n        except TypeError as e:\n            if expected_error_msg in str(e):\n                # Make sure the correct exception is being rethrown\n                raise TypeError(weights_error_msg.format(model_instance.__class__.__name__))\n            else:\n                raise e\n    else:\n        try:\n            last_step_name = model_instance.steps[-1][0]\n            model_instance.fit(X, y, **{\"{0}__sample_weight\".format(last_step_name): sample_weight})\n        except TypeError as e:\n            if expected_error_msg in str(e):\n                raise TypeError(weights_error_msg.format(model_instance.steps[-1][1].__class__.__name__))\n            else:\n                raise e\n\n\ndef _cross_fit(model_instance, X, y, split_indices, sample_weight=None, predict_func_name='predict'):\n    model_instance1 = clone(model_instance, safe=False)\n    model_instance2 = clone(model_instance, safe=False)\n    split_1, split_2 = split_indices\n    predict_func1 = getattr(model_instance1, predict_func_name)\n    predict_func2 = getattr(model_instance2, predict_func_name)\n    if sample_weight is None:\n        model_instance2.fit(X[split_2], y[split_2])\n        pred_1 = predict_func2(X[split_1])\n        model_instance1.fit(X[split_1], y[split_1])\n        pred_2 = predict_func1(X[split_2])\n    else:\n        _fit_weighted_pipeline(model_instance2, X[split_2], y[split_2], sample_weight[split_2])\n        pred_1 = predict_func2(X[split_1])\n        _fit_weighted_pipeline(model_instance1, X[split_1], y[split_1], sample_weight[split_1])\n        pred_2 = predict_func1(X[split_2])\n    # Must make sure indices are merged correctly\n    sorted_split_indices = np.argsort(np.concatenate(split_indices), kind='mergesort')\n    return np.concatenate((pred_1, pred_2))[sorted_split_indices]\n\n\ndef _group_predict(X, n_groups, predict_func):\n    \"\"\"\n    Use the predict function on the input argument augmented with each group indicator.\n\n    Used in DR moments, where we want to predict for each [X; t], for any value of the treatment t.\n    Returns an (X.shape[0], n_groups) matrix of predictions for each row of X and each t in range(n_groups).\n\n    Parameters\n    ----------\n    X : (n, m) array\n    n_groups : int\n    predict_func : fn\n\n    Returns\n    -------\n    pred : (n, n_groups) array\n    \"\"\"\n    group_pred = np.zeros((X.shape[0], n_groups))\n    zero_t = np.zeros((X.shape[0], n_groups))\n    for i in range(n_groups):\n        zero_t[:, i] = 1\n        group_pred[:, i] = predict_func(np.concatenate((X, zero_t), axis=1))\n        zero_t[:, i] = 0\n    # Convert rows to columns\n    return group_pred\n\n\ndef _group_cross_fit(model_instance, X, y, t, split_indices, sample_weight=None, predict_func_name='predict'):\n    # Require group assignment t to be one-hot-encoded\n    model_instance1 = clone(model_instance, safe=False)\n    model_instance2 = clone(model_instance, safe=False)\n    split_1, split_2 = split_indices\n    n_groups = t.shape[1]\n    predict_func1 = getattr(model_instance1, predict_func_name)\n    predict_func2 = getattr(model_instance2, predict_func_name)\n    Xt = np.concatenate((X, t), axis=1)\n    # Get predictions for the 2 splits\n    if sample_weight is None:\n        model_instance2.fit(Xt[split_2], y[split_2])\n        pred_1 = _group_predict(X[split_1], n_groups, predict_func2)\n        model_instance1.fit(Xt[split_1], y[split_1])\n        pred_2 = _group_predict(X[split_2], n_groups, predict_func1)\n    else:\n        _fit_weighted_pipeline(model_instance2, Xt[split_2], y[split_2], sample_weight[split_2])\n        pred_1 = _group_predict(X[split_1], n_groups, predict_func2)\n        _fit_weighted_pipeline(model_instance1, Xt[split_1], y[split_1], sample_weight[split_1])\n        pred_2 = _group_predict(X[split_2], n_groups, predict_func1)\n    # Must make sure indices are merged correctly\n    sorted_split_indices = np.argsort(np.concatenate(split_indices), kind='mergesort')\n    return np.concatenate((pred_1, pred_2))[sorted_split_indices]\n\n\ndef _pointwise_effect(X_single, Y, T, X, W, w_nonzero, split_inds, slice_weights_list,\n                      second_stage_nuisance_estimator, second_stage_parameter_estimator,\n                      moment_and_mean_gradient_estimator, slice_len, n_slices, n_trees,\n                      stderr=False):\n    \"\"\"Calculate the effect for a one data point with features X_single.\n\n    Parameters\n    ----------\n    X_single : array_like, shape (d_x, )\n        Feature vector that captures heterogeneity for one sample.\n\n    stderr : bool, default False\n        Whether to calculate the covariance matrix via bootstrap-of-little-bags.\n    \"\"\"\n    # Crossfitting\n    # Compute weighted nuisance estimates\n    nuisance_estimates = second_stage_nuisance_estimator(Y, T, X, W, w_nonzero, split_indices=split_inds)\n    parameter_estimate = second_stage_parameter_estimator(Y, T, X, nuisance_estimates, w_nonzero, X_single)\n    # -------------------------------------------------------------------------------\n    # Calculate the covariance matrix corresponding to the BLB inference\n    #\n    # 1. Calculate the moments and gradient of the training data w.r.t the test point\n    # 2. Calculate the weighted moments for each tree slice to create a matrix\n    #    U = (n_slices, n_T). The V = (U x grad^{-1}) matrix represents the deviation\n    #    in that slice from the overall parameter estimate.\n    # 3. Calculate the covariance matrix (V.T x V) / n_slices\n    # -------------------------------------------------------------------------------\n    if stderr:\n        moments, mean_grad = moment_and_mean_gradient_estimator(Y, T, X, W, nuisance_estimates,\n                                                                parameter_estimate)\n        # Calclulate covariance matrix through BLB\n        slice_weighted_moment_one = []\n        slice_weighted_moment_two = []\n        for slice_weights_one, slice_weights_two in slice_weights_list:\n            slice_weighted_moment_one.append(\n                np.average(moments[:len(split_inds[0])], axis=0, weights=slice_weights_one)\n            )\n            slice_weighted_moment_two.append(\n                np.average(moments[len(split_inds[0]):], axis=0, weights=slice_weights_two)\n            )\n        U = np.vstack(slice_weighted_moment_one + slice_weighted_moment_two)\n        inverse_grad = np.linalg.inv(mean_grad)\n        cov_mat = inverse_grad.T @ U.T @ U @ inverse_grad / (2 * n_slices)\n        return parameter_estimate, cov_mat\n    return parameter_estimate\n\n\nclass BaseOrthoForest(TreatmentExpansionMixin, LinearCateEstimator):\n    \"\"\"Base class for the :class:`DMLOrthoForest` and :class:`DROrthoForest`.\"\"\"\n\n    def __init__(self,\n                 nuisance_estimator,\n                 second_stage_nuisance_estimator,\n                 parameter_estimator,\n                 second_stage_parameter_estimator,\n                 moment_and_mean_gradient_estimator,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 n_trees=500,\n                 min_leaf_size=10, max_depth=10,\n                 subsample_ratio=0.25,\n                 bootstrap=False,\n                 n_jobs=-1,\n                 backend='loky',\n                 verbose=3,\n                 batch_size='auto',\n                 random_state=None,\n                 allow_missing=False):\n        # Estimators\n        self.nuisance_estimator = nuisance_estimator\n        self.second_stage_nuisance_estimator = second_stage_nuisance_estimator\n        self.parameter_estimator = parameter_estimator\n        self.second_stage_parameter_estimator = second_stage_parameter_estimator\n        self.moment_and_mean_gradient_estimator = moment_and_mean_gradient_estimator\n        # OrthoForest parameters\n        self.n_trees = n_trees\n        self.min_leaf_size = min_leaf_size\n        self.max_depth = max_depth\n        self.bootstrap = bootstrap\n        self.subsample_ratio = subsample_ratio\n        self.n_jobs = n_jobs\n        self.random_state = check_random_state(random_state)\n        # Sub-forests\n        self.forest_one_trees = None\n        self.forest_two_trees = None\n        self.forest_one_subsample_ind = None\n        self.forest_two_subsample_ind = None\n        # Auxiliary attributes\n        self.n_slices = int(np.ceil((self.n_trees)**(1 / 2)))\n        self.slice_len = int(np.ceil(self.n_trees / self.n_slices))\n        # Fit check\n        self.model_is_fitted = False\n        self.discrete_treatment = discrete_treatment\n        self.treatment_featurizer = treatment_featurizer\n        self.backend = backend\n        self.verbose = verbose\n        self.batch_size = batch_size\n        self.categories = categories\n        self.allow_missing = allow_missing\n        super().__init__()\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    @BaseCateEstimator._wrap_fit\n    def fit(self, Y, T, *, X, W=None, inference='auto'):\n        \"\"\"Build an orthogonal random forest from a training set (Y, T, X, W).\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, )\n            Outcome for the treatment policy.\n\n        T : array_like, shape (n, d_t)\n            Treatment policy.\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        W : array_like, shape (n, d_w), optional\n            High-dimensional controls.\n\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'blb' (or an instance of :class:`BLBInference`)\n\n        Returns\n        -------\n        self: an instance of self.\n        \"\"\"\n        Y, T, X, W = check_inputs(Y, T, X, W, multi_output_Y=False,\n                                  force_all_finite_W='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n        shuffled_inidces = self.random_state.permutation(X.shape[0])\n        n = X.shape[0] // 2\n        self.Y_one = Y[shuffled_inidces[:n]]\n        self.Y_two = Y[shuffled_inidces[n:]]\n        self.T_one = T[shuffled_inidces[:n]]\n        self.T_two = T[shuffled_inidces[n:]]\n        self.X_one = X[shuffled_inidces[:n]]\n        self.X_two = X[shuffled_inidces[n:]]\n        if W is not None:\n            self.W_one = W[shuffled_inidces[:n]]\n            self.W_two = W[shuffled_inidces[n:]]\n        else:\n            self.W_one = None\n            self.W_two = None\n        self.forest_one_subsample_ind, self.forest_one_trees = self._fit_forest(Y=self.Y_one,\n                                                                                T=self.T_one,\n                                                                                X=self.X_one,\n                                                                                W=self.W_one)\n        self.forest_two_subsample_ind, self.forest_two_trees = self._fit_forest(Y=self.Y_two,\n                                                                                T=self.T_two,\n                                                                                X=self.X_two,\n                                                                                W=self.W_two)\n        self.model_is_fitted = True\n        return self\n\n    def const_marginal_effect(self, X):\n        \"\"\"Calculate the constant marginal CATE θ(·) conditional on a vector of features X.\n\n        Parameters\n        ----------\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        Returns\n        -------\n        Theta : matrix , shape (n, d_f_t) where d_f_t is \\\n            the dimension of the featurized treatment. If treatment_featurizer is None, d_f_t = d_t\n            Constant marginal CATE of each treatment for each sample.\n        \"\"\"\n        # TODO: Check performance\n        return np.asarray(self._predict(X))\n\n    def _predict(self, X, stderr=False):\n        if not self.model_is_fitted:\n            raise NotFittedError('This {0} instance is not fitted yet.'.format(self.__class__.__name__))\n        X = check_array(X)\n        results = Parallel(n_jobs=self.n_jobs, backend=self.backend,\n                           batch_size=self.batch_size, verbose=self.verbose)(\n            delayed(_pointwise_effect)(X_single, *self._pw_effect_inputs(X_single, stderr=stderr),\n                                       self.second_stage_nuisance_estimator, self.second_stage_parameter_estimator,\n                                       self.moment_and_mean_gradient_estimator, self.slice_len, self.n_slices,\n                                       self.n_trees,\n                                       stderr=stderr) for X_single in X)\n        return results\n\n    def _pw_effect_inputs(self, X_single, stderr=False):\n        w1, w2 = self._get_weights(X_single)\n        mask_w1 = (w1 != 0)\n        mask_w2 = (w2 != 0)\n        w1_nonzero = w1[mask_w1]\n        w2_nonzero = w2[mask_w2]\n        # Must normalize weights\n        w_nonzero = np.concatenate((w1_nonzero, w2_nonzero))\n        split_inds = (np.arange(len(w1_nonzero)), np.arange(len(w1_nonzero), len(w_nonzero)))\n        slice_weights_list = []\n        if stderr:\n            slices = [\n                (it * self.slice_len, min((it + 1) * self.slice_len, self.n_trees)) for it in range(self.n_slices)\n            ]\n            for slice_it in slices:\n                slice_weights_one, slice_weights_two = self._get_weights(X_single, tree_slice=slice_it)\n                slice_weights_list.append((slice_weights_one[mask_w1], slice_weights_two[mask_w2]))\n        W_none = self.W_one is None\n        return np.concatenate((self.Y_one[mask_w1], self.Y_two[mask_w2])), \\\n            np.concatenate((self.T_one[mask_w1], self.T_two[mask_w2])), \\\n            np.concatenate((self.X_one[mask_w1], self.X_two[mask_w2])), \\\n            np.concatenate((self.W_one[mask_w1], self.W_two[mask_w2])\n                           ) if not W_none else None, \\\n            w_nonzero, \\\n            split_inds, slice_weights_list\n\n    def _get_inference_options(self):\n        # Override the CATE inference options\n        # Add blb inference to parent's options\n        options = super()._get_inference_options()\n        options.update(blb=BLBInference)\n        options.update(auto=BLBInference)\n        return options\n\n    def _fit_forest(self, Y, T, X, W=None):\n        # Generate subsample indices\n        subsample_ind = self._get_blb_indices(X)\n        # Build trees in parallel\n        trees = [CausalTree(self.min_leaf_size, self.max_depth, 1000, .4,\n                            check_random_state(self.random_state.randint(MAX_RAND_SEED)))\n                 for _ in range(len(subsample_ind))]\n        return subsample_ind, Parallel(n_jobs=self.n_jobs, backend=self.backend,\n                                       batch_size=self.batch_size, verbose=self.verbose, max_nbytes=None)(\n            delayed(_build_tree_in_parallel)(tree,\n                                             Y[s], T[s], X[s], W[s] if W is not None else None,\n                                             self.nuisance_estimator,\n                                             self.parameter_estimator,\n                                             self.moment_and_mean_gradient_estimator)\n            for s, tree in zip(subsample_ind, trees))\n\n    def _get_weights(self, X_single, tree_slice=None):\n        \"\"\"Calculate weights for a single input feature vector over a subset of trees.\n\n        The subset of trees is defined by the `tree_slice` tuple (start, end).\n        The (start, end) tuple includes all trees from `start` to `end`-1.\n        \"\"\"\n        w1 = np.zeros(self.Y_one.shape[0])\n        w2 = np.zeros(self.Y_two.shape[0])\n        if tree_slice is None:\n            tree_range = range(self.n_trees)\n        else:\n            tree_range = range(*tree_slice)\n        for t in tree_range:\n            leaf = self.forest_one_trees[t].find_split(X_single)\n            weight_indexes = self.forest_one_subsample_ind[t][leaf.est_sample_inds]\n            leaf_weight = 1 / len(leaf.est_sample_inds)\n            if self.bootstrap:\n                # Bootstraping has repetitions in tree sample\n                unique, counts = np.unique(weight_indexes, return_counts=True)\n                w1[unique] += leaf_weight * counts\n            else:\n                w1[weight_indexes] += leaf_weight\n        for t in tree_range:\n            leaf = self.forest_two_trees[t].find_split(X_single)\n            # Similar for `a` weights\n            weight_indexes = self.forest_two_subsample_ind[t][leaf.est_sample_inds]\n            leaf_weight = 1 / len(leaf.est_sample_inds)\n            if self.bootstrap:\n                # Bootstraping has repetitions in tree sample\n                unique, counts = np.unique(weight_indexes, return_counts=True)\n                w2[unique] += leaf_weight * counts\n            else:\n                w2[weight_indexes] += leaf_weight\n        return (w1 / len(tree_range), w2 / len(tree_range))\n\n    def _get_blb_indices(self, X):\n        \"\"\"Get  data indices for every tree under the little bags split.\"\"\"\n        # Define subsample size\n        subsample_size = X.shape[0] // 2\n        if not self.bootstrap:\n            if self.subsample_ratio > 1.0:\n                # Safety check\n                warnings.warn(\"The argument 'subsample_ratio' must be between 0.0 and 1.0, \" +\n                              \"however a value of {} was provided. The 'subsample_ratio' will be changed to 1.0.\")\n                self.subsample_ratio = 1.0\n            subsample_size = int(self.subsample_ratio * subsample_size)\n        subsample_ind = []\n        # Draw points to create little bags\n        for it in range(self.n_slices):\n            half_sample_inds = self.random_state.choice(\n                X.shape[0], X.shape[0] // 2, replace=False)\n            for _ in np.arange(it * self.slice_len, min((it + 1) * self.slice_len, self.n_trees)):\n                subsample_ind.append(half_sample_inds[self.random_state.choice(\n                    X.shape[0] // 2, subsample_size, replace=self.bootstrap)])\n        return np.asarray(subsample_ind)\n\n\nclass DMLOrthoForest(BaseOrthoForest):\n    \"\"\"OrthoForest for continuous or discrete treatments using the DML residual on residual moment function.\n\n    A two-forest approach for learning heterogeneous treatment effects using\n    kernel two stage estimation.\n\n    Parameters\n    ----------\n    n_trees : int, default 500\n        Number of causal estimators in the forest.\n\n    min_leaf_size : int, default 10\n        The minimum number of samples in a leaf.\n\n    max_depth : int, default 10\n        The maximum number of splits to be performed when expanding the tree.\n\n    subsample_ratio : float, default 0.7\n        The ratio of the total sample to be used when training a causal tree.\n        Values greater than 1.0 will be considered equal to 1.0.\n        Parameter is ignored when bootstrap=True.\n\n    bootstrap : bool, default False\n        Whether to use bootstrap subsampling.\n\n    lambda_reg : float, default 0.01\n        The regularization coefficient in the ell_2 penalty imposed on the\n        locally linear part of the second stage fit. This is not applied to\n        the local intercept, only to the coefficient of the linear component.\n\n    model_T : estimator, default sklearn.linear_model.LassoCV(cv=3)\n        The estimator for residualizing the continuous treatment at each leaf.\n        Must implement `fit` and `predict` methods.\n\n    model_Y :  estimator, default sklearn.linear_model.LassoCV(cv=3)\n        The estimator for residualizing the outcome at each leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_T_final : estimator, optional\n        The estimator for residualizing the treatment at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to ``None``, it defaults to the\n        value of `model_T` parameter.\n\n    model_Y_final : estimator, optional\n        The estimator for residualizing the outcome at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to ``None``, it defaults to the\n        value of `model_Y` parameter.\n\n    global_residualization : bool, default False\n        Whether to perform a prior residualization of Y and T using the model_Y_final and model_T_final\n        estimators, or whether to perform locally weighted residualization at each target point.\n        Global residualization is computationally less intensive, but could lose some statistical\n        power, especially when W is not None.\n\n    global_res_cv : int, cross-validation generator or an iterable, default 2\n        The specification of the CV splitter to be used for cross-fitting, when constructing\n        the global residuals of Y and T.\n\n    discrete_treatment : bool, default False\n        Whether the treatment should be treated as categorical. If True, then the treatment T is\n        one-hot-encoded and the model_T is treated as a classifier that must have a predict_proba\n        method.\n\n    treatment_featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite treatment in the final CATE regression.\n        The final CATE will be trained on the outcome of featurizer.fit_transform(T).\n        If featurizer=None, then CATE is trained on T.\n\n    categories : array_like or 'auto', default 'auto'\n        A list of pre-specified treatment categories. If 'auto' then categories are automatically\n        recognized at fit time.\n\n    n_jobs : int, default -1\n        The number of jobs to run in parallel for both :meth:`fit` and :meth:`effect`.\n        ``-1`` means using all processors. Since OrthoForest methods are\n        computationally heavy, it is recommended to set `n_jobs` to -1.\n\n    backend : 'threading' or 'loky', default 'loky'\n        What backend should be used for parallelization with the joblib library.\n\n    verbose : int, default 3\n        Verbosity level\n\n    batch_size : int or 'auto', default 'auto'\n        Batch_size of jobs for parallelism\n\n    random_state : int, RandomState instance, or None, default None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance_models\n        that can handle missing values.\n\n    \"\"\"\n\n    def __init__(self, *,\n                 n_trees=500,\n                 min_leaf_size=10, max_depth=10,\n                 subsample_ratio=0.7,\n                 bootstrap=False,\n                 lambda_reg=0.01,\n                 model_T='auto',\n                 model_Y=WeightedLassoCVWrapper(cv=3),\n                 model_T_final=None,\n                 model_Y_final=None,\n                 global_residualization=False,\n                 global_res_cv=2,\n                 discrete_treatment=False,\n                 treatment_featurizer=None,\n                 categories='auto',\n                 n_jobs=-1,\n                 backend='loky',\n                 verbose=3,\n                 batch_size='auto',\n                 random_state=None,\n                 allow_missing=False):\n        # Copy and/or define models\n        self.lambda_reg = lambda_reg\n        if model_T == 'auto':\n            if discrete_treatment:\n                model_T = LogisticRegressionCV(cv=3)\n            else:\n                model_T = WeightedLassoCVWrapper(cv=3)\n        self.model_T = model_T\n        self.model_Y = model_Y\n        self.model_T_final = model_T_final\n        self.model_Y_final = model_Y_final\n        # TODO: ideally the below private attribute logic should be in .fit but is needed in init\n        # for nuisance estimator generation for parent class\n        # should refactor later\n        self._model_T = clone(model_T, safe=False)\n        self._model_Y = clone(model_Y, safe=False)\n        if self.model_T_final is None:\n            self._model_T_final = clone(self.model_T, safe=False)\n        else:\n            self._model_T_final = clone(self.model_T_final, safe=False)\n        if self.model_Y_final is None:\n            self._model_Y_final = clone(self.model_Y, safe=False)\n        else:\n            self._model_Y_final = clone(self.model_Y_final, safe=False)\n        if discrete_treatment:\n            self._model_T = _RegressionWrapper(self._model_T)\n            self._model_T_final = _RegressionWrapper(self._model_T_final)\n        self.random_state = check_random_state(random_state)\n        self.global_residualization = global_residualization\n        self.global_res_cv = global_res_cv\n        self.treatment_featurizer = treatment_featurizer\n        # Define nuisance estimators\n        nuisance_estimator = _DMLOrthoForest_nuisance_estimator_generator(\n            self._model_T, self._model_Y, self.random_state, second_stage=False,\n            global_residualization=self.global_residualization, discrete_treatment=discrete_treatment)\n        second_stage_nuisance_estimator = _DMLOrthoForest_nuisance_estimator_generator(\n            self._model_T_final, self._model_Y_final, self.random_state, second_stage=True,\n            global_residualization=self.global_residualization, discrete_treatment=discrete_treatment)\n        # Define parameter estimators\n        parameter_estimator = _DMLOrthoForest_parameter_estimator_func\n        second_stage_parameter_estimator = _DMLOrthoForest_second_stage_parameter_estimator_gen(\n            self.lambda_reg)\n        # Define\n        moment_and_mean_gradient_estimator = _DMLOrthoForest_moment_and_mean_gradient_estimator_func\n\n        super().__init__(\n            nuisance_estimator,\n            second_stage_nuisance_estimator,\n            parameter_estimator,\n            second_stage_parameter_estimator,\n            moment_and_mean_gradient_estimator,\n            n_trees=n_trees,\n            min_leaf_size=min_leaf_size,\n            max_depth=max_depth,\n            subsample_ratio=subsample_ratio,\n            bootstrap=bootstrap,\n            n_jobs=n_jobs,\n            backend=backend,\n            verbose=verbose,\n            batch_size=batch_size,\n            discrete_treatment=discrete_treatment,\n            treatment_featurizer=treatment_featurizer,\n            categories=categories,\n            random_state=self.random_state,\n            allow_missing=allow_missing)\n\n    def _combine(self, X, W):\n        if X is None:\n            return W\n        if W is None:\n            return X\n        return np.hstack([X, W])\n\n    # Need to redefine fit here for auto inference to work due to a quirk in how\n    # wrap_fit is defined\n    def fit(self, Y, T, *, X, W=None, inference='auto'):\n        \"\"\"Build an orthogonal random forest from a training set (Y, T, X, W).\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, )\n            Outcome for the treatment policy.\n\n        T : array_like, shape (n, d_t)\n            Treatment policy.\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        W : array_like, shape (n, d_w), optional\n            High-dimensional controls.\n\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'blb' (or an instance of :class:`BLBInference`)\n\n        Returns\n        -------\n        self: an instance of self.\n        \"\"\"\n        self._set_input_names(Y, T, X, set_flag=True)\n        Y, T, X, W = check_inputs(\n            Y, T, X, W, force_all_finite_W='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n        assert not (self.discrete_treatment and self.treatment_featurizer), \"Treatment featurization \" \\\n            \"is not supported when treatment is discrete\"\n\n        if self.discrete_treatment:\n            categories = self.categories\n            if categories != 'auto':\n                categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n            self.transformer = one_hot_encoder(categories=categories, drop='first')\n            d_t_in = T.shape[1:]\n            T = self.transformer.fit_transform(T.reshape(-1, 1))\n            self._d_t = T.shape[1:]\n        elif self.treatment_featurizer:\n            self._original_treatment_featurizer = clone(self.treatment_featurizer, safe=False)\n            self.transformer = jacify_featurizer(self.treatment_featurizer)\n            d_t_in = T.shape[1:]\n            T = self.transformer.fit_transform(T)\n            self._d_t = np.shape(T)[1:]\n\n        if self.global_residualization:\n            cv = check_cv(self.global_res_cv, y=T, classifier=self.discrete_treatment)\n            cv = list(cv.split(X=X, y=T))\n            Y = Y - _cross_val_predict(self._model_Y_final, self._combine(X, W), Y, cv=cv, safe=False).reshape(Y.shape)\n            T = T - _cross_val_predict(self._model_T_final, self._combine(X, W), T, cv=cv, safe=False).reshape(T.shape)\n\n        super().fit(Y, T, X=X, W=W, inference=inference)\n\n        # weirdness of wrap_fit. We need to store d_t_in. But because wrap_fit decorates the parent\n        # fit, we need to set explicitly d_t_in here after super fit is called.\n        if self.discrete_treatment or self.treatment_featurizer:\n            self._d_t_in = d_t_in\n        return self\n\n    def const_marginal_effect(self, X):\n        X = check_array(X)\n        # Override to flatten output if T is flat\n        effects = super().const_marginal_effect(X=X)\n        return effects.reshape((-1,) + self._d_y + self._d_t)\n    const_marginal_effect.__doc__ = BaseOrthoForest.const_marginal_effect.__doc__\n\n\nclass _DMLOrthoForest_nuisance_estimator_generator:\n    \"\"\"Generate nuissance estimator given model inputs from the class.\"\"\"\n\n    def __init__(self, model_T, model_Y, random_state=None, second_stage=True,\n                 global_residualization=False, discrete_treatment=False):\n        self.model_T = model_T\n        self.model_Y = model_Y\n        self.random_state = random_state\n        self.second_stage = second_stage\n        self.global_residualization = global_residualization\n        self.discrete_treatment = discrete_treatment\n\n    def __call__(self, Y, T, X, W, sample_weight=None, split_indices=None):\n        if self.global_residualization:\n            return 0\n        # Check that all discrete treatments are represented\n        if (self.discrete_treatment and\n            len(np.unique(T @ np.arange(1, T.shape[1] + 1))) < T.shape[1] + 1):\n                return None\n        # Nuissance estimates evaluated with cross-fitting\n        this_random_state = check_random_state(self.random_state)\n        if (split_indices is None) and self.second_stage:\n            if self.discrete_treatment:\n                # Define 2-fold iterator\n                kfold_it = StratifiedKFold(n_splits=2, shuffle=True, random_state=this_random_state).split(X, T)\n                # Check if there is only one example of some class\n                with warnings.catch_warnings():\n                    warnings.filterwarnings('error')\n                    try:\n                        split_indices = list(kfold_it)[0]\n                    except Warning as warn:\n                        msg = str(warn)\n                        if \"The least populated class in y has only 1 members\" in msg:\n                            return None\n            else:\n                # Define 2-fold iterator\n                kfold_it = KFold(n_splits=2, shuffle=True, random_state=this_random_state).split(X)\n                split_indices = list(kfold_it)[0]\n        if W is not None:\n            X_tilde = np.concatenate((X, W), axis=1)\n        else:\n            X_tilde = X\n\n        try:\n            if self.second_stage:\n                T_hat = _cross_fit(self.model_T, X_tilde, T, split_indices, sample_weight=sample_weight)\n                Y_hat = _cross_fit(self.model_Y, X_tilde, Y, split_indices, sample_weight=sample_weight)\n            else:\n                # need safe=False when cloning for WeightedModelWrapper\n                T_hat = clone(self.model_T, safe=False).fit(X_tilde, T).predict(X_tilde)\n                Y_hat = clone(self.model_Y, safe=False).fit(X_tilde, Y).predict(X_tilde)\n        except ValueError as exc:\n            raise ValueError(\"The original error: {0}\".format(str(exc)) +\n                             \" This might be caused by too few sample in the tree leafs.\" +\n                             \" Try increasing the min_leaf_size.\")\n        return Y_hat, T_hat\n\n\ndef _DMLOrthoForest_parameter_estimator_func(Y, T, X,\n                                             nuisance_estimates,\n                                             sample_weight=None):\n    \"\"\"Calculate the parameter of interest for points given by (Y, T) and corresponding nuisance estimates.\"\"\"\n    # Compute residuals\n    Y_res, T_res = _DMLOrthoForest_get_conforming_residuals(Y, T, nuisance_estimates)\n    # Compute coefficient by OLS on residuals\n    param_estimate = LinearRegression(fit_intercept=False).fit(\n        T_res, Y_res, sample_weight=sample_weight\n    ).coef_\n    # Parameter returned by LinearRegression is (d_T, )\n    return param_estimate\n\n\nclass _DMLOrthoForest_second_stage_parameter_estimator_gen:\n    \"\"\"\n    Generate the second stage parameter estimation function.\n\n    We fit a local linear function as opposed to a local constant function. We also penalize\n    the linear part to reduce variance.\n    \"\"\"\n\n    def __init__(self, lambda_reg):\n        self.lambda_reg = lambda_reg\n\n    def __call__(self, Y, T, X,\n                 nuisance_estimates,\n                 sample_weight,\n                 X_single):\n        \"\"\"Calculate the parameter of interest for points given by (Y, T) and corresponding nuisance estimates.\n\n        The parameter is calculated around the feature vector given by `X_single`. `X_single` can be used to do\n        local corrections on a preliminary parameter estimate.\n        \"\"\"\n        # Compute residuals\n        Y_res, T_res = _DMLOrthoForest_get_conforming_residuals(Y, T, nuisance_estimates)\n        X_aug = np.hstack([np.ones((X.shape[0], 1)), X])\n        XT_res = cross_product(T_res, X_aug)\n        # Compute coefficient by OLS on residuals\n        if sample_weight is not None:\n            weighted_XT_res = sample_weight.reshape(-1, 1) * XT_res\n        else:\n            weighted_XT_res = XT_res / XT_res.shape[0]\n        # ell_2 regularization\n        diagonal = np.ones(XT_res.shape[1])\n        diagonal[:T_res.shape[1]] = 0\n        reg = self.lambda_reg * np.diag(diagonal)\n        # Ridge regression estimate\n        linear_coef_estimate = np.linalg.lstsq(np.matmul(weighted_XT_res.T, XT_res) + reg,\n                                               np.matmul(weighted_XT_res.T, Y_res.reshape(-1, 1)),\n                                               rcond=None)[0].flatten()\n        X_aug = np.append([1], X_single)\n        linear_coef_estimate = linear_coef_estimate.reshape((X_aug.shape[0], -1)).T\n        # Parameter returned is of shape (d_T, )\n        return np.dot(linear_coef_estimate, X_aug)\n\n\ndef _DMLOrthoForest_moment_and_mean_gradient_estimator_func(Y, T, X, W,\n                                                            nuisance_estimates,\n                                                            parameter_estimate):\n    \"\"\"Calculate the moments and mean gradient at points given by (Y, T, X, W).\"\"\"\n    # Return moments and gradients\n    # Compute residuals\n    Y_res, T_res = _DMLOrthoForest_get_conforming_residuals(Y, T, nuisance_estimates)\n    # Compute moments\n    # Moments shape is (n, d_T)\n    moments = (Y_res - np.matmul(T_res, parameter_estimate)).reshape(-1, 1) * T_res\n    # Compute moment gradients\n    mean_gradient = - np.matmul(T_res.T, T_res) / T_res.shape[0]\n    return moments, mean_gradient\n\n\ndef _DMLOrthoForest_get_conforming_residuals(Y, T, nuisance_estimates):\n    if nuisance_estimates == 0:\n        return reshape_Y_T(Y, T)\n    # returns shape-conforming residuals\n    Y_hat, T_hat = reshape_Y_T(*nuisance_estimates)\n    Y, T = reshape_Y_T(Y, T)\n    Y_res, T_res = Y - Y_hat, T - T_hat\n    return Y_res, T_res\n\n\nclass DROrthoForest(BaseOrthoForest):\n    \"\"\"\n    OrthoForest for discrete treatments using the doubly robust moment function.\n\n    A two-forest approach for learning heterogeneous treatment effects using\n    kernel two stage estimation.\n\n    Parameters\n    ----------\n    n_trees : int, default 500\n        Number of causal estimators in the forest.\n\n    min_leaf_size : int, default 10\n        The minimum number of samples in a leaf.\n\n    max_depth : int, default 10\n        The maximum number of splits to be performed when expanding the tree.\n\n    subsample_ratio : float, default 0.7\n        The ratio of the total sample to be used when training a causal tree.\n        Values greater than 1.0 will be considered equal to 1.0.\n        Parameter is ignored when bootstrap=True.\n\n    bootstrap : bool, default False\n        Whether to use bootstrap subsampling.\n\n    lambda_reg : float, default 0.01\n        The regularization coefficient in the ell_2 penalty imposed on the\n        locally linear part of the second stage fit. This is not applied to\n        the local intercept, only to the coefficient of the linear component.\n\n    propensity_model : estimator, default sklearn.linear_model.LogisticRegression(penalty='l1', \\\n                                                                                  solver='saga', \\\n                                                                                  multi_class='auto')\n        Model for estimating propensity of treatment at each leaf.\n        Will be trained on features and controls (concatenated). Must implement `fit` and `predict_proba` methods.\n\n    model_Y :  estimator, default sklearn.linear_model.LassoCV(cv=3)\n        Estimator for learning potential outcomes at each leaf.\n        Will be trained on features, controls and one hot encoded treatments (concatenated).\n        If different models per treatment arm are desired, see the :class:`.MultiModelWrapper`\n        helper class. The model(s) must implement `fit` and `predict` methods.\n\n    propensity_model_final : estimator, optional\n        Model for estimating propensity of treatment at at prediction time.\n        Will be trained on features and controls (concatenated). Must implement `fit` and `predict_proba` methods.\n        If parameter is set to ``None``, it defaults to the value of `propensity_model` parameter.\n\n    model_Y_final : estimator, optional\n        Estimator for learning potential outcomes at prediction time.\n        Will be trained on features, controls and one hot encoded treatments (concatenated).\n        If different models per treatment arm are desired, see the :class:`.MultiModelWrapper`\n        helper class. The model(s) must implement `fit` and `predict` methods.\n        If parameter is set to ``None``, it defaults to the value of `model_Y` parameter.\n\n    categories: 'auto' or list\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    n_jobs : int, default -1\n        The number of jobs to run in parallel for both :meth:`fit` and :meth:`effect`.\n        ``-1`` means using all processors. Since OrthoForest methods are\n        computationally heavy, it is recommended to set `n_jobs` to -1.\n\n    backend : 'threading' or 'loky', default 'loky'\n        What backend should be used for parallelization with the joblib library.\n\n    verbose : int, default 3\n        Verbosity level\n\n    batch_size : int or 'auto', default 'auto'\n        Batch_size of jobs for parallelism\n\n    random_state : int, RandomState instance, or None, default None\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance_models\n        that can handle missing values.\n    \"\"\"\n\n    def __init__(self, *,\n                 n_trees=500,\n                 min_leaf_size=10, max_depth=10,\n                 subsample_ratio=0.7,\n                 bootstrap=False,\n                 lambda_reg=0.01,\n                 propensity_model=LogisticRegression(penalty='l1', solver='saga',\n                                                     multi_class='auto'),  # saga solver supports l1\n                 model_Y=WeightedLassoCVWrapper(cv=3),\n                 propensity_model_final=None,\n                 model_Y_final=None,\n                 categories='auto',\n                 n_jobs=-1,\n                 backend='loky',\n                 verbose=3,\n                 batch_size='auto',\n                 random_state=None,\n                 allow_missing=False):\n        self.lambda_reg = lambda_reg\n        # Copy and/or define models\n        self.propensity_model = clone(propensity_model, safe=False)\n        self.model_Y = clone(model_Y, safe=False)\n        self.propensity_model_final = clone(propensity_model_final, safe=False)\n        self.model_Y_final = clone(model_Y_final, safe=False)\n        if self.propensity_model_final is None:\n            self.propensity_model_final = clone(self.propensity_model, safe=False)\n        if self.model_Y_final is None:\n            self.model_Y_final = clone(self.model_Y, safe=False)\n        self.random_state = check_random_state(random_state)\n\n        nuisance_estimator = DROrthoForest.nuisance_estimator_generator(\n            self.propensity_model, self.model_Y, self.random_state, second_stage=False)\n        second_stage_nuisance_estimator = DROrthoForest.nuisance_estimator_generator(\n            self.propensity_model_final, self.model_Y_final, self.random_state, second_stage=True)\n        # Define parameter estimators\n        parameter_estimator = DROrthoForest.parameter_estimator_func\n        second_stage_parameter_estimator = DROrthoForest.second_stage_parameter_estimator_gen(\n            self.lambda_reg)\n        # Define moment and mean gradient estimator\n        moment_and_mean_gradient_estimator = DROrthoForest.moment_and_mean_gradient_estimator_func\n        super().__init__(\n            nuisance_estimator,\n            second_stage_nuisance_estimator,\n            parameter_estimator,\n            second_stage_parameter_estimator,\n            moment_and_mean_gradient_estimator,\n            discrete_treatment=True,\n            categories=categories,\n            n_trees=n_trees,\n            min_leaf_size=min_leaf_size,\n            max_depth=max_depth,\n            subsample_ratio=subsample_ratio,\n            bootstrap=bootstrap,\n            n_jobs=n_jobs,\n            backend=backend,\n            verbose=verbose,\n            batch_size=batch_size,\n            random_state=self.random_state,\n            allow_missing=allow_missing)\n\n    def fit(self, Y, T, *, X, W=None, inference='auto'):\n        \"\"\"Build an orthogonal random forest from a training set (Y, T, X, W).\n\n        Parameters\n        ----------\n        Y : array_like, shape (n, )\n            Outcome for the treatment policy. Must be a vector.\n\n        T : array_like, shape (n, )\n            Discrete treatment policy vector. The treatment policy should be a set of consecutive integers\n            starting with `0`, where `0` denotes the control group. Otherwise, the treatment policies\n            will be ordered lexicographically, with the smallest value being considered the control group.\n\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        W : array_like, shape (n, d_w), optional\n            High-dimensional controls.\n\n        inference: str, :class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'blb' (or an instance of :class:`BLBInference`)\n\n        Returns\n        -------\n        self: an instance of self.\n        \"\"\"\n        self._set_input_names(Y, T, X, set_flag=True)\n        Y, T, X, W = check_inputs(\n            Y, T, X, W, force_all_finite_W='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n        # Check that T is shape (n, )\n        # Check T is numeric\n        T = self._check_treatment(T)\n        d_t_in = T.shape[1:]\n        # Train label encoder\n        categories = self.categories\n        if categories != 'auto':\n            categories = [categories]  # OneHotEncoder expects a 2D array with features per column\n        self.transformer = one_hot_encoder(categories=categories, drop='first')\n        d_t_in = T.shape[1:]\n        T = self.transformer.fit_transform(T.reshape(-1, 1))\n        self._d_t = T.shape[1:]\n\n        # Call `fit` from parent class\n        super().fit(Y, T, X=X, W=W, inference=inference)\n\n        # weirdness of wrap_fit. We need to store d_t_in. But because wrap_fit decorates the parent\n        # fit, we need to set explicitly d_t_in here after super fit is called.\n        self._d_t_in = d_t_in\n        return self\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_effect(self, X):\n        \"\"\"Calculate the constant marginal CATE θ(·) conditional on a vector of features X.\n\n        Parameters\n        ----------\n        X : array_like, shape (n, d_x)\n            Feature vector that captures heterogeneity.\n\n        Returns\n        -------\n        Theta : matrix , shape (n, d_t)\n            Constant marginal CATE of each treatment for each sample.\n        \"\"\"\n        X = check_array(X)\n        # Override to flatten output if T is flat\n        effects = super().const_marginal_effect(X=X)\n        return effects.reshape((-1,) + self._d_y + self._d_t)\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_ate(self, X=None):\n        \"\"\"\n        Calculate the average constant marginal CATE :math:`E_X[\\\\theta(X)]`.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (d_y, d_t) matrix\n            Average constant marginal CATE of each treatment on each outcome.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return super().const_marginal_ate(X=X)\n\n    @staticmethod\n    def nuisance_estimator_generator(propensity_model, model_Y, random_state=None, second_stage=False):\n        \"\"\"Generate nuissance estimator given model inputs from the class.\"\"\"\n        def nuisance_estimator(Y, T, X, W, sample_weight=None, split_indices=None):\n            # Expand one-hot encoding to include the zero treatment\n            ohe_T = np.hstack([np.all(1 - T, axis=1, keepdims=True), T])\n            # Test that T contains all treatments. If not, return None\n            T = ohe_T @ np.arange(ohe_T.shape[1])\n            if len(np.unique(T)) < ohe_T.shape[1]:\n                return None\n            # Nuissance estimates evaluated with cross-fitting\n            this_random_state = check_random_state(random_state)\n            if (split_indices is None) and second_stage:\n                # Define 2-fold iterator\n                kfold_it = StratifiedKFold(n_splits=2, shuffle=True, random_state=this_random_state).split(X, T)\n                # Check if there is only one example of some class\n                with warnings.catch_warnings():\n                    warnings.filterwarnings('error')\n                    try:\n                        split_indices = list(kfold_it)[0]\n                    except Warning as warn:\n                        msg = str(warn)\n                        if \"The least populated class in y has only 1 members\" in msg:\n                            return None\n            if W is not None:\n                X_tilde = np.concatenate((X, W), axis=1)\n            else:\n                X_tilde = X\n            try:\n                if not second_stage:\n                    # No need to crossfit for internal nodes\n                    propensity_model_clone = clone(propensity_model, safe=False)\n                    propensity_model_clone.fit(X_tilde, T)\n                    propensities = propensity_model_clone.predict_proba(X_tilde)\n                    Y_hat = _group_predict(X_tilde, ohe_T.shape[1],\n                                           clone(model_Y, safe=False).fit(np.hstack([X_tilde, ohe_T]), Y).predict)\n                else:\n                    propensities = _cross_fit(propensity_model, X_tilde, T, split_indices,\n                                              sample_weight=sample_weight, predict_func_name='predict_proba')\n                    Y_hat = _group_cross_fit(model_Y, X_tilde, Y, ohe_T, split_indices, sample_weight=sample_weight)\n            except ValueError as exc:\n                raise ValueError(\"The original error: {0}\".format(str(exc)) +\n                                 \" This might be caused by too few sample in the tree leafs.\" +\n                                 \" Try increasing the min_leaf_size.\")\n            return Y_hat, propensities\n        return nuisance_estimator\n\n    @staticmethod\n    def parameter_estimator_func(Y, T, X,\n                                 nuisance_estimates,\n                                 sample_weight=None):\n        \"\"\"Calculate the parameter of interest for points given by (Y, T) and corresponding nuisance estimates.\"\"\"\n        # Compute partial moments\n        pointwise_params = DROrthoForest._partial_moments(Y, T, nuisance_estimates)\n        param_estimate = np.average(pointwise_params, weights=sample_weight, axis=0)\n        # If any of the values in the parameter estimate is nan, return None\n        return param_estimate\n\n    @staticmethod\n    def second_stage_parameter_estimator_gen(lambda_reg):\n        \"\"\"\n        Generate the second stage parameter estimation function.\n\n        We fit a local linear function as opposed to a local constant function. We also penalize\n        the linear part to reduce variance.\n        \"\"\"\n        def parameter_estimator_func(Y, T, X,\n                                     nuisance_estimates,\n                                     sample_weight,\n                                     X_single):\n            \"\"\"\n            Calculate the parameter of interest for points given by (Y, T) and corresponding nuisance estimates.\n\n            The parameter is calculated around the feature vector given by `X_single`. `X_single` can be used to do\n            local corrections on a preliminary parameter estimate.\n            \"\"\"\n            # Compute partial moments\n            pointwise_params = DROrthoForest._partial_moments(Y, T, nuisance_estimates)\n            X_aug = np.hstack([np.ones((X.shape[0], 1)), X])\n            # Compute coefficient by OLS on residuals\n            if sample_weight is not None:\n                weighted_X_aug = sample_weight.reshape(-1, 1) * X_aug\n            else:\n                weighted_X_aug = X_aug / X_aug.shape[0]\n            # ell_2 regularization\n            diagonal = np.ones(X_aug.shape[1])\n            diagonal[0] = 0\n            reg = lambda_reg * np.diag(diagonal)\n            # Ridge regression estimate\n            linear_coef_estimate = np.linalg.lstsq(np.matmul(weighted_X_aug.T, X_aug) + reg,\n                                                   np.matmul(weighted_X_aug.T, pointwise_params),\n                                                   rcond=None)[0].flatten()\n            X_aug = np.append([1], X_single)\n            linear_coef_estimate = linear_coef_estimate.reshape((X_aug.shape[0], -1)).T\n            # Parameter returned is of shape (d_T, )\n            return np.dot(linear_coef_estimate, X_aug)\n\n        return parameter_estimator_func\n\n    @staticmethod\n    def moment_and_mean_gradient_estimator_func(Y, T, X, W,\n                                                nuisance_estimates,\n                                                parameter_estimate):\n        \"\"\"Calculate the moments and mean gradient at points given by (Y, T, X, W).\"\"\"\n        # Return moments and gradients\n        # Compute partial moments\n        partial_moments = DROrthoForest._partial_moments(Y, T, nuisance_estimates)\n        # Compute moments\n        # Moments shape is (n, d_T-1)\n        moments = partial_moments - parameter_estimate\n        # Compute moment gradients\n        n_T = nuisance_estimates[0].shape[1] - 1\n        mean_gradient = np.diag(np.ones(n_T) * (-1))\n        return moments, mean_gradient\n\n    @staticmethod\n    def _partial_moments(Y, T, nuisance_estimates):\n        Y_hat, propensities = nuisance_estimates\n        partial_moments = np.zeros((len(Y), Y_hat.shape[1] - 1))\n        T = T @ np.arange(1, T.shape[1] + 1)\n        mask_0 = (T == 0)\n        for i in range(0, Y_hat.shape[1] - 1):\n            # Need to calculate this in an elegant way for when propensity is 0\n            partial_moments[:, i] = Y_hat[:, i + 1] - Y_hat[:, 0]\n            mask_i = (T == (i + 1))\n            partial_moments[:, i][mask_i] += (Y - Y_hat[:, i + 1])[mask_i] / propensities[:, i + 1][mask_i]\n            partial_moments[:, i][mask_0] -= (Y - Y_hat[:, 0])[mask_0] / propensities[:, 0][mask_0]\n        return partial_moments\n\n    def _check_treatment(self, T):\n        try:\n            # This will flatten T\n            T = column_or_1d(T)\n        except Exception:\n            raise ValueError(\"Expected array of shape ({n}, ), but got {T_shape}\".format(n=len(T), T_shape=T.shape))\n        # Check that T is numeric\n        try:\n            T.astype(float)\n        except Exception:\n            raise ValueError(\"Expected numeric array but got non-numeric types.\")\n        return T\n\n\nclass BLBInference(Inference):\n    \"\"\"\n    Bootstrap-of-Little-Bags inference implementation for the OrthoForest classes.\n\n    This class can only be used for inference with any estimator derived from :class:`BaseOrthoForest`.\n\n    Parameters\n    ----------\n    estimator : :class:`BaseOrthoForest`\n        Estimator to perform inference on. Must be a child class of :class:`BaseOrthoForest`.\n    \"\"\"\n\n    def fit(self, estimator, *args, **kwargs):\n        \"\"\"\n        Fits the inference model.\n\n        This is called after the estimator's fit.\n        \"\"\"\n        self._estimator = estimator\n        self._d_t = estimator._d_t\n        self._d_y = estimator._d_y\n        self.d_t = self._d_t[0] if self._d_t else 1\n        self.d_y = self._d_y[0] if self._d_y else 1\n        # Test whether the input estimator is supported\n        if not hasattr(self._estimator, \"_predict\"):\n            raise TypeError(\"Unsupported estimator of type {}.\".format(self._estimator.__class__.__name__) +\n                            \" Estimators must implement the '_predict' method with the correct signature.\")\n        return self\n\n    def const_marginal_effect_interval(self, X=None, *, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`\\\\theta(X)` produced by the model.\n\n        Available only when ``inference`` is ``blb`` or ``auto``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`const_marginal_effect(X)<const_marginal_effect>` ,\\\n                             type of :meth:`const_marginal_effect(X)<const_marginal_effect>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        X = check_array(X)\n        params_and_cov = self._predict_wrapper(X)\n        # Calculate confidence intervals for the parameter (marginal effect)\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        param_lower = [param + np.apply_along_axis(lambda s: norm.ppf(lower, scale=s), 0, np.sqrt(np.diag(cov_mat)))\n                       for (param, cov_mat) in params_and_cov]\n        param_upper = [param + np.apply_along_axis(lambda s: norm.ppf(upper, scale=s), 0, np.sqrt(np.diag(cov_mat)))\n                       for (param, cov_mat) in params_and_cov]\n        param_lower, param_upper = np.asarray(param_lower), np.asarray(param_upper)\n        return param_lower.reshape((-1,) + self._estimator._d_y + self._estimator._d_t), \\\n            param_upper.reshape((-1,) + self._estimator._d_y + self._estimator._d_t)\n\n    def const_marginal_effect_inference(self, X=None):\n        \"\"\"\n        Inference results for the quantities :math:`\\\\theta(X)` produced by the model.\n\n        Available only when ``inference`` is ``blb`` or ``auto``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample\n\n        Returns\n        -------\n        InferenceResults: instance of :class:`~econml.inference.NormalInferenceResults`\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        X = check_array(X)\n        params, cov = zip(*(self._predict_wrapper(X)))\n        params = np.array(params).reshape((-1,) + self._estimator._d_y + self._estimator._d_t)\n        stderr = np.sqrt(np.diagonal(np.array(cov), axis1=1, axis2=2))\n        stderr = stderr.reshape((-1,) + self._estimator._d_y + self._estimator._d_t)\n        return NormalInferenceResults(d_t=self._estimator._d_t[0] if self._estimator._d_t else 1,\n                                      d_y=self._estimator._d_y[0] if self._estimator._d_y else 1,\n                                      pred=params, pred_stderr=stderr, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._estimator.cate_feature_names(),\n                                      output_names=self._estimator.cate_output_names(),\n                                      treatment_names=self._estimator.cate_treatment_names())\n\n    def _effect_inference_helper(self, X, T0, T1):\n        X, T0, T1 = self._estimator._expand_treatments(*check_input_arrays(X, T0, T1))\n        dT = (T1 - T0) if T0.ndim == 2 else (T1 - T0).reshape(-1, 1)\n        params_and_cov = self._predict_wrapper(X)\n        # Calculate confidence intervals for the effect\n        # Calculate the effects\n        eff = np.asarray([np.dot(params_and_cov[i][0], dT[i]) for i in range(X.shape[0])])\n        # Calculate the standard deviations for the effects\n        scales = np.asarray([np.sqrt(dT[i] @ params_and_cov[i][1] @ dT[i]) for i in range(X.shape[0])])\n        return eff.reshape((-1,) + self._estimator._d_y), scales.reshape((-1,) + self._estimator._d_y)\n\n    def effect_interval(self, X=None, *, T0=0, T1=1, alpha=0.05):\n        \"\"\"\n        Confidence intervals for the quantities :math:`\\\\tau(X, T0, T1)` produced by the model.\n\n        Available only when ``inference`` is ``blb`` or ``auto``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        lower, upper : tuple(type of :meth:`effect(X, T0, T1)<effect>`, type of :meth:`effect(X, T0, T1))<effect>` )\n            The lower and the upper bounds of the confidence interval for each quantity.\n        \"\"\"\n        eff, scales = self._effect_inference_helper(X, T0, T1)\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        effect_lower = eff + np.apply_along_axis(lambda s: norm.ppf(lower, scale=s), 0, scales)\n        effect_upper = eff + np.apply_along_axis(lambda s: norm.ppf(upper, scale=s), 0, scales)\n        return effect_lower, effect_upper\n\n    def effect_inference(self, X=None, *, T0=0, T1=1):\n        \"\"\"\n        Inference results for the quantities :math:`\\\\tau(X, T0, T1)` produced by the model.\n\n        Available only when ``inference`` is ``blb`` or ``auto``, when\n        calling the fit method.\n\n        Parameters\n        ----------\n        X:  (m, d_x) matrix, optional\n            Features for each sample\n        T0:  (m, d_t) matrix or vector of length m, default 0\n            Base treatments for each sample\n        T1:  (m, d_t) matrix or vector of length m, default 1\n            Target treatments for each sample\n\n        Returns\n        -------\n        InferenceResults: instance of :class:`~econml.inference.NormalInferenceResults`\n            The inference results instance contains prediction and prediction standard error and\n            can on demand calculate confidence interval, z statistic and p value. It can also output\n            a dataframe summary of these inference results.\n        \"\"\"\n        eff, scales = self._effect_inference_helper(X, T0, T1)\n\n        # d_t=None here since we measure the effect across all Ts\n        return NormalInferenceResults(d_t=None, d_y=self._estimator._d_y[0] if self._estimator._d_y else 1,\n                                      pred=eff, pred_stderr=scales, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._estimator.cate_feature_names(),\n                                      output_names=self._estimator.cate_output_names(),\n                                      treatment_names=self._estimator.cate_treatment_names())\n\n    def _marginal_effect_inference_helper(self, T, X):\n        if not self._estimator._original_treatment_featurizer:\n            return self.const_marginal_effect_inference(X)\n\n        X, T = check_input_arrays(X, T)\n        X, T = self._estimator._expand_treatments(X, T, transform=False)\n\n        feat_T = self._estimator.transformer.transform(T)\n\n        jac_T = self._estimator.transformer.jac(T)\n\n        params, cov = zip(*(self._predict_wrapper(X)))\n        params = np.array(params)\n        cov = np.array(cov)\n\n        eff_einsum_str = 'mf, mtf-> mt'\n\n        # conditionally expand jacobian dimensions to align with einsum str\n        jac_index = [slice(None), slice(None), slice(None)]\n        if ndim(T) == 1:\n            jac_index[1] = None\n        if ndim(feat_T) == 1:\n            jac_index[2] = None\n\n        # Calculate the effects\n        eff = np.einsum(eff_einsum_str, params, jac_T[tuple(jac_index)])\n\n        # Calculate the standard deviations for the effects\n        d_t_orig = T.shape[1:]\n        d_t_orig = d_t_orig[0] if d_t_orig else 1\n        self.d_t_orig = d_t_orig\n        output_shape = [X.shape[0]]\n        if T.shape[1:]:\n            output_shape.append(T.shape[1])\n        scales = np.zeros(shape=output_shape)\n\n        for i in range(d_t_orig):\n            # conditionally index multiple dimensions depending on shapes of T, Y and feat_T\n            jac_index = [slice(None)]\n            me_index = [slice(None)]\n            if T.shape[1:]:\n                jac_index.append(i)\n                me_index.append(i)\n\n            if feat_T.shape[1:]:  # if featurized T is not a vector\n                jac_index.append(slice(None))\n            else:\n                jac_index.append(None)\n\n            jac = jac_T[tuple(jac_index)]\n            final = np.einsum('mj, mjk, mk -> m', jac, cov, jac)\n            scales[tuple(me_index)] = final\n\n        eff = eff.reshape((-1,) + self._d_y + T.shape[1:])\n        scales = scales.reshape((-1,) + self._d_y + T.shape[1:])\n        return eff, scales\n\n    def marginal_effect_inference(self, T, X):\n        if self._estimator._original_treatment_featurizer is None:\n            return self.const_marginal_effect_inference(X)\n\n        eff, scales = self._marginal_effect_inference_helper(T, X)\n\n        d_y = self._d_y[0] if self._d_y else 1\n\n        return NormalInferenceResults(d_t=self.d_t_orig, d_y=d_y,\n                                      pred=eff, pred_stderr=scales, mean_pred_stderr=None, inf_type='effect',\n                                      feature_names=self._estimator.cate_feature_names(),\n                                      output_names=self._estimator.cate_output_names(),\n                                      treatment_names=self._estimator.cate_treatment_names())\n\n    def marginal_effect_interval(self, T, X, *, alpha=0.05):\n        return self.marginal_effect_inference(T, X).conf_int(alpha=alpha)\n\n    def _predict_wrapper(self, X=None):\n        return self._estimator._predict(X, stderr=True)\n"
  },
  {
    "path": "econml/panel/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n__all__ = [\"dml\"]\n"
  },
  {
    "path": "econml/panel/dml/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Double Machine Learning for Dynamic Treatment Effects.\n\nA Double/Orthogonal machine learning approach to estimation of heterogeneous\ntreatment effect in the dynamic treatment regime. For the theoretical\nfoundations of these methods see: [dynamicdml]_.\n\nReferences\n----------\n\n.. [dynamicdml] Greg Lewis and Vasilis Syrgkanis.\n    Double/Debiased Machine Learning for Dynamic Treatment Effects.\n    `<https://arxiv.org/abs/2002.07285>`_, 2021.\n\"\"\"\n\nfrom ._dml import DynamicDML\n\n__all__ = [\"DynamicDML\"]\n"
  },
  {
    "path": "econml/panel/dml/_dml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nfrom warnings import warn\nfrom sklearn.base import clone\nfrom sklearn.model_selection import GroupKFold\nfrom ...sklearn_extensions.linear_model import (StatsModelsLinearRegression)\nfrom ...sklearn_extensions.model_selection import ModelSelector\nfrom ...dml.dml import _make_first_stage_selector, _FinalWrapper\nfrom ..._cate_estimator import LinearModelFinalCateEstimatorMixin\nfrom ..._ortho_learner import _OrthoLearner\nfrom ...utilities import (ndim, reshape,\n                          get_feature_names_or_default, check_input_arrays,\n                          filter_none_kwargs)\n\n\ndef _get_groups_period_filter(groups, n_periods):\n    group_counts = {}\n    group_period_filter = {i: [] for i in range(n_periods)}\n    for i, g in enumerate(groups):\n        if g not in group_counts:\n            group_counts[g] = 0\n        group_period_filter[group_counts[g]].append(i)\n        group_counts[g] += 1\n    return group_period_filter\n\n\nclass _DynamicModelNuisanceSelector(ModelSelector):\n    \"\"\"\n    Nuisance model for DynamicDML.\n\n    Fits the model_y and model_t at fit time and at predict time\n    calculates the residual Y and residual T based on the fitted models and returns\n    the residuals as two nuisance parameters.\n    \"\"\"\n\n    def __init__(self, model_y, model_t, n_periods):\n        self._model_y = model_y\n        self._model_t = model_t\n        self.n_periods = n_periods\n\n    def train(self, is_selecting, folds, Y, T, X=None, W=None, sample_weight=None, groups=None):\n        \"\"\"Fit a series of nuisance models for each period or period pairs.\"\"\"\n        assert Y.shape[0] % self.n_periods == 0, \\\n            \"Length of training data should be an integer multiple of time periods.\"\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        if not hasattr(self, '_model_y_trained'):  # create the per-period y and t models\n            self._model_y_trained = {t: clone(self._model_y, safe=False)\n                                     for t in np.arange(self.n_periods)}\n            self._model_t_trained = {j: {t: clone(self._model_t, safe=False)\n                                         for t in np.arange(j + 1)}\n                                     for j in np.arange(self.n_periods)}\n\n        # we have to filter the folds because they contain the indices in the original data not\n        # the indices in the period-filtered data\n\n        def _translate_inds(t, inds):\n            # translate the indices in a fold to the indices in the period-filtered data\n            # if groups was [3,3,4,4,5,5,6,6,1,1,2,2,0,0] (the group ids can be in any order, but the\n            # time periods for each group should be contguous), and we had [10,11,0,1] as the indices in a fold\n            # (so the fold is taking the entries corresponding to groups 2 and 3)\n            # then group_period_filter(0) is [0,2,4,6,8,10,12] and gpf(1) is [1,3,5,7,9,11,13]\n            # so for period 1, the fold should be [10,0] => [5,0] (the indices that return 10 and 0 in the t=0 data)\n            # and for period 2, the fold should be [11,1] => [5,0] again (the indices that return 11,1 in the t=1 data)\n\n            # filter to the indices for the time period\n            inds = inds[np.isin(inds, period_filters[t])]\n\n            # now find their index in the period-filtered data, which is always sorted\n            return np.searchsorted(period_filters[t], inds)\n\n        if folds is not None:\n            translated_folds = []\n            for (train, test) in folds:\n                translated_folds.append((_translate_inds(0, train), _translate_inds(0, test)))\n                # sanity check that the folds are the same no matter the time period\n                for t in range(1, self.n_periods):\n                    assert np.array_equal(_translate_inds(t, train), _translate_inds(0, train))\n                    assert np.array_equal(_translate_inds(t, test), _translate_inds(0, test))\n        else:\n            translated_folds = None\n\n        for t in np.arange(self.n_periods):\n            self._model_y_trained[t].train(\n                is_selecting, translated_folds,\n                self._index_or_None(X, period_filters[t]),\n                self._index_or_None(\n                    W, period_filters[t]),\n                Y[period_filters[self.n_periods - 1]])\n            for j in np.arange(t, self.n_periods):\n                self._model_t_trained[j][t].train(\n                    is_selecting, translated_folds,\n                    self._index_or_None(X, period_filters[t]),\n                    self._index_or_None(W, period_filters[t]),\n                    T[period_filters[j]])\n        return self\n\n    def predict(self, Y, T, X=None, W=None, sample_weight=None, groups=None):\n        \"\"\"\n        Calculate nuisances for each period or period pairs.\n\n        Returns\n        -------\n        Y_res : (n, d_y) matrix or vector of length n\n            Y residuals for each period in panel format.\n            This shape is required for _OrthoLearner's crossfitting.\n        T_res : (n, d_t, n_periods) matrix\n            T residuals for pairs of periods (t, j), where the data is in panel format for t\n            and in index form for j. For example, the residuals for (t, j) can be retrieved via\n            T_res[np.arange(n) % n_periods == t, ..., j]. For t < j, the entries of this\n            matrix are np.nan.\n            This shape is required for _OrthoLearner's crossfitting.\n        \"\"\"\n        assert Y.shape[0] % self.n_periods == 0, \\\n            \"Length of training data should be an integer multiple of time periods.\"\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        Y_res = np.full(Y.shape, np.nan)\n        T_res = np.full(T.shape + (self.n_periods, ), np.nan)\n        shape_formatter = self._get_shape_formatter(X, W)\n        for t in np.arange(self.n_periods):\n            Y_slice = Y[period_filters[self.n_periods - 1]]\n            Y_pred = self._model_y_trained[t].predict(\n                self._index_or_None(X, period_filters[t]),\n                self._index_or_None(W, period_filters[t]))\n            Y_res[period_filters[t]] = Y_slice\\\n                - shape_formatter(Y_slice, Y_pred)\n            for j in np.arange(t, self.n_periods):\n                T_slice = T[period_filters[j]]\n                T_pred = self._model_t_trained[j][t].predict(\n                    self._index_or_None(X, period_filters[t]),\n                    self._index_or_None(W, period_filters[t]))\n                T_res[period_filters[j], ..., t] = T_slice\\\n                    - shape_formatter(T_slice, T_pred)\n        return Y_res, T_res\n\n    def score(self, Y, T, X=None, W=None, sample_weight=None, groups=None):\n        assert Y.shape[0] % self.n_periods == 0, \\\n            \"Length of training data should be an integer multiple of time periods.\"\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        if hasattr(self._model_y, 'score'):\n            Y_score = np.full((self.n_periods, ), np.nan)\n            for t in np.arange(self.n_periods):\n                Y_score[t] = self._model_y_trained[t].score(\n                    self._index_or_None(X, period_filters[t]),\n                    self._index_or_None(W, period_filters[t]),\n                    Y[period_filters[self.n_periods - 1]])\n        else:\n            Y_score = None\n        if hasattr(self._model_t, 'score'):\n            T_score = np.full((self.n_periods, self.n_periods), np.nan)\n            for t in np.arange(self.n_periods):\n                for j in np.arange(t, self.n_periods):\n                    T_score[j][t] = self._model_t_trained[j][t].score(\n                        self._index_or_None(X, period_filters[t]),\n                        self._index_or_None(W, period_filters[t]),\n                        T[period_filters[j]])\n        else:\n            T_score = None\n        return Y_score, T_score\n\n    def _get_shape_formatter(self, X, W):\n        if (X is None) and (W is None):\n            return lambda x, x_pred: np.tile(x_pred.reshape(1, -1), (x.shape[0], 1)).reshape(x.shape)\n        return lambda x, x_pred: x_pred.reshape(x.shape)\n\n    def _index_or_None(self, X, filter_idx):\n        return None if X is None else X[filter_idx]\n\n\nclass _DynamicModelFinal:\n    \"\"\"\n    Final model at fit time.\n\n    Fits a residual on residual regression with a heterogeneous coefficient\n    that depends on X, i.e.\n\n        .. math ::\n            Y - E[Y | X, W] = \\\\theta(X) \\\\cdot (T - E[T | X, W]) + \\\\epsilon\n\n    and at predict time returns :math:`\\\\theta(X)`. The score method returns the MSE of this final\n    residual on residual regression.\n    Assumes model final is parametric with no intercept.\n    \"\"\"\n\n    # TODO: update docs\n\n    def __init__(self, model_final, n_periods):\n        self._model_final = model_final\n        self.n_periods = n_periods\n        self._model_final_trained = {k: clone(self._model_final, safe=False) for k in np.arange(n_periods)}\n\n    def fit(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, sample_var=None, groups=None):\n        # NOTE: sample weight, sample var are not passed in\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        Y_res, T_res = nuisances\n        self._d_y = Y.shape[1:]\n        for t in np.arange(self.n_periods - 1, -1, -1):\n            Y_adj = Y_res[period_filters[t]].copy()\n            if t < self.n_periods - 1:\n                Y_adj -= np.sum(\n                    [self._model_final_trained[j].predict_with_res(\n                        X[period_filters[0]] if X is not None else None,\n                        T_res[period_filters[j], ..., t]\n                    ) for j in np.arange(t + 1, self.n_periods)], axis=0)\n            self._model_final_trained[t].fit(\n                X[period_filters[0]] if X is not None else None, T[period_filters[t]],\n                T_res[period_filters[t], ..., t], Y_adj)\n\n        return self\n\n    def predict(self, X=None):\n        \"\"\"Return shape: m x dy x (p*dt).\"\"\"\n        d_t_tuple = self._model_final_trained[0]._d_t\n        d_t = d_t_tuple[0] if d_t_tuple else 1\n        x_dy_shape = (X.shape[0] if X is not None else 1, ) + \\\n            self._model_final_trained[0]._d_y\n        preds = np.zeros(\n            x_dy_shape +\n            (self.n_periods * d_t, )\n        )\n        for t in range(self.n_periods):\n            preds[..., t * d_t: (t + 1) * d_t] = \\\n                self._model_final_trained[t].predict(X).reshape(\n                x_dy_shape + (d_t, )\n            )\n        return preds\n\n    def score(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, sample_var=None, groups=None):\n        assert Y.shape[0] % self.n_periods == 0, \\\n            \"Length of training data should be an integer multiple of time periods.\"\n        Y_res, T_res = nuisances\n        scores = np.full((self.n_periods, ), np.nan)\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        for t in np.arange(self.n_periods - 1, -1, -1):\n            Y_adj = Y_res[period_filters[t]].copy()\n            if t < self.n_periods - 1:\n                Y_adj -= np.sum(\n                    [self._model_final_trained[j].predict_with_res(\n                        X[period_filters[0]] if X is not None else None,\n                        T_res[period_filters[j], ..., t]\n                    ) for j in np.arange(t + 1, self.n_periods)], axis=0)\n            Y_adj_pred = self._model_final_trained[t].predict_with_res(\n                X[period_filters[0]] if X is not None else None,\n                T_res[period_filters[t], ..., t])\n            if sample_weight is not None:\n                scores[t] = np.mean(np.average((Y_adj - Y_adj_pred)**2, weights=sample_weight, axis=0))\n            else:\n                scores[t] = np.mean((Y_adj - Y_adj_pred) ** 2)\n        return scores\n\n\nclass _LinearDynamicModelFinal(_DynamicModelFinal):\n    \"\"\"Wrapper for the DynamicModelFinal with StatsModelsLinearRegression final model.\n\n    The final model is a linear model with (d_t*n_periods) coefficients.\n    This model is defined after the coefficients and covariance are calculated.\n    \"\"\"\n\n    def __init__(self, model_final, n_periods):\n        super().__init__(model_final, n_periods)\n        self.model_final_ = StatsModelsLinearRegression(fit_intercept=False)\n\n    def fit(self, Y, T, X=None, W=None, Z=None, nuisances=None, sample_weight=None, sample_var=None, groups=None):\n        super().fit(Y, T, X=X, W=W, Z=Z, nuisances=nuisances,\n                    sample_weight=sample_weight, sample_var=sample_var, groups=groups)\n        # Compose final model\n        cov = self._get_cov(nuisances, X, groups)\n        coef = self._get_coef_()\n        self.model_final_._n_out = self._d_y[0] if self._d_y else 0\n        self.model_final_._param_var = cov / (Y.shape[0] / self.n_periods)\n        self.model_final_._param = coef.T if self.model_final_._n_out else coef\n\n    def _get_coef_(self):\n        period_coefs = np.array([self._model_final_trained[t]._model.coef_ for t in range(self.n_periods)])\n        if self._d_y:\n            return np.array([\n                np.array([period_coefs[k, i, :] for k in range(self.n_periods)]).flatten()\n                for i in range(self._d_y[0])\n            ])\n        return period_coefs.flatten()\n\n    def _get_cov(self, nuisances, X, groups):\n        if self._d_y:\n            return np.array(\n                [self._fit_single_output_cov((nuisances[0][:, i], nuisances[1]), X, i, groups)\n                 for i in range(self._d_y[0])]\n            )\n        return self._fit_single_output_cov(nuisances, X, -1, groups)\n\n    def _fit_single_output_cov(self, nuisances, X, y_index, groups):\n        \"\"\"Calculate the covariance (n_periods*n_treatments) x (n_periods*n_treatments) matrix for a single outcome.\"\"\"\n        Y_res, T_res = nuisances\n        # Calculate auxiliary quantities\n        period_filters = _get_groups_period_filter(groups, self.n_periods)\n        # X ⨂ T_res\n        XT_res = np.array([\n            [\n                self._model_final_trained[0]._combine(\n                    X[period_filters[0]] if X is not None else None,\n                    T_res[period_filters[t], ..., j],\n                    fitting=False\n                )\n                for j in range(self.n_periods)\n            ]\n            for t in range(self.n_periods)\n        ])\n        d_xt = XT_res.shape[-1]\n        # sum(model_final.predict(X, T_res))\n        Y_diff = np.array([\n            np.sum([\n                self._model_final_trained[j].predict_with_res(\n                    X[period_filters[0]] if X is not None else None,\n                    T_res[period_filters[j], ..., t]\n                ) for j in np.arange(t, self.n_periods)],\n                axis=0\n            )\n            for t in np.arange(self.n_periods)\n        ])\n        J = np.zeros((self.n_periods * d_xt,\n                      self.n_periods * d_xt))\n        Sigma = np.zeros((self.n_periods * d_xt,\n                          self.n_periods * d_xt))\n        for t in np.arange(self.n_periods):\n            res_epsilon_t = (Y_res[period_filters[t]] -\n                             (Y_diff[t][:, y_index] if y_index >= 0 else Y_diff[t])\n                             ).reshape(-1, 1, 1)\n            resT_t = XT_res[t][t]\n            for j in np.arange(self.n_periods):\n                # Calculating the (t, j) block entry (of size n_treatments x n_treatments) of matrix Sigma\n                res_epsilon_j = (Y_res[period_filters[j]] -\n                                 (Y_diff[j][:, y_index] if y_index >= 0 else Y_diff[j])\n                                 ).reshape(-1, 1, 1)\n                resT_j = XT_res[j][j]\n                cov_resT_tj = resT_t.reshape(-1, d_xt, 1) @ resT_j.reshape(-1, 1, d_xt)\n                sigma_tj = np.mean((res_epsilon_t * res_epsilon_j) * cov_resT_tj, axis=0)\n                Sigma[t * d_xt:(t + 1) * d_xt,\n                      j * d_xt:(j + 1) * d_xt] = sigma_tj\n                if j >= t:\n                    # Calculating the (t, j) block entry (of size n_treatments x n_treatments) of matrix J\n                    m_tj = np.mean(\n                        XT_res[j][t].reshape(-1, d_xt, 1) @ resT_t.reshape(-1, 1, d_xt),\n                        axis=0)\n                    J[t * d_xt:(t + 1) * d_xt,\n                      j * d_xt:(j + 1) * d_xt] = m_tj\n        return np.linalg.inv(J) @ Sigma @ np.linalg.inv(J).T\n\n\nclass _DynamicFinalWrapper(_FinalWrapper):\n\n    def predict_with_res(self, X, T_res):\n        fts = self._combine(X, T_res, fitting=False)\n        prediction = self._model.predict(fts)\n        if self._intercept is not None:\n            prediction -= self._intercept\n        return reshape(prediction, (prediction.shape[0],) + self._d_y)\n\n\nclass DynamicDML(LinearModelFinalCateEstimatorMixin, _OrthoLearner):\n    \"\"\"CATE estimator for dynamic treatment effect estimation.\n\n    This estimator is an extension of the Double ML approach for treatments assigned sequentially\n    over time periods.\n\n    The estimator is a special case of an :class:`_OrthoLearner` estimator, so it follows the two\n    stage process, where a set of nuisance functions are estimated in the first stage in a crossfitting\n    manner and a final stage estimates the CATE model. See the documentation of\n    :class:`._OrthoLearner` for a description of this two stage process.\n\n    Parameters\n    ----------\n    model_y: estimator, default ``'auto'``\n        Determines how to fit the outcome to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\n          and a regressor otherwise\n\n    model_t: estimator, default ``'auto'``\n        Determines how to fit the treatment to the features.\n\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\n\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\n          if a single model is specified it should be a classifier if `discrete_treatment` is True\n          and a regressor otherwise\n\n    featurizer : :term:`transformer`, optional\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\n        If featurizer=None, then CATE is trained on X.\n\n    fit_cate_intercept : bool, default True\n        Whether the linear CATE model should have a constant term.\n\n    discrete_outcome: bool, default False\n        Whether the outcome should be treated as binary\n\n    discrete_treatment: bool, default ``False``\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\n\n    categories: 'auto' or list, default 'auto'\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\n        The first category will be treated as the control treatment.\n\n    cv: int, cross-validation generator or an iterable, default 2\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 3-fold cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n          Iterables should make sure a group belongs to a single split.\n\n        For integer/None inputs, :class:`~sklearn.model_selection.GroupKFold` is used\n\n        Unless an iterable is used, we call `split(X, T, groups)` to generate the splits.\n\n    mc_iters: int, optional\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\n\n    mc_agg: {'mean', 'median'}, default 'mean'\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\n        cross-fitting.\n\n    random_state : int, RandomState instance, or None, default None\n\n        If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`.\n\n    allow_missing: bool\n        Whether to allow missing values in W. If True, will need to supply nuisance_models\n        that can handle missing values.\n\n    Examples\n    --------\n    A simple example with default models:\n\n    .. testcode::\n        :hide:\n\n        import numpy as np\n        np.set_printoptions(suppress=True)\n\n    .. testcode::\n\n        from econml.panel.dml import DynamicDML\n\n        np.random.seed(123)\n\n        n_panels = 100  # number of panels\n        n_periods = 3  # number of time periods per panel\n        n = n_panels * n_periods\n        groups = np.repeat(a=np.arange(n_panels), repeats=n_periods, axis=0)\n        X = np.random.normal(size=(n, 1))\n        T = np.random.normal(size=(n, 2))\n        y = np.random.normal(size=(n, ))\n        est = DynamicDML()\n        est.fit(y, T, X=X, W=None, groups=groups, inference=\"auto\")\n\n    >>> est.const_marginal_effect(X[:2])\n    array([[-0.168..., -0.096..., -0.105...,  0.042..., -0.208...,\n             0.006...],\n           [-0.092...,  0.326..., -0.013..., -0.237..., -0.141...,\n            -0.264...]])\n    >>> est.effect(X[:2], T0=0, T1=1)\n    array([-0.529..., -0.422...])\n    >>> est.effect(X[:2], T0=np.zeros((2, n_periods*T.shape[1])), T1=np.ones((2, n_periods*T.shape[1])))\n    array([-0.529..., -0.422...])\n    >>> est.coef_\n    array([[ 0.036...],\n           [ 0.202...],\n           [ 0.044...],\n           [-0.134...],\n           [ 0.032...],\n           [-0.130...]])\n    >>> est.coef__interval()\n    (array([[-0.136...],\n           [ 0.001...],\n           [-0.110...],\n           [-0.370...],\n           [-0.100...],\n           [-0.294...]]), array([[0.210...],\n           [0.404...],\n           [0.199...],\n           [0.101...],\n           [0.164...],\n           [0.034...]]))\n    \"\"\"\n\n    def __init__(self, *,\n                 model_y='auto', model_t='auto',\n                 featurizer=None,\n                 fit_cate_intercept=True,\n                 linear_first_stages=\"deprecated\",\n                 discrete_outcome=False,\n                 discrete_treatment=False,\n                 categories='auto',\n                 cv=2,\n                 mc_iters=None,\n                 mc_agg='mean',\n                 random_state=None,\n                 allow_missing=False):\n        self.fit_cate_intercept = fit_cate_intercept\n        if linear_first_stages != \"deprecated\":\n            warn(\"The linear_first_stages parameter is deprecated and will be removed in a future version of EconML\",\n                 DeprecationWarning)\n        self.featurizer = clone(featurizer, safe=False)\n        self.model_y = clone(model_y, safe=False)\n        self.model_t = clone(model_t, safe=False)\n        super().__init__(discrete_outcome=discrete_outcome,\n                         discrete_treatment=discrete_treatment,\n                         treatment_featurizer=None,\n                         discrete_instrument=False,\n                         categories=categories,\n                         cv=GroupKFold(cv) if isinstance(cv, int) else cv,\n                         mc_iters=mc_iters,\n                         mc_agg=mc_agg,\n                         random_state=random_state,\n                         allow_missing=allow_missing)\n\n    def _gen_allowed_missing_vars(self):\n        return ['W'] if self.allow_missing else []\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_effect(self, X=None):\n        \"\"\"\n        Calculate the constant marginal CATE :math:`\\\\theta(·)`.\n\n        The marginal effect is conditional on a vector of\n        features on a set of m test samples X[i].\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (m, d_y, d_t) matrix or (d_y, d_t) matrix if X is None\n            Constant marginal CATE of each treatment on each outcome for each sample X[i].\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will also be a vector)\n        \"\"\"\n        return super().const_marginal_effect(X=X)\n\n    # override only so that we can exclude treatment featurization verbiage in docstring\n    def const_marginal_ate(self, X=None):\n        \"\"\"\n        Calculate the average constant marginal CATE :math:`E_X[\\\\theta(X)]`.\n\n        Parameters\n        ----------\n        X: (m, d_x) matrix, optional\n            Features for each sample.\n\n        Returns\n        -------\n        theta: (d_y, d_t) matrix\n            Average constant marginal CATE of each treatment on each outcome.\n            Note that when Y or T is a vector rather than a 2-dimensional array,\n            the corresponding singleton dimensions in the output will be collapsed\n            (e.g. if both are vectors, then the output of this method will be a scalar)\n        \"\"\"\n        return super().const_marginal_ate(X=X)\n\n    def _gen_featurizer(self):\n        return clone(self.featurizer, safe=False)\n\n    def _gen_model_y(self):\n        return _make_first_stage_selector(self.model_y,\n                                          is_discrete=self.discrete_outcome,\n                                          random_state=self.random_state)\n\n    def _gen_model_t(self):\n        return _make_first_stage_selector(self.model_t,\n                                          is_discrete=self.discrete_treatment,\n                                          random_state=self.random_state)\n\n    def _gen_model_final(self):\n        return StatsModelsLinearRegression(fit_intercept=False)\n\n    def _gen_ortho_learner_model_nuisance(self):\n        return _DynamicModelNuisanceSelector(\n            model_t=self._gen_model_t(),\n            model_y=self._gen_model_y(),\n            n_periods=self._n_periods)\n\n    def _gen_ortho_learner_model_final(self):\n        wrapped_final_model = _DynamicFinalWrapper(\n            StatsModelsLinearRegression(fit_intercept=False),\n            fit_cate_intercept=self.fit_cate_intercept,\n            featurizer=self.featurizer,\n            use_weight_trick=False)\n        return _LinearDynamicModelFinal(wrapped_final_model, n_periods=self._n_periods)\n\n    def _prefit(self, Y, T, *args, groups=None, only_final=False, **kwargs):\n        # we need to set the number of periods before calling super()._prefit, since that will generate the\n        # final and nuisance models, which need to have self._n_periods set\n        u_periods = np.unique(np.unique(groups, return_counts=True)[1])\n        if len(u_periods) > 1:\n            raise AttributeError(\n                \"Imbalanced panel. Method currently expects only panels with equal number of periods. Pad your data\")\n        self._n_periods = u_periods[0]\n        super()._prefit(Y, T, *args, **kwargs)\n\n    def _postfit(self, Y, T, *args, **kwargs):\n        super()._postfit(Y, T, *args, **kwargs)\n        # Set _d_t to effective number of treatments\n        self._d_t = (self._n_periods * self._d_t[0], ) if self._d_t else (self._n_periods, )\n\n    def _strata(self, Y, T, X=None, W=None, Z=None,\n                sample_weight=None, sample_var=None, groups=None,\n                cache_values=False, only_final=False, check_input=True):\n        # Required for bootstrap inference\n        return groups\n\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, sample_var=None, groups,\n            cache_values=False, inference='auto'):\n        \"\"\"Estimate the counterfactual model from data, i.e. estimates function :math:`\\\\theta(\\\\cdot)`.\n\n        The input data must contain groups with the same size corresponding to the number\n        of time periods the treatments were assigned over.\n\n        The data should be preferably in panel format, with groups clustered together.\n        If group members do not appear together, the following is assumed:\n\n        * the first instance of a group in the dataset is assumed to correspond to the first period of that group\n        * the second instance of a group in the dataset is assumed to correspond to the\n          second period of that group\n\n        ...etc.\n\n        Only the value of the features X at the first period of each unit are used for\n        heterogeneity. The value of X in subseuqnet periods is used as a time-varying control\n        but not for heterogeneity.\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample (required: n = n_groups * n_periods)\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample (required: n = n_groups * n_periods)\n        X:(n, d_x) matrix, optional\n            Features for each sample (Required: n = n_groups * n_periods). Only first\n            period features from each unit are used for heterogeneity, the rest are\n            used as time-varying controls together with W\n        W:(n, d_w) matrix, optional\n            Controls for each sample (Required: n = n_groups * n_periods)\n        sample_weight:(n,) vector, optional\n            Weights for each samples\n        sample_var:(n,) vector, optional\n            Sample variance for each sample\n        groups: (n,) vector, required\n            All rows corresponding to the same group will be kept together during splitting.\n            If groups is not None, the `cv` argument passed to this class's initializer\n            must support a 'groups' argument to its split method.\n        cache_values: bool, default False\n            Whether to cache inputs and first stage results, which will allow refitting a different final model\n        inference: str,:class:`.Inference` instance, or None\n            Method for performing inference.  This estimator supports 'bootstrap'\n            (or an instance of :class:`.BootstrapInference`) and 'auto'\n            (or an instance of :class:`.LinearModelFinalInference`).\n\n        Returns\n        -------\n        self: DynamicDML instance\n        \"\"\"\n        if sample_weight is not None or sample_var is not None:\n            warn(\"This CATE estimator does not yet support sample weights and sample variance. \"\n                 \"These inputs will be ignored during fitting.\",\n                 UserWarning)\n        return super().fit(Y, T, X=X, W=W,\n                           sample_weight=None, sample_var=None, groups=groups,\n                           cache_values=cache_values,\n                           inference=inference)\n\n    def score(self, Y, T, X=None, W=None, sample_weight=None, *, groups):\n        \"\"\"\n        Score the fitted CATE model on a new data set.\n\n        Generates nuisance parameters\n        for the new data set based on the fitted residual nuisance models created at fit time.\n        It uses the mean prediction of the models fitted by the different crossfit folds.\n        Then calculates the MSE of the final residual Y on residual T regression.\n\n        If model_final does not have a score method, then it raises an :exc:`.AttributeError`\n\n        Parameters\n        ----------\n        Y: (n, d_y) matrix or vector of length n\n            Outcomes for each sample (required: n = n_groups * n_periods)\n        T: (n, d_t) matrix or vector of length n\n            Treatments for each sample (required: n = n_groups * n_periods)\n        X:(n, d_x) matrix, optional\n            Features for each sample (Required: n = n_groups * n_periods)\n        W:(n, d_w) matrix, optional\n            Controls for each sample (Required: n = n_groups * n_periods)\n        groups: (n,) vector, required\n            All rows corresponding to the same group will be kept together during splitting.\n\n        Returns\n        -------\n        score: float\n            The MSE of the final CATE model on the new data.\n        \"\"\"\n        if not hasattr(self._ortho_learner_model_final, 'score'):\n            raise AttributeError(\"Final model does not have a score method!\")\n        Y, T, X, groups = check_input_arrays(Y, T, X, groups)\n        W, = check_input_arrays(W, force_all_finite='allow-nan' if 'W' in self._gen_allowed_missing_vars() else True)\n        self._check_fitted_dims(X)\n        X, T = super()._expand_treatments(X, T)\n        n_iters = len(self._models_nuisance)\n        n_splits = len(self._models_nuisance[0])\n\n        # for each mc iteration\n        for i, models_nuisances in enumerate(self._models_nuisance):\n            # for each model under cross fit setting\n            for j, mdl in enumerate(models_nuisances):\n                nuisance_temp = mdl.predict(Y, T, **filter_none_kwargs(X=X, W=W, groups=groups))\n                if not isinstance(nuisance_temp, tuple):\n                    nuisance_temp = (nuisance_temp,)\n\n                if i == 0 and j == 0:\n                    nuisances = [np.zeros((n_iters * n_splits,) + nuis.shape) for nuis in nuisance_temp]\n\n                for it, nuis in enumerate(nuisance_temp):\n                    nuisances[it][i * n_iters + j] = nuis\n\n        for it in range(len(nuisances)):\n            nuisances[it] = np.mean(nuisances[it], axis=0)\n        return self._ortho_learner_model_final.score(Y, T, nuisances=nuisances,\n                                                     **filter_none_kwargs(X=X, W=W,\n                                                                          sample_weight=sample_weight, groups=groups))\n\n    def cate_treatment_names(self, treatment_names=None):\n        \"\"\"\n        Get treatment names for each time period.\n\n        If the treatment is discrete, it will return expanded treatment names.\n\n        Parameters\n        ----------\n        treatment_names: list of str of length T.shape[1] or None\n            The names of the treatments. If None and the T passed to fit was a dataframe,\n            it defaults to the column names from the dataframe.\n\n        Returns\n        -------\n        out_treatment_names: list of str\n            Returns (possibly expanded) treatment names.\n        \"\"\"\n        slice_treatment_names = super().cate_treatment_names(treatment_names)\n        treatment_names_out = []\n        for k in range(self._n_periods):\n            treatment_names_out += [f\"({t})$_{k}$\" for t in slice_treatment_names]\n        return treatment_names_out\n\n    def cate_feature_names(self, feature_names=None):\n        \"\"\"\n        Get the output feature names.\n\n        Parameters\n        ----------\n        feature_names: list of str of length X.shape[1] or None\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\n            from the dataframe.\n\n        Returns\n        -------\n        out_feature_names: list of str or None\n            The names of the output features :math:`\\\\phi(X)`, i.e. the features with respect to which the\n            final constant marginal CATE model is linear. It is the names of the features that are associated\n            with each entry of the :meth:`coef_` parameter. Not available when the featurizer is not None and\n            does not have a method: `get_feature_names(feature_names)`. Otherwise None is returned.\n        \"\"\"\n        if self._d_x is None:\n            # Handles the corner case when X=None but featurizer might be not None\n            return None\n        if feature_names is None:\n            feature_names = self._input_names[\"feature_names\"]\n        if self.original_featurizer is None:\n            return feature_names\n        return get_feature_names_or_default(self.original_featurizer, feature_names)\n\n    def _expand_treatments(self, X, *Ts, transform=True):\n        # Expand treatments for each time period\n        outTs = []\n        base_expand_treatments = super()._expand_treatments\n        for T in Ts:\n            if ndim(T) == 0:\n                one_T = base_expand_treatments(X, T, transform=transform)[1]\n                one_T = one_T.reshape(-1, 1) if ndim(one_T) == 1 else one_T\n                T = np.tile(one_T, (1, self._n_periods, ))\n            else:\n                assert (T.shape[1] == self._n_periods if self.transformer else T.shape[1] == self._d_t[0]), \\\n                    f\"Expected a list of time period * d_t, instead got a treatment array of shape {T.shape}.\"\n                if self.transformer:\n                    T = np.hstack([\n                        base_expand_treatments(\n                            X, T[:, [t]], transform=transform)[1] for t in range(self._n_periods)\n                    ])\n            outTs.append(T)\n        return (X,) + tuple(outTs)\n\n    @property\n    def bias_part_of_coef(self):\n        return self.ortho_learner_model_final_._model_final._fit_cate_intercept\n\n    @property\n    def fit_cate_intercept_(self):\n        return self.ortho_learner_model_final_._model_final._fit_cate_intercept\n\n    @property\n    def original_featurizer(self):\n        # NOTE: important to use the _ortho_learner_model_final_ attribute instead of the\n        #       attribute so that the trained featurizer will be passed through\n        return self.ortho_learner_model_final_._model_final_trained[0]._original_featurizer\n\n    @property\n    def featurizer_(self):\n        # NOTE This is used by the inference methods and has to be the overall featurizer. intended\n        # for internal use by the library\n        return self.ortho_learner_model_final_._model_final_trained[0]._featurizer\n\n    @property\n    def model_final_(self):\n        # NOTE This is used by the inference methods and is more for internal use to the library\n        #      We need to use the _ortho_learner's copy to retain the information from fitting\n        return self.ortho_learner_model_final_.model_final_\n\n    @property\n    def model_final(self):\n        return self._gen_model_final()\n\n    @model_final.setter\n    def model_final(self, model):\n        if model is not None:\n            raise ValueError(\"Parameter `model_final` cannot be altered for this estimator!\")\n\n    @property\n    def models_y(self):\n        return [[mdl._model_y for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def models_t(self):\n        return [[mdl._model_t for mdl in mdls] for mdls in super().models_nuisance_]\n\n    @property\n    def nuisance_scores_y(self):\n        return self.nuisance_scores_[0]\n\n    @property\n    def nuisance_scores_t(self):\n        return self.nuisance_scores_[1]\n\n    @property\n    def residuals_(self):\n        \"\"\"\n        Get the residuals.\n\n        Returns a tuple (y_res, T_res, X, W), of the residuals from the first stage estimation\n        along with the associated X and W. Samples are not guaranteed to be in the same\n        order as the input order.\n        \"\"\"\n        if not hasattr(self, '_cached_values'):\n            raise AttributeError(\"Estimator is not fitted yet!\")\n        if self._cached_values is None:\n            raise AttributeError(\"`fit` was called with `cache_values=False`. \"\n                                 \"Set to `True` to enable residual storage.\")\n        Y_res, T_res = self._cached_values.nuisances\n        return Y_res, T_res, self._cached_values.X, self._cached_values.W\n"
  },
  {
    "path": "econml/panel/utilities.py",
    "content": "\nimport numpy as np\n\n\ndef long(x):\n    \"\"\"\n    Reshape panel data to long format, i.e. (n_units * n_periods, d_x) or (n_units * n_periods,).\n\n    Parameters\n    ----------\n    x : array_like\n        Panel data in multi-dimensional format (n_units, n_periods, d_x) or (n_units, n_periods)\n\n    Returns\n    -------\n    arr : array_like\n    Reshaped panel data in long format\n    \"\"\"\n    n_units = x.shape[0]\n    n_periods = x.shape[1]\n    if np.ndim(x) == 2:\n        return x.reshape(n_units * n_periods)\n    else:\n        return x.reshape(n_units * n_periods, -1)\n\n\ndef wide(x):\n    \"\"\"\n    Reshape panel data to wide format, i.e. (n_units, n_periods * d_x) or (n_units, n_periods,).\n\n    If the input is two-dimensional, this is a no-op because it is already considered to be in wide format.\n\n    Parameters\n    ----------\n    x : array_like\n        Panel data in multi-dimensional format (n_units, n_periods, d_x) or (n_units, n_periods).\n\n    Returns\n    -------\n    arr : array_like\n    Reshaped panel data in wide format\n    \"\"\"\n    n_units = x.shape[0]\n    return x.reshape(n_units, -1)\n"
  },
  {
    "path": "econml/policy/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._forest import PolicyTree, PolicyForest\r\nfrom ._drlearner import DRPolicyTree, DRPolicyForest\r\n\r\n__all__ = [\"PolicyTree\",\r\n           \"PolicyForest\",\r\n           \"DRPolicyTree\",\r\n           \"DRPolicyForest\"]\r\n"
  },
  {
    "path": "econml/policy/_base.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Base classes for all Policy estimators.\"\"\"\r\n\r\nimport abc\r\n\r\n\r\nclass PolicyLearner(metaclass=abc.ABCMeta):\r\n\r\n    def fit(self, Y, T, *, X=None, **kwargs):\r\n        pass\r\n\r\n    def predict_value(self, X):\r\n        pass\r\n\r\n    def predict(self, X):\r\n        pass\r\n"
  },
  {
    "path": "econml/policy/_drlearner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom warnings import warn\r\nimport numpy as np\r\nfrom sklearn.base import clone\r\nfrom ..utilities import filter_none_kwargs, check_input_arrays\r\nfrom ..dr import DRLearner\r\nfrom ..dr._drlearner import _ModelFinal\r\nfrom ._base import PolicyLearner\r\nfrom . import PolicyTree, PolicyForest\r\n\r\n\r\nclass _PolicyModelFinal(_ModelFinal):\r\n\r\n    def fit(self, Y, T, X=None, W=None, *, nuisances,\r\n            sample_weight=None, freq_weight=None, sample_var=None, groups=None):\r\n        if sample_var is not None:\r\n            warn('Parameter `sample_var` is ignored by the final estimator')\r\n            sample_var = None\r\n        Y_pred, _, _ = nuisances\r\n\r\n        self.d_y = Y_pred.shape[1:-1]  # track whether there's a Y dimension (must be a singleton)\r\n        if (X is not None) and (self._featurizer is not None):\r\n            X = self._featurizer.fit_transform(X)\r\n        filtered_kwargs = filter_none_kwargs(sample_weight=sample_weight, sample_var=sample_var)\r\n        ys = Y_pred[..., 1:] - Y_pred[..., [0]]  # subtract control results from each other arm\r\n        if self.d_y:  # need to squeeze out singleton so that we fit on 2D array\r\n            ys = ys.squeeze(1)\r\n        ys = np.hstack([np.zeros((ys.shape[0], 1)), ys])\r\n        self.model_cate = self._model_final.fit(X, ys, **filtered_kwargs)\r\n        return self\r\n\r\n    def predict(self, X=None):\r\n        if (X is not None) and (self._featurizer is not None):\r\n            X = self._featurizer.transform(X)\r\n        pred = self.model_cate.predict_value(X)[:, 1:]\r\n        if self.d_y:  # need to reintroduce singleton Y dimension\r\n            return pred[:, np.newaxis, :]\r\n        return pred\r\n\r\n    def score(self, Y, T, X=None, W=None, *, nuisances, sample_weight=None, groups=None):\r\n        return 0\r\n\r\n\r\nclass _DRLearnerWrapper(DRLearner):\r\n\r\n    def _gen_ortho_learner_model_final(self):\r\n        return _PolicyModelFinal(self._gen_model_final(), self._gen_featurizer(), self.multitask_model_final)\r\n\r\n\r\nclass _BaseDRPolicyLearner(PolicyLearner):\r\n\r\n    def _gen_drpolicy_learner(self):\r\n        pass\r\n\r\n    def fit(self, Y, T, *, X=None, W=None, sample_weight=None, groups=None):\r\n        \"\"\"\r\n        Estimate a policy model from data.\r\n\r\n        Parameters\r\n        ----------\r\n        Y: (n,) vector of length n\r\n            Outcomes for each sample\r\n        T: (n,) vector of length n\r\n            Treatments for each sample\r\n        X:(n, d_x) matrix, optional\r\n            Features for each sample\r\n        W:(n, d_w) matrix, optional\r\n            Controls for each sample\r\n        sample_weight:(n,) vector, optional\r\n            Weights for each samples\r\n        groups: (n,) vector, optional\r\n            All rows corresponding to the same group will be kept together during splitting.\r\n            If groups is not None, the `cv` argument passed to this class's initializer\r\n            must support a 'groups' argument to its split method.\r\n\r\n        Returns\r\n        -------\r\n        self: object instance\r\n        \"\"\"\r\n        self.drlearner_ = self._gen_drpolicy_learner()\r\n        self.drlearner_.fit(Y, T, X=X, W=W, sample_weight=sample_weight, groups=groups)\r\n        return self\r\n\r\n    def predict_value(self, X):\r\n        \"\"\"Get effect values for each non-baseline treatment and for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples.\r\n\r\n        Returns\r\n        -------\r\n        values : array_like of shape (n_samples, n_treatments - 1)\r\n            The predicted average value for each sample and for each non-baseline treatment, as compared\r\n            to the baseline treatment value and based on the feature neighborhoods defined by the trees.\r\n        \"\"\"\r\n        return self.drlearner_.const_marginal_effect(X)\r\n\r\n    def predict_proba(self, X):\r\n        \"\"\"Predict the probability of recommending each treatment.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples.\r\n\r\n        Returns\r\n        -------\r\n        treatment_proba : array_like of shape (n_samples, n_treatments)\r\n            The probability of each treatment recommendation\r\n        \"\"\"\r\n        X, = check_input_arrays(X)\r\n        if self.drlearner_.featurizer_ is not None:\r\n            X = self.drlearner_.featurizer_.fit_transform(X)\r\n        return self.policy_model_.predict_proba(X)\r\n\r\n    def predict(self, X):\r\n        \"\"\"Get recommended treatment for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples.\r\n\r\n        Returns\r\n        -------\r\n        treatment : array_like of shape (n_samples,)\r\n            The index of the recommended treatment in the same order as in categories, or in\r\n            lexicographic order if `categories='auto'`. 0 corresponds to the baseline/control treatment.\r\n            For ensemble policy models, recommended treatments are aggregated from each model in the ensemble\r\n            and the treatment that receives the most votes is returned. Use `predict_proba` to get the fraction\r\n            of models in the ensemble that recommend each treatment for each sample.\r\n        \"\"\"\r\n        return np.argmax(self.predict_proba(X), axis=1)\r\n\r\n    def policy_feature_names(self, *, feature_names=None):\r\n        \"\"\"\r\n        Get the output feature names.\r\n\r\n        Parameters\r\n        ----------\r\n        feature_names: list of str of length X.shape[1] or None\r\n            The names of the input features. If None and X is a dataframe, it defaults to the column names\r\n            from the dataframe.\r\n\r\n        Returns\r\n        -------\r\n        out_feature_names: list of str or None\r\n            The names of the output features on which the policy model is fitted.\r\n        \"\"\"\r\n        return self.drlearner_.cate_feature_names(feature_names=feature_names)\r\n\r\n    def policy_treatment_names(self, *, treatment_names=None):\r\n        \"\"\"\r\n        Get the names of the treatments.\r\n\r\n        Parameters\r\n        ----------\r\n        treatment_names: list of str of length n_categories\r\n            The names of the treatments (including the baseling). If None then values are auto-generated\r\n            based on input metadata.\r\n\r\n        Returns\r\n        -------\r\n        out_treatment_names: list of str\r\n            The names of the treatments including the baseline/control treatment.\r\n        \"\"\"\r\n        if treatment_names is not None:\r\n            if len(treatment_names) != len(self.drlearner_.cate_treatment_names()) + 1:\r\n                raise ValueError('The variable `treatment_names` should have length equal to '\r\n                                 'n_treatments + 1, containing the value of the control/none/baseline treatment as '\r\n                                 'the first element and the names of all the treatments as subsequent elements.')\r\n            return treatment_names\r\n        return ['None'] + self.drlearner_.cate_treatment_names()\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        \"\"\"\r\n        Get the feature importances based on the amount of parameter heterogeneity they create.\r\n\r\n        The higher, the more important the feature.\r\n\r\n        Parameters\r\n        ----------\r\n        max_depth : int, default 4\r\n            Splits of depth larger than `max_depth` are not used in this calculation\r\n        depth_decay_exponent: double, default 2.0\r\n            The contribution of each split to the total score is re-weighted by ``1 / (1 + `depth`)**2.0``.\r\n\r\n        Returns\r\n        -------\r\n        feature_importances_ : ndarray of shape (n_features,)\r\n            Normalized total parameter heterogeneity inducing importance of each feature\r\n        \"\"\"\r\n        return self.policy_model_.feature_importances(max_depth=max_depth,\r\n                                                      depth_decay_exponent=depth_decay_exponent)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n    @property\r\n    def policy_model_(self):\r\n        \"\"\"The trained final stage policy model.\"\"\"\r\n        return self.drlearner_.multitask_model_cate\r\n\r\n\r\nclass DRPolicyTree(_BaseDRPolicyLearner):\r\n    \"\"\"\r\n    Policy learner that uses doubly-robust correction techniques to account for selection bias between treatment arms.\r\n\r\n    In this estimator, the policy is estimated by first constructing doubly robust estimates of the counterfactual\r\n    outcomes\r\n\r\n    .. math ::\r\n        Y_{i, t}^{DR} = E[Y | X_i, W_i, T_i=t]\\\r\n            + \\\\frac{Y_i - E[Y | X_i, W_i, T_i=t]}{Pr[T_i=t | X_i, W_i]} \\\\cdot 1\\\\{T_i=t\\\\}\r\n\r\n    Then optimizing the objective\r\n\r\n    .. math ::\r\n        V(\\\\pi) = \\\\sum_i \\\\sum_t \\\\pi_t(X_i) * (Y_{i, t} - Y_{i, 0})\r\n\r\n    with the constraint that only one of :math:`\\\\pi_t(X_i)` is 1 and the rest are 0, for each :math:`X_i`.\r\n\r\n    Thus if we estimate the nuisance functions :math:`h(X, W, T) = E[Y | X, W, T]` and\r\n    :math:`p_t(X, W)=Pr[T=t | X, W]` in the first stage, we can estimate the final stage cate for each\r\n    treatment t, by running a constructing a decision tree that maximizes the objective :math:`V(\\\\pi)`\r\n\r\n    The problem of estimating the nuisance function :math:`p` is a simple multi-class classification\r\n    problem of predicting the label :math:`T` from :math:`X, W`. The :class:`.DRLearner`\r\n    class takes as input the parameter ``model_propensity``, which is an arbitrary scikit-learn\r\n    classifier, that is internally used to solve this classification problem.\r\n\r\n    The second nuisance function :math:`h` is a simple regression problem and the :class:`.DRLearner`\r\n    class takes as input the parameter ``model_regressor``, which is an arbitrary scikit-learn regressor that\r\n    is internally used to solve this regression problem.\r\n\r\n    Parameters\r\n    ----------\r\n    model_propensity: estimator, default ``'auto'``\r\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\r\n\r\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\r\n\r\n        - Otherwise, see :ref:`model_selection` for the range of supported options\r\n\r\n    model_regression: estimator, default ``'auto'``\r\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\r\n        concatenated. The one-hot-encoding excludes the baseline treatment.\r\n\r\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\r\n\r\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\r\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\r\n          and a regressor otherwise\r\n\r\n    featurizer : :term:`transformer`, optional\r\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\r\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\r\n        If featurizer=None, then CATE is trained on X.\r\n\r\n    min_propensity : float, default ``1e-6``\r\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\r\n\r\n    categories: 'auto' or list, default 'auto'\r\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\r\n        The first category will be treated as the control treatment.\r\n\r\n    cv: int, cross-validation generator or an iterable, default 2\r\n        Determines the cross-validation splitting strategy.\r\n        Possible inputs for cv are:\r\n\r\n        - None, to use the default 3-fold cross-validation,\r\n        - integer, to specify the number of folds.\r\n        - :term:`CV splitter`\r\n        - An iterable yielding (train, test) splits as arrays of indices.\r\n\r\n        For integer/None inputs, if the treatment is discrete\r\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\r\n        :class:`~sklearn.model_selection.KFold` is used\r\n        (with a random shuffle in either case).\r\n\r\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\r\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\r\n\r\n    mc_iters: int, optional\r\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\r\n\r\n    mc_agg: {'mean', 'median'}, default 'mean'\r\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\r\n        cross-fitting.\r\n\r\n    max_depth : int or None, optional\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int, float, default 10\r\n        The minimum number of splitting samples required to split an internal node.\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int, float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` splitting samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression. After construction the tree is also pruned\r\n        so that there are at least min_samples_leaf estimation samples on\r\n        each leaf.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        splitting samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided. After construction\r\n        the tree is pruned so that the fraction of the sum total weight\r\n        of the estimation samples contained in each leaf node is at\r\n        least min_weight_fraction_leaf\r\n\r\n    max_features : int, float, str, or None, default \"auto\"\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of split samples, ``N_t`` is the number of\r\n        split samples at the current node, ``N_t_L`` is the number of split samples in the\r\n        left child, and ``N_t_R`` is the number of split samples in the right child.\r\n\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest : bool, default True\r\n        Whether to use honest trees, i.e. half of the samples are used for\r\n        creating the tree structure and the other half for the estimation at\r\n        the leafs. If False, then all samples are used for both parts.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n\r\n        If int, random_state is the seed used by the random number generator;\r\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\r\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\r\n        by :mod:`np.random<numpy.random>`.\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 model_regression=\"auto\",\r\n                 model_propensity=\"auto\",\r\n                 featurizer=None,\r\n                 min_propensity=1e-6,\r\n                 categories='auto',\r\n                 cv=2,\r\n                 mc_iters=None,\r\n                 mc_agg='mean',\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 random_state=None):\r\n        self.model_regression = clone(model_regression, safe=False)\r\n        self.model_propensity = clone(model_propensity, safe=False)\r\n        self.featurizer = clone(featurizer, safe=False)\r\n        self.min_propensity = min_propensity\r\n        self.categories = categories\r\n        self.cv = cv\r\n        self.mc_iters = mc_iters\r\n        self.mc_agg = mc_agg\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.max_features = max_features\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n        self.random_state = random_state\r\n\r\n    def _gen_drpolicy_learner(self):\r\n        return _DRLearnerWrapper(model_regression=self.model_regression,\r\n                                 model_propensity=self.model_propensity,\r\n                                 featurizer=self.featurizer,\r\n                                 min_propensity=self.min_propensity,\r\n                                 categories=self.categories,\r\n                                 cv=self.cv,\r\n                                 mc_iters=self.mc_iters,\r\n                                 mc_agg=self.mc_agg,\r\n                                 model_final=PolicyTree(max_depth=self.max_depth,\r\n                                                        min_samples_split=self.min_samples_split,\r\n                                                        min_samples_leaf=self.min_samples_leaf,\r\n                                                        min_weight_fraction_leaf=self.min_weight_fraction_leaf,\r\n                                                        max_features=self.max_features,\r\n                                                        min_impurity_decrease=self.min_impurity_decrease,\r\n                                                        min_balancedness_tol=self.min_balancedness_tol,\r\n                                                        honest=self.honest,\r\n                                                        random_state=self.random_state),\r\n                                 multitask_model_final=True,\r\n                                 random_state=self.random_state)\r\n\r\n    def plot(self, *, feature_names=None, treatment_names=None, ax=None, title=None,\r\n             max_depth=None, filled=True, rounded=True, precision=3, fontsize=None):\r\n        \"\"\"\r\n        Export policy trees to matplotlib.\r\n\r\n        Parameters\r\n        ----------\r\n        ax : :class:`matplotlib.axes.Axes`, optional\r\n            The axes on which to plot\r\n\r\n        title : str, optional\r\n            A title for the final figure to be printed at the top of the page.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments including the baseline/control\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n\r\n        fontsize : int, optional\r\n            Font size for text\r\n        \"\"\"\r\n        return self.policy_model_.plot(feature_names=self.policy_feature_names(feature_names=feature_names),\r\n                                       treatment_names=self.policy_treatment_names(treatment_names=treatment_names),\r\n                                       ax=ax,\r\n                                       title=title,\r\n                                       max_depth=max_depth,\r\n                                       filled=filled,\r\n                                       rounded=rounded,\r\n                                       precision=precision,\r\n                                       fontsize=fontsize)\r\n\r\n    def export_graphviz(self, *, out_file=None,\r\n                        feature_names=None, treatment_names=None,\r\n                        max_depth=None, filled=True, leaves_parallel=True,\r\n                        rotate=False, rounded=True, special_characters=False, precision=3):\r\n        \"\"\"\r\n        Export a graphviz dot file representing the learned tree model.\r\n\r\n        Parameters\r\n        ----------\r\n        out_file : file object or str, optional\r\n            Handle or name of the output file. If ``None``, the result is\r\n            returned as a string.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments, including the baseline treatment\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        leaves_parallel : bool, default True\r\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\r\n\r\n        rotate : bool, default False\r\n            When set to ``True``, orient tree left to right rather than top-down.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        special_characters : bool, default False\r\n            When set to ``False``, ignore special characters for PostScript\r\n            compatibility.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n        \"\"\"\r\n        return self.policy_model_.export_graphviz(out_file=out_file,\r\n                                                  feature_names=self.policy_feature_names(feature_names=feature_names),\r\n                                                  treatment_names=self.policy_treatment_names(\r\n                                                      treatment_names=treatment_names),\r\n                                                  max_depth=max_depth,\r\n                                                  filled=filled,\r\n                                                  leaves_parallel=leaves_parallel,\r\n                                                  rotate=rotate,\r\n                                                  rounded=rounded,\r\n                                                  special_characters=special_characters,\r\n                                                  precision=precision)\r\n\r\n    def render(self, out_file, *, format='pdf', view=True, feature_names=None,\r\n               treatment_names=None, max_depth=None,\r\n               filled=True, leaves_parallel=True, rotate=False, rounded=True,\r\n               special_characters=False, precision=3):\r\n        \"\"\"\r\n        Render the tree to a flie.\r\n\r\n        Parameters\r\n        ----------\r\n        out_file : file name to save to\r\n\r\n        format : str, default 'pdf'\r\n            The file format to render to; must be supported by graphviz\r\n\r\n        view : bool, default True\r\n            Whether to open the rendered result with the default application.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments, including the baseline/control\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        leaves_parallel : bool, default True\r\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\r\n\r\n        rotate : bool, default False\r\n            When set to ``True``, orient tree left to right rather than top-down.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        special_characters : bool, default False\r\n            When set to ``False``, ignore special characters for PostScript\r\n            compatibility.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n        \"\"\"\r\n        return self.policy_model_.render(out_file,\r\n                                         format=format,\r\n                                         view=view,\r\n                                         feature_names=self.policy_feature_names(feature_names=feature_names),\r\n                                         treatment_names=self.policy_treatment_names(treatment_names=treatment_names),\r\n                                         max_depth=max_depth,\r\n                                         filled=filled,\r\n                                         leaves_parallel=leaves_parallel,\r\n                                         rotate=rotate,\r\n                                         rounded=rounded,\r\n                                         special_characters=special_characters,\r\n                                         precision=precision)\r\n\r\n\r\nclass DRPolicyForest(_BaseDRPolicyLearner):\r\n    \"\"\"\r\n    Policy learner that uses doubly-robust correction techniques to account for selection bias between treatment arms.\r\n\r\n    In this estimator, the policy is estimated by first constructing doubly robust estimates of the counterfactual\r\n    outcomes\r\n\r\n    .. math ::\r\n        Y_{i, t}^{DR} = E[Y | X_i, W_i, T_i=t]\\\r\n            + \\\\frac{Y_i - E[Y | X_i, W_i, T_i=t]}{Pr[T_i=t | X_i, W_i]} \\\\cdot 1\\\\{T_i=t\\\\}\r\n\r\n    Then optimizing the objective\r\n\r\n    .. math ::\r\n        V(\\\\pi) = \\\\sum_i \\\\sum_t \\\\pi_t(X_i) * (Y_{i, t} - Y_{i, 0})\r\n\r\n    with the constraint that only one of :math:`\\\\pi_t(X_i)` is 1 and the rest are 0, for each :math:`X_i`.\r\n\r\n    Thus if we estimate the nuisance functions :math:`h(X, W, T) = E[Y | X, W, T]` and\r\n    :math:`p_t(X, W)=Pr[T=t | X, W]` in the first stage, we can estimate the final stage cate for each\r\n    treatment t, by running a constructing a decision tree that maximizes the objective :math:`V(\\\\pi)`\r\n\r\n    The problem of estimating the nuisance function :math:`p` is a simple multi-class classification\r\n    problem of predicting the label :math:`T` from :math:`X, W`. The :class:`.DRLearner`\r\n    class takes as input the parameter ``model_propensity``, which is an arbitrary scikit-learn\r\n    classifier, that is internally used to solve this classification problem.\r\n\r\n    The second nuisance function :math:`h` is a simple regression problem and the :class:`.DRLearner`\r\n    class takes as input the parameter ``model_regressor``, which is an arbitrary scikit-learn regressor that\r\n    is internally used to solve this regression problem.\r\n\r\n    Parameters\r\n    ----------\r\n    model_propensity: estimator, default ``'auto'``\r\n        Classifier for Pr[T=t | X, W]. Trained by regressing treatments on (features, controls) concatenated.\r\n\r\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\r\n\r\n        - Otherwise, see :ref:`model_selection` for the range of supported options\r\n\r\n    model_regression: estimator, default ``'auto'``\r\n        Estimator for E[Y | X, W, T]. Trained by regressing Y on (features, controls, one-hot-encoded treatments)\r\n        concatenated. The one-hot-encoding excludes the baseline treatment.\r\n\r\n        - If ``'auto'``, the model will be the best-fitting of a set of linear and forest models\r\n\r\n        - Otherwise, see :ref:`model_selection` for the range of supported options;\r\n          if a single model is specified it should be a classifier if `discrete_outcome` is True\r\n          and a regressor otherwise\r\n\r\n    featurizer : :term:`transformer`, optional\r\n        Must support fit_transform and transform. Used to create composite features in the final CATE regression.\r\n        It is ignored if X is None. The final CATE will be trained on the outcome of featurizer.fit_transform(X).\r\n        If featurizer=None, then CATE is trained on X.\r\n\r\n    min_propensity : float, default ``1e-6``\r\n        The minimum propensity at which to clip propensity estimates to avoid dividing by zero.\r\n\r\n    categories: 'auto' or list, default 'auto'\r\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\r\n        The first category will be treated as the control treatment.\r\n\r\n    cv: int, cross-validation generator or an iterable, default 2\r\n        Determines the cross-validation splitting strategy.\r\n        Possible inputs for cv are:\r\n\r\n        - None, to use the default 3-fold cross-validation,\r\n        - integer, to specify the number of folds.\r\n        - :term:`CV splitter`\r\n        - An iterable yielding (train, test) splits as arrays of indices.\r\n\r\n        For integer/None inputs, if the treatment is discrete\r\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\r\n        :class:`~sklearn.model_selection.KFold` is used\r\n        (with a random shuffle in either case).\r\n\r\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\r\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\r\n\r\n    mc_iters: int, optional\r\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\r\n\r\n    mc_agg: {'mean', 'median'}, default 'mean'\r\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\r\n        cross-fitting.\r\n\r\n    n_estimators : int, default 100\r\n        The total number of trees in the forest. The forest consists of a\r\n        forest of sqrt(n_estimators) sub-forests, where each sub-forest\r\n        contains sqrt(n_estimators) trees.\r\n\r\n    max_depth : int or None, optional\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int, float, default 10\r\n        The minimum number of splitting samples required to split an internal node.\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int, float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` splitting samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression. After construction the tree is also pruned\r\n        so that there are at least min_samples_leaf estimation samples on\r\n        each leaf.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        splitting samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided. After construction\r\n        the tree is pruned so that the fraction of the sum total weight\r\n        of the estimation samples contained in each leaf node is at\r\n        least min_weight_fraction_leaf\r\n\r\n    max_features : int, float, str, or None, default \"auto\"\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of split samples, ``N_t`` is the number of\r\n        split samples at the current node, ``N_t_L`` is the number of split samples in the\r\n        left child, and ``N_t_R`` is the number of split samples in the right child.\r\n\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    max_samples : int or float in (0, 1], default .5,\r\n        The number of samples to use for each subsample that is used to train each tree:\r\n\r\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\r\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\r\n          from all the samples.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest : bool, default True\r\n        Whether to use honest trees, i.e. half of the samples are used for\r\n        creating the tree structure and the other half for the estimation at\r\n        the leafs. If False, then all samples are used for both parts.\r\n\r\n    n_jobs : int or None, default -1\r\n        The number of jobs to run in parallel for both `fit` and `predict`.\r\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\r\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\r\n        for more details.\r\n\r\n    verbose : int, default 0\r\n        Controls the verbosity when fitting and predicting.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n\r\n        If int, random_state is the seed used by the random number generator;\r\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\r\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\r\n        by :mod:`np.random<numpy.random>`.\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 model_regression=\"auto\",\r\n                 model_propensity=\"auto\",\r\n                 featurizer=None,\r\n                 min_propensity=1e-6,\r\n                 categories='auto',\r\n                 cv=2,\r\n                 mc_iters=None,\r\n                 mc_agg='mean',\r\n                 n_estimators=100,\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.5,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 n_jobs=-1,\r\n                 verbose=0,\r\n                 random_state=None):\r\n        self.model_regression = clone(model_regression, safe=False)\r\n        self.model_propensity = clone(model_propensity, safe=False)\r\n        self.featurizer = clone(featurizer, safe=False)\r\n        self.min_propensity = min_propensity\r\n        self.categories = categories\r\n        self.cv = cv\r\n        self.mc_iters = mc_iters\r\n        self.mc_agg = mc_agg\r\n        self.n_estimators = n_estimators\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.max_features = max_features\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.max_samples = max_samples\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n        self.n_jobs = n_jobs\r\n        self.verbose = verbose\r\n        self.random_state = random_state\r\n\r\n    def _gen_drpolicy_learner(self):\r\n        return _DRLearnerWrapper(model_regression=self.model_regression,\r\n                                 model_propensity=self.model_propensity,\r\n                                 featurizer=self.featurizer,\r\n                                 min_propensity=self.min_propensity,\r\n                                 categories=self.categories,\r\n                                 cv=self.cv,\r\n                                 mc_iters=self.mc_iters,\r\n                                 mc_agg=self.mc_agg,\r\n                                 model_final=PolicyForest(n_estimators=self.n_estimators,\r\n                                                          max_depth=self.max_depth,\r\n                                                          min_samples_split=self.min_samples_split,\r\n                                                          min_samples_leaf=self.min_samples_leaf,\r\n                                                          min_weight_fraction_leaf=self.min_weight_fraction_leaf,\r\n                                                          max_features=self.max_features,\r\n                                                          min_impurity_decrease=self.min_impurity_decrease,\r\n                                                          max_samples=self.max_samples,\r\n                                                          min_balancedness_tol=self.min_balancedness_tol,\r\n                                                          honest=self.honest,\r\n                                                          n_jobs=self.n_jobs,\r\n                                                          verbose=self.verbose,\r\n                                                          random_state=self.random_state),\r\n                                 multitask_model_final=True,\r\n                                 random_state=self.random_state)\r\n\r\n    def plot(self, tree_id, *, feature_names=None, treatment_names=None,\r\n             ax=None, title=None,\r\n             max_depth=None, filled=True, rounded=True, precision=3, fontsize=None):\r\n        \"\"\"\r\n        Export policy trees to matplotlib.\r\n\r\n        Parameters\r\n        ----------\r\n        tree_id : int\r\n            The id of the tree of the forest to plot\r\n\r\n        ax : :class:`matplotlib.axes.Axes`, optional\r\n            The axes on which to plot\r\n\r\n        title : str, optional\r\n            A title for the final figure to be printed at the top of the page.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments, starting with a name for the baseline/control treatment\r\n            (alphanumerically smallest)\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n\r\n        fontsize : int, optional\r\n            Font size for text\r\n        \"\"\"\r\n        return self.policy_model_[tree_id].plot(feature_names=self.policy_feature_names(feature_names=feature_names),\r\n                                                treatment_names=self.policy_treatment_names(\r\n                                                    treatment_names=treatment_names),\r\n                                                ax=ax,\r\n                                                title=title,\r\n                                                max_depth=max_depth,\r\n                                                filled=filled,\r\n                                                rounded=rounded,\r\n                                                precision=precision,\r\n                                                fontsize=fontsize)\r\n\r\n    def export_graphviz(self, tree_id, *, out_file=None, feature_names=None, treatment_names=None,\r\n                        max_depth=None,\r\n                        filled=True, leaves_parallel=True,\r\n                        rotate=False, rounded=True, special_characters=False, precision=3):\r\n        \"\"\"\r\n        Export a graphviz dot file representing the learned tree model.\r\n\r\n        Parameters\r\n        ----------\r\n        tree_id : int\r\n            The id of the tree of the forest to plot\r\n\r\n        out_file : file object or str, optional\r\n            Handle or name of the output file. If ``None``, the result is\r\n            returned as a string.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments, starting with a name for the baseline/control/None treatment\r\n            (alphanumerically smallest in case of discrete treatment)\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        leaves_parallel : bool, default True\r\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\r\n\r\n        rotate : bool, default False\r\n            When set to ``True``, orient tree left to right rather than top-down.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        special_characters : bool, default False\r\n            When set to ``False``, ignore special characters for PostScript\r\n            compatibility.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n        \"\"\"\r\n        feature_names = self.policy_feature_names(feature_names=feature_names)\r\n        return self.policy_model_[tree_id].export_graphviz(out_file=out_file,\r\n                                                           feature_names=feature_names,\r\n                                                           treatment_names=self.policy_treatment_names(\r\n                                                               treatment_names=treatment_names),\r\n                                                           max_depth=max_depth,\r\n                                                           filled=filled,\r\n                                                           leaves_parallel=leaves_parallel,\r\n                                                           rotate=rotate,\r\n                                                           rounded=rounded,\r\n                                                           special_characters=special_characters,\r\n                                                           precision=precision)\r\n\r\n    def render(self, tree_id, out_file, *, format='pdf', view=True,\r\n               feature_names=None,\r\n               treatment_names=None,\r\n               max_depth=None,\r\n               filled=True, leaves_parallel=True, rotate=False, rounded=True,\r\n               special_characters=False, precision=3):\r\n        \"\"\"\r\n        Render the tree to a flie.\r\n\r\n        Parameters\r\n        ----------\r\n        tree_id : int\r\n            The id of the tree of the forest to plot\r\n\r\n        out_file : file name to save to\r\n\r\n        format : str, default 'pdf'\r\n            The file format to render to; must be supported by graphviz\r\n\r\n        view : bool, default True\r\n            Whether to open the rendered result with the default application.\r\n\r\n        feature_names : list of str, optional\r\n            Names of each of the features.\r\n\r\n        treatment_names : list of str, optional\r\n            Names of each of the treatments, starting with a name for the baseline/control treatment\r\n            (alphanumerically smallest in case of discrete treatment)\r\n\r\n        max_depth: int or None, optional\r\n            The maximum tree depth to plot\r\n\r\n        filled : bool, default False\r\n            When set to ``True``, paint nodes to indicate majority class for\r\n            classification, extremity of values for regression, or purity of node\r\n            for multi-output.\r\n\r\n        leaves_parallel : bool, default True\r\n            When set to ``True``, draw all leaf nodes at the bottom of the tree.\r\n\r\n        rotate : bool, default False\r\n            When set to ``True``, orient tree left to right rather than top-down.\r\n\r\n        rounded : bool, default True\r\n            When set to ``True``, draw node boxes with rounded corners and use\r\n            Helvetica fonts instead of Times-Roman.\r\n\r\n        special_characters : bool, default False\r\n            When set to ``False``, ignore special characters for PostScript\r\n            compatibility.\r\n\r\n        precision : int, default 3\r\n            Number of digits of precision for floating point in the values of\r\n            impurity, threshold and value attributes of each node.\r\n        \"\"\"\r\n        feature_names = self.policy_feature_names(feature_names=feature_names)\r\n        return self.policy_model_[tree_id].render(out_file,\r\n                                                  feature_names=feature_names,\r\n                                                  treatment_names=self.policy_treatment_names(\r\n                                                      treatment_names=treatment_names),\r\n                                                  format=format,\r\n                                                  view=view,\r\n                                                  max_depth=max_depth,\r\n                                                  filled=filled,\r\n                                                  leaves_parallel=leaves_parallel,\r\n                                                  rotate=rotate,\r\n                                                  rounded=rounded,\r\n                                                  special_characters=special_characters,\r\n                                                  precision=precision)\r\n"
  },
  {
    "path": "econml/policy/_forest/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._tree import PolicyTree\r\nfrom ._forest import PolicyForest\r\n\r\n__all__ = [\"PolicyTree\",\r\n           \"PolicyForest\"]\r\n"
  },
  {
    "path": "econml/policy/_forest/_criterion.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n# See _criterion.pyx for implementation details.\r\n\r\nfrom ...tree._tree cimport DTYPE_t          # Type of X\r\nfrom ...tree._tree cimport DOUBLE_t         # Type of y, sample_weight\r\nfrom ...tree._tree cimport SIZE_t           # Type for indices and counters\r\nfrom ...tree._tree cimport INT32_t          # Signed 32 bit integer\r\nfrom ...tree._tree cimport UINT32_t         # Unsigned 32 bit integer\r\n\r\nfrom ...tree._criterion cimport RegressionCriterion\r\n\r\ncdef class LinearPolicyCriterion(RegressionCriterion):\r\n    \"\"\" \r\n    \"\"\"\r\n    pass\r\n"
  },
  {
    "path": "econml/policy/_forest/_criterion.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numpy as np\r\n\r\ncdef double INFINITY = np.inf\r\n\r\n###################################################################################\r\n# Policy Criteria\r\n###################################################################################\r\n\r\ncdef class LinearPolicyCriterion(RegressionCriterion):\r\n    r\"\"\" \r\n    \"\"\"\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Evaluate the impurity of the current node, i.e. the impurity of\r\n        samples[start:end].\r\n        \"\"\"\r\n        return - _max(self.sum_total, self.n_outputs) / self.weighted_n_node_samples\r\n\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil:\r\n        \"\"\"Compute a proxy of the impurity reduction.\r\n        \"\"\"\r\n        return (_max(self.sum_left, self.n_outputs) + _max(self.sum_right, self.n_outputs))\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        \"\"\"Evaluate the impurity in children nodes, i.e. the impurity of the\r\n        left child (samples[start:pos]) and the impurity the right child\r\n        (samples[pos:end]).\r\n        \"\"\"\r\n        impurity_left[0] = - _max(self.sum_left, self.n_outputs) / self.weighted_n_left\r\n        impurity_right[0] = - _max(self.sum_right, self.n_outputs) / self.weighted_n_right\r\n\r\n\r\ncdef inline double _max(double* array, SIZE_t n) noexcept nogil:\r\n    cdef SIZE_t k\r\n    cdef double max_val\r\n    max_val = - INFINITY \r\n    for k in range(n):\r\n        if array[k] > max_val:\r\n            max_val = array[k]\r\n    return max_val\r\n"
  },
  {
    "path": "econml/policy/_forest/_forest.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code contains snippets of code from\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/ensemble/_forest.py\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nfrom warnings import warn\r\nfrom abc import ABCMeta\r\nimport numpy as np\r\nimport threading\r\nfrom ..._ensemble import (BaseEnsemble, _partition_estimators, _get_n_samples_subsample, _accumulate_prediction)\r\nfrom ...tree._tree import DTYPE, DOUBLE\r\nfrom ._tree import PolicyTree\r\nfrom joblib import Parallel, delayed\r\nfrom scipy.sparse import hstack as sparse_hstack\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.utils.validation import _check_sample_weight, check_is_fitted\r\nfrom sklearn.utils import check_X_y\r\n\r\n__all__ = [\"PolicyForest\"]\r\n\r\nMAX_INT = np.iinfo(np.int32).max\r\n\r\n# =============================================================================\r\n# Policy Forest\r\n# =============================================================================\r\n\r\n\r\nclass PolicyForest(BaseEnsemble, metaclass=ABCMeta):\r\n    \"\"\"\r\n    Welfare maximization policy forest.\r\n\r\n    Trains a forest to maximize the objective:\r\n    :math:`1/n \\\\sum_i \\\\sum_j a_j(X_i) * y_{ij}`, where, where :math:`a(X)` is constrained\r\n    to take value of 1 only on one coordinate and zero otherwise. This corresponds to a policy\r\n    optimization problem.\r\n\r\n    Parameters\r\n    ----------\r\n    n_estimators : int, default 100\r\n        The total number of trees in the forest. The forest consists of a\r\n        forest of sqrt(n_estimators) sub-forests, where each sub-forest\r\n        contains sqrt(n_estimators) trees.\r\n\r\n    criterion : {``'neg_welfare'``}, default 'neg_welfare'\r\n        The criterion type\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    max_samples : int or float in (0, 1], default .5,\r\n        The number of samples to use for each subsample that is used to train each tree:\r\n\r\n        - If int, then train each tree on `max_samples` samples, sampled without replacement from all the samples\r\n        - If float, then train each tree on ceil(`max_samples` * `n_samples`), sampled without replacement\r\n          from all the samples.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest: bool, default True\r\n        Whether the data should be split in two equally sized samples, such that the one half-sample\r\n        is used to determine the optimal split at each node and the other sample is used to determine\r\n        the value of every node.\r\n\r\n    n_jobs : int or None, default -1\r\n        The number of jobs to run in parallel for both `fit` and `predict`.\r\n        ``None`` means 1 unless in a :func:`joblib.parallel_backend` context.\r\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\r\n        for more details.\r\n\r\n    verbose : int, default 0\r\n        Controls the verbosity when fitting and predicting.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n\r\n        If int, random_state is the seed used by the random number generator;\r\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\r\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\r\n        by :mod:`np.random<numpy.random>`.\r\n\r\n    warm_start : bool, default False\r\n        When set to ``True``, reuse the solution of the previous call to fit\r\n        and add more estimators to the ensemble, otherwise, just fit a whole\r\n        new forest.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n    \"\"\"\r\n\r\n    def __init__(self,\r\n                 n_estimators=100, *,\r\n                 criterion='neg_welfare',\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=\"auto\",\r\n                 min_impurity_decrease=0.,\r\n                 max_samples=.5,\r\n                 min_balancedness_tol=.45,\r\n                 honest=True,\r\n                 n_jobs=-1,\r\n                 random_state=None,\r\n                 verbose=0,\r\n                 warm_start=False):\r\n        super().__init__(\r\n            base_estimator=PolicyTree(),\r\n            n_estimators=n_estimators,\r\n            estimator_params=(\"criterion\", \"max_depth\", \"min_samples_split\",\r\n                              \"min_samples_leaf\", \"min_weight_fraction_leaf\",\r\n                              \"max_features\", \"min_impurity_decrease\", \"honest\",\r\n                              \"min_balancedness_tol\",\r\n                              \"random_state\"))\r\n\r\n        self.criterion = criterion\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.max_features = max_features\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n        self.n_jobs = n_jobs\r\n        self.random_state = random_state\r\n        self.verbose = verbose\r\n        self.warm_start = warm_start\r\n        self.max_samples = max_samples\r\n\r\n    def apply(self, X):\r\n        \"\"\"\r\n        Apply trees in the forest to X, return leaf indices.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        X_leaves : ndarray of shape (n_samples, n_estimators)\r\n            For each datapoint x in X and for each tree in the forest,\r\n            return the index of the leaf x ends up in.\r\n        \"\"\"\r\n        X = self._validate_X_predict(X)\r\n        results = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend=\"threading\")(\r\n            delayed(tree.apply)(X, check_input=False)\r\n            for tree in self.estimators_)\r\n\r\n        return np.array(results).T\r\n\r\n    def decision_path(self, X):\r\n        \"\"\"\r\n        Return the decision path in the forest.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        indicator : sparse matrix of shape (n_samples, n_nodes)\r\n            Return a node indicator matrix where non zero elements indicates\r\n            that the samples goes through the nodes. The matrix is of CSR\r\n            format.\r\n        n_nodes_ptr : ndarray of shape (n_estimators + 1,)\r\n            The columns from indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]]\r\n            gives the indicator value for the i-th estimator.\r\n        \"\"\"\r\n        X = self._validate_X_predict(X)\r\n        indicators = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend='threading')(\r\n            delayed(tree.decision_path)(X, check_input=False)\r\n            for tree in self.estimators_)\r\n\r\n        n_nodes = [0]\r\n        n_nodes.extend([i.shape[1] for i in indicators])\r\n        n_nodes_ptr = np.array(n_nodes).cumsum()\r\n\r\n        return sparse_hstack(indicators).tocsr(), n_nodes_ptr\r\n\r\n    def fit(self, X, y, *, sample_weight=None, **kwargs):\r\n        \"\"\"\r\n        Build a forest of trees from the training set (X, y) and any other auxiliary variables.\r\n\r\n        Parameters\r\n        ----------\r\n        X : array_like of shape (n_samples, n_features)\r\n            The training input samples. Internally, its dtype will be converted\r\n            to ``dtype=np.float64``.\r\n        y : array_like of shape (n_samples,) or (n_samples, n_treatments)\r\n            The outcome values for each sample and for each treatment.\r\n        sample_weight : array_like of shape (n_samples,), default None\r\n            Sample weights. If None, then samples are equally weighted. Splits\r\n            that would create child nodes with net zero or negative weight are\r\n            ignored while searching for a split in each node.\r\n        **kwargs : dictionary of array_like items of shape (n_samples, d_var)\r\n            Auxiliary random variables\r\n\r\n        Returns\r\n        -------\r\n        self : object\r\n        \"\"\"\r\n        X, y = check_X_y(X, y, multi_output=True)\r\n\r\n        if sample_weight is not None:\r\n            sample_weight = _check_sample_weight(sample_weight, X, dtype=DOUBLE)\r\n\r\n        # Remap output\r\n        n_samples, self.n_features_ = X.shape\r\n\r\n        y = np.atleast_1d(y)\r\n        if y.ndim == 1:\r\n            # reshape is necessary to preserve the data contiguity against vs\r\n            # [:, np.newaxis] that does not.\r\n            y = np.reshape(y, (-1, 1))\r\n\r\n        self.n_outputs_ = y.shape[1]\r\n\r\n        if getattr(y, \"dtype\", None) != DOUBLE or not y.flags.contiguous:\r\n            y = np.ascontiguousarray(y, dtype=DOUBLE)\r\n\r\n        if getattr(X, \"dtype\", None) != DTYPE:\r\n            X = X.astype(DTYPE)\r\n\r\n        # Get subsample sample size\r\n        n_samples_subsample = _get_n_samples_subsample(\r\n            n_samples=n_samples,\r\n            max_samples=self.max_samples\r\n        )\r\n\r\n        # Check parameters\r\n        self._validate_estimator()\r\n\r\n        random_state = check_random_state(self.random_state)\r\n        # We re-initialize the subsample_random_seed_ only if we are not in warm_start mode or\r\n        # if this is the first `fit` call of the warm start mode.\r\n        if (not self.warm_start) or (not hasattr(self, 'subsample_random_seed_')):\r\n            self.subsample_random_seed_ = random_state.randint(MAX_INT)\r\n        else:\r\n            random_state.randint(MAX_INT)  # just advance random_state\r\n        subsample_random_state = check_random_state(self.subsample_random_seed_)\r\n\r\n        if not self.warm_start or not hasattr(self, \"estimators_\"):\r\n            # Free allocated memory, if any\r\n            self.estimators_ = []\r\n            self.slices_ = []\r\n            # the below are needed to replicate randomness of subsampling when warm_start=True\r\n            self.n_samples_ = []\r\n            self.n_samples_subsample_ = []\r\n\r\n        n_more_estimators = self.n_estimators - len(self.estimators_)\r\n\r\n        if n_more_estimators < 0:\r\n            raise ValueError('n_estimators=%d must be larger or equal to '\r\n                             'len(estimators_)=%d when warm_start==True'\r\n                             % (self.n_estimators, len(self.estimators_)))\r\n\r\n        elif n_more_estimators == 0:\r\n            warn(\"Warm-start fitting without increasing n_estimators does not \"\r\n                 \"fit new trees.\", UserWarning)\r\n        else:\r\n\r\n            if self.warm_start and len(self.estimators_) > 0:\r\n                # We draw from the random state to get the random state we\r\n                # would have got if we hadn't used a warm_start.\r\n                random_state.randint(MAX_INT, size=len(self.estimators_))\r\n\r\n            trees = [self._make_estimator(append=False,\r\n                                          random_state=random_state).init()\r\n                     for i in range(n_more_estimators)]\r\n\r\n            if self.warm_start:\r\n                # Advancing subsample_random_state. Assumes each prior fit call has the same number of\r\n                # samples at fit time. If not then this would not exactly replicate a single batch execution,\r\n                # but would still advance randomness enough so that tree subsamples will be different.\r\n                for _, n_, ns_ in zip(range(len(self.estimators_)), self.n_samples_, self.n_samples_subsample_):\r\n                    subsample_random_state.choice(n_, ns_, replace=False)\r\n            s_inds = [subsample_random_state.choice(n_samples, n_samples_subsample, replace=False)\r\n                      for _ in range(n_more_estimators)]\r\n\r\n            # Parallel loop: we prefer the threading backend as the Cython code\r\n            # for fitting the trees is internally releasing the Python GIL\r\n            # making threading more efficient than multiprocessing in\r\n            # that case. However, for joblib 0.12+ we respect any\r\n            # parallel_backend contexts set at a higher level,\r\n            # since correctness does not rely on using threads.\r\n            trees = Parallel(n_jobs=self.n_jobs, verbose=self.verbose, backend='threading')(\r\n                delayed(t.fit)(X[s], y[s],\r\n                               sample_weight=sample_weight[s] if sample_weight is not None else None,\r\n                               check_input=False)\r\n                for t, s in zip(trees, s_inds))\r\n\r\n            # Collect newly grown trees\r\n            self.estimators_.extend(trees)\r\n            self.n_samples_.extend([n_samples] * len(trees))\r\n            self.n_samples_subsample_.extend([n_samples_subsample] * len(trees))\r\n\r\n        return self\r\n\r\n    def get_subsample_inds(self,):\r\n        \"\"\"Re-generate the example same sample indices as those at fit time using same pseudo-randomness.\"\"\"\r\n        check_is_fitted(self)\r\n        subsample_random_state = check_random_state(self.subsample_random_seed_)\r\n        return [subsample_random_state.choice(n_, ns_, replace=False)\r\n                for n_, ns_ in zip(self.n_samples_, self.n_samples_subsample_)]\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        \"\"\"\r\n        Get the feature importances based on the amount of parameter heterogeneity they create.\r\n\r\n        The higher, the more important the feature.\r\n\r\n        Parameters\r\n        ----------\r\n        max_depth : int, default 4\r\n            Splits of depth larger than `max_depth` are not used in this calculation\r\n        depth_decay_exponent: double, default 2.0\r\n            The contribution of each split to the total score is re-weighted by 1 / (1 + `depth`)**2.0.\r\n\r\n        Returns\r\n        -------\r\n        feature_importances_ : ndarray of shape (n_features,)\r\n            Normalized total parameter heterogeneity inducing importance of each feature\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n\r\n        all_importances = Parallel(n_jobs=self.n_jobs, backend='threading')(\r\n            delayed(tree.feature_importances)(\r\n                max_depth=max_depth, depth_decay_exponent=depth_decay_exponent)\r\n            for tree in self.estimators_ if tree.tree_.node_count > 1)\r\n\r\n        if not all_importances:\r\n            return np.zeros(self.n_features_, dtype=np.float64)\r\n\r\n        all_importances = np.mean(all_importances,\r\n                                  axis=0, dtype=np.float64)\r\n        return all_importances / np.sum(all_importances)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n    def _validate_X_predict(self, X):\r\n        \"\"\"Validate X whenever one tries to predict, apply, and other predict methods.\"\"\"\r\n        check_is_fitted(self)\r\n\r\n        return self.estimators_[0]._validate_X_predict(X, check_input=True)\r\n\r\n    def predict_value(self, X):\r\n        \"\"\"Predict the expected value of each treatment for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        welfare : array_like of shape (n_samples, n_treatments)\r\n            The conditional average welfare for each treatment for the group of each sample defined by the tree\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        # Check data\r\n        X = self._validate_X_predict(X)\r\n\r\n        # Assign chunk of trees to jobs\r\n        n_jobs, _, _ = _partition_estimators(self.n_estimators, self.n_jobs)\r\n\r\n        # avoid storing the output of every estimator by summing them here\r\n        y_hat = np.zeros((X.shape[0], self.n_outputs_), dtype=np.float64)\r\n\r\n        # Parallel loop\r\n        lock = threading.Lock()\r\n        Parallel(n_jobs=n_jobs, verbose=self.verbose, backend='threading', require=\"sharedmem\")(\r\n            delayed(_accumulate_prediction)(e.predict_value, X, [y_hat], lock)\r\n            for e in self.estimators_)\r\n\r\n        y_hat /= len(self.estimators_)\r\n\r\n        return y_hat\r\n\r\n    def predict_proba(self, X):\r\n        \"\"\"\r\n        Predict the probability of recommending each treatment.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        treatment_proba : array_like of shape (n_samples, n_treatments)\r\n            The probability of each treatment recommendation\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        # Check data\r\n        X = self._validate_X_predict(X)\r\n\r\n        # Assign chunk of trees to jobs\r\n        n_jobs, _, _ = _partition_estimators(self.n_estimators, self.n_jobs)\r\n\r\n        # avoid storing the output of every estimator by summing them here\r\n        y_hat = np.zeros((X.shape[0], self.n_outputs_), dtype=np.float64)\r\n\r\n        # Parallel loop\r\n        lock = threading.Lock()\r\n        Parallel(n_jobs=n_jobs, verbose=self.verbose, require=\"sharedmem\")(\r\n            delayed(_accumulate_prediction)(e.predict_proba, X, [y_hat], lock)\r\n            for e in self.estimators_)\r\n\r\n        y_hat /= len(self.estimators_)\r\n\r\n        return y_hat\r\n\r\n    def predict(self, X):\r\n        \"\"\"Predict the best treatment for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n\r\n        Returns\r\n        -------\r\n        treatment : array_like of shape (n_samples)\r\n            The recommded treatment, i.e. the treatment index most often predicted to have the highest reward\r\n            for each sample. Recommended treatments are aggregated from each tree in the ensemble and the treatment\r\n            that receives the most votes is returned. Use `predict_proba` to get the fraction of trees in the ensemble\r\n            that recommend each treatment for each sample.\r\n        \"\"\"\r\n        return np.argmax(self.predict_proba(X), axis=1)\r\n"
  },
  {
    "path": "econml/policy/_forest/_tree.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code contains snippets of code from:\r\n# https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_classes.py\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nimport numpy as np\r\nfrom ..._tree_exporter import _SingleTreeExporterMixin, _PolicyTreeDOTExporter, _PolicyTreeMPLExporter\r\nfrom ._criterion import LinearPolicyCriterion\r\nfrom ...tree import BaseTree\r\nfrom sklearn.utils import check_X_y\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.utils.validation import check_is_fitted\r\n\r\n# =============================================================================\r\n# Types and constants\r\n# =============================================================================\r\n\r\nCRITERIA_POLICY = {\"neg_welfare\": LinearPolicyCriterion}\r\n\r\n# =============================================================================\r\n# Base Policy tree\r\n# =============================================================================\r\n\r\n\r\nclass PolicyTree(_SingleTreeExporterMixin, BaseTree):\r\n    \"\"\"\r\n    Welfare maximization policy tree.\r\n\r\n    Trains a tree to maximize the objective:\r\n    :math:`1/n \\\\sum_i \\\\sum_j a_j(X_i) * y_{ij}`, where, where :math:`a(X)` is constrained\r\n    to take value of 1 only on one coordinate and zero otherwise. This corresponds to a policy\r\n    optimization problem.\r\n\r\n    Parameters\r\n    ----------\r\n    criterion : {``'neg_welfare'``}, default 'neg_welfare'\r\n        The criterion type\r\n\r\n    splitter : {\"best\"}, default \"best\"\r\n        The strategy used to choose the split at each node. Supported\r\n        strategies are \"best\" to choose the best split.\r\n\r\n    max_depth : int, default None\r\n        The maximum depth of the tree. If None, then nodes are expanded until\r\n        all leaves are pure or until all leaves contain less than\r\n        min_samples_split samples.\r\n\r\n    min_samples_split : int or float, default 10\r\n        The minimum number of samples required to split an internal node:\r\n\r\n        - If int, then consider `min_samples_split` as the minimum number.\r\n        - If float, then `min_samples_split` is a fraction and\r\n          `ceil(min_samples_split * n_samples)` are the minimum\r\n          number of samples for each split.\r\n\r\n    min_samples_leaf : int or float, default 5\r\n        The minimum number of samples required to be at a leaf node.\r\n        A split point at any depth will only be considered if it leaves at\r\n        least ``min_samples_leaf`` training samples in each of the left and\r\n        right branches.  This may have the effect of smoothing the model,\r\n        especially in regression.\r\n\r\n        - If int, then consider `min_samples_leaf` as the minimum number.\r\n        - If float, then `min_samples_leaf` is a fraction and\r\n          `ceil(min_samples_leaf * n_samples)` are the minimum\r\n          number of samples for each node.\r\n\r\n    min_weight_fraction_leaf : float, default 0.0\r\n        The minimum weighted fraction of the sum total of weights (of all\r\n        the input samples) required to be at a leaf node. Samples have\r\n        equal weight when sample_weight is not provided.\r\n\r\n    max_features : int, float, {\"auto\", \"sqrt\", \"log2\"}, or None, default None\r\n        The number of features to consider when looking for the best split:\r\n\r\n        - If int, then consider `max_features` features at each split.\r\n        - If float, then `max_features` is a fraction and\r\n          `int(max_features * n_features)` features are considered at each\r\n          split.\r\n        - If \"auto\", then `max_features=n_features`.\r\n        - If \"sqrt\", then `max_features=sqrt(n_features)`.\r\n        - If \"log2\", then `max_features=log2(n_features)`.\r\n        - If None, then `max_features=n_features`.\r\n\r\n        Note: the search for a split does not stop until at least one\r\n        valid partition of the node samples is found, even if it requires to\r\n        effectively inspect more than ``max_features`` features.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n        Controls the randomness of the estimator. The features are always\r\n        randomly permuted at each split, even if ``splitter`` is set to\r\n        ``\"best\"``. When ``max_features < n_features``, the algorithm will\r\n        select ``max_features`` at random at each split before finding the best\r\n        split among them. But the best found split may vary across different\r\n        runs, even if ``max_features=n_features``. That is the case, if the\r\n        improvement of the criterion is identical for several splits and one\r\n        split has to be selected at random. To obtain a deterministic behaviour\r\n        during fitting, ``random_state`` has to be fixed to an integer.\r\n\r\n    min_impurity_decrease : float, default 0.0\r\n        A node will be split if this split induces a decrease of the impurity\r\n        greater than or equal to this value.\r\n        The weighted impurity decrease equation is the following::\r\n\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n\r\n        where ``N`` is the total number of samples, ``N_t`` is the number of\r\n        samples at the current node, ``N_t_L`` is the number of samples in the\r\n        left child, and ``N_t_R`` is the number of samples in the right child.\r\n        ``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,\r\n        if ``sample_weight`` is passed.\r\n\r\n    min_balancedness_tol: float in [0, .5], default .45\r\n        How imbalanced a split we can tolerate. This enforces that each split leaves at least\r\n        (.5 - min_balancedness_tol) fraction of samples on each side of the split; or fraction\r\n        of the total weight of samples, when sample_weight is not None. Default value, ensures\r\n        that at least 5% of the parent node weight falls in each side of the split. Set it to 0.0 for no\r\n        balancedness and to .5 for perfectly balanced splits. For the formal inference theory\r\n        to be valid, this has to be any positive constant bounded away from zero.\r\n\r\n    honest: bool, default True\r\n        Whether the data should be split in two equally sized samples, such that the one half-sample\r\n        is used to determine the optimal split at each node and the other sample is used to determine\r\n        the value of every node.\r\n\r\n    Attributes\r\n    ----------\r\n    feature_importances_ : ndarray of shape (n_features,)\r\n        The feature importances based on the amount of parameter heterogeneity they create.\r\n        The higher, the more important the feature.\r\n\r\n    max_features_ : int\r\n        The inferred value of max_features.\r\n\r\n    n_features_in_ : int\r\n        The number of features when ``fit`` is performed.\r\n\r\n    n_samples_ : int\r\n        The number of training samples when ``fit`` is performed.\r\n\r\n    honest_ : int\r\n        Whether honesty was enabled when ``fit`` was performed\r\n\r\n    tree_ : Tree instance\r\n        The underlying Tree object. Please refer to\r\n        ``help(econml.tree._tree.Tree)`` for attributes of Tree object.\r\n\r\n    policy_value_ : float\r\n        The value achieved by the recommended policy\r\n\r\n    always_treat_value_ : float\r\n        The value of the policy that treats all samples\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 criterion='neg_welfare',\r\n                 splitter=\"best\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 max_features=None,\r\n                 random_state=None,\r\n                 min_impurity_decrease=0.,\r\n                 min_balancedness_tol=0.45,\r\n                 honest=True):\r\n        super().__init__(criterion=criterion,\r\n                         splitter=splitter,\r\n                         max_depth=max_depth,\r\n                         min_samples_split=min_samples_split,\r\n                         min_samples_leaf=min_samples_leaf,\r\n                         min_weight_fraction_leaf=min_weight_fraction_leaf,\r\n                         max_features=max_features,\r\n                         random_state=random_state,\r\n                         min_impurity_decrease=min_impurity_decrease,\r\n                         min_balancedness_tol=min_balancedness_tol,\r\n                         honest=honest)\r\n\r\n    def _get_valid_criteria(self):\r\n        return CRITERIA_POLICY\r\n\r\n    def _get_store_jac(self):\r\n        return False\r\n\r\n    def init(self,):\r\n        return self\r\n\r\n    def fit(self, X, y, *, sample_weight=None, check_input=True):\r\n        \"\"\"Fit the tree from the data.\r\n\r\n        Parameters\r\n        ----------\r\n        X : (n, n_features) array\r\n            The features to split on\r\n\r\n        y : (n, n_treatments) array\r\n            The reward for each of the m treatments (including baseline treatment)\r\n\r\n        sample_weight : (n,) array, default None\r\n            The sample weights\r\n\r\n        check_input : bool, defaul=True\r\n            Whether to check the input parameters for validity. Should be set to False to improve\r\n            running time in parallel execution, if the variables have already been checked by the\r\n            forest class that spawned this tree.\r\n\r\n        Returns\r\n        -------\r\n        self : object instance\r\n        \"\"\"\r\n        self.random_seed_ = self.random_state\r\n        self.random_state_ = check_random_state(self.random_seed_)\r\n        if check_input:\r\n            X, y = check_X_y(X, y, multi_output=True, y_numeric=True, ensure_min_features=0)\r\n        n_y = 1 if y.ndim == 1 else y.shape[1]\r\n        super().fit(X, y, n_y, n_y, n_y,\r\n                    sample_weight=sample_weight, check_input=check_input)\r\n\r\n        # The values below are required and utilitized by methods in the _SingleTreeExporterMixin\r\n        self.tree_model_ = self\r\n        self.policy_value_ = np.mean(np.max(self.predict_value(X), axis=1))\r\n        self.always_treat_value_ = np.mean(y, axis=0)\r\n        return self\r\n\r\n    def predict(self, X, check_input=True):\r\n        \"\"\"Predict the best treatment for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        treatment : array_like of shape (n_samples)\r\n            The recommded treatment, i.e. the treatment index with the largest reward for each sample\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        pred = self.tree_.predict(X)\r\n        return np.argmax(pred, axis=1)\r\n\r\n    def predict_proba(self, X, check_input=True):\r\n        \"\"\"Predict the probability of recommending each treatment.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        treatment_proba : array_like of shape (n_samples, n_treatments)\r\n            The probability of each treatment recommendation\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        pred = self.tree_.predict(X)\r\n        proba = np.zeros(pred.shape)\r\n        proba[np.arange(X.shape[0]), np.argmax(pred, axis=1)] = 1\r\n        return proba\r\n\r\n    def predict_value(self, X, check_input=True):\r\n        \"\"\"Predict the expected value of each treatment for each sample.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``.\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        welfare : array_like of shape (n_samples, n_treatments)\r\n            The conditional average welfare for each treatment for the group of each sample defined by the tree\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        pred = self.tree_.predict(X)\r\n        return pred\r\n\r\n    def feature_importances(self, max_depth=4, depth_decay_exponent=2.0):\r\n        \"\"\"\r\n        Get feature importances.\r\n\r\n        Parameters\r\n        ----------\r\n        max_depth : int, default 4\r\n            Splits of depth larger than `max_depth` are not used in this calculation\r\n        depth_decay_exponent: double, default 2.0\r\n            The contribution of each split to the total score is re-weighted by ``1 / (1 + `depth`)**2.0``.\r\n\r\n        Returns\r\n        -------\r\n        feature_importances_ : ndarray of shape (n_features,)\r\n            Normalized total parameter heterogeneity inducing importance of each feature\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n\r\n        return self.tree_.compute_feature_importances(normalize=True, max_depth=max_depth,\r\n                                                      depth_decay=depth_decay_exponent)\r\n\r\n    @property\r\n    def feature_importances_(self):\r\n        return self.feature_importances()\r\n\r\n    def _make_dot_exporter(self, *, out_file, feature_names, treatment_names, max_depth, filled,\r\n                           leaves_parallel, rotate, rounded,\r\n                           special_characters, precision):\r\n        title = \"Average policy gains over no treatment: {} \\n\".format(np.around(self.policy_value_, precision))\r\n        title += \"Average policy gains over constant treatment policies for each treatment: {}\".format(\r\n            np.around(self.policy_value_ - self.always_treat_value_, precision))\r\n        return _PolicyTreeDOTExporter(out_file=out_file, title=title,\r\n                                      treatment_names=treatment_names, feature_names=feature_names,\r\n                                      max_depth=max_depth,\r\n                                      filled=filled, leaves_parallel=leaves_parallel, rotate=rotate,\r\n                                      rounded=rounded, special_characters=special_characters,\r\n                                      precision=precision)\r\n\r\n    def _make_mpl_exporter(self, *, title, feature_names, treatment_names, max_depth, filled,\r\n                           rounded, precision, fontsize):\r\n        title = \"\" if title is None else title\r\n        title += \"Average policy gains over no treatment: {} \\n\".format(np.around(self.policy_value_, precision))\r\n        title += \"Average policy gains over constant treatment policies for each treatment: {}\".format(\r\n            np.around(self.policy_value_ - self.always_treat_value_, precision))\r\n        return _PolicyTreeMPLExporter(treatment_names=treatment_names, title=title,\r\n                                      feature_names=feature_names, max_depth=max_depth,\r\n                                      filled=filled,\r\n                                      rounded=rounded,\r\n                                      precision=precision, fontsize=fontsize)\r\n\r\n\r\n# HACK: sklearn 1.3 enforces that the input to plot_tree is a DecisionTreeClassifier or DecisionTreeRegressor\r\n#       This is a hack to get around that restriction by declaring that PolicyTree inherits from DecisionTreeClassifier\r\nfrom sklearn.tree import DecisionTreeClassifier  # noqa: E402\r\nDecisionTreeClassifier.register(PolicyTree)\r\n"
  },
  {
    "path": "econml/score/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"A suite of scoring methods for scoring CATE models out-of-sample for the purpose of model selection.\"\"\"\r\n\r\nfrom .rscorer import RScorer\r\nfrom .ensemble_cate import EnsembleCateEstimator\r\n\r\n__all__ = ['RScorer',\r\n           'EnsembleCateEstimator']\r\n"
  },
  {
    "path": "econml/score/ensemble_cate.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numpy as np\r\nfrom sklearn.utils.validation import check_array\r\nfrom .._cate_estimator import BaseCateEstimator, LinearCateEstimator\r\n\r\n\r\nclass EnsembleCateEstimator:\r\n    \"\"\"\r\n    A CATE estimator that represents a weighted ensemble of many CATE estimators.\r\n\r\n    Returns their weighted effect prediction.\r\n\r\n    Parameters\r\n    ----------\r\n    cate_models : list of BaseCateEstimator objects\r\n        A list of fitted cate estimator objects that will be used in the ensemble.\r\n        The models are passed by reference, and not copied internally, because we\r\n        need the fitted objects, so any change to the passed models will affect\r\n        the internal predictions (e.g. if the input models are refitted).\r\n    weights : np.ndarray of shape (len(cate_models),)\r\n        The weight placed on each model. Weights must be non-positive. The\r\n        ensemble will predict effects based on the weighted average predictions\r\n        of the cate_models estiamtors, weighted by the corresponding weight in `weights`.\r\n    \"\"\"\r\n\r\n    def __init__(self, *, cate_models, weights):\r\n        self.cate_models = cate_models\r\n        self.weights = weights\r\n\r\n    def effect(self, X=None, *, T0=0, T1=1):\r\n        return np.average([mdl.effect(X=X, T0=T0, T1=T1) for mdl in self.cate_models],\r\n                          weights=self.weights, axis=0)\r\n    effect.__doc__ = BaseCateEstimator.effect.__doc__\r\n\r\n    def marginal_effect(self, T, X=None):\r\n        return np.average([mdl.marginal_effect(T, X=X) for mdl in self.cate_models],\r\n                          weights=self.weights, axis=0)\r\n    marginal_effect.__doc__ = BaseCateEstimator.marginal_effect.__doc__\r\n\r\n    def const_marginal_effect(self, X=None):\r\n        if np.any([not hasattr(mdl, 'const_marginal_effect') for mdl in self.cate_models]):\r\n            raise ValueError(\"One of the base CATE models in parameter `cate_models` does not support \"\r\n                             \"the `const_marginal_effect` method.\")\r\n        return np.average([mdl.const_marginal_effect(X=X) for mdl in self.cate_models],\r\n                          weights=self.weights, axis=0)\r\n    const_marginal_effect.__doc__ = LinearCateEstimator.const_marginal_effect.__doc__\r\n\r\n    @property\r\n    def cate_models(self):\r\n        return self._cate_models\r\n\r\n    @cate_models.setter\r\n    def cate_models(self, value):\r\n        if (not isinstance(value, list)) or (not np.all([isinstance(model, BaseCateEstimator) for model in value])):\r\n            raise ValueError('Parameter `cate_models` should be a list of `BaseCateEstimator` objects.')\r\n        self._cate_models = value\r\n\r\n    @property\r\n    def weights(self):\r\n        return self._weights\r\n\r\n    @weights.setter\r\n    def weights(self, value):\r\n        weights = check_array(value, accept_sparse=False, ensure_2d=False, allow_nd=False, dtype='numeric',\r\n                              force_all_finite=True)\r\n        if np.any(weights < 0):\r\n            raise ValueError(\"All weights in parameter `weights` must be non-negative.\")\r\n        self._weights = weights\r\n"
  },
  {
    "path": "econml/score/rscorer.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ..dml import LinearDML\r\nfrom sklearn.base import clone\r\nimport numpy as np\r\nfrom scipy.special import softmax\r\nfrom .ensemble_cate import EnsembleCateEstimator\r\n\r\n\r\nclass RScorer:\r\n    \"\"\"\r\n    Scorer based on the RLearner loss.\r\n\r\n    Fits residual models at fit time and calculates\r\n    residuals of the evaluation data in a cross-fitting manner::\r\n\r\n        Yres = Y - E[Y|X, W]\r\n        Tres = T - E[T|X, W]\r\n\r\n    Then for any given cate model calculates the loss::\r\n\r\n        loss(cate) = E_n[(Yres - <cate(X), Tres>)^2]\r\n\r\n    Also calculates a baseline loss based on a constant treatment effect model, i.e.::\r\n\r\n        base_loss = min_{theta} E_n[(Yres - <theta, Tres>)^2]\r\n\r\n    Returns an analogue of the R-square score for regression::\r\n\r\n        score = 1 - loss(cate) / base_loss\r\n\r\n    This corresponds to the extra variance of the outcome explained by introducing heterogeneity\r\n    in the effect as captured by the cate model, as opposed to always predicting a constant effect.\r\n    A negative score, means that the cate model performs even worse than a constant effect model\r\n    and hints at overfitting during training of the cate model.\r\n\r\n    This method was also advocated in recent work of [Schuleretal2018]_ when compared among several alternatives\r\n    for causal model selection and introduced in the work of [NieWager2017]_.\r\n\r\n    Parameters\r\n    ----------\r\n    model_y: estimator\r\n        The estimator for fitting the response to the features. Must implement\r\n        `fit` and `predict` methods.\r\n\r\n    model_t: estimator\r\n        The estimator for fitting the treatment to the features. Must implement\r\n        `fit` and `predict` methods.\r\n\r\n    discrete_treatment: bool, default ``False``\r\n        Whether the treatment values should be treated as categorical, rather than continuous, quantities\r\n\r\n    discrete_outcome: bool, default ``False``\r\n        Whether the outcome should be treated as binary\r\n\r\n    categories: 'auto' or list, default 'auto'\r\n        The categories to use when encoding discrete treatments (or 'auto' to use the unique sorted values).\r\n        The first category will be treated as the control treatment.\r\n\r\n    cv: int, cross-validation generator or an iterable, default 2\r\n        Determines the cross-validation splitting strategy.\r\n        Possible inputs for cv are:\r\n\r\n        - None, to use the default 3-fold cross-validation,\r\n        - integer, to specify the number of folds.\r\n        - :term:`CV splitter`\r\n        - An iterable yielding (train, test) splits as arrays of indices.\r\n\r\n        For integer/None inputs, if the treatment is discrete\r\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\r\n        :class:`~sklearn.model_selection.KFold` is used\r\n        (with a random shuffle in either case).\r\n\r\n        Unless an iterable is used, we call `split(concat[W, X], T)` to generate the splits. If all\r\n        W, X are None, then we call `split(ones((T.shape[0], 1)), T)`.\r\n\r\n    mc_iters: int, optional\r\n        The number of times to rerun the first stage models to reduce the variance of the nuisances.\r\n\r\n    mc_agg: {'mean', 'median'}, default 'mean'\r\n        How to aggregate the nuisance value for each sample across the `mc_iters` monte carlo iterations of\r\n        cross-fitting.\r\n\r\n    random_state : int, RandomState instance, or None, default None\r\n\r\n        If int, random_state is the seed used by the random number generator;\r\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\r\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\r\n        by :mod:`np.random<numpy.random>`.\r\n\r\n    References\r\n    ----------\r\n    .. [NieWager2017] X. Nie and S. Wager.\r\n        Quasi-Oracle Estimation of Heterogeneous Treatment Effects.\r\n        arXiv preprint arXiv:1712.04912, 2017.\r\n        `<https://arxiv.org/pdf/1712.04912.pdf>`_\r\n\r\n    .. [Schuleretal2018] Alejandro Schuler, Michael Baiocchi, Robert Tibshirani, Nigam Shah.\r\n        \"A comparison of methods for model selection when estimating individual treatment effects.\"\r\n        Arxiv, 2018\r\n        `<https://arxiv.org/pdf/1804.05146.pdf>`_\r\n\r\n    \"\"\"\r\n\r\n    def __init__(self, *,\r\n                 model_y,\r\n                 model_t,\r\n                 discrete_treatment=False,\r\n                 discrete_outcome=False,\r\n                 categories='auto',\r\n                 cv=2,\r\n                 mc_iters=None,\r\n                 mc_agg='mean',\r\n                 random_state=None):\r\n        self.model_y = clone(model_y, safe=False)\r\n        self.model_t = clone(model_t, safe=False)\r\n        self.discrete_treatment = discrete_treatment\r\n        self.discrete_outcome = discrete_outcome\r\n        self.cv = cv\r\n        self.categories = categories\r\n        self.random_state = random_state\r\n        self.mc_iters = mc_iters\r\n        self.mc_agg = mc_agg\r\n\r\n    def fit(self, y, T, X=None, W=None, sample_weight=None, groups=None):\r\n        \"\"\"\r\n        Fit a baseline model to the data.\r\n\r\n        Parameters\r\n        ----------\r\n        Y: (n × d_y) matrix or vector of length n\r\n            Outcomes for each sample\r\n        T: (n × dₜ) matrix or vector of length n\r\n            Treatments for each sample\r\n        X:  (n × dₓ) matrix, optional\r\n            Features for each sample\r\n        W:  (n × d_w) matrix, optional\r\n            Controls for each sample\r\n        sample_weight:  (n,) vector, optional\r\n            Weights for each row\r\n        groups: (n,) vector, optional\r\n            All rows corresponding to the same group will be kept together during splitting.\r\n            If groups is not None, the `cv` argument passed to this class's initializer\r\n            must support a 'groups' argument to its split method.\r\n\r\n        Returns\r\n        -------\r\n        self\r\n        \"\"\"\r\n        if X is None:\r\n            raise ValueError(\"X cannot be None for the RScorer!\")\r\n\r\n        self.lineardml_ = LinearDML(model_y=self.model_y,\r\n                                    model_t=self.model_t,\r\n                                    cv=self.cv,\r\n                                    discrete_treatment=self.discrete_treatment,\r\n                                    discrete_outcome=self.discrete_outcome,\r\n                                    categories=self.categories,\r\n                                    random_state=self.random_state,\r\n                                    mc_iters=self.mc_iters,\r\n                                    mc_agg=self.mc_agg)\r\n        self.lineardml_.fit(y, T, X=None, W=np.hstack([v for v in [X, W] if v is not None]),\r\n                            sample_weight=sample_weight, groups=groups, cache_values=True)\r\n        self.base_score_ = self.lineardml_.score_\r\n        self.dx_ = X.shape[1]\r\n        return self\r\n\r\n    def score(self, cate_model):\r\n        \"\"\"\r\n        Score a CATE model against the baseline.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_model : instance of fitted BaseCateEstimator\r\n\r\n        Returns\r\n        -------\r\n        score : double\r\n            An analogue of the R-square loss for the causal setting.\r\n        \"\"\"\r\n        Y_res, T_res = self.lineardml_._cached_values.nuisances\r\n        X = self.lineardml_._cached_values.W[:, :self.dx_]\r\n        sample_weight = self.lineardml_._cached_values.sample_weight\r\n        if Y_res.ndim == 1:\r\n            Y_res = Y_res.reshape((-1, 1))\r\n        if T_res.ndim == 1:\r\n            T_res = T_res.reshape((-1, 1))\r\n        effects = cate_model.const_marginal_effect(X).reshape((-1, Y_res.shape[1], T_res.shape[1]))\r\n        Y_res_pred = np.einsum('ijk,ik->ij', effects, T_res).reshape(Y_res.shape)\r\n        if sample_weight is not None:\r\n            return 1 - np.mean(np.average((Y_res - Y_res_pred)**2, weights=sample_weight, axis=0)) / self.base_score_\r\n        else:\r\n            return 1 - np.mean((Y_res - Y_res_pred) ** 2) / self.base_score_\r\n\r\n    def best_model(self, cate_models, return_scores=False):\r\n        \"\"\"\r\n        Choose the best among a list of models.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_models : list of instance of fitted BaseCateEstimator\r\n        return_scores : bool, default False\r\n            Whether to return the list scores of each model\r\n\r\n        Returns\r\n        -------\r\n        best_model : instance of fitted BaseCateEstimator\r\n            The model that achieves the best score\r\n        best_score : double\r\n            The score of the best model\r\n        scores : list of double\r\n            The list of scores for each of the input models. Returned only if `return_scores=True`.\r\n        \"\"\"\r\n        rscores = [self.score(mdl) for mdl in cate_models]\r\n        best = np.nanargmax(rscores)\r\n        if return_scores:\r\n            return cate_models[best], rscores[best], rscores\r\n        else:\r\n            return cate_models[best], rscores[best]\r\n\r\n    def ensemble(self, cate_models, eta=1000.0, return_scores=False):\r\n        \"\"\"\r\n        Ensemble a list of models based on their performance.\r\n\r\n        Parameters\r\n        ----------\r\n        cate_models : list of instance of fitted BaseCateEstimator\r\n        eta : double, default 1000\r\n            The soft-max parameter for the ensemble\r\n        return_scores : bool, default False\r\n            Whether to return the list scores of each model\r\n\r\n        Returns\r\n        -------\r\n        ensemble_model : instance of fitted EnsembleCateEstimator\r\n            A fitted ensemble cate model that calculates effects based on a weighted\r\n            version of the input cate models, weighted by a softmax of their score\r\n            performance\r\n        ensemble_score : double\r\n            The score of the ensemble model\r\n        scores : list of double\r\n            The list of scores for each of the input models. Returned only if `return_scores=True`.\r\n        \"\"\"\r\n        rscores = np.array([self.score(mdl) for mdl in cate_models])\r\n        goodinds = np.isfinite(rscores)\r\n        weights = softmax(eta * rscores[goodinds])\r\n        goodmodels = [mdl for mdl, good in zip(cate_models, goodinds) if good]\r\n        ensemble = EnsembleCateEstimator(cate_models=goodmodels, weights=weights)\r\n        ensemble_score = self.score(ensemble)\r\n        if return_scores:\r\n            return ensemble, ensemble_score, rscores\r\n        else:\r\n            return ensemble, ensemble_score\r\n"
  },
  {
    "path": "econml/sklearn_extensions/__init__.py",
    "content": ""
  },
  {
    "path": "econml/sklearn_extensions/linear_model.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Collection of scikit-learn extensions for linear models.\n\n.. testsetup::\n\n    # Our classes that derive from sklearn ones sometimes include\n    # inherited docstrings that have embedded doctests; we need the following imports\n    # so that they don't break.\n\n    import numpy as np\n    from sklearn.linear_model import lasso_path\n\"\"\"\n\nfrom __future__ import annotations  # needed to allow type signature to refer to containing type\n\nimport numbers\nimport numpy as np\nimport warnings\nfrom collections.abc import Iterable\nfrom scipy.stats import norm\nfrom ..utilities import ndim, shape, reshape, _safe_norm_ppf, check_input_arrays\nfrom sklearn import clone\nfrom sklearn.linear_model import LinearRegression, LassoCV, MultiTaskLassoCV, Lasso, MultiTaskLasso\nfrom sklearn.linear_model._base import _preprocess_data\nfrom sklearn.metrics import r2_score\n# TODO: consider working around relying on sklearn implementation details\nfrom sklearn.model_selection._split import _CVIterableWrapper\nfrom sklearn.multioutput import MultiOutputRegressor\nfrom sklearn.utils import check_array, check_X_y\nfrom sklearn.utils.multiclass import type_of_target\nfrom sklearn.utils.validation import check_is_fitted\nfrom sklearn.base import BaseEstimator\nfrom statsmodels.tools.tools import add_constant\nfrom statsmodels.api import RLM\nimport statsmodels\nfrom joblib import Parallel, delayed\nfrom typing import List\n\n\nclass _WeightedCVIterableWrapper(_CVIterableWrapper):\n    def __init__(self, cv):\n        super().__init__(cv)\n\n    def get_n_splits(self, X=None, y=None, groups=None, sample_weight=None):\n        if groups is not None and sample_weight is not None:\n            raise ValueError(\"Cannot simultaneously use grouping and weighting\")\n        return super().get_n_splits(X, y, groups)\n\n    def split(self, X=None, y=None, groups=None, sample_weight=None):\n        if groups is not None and sample_weight is not None:\n            raise ValueError(\"Cannot simultaneously use grouping and weighting\")\n        return super().split(X, y, groups)\n\n\ndef _weighted_check_cv(cv=5, y=None, classifier=False, random_state=None):\n    # local import to avoid circular imports\n    from .model_selection import WeightedKFold, WeightedStratifiedKFold\n    cv = 5 if cv is None else cv\n    if isinstance(cv, numbers.Integral):\n        if (classifier and (y is not None) and\n                (type_of_target(y) in ('binary', 'multiclass'))):\n            return WeightedStratifiedKFold(cv, random_state=random_state)\n        else:\n            return WeightedKFold(cv, random_state=random_state)\n\n    if not hasattr(cv, 'split') or isinstance(cv, str):\n        if not isinstance(cv, Iterable) or isinstance(cv, str):\n            raise ValueError(\"Expected cv as an integer, cross-validation \"\n                             \"object (from sklearn.model_selection) \"\n                             \"or an iterable. Got %s.\" % cv)\n        return _WeightedCVIterableWrapper(cv)\n\n    return cv  # New style cv objects are passed without any modification\n\n\nclass WeightedModelMixin:\n    \"\"\"Mixin class for weighted models.\n\n    For linear models, weights are applied as reweighting of the data matrix X and targets y.\n    \"\"\"\n\n    def _fit_weighted_linear_model(self, X, y, sample_weight, check_input=None):\n        # Convert X, y into numpy arrays\n        X, y = check_X_y(X, y, y_numeric=True, multi_output=True)\n        # Define fit parameters\n        fit_params = {'X': X, 'y': y}\n        # Some algorithms don't have a check_input option\n        if check_input is not None:\n            fit_params['check_input'] = check_input\n\n        if sample_weight is not None:\n            # Check weights array\n            if np.atleast_1d(sample_weight).ndim > 1:\n                # Check that weights are size-compatible\n                raise ValueError(\"Sample weights must be 1D array or scalar\")\n            if np.ndim(sample_weight) == 0:\n                sample_weight = np.repeat(sample_weight, X.shape[0])\n            else:\n                sample_weight = check_array(sample_weight, ensure_2d=False, allow_nd=False)\n                if sample_weight.shape[0] != X.shape[0]:\n                    raise ValueError(\n                        \"Found array with {0} sample(s) while {1} samples were expected.\".format(\n                            sample_weight.shape[0], X.shape[0])\n                    )\n\n            # Normalize inputs\n            X, y, X_offset, y_offset, X_scale = _preprocess_data(\n                X, y, fit_intercept=self.fit_intercept,\n                copy=self.copy_X, check_input=check_input if check_input is not None else True,\n                sample_weight=sample_weight)\n            # Weight inputs\n            normalized_weights = X.shape[0] * sample_weight / np.sum(sample_weight)\n            sqrt_weights = np.sqrt(normalized_weights)\n            X_weighted = sqrt_weights.reshape(-1, 1) * X\n            y_weighted = sqrt_weights.reshape(-1, 1) * y if y.ndim > 1 else sqrt_weights * y\n            fit_params['X'] = X_weighted\n            fit_params['y'] = y_weighted\n            if self.fit_intercept:\n                # Fit base class without intercept\n                self.fit_intercept = False\n                # Fit Lasso\n                super().fit(**fit_params)\n                # Reset intercept\n                self.fit_intercept = True\n                # The intercept is not calculated properly due the sqrt(weights) factor\n                # so it must be recomputed\n                self._set_intercept(X_offset, y_offset, X_scale)\n            else:\n                super().fit(**fit_params)\n        else:\n            # Fit lasso without weights\n            super().fit(**fit_params)\n\n\nclass WeightedLasso(WeightedModelMixin, Lasso):\n    \"\"\"Version of sklearn Lasso that accepts weights.\n\n    Parameters\n    ----------\n    alpha : float, optional\n        Constant that multiplies the L1 term. Defaults to 1.0.\n        ``alpha = 0`` is equivalent to ordinary least squares, solved\n        by the :class:`LinearRegression` object. For numerical\n        reasons, using ``alpha = 0`` with Lasso is not advised.\n        Given this, you should use the :class:`LinearRegression` object.\n\n    fit_intercept : bool, default True\n        Whether to calculate the intercept for this model. If set\n        to False, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    precompute : True | False | array_like, default False\n        Whether to use a precomputed Gram matrix to speed up\n        calculations. If set to ``'auto'`` let us decide. The Gram\n        matrix can also be passed as argument. For sparse input\n        this option is always ``True`` to preserve sparsity.\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    max_iter : int, optional\n        The maximum number of iterations\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    warm_start : bool, optional\n        When set to True, reuse the solution of the previous call to fit as\n        initialization, otherwise, just erase the previous solution.\n        See :term:`the Glossary <warm_start>`.\n\n    positive : bool, optional\n        When set to ``True``, forces the coefficients to be positive.\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    Attributes\n    ----------\n    coef_ : array, shape (n_features,) | (n_targets, n_features)\n        parameter vector (w in the cost function formula)\n\n    intercept_ : float | array, shape (n_targets,)\n        independent term in decision function.\n\n    n_iter_ : int | array_like, shape (n_targets,)\n        number of iterations run by the coordinate descent solver to reach\n        the specified tolerance.\n\n    \"\"\"\n\n    def __init__(self, alpha=1.0, fit_intercept=True,\n                 precompute=False, copy_X=True, max_iter=1000,\n                 tol=1e-4, warm_start=False, positive=False,\n                 random_state=None, selection='cyclic'):\n        super().__init__(\n            alpha=alpha, fit_intercept=fit_intercept,\n            precompute=precompute, copy_X=copy_X,\n            max_iter=max_iter, tol=tol, warm_start=warm_start,\n            positive=positive, random_state=random_state,\n            selection=selection)\n\n    def fit(self, X, y, sample_weight=None, check_input=True):\n        \"\"\"Fit model with coordinate descent.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Data\n\n        y : ndarray, shape (n_samples,) or (n_samples, n_targets)\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n\n        check_input : bool, default True\n            Allow to bypass several input checking.\n            Don't use this parameter unless you know what you do.\n        \"\"\"\n        self._fit_weighted_linear_model(X, y, sample_weight, check_input)\n        return self\n\n\nclass WeightedMultiTaskLasso(WeightedModelMixin, MultiTaskLasso):\n    \"\"\"Version of sklearn MultiTaskLasso that accepts weights.\n\n    Parameters\n    ----------\n    alpha : float, optional\n        Constant that multiplies the L1 term. Defaults to 1.0.\n        ``alpha = 0`` is equivalent to an ordinary least square, solved\n        by the :class:`LinearRegression` object. For numerical\n        reasons, using ``alpha = 0`` with the ``Lasso`` object is not advised.\n        Given this, you should use the :class:`LinearRegression` object.\n\n    fit_intercept : bool, default True\n        Whether to calculate the intercept for this model. If set\n        to False, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    max_iter : int, optional\n        The maximum number of iterations\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    warm_start : bool, optional\n        When set to True, reuse the solution of the previous call to fit as\n        initialization, otherwise, just erase the previous solution.\n        See :term:`the Glossary <warm_start>`.\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    Attributes\n    ----------\n    coef_ : array, shape (n_features,) | (n_targets, n_features)\n        parameter vector (w in the cost function formula)\n\n    intercept_ : float | array, shape (n_targets,)\n        independent term in decision function.\n\n    n_iter_ : int | array_like, shape (n_targets,)\n        number of iterations run by the coordinate descent solver to reach\n        the specified tolerance.\n\n    \"\"\"\n\n    def __init__(self, alpha=1.0, fit_intercept=True,\n                 copy_X=True, max_iter=1000, tol=1e-4, warm_start=False,\n                 random_state=None, selection='cyclic'):\n        super().__init__(\n            alpha=alpha, fit_intercept=fit_intercept,\n            copy_X=copy_X, max_iter=max_iter, tol=tol, warm_start=warm_start,\n            random_state=random_state, selection=selection)\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"Fit model with coordinate descent.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Data\n\n        y : ndarray, shape (n_samples,) or (n_samples, n_targets)\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n        \"\"\"\n        self._fit_weighted_linear_model(X, y, sample_weight)\n        return self\n\n\nclass WeightedLassoCV(WeightedModelMixin, LassoCV):\n    \"\"\"Version of sklearn LassoCV that accepts weights.\n\n    .. testsetup::\n\n        import numpy as np\n        from sklearn.linear_model import lasso_path\n\n    Parameters\n    ----------\n    eps : float, optional\n        Length of the path. ``eps=1e-3`` means that\n        ``alpha_min / alpha_max = 1e-3``.\n\n    n_alphas : int, optional\n        Number of alphas along the regularization path\n\n    alphas : numpy array, optional\n        List of alphas where to compute the models.\n        If ``None`` alphas are set automatically\n\n    fit_intercept : bool, default True\n        whether to calculate the intercept for this model. If set\n        to false, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    precompute : True | False | 'auto' | array_like\n        Whether to use a precomputed Gram matrix to speed up\n        calculations. If set to ``'auto'`` let us decide. The Gram\n        matrix can also be passed as argument.\n\n    max_iter : int, optional\n        The maximum number of iterations\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    cv : int, cross-validation generator or an iterable, optional\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n        - None, to use the default 3-fold weighted cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`,\n        - An iterable yielding (train, test) splits as arrays of indices.\n        For integer/None inputs, :class:`WeightedKFold` is used.\n\n        If None then 5 folds are used.\n\n    verbose : bool or int\n        Amount of verbosity.\n\n    n_jobs : int or None, optional\n        Number of CPUs to use during the cross validation.\n        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    positive : bool, optional\n        If positive, restrict regression coefficients to be positive\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    \"\"\"\n\n    def __init__(self, eps=1e-3, n_alphas=100, alphas=None, fit_intercept=True,\n                 precompute='auto', max_iter=1000, tol=1e-4,\n                 copy_X=True, cv=None, verbose=False, n_jobs=None,\n                 positive=False, random_state=None, selection='cyclic'):\n\n        super().__init__(\n            eps=eps, n_alphas=n_alphas, alphas=alphas,\n            fit_intercept=fit_intercept,\n            precompute=precompute, max_iter=max_iter, tol=tol, copy_X=copy_X,\n            cv=cv, verbose=verbose, n_jobs=n_jobs, positive=positive,\n            random_state=random_state, selection=selection)\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"Fit model with coordinate descent.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Data\n\n        y : ndarray, shape (n_samples,) or (n_samples, n_targets)\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n        \"\"\"\n        # Make weighted splitter\n        cv_temp = self.cv\n        self.cv = _weighted_check_cv(self.cv, random_state=self.random_state).split(X, y, sample_weight=sample_weight)\n        # Fit weighted model\n        self._fit_weighted_linear_model(X, y, sample_weight)\n        self.cv = cv_temp\n        return self\n\n\nclass WeightedMultiTaskLassoCV(WeightedModelMixin, MultiTaskLassoCV):\n    \"\"\"Version of sklearn MultiTaskLassoCV that accepts weights.\n\n    .. testsetup::\n\n        import numpy as np\n        from sklearn.linear_model import lasso_path\n\n    Parameters\n    ----------\n    eps : float, optional\n        Length of the path. ``eps=1e-3`` means that\n        ``alpha_min / alpha_max = 1e-3``.\n\n    n_alphas : int, optional\n        Number of alphas along the regularization path\n\n    alphas : array_like, optional\n        List of alphas where to compute the models.\n        If not provided, set automatically.\n\n    fit_intercept : bool\n        whether to calculate the intercept for this model. If set\n        to false, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    max_iter : int, optional\n        The maximum number of iterations.\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    cv : int, cross-validation generator or an iterable, optional\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n        - None, to use the default 3-fold weighted cross-validation,\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`,\n        - An iterable yielding (train, test) splits as arrays of indices.\n        For integer/None inputs, :class:`WeightedKFold` is used.\n\n        If None then 5-folds are used.\n\n    verbose : bool or int\n        Amount of verbosity.\n\n    n_jobs : int or None, optional\n        Number of CPUs to use during the cross validation. Note that this is\n        used only if multiple values for l1_ratio are given.\n        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    \"\"\"\n\n    def __init__(self, eps=1e-3, n_alphas=100, alphas=None, fit_intercept=True,\n                 max_iter=1000, tol=1e-4,\n                 copy_X=True, cv=None, verbose=False, n_jobs=None,\n                 random_state=None, selection='cyclic'):\n\n        super().__init__(\n            eps=eps, n_alphas=n_alphas, alphas=alphas,\n            fit_intercept=fit_intercept,\n            max_iter=max_iter, tol=tol, copy_X=copy_X,\n            cv=cv, verbose=verbose, n_jobs=n_jobs,\n            random_state=random_state, selection=selection)\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"Fit model with coordinate descent.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Data\n\n        y : ndarray, shape (n_samples,) or (n_samples, n_targets)\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n        \"\"\"\n        # Make weighted splitter\n        cv_temp = self.cv\n        self.cv = _weighted_check_cv(self.cv, random_state=self.random_state).split(X, y, sample_weight=sample_weight)\n        # Fit weighted model\n        self._fit_weighted_linear_model(X, y, sample_weight)\n        self.cv = cv_temp\n        return self\n\n\ndef _get_theta_coefs_and_tau_sq(i, X, sample_weight, alpha_cov, n_alphas_cov, max_iter, tol, random_state):\n    n_samples, n_features = X.shape\n    y = X[:, i]\n    X_reduced = X[:, list(range(i)) + list(range(i + 1, n_features))]\n    # Call weighted lasso on reduced design matrix\n    if alpha_cov == 'auto':\n        local_wlasso = WeightedLassoCV(cv=3, n_alphas=n_alphas_cov,\n                                       fit_intercept=False,\n                                       max_iter=max_iter,\n                                       tol=tol, n_jobs=1,\n                                       random_state=random_state)\n    else:\n        local_wlasso = WeightedLasso(alpha=alpha_cov,\n                                     fit_intercept=False,\n                                     max_iter=max_iter,\n                                     tol=tol,\n                                     random_state=random_state)\n    local_wlasso.fit(X_reduced, y, sample_weight=sample_weight)\n    coefs = local_wlasso.coef_\n    # Weighted tau\n    if sample_weight is not None:\n        y_weighted = y * sample_weight / np.sum(sample_weight)\n    else:\n        y_weighted = y / n_samples\n    tausq = np.dot(y - local_wlasso.predict(X_reduced), y_weighted)\n    return coefs, tausq\n\n\nclass DebiasedLasso(WeightedLasso):\n    \"\"\"Debiased Lasso model.\n\n    Implementation was derived from <https://arxiv.org/abs/1303.0518>.\n\n    Only implemented for single-dimensional output.\n\n    .. testsetup::\n\n        import numpy as np\n        from sklearn.linear_model import lasso_path\n\n    Parameters\n    ----------\n    alpha : str | float, default 'auto'.\n        Constant that multiplies the L1 term. Defaults to 'auto'.\n        ``alpha = 0`` is equivalent to an ordinary least square, solved\n        by the :class:`LinearRegression` object. For numerical\n        reasons, using ``alpha = 0`` with the ``Lasso`` object is not advised.\n        Given this, you should use the :class:`.LinearRegression` object.\n\n    n_alphas : int, default 100\n        How many alphas to try if alpha='auto'\n\n    alpha_cov : str | float, default 'auto'\n        The regularization alpha that is used when constructing the pseudo inverse of\n        the covariance matrix Theta used to for correcting the lasso coefficient. Each\n        such regression corresponds to the regression of one feature on the remainder\n        of the features.\n\n    n_alphas_cov : int, default 10\n        How many alpha_cov to try if alpha_cov='auto'.\n\n    fit_intercept : bool, default True\n        Whether to calculate the intercept for this model. If set\n        to False, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    precompute : True | False | array_like, default False\n        Whether to use a precomputed Gram matrix to speed up\n        calculations. If set to ``'auto'`` let us decide. The Gram\n        matrix can also be passed as argument. For sparse input\n        this option is always ``True`` to preserve sparsity.\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    max_iter : int, optional\n        The maximum number of iterations\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    warm_start : bool, optional\n        When set to True, reuse the solution of the previous call to fit as\n        initialization, otherwise, just erase the previous solution.\n        See :term:`the Glossary <warm_start>`.\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    n_jobs : int, optional\n        How many jobs to use whenever parallelism is invoked\n\n    Attributes\n    ----------\n    coef_ : array, shape (n_features,)\n        Parameter vector (w in the cost function formula).\n\n    intercept_ : float\n        Independent term in decision function.\n\n    n_iter_ : int | array_like, shape (n_targets,)\n        Number of iterations run by the coordinate descent solver to reach\n        the specified tolerance.\n\n    selected_alpha_ : float\n        Penalty chosen through cross-validation, if alpha='auto'.\n\n    coef_stderr_ : array, shape (n_features,)\n        Estimated standard errors for coefficients (see ``coef_`` attribute).\n\n    intercept_stderr_ : float\n        Estimated standard error intercept (see ``intercept_`` attribute).\n\n    \"\"\"\n\n    def __init__(self, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10,\n                 fit_intercept=True, precompute=False, copy_X=True, max_iter=1000,\n                 tol=1e-4, warm_start=False,\n                 random_state=None, selection='cyclic', n_jobs=None):\n        self.n_jobs = n_jobs\n        self.n_alphas = n_alphas\n        self.alpha_cov = alpha_cov\n        self.n_alphas_cov = n_alphas_cov\n        super().__init__(\n            alpha=alpha, fit_intercept=fit_intercept,\n            precompute=precompute, copy_X=copy_X,\n            max_iter=max_iter, tol=tol, warm_start=warm_start,\n            positive=False, random_state=random_state,\n            selection=selection)\n\n    def fit(self, X, y, sample_weight=None, check_input=True):\n        \"\"\"Fit debiased lasso model.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Input data.\n\n        y : array, shape (n_samples,)\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n\n        check_input : bool, default True\n            Allow to bypass several input checking.\n            Don't use this parameter unless you know what you do.\n        \"\"\"\n        self.selected_alpha_ = None\n        if self.alpha == 'auto':\n            # Select optimal penalty\n            self.alpha = self._get_optimal_alpha(X, y, sample_weight)\n            self.selected_alpha_ = self.alpha\n        else:\n            # Warn about consistency\n            warnings.warn(\"Setting a suboptimal alpha can lead to miscalibrated confidence intervals. \"\n                          \"We recommend setting alpha='auto' for optimality.\")\n\n        # Convert X, y into numpy arrays\n        X, y = check_X_y(X, y, y_numeric=True, multi_output=False)\n        # Fit weighted lasso with user input\n        super().fit(X, y, sample_weight, check_input)\n        # Center X, y\n        X, y, X_offset, y_offset, X_scale = _preprocess_data(\n            X, y, fit_intercept=self.fit_intercept,\n            copy=self.copy_X, check_input=check_input, sample_weight=sample_weight)\n\n        # Calculate quantities that will be used later on. Account for centered data\n        y_pred = self.predict(X) - self.intercept_\n        self._theta_hat = self._get_theta_hat(X, sample_weight)\n        self._X_offset = X_offset\n\n        # Calculate coefficient and error variance\n        num_nonzero_coefs = np.count_nonzero(self.coef_)\n        self._error_variance = np.average((y - y_pred)**2, weights=sample_weight) / \\\n            (1 - num_nonzero_coefs / X.shape[0])\n        self._mean_error_variance = self._error_variance / X.shape[0]\n        self._coef_variance = self._get_unscaled_coef_var(\n            X, self._theta_hat, sample_weight) * self._error_variance\n\n        # Add coefficient correction\n        coef_correction = self._get_coef_correction(\n            X, y, y_pred, sample_weight, self._theta_hat)\n        self.coef_ += coef_correction\n\n        # Set coefficients and intercept standard errors\n        self.coef_stderr_ = np.sqrt(np.diag(self._coef_variance))\n        if self.fit_intercept:\n            self.intercept_stderr_ = np.sqrt(\n                self._X_offset @ self._coef_variance @ self._X_offset +\n                self._mean_error_variance\n            )\n        else:\n            self.intercept_stderr_ = 0\n\n        # Set intercept\n        self._set_intercept(X_offset, y_offset, X_scale)\n        # Return alpha to 'auto' state\n        if self.selected_alpha_ is not None:\n            self.alpha = 'auto'\n        return self\n\n    def prediction_stderr(self, X):\n        \"\"\"Get the standard error of the predictions using the debiased lasso.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Samples.\n\n        Returns\n        -------\n        prediction_stderr : array_like, shape (n_samples, )\n            The standard error of each coordinate of the output at each point we predict\n        \"\"\"\n        # Note that in the case of no intercept, X_offset is 0\n        if self.fit_intercept:\n            X = X - self._X_offset\n        # Calculate the variance of the predictions\n        var_pred = np.sum(np.matmul(X, self._coef_variance) * X, axis=1)\n        if self.fit_intercept:\n            var_pred += self._mean_error_variance\n        pred_stderr = np.sqrt(var_pred)\n        return pred_stderr\n\n    def predict_interval(self, X, alpha=0.05):\n        \"\"\"Build prediction confidence intervals using the debiased lasso.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Samples.\n\n        alpha:  float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        (y_lower, y_upper) : tuple of array, shape (n_samples, )\n            Returns lower and upper interval endpoints.\n        \"\"\"\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        y_pred = self.predict(X)\n        # Calculate prediction confidence intervals\n        sd_pred = self.prediction_stderr(X)\n        y_lower = y_pred + \\\n            np.apply_along_axis(lambda s: norm.ppf(\n                lower, scale=s), 0, sd_pred)\n        y_upper = y_pred + \\\n            np.apply_along_axis(lambda s: norm.ppf(\n                upper, scale=s), 0, sd_pred)\n        return y_lower, y_upper\n\n    def coef__interval(self, alpha=0.05):\n        \"\"\"Get a confidence interval bounding the fitted coefficients.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        (coef_lower, coef_upper) : tuple of array, shape (n_coefs, )\n            Returns lower and upper interval endpoints for the coefficients.\n        \"\"\"\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        return self.coef_ + np.apply_along_axis(lambda s: norm.ppf(lower, scale=s), 0, self.coef_stderr_), \\\n            self.coef_ + np.apply_along_axis(lambda s: norm.ppf(upper, scale=s), 0, self.coef_stderr_)\n\n    def intercept__interval(self, alpha=0.05):\n        \"\"\"Get a confidence interval bounding the fitted intercept.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        (intercept_lower, intercept_upper) : tuple floats\n            Returns lower and upper interval endpoints for the intercept.\n        \"\"\"\n        lower = alpha / 2\n        upper = 1 - alpha / 2\n        if self.fit_intercept:\n            return self.intercept_ + norm.ppf(lower, scale=self.intercept_stderr_), self.intercept_ + \\\n                norm.ppf(upper, scale=self.intercept_stderr_),\n        else:\n            return 0.0, 0.0\n\n    def _get_coef_correction(self, X, y, y_pred, sample_weight, theta_hat):\n        # Assumes flattened y\n        n_samples, _ = X.shape\n        y_res = np.ndarray.flatten(y) - y_pred\n        # Compute weighted residuals\n        if sample_weight is not None:\n            y_res_scaled = y_res * sample_weight / np.sum(sample_weight)\n        else:\n            y_res_scaled = y_res / n_samples\n        delta_coef = np.matmul(\n            theta_hat, np.matmul(X.T, y_res_scaled))\n        return delta_coef\n\n    def _get_optimal_alpha(self, X, y, sample_weight):\n        # To be done once per target. Assumes y can be flattened.\n        cv_estimator = WeightedLassoCV(cv=5, n_alphas=self.n_alphas, fit_intercept=self.fit_intercept,\n                                       precompute=self.precompute, copy_X=True,\n                                       max_iter=self.max_iter, tol=self.tol,\n                                       random_state=self.random_state,\n                                       selection=self.selection,\n                                       n_jobs=self.n_jobs)\n        cv_estimator.fit(X, y.flatten(), sample_weight=sample_weight)\n        return cv_estimator.alpha_\n\n    def _get_theta_hat(self, X, sample_weight):\n        # Assumes that X has already been offset\n        n_samples, n_features = X.shape\n        # Special case: n_features=1\n        if n_features == 1:\n            C_hat = np.ones((1, 1))\n            tausq = (X.T @ X / n_samples).flatten()\n            return np.diag(1 / tausq) @ C_hat\n        # Compute Lasso coefficients for the columns of the design matrix\n        results = Parallel(n_jobs=self.n_jobs)(\n            delayed(_get_theta_coefs_and_tau_sq)(i, X, sample_weight,\n                                                 self.alpha_cov, self.n_alphas_cov,\n                                                 self.max_iter, self.tol, self.random_state)\n            for i in range(n_features))\n        coefs, tausq = zip(*results)\n        coefs = np.array(coefs)\n        tausq = np.array(tausq)\n        # Compute C_hat\n        C_hat = np.diag(np.ones(n_features))\n        C_hat[0][1:] = -coefs[0]\n        for i in range(1, n_features):\n            C_hat[i][:i] = -coefs[i][:i]\n            C_hat[i][i + 1:] = -coefs[i][i:]\n        # Compute theta_hat\n        theta_hat = np.diag(1 / tausq) @ C_hat\n        return theta_hat\n\n    def _get_unscaled_coef_var(self, X, theta_hat, sample_weight):\n        if sample_weight is not None:\n            norm_weights = sample_weight / np.sum(sample_weight)\n            sigma = X.T @ (norm_weights.reshape(-1, 1) * X)\n        else:\n            sigma = np.matmul(X.T, X) / X.shape[0]\n        _unscaled_coef_var = np.matmul(\n            np.matmul(theta_hat, sigma), theta_hat.T) / X.shape[0]\n        return _unscaled_coef_var\n\n\nclass MultiOutputDebiasedLasso(MultiOutputRegressor):\n    \"\"\"Debiased MultiOutputLasso model.\n\n    Implementation was derived from <https://arxiv.org/abs/1303.0518>.\n    Applies debiased lasso once per target. If only a flat target is passed in,\n    it reverts to the DebiasedLasso algorithm.\n\n    Parameters\n    ----------\n    alpha : str | float, optional. Default 'auto'.\n        Constant that multiplies the L1 term. Defaults to 'auto'.\n        ``alpha = 0`` is equivalent to an ordinary least square, solved\n        by the :class:`LinearRegression` object. For numerical\n        reasons, using ``alpha = 0`` with the ``Lasso`` object is not advised.\n        Given this, you should use the :class:`LinearRegression` object.\n\n    n_alphas : int, default 100\n        How many alphas to try if alpha='auto'\n\n    alpha_cov : str | float, default 'auto'\n        The regularization alpha that is used when constructing the pseudo inverse of\n        the covariance matrix Theta used to for correcting the lasso coefficient. Each\n        such regression corresponds to the regression of one feature on the remainder\n        of the features.\n\n    n_alphas_cov : int, default 10\n        How many alpha_cov to try if alpha_cov='auto'.\n\n    fit_intercept : bool, default True\n        Whether to calculate the intercept for this model. If set\n        to False, no intercept will be used in calculations\n        (e.g. data is expected to be already centered).\n\n    precompute : True | False | array_like, default False\n        Whether to use a precomputed Gram matrix to speed up\n        calculations. If set to ``'auto'`` let us decide. The Gram\n        matrix can also be passed as argument. For sparse input\n        this option is always ``True`` to preserve sparsity.\n\n    copy_X : bool, default True\n        If ``True``, X will be copied; else, it may be overwritten.\n\n    max_iter : int, optional\n        The maximum number of iterations\n\n    tol : float, optional\n        The tolerance for the optimization: if the updates are\n        smaller than ``tol``, the optimization code checks the\n        dual gap for optimality and continues until it is smaller\n        than ``tol``.\n\n    warm_start : bool, optional\n        When set to True, reuse the solution of the previous call to fit as\n        initialization, otherwise, just erase the previous solution.\n        See :term:`the Glossary <warm_start>`.\n\n    random_state : int, RandomState instance, or None, default None\n            The seed of the pseudo random number generator that selects a random\n        feature to update.  If int, random_state is the seed used by the random\n        number generator; If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random\n        number generator; If None, the random number generator is the\n        :class:`~numpy.random.mtrand.RandomState` instance used by :mod:`np.random<numpy.random>`. Used when\n        ``selection='random'``.\n\n    selection : str, default 'cyclic'\n        If set to 'random', a random coefficient is updated every iteration\n        rather than looping over features sequentially by default. This\n        (setting to 'random') often leads to significantly faster convergence\n        especially when tol is higher than 1e-4.\n\n    n_jobs : int, optional\n        How many jobs to use whenever parallelism is invoked\n\n    Attributes\n    ----------\n    coef_ : array, shape (n_targets, n_features) or (n_features,)\n        Parameter vector (w in the cost function formula).\n\n    intercept_ : array, shape (n_targets, ) or float\n        Independent term in decision function.\n\n    selected_alpha_ : array, shape (n_targets, ) or float\n        Penalty chosen through cross-validation, if alpha='auto'.\n\n    coef_stderr_ : array, shape (n_targets, n_features) or (n_features, )\n        Estimated standard errors for coefficients (see ``coef_`` attribute).\n\n    intercept_stderr_ : array, shape (n_targets, ) or float\n        Estimated standard error intercept (see ``intercept_`` attribute).\n\n    \"\"\"\n\n    def __init__(self, alpha='auto', n_alphas=100, alpha_cov='auto', n_alphas_cov=10,\n                 fit_intercept=True,\n                 precompute=False, copy_X=True, max_iter=1000,\n                 tol=1e-4, warm_start=False,\n                 random_state=None, selection='cyclic', n_jobs=None):\n        self.estimator = DebiasedLasso(alpha=alpha, n_alphas=n_alphas, alpha_cov=alpha_cov, n_alphas_cov=n_alphas_cov,\n                                       fit_intercept=fit_intercept,\n                                       precompute=precompute, copy_X=copy_X, max_iter=max_iter,\n                                       tol=tol, warm_start=warm_start,\n                                       random_state=random_state, selection=selection,\n                                       n_jobs=n_jobs)\n        super().__init__(estimator=self.estimator, n_jobs=n_jobs)\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"Fit the multi-output debiased lasso model.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Input data.\n\n        y : array, shape (n_samples, n_targets) or (n_samples, )\n            Target. Will be cast to X's dtype if necessary\n\n        sample_weight : numpy array of shape [n_samples]\n                        Individual weights for each sample.\n                        The weights will be normalized internally.\n        \"\"\"\n        # Allow for single output as well\n        # When only one output is passed in, the MultiOutputDebiasedLasso behaves like the DebiasedLasso\n        self.flat_target = False\n        if np.ndim(y) == 1:\n            self.flat_target = True\n            y = np.asarray(y).reshape(-1, 1)\n        super().fit(X, y, sample_weight)\n        # Set coef_ attribute\n        self._set_attribute(\"coef_\")\n        # Set intercept_ attribute\n        self._set_attribute(\"intercept_\",\n                            condition=self.estimators_[0].fit_intercept,\n                            default=0.0)\n        # Set selected_alpha_ attribute\n        self._set_attribute(\"selected_alpha_\",\n                            condition=(self.estimators_[0].alpha == 'auto'))\n        # Set coef_stderr_\n        self._set_attribute(\"coef_stderr_\")\n        # intercept_stderr_\n        self._set_attribute(\"intercept_stderr_\")\n        return self\n\n    def predict(self, X):\n        \"\"\"Get the prediction using the debiased lasso.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Samples.\n\n        Returns\n        -------\n        prediction : array_like, shape (n_samples, ) or (n_samples, n_targets)\n            The prediction at each point.\n\n        \"\"\"\n        pred = super().predict(X)\n        if self.flat_target:\n            pred = pred.flatten()\n        return pred\n\n    def prediction_stderr(self, X):\n        \"\"\"Get the standard error of the predictions using the debiased lasso.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Samples.\n\n        Returns\n        -------\n        prediction_stderr : array_like, shape (n_samples, ) or (n_samples, n_targets)\n            The standard error of each coordinate of the output at each point we predict\n        \"\"\"\n        n_estimators = len(self.estimators_)\n        X = check_array(X)\n        pred_stderr = np.empty((X.shape[0], n_estimators))\n        for i, estimator in enumerate(self.estimators_):\n            pred_stderr[:, i] = estimator.prediction_stderr(X)\n        if self.flat_target:\n            pred_stderr = pred_stderr.flatten()\n        return pred_stderr\n\n    def predict_interval(self, X, alpha=0.05):\n        \"\"\"Build prediction confidence intervals using the debiased lasso.\n\n        Parameters\n        ----------\n        X : ndarray or scipy.sparse matrix, (n_samples, n_features)\n            Samples.\n\n        alpha: float in [0, 1], default 0.05\n            The overall level of confidence of the reported interval.\n            The alpha/2, 1-alpha/2 confidence interval is reported.\n\n        Returns\n        -------\n        (y_lower, y_upper) : tuple of array, shape (n_samples, n_targets) or (n_samples, )\n            Returns lower and upper interval endpoints.\n        \"\"\"\n        n_estimators = len(self.estimators_)\n        X = check_array(X)\n        y_lower = np.empty((X.shape[0], n_estimators))\n        y_upper = np.empty((X.shape[0], n_estimators))\n        for i, estimator in enumerate(self.estimators_):\n            y_lower[:, i], y_upper[:, i] = estimator.predict_interval(X, alpha=alpha)\n        if self.flat_target:\n            y_lower = y_lower.flatten()\n            y_upper = y_upper.flatten()\n        return y_lower, y_upper\n\n    def coef__interval(self, alpha=0.05):\n        \"\"\"Get a confidence interval bounding the fitted coefficients.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        (coef_lower, coef_upper) : tuple of array, shape (n_targets, n_coefs) or (n_coefs, )\n            Returns lower and upper interval endpoints for the coefficients.\n        \"\"\"\n        n_estimators = len(self.estimators_)\n        coef_lower = np.empty((n_estimators, self.estimators_[0].coef_.shape[0]))\n        coef_upper = np.empty((n_estimators, self.estimators_[0].coef_.shape[0]))\n        for i, estimator in enumerate(self.estimators_):\n            coef_lower[i], coef_upper[i] = estimator.coef__interval(alpha=alpha)\n        if self.flat_target == 1:\n            coef_lower = coef_lower.flatten()\n            coef_upper = coef_upper.flatten()\n        return coef_lower, coef_upper\n\n    def intercept__interval(self, alpha=0.05):\n        \"\"\"Get a confidence interval bounding the fitted intercept.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        (intercept_lower, intercept_upper) : tuple of array of size (n_targets, ) or tuple of floats\n            Returns lower and upper interval endpoints for the intercept.\n        \"\"\"\n        if len(self.estimators_) == 1:\n            return self.estimators_[0].intercept__interval(alpha=alpha)\n        else:\n            intercepts = np.array([estimator.intercept__interval(alpha=alpha) for estimator in self.estimators_])\n            return intercepts[:, 0], intercepts[:, 1]\n\n    def get_params(self, deep=True):\n        \"\"\"Get parameters for this estimator.\"\"\"\n        return self.estimator.get_params(deep=deep)\n\n    def set_params(self, **params):\n        \"\"\"Set parameters for this estimator.\"\"\"\n        self.estimator.set_params(**params)\n\n    def _set_attribute(self, attribute_name, condition=True, default=None):\n        if condition:\n            if not self.flat_target:\n                attribute_value = np.array([getattr(estimator, attribute_name) for estimator in self.estimators_])\n            else:\n                attribute_value = getattr(self.estimators_[0], attribute_name)\n        else:\n            attribute_value = default\n        setattr(self, attribute_name, attribute_value)\n\n\nclass _PairedEstimatorWrapper:\n    \"\"\"\n    Helper class to wrap one estimator for single targets with another for multiple targets.\n\n    Not intended to be used directly by users.\n    \"\"\"\n\n    _SingleEst = None\n    _MultiEst = None\n    _known_params = []\n    _post_fit_attrs = []\n\n    def __init__(self, *args, **kwargs):\n        self.args = args\n        self.kwargs = kwargs\n        # set model to the single-target estimator by default so there's always a model to get and set attributes on\n        self.model = self._SingleEst(*args, **kwargs)\n\n    def fit(self, X, y, sample_weight=None):\n        self._needs_unravel = False\n        params = {key: value\n                  for (key, value) in self.get_params().items()\n                  if key in self._known_params}\n        if ndim(y) == 2 and shape(y)[1] > 1:\n            self.model = self._MultiEst(**params)\n        else:\n            if ndim(y) == 2 and shape(y)[1] == 1:\n                y = np.ravel(y)\n                self._needs_unravel = True\n            self.model = self._SingleEst(**params)\n        self.model.fit(X, y, sample_weight)\n        for param in self._post_fit_attrs:\n            setattr(self, param, getattr(self.model, param))\n        return self\n\n    def predict(self, X):\n        predictions = self.model.predict(X)\n        return reshape(predictions, (-1, 1)) if self._needs_unravel else predictions\n\n    def score(self, X, y, sample_weight=None):\n        return self.model.score(X, y, sample_weight)\n\n    def __getattr__(self, key):\n        if key in self._known_params:\n            return getattr(self.model, key)\n        else:\n            raise AttributeError(\"No attribute \" + key)\n\n    def __setattr__(self, key, value):\n        if key in self._known_params:\n            setattr(self.model, key, value)\n        else:\n            super().__setattr__(key, value)\n\n    def get_params(self, deep=True):\n        \"\"\"Get parameters for this estimator.\"\"\"\n        return {k: v for k, v in self.model.get_params(deep=deep).items() if k in self._known_params}\n\n    def set_params(self, **params):\n        \"\"\"Set parameters for this estimator.\"\"\"\n        self.model.set_params(**params)\n\n\nclass WeightedLassoCVWrapper(_PairedEstimatorWrapper):\n    \"\"\"Helper class to wrap either WeightedLassoCV or WeightedMultiTaskLassoCV depending on the shape of the target.\"\"\"\n\n    _SingleEst = WeightedLassoCV\n    _MultiEst = WeightedMultiTaskLassoCV\n\n    # whitelist known params because full set is not necessarily identical between LassoCV and MultiTaskLassoCV\n    # (e.g. former has 'positive' and 'precompute' while latter does not)\n    _known_params = set(['eps', 'n_alphas', 'alphas', 'fit_intercept', 'normalize', 'max_iter', 'tol', 'copy_X',\n                         'cv', 'verbose', 'n_jobs', 'random_state', 'selection'])\n\n    _post_fit_attrs = set(['alpha_', 'alphas_', 'coef_', 'dual_gap_',\n                           'intercept_', 'n_iter_', 'n_features_in_', 'mse_path_'])\n\n\nclass WeightedLassoWrapper(_PairedEstimatorWrapper):\n    \"\"\"Helper class to wrap either WeightedLasso or WeightedMultiTaskLasso depending on the shape of the target.\"\"\"\n\n    _SingleEst = WeightedLasso\n    _MultiEst = WeightedMultiTaskLasso\n    _known_params = set(['alpha', 'fit_intercept', 'copy_X', 'max_iter', 'tol',\n                         'random_state', 'selection'])\n    _post_fit_attrs = set(['coef_', 'dual_gap_', 'intercept_', 'n_iter_', 'n_features_in_'])\n\n\nclass SelectiveRegularization:\n    \"\"\"\n    Estimator of a linear model where regularization is applied to only a subset of the coefficients.\n\n    Assume that our loss is\n\n    .. math::\n        \\\\ell(\\\\beta_1, \\\\beta_2) = \\\\lVert y - X_1 \\\\beta_1 - X_2 \\\\beta_2 \\\\rVert^2 + f(\\\\beta_2)\n\n    so that we're regularizing only the coefficients in :math:`\\\\beta_2`.\n\n    Then, since :math:`\\\\beta_1` doesn't appear in the penalty, the problem of finding :math:`\\\\beta_1` to minimize the\n    loss once :math:`\\\\beta_2` is known reduces to just a normal OLS regression, so that:\n\n    .. math::\n        \\\\beta_1 = (X_1^\\\\top X_1)^{-1}X_1^\\\\top(y - X_2 \\\\beta_2)\n\n    Plugging this into the loss, we obtain\n\n    .. math::\n\n        ~& \\\\lVert y - X_1 (X_1^\\\\top X_1)^{-1}X_1^\\\\top(y - X_2 \\\\beta_2) - X_2 \\\\beta_2 \\\\rVert^2 + f(\\\\beta_2) \\\\\\\\\n        =~& \\\\lVert (I - X_1 (X_1^\\\\top  X_1)^{-1}X_1^\\\\top)(y - X_2 \\\\beta_2) \\\\rVert^2 + f(\\\\beta_2)\n\n    But, letting :math:`M_{X_1} = I - X_1 (X_1^\\\\top  X_1)^{-1}X_1^\\\\top`, we see that this is\n\n    .. math::\n        \\\\lVert (M_{X_1} y) - (M_{X_1} X_2) \\\\beta_2 \\\\rVert^2 + f(\\\\beta_2)\n\n    so finding the minimizing :math:`\\\\beta_2` can be done by regressing :math:`M_{X_1} y` on :math:`M_{X_1} X_2` using\n    the penalized regression method incorporating :math:`f`.  Note that these are just the residual values of :math:`y`\n    and :math:`X_2` when regressed on :math:`X_1` using OLS.\n\n    Parameters\n    ----------\n    unpenalized_inds : list of int, other 1-dimensional indexing expression, or callable\n        The indices that should not be penalized when the model is fit; all other indices will be penalized.\n        If this is a callable, it will be called with the arguments to `fit` and should return a corresponding\n        indexing expression.  For example, ``lambda X, y: unpenalized_inds=slice(1,-1)`` will result in only the first\n        and last indices being penalized.\n    penalized_model : :term:`regressor`\n        A penalized linear regression model\n    fit_intercept : bool, default True\n        Whether to fit an intercept; the intercept will not be penalized if it is fit\n\n    Attributes\n    ----------\n    coef_ : array, shape (n_features, ) or (n_targets, n_features)\n        Estimated coefficients for the linear regression problem.\n        If multiple targets are passed during the fit (y 2D), this\n        is a 2D array of shape (n_targets, n_features), while if only\n        one target is passed, this is a 1D array of length n_features.\n    intercept_ : float or array of shape (n_targets)\n        Independent term in the linear model.\n    penalized_model : :term:`regressor`\n        The penalized linear regression model, cloned from the one passed into the initializer\n    \"\"\"\n\n    def __init__(self, unpenalized_inds, penalized_model, fit_intercept=True):\n        self._unpenalized_inds_expr = unpenalized_inds\n        self.penalized_model = clone(penalized_model)\n        self._fit_intercept = fit_intercept\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"\n        Fit the model.\n\n        Parameters\n        ----------\n        X : array_like, shape (n, d_x)\n            The features to regress against\n        y : array_like, shape (n,) or (n, d_y)\n            The regression target\n        sample_weight : array_like, shape (n,), optional\n            Relative weights for each sample\n        \"\"\"\n        X, y = check_X_y(X, y, multi_output=True, estimator=self)\n        if callable(self._unpenalized_inds_expr):\n            if sample_weight is None:\n                self._unpenalized_inds = self._unpenalized_inds_expr(X, y)\n            else:\n                self._unpenalized_inds = self._unpenalized_inds_expr(X, y, sample_weight=sample_weight)\n        else:\n            self._unpenalized_inds = self._unpenalized_inds_expr\n        mask = np.ones(X.shape[1], dtype=bool)\n        mask[self._unpenalized_inds] = False\n        self._penalized_inds = np.arange(X.shape[1])[mask]\n        X1 = X[:, self._unpenalized_inds]\n        X2 = X[:, self._penalized_inds]\n\n        X2_res = X2 - LinearRegression(fit_intercept=self._fit_intercept).fit(X1, X2,\n                                                                              sample_weight=sample_weight).predict(X1)\n        y_res = y - LinearRegression(fit_intercept=self._fit_intercept).fit(X1, y,\n                                                                            sample_weight=sample_weight).predict(X1)\n\n        if sample_weight is not None:\n            self.penalized_model.fit(X2_res, y_res, sample_weight=sample_weight)\n        else:\n            self.penalized_model.fit(X2_res, y_res)\n\n        # The unpenalized model can't contain an intercept, because in the analysis above\n        # we rely on the fact that M(X beta) = (M X) beta, but M(X beta + c) is not the same\n        # as (M X) beta + c, so the learned coef and intercept will be wrong\n        intercept = self.penalized_model.predict(np.zeros_like(X2[0:1]))\n        if not np.allclose(intercept, 0):\n            raise AttributeError(\"The penalized model has a non-zero intercept; to fit an intercept \"\n                                 \"you should instead either set fit_intercept to True when initializing the \"\n                                 \"SelectiveRegression instance (for an unpenalized intercept) or \"\n                                 \"explicitly add a column of ones to the data being fit and include that \"\n                                 \"column in the penalized indices.\")\n\n        # now regress X1 on y - X2 * beta2 to learn beta1\n        self._model_X1 = LinearRegression(fit_intercept=self._fit_intercept)\n        self._model_X1.fit(X1, y - self.penalized_model.predict(X2), sample_weight=sample_weight)\n\n        # set coef_ and intercept_ attributes\n        self.coef_ = np.empty(shape(y)[1:] + shape(X)[1:])\n        self.coef_[..., self._penalized_inds] = self.penalized_model.coef_\n        self.coef_[..., self._unpenalized_inds] = self._model_X1.coef_\n\n        # Note that the penalized model should *not* have an intercept\n        self.intercept_ = self._model_X1.intercept_\n\n        return self\n\n    def predict(self, X):\n        \"\"\"\n        Make a prediction for each sample.\n\n        Parameters\n        ----------\n        X : array_like, shape (m, d_x)\n            The samples whose targets to predict\n\n        Output\n        ------\n        arr : array_like, shape (m,) or (m, d_y)\n            The predicted targets\n        \"\"\"\n        check_is_fitted(self, \"coef_\")\n        X1 = X[:, self._unpenalized_inds]\n        X2 = X[:, self._penalized_inds]\n        return self._model_X1.predict(X1) + self.penalized_model.predict(X2)\n\n    def score(self, X, y):\n        \"\"\"\n        Score the predictions for a set of features to ground truth.\n\n        Parameters\n        ----------\n        X : array_like, shape (m, d_x)\n            The samples to predict\n        y : array_like, shape (m,) or (m, d_y)\n            The ground truth targets\n\n        Output\n        ------\n        score : float\n            The model's score\n        \"\"\"\n        check_is_fitted(self, \"coef_\")\n        X, y = check_X_y(X, y, multi_output=True, estimator=self)\n        return r2_score(y, self.predict(X))\n\n    known_params = {'known_params', 'coef_', 'intercept_', 'penalized_model',\n                    '_unpenalized_inds_expr', '_fit_intercept', '_unpenalized_inds', '_penalized_inds', '_model_X1'}\n\n    def __getattr__(self, key):\n        # don't proxy special methods\n        if key.startswith('__'):\n            raise AttributeError(key)\n\n        # don't pass get_params through to model, because that will cause sklearn to clone this\n        # regressor incorrectly\n        if key != \"get_params\" and key not in self.known_params:\n            return getattr(self.penalized_model, key)\n        else:\n            # Note: for known attributes that have been set this method will not be called,\n            # so we should just throw here because this is an attribute belonging to this class\n            # but which hasn't yet been set on this instance\n            raise AttributeError(\"No attribute \" + key)\n\n    def __setattr__(self, key, value):\n        if key not in self.known_params:\n            setattr(self.penalized_model, key, value)\n        else:\n            super().__setattr__(key, value)\n\n\nclass _StatsModelsWrapper(BaseEstimator):\n    \"\"\"\n    Parent class for statsmodels linear models.\n\n    At init time each children class should set the\n    boolean flag property fit_intercept. At fit time, each children class must calculate and set the\n    following properties:\n\n    _param: (m,) or (m, p) array\n        Where m is number of features and p is number of outcomes, which corresponds to the\n        coefficients of the linear model (including the intercept in the first column if fit_intercept=True).\n    _param_var: (m, m) or (p, m, m) array\n        Where m is number of features and p is number of outcomes, where each (m, m) matrix corresponds\n        to the scaled covariance matrix of the parameters of the linear model.\n    _n_out: the second dimension of the training y, or 0 if y is a vector\n    \"\"\"\n\n    def predict(self, X):\n        \"\"\"\n        Predicts the output given an array of instances.\n\n        Parameters\n        ----------\n        X : (n, d) array_like\n            The covariates on which to predict\n\n        Returns\n        -------\n        predictions : {(n,) array, (n,p) array}\n            The predicted mean outcomes\n        \"\"\"\n        if X is None:\n            X = np.empty((1, 0))\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n        return np.matmul(X, self._param)\n\n    @property\n    def coef_(self):\n        \"\"\"\n        Get the model's coefficients on the covariates.\n\n        Returns\n        -------\n        coef_ : {(d,), (p, d)} nd array_like\n            The coefficients of the variables in the linear regression. If label y\n            was p-dimensional, then the result is a matrix of coefficents, whose p-th\n            row containts the coefficients corresponding to the p-th coordinate of the label.\n        \"\"\"\n        if self.fit_intercept:\n            if self._n_out == 0:\n                return self._param[1:]\n            else:\n                return self._param[1:].T\n        else:\n            if self._n_out == 0:\n                return self._param\n            else:\n                return self._param.T\n\n    @property\n    def intercept_(self):\n        \"\"\"\n        Get the intercept(s) (or 0 if no intercept was fit).\n\n        Returns\n        -------\n        intercept_ : float or (p,) nd array_like\n            The intercept of the linear regresion. If label y was p-dimensional, then the result is a vector\n            whose p-th entry containts the intercept corresponding to the p-th coordinate of the label.\n        \"\"\"\n        return self._param[0] if self.fit_intercept else (0 if self._n_out == 0 else np.zeros(self._n_out))\n\n    @property\n    def _param_stderr(self):\n        \"\"\"\n        The standard error of each parameter that was estimated.\n\n        Returns\n        -------\n        _param_stderr : {(d (+1),) (d (+1), p)} nd array_like\n            The standard error of each parameter that was estimated.\n        \"\"\"\n        if self._n_out == 0:\n            return np.sqrt(np.clip(np.diag(self._param_var), 0, np.inf))\n        else:\n            return np.array([np.sqrt(np.clip(np.diag(v), 0, np.inf)) for v in self._param_var]).T\n\n    @property\n    def coef_stderr_(self):\n        \"\"\"\n        Get the standard error of the fitted coefficients.\n\n        Returns\n        -------\n        coef_stderr_ : {(d,), (p, d)} nd array_like\n            The standard error of the coefficients\n        \"\"\"\n        return self._param_stderr[1:].T if self.fit_intercept else self._param_stderr.T\n\n    @property\n    def intercept_stderr_(self):\n        \"\"\"\n        Get the standard error of the intercept(s) (or 0 if no intercept was fit).\n\n        Returns\n        -------\n        intercept_stderr_ : float or (p,) nd array_like\n            The standard error of the intercept(s)\n        \"\"\"\n        return self._param_stderr[0] if self.fit_intercept else (0 if self._n_out == 0 else np.zeros(self._n_out))\n\n    def prediction_stderr(self, X):\n        \"\"\"\n        Get the standard error of the predictions.\n\n        Parameters\n        ----------\n        X : (n, d) array_like\n            The covariates at which to predict\n\n        Returns\n        -------\n        prediction_stderr : (n, p) array_like\n            The standard error of each coordinate of the output at each point we predict\n        \"\"\"\n        if X is None:\n            X = np.empty((1, 0))\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n        if self._n_out == 0:\n            return np.sqrt(np.clip(np.sum(np.matmul(X, self._param_var) * X, axis=1), 0, np.inf))\n        else:\n            return np.array([np.sqrt(np.clip(np.sum(np.matmul(X, v) * X, axis=1), 0, np.inf))\n                             for v in self._param_var]).T\n\n    def coef__interval(self, alpha=0.05):\n        \"\"\"\n        Get a confidence interval bounding the fitted coefficients.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        coef__interval : {tuple ((p, d) array, (p,d) array), tuple ((d,) array, (d,) array)}\n            The lower and upper bounds of the confidence interval of the coefficients\n        \"\"\"\n        return (_safe_norm_ppf(alpha / 2, loc=self.coef_, scale=self.coef_stderr_),\n                _safe_norm_ppf(1 - alpha / 2, loc=self.coef_, scale=self.coef_stderr_))\n\n    def intercept__interval(self, alpha=0.05):\n        \"\"\"\n        Get a confidence interval bounding the intercept(s) (or 0 if no intercept was fit).\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        intercept__interval : {tuple ((p,) array, (p,) array), tuple (float, float)}\n            The lower and upper bounds of the confidence interval of the intercept(s)\n        \"\"\"\n        if not self.fit_intercept:\n            return (0 if self._n_out == 0 else np.zeros(self._n_out)), \\\n                (0 if self._n_out == 0 else np.zeros(self._n_out))\n\n        return (_safe_norm_ppf(alpha / 2, loc=self.intercept_, scale=self.intercept_stderr_),\n                _safe_norm_ppf(1 - alpha / 2, loc=self.intercept_, scale=self.intercept_stderr_))\n\n    def predict_interval(self, X, alpha=0.05):\n        \"\"\"\n        Get a confidence interval bounding the prediction.\n\n        Parameters\n        ----------\n        X : (n, d) array_like\n            The covariates on which to predict\n        alpha : float, default 0.05\n            The confidence level. Will calculate the alpha/2-quantile and the (1-alpha/2)-quantile\n            of the parameter distribution as confidence interval\n\n        Returns\n        -------\n        prediction_intervals : {tuple ((n,) array, (n,) array), tuple ((n,p) array, (n,p) array)}\n            The lower and upper bounds of the confidence intervals of the predicted mean outcomes\n        \"\"\"\n        pred = self.predict(X)\n        pred_stderr = self.prediction_stderr(X)\n\n        return (_safe_norm_ppf(alpha / 2, loc=pred, scale=pred_stderr),\n                _safe_norm_ppf(1 - alpha / 2, loc=pred, scale=pred_stderr))\n\n\nclass StatsModelsLinearRegression(_StatsModelsWrapper):\n    \"\"\"\n    Class which mimics weighted linear regression from the statsmodels package.\n\n    However, unlike statsmodels WLS, this class also supports sample variances in addition to sample weights,\n    which enables more accurate inference when working with summarized data.\n\n    Parameters\n    ----------\n    fit_intercept : bool, default True\n        Whether to fit an intercept in this model\n    cov_type : string, default \"HC0\"\n        The covariance approach to use.  Supported values are \"HCO\", \"HC1\", and \"nonrobust\".\n    enable_federation : bool, default False\n        Whether to enable federation (aggregating this model's results with other models in a distributed setting).\n        This requires additional memory proportional to the number of columns in X to the fourth power.\n    \"\"\"\n\n    def __init__(self, fit_intercept=True, cov_type=\"HC0\", *, enable_federation=False):\n        self.cov_type = cov_type\n        self.fit_intercept = fit_intercept\n        self.enable_federation = enable_federation\n\n    def _check_input(self, X, y, sample_weight, freq_weight, sample_var):\n        \"\"\"Check dimensions and other assertions.\"\"\"\n        X, y, sample_weight, freq_weight, sample_var = check_input_arrays(\n            X, y, sample_weight, freq_weight, sample_var, dtype='numeric')\n        if X is None:\n            X = np.empty((y.shape[0], 0))\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n\n        # set default values for None\n        if sample_weight is None:\n            sample_weight = np.ones(y.shape[0])\n        if freq_weight is None:\n            freq_weight = np.ones(y.shape[0])\n        if sample_var is None:\n            sample_var = np.zeros(y.shape)\n\n        # check freq_weight should be integer and should be accompanied by sample_var\n        if np.any(np.not_equal(np.mod(freq_weight, 1), 0)):\n            raise AttributeError(\"Frequency weights must all be integers for inference to be valid!\")\n        if sample_var.ndim < 2:\n            if np.any(np.equal(freq_weight, 1) & np.not_equal(sample_var, 0)):\n                warnings.warn(\n                    \"Variance was set to non-zero for an observation with freq_weight=1! \"\n                    \"sample_var represents the variance of the original observations that are \"\n                    \"summarized in this sample. Hence, cannot have a non-zero variance if only \"\n                    \"one observations was summarized. Inference will be invalid!\")\n            elif np.any(np.not_equal(freq_weight, 1) & np.equal(sample_var, 0)):\n                warnings.warn(\n                    \"Variance was set to zero for an observation with freq_weight>1! \"\n                    \"sample_var represents the variance of the original observations that are \"\n                    \"summarized in this sample. If it's zero, please use sample_wegiht instead \"\n                    \"to reflect the weight for each individual sample!\")\n        else:\n            if np.any(np.equal(freq_weight, 1) & np.not_equal(np.sum(sample_var, axis=1), 0)):\n                warnings.warn(\n                    \"Variance was set to non-zero for an observation with freq_weight=1! \"\n                    \"sample_var represents the variance of the original observations that are \"\n                    \"summarized in this sample. Hence, cannot have a non-zero variance if only \"\n                    \"one observations was summarized. Inference will be invalid!\")\n            elif np.any(np.not_equal(freq_weight, 1) & np.equal(np.sum(sample_var, axis=1), 0)):\n                warnings.warn(\n                    \"Variance was set to zero for an observation with freq_weight>1! \"\n                    \"sample_var represents the variance of the original observations that are \"\n                    \"summarized in this sample. If it's zero, please use sample_wegiht instead \"\n                    \"to reflect the weight for each individual sample!\")\n\n        # check array shape\n        assert (X.shape[0] == y.shape[0] == sample_weight.shape[0] ==\n                freq_weight.shape[0] == sample_var.shape[0]), \"Input lengths not compatible!\"\n        if y.ndim >= 2:\n            assert (y.ndim == sample_var.ndim and\n                    y.shape[1] == sample_var.shape[1]), \"Input shapes not compatible: {}, {}!\".format(\n                y.shape, sample_var.shape)\n\n        # weight X and y and sample_var\n        weighted_X = X * np.sqrt(sample_weight).reshape(-1, 1)\n        if y.ndim < 2:\n            weighted_y = y * np.sqrt(sample_weight)\n            sample_var = sample_var * sample_weight\n        else:\n            weighted_y = y * np.sqrt(sample_weight).reshape(-1, 1)\n            sample_var = sample_var * (sample_weight.reshape(-1, 1))\n        return weighted_X, weighted_y, freq_weight, sample_var\n\n    def fit(self, X, y, sample_weight=None, freq_weight=None, sample_var=None):\n        \"\"\"\n        Fits the model.\n\n        Parameters\n        ----------\n        X : (N, d) nd array_like\n            co-variates\n        y : {(N,), (N, p)} nd array_like\n            output variable(s)\n        sample_weight : (N,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (N, ) array_like of int or None\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(N,), (N, p)} nd array_like or None\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n\n        Returns\n        -------\n        self : StatsModelsLinearRegression\n        \"\"\"\n        # TODO: Add other types of covariance estimation (e.g. Newey-West (HAC), HC2, HC3)\n        X, y, freq_weight, sample_var = self._check_input(X, y, sample_weight, freq_weight, sample_var)\n\n        WX = X * np.sqrt(freq_weight).reshape(-1, 1)\n\n        if y.ndim < 2:\n            self._n_out = 0\n            wy = y * np.sqrt(freq_weight)\n        else:\n            self._n_out = y.shape[1]\n            wy = y * np.sqrt(freq_weight).reshape(-1, 1)\n\n        param, _, rank, _ = np.linalg.lstsq(WX, wy, rcond=None)\n        n_obs = np.sum(freq_weight)\n        self._n_obs = n_obs\n\n        df = param.shape[0]\n\n        if rank < df:\n            warnings.warn(\"Co-variance matrix is underdetermined. Inference will be invalid!\")\n\n        if n_obs <= df:\n            warnings.warn(\"Number of observations <= than number of parameters. Using biased variance calculation!\")\n            correction = 1\n        else:\n            correction = (n_obs / (n_obs - df))\n\n        # For aggregation calculations, always treat wy as an array so that einsum expressions don't need to change\n        # We'll collapse results back down afterwards if necessary\n        wy = wy.reshape(-1, 1) if y.ndim < 2 else wy\n        sv = sample_var.reshape(-1, 1) if y.ndim < 2 else sample_var\n        self.XX = np.matmul(WX.T, WX)\n        self.Xy = np.matmul(WX.T, wy)\n\n        if self.enable_federation:\n            # for federation, we need to store these 5 arrays when using heteroskedasticity-robust inference\n            if (self.cov_type in ['HC0', 'HC1']):\n                # y dimension is always first in the output when present so that broadcasting works correctly\n                self.XXyy = np.einsum('nw,nx,ny,ny->ywx', X, X, wy, wy)\n                self.XXXy = np.einsum('nv,nw,nx,ny->yvwx', X, X, WX, wy)\n                self.XXXX = np.einsum('nu,nv,nw,nx->uvwx', X, X, WX, WX)\n                self.sample_var = np.einsum('nw,nx,ny->ywx', WX, WX, sv)\n            elif (self.cov_type is None) or (self.cov_type == 'nonrobust'):\n                self.XXyy = np.einsum('ny,ny->y', wy, wy)\n                self.XXXy = np.einsum('nx,ny->yx', WX, wy)\n                self.XXXX = np.einsum('nw,nx->wx', WX, WX)\n                self.sample_var = np.average(sv, weights=freq_weight, axis=0) * n_obs\n\n        sigma_inv = np.linalg.pinv(self.XX)\n\n        var_i = sample_var + (y - np.matmul(X, param))**2\n\n        self._param = param\n\n        if (self.cov_type is None) or (self.cov_type == 'nonrobust'):\n            if y.ndim < 2:\n                self._var = correction * np.average(var_i, weights=freq_weight) * sigma_inv\n            else:\n                vars = correction * np.average(var_i, weights=freq_weight, axis=0)\n                self._var = [v * sigma_inv for v in vars]\n        elif (self.cov_type == 'HC0'):\n            if y.ndim < 2:\n                weighted_sigma = np.matmul(WX.T, WX * var_i.reshape(-1, 1))\n                self._var = np.matmul(sigma_inv, np.matmul(weighted_sigma, sigma_inv))\n            else:\n                self._var = []\n                for j in range(self._n_out):\n                    weighted_sigma = np.matmul(WX.T, WX * var_i[:, [j]])\n                    self._var.append(np.matmul(sigma_inv, np.matmul(weighted_sigma, sigma_inv)))\n        elif (self.cov_type == 'HC1'):\n            if y.ndim < 2:\n                weighted_sigma = np.matmul(WX.T, WX * var_i.reshape(-1, 1))\n                self._var = correction * np.matmul(sigma_inv, np.matmul(weighted_sigma, sigma_inv))\n            else:\n                self._var = []\n                for j in range(self._n_out):\n                    weighted_sigma = np.matmul(WX.T, WX * var_i[:, [j]])\n                    self._var.append(correction * np.matmul(sigma_inv, np.matmul(weighted_sigma, sigma_inv)))\n        else:\n            raise AttributeError(\"Unsupported cov_type. Must be one of nonrobust, HC0, HC1.\")\n\n        self._param_var = np.array(self._var)\n\n        return self\n\n    @staticmethod\n    def aggregate(models: List[StatsModelsLinearRegression]):\n        \"\"\"\n        Aggregate multiple models into one.\n\n        Parameters\n        ----------\n        models : list of StatsModelsLinearRegression\n            The models to aggregate\n\n        Returns\n        -------\n        agg_model : StatsModelsLinearRegression\n            The aggregated model\n        \"\"\"\n        if len(models) == 0:\n            raise ValueError(\"Must aggregate at least one model!\")\n        cov_types = set([model.cov_type for model in models])\n        fit_intercepts = set([model.fit_intercept for model in models])\n        enable_federation = set([model.enable_federation for model in models])\n        _n_outs = set([model._n_out for model in models])\n        assert enable_federation == {True}, \"All models must have enable_federation=True!\"\n        assert len(cov_types) == 1, \"All models must have the same cov_type!\"\n        assert len(fit_intercepts) == 1, \"All models must have the same fit_intercept!\"\n        assert len(_n_outs) == 1, \"All models must have the same number of outcomes!\"\n        agg_model = StatsModelsLinearRegression(cov_type=models[0].cov_type, fit_intercept=models[0].fit_intercept)\n\n        agg_model._n_out = models[0]._n_out\n\n        XX = np.sum([model.XX for model in models], axis=0)\n        Xy = np.sum([model.Xy for model in models], axis=0)\n        XXyy = np.sum([model.XXyy for model in models], axis=0)\n        XXXy = np.sum([model.XXXy for model in models], axis=0)\n        XXXX = np.sum([model.XXXX for model in models], axis=0)\n\n        sample_var = np.sum([model.sample_var for model in models], axis=0)\n        n_obs = np.sum([model._n_obs for model in models], axis=0)\n\n        sigma_inv = np.linalg.pinv(XX)\n        param = sigma_inv @ Xy\n        df = np.shape(param)[0]\n\n        agg_model._param = param if agg_model._n_out > 0 else param.squeeze(1)\n\n        if n_obs <= df:\n            warnings.warn(\"Number of observations <= than number of parameters. Using biased variance calculation!\")\n            correction = 1\n        elif agg_model.cov_type == 'HC0':\n            correction = 1\n        else:  # both HC1 and nonrobust use the same correction factor\n            correction = (n_obs / (n_obs - df))\n\n        if agg_model.cov_type in ['HC0', 'HC1']:\n            weighted_sigma = XXyy - 2 * np.einsum('yvwx,vy->ywx', XXXy, param) + \\\n                np.einsum('uvwx,uy,vy->ywx', XXXX, param, param) + sample_var\n            if agg_model._n_out == 0:\n                agg_model._var = correction * np.matmul(sigma_inv, np.matmul(weighted_sigma.squeeze(0), sigma_inv))\n            else:\n                agg_model._var = [correction * np.matmul(sigma_inv, np.matmul(ws, sigma_inv)) for ws in weighted_sigma]\n\n        else:\n            assert agg_model.cov_type == 'nonrobust' or agg_model.cov_type is None\n            sigma = XXyy - 2 * np.einsum('yx,xy->y', XXXy, param) + np.einsum('wx,wy,xy->y', XXXX, param, param)\n            var_i = (sample_var + sigma) / n_obs\n            if agg_model._n_out == 0:\n                agg_model._var = correction * var_i * sigma_inv\n            else:\n                agg_model._var = [correction * var * sigma_inv for var in var_i]\n\n        agg_model._param_var = np.array(agg_model._var)\n\n        (agg_model.XX, agg_model.Xy, agg_model.XXyy, agg_model.XXXy, agg_model.XXXX,\n         agg_model.sample_var, agg_model._n_obs) = XX, Xy, XXyy, XXXy, XXXX, sample_var, n_obs\n\n        return agg_model\n\n\nclass StatsModelsRLM(_StatsModelsWrapper):\n    \"\"\"\n    Class which mimics robust linear regression from the statsmodels package.\n\n    Parameters\n    ----------\n    t : float, default 1.345\n        The tuning constant for Huber’s t function\n    maxiter : int, default 50\n        The maximum number of iterations to try\n    tol : float, default 1e-08\n        The convergence tolerance of the estimate\n    fit_intercept : bool, default True\n        Whether to fit an intercept in this model\n    cov_type : {'H1', 'H2', or 'H3'}, default 'H1'\n        Indicates how the covariance matrix is estimated. See statsmodels.robust.robust_linear_model.RLMResults\n        for more information.\n    \"\"\"\n\n    def __init__(self, t=1.345,\n                 maxiter=50,\n                 tol=1e-08,\n                 fit_intercept=True,\n                 cov_type='H1'):\n        self.t = t\n        self.maxiter = maxiter\n        self.tol = tol\n        self.cov_type = cov_type\n        self.fit_intercept = fit_intercept\n        return\n\n    def _check_input(self, X, y):\n        \"\"\"Check dimensions and other assertions.\"\"\"\n        if X is None:\n            X = np.empty((y.shape[0], 0))\n\n        assert (X.shape[0] == y.shape[0]), \"Input lengths not compatible!\"\n\n        return X, y\n\n    def fit(self, X, y):\n        \"\"\"\n        Fits the model.\n\n        Parameters\n        ----------\n        X : (N, d) nd array_like\n            co-variates\n        y : (N,) nd array_like or (N, p) array_like\n            output variable\n\n        Returns\n        -------\n        self : StatsModelsRLM\n        \"\"\"\n        X, y = self._check_input(X, y)\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n\n        self._n_out = 0 if len(y.shape) == 1 else (y.shape[1],)\n\n        def model_gen(y):\n            return RLM(endog=y,\n                       exog=X,\n                       M=statsmodels.robust.norms.HuberT(t=self.t)).fit(cov=self.cov_type,\n                                                                        maxiter=self.maxiter,\n                                                                        tol=self.tol)\n        if y.ndim < 2:\n            self.model = model_gen(y)\n            self._param = self.model.params\n            self._param_var = self.model.cov_params()\n        else:\n            self.models = [model_gen(y[:, i]) for i in range(y.shape[1])]\n            self._param = np.array([mdl.params for mdl in self.models]).T\n            self._param_var = np.array([mdl.cov_params() for mdl in self.models])\n\n        return self\n\n\nclass StatsModels2SLS(_StatsModelsWrapper):\n    \"\"\"\n    Class that solves the moment equation E[(y-theta*T)*Z]=0.\n\n    Parameters\n    ----------\n    cov_type : {'HC0', 'HC1', 'nonrobust', or None}, default 'HC0'\n        Indicates how the covariance matrix is estimated.\n    \"\"\"\n\n    def __init__(self, cov_type=\"HC0\"):\n        self.fit_intercept = False\n        self.cov_type = cov_type\n        return\n\n    def _check_input(self, Z, T, y, sample_weight):\n        \"\"\"Check dimensions and other assertions.\"\"\"\n        # set default values for None\n        if sample_weight is None:\n            sample_weight = np.ones(y.shape[0])\n\n        # check array shape\n        assert (T.shape[0] == Z.shape[0] == y.shape[0] == sample_weight.shape[0]), \"Input lengths not compatible!\"\n\n        # check dimension of instruments is more than dimension of treatments\n        if Z.shape[1] < T.shape[1]:\n            raise AssertionError(\"The number of treatments couldn't be larger than the number of instruments!\" +\n                                 \" If you are using a treatment featurizer, make sure the number of featurized\" +\n                                 \" treatments is less than or equal to the number of instruments. You can either\" +\n                                 \" featurize the instrument yourself, or consider using projection = True\" +\n                                 \" along with a flexible model_t_xwz.\")\n\n        # weight X and y\n        weighted_Z = Z * np.sqrt(sample_weight).reshape(-1, 1)\n        weighted_T = T * np.sqrt(sample_weight).reshape(-1, 1)\n        if y.ndim < 2:\n            weighted_y = y * np.sqrt(sample_weight)\n        else:\n            weighted_y = y * np.sqrt(sample_weight).reshape(-1, 1)\n        return weighted_Z, weighted_T, weighted_y\n\n    def fit(self, Z, T, y, sample_weight=None, freq_weight=None, sample_var=None):\n        \"\"\"\n        Fits the model.\n\n        Parameters\n        ----------\n        Z :  {(N, p)} nd array_like\n            instrumental variables\n        T :  {(N, p)} nd array_like\n            treatment variables\n        y :  {(N,), (N, p)} nd array_like\n            output variables\n        sample_weight : (N,) array_like or None\n            Individual weights for each sample. If None, it assumes equal weight.\n        freq_weight: (N, ) array_like of int or None\n            Weight for the observation. Observation i is treated as the mean\n            outcome of freq_weight[i] independent observations.\n            When ``sample_var`` is not None, this should be provided.\n        sample_var : {(N,), (N, p)} nd array_like or None\n            Variance of the outcome(s) of the original freq_weight[i] observations that were used to\n            compute the mean outcome represented by observation i.\n\n\n        Returns\n        -------\n        self : StatsModels2SLS\n        \"\"\"\n        assert freq_weight is None, \"freq_weight is not supported yet for this class!\"\n        assert sample_var is None, \"sample_var is not supported yet for this class!\"\n\n        Z, T, y = self._check_input(Z, T, y, sample_weight)\n\n        self._n_out = 0 if y.ndim < 2 else y.shape[1]\n\n        # learn point estimate\n        # solve first stage linear regression E[T|Z]\n        zT_z = np.dot(Z.T, Z)\n        zT_t = np.dot(Z.T, T)\n        # \"that\" means T̂\n        self._thatparams = np.linalg.solve(zT_z, zT_t)\n        that = np.dot(Z, self._thatparams)\n        # solve second stage linear regression E[Y|that]\n        # (T̂.T*T̂)^{-1}\n        thatT_that = np.dot(that.T, that)\n        thatT_y = np.dot(that.T, y)\n        param = np.linalg.solve(thatT_that, thatT_y)\n        self._param = param\n\n        n_obs = y.shape[0]\n        df = len(param) if self._n_out == 0 else param.shape[0]\n\n        if n_obs <= df:\n            warnings.warn(\"Number of observations <= than number of parameters. Using biased variance calculation!\")\n            correction = 1\n        else:\n            correction = (n_obs / (n_obs - df))\n\n        # learn cov(theta)\n        # (T̂.T*T̂)^{-1}\n        thatT_that_inv = np.linalg.inv(thatT_that)\n        # sigma^2\n        var_i = (y - np.dot(T, param))**2\n\n        # reference: http://www.hec.unil.ch/documents/seminars/deep/361.pdf\n        if (self.cov_type is None) or (self.cov_type == 'nonrobust'):\n            if y.ndim < 2:\n                self._var = correction * np.average(var_i) * thatT_that_inv\n            else:\n                sigma2 = correction * np.average(var_i, axis=0)\n                self._var = [s * thatT_that_inv for s in sigma2]\n        elif (self.cov_type == 'HC0'):\n            if y.ndim < 2:\n                weighted_sigma = np.matmul(that.T, that * var_i.reshape(-1, 1))\n                self._var = np.matmul(thatT_that_inv, np.matmul(weighted_sigma, thatT_that_inv))\n            else:\n                self._var = []\n                for j in range(self._n_out):\n                    weighted_sigma = np.matmul(that.T, that * var_i[:, [j]])\n                    self._var.append(np.matmul(thatT_that_inv, np.matmul(weighted_sigma, thatT_that_inv)))\n        elif (self.cov_type == 'HC1'):\n            if y.ndim < 2:\n                weighted_sigma = np.matmul(that.T, that * var_i.reshape(-1, 1))\n                self._var = correction * np.matmul(thatT_that_inv, np.matmul(weighted_sigma, thatT_that_inv))\n            else:\n                self._var = []\n                for j in range(self._n_out):\n                    weighted_sigma = np.matmul(that.T, that * var_i[:, [j]])\n                    self._var.append(correction * np.matmul(thatT_that_inv,\n                                                            np.matmul(weighted_sigma, thatT_that_inv)))\n        else:\n            raise AttributeError(\"Unsupported cov_type. Must be one of nonrobust, HC0, HC1.\")\n\n        self._param_var = np.array(self._var)\n        return self\n"
  },
  {
    "path": "econml/sklearn_extensions/model_selection.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\"\"\"Collection of scikit-learn extensions for model selection techniques.\"\"\"\n\nfrom inspect import signature\nimport inspect\nimport numbers\nfrom typing import List, Optional\nimport warnings\nimport abc\n\nimport numpy as np\nimport scipy.sparse as sp\nimport sklearn\nfrom joblib import Parallel, delayed\nfrom sklearn.base import BaseEstimator, clone, is_classifier\nfrom sklearn.ensemble import (GradientBoostingClassifier, GradientBoostingRegressor,\n                              RandomForestClassifier, RandomForestRegressor)\nfrom sklearn.linear_model import (ElasticNet, ElasticNetCV, Lasso, LassoCV, MultiTaskElasticNet, MultiTaskElasticNetCV,\n                                  MultiTaskLasso, MultiTaskLassoCV, Ridge, RidgeCV, RidgeClassifier, RidgeClassifierCV,\n                                  LogisticRegression, LogisticRegressionCV)\nfrom sklearn.model_selection import (GridSearchCV, GroupKFold, KFold,\n                                     RandomizedSearchCV, StratifiedKFold,\n                                     check_cv)\n# TODO: conisder working around relying on sklearn implementation details\nfrom sklearn.model_selection._validation import (_check_is_permutation,\n                                                 _fit_and_predict)\nfrom sklearn.neural_network import MLPClassifier, MLPRegressor\nfrom sklearn.pipeline import Pipeline, make_pipeline\nfrom sklearn.preprocessing import LabelEncoder, PolynomialFeatures\nfrom sklearn.utils import check_random_state, indexable\nfrom sklearn.utils.validation import _num_samples\n\nfrom .linear_model import WeightedLassoCVWrapper, WeightedLassoWrapper\n\n\ndef _split_weighted_sample(self, X, y, sample_weight, is_stratified=False):\n    random_state = self.random_state if self.shuffle else None\n    if is_stratified:\n        kfold_model = StratifiedKFold(n_splits=self.n_splits, shuffle=self.shuffle,\n                                      random_state=random_state)\n    else:\n        kfold_model = KFold(n_splits=self.n_splits, shuffle=self.shuffle,\n                            random_state=random_state)\n\n    if sample_weight is None:\n        return kfold_model.split(X, y)\n    else:\n        random_state = self.random_state\n        kfold_model.shuffle = True\n        kfold_model.random_state = random_state\n\n    weights_sum = np.sum(sample_weight)\n    max_deviations = []\n    all_splits = []\n    for _ in range(self.n_trials + 1):\n        splits = [test for (train, test) in list(kfold_model.split(X, y))]\n        weight_fracs = np.array([np.sum(sample_weight[split]) / weights_sum for split in splits])\n        if np.all(weight_fracs > .95 / self.n_splits):\n            # Found a good split, return.\n            return self._get_folds_from_splits(splits, X.shape[0])\n        # Record all splits in case the stratification by weight yeilds a worse partition\n        all_splits.append(splits)\n        max_deviation = np.max(np.abs(weight_fracs - 1 / self.n_splits))\n        max_deviations.append(max_deviation)\n        # Reseed random generator and try again\n        if isinstance(kfold_model.random_state, numbers.Integral):\n            kfold_model.random_state = kfold_model.random_state + 1\n        elif kfold_model.random_state is not None:\n            kfold_model.random_state = np.random.RandomState(kfold_model.random_state.randint(np.iinfo(np.int32).max))\n\n    # If KFold fails after n_trials, we try the next best thing: stratifying by weight groups\n    warnings.warn(\"The KFold algorithm failed to find a weight-balanced partition after \" +\n                  \"{n_trials} trials. Falling back on a weight stratification algorithm.\".format(\n                      n_trials=self.n_trials), UserWarning)\n    if is_stratified:\n        stratified_weight_splits = [[]] * self.n_splits\n        for y_unique in np.unique(y.flatten()):\n            class_inds = np.argwhere(y == y_unique).flatten()\n            class_splits = self._get_splits_from_weight_stratification(sample_weight[class_inds])\n            stratified_weight_splits = [split + list(class_inds[class_split]) for split, class_split in zip(\n                stratified_weight_splits, class_splits)]\n    else:\n        stratified_weight_splits = self._get_splits_from_weight_stratification(sample_weight)\n    weight_fracs = np.array([np.sum(sample_weight[split]) / weights_sum for split in stratified_weight_splits])\n\n    if np.all(weight_fracs > .95 / self.n_splits):\n        # Found a good split, return.\n        return self._get_folds_from_splits(stratified_weight_splits, X.shape[0])\n    else:\n        # Did not find a good split\n        # Record the devaiation for the weight-stratified split to compare with KFold splits\n        all_splits.append(stratified_weight_splits)\n        max_deviation = np.max(np.abs(weight_fracs - 1 / self.n_splits))\n        max_deviations.append(max_deviation)\n    # Return most weight-balanced partition\n    min_deviation_index = np.argmin(max_deviations)\n    return self._get_folds_from_splits(all_splits[min_deviation_index], X.shape[0])\n\n\nclass WeightedKFold:\n    \"\"\"K-Folds cross-validator for weighted data.\n\n    Provides train/test indices to split data in train/test sets.\n    Split dataset into k folds of roughly equal size and equal total weight.\n\n    The default is to try sklearn.model_selection.KFold a number of trials to find\n    a weight-balanced k-way split. If it cannot find such a split, it will fall back\n    onto a more rigorous weight stratification algorithm.\n\n    Parameters\n    ----------\n    n_splits : int, default 3\n        Number of folds. Must be at least 2.\n\n    n_trials : int, default 10\n        Number of times to try sklearn.model_selection.KFold before falling back to another\n        weight stratification algorithm.\n\n    shuffle : bool, optional\n        Whether to shuffle the data before splitting into batches.\n\n    random_state : int, RandomState instance, or None, default None\n            If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`. Used when ``shuffle`` == True.\n    \"\"\"\n\n    def __init__(self, n_splits=3, n_trials=10, shuffle=False, random_state=None):\n        self.n_splits = n_splits\n        self.shuffle = shuffle\n        self.n_trials = n_trials\n        self.random_state = random_state\n\n    def split(self, X, y, sample_weight=None):\n        \"\"\"Generate indices to split data into training and test set.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            Training data, where n_samples is the number of samples\n            and n_features is the number of features.\n\n        y : array_like, shape (n_samples,)\n            The target variable for supervised learning problems.\n\n        sample_weight : array_like, shape (n_samples,)\n            Weights associated with the training data.\n        \"\"\"\n        return _split_weighted_sample(self, X, y, sample_weight, is_stratified=False)\n\n    def get_n_splits(self, X, y, groups=None):\n        \"\"\"Return the number of splitting iterations in the cross-validator.\n\n        Parameters\n        ----------\n        X : object\n            Always ignored, exists for compatibility.\n\n        y : object\n            Always ignored, exists for compatibility.\n\n        groups : object\n            Always ignored, exists for compatibility.\n\n        Returns\n        -------\n        n_splits : int\n            Returns the number of splitting iterations in the cross-validator.\n        \"\"\"\n        return self.n_splits\n\n    def _get_folds_from_splits(self, splits, sample_size):\n        folds = []\n        sample_indices = np.arange(sample_size)\n        for it in range(self.n_splits):\n            folds.append([np.setdiff1d(sample_indices, splits[it], assume_unique=True), splits[it]])\n        return folds\n\n    def _get_splits_from_weight_stratification(self, sample_weight):\n        # Weight stratification algorithm\n        # Sort weights for weight strata search\n        random_state = check_random_state(self.random_state)\n        sorted_inds = np.argsort(sample_weight)\n        sorted_weights = sample_weight[sorted_inds]\n        max_split_size = sorted_weights.shape[0] // self.n_splits\n        max_divisible_length = max_split_size * self.n_splits\n        sorted_inds_subset = np.reshape(sorted_inds[:max_divisible_length], (max_split_size, self.n_splits))\n        shuffled_sorted_inds_subset = np.apply_along_axis(random_state.permutation, axis=1, arr=sorted_inds_subset)\n        splits = [list(shuffled_sorted_inds_subset[:, i]) for i in range(self.n_splits)]\n        if max_divisible_length != sorted_weights.shape[0]:\n            # There are some leftover indices that have yet to be assigned\n            subsample = sorted_inds[max_divisible_length:]\n            if self.shuffle:\n                random_state.shuffle(subsample)\n            new_splits = np.array_split(subsample, self.n_splits)\n            random_state.shuffle(new_splits)\n            # Append stratum splits to overall splits\n            splits = [split + list(new_split) for split, new_split in zip(splits, new_splits)]\n        return splits\n\n\nclass WeightedStratifiedKFold(WeightedKFold):\n    \"\"\"Stratified K-Folds cross-validator for weighted data.\n\n    Provides train/test indices to split data in train/test sets.\n    Split dataset into k folds of roughly equal size and equal total weight.\n\n    The default is to try sklearn.model_selection.StratifiedKFold a number of trials to find\n    a weight-balanced k-way split. If it cannot find such a split, it will fall back\n    onto a more rigorous weight stratification algorithm.\n\n    Parameters\n    ----------\n    n_splits : int, default 3\n        Number of folds. Must be at least 2.\n\n    n_trials : int, default 10\n        Number of times to try sklearn.model_selection.StratifiedKFold before falling back to another\n        weight stratification algorithm.\n\n    shuffle : bool, optional\n        Whether to shuffle the data before splitting into batches.\n\n    random_state : int, RandomState instance, or None, default None\n            If int, random_state is the seed used by the random number generator;\n        If :class:`~numpy.random.mtrand.RandomState` instance, random_state is the random number generator;\n        If None, the random number generator is the :class:`~numpy.random.mtrand.RandomState` instance used\n        by :mod:`np.random<numpy.random>`. Used when ``shuffle`` == True.\n    \"\"\"\n\n    def split(self, X, y, sample_weight=None):\n        \"\"\"Generate indices to split data into training and test set.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            Training data, where n_samples is the number of samples\n            and n_features is the number of features.\n\n        y : array_like, shape (n_samples,)\n            The target variable for supervised learning problems.\n\n        sample_weight : array_like, shape (n_samples,)\n            Weights associated with the training data.\n        \"\"\"\n        return _split_weighted_sample(self, X, y, sample_weight, is_stratified=True)\n\n    def get_n_splits(self, X, y, groups=None):\n        \"\"\"Return the number of splitting iterations in the cross-validator.\n\n        Parameters\n        ----------\n        X : object\n            Always ignored, exists for compatibility.\n\n        y : object\n            Always ignored, exists for compatibility.\n\n        groups : object\n            Always ignored, exists for compatibility.\n\n        Returns\n        -------\n        n_splits : int\n            Returns the number of splitting iterations in the cross-validator.\n        \"\"\"\n        return self.n_splits\n\n\nclass ModelSelector(metaclass=abc.ABCMeta):\n    \"\"\"\n    Class that enables a two-stage fitting process.\n\n    First a model is selected by calling `train` with `is_selecting=True`, and then the selected model is fit\n    (presumably on a different data set) by calling train with `is_selecting=False`.\n    \"\"\"\n\n    @abc.abstractmethod\n    def train(self, is_selecting: bool, folds: Optional[List], *args, **kwargs):\n        \"\"\"Select a model or fit a model, depending on the value of `is_selecting`.\n\n        If `is_selecting` is `False`, then `folds` should not be provided because they are only during selection.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abc.abstractmethod\n    def predict(self, *args, **kwargs):\n        \"\"\"\n        Predict using the selected model.\n\n        This method should not be called until after `train` has been used both to select a model and to fit it.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n    @abc.abstractmethod\n    def score(self, *args, **kwargs):\n        \"\"\"\n        Get the score of the selected model on the given data.\n\n        This method should not be called until after `train` has been used\n        both to select a model and to fit it.\n        \"\"\"\n        raise NotImplementedError(\"Abstract method\")\n\n\nclass SingleModelSelector(ModelSelector):\n    \"\"\"\n    A model selection class that selects a single best model.\n\n    This encompasses random search, grid search, ensembling, etc.\n    \"\"\"\n\n    @property\n    @abc.abstractmethod\n    def best_model(self):\n        raise NotImplementedError(\"Abstract method\")\n\n    @property\n    @abc.abstractmethod\n    def best_score(self):\n        raise NotImplementedError(\"Abstract method\")\n\n    def predict(self, *args, **kwargs):\n        return self.best_model.predict(*args, **kwargs)\n\n    # only expose predict_proba if best_model has predict_proba\n    # used because logic elsewhere uses hasattr predict proba to check if model is a classifier\n    def __getattr__(self, name):\n        if name == 'predict_proba':\n            return getattr(self.best_model, name)\n        else:\n            self.__getattribute__(name)\n\n    def score(self, *args, **kwargs):\n        if hasattr(self.best_model, 'score'):\n            return self.best_model.score(*args, **kwargs)\n        else:\n            return None\n\n\ndef _fit_with_groups(model, X, y, *, sub_model=None, groups, **kwargs):\n    \"\"\"\n    Fit a model while correctly handling grouping if necessary.\n\n    This enables us to perform an inner-loop cross-validation of a model\n    which handles grouping correctly, which is not easy using typical sklearn models.\n\n    For example, GridSearchCV and RandomSearchCV both support passing `groups` to fit,\n    but other CV-related estimators (e.g. LassoCV) do not, which means that GroupKFold\n    cannot be used as the cv instance, because the `groups` argument will never be passed through\n    to GroupKFold's `split` method.\n\n    The hacky workaround here is to explicitly set the `cv` attribute to the set of\n    rows that GroupKFold would have generated rather than using GroupKFold as the cv instance.\n    \"\"\"\n    if groups is not None:\n        if sub_model is None:\n            sub_model = model\n        if hasattr(sub_model, 'cv'):\n            old_cv = sub_model.cv\n            # logic copied from check_cv\n            cv = 5 if old_cv is None else old_cv\n            if isinstance(cv, numbers.Integral):\n                cv = GroupKFold(cv)\n            # otherwise we will assume the user already set the cv attribute to something\n            # compatible with splitting with a `groups` argument\n\n            splits = list(cv.split(X, y, groups=groups))\n            try:\n                sub_model.cv = splits\n                return model.fit(X, y, **kwargs)  # drop groups from arg list\n            finally:\n                sub_model.cv = old_cv\n\n    # drop groups from arg list, which were already used at the outer level and may not be supported by the model\n    return model.fit(X, y, **kwargs)\n\n\nclass FixedModelSelector(SingleModelSelector):\n    \"\"\"Model selection class that always selects the given sklearn-compatible model.\"\"\"\n\n    def __init__(self, model, score_during_selection):\n        self.model = clone(model, safe=False)\n        self.score_during_selection = score_during_selection\n\n    def train(self, is_selecting, folds: Optional[List], X, y, groups=None, **kwargs):\n        if is_selecting:\n            if self.score_during_selection:\n                # the score needs to be compared to another model's\n                # so we don't need to fit the model itself on all of the data, just get the out-of-sample score\n                assert hasattr(self.model, 'score'), (f\"Can't select between a fixed {type(self.model)} model \"\n                                                      \"and others because it doesn't have a score method\")\n                scores = []\n                for train, test in folds:\n                    # use _fit_with_groups instead of just fit to handle nested grouping\n                    _fit_with_groups(self.model, X[train], y[train],\n                                     groups=None if groups is None else groups[train],\n                                     **{key: val[train] for key, val in kwargs.items()})\n                    scores.append(self.model.score(X[test], y[test]))\n                self._score = np.mean(scores)\n        else:\n            # we need to train the model on the data\n            _fit_with_groups(self.model, X, y, groups=groups, **kwargs)\n\n        return self\n\n    @property\n    def best_model(self):\n        return self.model\n\n    @property\n    def best_score(self):\n        if hasattr(self, '_score'):\n            return self._score\n        else:\n            raise ValueError(\"No score was computed during selection\")\n\n\ndef _copy_to(m1, m2, attrs, insert_underscore=False):\n    for attr in attrs:\n        setattr(m2, attr, getattr(m1, attr + \"_\" if insert_underscore else attr))\n\n\ndef _convert_linear_model(model, new_cls):\n    new_model = new_cls()\n    # copy common parameters\n    _copy_to(model, new_model, [\"fit_intercept\"])\n    # copy common fitted variables\n    _copy_to(model, new_model, [\"coef_\", \"intercept_\", \"n_features_in_\"])\n    return new_model\n\n\ndef _to_logisticRegression(model: LogisticRegressionCV):\n    lr = _convert_linear_model(model, LogisticRegression)\n    _copy_to(model, lr, [\"penalty\", \"dual\", \"intercept_scaling\",\n                         \"class_weight\",\n                         \"solver\", \"multi_class\",\n                         \"verbose\", \"n_jobs\",\n                         \"tol\", \"max_iter\", \"random_state\", \"n_iter_\"])\n    _copy_to(model, lr, [\"classes_\"])\n\n    _copy_to(model, lr, [\"C\", \"l1_ratio\"], True)  # these are arrays in LogisticRegressionCV, need to convert them next\n\n    # make sure all classes agree on best c/l1 combo\n    assert np.isclose(lr.C, lr.C.flatten()[0]).all()\n    assert np.equal(lr.l1_ratio, None).all() or np.isclose(lr.l1_ratio, lr.l1_ratio.flatten()[0]).all()\n    lr.C = lr.C[0]\n    lr.l1_ratio = lr.l1_ratio[0]\n    avg_scores = np.average([v for k, v in model.scores_.items()], axis=1)  # average over folds\n    best_scores = np.max(avg_scores, axis=tuple(range(1, avg_scores.ndim)))  # average score of best c/l1 combo\n    assert np.isclose(best_scores, best_scores.flatten()[0]).all()  # make sure all folds agree on best c/l1 combo\n    return lr, best_scores[0]\n\n\ndef _convert_linear_regression(model, new_cls, extra_attrs=[\"positive\"]):\n    new_model = _convert_linear_model(model, new_cls)\n    _copy_to(model, new_model, [\"alpha\"], True)\n    return new_model\n\n\ndef _to_elasticNet(model: ElasticNetCV, args, kwargs, is_lasso=False, cls=None, extra_attrs=[]):\n    # We need an R^2 score to compare to other models; ElasticNetCV doesn't provide it,\n    # but we can calculate it ourselves from the MSE plus the variance of the target y\n    y = signature(model.fit).bind(*args, **kwargs).arguments[\"y\"]\n    cls = cls or (Lasso if is_lasso else ElasticNet)\n    new_model = _convert_linear_regression(model, cls, extra_attrs + ['selection', 'warm_start', 'dual_gap_',\n                                                                      'tol', 'max_iter', 'random_state', 'n_iter_',\n                                                                      'copy_X'])\n    if not is_lasso:\n        # l1 ratio doesn't apply to Lasso, only ElasticNet\n        _copy_to(model, new_model, [\"l1_ratio\"], True)\n    # max R^2 corresponds to min MSE\n    min_mse = np.min(np.mean(model.mse_path_, axis=-1))  # last dimension in mse_path is folds, so average over that\n    r2 = 1 - min_mse / np.var(y)  # R^2 = 1 - MSE / Var(y)\n    return new_model, r2\n\n\ndef _to_ridge(model, cls=Ridge, extra_attrs=[\"positive\"]):\n    ridge = _convert_linear_regression(model, cls, extra_attrs + [\"_normalize\", \"solver\"])\n    best_score = model.best_score_\n    return ridge, best_score\n\n\nclass SklearnCVSelector(SingleModelSelector):\n    \"\"\"Wraps one of sklearn's CV classes in the ModelSelector interface.\"\"\"\n\n    def __init__(self, searcher):\n        self.searcher = clone(searcher)\n\n    @staticmethod\n    def convertible_types():\n        return {GridSearchCV, RandomizedSearchCV} | SklearnCVSelector._model_mapping().keys()\n\n    @staticmethod\n    def can_wrap(model):\n        if isinstance(model, Pipeline):\n            return SklearnCVSelector.can_wrap(model.steps[-1][1])\n        return any(isinstance(model, model_type) for model_type in SklearnCVSelector.convertible_types())\n\n    @staticmethod\n    def _model_mapping():\n        return {LogisticRegressionCV: lambda model, _args, _kwargs: _to_logisticRegression(model),\n                ElasticNetCV: lambda model, args, kwargs: _to_elasticNet(model, args, kwargs),\n                LassoCV: lambda model, args, kwargs: _to_elasticNet(model, args, kwargs, True, None, [\"positive\"]),\n                RidgeCV: lambda model, _args, _kwargs: _to_ridge(model),\n                RidgeClassifierCV: lambda model, _args, _kwargs: _to_ridge(model, RidgeClassifier,\n                                                                           [\"positive\", \"class_weight\",\n                                                                            \"_label_binarizer\"]),\n                MultiTaskElasticNetCV: lambda model, args, kwargs: _to_elasticNet(model, args, kwargs,\n                                                                                  False, MultiTaskElasticNet,\n                                                                                  extra_attrs=[]),\n                MultiTaskLassoCV: lambda model, args, kwargs: _to_elasticNet(model, args, kwargs,\n                                                                             True, MultiTaskLasso, extra_attrs=[]),\n                WeightedLassoCVWrapper: lambda model, args, kwargs: _to_elasticNet(model, args, kwargs,\n                                                                                   True, WeightedLassoWrapper,\n                                                                                   extra_attrs=[]),\n                }\n\n    @staticmethod\n    def _convert_model(model, args, kwargs):\n        if isinstance(model, Pipeline):\n            name, inner_model = model.steps[-1]\n            best_model, score = SklearnCVSelector._convert_model(inner_model, args, kwargs)\n            return Pipeline(steps=[*model.steps[:-1], (name, best_model)]), score\n\n        if isinstance(model, (GridSearchCV, RandomizedSearchCV)):\n            return model.best_estimator_, model.best_score_\n\n        for known_type in SklearnCVSelector._model_mapping():\n            if isinstance(model, known_type):\n                converter = SklearnCVSelector._model_mapping()[known_type]\n                return converter(model, args, kwargs)\n\n    def train(self, is_selecting: bool, folds: Optional[List], *args, groups=None, **kwargs):\n        if is_selecting:\n            sub_model = self.searcher\n            if isinstance(self.searcher, Pipeline):\n                sub_model = self.searcher.steps[-1][1]\n\n            init_params = inspect.signature(sub_model.__init__).parameters\n            if 'cv' in init_params:\n                default_cv = init_params['cv'].default\n            else:\n                # constructor takes cv as a positional or kwarg, just pull it out of a new instance\n                default_cv = type(sub_model)().cv\n\n            if sub_model.cv != default_cv:\n                warnings.warn(f\"Model {sub_model} has a non-default cv attribute, which will be ignored\")\n            sub_model.cv = folds\n\n            self.searcher.fit(*args, **kwargs)\n\n            self._best_model, self._best_score = self._convert_model(self.searcher, args, kwargs)\n\n        else:\n            self.best_model.fit(*args, **kwargs)\n        return self\n\n    @property\n    def best_model(self):\n        return self._best_model\n\n    @property\n    def best_score(self):\n        return self._best_score\n\n\nclass ListSelector(SingleModelSelector):\n    \"\"\"\n    Model selection class that selects the best model from a list of model selectors.\n\n    Parameters\n    ----------\n    models : list of ModelSelector\n        The list of model selectors to choose from\n    unwrap : bool, default True\n        Whether to return the best model's best model, rather than just the outer best model selector\n    \"\"\"\n\n    def __init__(self, models, unwrap=True):\n        self.models = [clone(model, safe=False) for model in models]\n        self.unwrap = unwrap\n\n    def train(self, is_selecting, folds: Optional[List], *args, **kwargs):\n        assert len(self.models) > 0, \"ListSelector must have at least one model\"\n        if is_selecting:\n            scores = []\n            for model in self.models:\n                model.train(is_selecting, folds, *args, **kwargs)\n                scores.append(model.best_score)\n            self._all_scores = scores\n            self._best_score = np.max(scores)\n            self._best_model = self.models[np.argmax(scores)]\n\n        else:\n            self._best_model.train(is_selecting, folds, *args, **kwargs)\n\n    @property\n    def best_model(self):\n        \"\"\"\n        Get the best model.\n\n        Note that if we were selecting over SingleModelSelectors and `unwrap` is `False`,\n        we will return the SingleModelSelector instance, not its best model.\n        \"\"\"\n        return self._best_model.best_model if self.unwrap else self._best_model\n\n    @property\n    def best_score(self):\n        return self._best_score\n\n\ndef get_selector(input, is_discrete, *, random_state=None, cv=None, wrapper=GridSearchCV, needs_scoring=False):\n    named_models = {\n        'linear': (LogisticRegressionCV(random_state=random_state, cv=cv) if is_discrete\n                   else WeightedLassoCVWrapper(random_state=random_state, cv=cv)),\n        'poly': ([make_pipeline(PolynomialFeatures(d),\n                                (LogisticRegressionCV(random_state=random_state, cv=cv) if is_discrete\n                                 else WeightedLassoCVWrapper(random_state=random_state, cv=cv)))\n                  for d in range(1, 4)]),\n        'forest': (GridSearchCV(RandomForestClassifier(random_state=random_state) if is_discrete\n                                else RandomForestRegressor(random_state=random_state),\n                                param_grid={}, cv=cv)),\n        'gbf': (GridSearchCV(GradientBoostingClassifier(random_state=random_state) if is_discrete\n                             else GradientBoostingRegressor(random_state=random_state),\n                             param_grid={}, cv=cv)),\n        'nnet': (GridSearchCV(MLPClassifier(random_state=random_state) if is_discrete\n                              else MLPRegressor(random_state=random_state),\n                              param_grid={}, cv=cv)),\n        'automl': [\"poly\", \"forest\", \"gbf\", \"nnet\"],\n    }\n    if isinstance(input, ModelSelector):  # we've already got a model selector, don't need to do anything\n        return input\n    elif isinstance(input, list):  # we've got a list; call get_selector on each element, then wrap in a ListSelector\n        models = [get_selector(model, is_discrete,\n                               random_state=random_state, cv=cv, wrapper=wrapper,\n                               needs_scoring=True)  # we need to score to compare outputs to each other\n                  for model in input]\n        return ListSelector(models)\n    elif isinstance(input, str):  # we've got a string; look it up\n        if input in named_models:\n            return get_selector(named_models[input], is_discrete,\n                                random_state=random_state, cv=cv, wrapper=wrapper,\n                                needs_scoring=needs_scoring)\n        else:\n            raise ValueError(f\"Unknown model type: {input}, must be one of {named_models.keys()}\")\n    elif SklearnCVSelector.can_wrap(input):\n        return SklearnCVSelector(input)\n    else:  # assume this is an sklearn-compatible model\n        return FixedModelSelector(input, needs_scoring)\n\n\nclass GridSearchCVList(BaseEstimator):\n    \"\"\"\n    An extension of GridSearchCV that allows for passing a list of estimators.\n\n    Each estimator can have its own\n    parameter grid and we will return the best among all estimators in the list and hyperparameters in its\n    corresponding grid. We are only changing the estimator parameter to estimator_list and the param_grid\n    parameter to be a list of parameter grids. The rest of the parameters are the same as in\n    :meth:`~sklearn.model_selection.GridSearchCV`. See the documentation of that class\n    for explanation of the remaining parameters.\n\n    Parameters\n    ----------\n    estimator_list : list of estimator object.\n        Each estimator in th list is assumed to implement the scikit-learn estimator interface.\n        Either estimator needs to provide a ``score`` function,\n        or ``scoring`` must be passed.\n\n    param_grid : list of dict or list of list of dictionaries\n        For each estimator, the dictionary with parameters names (`str`) as keys and lists of\n        parameter settings to try as values, or a list of such\n        dictionaries, in which case the grids spanned by each dictionary\n        in the list are explored. This enables searching over any sequence\n        of parameter settings.\n    \"\"\"\n\n    def __init__(self, estimator_list, param_grid_list, scoring=None,\n                 n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs',\n                 error_score=np.nan, return_train_score=False):\n        self.estimator_list = estimator_list\n        self.param_grid_list = param_grid_list\n        self.scoring = scoring\n        self.n_jobs = n_jobs\n        self.refit = refit\n        self.cv = cv\n        self.verbose = verbose\n        self.pre_dispatch = pre_dispatch\n        self.error_score = error_score\n        self.return_train_score = return_train_score\n        return\n\n    def fit(self, X, y=None, **fit_params):\n        self._gcv_list = [GridSearchCV(estimator, param_grid, scoring=self.scoring,\n                                       n_jobs=self.n_jobs, refit=self.refit, cv=self.cv, verbose=self.verbose,\n                                       pre_dispatch=self.pre_dispatch, error_score=self.error_score,\n                                       return_train_score=self.return_train_score)\n                          for estimator, param_grid in zip(self.estimator_list, self.param_grid_list)]\n        self.best_ind_ = np.argmax([gcv.fit(X, y, **fit_params).best_score_ for gcv in self._gcv_list])\n        self.best_estimator_ = self._gcv_list[self.best_ind_].best_estimator_\n        self.best_score_ = self._gcv_list[self.best_ind_].best_score_\n        self.best_params_ = self._gcv_list[self.best_ind_].best_params_\n        return self\n\n    def predict(self, X):\n        return self.best_estimator_.predict(X)\n\n    def predict_proba(self, X):\n        return self.best_estimator_.predict_proba(X)\n\n\ndef _cross_val_predict(estimator, X, y=None, *, groups=None, cv=None,\n                       n_jobs=None, verbose=0, fit_params=None,\n                       pre_dispatch='2*n_jobs', method='predict', safe=True):\n    \"\"\"\n    Cross validate and predict.\n\n    A fork of :meth:`~sklearn.model_selection.cross_val_predict` allowing non-safe cloning of the models for each fold.\n\n    Parameters\n    ----------\n    estimator : estimator object implementing 'fit' and 'predict'\n        The object to use to fit the data.\n\n    X : array_like of shape (n_samples, n_features)\n        The data to fit. Can be, for example a list, or an array at least 2d.\n\n    y : array_like of shape (n_samples,) or (n_samples, n_outputs), \\\n            default=None\n        The target variable to try to predict in the case of\n        supervised learning.\n\n    groups : array_like of shape (n_samples,), optional\n        Group labels for the samples used while splitting the dataset into\n        train/test set. Only used in conjunction with a \"Group\" :term:`cv`\n        instance (e.g., :class:`GroupKFold`).\n\n    cv : int, cross-validation generator or an iterable, default None\n        Determines the cross-validation splitting strategy.\n        Possible inputs for cv are:\n\n        - None, to use the default 5-fold cross validation,\n        - int, to specify the number of folds in a `(Stratified)KFold`,\n        - CV splitter,\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For int/None inputs, if the estimator is a classifier and ``y`` is\n        either binary or multiclass, :class:`StratifiedKFold` is used. In all\n        other cases, :class:`KFold` is used.\n\n        Refer :ref:`User Guide <cross_validation>` for the various\n        cross-validation strategies that can be used here.\n\n        .. versionchanged:: 0.22\n            ``cv`` default value if None changed from 3-fold to 5-fold.\n\n    n_jobs : int, default None\n        The number of CPUs to use to do the computation.\n        ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.\n        ``-1`` means using all processors. See :term:`Glossary <n_jobs>`\n        for more details.\n\n    verbose : int, default 0\n        The verbosity level.\n\n    fit_params : dict, defualt=None\n        Parameters to pass to the fit method of the estimator.\n\n    pre_dispatch : int or str, default '2*n_jobs'\n        Controls the number of jobs that get dispatched during parallel\n        execution. Reducing this number can be useful to avoid an\n        explosion of memory consumption when more jobs get dispatched\n        than CPUs can process. This parameter can be:\n\n            - None, in which case all the jobs are immediately\n              created and spawned. Use this for lightweight and\n              fast-running jobs, to avoid delays due to on-demand\n              spawning of the jobs\n\n            - An int, giving the exact number of total jobs that are\n              spawned\n\n            - A str, giving an expression as a function of n_jobs,\n              as in '2*n_jobs'\n\n    method : str, default 'predict'\n        Invokes the passed method name of the passed estimator. For\n        method='predict_proba', the columns correspond to the classes\n        in sorted order.\n\n    safe : bool, default True\n        Whether to clone with safe option.\n\n    Returns\n    -------\n    predictions : ndarray\n        This is the result of calling ``method``\n    \"\"\"\n    X, y, groups = indexable(X, y, groups)\n\n    cv = check_cv(cv, y, classifier=is_classifier(estimator))\n    splits = list(cv.split(X, y, groups))\n\n    test_indices = np.concatenate([test for _, test in splits])\n    if not _check_is_permutation(test_indices, _num_samples(X)):\n        raise ValueError('cross_val_predict only works for partitions')\n\n    # If classification methods produce multiple columns of output,\n    # we need to manually encode classes to ensure consistent column ordering.\n    encode = method in ['decision_function', 'predict_proba',\n                        'predict_log_proba'] and y is not None\n    if encode:\n        y = np.asarray(y)\n        if y.ndim == 1:\n            le = LabelEncoder()\n            y = le.fit_transform(y)\n        elif y.ndim == 2:\n            y_enc = np.zeros_like(y, dtype=int)\n            for i_label in range(y.shape[1]):\n                y_enc[:, i_label] = LabelEncoder().fit_transform(y[:, i_label])\n            y = y_enc\n\n    # We clone the estimator to make sure that all the folds are\n    # independent, and that it is pickle-able.\n    parallel = Parallel(n_jobs=n_jobs, verbose=verbose,\n                        pre_dispatch=pre_dispatch)\n\n    from packaging.version import parse\n    # verbose was removed from sklearn's non-public _fit_and_predict method in 1.4\n    if parse(sklearn.__version__) < parse(\"1.4\"):\n        predictions = parallel(delayed(_fit_and_predict)(\n            clone(estimator, safe=safe), X, y, train, test, verbose, fit_params, method)\n            for train, test in splits)\n    else:\n        predictions = parallel(delayed(_fit_and_predict)(\n            clone(estimator, safe=safe), X, y, train, test, fit_params, method)\n            for train, test in splits)\n\n    inv_test_indices = np.empty(len(test_indices), dtype=int)\n    inv_test_indices[test_indices] = np.arange(len(test_indices))\n\n    if sp.issparse(predictions[0]):\n        predictions = sp.vstack(predictions, format=predictions[0].format)\n    elif encode and isinstance(predictions[0], list):\n        # `predictions` is a list of method outputs from each fold.\n        # If each of those is also a list, then treat this as a\n        # multioutput-multiclass task. We need to separately concatenate\n        # the method outputs for each label into an `n_labels` long list.\n        n_labels = y.shape[1]\n        concat_pred = []\n        for i_label in range(n_labels):\n            label_preds = np.concatenate([p[i_label] for p in predictions])\n            concat_pred.append(label_preds)\n        predictions = concat_pred\n    else:\n        predictions = np.concatenate(predictions)\n\n    if isinstance(predictions, list):\n        return [p[inv_test_indices] for p in predictions]\n    else:\n        return predictions[inv_test_indices]\n"
  },
  {
    "path": "econml/solutions/causal_analysis/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom ._causal_analysis import CausalAnalysis\n\n__all__ = [\"CausalAnalysis\"]\n"
  },
  {
    "path": "econml/solutions/causal_analysis/_causal_analysis.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Module for assessing causal feature importance.\"\"\"\n\nimport warnings\nfrom collections import OrderedDict, namedtuple\n\nimport joblib\nimport lightgbm as lgb\nimport numpy as np\nfrom numpy import iterable\nimport pandas as pd\nfrom sklearn.base import BaseEstimator, TransformerMixin\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\nfrom sklearn.linear_model import Lasso, LassoCV, LogisticRegression, LogisticRegressionCV\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.tree import _tree\nfrom sklearn.utils.validation import column_or_1d\nfrom ...cate_interpreter import SingleTreeCateInterpreter, SingleTreePolicyInterpreter\nfrom ...dml import LinearDML, CausalForestDML\nfrom ...inference import NormalInferenceResults\nfrom ...sklearn_extensions.linear_model import WeightedLasso\nfrom ...sklearn_extensions.model_selection import GridSearchCVList\nfrom ...utilities import _RegressionWrapper, get_feature_names_or_default, one_hot_encoder\n\n# TODO: this utility is documented but internal; reimplement?\nfrom sklearn.utils import _safe_indexing\n# TODO: this utility is even less public...\nfrom packaging.version import parse\nimport sklearn\nif parse(sklearn.__version__) < parse(\"1.5\"):\n    from sklearn.utils import _get_column_indices\nelse:\n    from sklearn.utils._indexing import _get_column_indices\n\n\nclass _CausalInsightsConstants:\n    RawFeatureNameKey = 'raw_name'\n    EngineeredNameKey = 'name'\n    CategoricalColumnKey = 'cat'\n    TypeKey = 'type'\n    PointEstimateKey = 'point'\n    StandardErrorKey = 'stderr'\n    ZStatKey = 'zstat'\n    ConfidenceIntervalLowerKey = 'ci_lower'\n    ConfidenceIntervalUpperKey = 'ci_upper'\n    PValueKey = 'p_value'\n    Version = 'version'\n    CausalComputationTypeKey = 'causal_computation_type'\n    ConfoundingIntervalKey = 'confounding_interval'\n    ViewKey = 'view'\n    InitArgsKey = 'init_args'\n    RowData = 'row_data'  # NOTE: RowData is mutually exclusive with the other data columns\n\n    ALL = [RawFeatureNameKey,\n           EngineeredNameKey,\n           CategoricalColumnKey,\n           TypeKey,\n           PointEstimateKey,\n           StandardErrorKey,\n           ZStatKey,\n           ConfidenceIntervalLowerKey,\n           ConfidenceIntervalUpperKey,\n           PValueKey,\n           Version,\n           CausalComputationTypeKey,\n           ConfoundingIntervalKey,\n           ViewKey,\n           InitArgsKey,\n           RowData]\n\n\ndef _get_default_shared_insights_output():\n    \"\"\"\n    Get dictionary elements shared among all analyses.\n\n    In case of breaking changes to this dictionary output, the major version of this\n    dictionary should be updated. In case of a change to this dictionary, the minor\n    version should be updated.\n    \"\"\"\n    return {\n        _CausalInsightsConstants.RawFeatureNameKey: [],\n        _CausalInsightsConstants.EngineeredNameKey: [],\n        _CausalInsightsConstants.CategoricalColumnKey: [],\n        _CausalInsightsConstants.TypeKey: [],\n        _CausalInsightsConstants.Version: '1.0',\n        _CausalInsightsConstants.CausalComputationTypeKey: \"simple\",\n        _CausalInsightsConstants.ConfoundingIntervalKey: None,\n        _CausalInsightsConstants.InitArgsKey: {}\n    }\n\n\ndef _get_default_specific_insights(view):\n    # keys should be mutually exclusive with shared keys, so that the dictionaries can be cleanly merged\n    return {\n        _CausalInsightsConstants.PointEstimateKey: [],\n        _CausalInsightsConstants.StandardErrorKey: [],\n        _CausalInsightsConstants.ZStatKey: [],\n        _CausalInsightsConstants.ConfidenceIntervalLowerKey: [],\n        _CausalInsightsConstants.ConfidenceIntervalUpperKey: [],\n        _CausalInsightsConstants.PValueKey: [],\n        _CausalInsightsConstants.ViewKey: view\n    }\n\n\ndef _get_metadata_causal_insights_keys():\n    return [_CausalInsightsConstants.Version,\n            _CausalInsightsConstants.CausalComputationTypeKey,\n            _CausalInsightsConstants.ConfoundingIntervalKey,\n            _CausalInsightsConstants.ViewKey]\n\n\ndef _get_column_causal_insights_keys():\n    return [_CausalInsightsConstants.RawFeatureNameKey,\n            _CausalInsightsConstants.EngineeredNameKey,\n            _CausalInsightsConstants.CategoricalColumnKey,\n            _CausalInsightsConstants.TypeKey]\n\n\ndef _get_data_causal_insights_keys():\n    return [_CausalInsightsConstants.PointEstimateKey,\n            _CausalInsightsConstants.StandardErrorKey,\n            _CausalInsightsConstants.ZStatKey,\n            _CausalInsightsConstants.ConfidenceIntervalLowerKey,\n            _CausalInsightsConstants.ConfidenceIntervalUpperKey,\n            _CausalInsightsConstants.PValueKey]\n\n\ndef _first_stage_reg(X, y, *, automl=True, random_state=None, verbose=0):\n    if automl:\n        model = GridSearchCVList([LassoCV(random_state=random_state),\n                                  RandomForestRegressor(\n                                      n_estimators=100, random_state=random_state, min_samples_leaf=10),\n                                  lgb.LGBMRegressor(num_leaves=32, random_state=random_state)],\n                                 param_grid_list=[{},\n                                                  {'min_weight_fraction_leaf':\n                                                      [.001, .01, .1]},\n                                                  {'learning_rate': [0.1, 0.3], 'max_depth': [3, 5]}],\n                                 cv=3,\n                                 scoring='r2',\n                                 verbose=verbose)\n        best_est = model.fit(X, y).best_estimator_\n        if isinstance(best_est, LassoCV):\n            return Lasso(alpha=best_est.alpha_, random_state=random_state)\n        else:\n            return best_est\n    else:\n        model = LassoCV(cv=5, random_state=random_state).fit(X, y)\n        return Lasso(alpha=model.alpha_, random_state=random_state)\n\n\ndef _first_stage_clf(X, y, *, make_regressor=False, automl=True, min_count=None, random_state=None, verbose=0):\n    # use same Cs as would be used by default by LogisticRegressionCV\n    cs = np.logspace(-4, 4, 10)\n    if min_count is None:\n        min_count = _CAT_LIMIT  # we have at least this many instances\n    if automl:\n        # NOTE: we don't use LogisticRegressionCV inside the grid search because of the nested stratification\n        #       which could affect how many times each distinct Y value needs to be present in the data\n\n        model = GridSearchCVList([LogisticRegression(max_iter=1000,\n                                                     random_state=random_state),\n                                  RandomForestClassifier(n_estimators=100, min_samples_leaf=10,\n                                                         random_state=random_state),\n                                  lgb.LGBMClassifier(num_leaves=32, random_state=random_state)],\n                                 param_grid_list=[{'C': cs},\n                                                  {'max_depth': [3, None],\n                                                   'min_weight_fraction_leaf': [.001, .01, .1]},\n                                                  {'learning_rate': [0.1, 0.3], 'max_depth': [3, 5]}],\n                                 cv=min(3, min_count),\n                                 scoring='neg_log_loss',\n                                 verbose=verbose)\n        est = model.fit(X, y).best_estimator_\n    else:\n        model = LogisticRegressionCV(\n            cv=min(5, min_count), max_iter=1000, Cs=cs, random_state=random_state).fit(X, y)\n        est = LogisticRegression(C=model.C_[0], max_iter=1000, random_state=random_state)\n    if make_regressor:\n        return _RegressionWrapper(est)\n    else:\n        return est\n\n\ndef _final_stage(*, random_state=None, verbose=0):\n    return GridSearchCVList([WeightedLasso(random_state=random_state),\n                             RandomForestRegressor(n_estimators=100, random_state=random_state, verbose=verbose)],\n                            param_grid_list=[{'alpha': [.001, .01, .1, 1, 10]},\n                                             {'max_depth': [3, 5],\n                                              'min_samples_leaf': [10, 50]}],\n                            cv=3,\n                            scoring='neg_mean_squared_error',\n                            verbose=verbose)\n\n\n# simplification of sklearn's ColumnTransformer that encodes categoricals and passes through selected other columns\n# but also supports get_feature_names with expected signature\nclass _ColumnTransformer(TransformerMixin):\n    def __init__(self, categorical, passthrough):\n        self.categorical = categorical\n        self.passthrough = passthrough\n\n    def fit(self, X):\n        cat_cols = _safe_indexing(X, self.categorical, axis=1)\n        if cat_cols.shape[1] > 0:\n            self.has_cats = True\n            # NOTE: set handle_unknown to 'ignore' so that we don't throw at runtime if given a novel value\n            self.one_hot_encoder = one_hot_encoder(handle_unknown='ignore').fit(cat_cols)\n        else:\n            self.has_cats = False\n        self.d_x = X.shape[1]\n        return self\n\n    def transform(self, X):\n        rest = _safe_indexing(X, self.passthrough, axis=1)\n        if self.has_cats:\n            cats = self.one_hot_encoder.transform(_safe_indexing(X, self.categorical, axis=1))\n            # NOTE: we rely on the passthrough columns coming first in the concatenated X;W\n            #       when we pipeline scaling with our first stage models later, so the order here is important\n            return np.hstack((rest, cats))\n        else:\n            return rest\n\n    # TODO: remove once older sklearn support is no longer needed\n    def get_feature_names(self, names=None):\n        return self.get_feature_names_out(names)\n\n    def get_feature_names_out(self, names=None):\n        if names is None:\n            names = [f\"x{i}\" for i in range(self.d_x)]\n        rest = _safe_indexing(names, self.passthrough, axis=0)\n        if self.has_cats:\n            cats = get_feature_names_or_default(self.one_hot_encoder, _safe_indexing(names, self.categorical, axis=0))\n            return np.concatenate((rest, cats))\n        else:\n            return rest\n\n\n# Wrapper to make sure that we get a deep copy of the contents instead of clone returning an untrained copy\nclass _Wrapper:\n    def __init__(self, item):\n        self.item = item\n\n\nclass _FrozenTransformer(TransformerMixin, BaseEstimator):\n    def __init__(self, wrapper):\n        self.wrapper = wrapper\n\n    def fit(self, X, y):\n        return self\n\n    def transform(self, X):\n        return self.wrapper.item.transform(X)\n\n\ndef _freeze(transformer):\n    return _FrozenTransformer(_Wrapper(transformer))\n\n\n# Convert python objects to (possibly nested) types that can easily be represented as literals\ndef _sanitize(obj):\n    if obj is None or isinstance(obj, (bool, int, str, float)):\n        return obj\n    elif isinstance(obj, dict):\n        return {_sanitize(key): _sanitize(obj[key]) for key in obj}\n    else:\n        try:\n            return [_sanitize(item) for item in obj]\n        except Exception:\n            raise ValueError(f\"Could not sanitize input {obj}\")\n\n\n# Convert SingleTreeInterpreter to a python dictionary\ndef _tree_interpreter_to_dict(interp, features, leaf_data=lambda t, n: {}):\n    tree = interp.tree_model_.tree_\n    node_dict = interp.node_dict_\n\n    def recurse(node_id):\n        if tree.children_left[node_id] == _tree.TREE_LEAF:\n            return {'leaf': True, 'n_samples': tree.n_node_samples[node_id], **leaf_data(tree, node_id, node_dict)}\n        else:\n            return {'leaf': False, 'feature': features[tree.feature[node_id]], 'threshold': tree.threshold[node_id],\n                    'left': recurse(tree.children_left[node_id]),\n                    'right': recurse(tree.children_right[node_id])}\n\n    return recurse(0)\n\n\nclass _PolicyOutput:\n    \"\"\"\n    A type encapsulating various information related to a learned policy.\n\n    Attributes\n    ----------\n    tree_dictionary:dict\n        The policy tree represented as a dictionary,\n    policy_value:float\n        The average value of applying the recommended policy (over using the control),\n    always_treat:dict of str to float\n        A dictionary mapping each non-control treatment to the value of always treating with it (over control),\n    control_name:str\n        The name of the control treatment\n    \"\"\"\n\n    def __init__(self, tree_dictionary, policy_value, always_treat, control_name):\n        self.tree_dictionary = tree_dictionary\n        self.policy_value = policy_value\n        self.always_treat = always_treat\n        self.control_name = control_name\n\n\n# named tuple type for storing results inside CausalAnalysis class;\n# must be lifted to module level to enable pickling\n_result = namedtuple(\"_result\", field_names=[\n    \"feature_index\", \"feature_name\", \"feature_baseline\", \"feature_levels\", \"hinds\",\n    \"X_transformer\", \"W_transformer\", \"estimator\", \"global_inference\", \"treatment_value\"])\n\n\ndef _process_feature(name, feat_ind, verbose, categorical_inds, categories, heterogeneity_inds, min_counts, y, X,\n                     nuisance_models, h_model, random_state, model_y, cv, mc_iters):\n    try:\n        if verbose > 0:\n            print(f\"CausalAnalysis: Feature {name}\")\n\n        discrete_treatment = feat_ind in categorical_inds\n        if discrete_treatment:\n            cats = categories[categorical_inds.index(feat_ind)]\n        else:\n            cats = 'auto'  # just leave the setting at the default otherwise\n\n        # the transformation logic here is somewhat tricky; we always need to encode the categorical columns,\n        # whether they end up in X or in W.  However, for the continuous columns, we want to scale them all\n        # when running the first stage models, but don't want to scale the X columns when running the final model,\n        # since then our coefficients will have odd units and our trees will also have decisions using those units.\n        #\n        # we achieve this by pipelining the X scaling with the Y and T models (with fixed scaling, not refitting)\n\n        hinds = heterogeneity_inds[feat_ind]\n        WX_transformer = ColumnTransformer([('encode', one_hot_encoder(drop='first'),\n                                             [ind for ind in categorical_inds\n                                              if ind != feat_ind]),\n                                            ('drop', 'drop', feat_ind)],\n                                           remainder=StandardScaler())\n        W_transformer = ColumnTransformer([('encode', one_hot_encoder(drop='first'),\n                                            [ind for ind in categorical_inds\n                                             if ind != feat_ind and ind not in hinds]),\n                                           ('drop', 'drop', hinds),\n                                           ('drop_feat', 'drop', feat_ind)],\n                                          remainder=StandardScaler())\n\n        X_cont_inds = [ind for ind in hinds\n                       if ind != feat_ind and ind not in categorical_inds]\n\n        # Use _ColumnTransformer instead of ColumnTransformer so we can get feature names\n        X_transformer = _ColumnTransformer([ind for ind in categorical_inds\n                                            if ind != feat_ind and ind in hinds],\n                                           X_cont_inds)\n\n        # Controls are all other columns of X\n        WX = WX_transformer.fit_transform(X)\n        # can't use X[:, feat_ind] when X is a DataFrame\n        T = _safe_indexing(X, feat_ind, axis=1)\n\n        # TODO: we can't currently handle unseen values of the feature column when getting the effect;\n        #       we might want to modify OrthoLearner (and other discrete treatment classes)\n        #       so that the user can opt-in to allowing unseen treatment values\n        #       (and return NaN or something in that case)\n\n        W = W_transformer.fit_transform(X)\n        X_xf = X_transformer.fit_transform(X)\n\n        # HACK: this is slightly ugly because we rely on the fact that DML passes [X;W] to the first stage models\n        #       and so we can just peel the first columns off of that combined array for rescaling in the pipeline\n        # TODO: consider addding an API to DML that allows for better understanding of how the nuisance inputs are\n        #       built, such as model_y_feature_names, model_t_feature_names, model_y_transformer, etc., so that this\n        #       becomes a valid approach to handling this\n        X_scaler = ColumnTransformer([('scale', StandardScaler(),\n                                       list(range(len(X_cont_inds))))],\n                                     remainder='passthrough').fit(np.hstack([X_xf, W])).named_transformers_['scale']\n\n        X_scaler_fixed = ColumnTransformer([('scale', _freeze(X_scaler),\n                                             list(range(len(X_cont_inds))))],\n                                           remainder='passthrough')\n\n        if W.shape[1] == 0:\n            # array checking routines don't accept 0-width arrays\n            W = None\n\n        if X_xf.shape[1] == 0:\n            X_xf = None\n\n        if verbose > 0:\n            print(\"CausalAnalysis: performing model selection on T model\")\n\n        # perform model selection\n        model_t = (_first_stage_clf(WX, T, automl=nuisance_models == 'automl',\n                                    min_count=min_counts.get(feat_ind, None),\n                                    random_state=random_state, verbose=verbose)\n                   if discrete_treatment else _first_stage_reg(WX, T, automl=nuisance_models == 'automl',\n                                                               random_state=random_state,\n                                                               verbose=verbose))\n\n        pipelined_model_t = Pipeline([('scale', X_scaler_fixed),\n                                      ('model', model_t)])\n\n        pipelined_model_y = Pipeline([('scale', X_scaler_fixed),\n                                      ('model', model_y)])\n\n        if X_xf is None and h_model == 'forest':\n            warnings.warn(f\"Using a linear model instead of a forest model for feature '{name}' \"\n                          \"because forests don't support models with no heterogeneity indices\")\n            h_model = 'linear'\n\n        if h_model == 'linear':\n            est = LinearDML(model_y=pipelined_model_y,\n                            model_t=pipelined_model_t,\n                            discrete_treatment=discrete_treatment,\n                            fit_cate_intercept=True,\n                            categories=cats,\n                            random_state=random_state,\n                            cv=cv,\n                            mc_iters=mc_iters)\n        elif h_model == 'forest':\n            est = CausalForestDML(model_y=pipelined_model_y,\n                                  model_t=pipelined_model_t,\n                                  discrete_treatment=discrete_treatment,\n                                  n_estimators=4000,\n                                  min_var_leaf_on_val=True,\n                                  categories=cats,\n                                  random_state=random_state,\n                                  verbose=verbose,\n                                  cv=cv,\n                                  mc_iters=mc_iters)\n\n            if verbose > 0:\n                print(\"CausalAnalysis: tuning forest\")\n            est.tune(y, T, X=X_xf, W=W)\n        if verbose > 0:\n            print(\"CausalAnalysis: training causal model\")\n        est.fit(y, T, X=X_xf, W=W, cache_values=True)\n\n        # Prefer ate__inference to const_marginal_ate_inference(X) because it is doubly-robust and not conservative\n        if h_model == 'forest' and discrete_treatment:\n            global_inference = est.ate__inference()\n        else:\n            # convert to NormalInferenceResults for consistency\n            inf = est.const_marginal_ate_inference(X=X_xf)\n            global_inference = NormalInferenceResults(d_t=inf.d_t, d_y=inf.d_y,\n                                                      pred=inf.mean_point,\n                                                      pred_stderr=inf.stderr_mean,\n                                                      mean_pred_stderr=None,\n                                                      inf_type='ate')\n\n        # Set the dictionary values shared between local and global summaries\n        if discrete_treatment:\n            cats = est.transformer.categories_[0]\n            baseline = cats[est.transformer.drop_idx_[0]]\n            cats = cats[np.setdiff1d(np.arange(len(cats)),\n                                     est.transformer.drop_idx_[0])]\n            d_t = len(cats)\n            insights = {\n                _CausalInsightsConstants.TypeKey: ['cat'] * d_t,\n                _CausalInsightsConstants.RawFeatureNameKey: [name] * d_t,\n                _CausalInsightsConstants.CategoricalColumnKey: cats.tolist(),\n                _CausalInsightsConstants.EngineeredNameKey: [\n                    f\"{name} (base={baseline}): {c}\" for c in cats]\n            }\n            treatment_value = 1\n        else:\n            d_t = 1\n            cats = [\"num\"]\n            baseline = None\n            insights = {\n                _CausalInsightsConstants.TypeKey: [\"num\"],\n                _CausalInsightsConstants.RawFeatureNameKey: [name],\n                _CausalInsightsConstants.CategoricalColumnKey: [name],\n                _CausalInsightsConstants.EngineeredNameKey: [name]\n            }\n            # calculate a \"typical\" treatment value, using the mean of the absolute value of non-zero treatments\n            treatment_value = np.mean(np.abs(T[T != 0]))\n\n        result = _result(feature_index=feat_ind,\n                         feature_name=name,\n                         feature_baseline=baseline,\n                         feature_levels=cats,\n                         hinds=hinds,\n                         X_transformer=X_transformer,\n                         W_transformer=W_transformer,\n                         estimator=est,\n                         global_inference=global_inference,\n                         treatment_value=treatment_value)\n\n        return insights, result\n    except Exception as e:\n        warnings.warn(f\"Exception caught when training model for feature {name}: {e}\")\n        return e\n\n\n# Unless we're opting into minimal cross-fitting, this is the minimum number of instances of each category\n# required to fit a discrete DML model\n_CAT_LIMIT = 10\n\n# TODO: Add other nuisance model options, such as {'azure_automl', 'forests', 'boosting'} that will use particular\n#       sub-cases of models or also integrate with azure autoML. (post-MVP)\n# TODO: Add other heterogeneity model options, such as {'automl'} for performing\n#       model selection for the causal effect, or {'sparse_linear'} for using a debiased lasso. (post-MVP)\n# TODO: Enable multi-class classification (post-MVP)\n\n\nclass CausalAnalysis:\n    \"\"\"\n    Note: this class is experimental and the API may evolve over our next few releases.\n\n    Gets causal importance of features.\n\n    Parameters\n    ----------\n    feature_inds: array_like of int, str, or bool\n        The features for which to estimate causal effects, expressed as either column indices,\n        column names, or boolean flags indicating which columns to pick\n    categorical: array_like of int, str, or bool\n        The features which are categorical in nature, expressed as either column indices,\n        column names, or boolean flags indicating which columns to pick\n    heterogeneity_inds: array_like of int, str, or bool, or None or list of array_like elements or None, default None\n        If a 1d array, then whenever estimating a heterogeneous (local) treatment effect\n        model, then only the features in this array will be used for heterogeneity. If a 2d\n        array then its first dimension should be len(feature_inds) and whenever estimating\n        a local causal effect for target feature feature_inds[i], then only features in\n        heterogeneity_inds[i] will be used for heterogeneity. If heterogeneity_inds[i]=None, then all features\n        are used for heterogeneity when estimating local causal effect for feature_inds[i], and likewise if\n        heterogeneity_inds[i]=[] then no features will be used for heterogeneity. If heterogeneity_ind=None\n        then all features are used for heterogeneity for all features, and if heterogeneity_inds=[] then\n        no features will be.\n    feature_names: list of str, optional\n        The names for all of the features in the data.  Not necessary if the input will be a dataframe.\n        If None and the input is a plain numpy array, generated feature names will be ['X1', 'X2', ...].\n    upper_bound_on_cat_expansion: int, default 5\n        The maximum number of categorical values allowed, because they are expanded via one-hot encoding. If a\n        feature has more than this many values, then a causal effect model is not fitted for that target feature\n        and a warning flag is raised. The remainder of the models are fitted.\n    classification: bool, default False\n        Whether this is a classification (as opposed to regression) task\n    nuisance_models: one of {'linear', 'automl'}, default 'linear'\n        The model class to use for nuisance estimation.  Separate nuisance models are trained to predict the\n        outcome and also each individual feature column from all of the other columns in the dataset as a prerequisite\n        step before computing the actual causal effect for that feature column. If 'linear', then\n        :class:`~sklearn.linear_model.LassoCV` (for regression) or :class:`~sklearn.linear_model.LogisticRegressionCV`\n        (for classification) is used for these models. If 'automl', then model selection picks the best-performing\n        among several different model classes for each model being trained using k-fold cross-validation, which\n        requires additional computation.\n    heterogeneity_model: one of {'linear', 'forest'}, default 'linear'\n        The type of model to use for the final heterogeneous treatment effect model. 'linear' means that a\n        the estimated treatment effect for a column will be a linear function of the heterogeneity features for that\n        column, while 'forest' means that a forest model will be trained to compute the effect from those heterogeneity\n        features instead.\n    categories: 'auto' or list of ('auto' or list of values), default 'auto'\n        What categories to use for the categorical columns.  If 'auto', then the categories will be inferred for\n        all categorical columns; otherwise this argument should have as many entries as there are categorical columns,\n        and each entry should be either 'auto' to infer the values for that column or the list of values for the\n        column. If explicit values are provided, the first value is treated as the \"control\" value for that column\n        against which other values are compared.\n    n_jobs: int, default -1\n        Degree of parallelism to use when training models via joblib.Parallel\n    verbose : int, default 0\n        Controls the verbosity when fitting and predicting.\n    cv: int, cross-validation generator or an iterable, default 5\n        Determines the strategy for cross-fitting used when training causal models for each feature.\n        Possible inputs for cv are:\n\n        - integer, to specify the number of folds.\n        - :term:`CV splitter`\n        - An iterable yielding (train, test) splits as arrays of indices.\n\n        For integer inputs, if the treatment is discrete\n        :class:`~sklearn.model_selection.StratifiedKFold` is used, else,\n        :class:`~sklearn.model_selection.KFold` is used\n        (with a random shuffle in either case).\n    mc_iters: int, default 3\n        The number of times to rerun the first stage models to reduce the variance of the causal model nuisances.\n    skip_cat_limit_checks: bool, default False\n        By default, categorical features need to have several instances of each category in order for a model to be\n        fit robustly. Setting this to True will skip these checks (although at least 2 instances will always be\n        required for linear heterogeneity models, and 4 for forest heterogeneity models even in that case).\n    random_state : int, RandomState instance, or None, default None\n        Controls the randomness of the estimator. The features are always\n        randomly permuted at each split. When ``max_features < n_features``, the algorithm will\n        select ``max_features`` at random at each split before finding the best\n        split among them. But the best found split may vary across different\n        runs, even if ``max_features=n_features``. That is the case, if the\n        improvement of the criterion is identical for several splits and one\n        split has to be selected at random. To obtain a deterministic behaviour\n        during fitting, ``random_state`` has to be fixed to an integer.\n\n    Attributes\n    ----------\n    nuisance_models_: str\n        The nuisance models setting used for the most recent call to fit\n    heterogeneity_model: str\n        The heterogeneity model setting used for the most recent call to fit\n    feature_names_: list of str\n        The list of feature names from the data in the most recent call to fit\n    trained_feature_indices_: list of int\n        The list of feature indices where models were trained successfully\n    untrained_feature_indices_: list of tuple of (int, str or Exception)\n        The list of indices that were requested but not able to be trained succesfully,\n        along with either a reason or caught Exception for each\n    \"\"\"\n\n    def __init__(self, feature_inds, categorical, heterogeneity_inds=None, feature_names=None, classification=False,\n                 upper_bound_on_cat_expansion=5, nuisance_models='linear', heterogeneity_model='linear', *,\n                 categories='auto', n_jobs=-1, verbose=0, cv=5, mc_iters=3, skip_cat_limit_checks=False,\n                 random_state=None):\n        self.feature_inds = feature_inds\n        self.categorical = categorical\n        self.heterogeneity_inds = heterogeneity_inds\n        self.feature_names = feature_names\n        self.classification = classification\n        self.upper_bound_on_cat_expansion = upper_bound_on_cat_expansion\n        self.nuisance_models = nuisance_models\n        self.heterogeneity_model = heterogeneity_model\n        self.categories = categories\n        self.n_jobs = n_jobs\n        self.verbose = verbose\n        self.cv = cv\n        self.mc_iters = mc_iters\n        self.skip_cat_limit_checks = skip_cat_limit_checks\n        self.random_state = random_state\n\n    def fit(self, X, y, warm_start=False):\n        \"\"\"\n        Fits global and local causal effect models for each feature in feature_inds on the data.\n\n        Parameters\n        ----------\n        X : array_like\n            Feature data\n        y : array_like of shape (n,) or (n,1)\n            Outcome. If classification=True, then y should take two values. Otherwise an error is raised\n            that only binary classification is implemented for now.\n            TODO. enable multi-class classification for y (post-MVP)\n        warm_start : bool, default False\n            If False, train models for each feature in `feature_inds`.\n            If True, train only models for features in `feature_inds` that had not already been trained by\n            the previous call to `fit`, and for which neither the corresponding heterogeneity_inds, nor the\n            automl flag have changed. If heterogeneity_inds have changed, then the final stage model of these features\n            will be refit. If the automl flag has changed, then whole model is refit, despite the warm start flag.\n        \"\"\"\n        # Validate inputs\n        assert self.nuisance_models in ['automl', 'linear'], (\n            \"The only supported nuisance models are 'linear' and 'automl', \"\n            f\"but was given {self.nuisance_models}\")\n\n        assert self.heterogeneity_model in ['linear', 'forest'], (\n            \"The only supported heterogeneity models are 'linear' and 'forest' but received \"\n            f\"{self.heterogeneity_model}\")\n\n        assert np.ndim(X) == 2, f\"X must be a 2-dimensional array, but here had shape {np.shape(X)}\"\n\n        assert iterable(self.feature_inds), f\"feature_inds should be array_like, but got {self.feature_inds}\"\n        assert iterable(self.categorical), f\"categorical should be array_like, but got {self.categorical}\"\n        assert self.heterogeneity_inds is None or iterable(self.heterogeneity_inds), (\n            f\"heterogeneity_inds should be None or array_like, but got {self.heterogeneity_inds}\")\n        assert self.feature_names is None or iterable(self.feature_names), (\n            f\"feature_names should be None or array_like, but got {self.feature_names}\")\n        assert self.categories == 'auto' or iterable(self.categories), (\n            f\"categories should be 'auto' or array_like, but got {self.categories}\")\n\n        # TODO: check compatibility of X and Y lengths\n\n        if warm_start:\n            if not hasattr(self, \"_results\"):\n                # no previous fit, cancel warm start\n                warm_start = False\n\n            elif self._d_x != X.shape[1]:\n                raise ValueError(\n                    f\"Can't warm start: previous X had {self._d_x} columns, new X has {X.shape[1]} columns\")\n\n        # work with numeric feature indices, so that we can easily compare with categorical ones\n        train_inds = _get_column_indices(X, self.feature_inds)\n\n        if len(train_inds) == 0:\n            raise ValueError(\n                \"No features specified. At least one feature index must be specified so that a model can be trained.\")\n\n        heterogeneity_inds = self.heterogeneity_inds\n        if heterogeneity_inds is None:\n            heterogeneity_inds = [None for ind in train_inds]\n\n        # if heterogeneity_inds is 1D, repeat it\n        if heterogeneity_inds == [] or isinstance(heterogeneity_inds[0], (int, str, bool)):\n            heterogeneity_inds = [heterogeneity_inds for _ in train_inds]\n\n        # heterogeneity inds should be a 2D list of length same as train_inds\n        elif heterogeneity_inds is not None and len(heterogeneity_inds) != len(train_inds):\n            raise ValueError(\"Heterogeneity indexes should have the same number of entries, but here \"\n                             f\" there were {len(heterogeneity_inds)} heterogeneity entries but \"\n                             f\" {len(train_inds)} feature indices.\")\n\n        # replace None elements of heterogeneity_inds and ensure indices are numeric\n        heterogeneity_inds = {ind: list(range(X.shape[1])) if hinds is None else _get_column_indices(X, hinds)\n                              for ind, hinds in zip(train_inds, heterogeneity_inds)}\n\n        if warm_start:\n            train_y_model = False\n            if self.nuisance_models != self.nuisance_models_:\n                warnings.warn(\"warm_start will be ignored since the nuisance models have changed \"\n                              f\"from {self.nuisance_models_} to {self.nuisance_models} since the previous call to fit\")\n                warm_start = False\n                train_y_model = True\n\n            if self.heterogeneity_model != self.heterogeneity_model_:\n                warnings.warn(\"warm_start will be ignored since the heterogeneity model has changed \"\n                              f\"from {self.heterogeneity_model_} to {self.heterogeneity_model} \"\n                              \"since the previous call to fit\")\n                warm_start = False\n\n            # TODO: bail out also if categorical columns, classification, random_state changed?\n        else:\n            train_y_model = True\n\n        # TODO: should we also train a new model_y under any circumstances when warm_start is True?\n        if warm_start:\n            new_inds = [ind for ind in train_inds if (ind not in self._cache or\n                                                      heterogeneity_inds[ind] != self._cache[ind][1].hinds)]\n        else:\n            new_inds = list(train_inds)\n\n            self._cache = {}  # store mapping from feature to insights, results\n\n            # train the Y model\n            if train_y_model:\n                # perform model selection for the Y model using all X, not on a per-column basis\n                allX = ColumnTransformer([('encode',\n                                           one_hot_encoder(drop='first'),\n                                           self.categorical)],\n                                         remainder=StandardScaler()).fit_transform(X)\n\n                if self.verbose > 0:\n                    print(\"CausalAnalysis: performing model selection on overall Y model\")\n\n                if self.classification:\n                    self._model_y = _first_stage_clf(allX, y, automl=self.nuisance_models == 'automl',\n                                                     make_regressor=True,\n                                                     random_state=self.random_state, verbose=self.verbose)\n                else:\n                    self._model_y = _first_stage_reg(allX, y, automl=self.nuisance_models == 'automl',\n                                                     random_state=self.random_state, verbose=self.verbose)\n\n        if self.classification:\n            # now that we've trained the classifier and wrapped it, ensure that y is transformed to\n            # work with the regression wrapper\n\n            # we use column_or_1d to treat pd.Series and pd.DataFrame objects the same way as arrays\n            y = column_or_1d(y).reshape(-1, 1)\n\n            # note that this needs to happen after wrapping to generalize to the multi-class case,\n            # since otherwise we'll have too many columns to be able to train a classifier\n            y = one_hot_encoder(drop='first').fit_transform(y)\n\n        assert y.ndim == 1 or y.shape[1] == 1, (\"Multiclass classification isn't supported\" if self.classification\n                                                else \"Only a single outcome is supported\")\n\n        self._vec_y = y.ndim == 1\n        self._d_x = X.shape[1]\n\n        # start with empty results and default shared insights\n        self._results = []\n        self._shared = _get_default_shared_insights_output()\n        self._shared[_CausalInsightsConstants.InitArgsKey] = {\n            'feature_inds': _sanitize(self.feature_inds),\n            'categorical': _sanitize(self.categorical),\n            'heterogeneity_inds': _sanitize(self.heterogeneity_inds),\n            'feature_names': _sanitize(self.feature_names),\n            'classification': _sanitize(self.classification),\n            'upper_bound_on_cat_expansion': _sanitize(self.upper_bound_on_cat_expansion),\n            'nuisance_models': _sanitize(self.nuisance_models),\n            'heterogeneity_model': _sanitize(self.heterogeneity_model),\n            'categories': _sanitize(self.categories),\n            'n_jobs': _sanitize(self.n_jobs),\n            'verbose': _sanitize(self.verbose),\n            'random_state': _sanitize(self.random_state)\n        }\n\n        # convert categorical indicators to numeric indices\n        categorical_inds = _get_column_indices(X, self.categorical)\n\n        categories = self.categories\n        if categories == 'auto':\n            categories = ['auto' for _ in categorical_inds]\n        else:\n            assert len(categories) == len(categorical_inds), (\n                \"If categories is not 'auto', it must contain one entry per categorical column.  Instead, categories\"\n                f\"has length {len(categories)} while there are {len(categorical_inds)} categorical columns.\")\n\n        # check for indices over the categorical expansion bound\n        invalid_inds = getattr(self, 'untrained_feature_indices_', [])\n\n        # assume we'll be able to train former failures this time; we'll add them back if not\n        invalid_inds = [(ind, reason) for (ind, reason) in invalid_inds if ind not in new_inds]\n\n        self._has_column_names = True\n        if self.feature_names is None:\n            if hasattr(X, \"iloc\"):\n                feature_names = X.columns\n            else:\n                self._has_column_names = False\n                feature_names = [f\"x{i}\" for i in range(X.shape[1])]\n        else:\n            feature_names = self.feature_names\n        self.feature_names_ = feature_names\n\n        min_counts = {}\n        for ind in new_inds:\n            column_text = self._format_col(ind)\n\n            if ind in categorical_inds:\n                cats, counts = np.unique(_safe_indexing(X, ind, axis=1), return_counts=True)\n                min_ind = np.argmin(counts)\n                n_cat = len(cats)\n                if n_cat > self.upper_bound_on_cat_expansion:\n                    warnings.warn(f\"{column_text} has more than {self.upper_bound_on_cat_expansion} \"\n                                  f\"values (found {n_cat}) so no heterogeneity model will be fit for it; \"\n                                  \"increase 'upper_bound_on_cat_expansion' to change this behavior.\")\n                    # can't remove in place while iterating over new_inds, so store in separate list\n                    invalid_inds.append((ind, 'upper_bound_on_cat_expansion'))\n\n                elif counts[min_ind] < _CAT_LIMIT:\n                    if self.skip_cat_limit_checks and (counts[min_ind] >= 5 or\n                                                       (counts[min_ind] >= 2 and\n                                                        self.heterogeneity_model != 'forest')):\n                        # train the model, but warn\n                        warnings.warn(f\"{column_text}'s value {cats[min_ind]} has only {counts[min_ind]} instances in \"\n                                      f\"the training dataset, which is less than the lower limit ({_CAT_LIMIT}). \"\n                                      \"A model will still be fit because 'skip_cat_limit_checks' is True, \"\n                                      \"but this model may not be robust.\")\n                        min_counts[ind] = counts[min_ind]\n                    elif counts[min_ind] < 2 or (counts[min_ind] < 5 and self.heterogeneity_model == 'forest'):\n                        # no model can be trained in this case since we need more folds\n                        warnings.warn(f\"{column_text}'s value {cats[min_ind]} has only {counts[min_ind]} instances in \"\n                                      \"the training dataset, but linear heterogeneity models need at least 2 and \"\n                                      \"forest heterogeneity models need at least 5 instances, so no model will be fit \"\n                                      \"for this column\")\n                        invalid_inds.append((ind, 'cat_limit'))\n                    else:\n                        # don't train a model, but suggest workaround since there are enough instances of least\n                        # populated class\n                        warnings.warn(f\"{column_text}'s value {cats[min_ind]} has only {counts[min_ind]} instances in \"\n                                      f\"the training dataset, which is less than the lower limit ({_CAT_LIMIT}), \"\n                                      \"so no heterogeneity model will be fit for it. This check can be turned off by \"\n                                      \"setting 'skip_cat_limit_checks' to True, but that may result in an inaccurate \"\n                                      \"model for this feature.\")\n                        invalid_inds.append((ind, 'cat_limit'))\n\n        for (ind, _) in invalid_inds:\n            new_inds.remove(ind)\n            # also remove from train_inds so we don't try to access the result later\n            train_inds.remove(ind)\n            if len(train_inds) == 0:\n                raise ValueError(\"No features remain; increase the upper_bound_on_cat_expansion and ensure that there \"\n                                 \"are several instances of each categorical value so that at least \"\n                                 \"one feature model can be trained.\")\n\n        # extract subset of names matching new columns\n        new_feat_names = _safe_indexing(feature_names, new_inds)\n\n        cache_updates = dict(zip(new_inds,\n                                 joblib.Parallel(\n                                     n_jobs=self.n_jobs,\n                                     verbose=self.verbose\n                                 )(joblib.delayed(_process_feature)(\n                                     feat_name, feat_ind,\n                                     self.verbose, categorical_inds, categories, heterogeneity_inds, min_counts, y, X,\n                                     self.nuisance_models, self.heterogeneity_model, self.random_state, self._model_y,\n                                     self.cv, self.mc_iters)\n                                     for feat_name, feat_ind in zip(new_feat_names, new_inds))))\n\n        # track indices where an exception was thrown, since we can't remove from dictionary while iterating\n        inds_to_remove = []\n        for ind, value in cache_updates.items():\n            if isinstance(value, Exception):\n                # don't want to cache this failed result\n                inds_to_remove.append(ind)\n                train_inds.remove(ind)\n                invalid_inds.append((ind, value))\n\n        for ind in inds_to_remove:\n            del cache_updates[ind]\n\n        self._cache.update(cache_updates)\n\n        for ind in train_inds:\n            dict_update, result = self._cache[ind]\n            self._results.append(result)\n            for k in dict_update:\n                self._shared[k] += dict_update[k]\n\n        invalid_inds.sort()\n        self.untrained_feature_indices_ = invalid_inds\n        self.trained_feature_indices_ = train_inds\n\n        self.nuisance_models_ = self.nuisance_models\n        self.heterogeneity_model_ = self.heterogeneity_model\n        return self\n\n    def _format_col(self, ind):\n        if self._has_column_names:\n            return f\"Column {ind} ({self.feature_names_[ind]})\"\n        else:\n            return f\"Column {ind}\"\n\n    # properties to return from effect InferenceResults\n    @staticmethod\n    def _point_props(alpha):\n        return [(_CausalInsightsConstants.PointEstimateKey, 'point_estimate'),\n                (_CausalInsightsConstants.StandardErrorKey, 'stderr'),\n                (_CausalInsightsConstants.ZStatKey, 'zstat'),\n                (_CausalInsightsConstants.PValueKey, 'pvalue'),\n                (_CausalInsightsConstants.ConfidenceIntervalLowerKey, lambda inf: inf.conf_int(alpha=alpha)[0]),\n                (_CausalInsightsConstants.ConfidenceIntervalUpperKey, lambda inf: inf.conf_int(alpha=alpha)[1])]\n\n    # properties to return from PopulationSummaryResults\n    @staticmethod\n    def _summary_props(alpha):\n        return [(_CausalInsightsConstants.PointEstimateKey, 'mean_point'),\n                (_CausalInsightsConstants.StandardErrorKey, 'stderr_mean'),\n                (_CausalInsightsConstants.ZStatKey, 'zstat'),\n                (_CausalInsightsConstants.PValueKey, 'pvalue'),\n                (_CausalInsightsConstants.ConfidenceIntervalLowerKey, lambda inf: inf.conf_int_mean(alpha=alpha)[0]),\n                (_CausalInsightsConstants.ConfidenceIntervalUpperKey, lambda inf: inf.conf_int_mean(alpha=alpha)[1])]\n\n    # Converts strings to property lookups or method calls as a convenience so that the\n    # _point_props and _summary_props above can be applied to an inference object\n    @staticmethod\n    def _make_accessor(attr):\n        if isinstance(attr, str):\n            s = attr\n\n            def attr(o):\n                val = getattr(o, s)\n                if callable(val):\n                    return val()\n                else:\n                    return val\n        return attr\n\n    # Create a summary combining all results into a single output; this is used\n    # by the various causal_effect and causal_effect_dict methods to generate either a dataframe\n    # or a dictionary, respectively, based on the summary function passed into this method\n    def _summarize(self, *, summary, get_inference, props, expand_arr, drop_sample):\n\n        assert hasattr(self, \"_results\"), \"This object has not been fit, so cannot get results\"\n\n        # ensure array has shape (m,y,t)\n        def ensure_proper_dims(arr):\n            if expand_arr:\n                # population summary is missing sample dimension; add it for consistency\n                arr = np.expand_dims(arr, 0)\n            if self._vec_y:\n                # outcome dimension is missing; add it for consistency\n                arr = np.expand_dims(arr, axis=1)\n            assert 2 <= arr.ndim <= 3\n            # add singleton treatment dimension if missing\n            return arr if arr.ndim == 3 else np.expand_dims(arr, axis=2)\n\n        # store set of inference results so we don't need to recompute per-attribute below in summary/coalesce\n        infs = [get_inference(res) for res in self._results]\n\n        # each attr has dimension (m,y) or (m,y,t)\n        def coalesce(attr):\n            \"\"\"Join together the arrays for each feature.\"\"\"\n            attr = self._make_accessor(attr)\n            # concatenate along treatment dimension\n            arr = np.concatenate([ensure_proper_dims(attr(inf))\n                                  for inf in infs], axis=2)\n\n            # for dictionary representation, want to remove unneeded sample dimension\n            # in cohort and global results\n            if drop_sample:\n                arr = np.squeeze(arr, 0)\n\n            return arr\n\n        return summary([(key, coalesce(val)) for key, val in props])\n\n    def _pandas_summary(self, get_inference, *, props, n,\n                        expand_arr=False, keep_all_levels=False):\n        \"\"\"\n        Summarizes results into a dataframe.\n\n        Parameters\n        ----------\n        get_inference : lambda\n            Method to get the relevant inference results from each result object\n        props : list of (string, str or lambda)\n            Set of column names and ways to get the corresponding values from the inference object\n        n : int\n            The number of samples in the dataset\n        expand_arr : bool, default False\n            Whether to add a synthetic sample dimension to the result arrays when performing internal computations\n        keep_all_levels : bool, default False\n            Whether to keep all levels, even when they don't take on more than one value;\n            Note that regardless of this argument the \"sample\" level will only be present if expand_arr is False\n        \"\"\"\n        def make_dataframe(props):\n\n            to_include = OrderedDict([(key, value.reshape(-1))\n                                      for key, value in props])\n\n            # TODO: enrich outcome logic for multi-class classification when that is supported\n            index = pd.MultiIndex.from_tuples([(i, outcome, res.feature_name, f\"{lvl}v{res.feature_baseline}\"\n                                                if res.feature_baseline is not None\n                                                else lvl)\n                                               for i in range(n)\n                                               for outcome in [\"y0\"]\n                                               for res in self._results\n                                               for lvl in res.feature_levels],\n                                              names=[\"sample\", \"outcome\", \"feature\", \"feature_value\"])\n\n            if expand_arr:\n                # There is no actual sample level in this data\n                index = index.droplevel(\"sample\")\n\n            if not keep_all_levels:\n                for lvl in index.levels:\n                    if len(lvl) == 1:\n                        if not isinstance(index, pd.MultiIndex):\n                            # can't drop only level\n                            index = pd.Index([self._results[0].feature_name], name=\"feature\")\n                        else:\n                            index = index.droplevel(lvl.name)\n            return pd.DataFrame(to_include, index=index)\n\n        return self._summarize(summary=make_dataframe,\n                               get_inference=get_inference,\n                               props=props,\n                               expand_arr=expand_arr,\n                               drop_sample=False)  # dropping the sample dimension is handled above instead\n\n    def _dict_summary(self, get_inference, *, n, props, kind, drop_sample=False, expand_arr=False, row_wise=False):\n        \"\"\"\n        Summarizes results into a dictionary.\n\n        Parameters\n        ----------\n        get_inference : lambda\n            Method to get the relevant inference results from each result object\n        n : int\n            The number of samples in the dataset\n        props : list of (string, str or lambda)\n            Set of column names and ways to get the corresponding values from the inference object\n        kind : str\n            The kind of inference results to get (e.g. 'global', 'local', or 'cohort')\n        drop_sample : bool, default False\n            Whether to drop the sample dimension from each array\n        expand_arr : bool, default False\n            Whether to add an initial sample dimension to the result arrays\n        row_wise : bool, default False\n            Whether to return a list of dictionaries (one dictionary per row) instead of\n            a dictionary of lists (one list per column)\n        \"\"\"\n        def make_dict(props):\n            # should be serialization-ready and contain no numpy arrays\n            res = _get_default_specific_insights(kind)\n            shared = self._shared\n\n            if row_wise:\n                row_data = {}\n                # remove entries belonging to row data, since we're including them in the list of nested dictionaries\n                for k in _get_data_causal_insights_keys():\n                    del res[k]\n\n                shared = shared.copy()  # copy so that we can modify without affecting shared state\n                # TODO: Note that there's no column metadata for the sample number - should there be?\n                for k in _get_column_causal_insights_keys():\n                    # need to replicate the column info for each sample, then remove from the shared data\n                    row_data[k] = shared[k] * n\n                    del shared[k]\n\n                # NOTE: the flattened order has the ouptut dimension before the feature dimension\n                #       which may need to be revisited once we support multiclass\n                row_data.update([(key, value.flatten()) for key, value in props])\n\n                # get the length of the list corresponding to the first dictionary key\n                # `list(row_data)` gets the keys as a list, since `row_data.keys()` can't be indexed into\n                n_rows = len(row_data[list(row_data)[0]])\n                res[_CausalInsightsConstants.RowData] = [{key: row_data[key][i]\n                                                          for key in row_data} for i in range(n_rows)]\n            else:\n                res.update([(key, value.tolist()) for key, value in props])\n\n            return {**shared, **res}\n\n        return self._summarize(summary=make_dict,\n                               get_inference=get_inference,\n                               props=props,\n                               expand_arr=expand_arr,\n                               drop_sample=drop_sample)\n\n    def global_causal_effect(self, *, alpha=0.05, keep_all_levels=False):\n        \"\"\"\n        Get the global causal effect for each feature as a pandas DataFrame.\n\n        Parameters\n        ----------\n        alpha : float, default 0.05\n            The confidence level of the confidence interval\n        keep_all_levels : bool, default False\n            Whether to keep all levels of the output dataframe ('outcome', 'feature', and 'feature_level')\n            even if there was only a single value for that level; by default single-valued levels are dropped.\n\n        Returns\n        -------\n        global_effects : DataFrame\n            DataFrame with the following structure:\n\n            :Columns: ['point', 'stderr', 'zstat', 'pvalue', 'ci_lower', 'ci_upper']\n            :Index: ['feature', 'feature_value']\n            :Rows: For each feature that is numerical, we have an entry with index ['{feature_name}', 'num'], where\n                    'num' is literally the string 'num' and feature_name is the input feature name.\n                    For each feature that is categorical, we have an entry with index ['{feature_name}',\n                    '{cat}v{base}'] where cat is the category value and base is the category used as baseline.\n                    If all features are numerical then the feature_value index is dropped in the dataframe, but not\n                    in the serialized dict.\n        \"\"\"\n        # a global inference indicates the effect of that one feature on the outcome\n        return self._pandas_summary(lambda res: res.global_inference, props=self._point_props(alpha),\n                                    n=1, expand_arr=True, keep_all_levels=keep_all_levels)\n\n    def _global_causal_effect_dict(self, *, alpha=0.05, row_wise=False):\n        \"\"\"\n        Get the global causal effect for each feature as dictionary.\n\n        Dictionary entries for predictions, etc. will be nested lists of shape (d_y, sum(d_t))\n\n        Only for serialization purposes to upload to AzureML\n        \"\"\"\n        return self._dict_summary(lambda res: res.global_inference, props=self._point_props(alpha),\n                                  kind='global', n=1, row_wise=row_wise, drop_sample=True, expand_arr=True)\n\n    def _cohort_effect_inference(self, Xtest):\n        assert np.ndim(Xtest) == 2 and np.shape(Xtest)[1] == self._d_x, (\n            \"Shape of Xtest must be compatible with shape of X, \"\n            f\"but got shape {np.shape(Xtest)} instead of (n, {self._d_x})\"\n        )\n\n        def inference_from_result(result):\n            est = result.estimator\n            X = result.X_transformer.transform(Xtest)\n            if X.shape[1] == 0:\n                X = None\n            return est.const_marginal_ate_inference(X=X)\n        return inference_from_result\n\n    def cohort_causal_effect(self, Xtest, *, alpha=0.05, keep_all_levels=False):\n        \"\"\"\n        Get the average causal effects for a particular cohort defined by a population of X's.\n\n        Parameters\n        ----------\n        Xtest : array_like\n            The cohort samples for which to return the average causal effects within cohort\n        alpha : float, default 0.05\n            The confidence level of the confidence interval\n        keep_all_levels : bool, default False\n            Whether to keep all levels of the output dataframe ('outcome', 'feature', and 'feature_level')\n            even if there was only a single value for that level; by default single-valued levels are dropped.\n\n        Returns\n        -------\n        cohort_effects : DataFrame\n            DataFrame with the following structure:\n\n            :Columns: ['point', 'stderr', 'zstat', 'pvalue', 'ci_lower', 'ci_upper']\n            :Index: ['feature', 'feature_value']\n            :Rows: For each feature that is numerical, we have an entry with index ['{feature_name}', 'num'], where\n              'num' is literally the string 'num' and feature_name is the input feature name.\n              For each feature that is categorical, we have an entry with index ['{feature_name}', '{cat}v{base}']\n              where cat is the category value and base is the category used as baseline.\n              If all features are numerical then the feature_value index is dropped in the dataframe, but not\n              in the serialized dict.\n        \"\"\"\n        return self._pandas_summary(self._cohort_effect_inference(Xtest),\n                                    props=self._summary_props(alpha), n=1,\n                                    expand_arr=True, keep_all_levels=keep_all_levels)\n\n    def _cohort_causal_effect_dict(self, Xtest, *, alpha=0.05, row_wise=False):\n        \"\"\"\n        Get the cohort causal effects for each feature as dictionary.\n\n        Dictionary entries for predictions, etc. will be nested lists of shape (d_y, sum(d_t))\n\n        Only for serialization purposes to upload to AzureML\n        \"\"\"\n        return self._dict_summary(self._cohort_effect_inference(Xtest), props=self._summary_props(alpha),\n                                  kind='cohort', n=1, row_wise=row_wise, expand_arr=True, drop_sample=True)\n\n    def _local_effect_inference(self, Xtest):\n        assert np.ndim(Xtest) == 2 and np.shape(Xtest)[1] == self._d_x, (\n            \"Shape of Xtest must be compatible with shape of X, \"\n            f\"but got shape {np.shape(Xtest)} instead of (n, {self._d_x})\"\n        )\n\n        def inference_from_result(result):\n            est = result.estimator\n            X = result.X_transformer.transform(Xtest)\n            if X.shape[1] == 0:\n                X = None\n            eff = est.const_marginal_effect_inference(X=X)\n            if X is None:\n                # need to reshape the output to match the input\n                eff = eff._expand_outputs(Xtest.shape[0])\n            return eff\n        return inference_from_result\n\n    def local_causal_effect(self, Xtest, *, alpha=0.05, keep_all_levels=False):\n        \"\"\"\n        Get the local causal effect for each feature as a pandas DataFrame.\n\n        Parameters\n        ----------\n        Xtest : array_like\n            The samples for which to return the causal effects\n        alpha : float, default 0.05\n            The confidence level of the confidence interval\n        keep_all_levels : bool, default False\n            Whether to keep all levels of the output dataframe ('sample', 'outcome', 'feature', and 'feature_level')\n            even if there was only a single value for that level; by default single-valued levels are dropped.\n\n        Returns\n        -------\n        global_effect : DataFrame\n            DataFrame with the following structure:\n\n            :Columns: ['point', 'stderr', 'zstat', 'pvalue', 'ci_lower', 'ci_upper']\n            :Index: ['sample', 'feature', 'feature_value']\n            :Rows: For each feature that is numeric, we have an entry with index\n                   ['{sampleid}', '{feature_name}', 'num'],\n                   where 'num' is literally the string 'num' and feature_name is the input feature name and sampleid is\n                   the index of the sample in Xtest.\n                   For each feature that is categorical, we have an entry with index\n                   ['{sampleid', '{feature_name}', '{cat}v{base}']\n                   where cat is the category value and base is the category used as baseline.\n                   If all features are numerical then the feature_value index is dropped in the dataframe, but not\n                   in the serialized dict.\n        \"\"\"\n        return self._pandas_summary(self._local_effect_inference(Xtest),\n                                    props=self._point_props(alpha), n=Xtest.shape[0], keep_all_levels=keep_all_levels)\n\n    def _local_causal_effect_dict(self, Xtest, *, alpha=0.05, row_wise=False):\n        \"\"\"\n        Get the local feature importance as dictionary.\n\n        Dictionary entries for predictions, etc. will be nested lists of shape (n_rows, d_y, sum(d_t))\n\n        Only for serialization purposes to upload to AzureML\n        \"\"\"\n        return self._dict_summary(self._local_effect_inference(Xtest), props=self._point_props(alpha),\n                                  kind='local', n=Xtest.shape[0], row_wise=row_wise)\n\n    def _safe_result_index(self, X, feature_index):\n        assert hasattr(self, \"_results\"), \"This instance has not yet been fitted\"\n\n        assert np.ndim(X) == 2 and np.shape(X)[1] == self._d_x, (\n            \"Shape of X must be compatible with shape of the fitted X, \"\n            f\"but got shape {np.shape(X)} instead of (n, {self._d_x})\"\n        )\n\n        (numeric_index,) = _get_column_indices(X, [feature_index])\n\n        bad_inds = dict(self.untrained_feature_indices_)\n        if numeric_index in bad_inds:\n            error = bad_inds[numeric_index]\n            col_text = self._format_col(numeric_index)\n            if error == 'cat_limit':\n                msg = f\"{col_text} had a value with fewer than {_CAT_LIMIT} occurences, so no model was fit for it\"\n            elif error == 'upper_bound_on_cat_expansion':\n                msg = (f\"{col_text} had more distinct values than the setting of 'upper_bound_on_cat_expansion', \"\n                       \"so no model was fit for it\")\n            else:\n                msg = (f\"{col_text} generated the following error during fitting, \"\n                       f\"so no model was fit for it:\\n{str(error)}\")\n            raise ValueError(msg)\n\n        if numeric_index not in self.trained_feature_indices_:\n            raise ValueError(f\"{self._format_col(numeric_index)} was not passed as a feature index \"\n                             \"so no model was fit for it\")\n\n        results = [res for res in self._results\n                   if res.feature_index == numeric_index]\n\n        assert len(results) == 1\n        (result,) = results\n        return result\n\n    def _whatif_inference(self, X, Xnew, feature_index, y):\n        assert not self.classification, \"What-if analysis cannot be applied to classification tasks\"\n\n        assert np.shape(X)[0] == np.shape(Xnew)[0] == np.shape(y)[0], (\n            \"X, Xnew, and y must have the same length, but have shapes \"\n            f\"{np.shape(X)}, {np.shape(Xnew)}, and {np.shape(y)}\"\n        )\n\n        assert np.size(feature_index) == 1, f\"Only one feature index may be changed, but got {np.size(feature_index)}\"\n\n        T0 = _safe_indexing(X, feature_index, axis=1)\n        T1 = Xnew\n        result = self._safe_result_index(X, feature_index)\n        X = result.X_transformer.transform(X)\n        if X.shape[1] == 0:\n            X = None\n        inf = result.estimator.effect_inference(X=X, T0=T0, T1=T1)\n\n        # we want to offset the inference object by the baseline estimate of y\n        inf.translate(y)\n\n        return inf\n\n    def whatif(self, X, Xnew, feature_index, y, *, alpha=0.05):\n        \"\"\"\n        Get counterfactual predictions when feature_index is changed to Xnew from its observational counterpart.\n\n        Note that this only applies to regression use cases; for classification what-if analysis is not supported.\n\n        Parameters\n        ----------\n        X: array_like\n            Features\n        Xnew: array_like\n            New values of a single column of X\n        feature_index: int or str\n            The index of the feature being varied to Xnew, either as a numeric index or\n            the string name if the input is a dataframe\n        y: array_like\n            Observed labels or outcome of a predictive model for baseline y values\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n\n        Returns\n        -------\n        y_new: DataFrame\n            The predicted outputs that would have been observed under the counterfactual features\n        \"\"\"\n        return self._whatif_inference(X, Xnew, feature_index, y).summary_frame(alpha=alpha)\n\n    def _whatif_dict(self, X, Xnew, feature_index, y, *, alpha=0.05, row_wise=False):\n        \"\"\"\n        Get counterfactual predictions when feature_index is changed to Xnew from its observational counterpart.\n\n        Note that this only applies to regression use cases; for classification what-if analysis is not supported.\n\n        Parameters\n        ----------\n        X: array_like\n            Features\n        Xnew: array_like\n            New values of a single column of X\n        feature_index: int or str\n            The index of the feature being varied to Xnew, either as a numeric index or\n            the string name if the input is a dataframe\n        y: array_like\n            Observed labels or outcome of a predictive model for baseline y values\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n        row_wise : bool, default False\n            Whether to return a list of dictionaries (one dictionary per row) instead of\n            a dictionary of lists (one list per column)\n\n        Returns\n        -------\n        dict : dict\n            The counterfactual predictions, as a dictionary\n        \"\"\"\n        inf = self._whatif_inference(X, Xnew, feature_index, y)\n        props = self._point_props(alpha=alpha)\n        res = _get_default_specific_insights('whatif')\n        if row_wise:\n            row_data = {}\n            # remove entries belonging to row data, since we're including them in the list of nested dictionaries\n            for k in _get_data_causal_insights_keys():\n                del res[k]\n\n            row_data.update([(key, self._make_accessor(attr)(inf).flatten()) for key, attr in props])\n\n            # get the length of the list corresponding to the first dictionary key\n            # `list(row_data)` gets the keys as a list, since `row_data.keys()` can't be indexed into\n            n_rows = len(row_data[list(row_data)[0]])\n            res[_CausalInsightsConstants.RowData] = [{key: row_data[key][i]\n                                                      for key in row_data} for i in range(n_rows)]\n        else:\n            res.update([(key, self._make_accessor(attr)(inf).tolist()) for key, attr in props])\n        return res\n\n    def _tree(self, is_policy, Xtest, feature_index, *, treatment_costs=0,\n              max_depth=3, min_samples_leaf=2, min_impurity_decrease=1e-4,\n              include_model_uncertainty=False, alpha=0.05):\n\n        result = self._safe_result_index(Xtest, feature_index)\n        Xtest = result.X_transformer.transform(Xtest)\n        if Xtest.shape[1] == 0:\n            Xtest = None\n        if result.feature_baseline is None:\n            treatment_names = ['decrease', 'increase']\n        else:\n            treatment_names = [f\"{result.feature_baseline}\"] + \\\n                [f\"{lvl}\" for lvl in result.feature_levels]\n\n        TreeType = SingleTreePolicyInterpreter if is_policy else SingleTreeCateInterpreter\n        intrp = TreeType(include_model_uncertainty=include_model_uncertainty,\n                         uncertainty_level=alpha,\n                         max_depth=max_depth,\n                         min_samples_leaf=min_samples_leaf,\n                         min_impurity_decrease=min_impurity_decrease,\n                         random_state=self.random_state)\n\n        if is_policy:\n            intrp.interpret(result.estimator, Xtest,\n                            sample_treatment_costs=treatment_costs)\n            if result.feature_baseline is None:  # continuous treatment, so apply a treatment level 10% of typical\n                treatment_level = result.treatment_value * 0.1\n\n                # NOTE: this calculation is correct only if treatment costs are marginal costs,\n                #       because then scaling the difference between treatment value and treatment costs is the\n                #       same as scaling the treatment value and subtracting the scaled treatment cost.\n                #\n                #       Note also that unlike the standard outputs of the SinglePolicyTreeInterpreter, for\n                #       continuous treatments, the policy value should include the benefit of decreasing treatments\n                #       (rather than just not treating at all)\n                #\n                #       We can get the total by seeing that if we restrict attention to units where we would treat,\n                #         2 * policy_value - always_treat\n                #       includes exactly their contribution because policy_value and always_treat both include it\n                #       and likewise restricting attention to the units where we want to decrease treatment,\n                #         2 * policy_value - always-treat\n                #       also computes the *benefit* of decreasing treatment, because their contribution to policy_value\n                #       is zero and the contribution to always_treat is negative\n                treatment_total = (2 * intrp.policy_value_ - intrp.always_treat_value_.item()) * treatment_level\n                always_totals = intrp.always_treat_value_ * treatment_level\n            else:\n                treatment_total = intrp.policy_value_\n                always_totals = intrp.always_treat_value_\n\n            policy_values = treatment_total, always_totals\n        else:  # no policy values for CATE trees\n            intrp.interpret(result.estimator, Xtest)\n            policy_values = None\n\n        return intrp, result.X_transformer.get_feature_names_out(self.feature_names_), treatment_names, policy_values\n\n    # TODO: it seems like it would be better to just return the tree itself rather than plot it;\n    #       however, the tree can't store the feature and treatment names we compute here...\n    def plot_policy_tree(self, Xtest, feature_index, *, treatment_costs=0,\n                         max_depth=3, min_samples_leaf=2, min_value_increase=1e-4, include_model_uncertainty=False,\n                         alpha=0.05):\n        \"\"\"\n        Plot a recommended policy tree using matplotlib.\n\n        Parameters\n        ----------\n        X : array_like\n            Features\n        feature_index\n            Index of the feature to be considered as treament\n        treatment_costs: array_like, default 0\n            Cost of treatment, as a scalar value or per-sample. For continuous features this is the marginal cost per\n            unit of treatment; for discrete features, this is the difference in cost between each of the non-default\n            values and the default value (i.e., if non-scalar the array should have shape (n,d_t-1))\n        max_depth : int, default 3\n            maximum depth of the tree\n        min_samples_leaf : int, default 2\n            minimum number of samples on each leaf\n        min_value_increase : float, default 1e-4\n            The minimum increase in the policy value that a split needs to create to construct it\n        include_model_uncertainty : bool, default False\n            Whether to include confidence interval information when building a simplified model of the cate model.\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n        \"\"\"\n        intrp, feature_names, treatment_names, _ = self._tree(True, Xtest, feature_index,\n                                                              treatment_costs=treatment_costs,\n                                                              max_depth=max_depth,\n                                                              min_samples_leaf=min_samples_leaf,\n                                                              min_impurity_decrease=min_value_increase,\n                                                              include_model_uncertainty=include_model_uncertainty,\n                                                              alpha=alpha)\n        return intrp.plot(feature_names=feature_names, treatment_names=treatment_names)\n\n    def _policy_tree_output(self, Xtest, feature_index, *, treatment_costs=0,\n                            max_depth=3, min_samples_leaf=2, min_value_increase=1e-4, alpha=0.05):\n        \"\"\"\n        Get a tuple of policy outputs.\n\n        The first item in the tuple is the recommended policy tree expressed as a dictionary.\n        The second item is the per-unit-average value of applying the learned policy; if the feature is continuous this\n        means the gain from increasing the treatment by 10% of the typical amount for units where the treatment should\n        be increased and decreasing the treatment by 10% of the typical amount when not.\n        The third item is the value of always treating.  This is a list, with one entry per non-control-treatment for\n        discrete features, or just a single entry for continuous features, again increasing by 10% of a typical amount.\n\n        Parameters\n        ----------\n        X : array_like\n            Features\n        feature_index\n            Index of the feature to be considered as treament\n        treatment_costs: array_like, default 0\n            Cost of treatment, as a scalar value or per-sample. For continuous features this is the marginal cost per\n            unit of treatment; for discrete features, this is the difference in cost between each of the non-default\n            values and the default value (i.e., if non-scalar the array should have shape (n,d_t-1))\n        max_depth : int, default 3\n            maximum depth of the tree\n        min_samples_leaf : int, default 2\n            minimum number of samples on each leaf\n        min_value_increase : float, default 1e-4\n            The minimum increase in the policy value that a split needs to create to construct it\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n\n        Returns\n        -------\n        output : _PolicyOutput\n        \"\"\"\n        (intrp, feature_names, treatment_names,\n            (policy_val, always_trt)) = self._tree(True, Xtest, feature_index,\n                                                   treatment_costs=treatment_costs,\n                                                   max_depth=max_depth,\n                                                   min_samples_leaf=min_samples_leaf,\n                                                   min_impurity_decrease=min_value_increase,\n                                                   alpha=alpha)\n\n        def policy_data(tree, node_id, node_dict):\n            return {'treatment': treatment_names[np.argmax(tree.value[node_id])]}\n        return _PolicyOutput(_tree_interpreter_to_dict(intrp, feature_names, policy_data),\n                             policy_val,\n                             {treatment_names[i + 1]: val\n                              for (i, val) in enumerate(always_trt.tolist())},\n                             treatment_names[0])\n\n    # TODO: it seems like it would be better to just return the tree itself rather than plot it;\n    #       however, the tree can't store the feature and treatment names we compute here...\n    def plot_heterogeneity_tree(self, Xtest, feature_index, *,\n                                max_depth=3, min_samples_leaf=2, min_impurity_decrease=1e-4,\n                                include_model_uncertainty=False,\n                                alpha=0.05):\n        \"\"\"\n        Plot an effect heterogeneity tree using matplotlib.\n\n        Parameters\n        ----------\n        X : array_like\n            Features\n        feature_index\n            Index of the feature to be considered as treament\n        max_depth : int, default 3\n            maximum depth of the tree\n        min_samples_leaf : int, default 2\n            minimum number of samples on each leaf\n        min_impurity_decrease : float, default 1e-4\n            The minimum decrease in the impurity/uniformity of the causal effect that a split needs to\n            achieve to construct it\n        include_model_uncertainty : bool, default False\n            Whether to include confidence interval information when building a simplified model of the cate model.\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n        \"\"\"\n        intrp, feature_names, treatment_names, _ = self._tree(False, Xtest, feature_index,\n                                                              max_depth=max_depth,\n                                                              min_samples_leaf=min_samples_leaf,\n                                                              min_impurity_decrease=min_impurity_decrease,\n                                                              include_model_uncertainty=include_model_uncertainty,\n                                                              alpha=alpha)\n        return intrp.plot(feature_names=feature_names,\n                          treatment_names=treatment_names)\n\n    def _heterogeneity_tree_output(self, Xtest, feature_index, *,\n                                   max_depth=3, min_samples_leaf=2, min_impurity_decrease=1e-4,\n                                   include_model_uncertainty=False, alpha=0.05):\n        \"\"\"\n        Get an effect heterogeneity tree expressed as a dictionary.\n\n        Parameters\n        ----------\n        X : array_like\n            Features\n        feature_index\n            Index of the feature to be considered as treament\n        max_depth : int, default 3\n            maximum depth of the tree\n        min_samples_leaf : int, default 2\n            minimum number of samples on each leaf\n        min_impurity_decrease : float, default 1e-4\n            The minimum decrease in the impurity/uniformity of the causal effect that a split needs to\n            achieve to construct it\n        include_model_uncertainty : bool, default False\n            Whether to include confidence interval information when building a simplified model of the cate model.\n        alpha : float in [0, 1], default 0.05\n            Confidence level of the confidence intervals displayed in the leaf nodes.\n            A (1-alpha)*100% confidence interval is displayed.\n        \"\"\"\n        intrp, feature_names, _, _ = self._tree(False, Xtest, feature_index,\n                                                max_depth=max_depth,\n                                                min_samples_leaf=min_samples_leaf,\n                                                min_impurity_decrease=min_impurity_decrease,\n                                                include_model_uncertainty=include_model_uncertainty,\n                                                alpha=alpha)\n\n        def hetero_data(tree, node_id, node_dict):\n            if include_model_uncertainty:\n                return {'effect': _sanitize(tree.value[node_id]),\n                        'ci': _sanitize(node_dict[node_id]['ci'])}\n            else:\n                return {'effect': _sanitize(tree.value[node_id])}\n        return _tree_interpreter_to_dict(intrp, feature_names, hetero_data)\n\n    def individualized_policy(self, Xtest, feature_index, *, n_rows=None, treatment_costs=0, alpha=0.05):\n        \"\"\"\n        Get individualized treatment policy based on the learned model for a feature, sorted by the predicted effect.\n\n        Parameters\n        ----------\n        Xtest: array_like\n            Features\n        feature_index: int or str\n            Index of the feature to be considered as treatment\n        n_rows: int, optional\n            How many rows to return (all rows by default)\n        treatment_costs: array_like, default 0\n            Cost of treatment, as a scalar value or per-sample. For continuous features this is the marginal cost per\n            unit of treatment; for discrete features, this is the difference in cost between each of the non-default\n            values and the default value (i.e., if non-scalar the array should have shape (n,d_t-1))\n        alpha: float in [0, 1], default 0.05\n            Confidence level of the confidence intervals\n            A (1-alpha)*100% confidence interval is returned\n\n        Returns\n        -------\n        output: DataFrame\n            Dataframe containing recommended treatment, effect, confidence interval, sorted by effect\n        \"\"\"\n        result = self._safe_result_index(Xtest, feature_index)\n\n        # get dataframe with all but selected column\n        orig_df = pd.DataFrame(Xtest, columns=self.feature_names_).rename(\n            columns={self.feature_names_[result.feature_index]: 'Current treatment'})\n\n        Xtest = result.X_transformer.transform(Xtest)\n        if Xtest.shape[1] == 0:\n            x_rows = Xtest.shape[0]\n            Xtest = None\n\n        if result.feature_baseline is None:\n            # apply 10% of a typical treatment for this feature\n            effect = result.estimator.effect_inference(Xtest, T1=result.treatment_value * 0.1)\n        else:\n            effect = result.estimator.const_marginal_effect_inference(Xtest)\n\n        if Xtest is None:  # we got a scalar effect although our original X may have had more rows\n            effect = effect._expand_outputs(x_rows)\n\n        multi_y = (not self._vec_y) or self.classification\n\n        if multi_y and result.feature_baseline is not None and np.ndim(treatment_costs) == 2:\n            # we've got treatment costs of shape (n, d_t-1) so we need to add a y dimension to broadcast safely\n            treatment_costs = np.expand_dims(treatment_costs, 1)\n\n        effect.translate(-treatment_costs)\n\n        est = effect.point_estimate\n        est_lb = effect.conf_int(alpha)[0]\n        est_ub = effect.conf_int(alpha)[1]\n\n        if multi_y:  # y was an array, not a vector\n            est = np.squeeze(est, 1)\n            est_lb = np.squeeze(est_lb, 1)\n            est_ub = np.squeeze(est_ub, 1)\n\n        if result.feature_baseline is None:\n            rec = np.empty(est.shape[0], dtype=object)\n            rec[est > 0] = \"increase\"\n            rec[est <= 0] = \"decrease\"\n            # set the effect bounds; for positive treatments these agree with\n            # the estimates; for negative treatments, we need to invert the interval\n            eff_lb, eff_ub = est_lb, est_ub\n            eff_lb[est <= 0], eff_ub[est <= 0] = -eff_ub[est <= 0], -eff_lb[est <= 0]\n            # the effect is now always positive since we decrease treatment when negative\n            eff = np.abs(est)\n        else:\n            # for discrete treatment, stack a zero result in front for control\n            zeros = np.zeros((est.shape[0], 1))\n            all_effs = np.hstack([zeros, est])\n            eff_ind = np.argmax(all_effs, axis=1)\n            treatment_arr = np.array([result.feature_baseline] + [lvl for lvl in result.feature_levels], dtype=object)\n            rec = treatment_arr[eff_ind]\n            # we need to call effect_inference to get the correct CI between the two treatment options\n            effect = result.estimator.effect_inference(Xtest, T0=orig_df['Current treatment'], T1=rec)\n            # we now need to construct the delta in the cost between the two treatments and translate the effect\n            current_treatment = orig_df['Current treatment'].values\n            if isinstance(current_treatment, pd.core.arrays.categorical.Categorical):\n                current_treatment = current_treatment.to_numpy()\n            if np.ndim(treatment_costs) >= 2:\n                # remove third dimenions potentially added\n                if multi_y:  # y was an array, not a vector\n                    treatment_costs = np.squeeze(treatment_costs, 1)\n                assert treatment_costs.shape[1] == len(treatment_arr) - 1, (\"If treatment costs are an array, \"\n                                                                            \" they must be of shape (n, d_t-1),\"\n                                                                            \" where n is the number of samples\"\n                                                                            \" and d_t the number of treatment\"\n                                                                            \" categories.\")\n                all_costs = np.hstack([zeros, treatment_costs])\n                # find cost of current treatment: equality creates a 2d array with True on each row,\n                # only if its the location of the current treatment. Then we take the corresponding cost.\n                current_cost = all_costs[current_treatment.reshape(-1, 1) == treatment_arr.reshape(1, -1)]\n                target_cost = np.take_along_axis(all_costs, eff_ind.reshape(-1, 1), 1).reshape(-1)\n            else:\n                assert isinstance(treatment_costs, (int, float)), (\"Treatments costs should either be float or \"\n                                                                   \"a 2d array of size (n, d_t-1).\")\n                all_costs = np.array([0] + [treatment_costs] * (len(treatment_arr) - 1))\n                # construct index of current treatment\n                current_ind = (current_treatment.reshape(-1, 1) ==\n                               treatment_arr.reshape(1, -1)) @ np.arange(len(treatment_arr))\n                current_cost = all_costs[current_ind]\n                target_cost = all_costs[eff_ind]\n            delta_cost = current_cost - target_cost\n            # add second dimension if needed for broadcasting during translation of effect\n            if multi_y:\n                delta_cost = np.expand_dims(delta_cost, 1)\n            effect.translate(delta_cost)\n            eff = effect.point_estimate\n            eff_lb, eff_ub = effect.conf_int(alpha)\n            if multi_y:  # y was an array, not a vector\n                eff = np.squeeze(eff, 1)\n                eff_lb = np.squeeze(eff_lb, 1)\n                eff_ub = np.squeeze(eff_ub, 1)\n\n        df = pd.DataFrame({'Treatment': rec,\n                           'Effect of treatment': eff,\n                           'Effect of treatment lower bound': eff_lb,\n                           'Effect of treatment upper bound': eff_ub},\n                          index=orig_df.index)\n\n        return df.join(orig_df).sort_values('Effect of treatment',\n                                            ascending=False).head(n_rows)\n\n    def _individualized_policy_dict(self, Xtest, feature_index, *, n_rows=None, treatment_costs=0, alpha=0.05):\n        \"\"\"\n        Get individualized treatment policy based on the learned model for a feature, sorted by the predicted effect.\n\n        Parameters\n        ----------\n        Xtest: array_like\n            Features\n        feature_index: int or str\n            Index of the feature to be considered as treatment\n        n_rows: int, optional\n            How many rows to return (all rows by default)\n        treatment_costs: array_like, default 0\n            Cost of treatment, as a scalar value or per-sample\n        alpha: float in [0, 1], default 0.05\n            Confidence level of the confidence intervals\n            A (1-alpha)*100% confidence interval is returned\n\n        Returns\n        -------\n        output: dictionary\n            dictionary containing treatment policy, effects, and other columns\n        \"\"\"\n        return self.individualized_policy(Xtest, feature_index,\n                                          n_rows=n_rows,\n                                          treatment_costs=treatment_costs,\n                                          alpha=alpha).to_dict('list')\n\n    def typical_treatment_value(self, feature_index):\n        \"\"\"\n        Get the typical treatment value used for the specified feature.\n\n        Parameters\n        ----------\n        feature_index: int or str\n            The index of the feature to be considered as treatment\n\n        Returns\n        -------\n        treatment_value : float\n            The treatment value considered 'typical' for this feature\n        \"\"\"\n        result = [res for res in self._results if res.feature_index == feature_index]\n        if len(result) == 0:\n            if self._has_column_names:\n                result = [res for res in self._results if res.feature_name == feature_index]\n                assert len(result) == 1, f\"Could not find feature with index/name {feature_index}\"\n                return result[0].treatment_value\n            else:\n                raise ValueError(f\"No feature with index {feature_index}\")\n        return result[0].treatment_value\n"
  },
  {
    "path": "econml/tests/__init__.py",
    "content": ""
  },
  {
    "path": "econml/tests/dgp.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\nimport abc\nimport numpy as np\nfrom econml.utilities import cross_product\nfrom statsmodels.tools.tools import add_constant\ntry:\n    import matplotlib\n    import matplotlib.pyplot as plt\nexcept ImportError as exn:\n    from econml.utilities import MissingModule\n\n    # make any access to matplotlib or plt throw an exception\n    matplotlib = plt = MissingModule(\"matplotlib is no longer a dependency of the main econml package; \"\n                                     \"install econml[plt] or econml[all] to require it, or install matplotlib \"\n                                     \"separately, to use the tree interpreters\", exn)\n\n\nclass _BaseDynamicPanelDGP:\n\n    def __init__(self, n_periods, n_treatments, n_x):\n        self.n_periods = n_periods\n        self.n_treatments = n_treatments\n        self.n_x = n_x\n        return\n\n    @abc.abstractmethod\n    def create_instance(self, *args, **kwargs):\n        pass\n\n    @abc.abstractmethod\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\n        pass\n\n    def static_policy_data(self, n_units, tau, random_seed=123):\n        def policy_gen(Tpre, X, period):\n            return tau[period]\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n    def adaptive_policy_data(self, n_units, policy_gen, random_seed=123):\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n    def static_policy_effect(self, tau, mc_samples=1000):\n        Y_tau, _, _, _ = self.static_policy_data(mc_samples, tau)\n        Y_zero, _, _, _ = self.static_policy_data(\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\n                           self.n_periods == self.n_periods - 1])\n\n    def adaptive_policy_effect(self, policy_gen, mc_samples=1000):\n        Y_tau, _, _, _ = self.adaptive_policy_data(mc_samples, policy_gen)\n        Y_zero, _, _, _ = self.static_policy_data(\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\n                           self.n_periods == self.n_periods - 1])\n\n\nclass DynamicPanelDGP(_BaseDynamicPanelDGP):\n\n    def __init__(self, n_periods, n_treatments, n_x):\n        super().__init__(n_periods, n_treatments, n_x)\n\n    def create_instance(self, s_x, sigma_x=.8, sigma_y=.1, conf_str=5, hetero_strength=.5, hetero_inds=None,\n                        autoreg=.25, state_effect=.25, random_seed=123):\n        np.random.seed(random_seed)\n        self.s_x = s_x\n        self.conf_str = conf_str\n        self.sigma_x = sigma_x\n        self.sigma_y = sigma_y\n        self.hetero_inds = hetero_inds.astype(\n            int) if hetero_inds is not None else hetero_inds\n        self.endo_inds = np.setdiff1d(\n            np.arange(self.n_x), hetero_inds).astype(int)\n        # The first s_x state variables are confounders. The final s_x variables are exogenous and can create\n        # heterogeneity\n        self.Alpha = np.random.uniform(-1, 1,\n                                       size=(self.n_x, self.n_treatments))\n        self.Alpha /= np.linalg.norm(self.Alpha, axis=1, ord=1, keepdims=True)\n        self.Alpha *= state_effect\n        if self.hetero_inds is not None:\n            self.Alpha[self.hetero_inds] = 0\n\n        self.Beta = np.zeros((self.n_x, self.n_x))\n        for t in range(self.n_x):\n            self.Beta[t, :] = autoreg * np.roll(np.random.uniform(low=4.0**(-np.arange(\n                0, self.n_x)), high=4.0**(-np.arange(1, self.n_x + 1))), t)\n        if self.hetero_inds is not None:\n            self.Beta[np.ix_(self.endo_inds, self.hetero_inds)] = 0\n            self.Beta[np.ix_(self.hetero_inds, self.endo_inds)] = 0\n\n        self.epsilon = np.random.uniform(-1, 1, size=self.n_treatments)\n        self.zeta = np.zeros(self.n_x)\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\n\n        self.y_hetero_effect = np.zeros(self.n_x)\n        self.x_hetero_effect = np.zeros(self.n_x)\n        if self.hetero_inds is not None:\n            self.y_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\n                len(self.hetero_inds)\n            self.x_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\n                len(self.hetero_inds)\n\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\n        # Invert indices to match latest API\n        self.true_effect[self.n_periods - 1] = self.epsilon\n        for t in np.arange(self.n_periods - 2, -1, -1):\n            self.true_effect[t, :] = (self.zeta.reshape(\n                1, -1) @ np.linalg.matrix_power(self.Beta, (self.n_periods - 1 - t) - 1) @ self.Alpha)\n\n        self.true_hetero_effect = np.zeros(\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\n        self.true_hetero_effect[self.n_periods - 1, :] = cross_product(\n            add_constant(self.y_hetero_effect.reshape(1, -1), has_constant='add'),\n            self.epsilon.reshape(1, -1))\n        for t in np.arange(self.n_periods - 2, -1, -1):\n            # Invert indices to match latest API\n            self.true_hetero_effect[t, :] = cross_product(\n                add_constant(self.x_hetero_effect.reshape(1, -1), has_constant='add'),\n                self.zeta.reshape(1, -1) @ np.linalg.matrix_power(\n                    self.Beta, (self.n_periods - 1 - t) - 1) @ self.Alpha)\n        return self\n\n    def hetero_effect_fn(self, t, x):\n        if t == self.n_periods - 1:\n            return (np.dot(self.y_hetero_effect, x.flatten()) + 1) * self.epsilon\n        else:\n            return (np.dot(self.x_hetero_effect, x.flatten()) + 1) *\\\n                (self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, (self.n_periods - 1 - t) - 1)\n                    @ self.Alpha).flatten()\n\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\n        np.random.seed(random_seed)\n        Y = np.zeros(n_units * self.n_periods)\n        T = np.zeros((n_units * self.n_periods, self.n_treatments))\n        X = np.zeros((n_units * self.n_periods, self.n_x))\n        groups = np.zeros(n_units * self.n_periods)\n        for t in range(n_units * self.n_periods):\n            period = t % self.n_periods\n            if period == 0:\n                X[t] = np.random.normal(0, self.sigma_x, size=self.n_x)\n                const_x0 = X[t][self.hetero_inds]\n                T[t] = policy_gen(np.zeros(self.n_treatments), X[t], period)\n            else:\n                X[t] = (np.dot(self.x_hetero_effect, X[t - 1]) + 1) * np.dot(self.Alpha, T[t - 1]) + \\\n                    np.dot(self.Beta, X[t - 1]) + \\\n                    np.random.normal(0, self.sigma_x, size=self.n_x)\n                # The feature for heterogeneity stays constant\n                X_t = X[t].copy()\n                X_t[self.hetero_inds] = const_x0\n                T[t] = policy_gen(T[t - 1], X[t], period)\n            Y[t] = (np.dot(self.y_hetero_effect, X_t if period != 0 else X[t]) + 1) * np.dot(self.epsilon, T[t]) + \\\n                np.dot(X[t], self.zeta) + \\\n                np.random.normal(0, self.sigma_y)\n            groups[t] = t // self.n_periods\n\n        return Y, T, X[:, self.hetero_inds] if (self.hetero_inds is not None) else None, X[:, self.endo_inds], groups\n\n    def observational_data(self, n_units, gamma=0, s_t=1, sigma_t=0.5, random_seed=123):\n        \"\"\"Generate observational data with some observational treatment policy parameters.\n\n        Parameters\n        ----------\n        n_units : how many units to observe\n        gamma : what is the degree of auto-correlation of the treatments across periods\n        s_t : sparsity of treatment policy; how many states does it depend on\n        sigma_t : what is the std of the exploration/randomness in the treatment\n        \"\"\"\n        Delta = np.zeros((self.n_treatments, self.n_x))\n        Delta[:, :s_t] = self.conf_str / s_t\n\n        def policy_gen(Tpre, X, period):\n            return gamma * Tpre + (1 - gamma) * np.dot(Delta, X) + \\\n                np.random.normal(0, sigma_t, size=self.n_treatments)\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\n\n\n# Auxiliary function for adding xticks and vertical lines when plotting results\n# for dynamic dml vs ground truth parameters.\ndef add_vlines(n_periods, n_treatments, hetero_inds):\n    locs, labels = plt.xticks([], [])\n    locs += [- .501 + (len(hetero_inds) + 1) / 2]\n    labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(0)]\n    locs += [qx for qx in np.arange(len(hetero_inds) + 1)]\n    labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\n    for q in np.arange(1, n_treatments):\n        plt.axvline(x=q * (len(hetero_inds) + 1) - .5,\n                    linestyle='--', color='red', alpha=.2)\n        locs += [q * (len(hetero_inds) + 1) - .501 + (len(hetero_inds) + 1) / 2]\n        labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(q)]\n        locs += [(q * (len(hetero_inds) + 1) + qx)\n                 for qx in np.arange(len(hetero_inds) + 1)]\n        labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\n    locs += [- .501 + (len(hetero_inds) + 1) * n_treatments / 2]\n    labels += [\"\\n\\n\\n\\n$\\\\theta_{{{}}}$\".format(0)]\n    for t in np.arange(1, n_periods):\n        plt.axvline(x=t * (len(hetero_inds) + 1) *\n                    n_treatments - .5, linestyle='-', alpha=.6)\n        locs += [t * (len(hetero_inds) + 1) * n_treatments - .501 +\n                 (len(hetero_inds) + 1) * n_treatments / 2]\n        labels += [\"\\n\\n\\n\\n$\\\\theta_{{{}}}$\".format(t)]\n        locs += [t * (len(hetero_inds) + 1) *\n                 n_treatments - .501 + (len(hetero_inds) + 1) / 2]\n        labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(0)]\n        locs += [t * (len(hetero_inds) + 1) * n_treatments +\n                 qx for qx in np.arange(len(hetero_inds) + 1)]\n        labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\n        for q in np.arange(1, n_treatments):\n            plt.axvline(x=t * (len(hetero_inds) + 1) * n_treatments + q * (len(hetero_inds) + 1) - .5,\n                        linestyle='--', color='red', alpha=.2)\n            locs += [t * (len(hetero_inds) + 1) * n_treatments + q *\n                     (len(hetero_inds) + 1) - .501 + (len(hetero_inds) + 1) / 2]\n            labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(q)]\n            locs += [t * (len(hetero_inds) + 1) * n_treatments + (q * (len(hetero_inds) + 1) + qx)\n                     for qx in np.arange(len(hetero_inds) + 1)]\n            labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\n    plt.xticks(locs, labels)\n    plt.tight_layout()\n"
  },
  {
    "path": "econml/tests/test_ate_inference.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport numpy as np\r\nimport unittest\r\nfrom sklearn.preprocessing import PolynomialFeatures\r\nfrom sklearn.linear_model import LinearRegression\r\nfrom econml.dml import LinearDML\r\nfrom econml.inference import BootstrapInference\r\n\r\n\r\nclass TestATEInference(unittest.TestCase):\r\n\r\n    @classmethod\r\n    def setUpClass(cls):\r\n        np.random.seed(123)\r\n        # DGP constants\r\n        cls.n = 1000\r\n        cls.d_w = 3\r\n        cls.d_x = 3\r\n        # Generate data\r\n        cls.X = np.random.uniform(0, 1, size=(cls.n, cls.d_x))\r\n        cls.W = np.random.normal(0, 1, size=(cls.n, cls.d_w))\r\n        cls.T = np.random.binomial(1, .5, size=(cls.n, 2))\r\n        cls.Y = np.random.normal(0, 1, size=(cls.n, 3))\r\n\r\n    def test_ate_inference(self):\r\n        \"\"\"Test the ate inference results.\"\"\"\r\n        Y, T, X, W = TestATEInference.Y, TestATEInference.T, TestATEInference.X, TestATEInference.W\r\n        for inference in [BootstrapInference(n_bootstrap_samples=5), 'auto']:\r\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(),\r\n                                 featurizer=PolynomialFeatures(degree=2,\r\n                                                               include_bias=False))\r\n            cate_est.fit(Y, T, X=X, W=W, inference=inference)\r\n            cate_est.ate(X)\r\n            cate_est.ate_inference(X)\r\n            cate_est.ate_interval(X, alpha=.01)\r\n            lb, _ = cate_est.ate_inference(X).conf_int_mean()\r\n            np.testing.assert_array_equal(lb.shape, Y.shape[1:])\r\n\r\n            cate_est.marginal_ate(T, X)\r\n            cate_est.marginal_ate_interval(T, X, alpha=.01)\r\n            cate_est.marginal_ate_inference(T, X)\r\n            lb, _ = cate_est.marginal_ate_inference(T, X).conf_int_mean()\r\n            np.testing.assert_array_equal(lb.shape, Y.shape[1:] + T.shape[1:])\r\n\r\n            cate_est.const_marginal_ate(X)\r\n            cate_est.const_marginal_ate_interval(X, alpha=.01)\r\n            cate_est.const_marginal_ate_inference(X)\r\n            lb, _ = cate_est.const_marginal_ate_inference(X).conf_int_mean()\r\n            np.testing.assert_array_equal(lb.shape, Y.shape[1:] + T.shape[1:])\r\n\r\n            summary = cate_est.ate_inference(X).summary(value=10)\r\n            for i in range(Y.shape[1]):\r\n                assert summary.tables[0].data[1 + i][4] < 1e-5\r\n\r\n            summary = cate_est.ate_inference(X).summary(value=np.mean(cate_est.effect(X), axis=0))\r\n            for i in range(Y.shape[1]):\r\n                np.testing.assert_almost_equal(summary.tables[0].data[1 + i][4], 1.0)\r\n\r\n            summary = cate_est.marginal_ate_inference(T, X).summary(value=10)\r\n            for i in range(Y.shape[1] * T.shape[1]):\r\n                assert summary.tables[0].data[1 + i][4] < 1e-5\r\n\r\n            summary = cate_est.marginal_ate_inference(T, X).summary(\r\n                value=np.mean(cate_est.marginal_effect(T, X), axis=0))\r\n            for i in range(Y.shape[1] * T.shape[1]):\r\n                np.testing.assert_almost_equal(summary.tables[0].data[1 + i][4], 1.0)\r\n\r\n            summary = cate_est.const_marginal_ate_inference(X).summary(value=10)\r\n            for i in range(Y.shape[1] * T.shape[1]):\r\n                assert summary.tables[0].data[1 + i][4] < 1e-5\r\n\r\n            summary = cate_est.const_marginal_ate_inference(X).summary(\r\n                value=np.mean(cate_est.const_marginal_effect(X), axis=0))\r\n            for i in range(Y.shape[1] * T.shape[1]):\r\n                np.testing.assert_almost_equal(summary.tables[0].data[1 + i][4], 1.0)\r\n"
  },
  {
    "path": "econml/tests/test_automated_ml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\nimport pytest\nfrom econml.dml import DML, LinearDML, SparseLinearDML, KernelDML, NonParamDML, CausalForestDML\nfrom econml.metalearners import SLearner, TLearner, XLearner, DomainAdaptationLearner\nfrom econml.dr import DRLearner\nfrom sklearn.ensemble import GradientBoostingClassifier\nimport copy\nfrom econml.data.dgps import ihdp_surface_B\nimport os\n\ntry:\n    from azureml.core.authentication import AzureCliAuthentication\n    from econml.automated_ml import addAutomatedML, setAutomatedMLWorkspace, EconAutoMLConfig\n    AutomatedTLearner = addAutomatedML(TLearner)\n    AutomatedSLearner = addAutomatedML(SLearner)\n    AutomatedXLearner = addAutomatedML(XLearner)\n    AutomatedDomainAdaptationLearner = \\\n        addAutomatedML(DomainAdaptationLearner)\n    AutomatedDRLearner = addAutomatedML(DRLearner)\n    AutomatedDML = addAutomatedML(DML)\n    AutomatedLinearDML = addAutomatedML(LinearDML)\n    AutomatedSparseLinearDML = \\\n        addAutomatedML(SparseLinearDML)\n    AutomatedKernelDML = addAutomatedML(KernelDML)\n    AutomatedNonParamDML = \\\n        addAutomatedML(NonParamDML)\n    AutomatedCausalForestDML = addAutomatedML(CausalForestDML)\n\n    AUTOML_SETTINGS_REG = {\n        'experiment_timeout_minutes': 15,\n        'enable_early_stopping': True,\n        'iteration_timeout_minutes': 1,\n        'max_cores_per_iteration': 1,\n        'n_cross_validations': 2,\n        'preprocess': False,\n        'featurization': 'off',\n        'enable_stack_ensemble': False,\n        'enable_voting_ensemble': False,\n        'primary_metric': 'normalized_mean_absolute_error',\n    }\n\n    AUTOML_SETTINGS_CLF = {\n        'experiment_timeout_minutes': 15,\n        'enable_early_stopping': True,\n        'iteration_timeout_minutes': 1,\n        'max_cores_per_iteration': 1,\n        'n_cross_validations': 2,\n        'enable_stack_ensemble': False,\n        'preprocess': False,\n        'enable_voting_ensemble': False,\n        'featurization': 'off',\n        'primary_metric': 'AUC_weighted',\n    }\n\n    AUTOML_CONFIG_REG = EconAutoMLConfig(task='regression',\n                                         debug_log='automl_errors.log',\n                                         enable_onnx_compatible_models=True, model_explainability=True,\n                                         **AUTOML_SETTINGS_REG)\n\n    AUTOML_CONFIG_CLF = EconAutoMLConfig(task='classification',\n                                         debug_log='automl_errors.log',\n                                         enable_onnx_compatible_models=True, model_explainability=True,\n                                         **AUTOML_SETTINGS_CLF)\n\n    AUTOML_CONFIG_LINEAR_REG = EconAutoMLConfig(task='regression',\n                                                debug_log='automl_errors.log',\n                                                linear_model_required=True,\n                                                enable_onnx_compatible_models=True, model_explainability=True,\n                                                **AUTOML_SETTINGS_REG)\n\n    AUTOML_CONFIG_SAMPLE_WEIGHT_REG = EconAutoMLConfig(task='regression',\n                                                       debug_log='automl_errors.log',\n                                                       linear_model_required=True,\n                                                       enable_onnx_compatible_models=True, model_explainability=True,\n                                                       **AUTOML_SETTINGS_REG)\n\n    def automl_model_reg():\n        return copy.deepcopy(AUTOML_CONFIG_REG)\n\n    def automl_model_clf():\n        return copy.deepcopy(AUTOML_CONFIG_CLF)\n\n    # Linear models are required for parametric dml\n\n    def automl_model_linear_reg():\n        return copy.deepcopy(AUTOML_CONFIG_LINEAR_REG)\n\n    # sample weighting models are required for nonparametric dml\n\n    def automl_model_sample_weight_reg():\n        return copy.deepcopy(AUTOML_CONFIG_SAMPLE_WEIGHT_REG)\n\n    # Test values\n    Y, T, X, _ = ihdp_surface_B()\nexcept ImportError:\n    pass  # automl not installed\n\n\n@pytest.mark.automl\nclass TestAutomatedML(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        subscription_id = os.getenv(\"SUBSCRIPTION_ID\")\n        resource_group = os.getenv(\"RESOURCE_GROUP\")\n        workspace_name = os.getenv(\"WORKSPACE_NAME\")\n\n        auth = AzureCliAuthentication()\n\n        setAutomatedMLWorkspace(auth=auth,\n                                subscription_id=subscription_id,\n                                resource_group=resource_group, workspace_name=workspace_name)\n\n    def test_nonparam(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an automated Nonparametic DML.\"\"\"\n        est = AutomatedNonParamDML(model_y=automl_model_reg(),\n                                   model_t=automl_model_clf(),\n                                   model_final=automl_model_sample_weight_reg(), featurizer=None,\n                                   discrete_treatment=True)\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n    def test_param(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an automated Parametric DML.\"\"\"\n        est = AutomatedLinearDML(model_y=automl_model_reg(),\n                                 model_t=GradientBoostingClassifier(),\n                                 featurizer=None,\n                                 discrete_treatment=True)\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n    def test_forest_dml(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an AutomatedForestDML.\"\"\"\n        est = AutomatedCausalForestDML(model_y=automl_model_reg(),\n                                       model_t=GradientBoostingClassifier(),\n                                       discrete_treatment=True,\n                                       n_estimators=1000,\n                                       max_samples=.4,\n                                       min_samples_leaf=10,\n                                       min_impurity_decrease=0.001,\n                                       verbose=0, min_weight_fraction_leaf=.01)\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n    def test_TLearner(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an AutomatedTLearner.\"\"\"\n        # TLearner test\n        # Instantiate TLearner\n        est = AutomatedTLearner(models=automl_model_reg())\n\n        # Test constant and heterogeneous treatment effect, single and multi output y\n\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n    def test_SLearner(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an AutomatedSLearner.\"\"\"\n        # Test constant treatment effect with multi output Y\n        # Test heterogeneous treatment effect\n        # Need interactions between T and features\n        est = AutomatedSLearner(overall_model=automl_model_reg())\n\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n        # Test heterogeneous treatment effect with multi output Y\n\n    def test_DALearner(self):\n        \"\"\"Testing the completion of the fit and effect estimation of an AutomatedDomainAdaptationLearner.\"\"\"\n        # Instantiate DomainAdaptationLearner\n\n        est = AutomatedDomainAdaptationLearner(models=automl_model_reg(),\n                                               final_models=automl_model_reg())\n\n        est.fit(Y, T, X=X)\n        _ = est.effect(X)\n\n    def test_positional(self):\n        \"\"\"Test that positional arguments can be used with AutoML wrappers.\"\"\"\n\n        class TestEstimator:\n            def __init__(self, model_x):\n                self.model_x = model_x\n\n            def fit(self, X, Y):\n                self.model_x.fit(X, Y)\n                return self\n\n            def predict(self, X):\n                return self.model_x.predict(X)\n\n        AutoMLTestEstimator = addAutomatedML(TestEstimator)\n        AutoMLTestEstimator(automl_model_reg()).fit(X, Y).predict(X)\n"
  },
  {
    "path": "econml/tests/test_bootstrap.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom econml.inference._bootstrap import BootstrapEstimator\nfrom econml.inference import BootstrapInference\nfrom econml.dml import LinearDML\nfrom econml.iv.dr import LinearIntentToTreatDRIV\nfrom econml.iv.sieve import SieveTSLS\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\nfrom sklearn.preprocessing import PolynomialFeatures\nimport numpy as np\nimport unittest\nimport joblib\n\n\nclass TestBootstrap(unittest.TestCase):\n\n    def test_with_sklearn(self):\n        \"\"\"Test that we can bootstrap sklearn estimators.\"\"\"\n        for n_jobs in [None, -1]:  # test parallelism\n            for kind in ['percentile', 'pivot', 'normal']:  # test both percentile and pivot intervals\n                x = np.random.normal(size=(1000, 1))\n                y = x * 0.5 + np.random.normal(size=(1000, 1))\n                y = y.flatten()\n\n                est = LinearRegression()\n                est.fit(x, y)\n\n                bs = BootstrapEstimator(est, 50, n_jobs=n_jobs, bootstrap_type=kind)\n                # test that we can fit with the same arguments as the base estimator\n                bs.fit(x, y)\n\n                # test that we can get the same attribute for the bootstrap as the original, with the same shape\n                self.assertEqual(np.shape(est.coef_), np.shape(bs.coef_))\n\n                # test that we can get an interval for the same attribute for the bootstrap as the original,\n                # with the same shape for the lower and upper bounds\n                lower, upper = bs.coef__interval()\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing once we provide percentile bounds\n                lower, upper = bs.coef__interval(lower=10, upper=90)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing with the results of a method, rather than an attribute\n                self.assertEqual(np.shape(est.predict(x)), np.shape(bs.predict(x)))\n\n                # test that we can get an interval for the same attribute for the bootstrap as the original,\n                # with the same shape for the lower and upper bounds\n                lower, upper = bs.predict_interval(x)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.predict(x)), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing once we provide percentile bounds\n                lower, upper = bs.predict_interval(x, lower=10, upper=90)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.predict(x)), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n    def test_with_econml(self):\n        \"\"\"Test that we can bootstrap econml estimators.\"\"\"\n        x = np.random.normal(size=(1000, 2))\n        t = np.random.normal(size=(1000, 1))\n        t2 = np.random.normal(size=(1000, 1))\n        y = x[:, 0:1] * 0.5 + t + np.random.normal(size=(1000, 1))\n\n        est = LinearDML(model_y=LinearRegression(), model_t=LinearRegression())\n        est.fit(y, t, X=x)\n\n        bs = BootstrapEstimator(est, 50)\n        # test that we can fit with the same arguments as the base estimator\n        bs.fit(y, t, X=x)\n\n        # test that we can get the same attribute for the bootstrap as the original, with the same shape\n        self.assertEqual(np.shape(est.coef_), np.shape(bs.coef_))\n\n        # test that we can get an interval for the same attribute for the bootstrap as the original,\n        # with the same shape for the lower and upper bounds\n        lower, upper = bs.coef__interval()\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # test that we can do the same thing once we provide percentile bounds\n        lower, upper = bs.coef__interval(lower=10, upper=90)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n        # test that we can do the same thing with the results of a method, rather than an attribute\n        self.assertEqual(np.shape(est.effect(x, T0=t, T1=t2)), np.shape(bs.effect(x, T0=t, T1=t2)))\n\n        # test that we can get an interval for the same attribute for the bootstrap as the original,\n        # with the same shape for the lower and upper bounds\n        lower, upper = bs.effect_interval(x, T0=t, T1=t2)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(est.effect(x, T0=t, T1=t2)), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # test that we can do the same thing once we provide percentile bounds\n        lower, upper = bs.effect_interval(x, T0=t, T1=t2, lower=10, upper=90)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(est.effect(x, T0=t, T1=t2)), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n    def test_backends(self):\n        \"\"\"Test that we can use threading or multiprocess backends.\"\"\"\n        for backend in ['threading', 'loky']:\n            with joblib.parallel_backend(backend):\n                x = np.random.normal(size=(1000, 1))\n                y = x * 0.5 + np.random.normal(size=(1000, 1))\n                y = y.flatten()\n\n                est = LinearRegression()\n                est.fit(x, y)\n\n                bs = BootstrapEstimator(est, 50, n_jobs=2)\n                # test that we can fit with the same arguments as the base estimator\n\n                bs.fit(x, y)\n\n                # test that we can get the same attribute for the bootstrap as the original, with the same shape\n                self.assertEqual(np.shape(est.coef_), np.shape(bs.coef_))\n\n                # test that we can get an interval for the same attribute for the bootstrap as the original,\n                # with the same shape for the lower and upper bounds\n                lower, upper = bs.coef__interval()\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing once we provide percentile bounds\n                lower, upper = bs.coef__interval(lower=10, upper=90)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.coef_), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing with the results of a method, rather than an attribute\n                self.assertEqual(np.shape(est.predict(x)), np.shape(bs.predict(x)))\n\n                # test that we can get an interval for the same attribute for the bootstrap as the original,\n                # with the same shape for the lower and upper bounds\n                lower, upper = bs.predict_interval(x)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.predict(x)), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n                # test that we can do the same thing once we provide percentile bounds\n                lower, upper = bs.predict_interval(x, lower=10, upper=90)\n                for bound in [lower, upper]:\n                    self.assertEqual(np.shape(est.predict(x)), np.shape(bound))\n\n                # test that the lower and upper bounds differ\n                assert (lower <= upper).all()\n                assert (lower < upper).any()\n\n    def test_internal(self):\n        \"\"\"Test that the internal use of bootstrap within an estimator works.\"\"\"\n        x = np.random.normal(size=(1000, 2))\n        t = np.random.normal(size=(1000, 1))\n        t2 = np.random.normal(size=(1000, 1))\n        y = x[:, 0:1] * 0.5 + t + np.random.normal(size=(1000, 1))\n\n        est = LinearDML(model_y=LinearRegression(), model_t=LinearRegression())\n        est.fit(y, t, X=x, inference='bootstrap')\n\n        # test that we can get an interval for the same attribute for the bootstrap as the original,\n        # with the same shape for the lower and upper bounds\n        eff = est.effect(x, T0=t, T1=t2)\n\n        lower, upper = est.effect_interval(x, T0=t, T1=t2)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(eff), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # test that the estimated effect is usually within the bounds\n        assert np.mean(np.logical_and(lower <= eff, eff <= upper)) >= 0.9\n\n        # test that we can do the same thing once we provide alpha explicitly\n        lower, upper = est.effect_interval(x, T0=t, T1=t2, alpha=0.2)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(eff), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # test that the estimated effect is usually within the bounds\n        assert np.mean(np.logical_and(lower <= eff, eff <= upper)) >= 0.8\n\n    def test_internal_options(self):\n        \"\"\"Test that the internal use of bootstrap within an estimator using custom options works.\"\"\"\n        x = np.random.normal(size=(1000, 2))\n        z = np.random.normal(size=(1000, 1))\n        t = np.random.normal(size=(1000, 1))\n        t2 = np.random.normal(size=(1000, 1))\n        y = x[:, 0:1] * 0.5 + t + np.random.normal(size=(1000, 1))\n\n        opts = BootstrapInference(50, 2)\n\n        est = SieveTSLS(t_featurizer=PolynomialFeatures(2),\n                        x_featurizer=PolynomialFeatures(2),\n                        z_featurizer=PolynomialFeatures(2),\n                        dt_featurizer=None)\n        est.fit(y, t, X=x, W=None, Z=z, inference=opts)\n\n        # test that we can get an interval for the same attribute for the bootstrap as the original,\n        # with the same shape for the lower and upper bounds\n        eff = est.effect(x, T0=t, T1=t2)\n\n        lower, upper = est.effect_interval(x, T0=t, T1=t2)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(eff), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # TODO: test that the estimated effect is usually within the bounds\n        #       and that the true effect is also usually within the bounds\n\n        # test that we can do the same thing once we provide percentile bounds\n        lower, upper = est.effect_interval(x, T0=t, T1=t2, alpha=0.2)\n        for bound in [lower, upper]:\n            self.assertEqual(np.shape(eff), np.shape(bound))\n\n        # test that the lower and upper bounds differ\n        assert (lower <= upper).all()\n        assert (lower < upper).any()\n\n        # TODO: test that the estimated effect is usually within the bounds\n        #       and that the true effect is also usually within the bounds\n\n    def test_stratify(self):\n        \"\"\"Test that we can properly stratify by treatment.\"\"\"\n        T = [1, 0, 1, 2, 0, 2]\n        Y = [1, 2, 3, 4, 5, 6]\n        X = np.array([1, 1, 2, 2, 1, 2]).reshape(-1, 1)\n        est = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(), discrete_treatment=True)\n        inference = BootstrapInference(n_bootstrap_samples=5, n_jobs=-1, verbose=0)\n        est.fit(Y, T, inference=inference)\n        est.const_marginal_effect_interval()\n\n        est.fit(Y, T, X=X, inference=inference)\n        est.const_marginal_effect_interval(X)\n\n        est.fit(Y, np.asarray(T).reshape(-1, 1), inference=inference)  # test stratifying 2D treatment\n        est.const_marginal_effect_interval()\n\n    def test_stratify_orthoiv(self):\n        \"\"\"Test that we can properly stratify by treatment/instrument pair.\"\"\"\n        T = [1, 0, 1, 1, 0, 0, 1, 0]\n        Z = [1, 0, 0, 1, 0, 1, 0, 1]\n        Y = [1, 2, 3, 4, 5, 6, 7, 8]\n        X = np.array([1, 1, 2, 2, 1, 2, 1, 2]).reshape(-1, 1)\n        est = LinearIntentToTreatDRIV(model_y_xw=LinearRegression(), model_t_xwz=LogisticRegression(),\n                                      flexible_model_effect=LinearRegression(), cv=2)\n        inference = BootstrapInference(n_bootstrap_samples=20, n_jobs=-1, verbose=3)\n        est.fit(Y, T, Z=Z, X=X, inference=inference)\n        est.const_marginal_effect_interval(X)\n\n    def test_all_kinds(self):\n        T = [1, 0, 1, 2, 0, 2] * 5\n        Y = [1, 2, 3, 4, 5, 6] * 5\n        X = np.array([1, 1, 2, 2, 1, 2] * 5).reshape(-1, 1)\n        est = LinearDML(cv=2)\n        for kind in ['percentile', 'pivot', 'normal']:\n            with self.subTest(kind=kind):\n                inference = BootstrapInference(n_bootstrap_samples=5, n_jobs=-1, verbose=0, bootstrap_type=kind)\n                est.fit(Y, T, inference=inference)\n                i = est.const_marginal_effect_interval()\n                inf = est.const_marginal_effect_inference()\n                assert i[0].shape == i[1].shape == inf.point_estimate.shape\n                assert np.allclose(i[0], inf.conf_int()[0])\n                assert np.allclose(i[1], inf.conf_int()[1])\n\n                est.fit(Y, T, X=X, inference=inference)\n                i = est.const_marginal_effect_interval(X)\n                inf = est.const_marginal_effect_inference(X)\n                assert i[0].shape == i[1].shape == inf.point_estimate.shape\n                assert np.allclose(i[0], inf.conf_int()[0])\n                assert np.allclose(i[1], inf.conf_int()[1])\n\n                i = est.coef__interval()\n                inf = est.coef__inference()\n                assert i[0].shape == i[1].shape == inf.point_estimate.shape\n                assert np.allclose(i[0], inf.conf_int()[0])\n                assert np.allclose(i[1], inf.conf_int()[1])\n\n                i = est.effect_interval(X)\n                inf = est.effect_inference(X)\n                assert i[0].shape == i[1].shape == inf.point_estimate.shape\n                assert np.allclose(i[0], inf.conf_int()[0])\n                assert np.allclose(i[1], inf.conf_int()[1])\n"
  },
  {
    "path": "econml/tests/test_cate_interpreter.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport unittest\nimport pytest\nfrom econml.cate_interpreter import SingleTreeCateInterpreter, SingleTreePolicyInterpreter\nfrom econml.dml import LinearDML\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\n\ngraphviz_works = True\ntry:\n    from graphviz import Graph\n    g = Graph()\n    g.render()\n    import matplotlib\n    matplotlib.use('Agg')\nexcept Exception:\n    graphviz_works = False\n\n\n@pytest.mark.skipif(not graphviz_works, reason=\"graphviz must be installed to run CATE interpreter tests\")\nclass TestCateInterpreter(unittest.TestCase):\n\n    # can't easily test output, but can at least test that we can all export_graphviz, render, and plot\n    def test_can_use_interpreters(self):\n        n = 100\n        for t_shape in [(n,), (n, 1)]:\n            for y_shape in [(n,), (n, 1)]:\n                X = np.random.normal(size=(n, 4))\n                T = np.random.binomial(1, 0.5, size=t_shape)\n                Y = (T.flatten() * (2 * (X[:, 0] > 0) - 1)).reshape(y_shape)\n                est = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(), discrete_treatment=True)\n                est.fit(Y, T, X=X)\n                for intrp in [SingleTreeCateInterpreter(), SingleTreePolicyInterpreter()]:\n                    with self.subTest(t_shape=t_shape, y_shape=y_shape, intrp=type(intrp).__name__):\n                        with self.assertRaises(Exception):\n                            # prior to calling interpret, can't plot, render, etc.\n                            intrp.plot()\n                        intrp.interpret(est, X)\n                        intrp.plot()\n                        intrp.render('tmp.pdf', view=False)\n                        intrp.export_graphviz()\n\n    @staticmethod\n    def coinflip(p_true=0.5):\n        return np.random.random_sample() < p_true\n\n    def test_cate_uncertainty_needs_inference(self):\n        n = 100\n        X = np.random.normal(size=(n, 4))\n        T = np.random.binomial(1, 0.5, size=(n,))\n        Y = (2 * (X[:, 0] > 0) - 1) * T.flatten()\n        est = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(), discrete_treatment=True)\n        est.fit(Y, T, X=X, inference=None)\n\n        # can interpret without uncertainty\n        intrp = SingleTreeCateInterpreter()\n        intrp.interpret(est, X)\n\n        intrp = SingleTreeCateInterpreter(include_model_uncertainty=True)\n        with self.assertRaises(Exception):\n            # can't interpret with uncertainty if inference wasn't used during fit\n            intrp.interpret(est, X)\n\n        # can interpret with uncertainty if we refit\n        est.fit(Y, T, X=X)\n        intrp.interpret(est, X)\n\n    def test_can_assign_treatment(self):\n        n = 100\n        X = np.random.normal(size=(n, 4))\n        T = np.random.binomial(1, 0.5, size=(n,))\n        Y = (2 * (X[:, 0] > 0) - 1) * T.flatten()\n        est = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(), discrete_treatment=True)\n        est.fit(Y, T, X=X)\n\n        # can interpret without uncertainty\n        intrp = SingleTreePolicyInterpreter()\n        with self.assertRaises(Exception):\n            # can't treat before interpreting\n            intrp.treat(X)\n\n        intrp.interpret(est, X)\n        T_policy = intrp.treat(X)\n        assert T.shape == T_policy.shape\n        intrp.interpret(est, X, sample_treatment_costs=np.ones((T.shape[0], 1)))\n        T_policy = intrp.treat(X)\n        assert T.shape == T_policy.shape\n        with np.testing.assert_raises(ValueError):\n            intrp.interpret(est, X, sample_treatment_costs=np.ones((T.shape[0], 2)))\n\n    def test_random_cate_settings(self):\n        \"\"\"Verify that we can call methods on the CATE interpreter with various combinations of inputs.\"\"\"\n        n = 100\n        for _ in range(100):\n            t_shape = (n,) if self.coinflip() else (n, 1)\n            y_shape = (n,) if self.coinflip() else (n, 1)\n            discrete_t = self.coinflip()\n            X = np.random.normal(size=(n, 4))\n            X2 = np.random.normal(size=(10, 4))\n            T = np.random.binomial(2, 0.5, size=t_shape) if discrete_t else np.random.normal(size=t_shape)\n            Y = ((T.flatten() == 1) * (2 * (X[:, 0] > 0) - 1) +\n                 (T.flatten() == 2) * (2 * (X[:, 1] > 0) - 1)).reshape(y_shape)\n\n            if self.coinflip():\n                y_shape = (n, 2)\n                Y = np.tile(Y.reshape((-1, 1)), (1, 2))\n\n            est = LinearDML(model_y=LinearRegression(),\n                            model_t=LogisticRegression() if discrete_t else LinearRegression(),\n                            discrete_treatment=discrete_t)\n\n            fit_kwargs = {}\n            cate_init_kwargs = {}\n            policy_init_kwargs = {}\n            intrp_kwargs = {}\n            policy_intrp_kwargs = {}\n            common_kwargs = {}\n            plot_kwargs = {}\n            render_kwargs = {}\n            export_kwargs = {}\n\n            if self.coinflip():\n                cate_init_kwargs.update(include_model_uncertainty=True)\n                policy_init_kwargs.update(risk_level=0.1)\n            else:\n                fit_kwargs.update(inference=None)\n\n            if self.coinflip():\n                cate_init_kwargs.update(uncertainty_level=0.01)\n\n            if self.coinflip():\n                policy_init_kwargs.update(risk_seeking=True)\n\n            if self.coinflip(1 / 3):\n                policy_intrp_kwargs.update(sample_treatment_costs=0.1)\n            elif self.coinflip():\n                if discrete_t:\n                    policy_intrp_kwargs.update(sample_treatment_costs=np.random.normal(size=(10, 2)).tolist())\n                else:\n                    if self.coinflip():\n                        policy_intrp_kwargs.update(sample_treatment_costs=np.random.normal(size=(10, 1)).tolist())\n                    else:\n                        policy_intrp_kwargs.update(sample_treatment_costs=np.random.normal(size=(10,)).tolist())\n\n            if self.coinflip():\n                common_kwargs.update(feature_names=['A', 'B', 'C', 'D'])\n\n            if self.coinflip():\n                common_kwargs.update(filled=False)\n\n            if self.coinflip():\n                common_kwargs.update(rounded=False)\n\n            if self.coinflip():\n                common_kwargs.update(precision=1)\n\n            if self.coinflip():\n                render_kwargs.update(rotate=True)\n                export_kwargs.update(rotate=True)\n\n            if self.coinflip():\n                render_kwargs.update(leaves_parallel=False)\n                export_kwargs.update(leaves_parallel=False)\n                if discrete_t:\n                    render_kwargs.update(treatment_names=['control gp', 'treated gp', 'more gp'])\n                    export_kwargs.update(treatment_names=['control gp', 'treated gp', 'more gp'])\n                else:\n                    render_kwargs.update(treatment_names=['control gp', 'treated gp'])\n                    export_kwargs.update(treatment_names=['control gp', 'treated gp'])\n\n            if self.coinflip():\n                render_kwargs.update(format='png')\n\n            if self.coinflip():\n                export_kwargs.update(out_file='out')\n\n            if self.coinflip(0.95):  # don't launch files most of the time\n                render_kwargs.update(view=False)\n\n            with self.subTest(t_shape=t_shape,\n                              y_shape=y_shape,\n                              discrete_t=discrete_t,\n                              fit_kwargs=fit_kwargs,\n                              cate_init_kwargs=cate_init_kwargs,\n                              policy_init_kwargs=policy_init_kwargs,\n                              policy_intrp_kwargs=policy_intrp_kwargs,\n                              intrp_kwargs=intrp_kwargs,\n                              common_kwargs=common_kwargs,\n                              plot_kwargs=plot_kwargs,\n                              render_kwargs=render_kwargs,\n                              export_kwargs=export_kwargs):\n                plot_kwargs.update(common_kwargs)\n                render_kwargs.update(common_kwargs)\n                export_kwargs.update(common_kwargs)\n                policy_intrp_kwargs.update(intrp_kwargs)\n\n                est.fit(Y, T, X=X, **fit_kwargs)\n\n                intrp = SingleTreeCateInterpreter(**cate_init_kwargs)\n                intrp.interpret(est, X2, **intrp_kwargs)\n                intrp.plot(**plot_kwargs)\n                intrp.render('outfile', **render_kwargs)\n                intrp.export_graphviz(**export_kwargs)\n\n                intrp = SingleTreePolicyInterpreter(**policy_init_kwargs)\n                try:\n                    intrp.interpret(est, X2, **policy_intrp_kwargs)\n                    intrp.plot(**plot_kwargs)\n                    intrp.render('outfile', **render_kwargs)\n                    intrp.export_graphviz(**export_kwargs)\n                except AttributeError as e:\n                    assert str(e).find(\"samples should\") >= 0\n"
  },
  {
    "path": "econml/tests/test_causal_analysis.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\n\nfrom contextlib import ExitStack\nimport itertools\nimport numpy as np\nimport pandas as pd\nimport pytest\n\nfrom econml.solutions.causal_analysis import CausalAnalysis\nfrom econml.solutions.causal_analysis._causal_analysis import _CausalInsightsConstants\n\n\ndef assert_less_close(arr1, arr2):\n    assert np.all(np.logical_or(arr1 <= arr2, np.isclose(arr1, arr2)))\n\n\n@pytest.mark.serial\nclass TestCausalAnalysis(unittest.TestCase):\n\n    def test_basic_array(self):\n        for d_y in [(), (1,)]:\n            for classification in [False, True]:\n                y = np.random.choice([0, 1], size=(500,) + d_y)\n                X = np.hstack((np.random.normal(size=(500, 2)),\n                               np.random.choice([0, 1], size=(500, 1)),\n                               np.random.choice([0, 1, 2], size=(500, 1))))\n                inds = [0, 1, 2, 3]\n                cats = [2, 3]\n                hinds = [0, 3]\n                ca = CausalAnalysis(inds, cats, hinds, classification=classification)\n                ca.fit(X, y)\n                glo = ca.global_causal_effect()\n                coh = ca.cohort_causal_effect(X[:2])\n                loc = ca.local_causal_effect(X[:2])\n\n                # global and cohort data should have exactly the same structure, but different values\n                assert glo.index.equals(coh.index)\n\n                # local index should have as many times entries as global as there were rows passed in\n                assert len(loc.index) == 2 * len(glo.index)\n\n                assert glo.index.names == ['feature', 'feature_value']\n                assert loc.index.names == ['sample'] + glo.index.names\n\n                glo_dict = ca._global_causal_effect_dict()\n                glo_dict2 = ca._global_causal_effect_dict(row_wise=True)\n\n                coh_dict = ca._cohort_causal_effect_dict(X[:2])\n                coh_dict2 = ca._cohort_causal_effect_dict(X[:2], row_wise=True)\n\n                loc_dict = ca._local_causal_effect_dict(X[:2])\n                loc_dict2 = ca._local_causal_effect_dict(X[:2], row_wise=True)\n\n                glo_point_est = np.array(glo_dict[_CausalInsightsConstants.PointEstimateKey])\n                coh_point_est = np.array(coh_dict[_CausalInsightsConstants.PointEstimateKey])\n                loc_point_est = np.array(loc_dict[_CausalInsightsConstants.PointEstimateKey])\n\n                ca._heterogeneity_tree_output(X, 1)\n                ca._heterogeneity_tree_output(X, 3)\n\n                # continuous treatments have typical treatment values equal to\n                # the mean of the absolute value of non-zero entries\n                np.testing.assert_allclose(ca.typical_treatment_value(0), np.mean(np.abs(X[:, 0])))\n                np.testing.assert_allclose(ca.typical_treatment_value(1), np.mean(np.abs(X[:, 1])))\n                # discrete treatments have typical treatment value 1\n                assert ca.typical_treatment_value(2) == ca.typical_treatment_value(3) == 1\n\n                # Make sure we handle continuous, binary, and multi-class treatments\n                # For multiple discrete treatments, one \"always treat\" value per non-default treatment\n                for (idx, length) in [(0, 1), (1, 1), (2, 1), (3, 2)]:\n                    pto = ca._policy_tree_output(X, idx)\n                    policy_val = pto.policy_value\n                    always_trt = pto.always_treat\n                    assert isinstance(pto.control_name, str)\n                    assert isinstance(always_trt, dict)\n                    assert np.array(policy_val).shape == ()\n                    assert len(always_trt) == length\n                    for val in always_trt.values():\n                        assert np.array(val).shape == ()\n\n                    # policy value should exceed always treating with any treatment\n                    assert_less_close(np.array(list(always_trt.values())), policy_val)\n\n                    _ind_pol = ca.individualized_policy(X, inds[idx])\n\n                # global shape is (d_y, sum(d_t))\n                assert glo_point_est.shape == coh_point_est.shape == (1, 5)\n                assert loc_point_est.shape == (2,) + glo_point_est.shape\n\n                # global and cohort row-wise dicts have d_y * d_t entries\n                assert len(\n                    glo_dict2[_CausalInsightsConstants.RowData]) == len(\n                    coh_dict2[_CausalInsightsConstants.RowData]) == 5\n                # local dictionary is flattened to n_rows * d_y * d_t\n                assert len(loc_dict2[_CausalInsightsConstants.RowData]) == 10\n\n                if not classification:\n                    # ExitStack can be used as a \"do nothing\" ContextManager\n                    cm = ExitStack()\n                else:\n                    cm = self.assertRaises(Exception)\n                with cm:\n                    inf = ca.whatif(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                    assert np.shape(inf.point_estimate) == (2,)\n                    inf = ca.whatif(X[:2], np.ones(shape=(2,)), 2, y[:2])\n                    assert np.shape(inf.point_estimate) == (2,)\n\n                    ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                    ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2], row_wise=True)\n\n                # features; for categoricals they should appear #cats-1 times each\n                fts = ['x0', 'x1', 'x2', 'x3', 'x3']\n\n                for i in range(len(fts)):\n                    assert fts[i] == glo.index[i][0] == loc.index[i][1] == loc.index[len(fts) + i][1]\n\n                badargs = [\n                    (inds, cats, [4]),  # hinds out of range\n                    (inds, cats, [\"test\"])  # hinds out of range\n                ]\n\n                for args in badargs:\n                    with self.assertRaises(Exception):\n                        ca = CausalAnalysis(*args)\n                        ca.fit(X, y)\n\n    def test_basic_pandas(self):\n        for classification in [False, True]:\n            for category in [False, True]:\n                y = pd.Series(np.random.choice([0, 1], size=(500,)))\n                X = pd.DataFrame({'a': np.random.normal(size=500),\n                                  'b': np.random.normal(size=500),\n                                  'c': np.random.choice([0, 1], size=500),\n                                  'd': np.random.choice(['a', 'b', 'c'], size=500)})\n\n                if category:\n                    X['c'] = X['c'].astype('category')\n                    X['d'] = X['d'].astype('category')\n\n                n_inds = [0, 1, 2, 3]\n                t_inds = ['a', 'b', 'c', 'd']\n                n_cats = [2, 3]\n                t_cats = ['c', 'd']\n                n_hinds = [0, 3]\n                t_hinds = ['a', 'd']\n                for (inds, cats, hinds) in [(n_inds, n_cats, n_hinds), (t_inds, t_cats, t_hinds)]:\n                    ca = CausalAnalysis(inds, cats, hinds, classification=classification)\n                    ca.fit(X, y)\n                    glo = ca.global_causal_effect()\n                    coh = ca.cohort_causal_effect(X[:2])\n                    loc = ca.local_causal_effect(X[:2])\n\n                    # global and cohort data should have exactly the same structure, but different values\n                    assert glo.index.equals(coh.index)\n\n                    # local index should have as many times entries as global as there were rows passed in\n                    assert len(loc.index) == 2 * len(glo.index)\n\n                    assert glo.index.names == ['feature', 'feature_value']\n                    assert loc.index.names == ['sample'] + glo.index.names\n\n                    # features; for categoricals they should appear #cats-1 times each\n                    fts = ['a', 'b', 'c', 'd', 'd']\n\n                    for i in range(len(fts)):\n                        assert fts[i] == glo.index[i][0] == loc.index[i][1] == loc.index[len(fts) + i][1]\n\n                    glo_dict = ca._global_causal_effect_dict()\n                    glo_dict2 = ca._global_causal_effect_dict(row_wise=True)\n\n                    coh_dict = ca._cohort_causal_effect_dict(X[:2])\n                    coh_dict2 = ca._cohort_causal_effect_dict(X[:2], row_wise=True)\n\n                    loc_dict = ca._local_causal_effect_dict(X[:2])\n                    loc_dict2 = ca._local_causal_effect_dict(X[:2], row_wise=True)\n\n                    glo_point_est = np.array(glo_dict[_CausalInsightsConstants.PointEstimateKey])\n                    coh_point_est = np.array(coh_dict[_CausalInsightsConstants.PointEstimateKey])\n                    loc_point_est = np.array(loc_dict[_CausalInsightsConstants.PointEstimateKey])\n\n                    # global shape is (d_y, sum(d_t))\n                    assert glo_point_est.shape == coh_point_est.shape == (1, 5)\n                    assert loc_point_est.shape == (2,) + glo_point_est.shape\n\n                    # global and cohort row-wise dicts have d_y * d_t entries\n                    assert len(\n                        glo_dict2[_CausalInsightsConstants.RowData]) == len(\n                        coh_dict2[_CausalInsightsConstants.RowData]) == 5\n                    # local dictionary is flattened to n_rows * d_y * d_t\n                    assert len(loc_dict2[_CausalInsightsConstants.RowData]) == 10\n\n                    pto = ca._policy_tree_output(X, inds[1])\n                    ca._heterogeneity_tree_output(X, inds[1])\n                    ca._heterogeneity_tree_output(X, inds[3])\n\n                    # continuous treatments have typical treatment values equal to\n                    # the mean of the absolute value of non-zero entries\n                    np.testing.assert_allclose(ca.typical_treatment_value(inds[0]), np.mean(np.abs(X['a'])))\n                    np.testing.assert_allclose(ca.typical_treatment_value(inds[1]), np.mean(np.abs(X['b'])))\n                    # discrete treatments have typical treatment value 1\n                    assert ca.typical_treatment_value(inds[2]) == ca.typical_treatment_value(inds[3]) == 1\n\n                    # Make sure we handle continuous, binary, and multi-class treatments\n                    # For multiple discrete treatments, one \"always treat\" value per non-default treatment\n                    for (idx, length) in [(0, 1), (1, 1), (2, 1), (3, 2)]:\n                        pto = ca._policy_tree_output(X, inds[idx])\n                        policy_val = pto.policy_value\n                        always_trt = pto.always_treat\n                        assert isinstance(pto.control_name, str)\n                        assert isinstance(always_trt, dict)\n                        assert np.array(policy_val).shape == ()\n                        assert len(always_trt) == length\n                        for val in always_trt.values():\n                            assert np.array(val).shape == ()\n\n                        # policy value should exceed always treating with any treatment\n                        assert_less_close(np.array(list(always_trt.values())), policy_val)\n\n                        _ind_pol = ca.individualized_policy(X, inds[idx])\n\n                    if not classification:\n                        # ExitStack can be used as a \"do nothing\" ContextManager\n                        cm = ExitStack()\n                    else:\n                        cm = self.assertRaises(Exception)\n                    with cm:\n                        inf = ca.whatif(X[:2], np.ones(shape=(2,)), inds[1], y[:2])\n                        assert np.shape(inf.point_estimate) == np.shape(y[:2])\n                        inf = ca.whatif(X[:2], np.ones(shape=(2,)), inds[2], y[:2])\n                        assert np.shape(inf.point_estimate) == np.shape(y[:2])\n\n                        ca._whatif_dict(X[:2], np.ones(shape=(2,)), inds[1], y[:2])\n                        ca._whatif_dict(X[:2], np.ones(shape=(2,)), inds[1], y[:2], row_wise=True)\n\n                badargs = [\n                    (n_inds, n_cats, [4]),  # hinds out of range\n                    (n_inds, n_cats, [\"test\"])  # hinds out of range\n                ]\n\n                for args in badargs:\n                    with self.assertRaises(Exception):\n                        ca = CausalAnalysis(*args)\n                        ca.fit(X, y)\n\n    def test_automl_first_stage(self):\n        d_y = (1,)\n        for classification in [False, True]:\n            y = np.random.choice([0, 1], size=(500,) + d_y)\n            X = np.hstack((np.random.normal(size=(500, 2)),\n                           np.random.choice([0, 1], size=(500, 1)),\n                           np.random.choice([0, 1, 2], size=(500, 1))))\n            inds = [0, 1, 2, 3]\n            cats = [2, 3]\n            hinds = [0, 3]\n            ca = CausalAnalysis(inds, cats, hinds, classification=classification, nuisance_models='automl')\n            ca.fit(X, y)\n            glo = ca.global_causal_effect()\n            coh = ca.cohort_causal_effect(X[:2])\n            loc = ca.local_causal_effect(X[:2])\n\n            # global and cohort data should have exactly the same structure, but different values\n            assert glo.index.equals(coh.index)\n\n            # local index should have as many times entries as global as there were rows passed in\n            assert len(loc.index) == 2 * len(glo.index)\n\n            assert glo.index.names == ['feature', 'feature_value']\n            assert loc.index.names == ['sample'] + glo.index.names\n\n            glo_dict = ca._global_causal_effect_dict()\n            glo_dict2 = ca._global_causal_effect_dict(row_wise=True)\n\n            coh_dict = ca._cohort_causal_effect_dict(X[:2])\n            coh_dict2 = ca._cohort_causal_effect_dict(X[:2], row_wise=True)\n\n            loc_dict = ca._local_causal_effect_dict(X[:2])\n            loc_dict2 = ca._local_causal_effect_dict(X[:2], row_wise=True)\n\n            glo_point_est = np.array(glo_dict[_CausalInsightsConstants.PointEstimateKey])\n            coh_point_est = np.array(coh_dict[_CausalInsightsConstants.PointEstimateKey])\n            loc_point_est = np.array(loc_dict[_CausalInsightsConstants.PointEstimateKey])\n\n            ca._policy_tree_output(X, 1)\n            ca._heterogeneity_tree_output(X, 1)\n            ca._heterogeneity_tree_output(X, 3)\n\n            # Make sure we handle continuous, binary, and multi-class treatments\n            # For multiple discrete treatments, one \"always treat\" value per non-default treatment\n            for (idx, length) in [(0, 1), (1, 1), (2, 1), (3, 2)]:\n                pto = ca._policy_tree_output(X, idx)\n                policy_val = pto.policy_value\n                always_trt = pto.always_treat\n                assert isinstance(pto.control_name, str)\n                assert isinstance(always_trt, dict)\n                assert np.array(policy_val).shape == ()\n                assert len(always_trt) == length\n                for val in always_trt.values():\n                    assert np.array(val).shape == ()\n\n                # policy value should exceed always treating with any treatment\n                assert_less_close(np.array(list(always_trt.values())), policy_val)\n\n                _ind_pol = ca.individualized_policy(X, inds[idx])\n\n            # global shape is (d_y, sum(d_t))\n            assert glo_point_est.shape == coh_point_est.shape == (1, 5)\n            assert loc_point_est.shape == (2,) + glo_point_est.shape\n\n            # global and cohort row-wise dicts have d_y * d_t entries\n            assert len(\n                glo_dict2[_CausalInsightsConstants.RowData]) == len(\n                coh_dict2[_CausalInsightsConstants.RowData]) == 5\n            # local dictionary is flattened to n_rows * d_y * d_t\n            assert len(loc_dict2[_CausalInsightsConstants.RowData]) == 10\n\n            if not classification:\n                # ExitStack can be used as a \"do nothing\" ContextManager\n                cm = ExitStack()\n            else:\n                cm = self.assertRaises(Exception)\n            with cm:\n                inf = ca.whatif(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                assert np.shape(inf.point_estimate) == (2,)\n                inf = ca.whatif(X[:2], np.ones(shape=(2,)), 2, y[:2])\n                assert np.shape(inf.point_estimate) == (2,)\n\n                ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2], row_wise=True)\n\n            # features; for categoricals they should appear #cats-1 times each\n            fts = ['x0', 'x1', 'x2', 'x3', 'x3']\n\n            for i in range(len(fts)):\n                assert fts[i] == glo.index[i][0] == loc.index[i][1] == loc.index[len(fts) + i][1]\n\n            badargs = [\n                (inds, cats, [4]),  # hinds out of range\n                (inds, cats, [\"test\"])  # hinds out of range\n            ]\n\n            for args in badargs:\n                with self.assertRaises(Exception):\n                    ca = CausalAnalysis(*args)\n                    ca.fit(X, y)\n\n    def test_one_feature(self):\n        # make sure we don't run into problems dropping every index\n        y = pd.Series(np.random.choice([0, 1], size=(500,)))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c'], size=500)})\n        inds = ['a']\n        cats = ['c', 'd']\n        hinds = ['a', 'd']\n\n        ca = CausalAnalysis(inds, cats, hinds, classification=False)\n        ca.fit(X, y)\n        glo = ca.global_causal_effect()\n        coh = ca.cohort_causal_effect(X[:2])\n        loc = ca.local_causal_effect(X[:2])\n\n        # global and cohort data should have exactly the same structure, but different values\n        assert glo.index.equals(coh.index)\n\n        # local index should have as many times entries as global as there were rows passed in\n        assert len(loc.index) == 2 * len(glo.index)\n\n        assert glo.index.names == ['feature']\n        assert loc.index.names == ['sample']\n\n        glo_dict = ca._global_causal_effect_dict()\n        glo_dict2 = ca._global_causal_effect_dict(row_wise=True)\n\n        coh_dict = ca._cohort_causal_effect_dict(X[:2])\n        coh_dict2 = ca._cohort_causal_effect_dict(X[:2], row_wise=True)\n\n        loc_dict = ca._local_causal_effect_dict(X[:2])\n        loc_dict2 = ca._local_causal_effect_dict(X[:2], row_wise=True)\n\n        glo_point_est = np.array(glo_dict[_CausalInsightsConstants.PointEstimateKey])\n        coh_point_est = np.array(coh_dict[_CausalInsightsConstants.PointEstimateKey])\n        loc_point_est = np.array(loc_dict[_CausalInsightsConstants.PointEstimateKey])\n\n        # global shape is (d_y, sum(d_t))\n        assert glo_point_est.shape == coh_point_est.shape == (1, 1)\n        assert loc_point_est.shape == (2,) + glo_point_est.shape\n\n        glo2 = ca.global_causal_effect(keep_all_levels=True)\n        coh2 = ca.cohort_causal_effect(X[:2], keep_all_levels=True)\n        loc2 = ca.local_causal_effect(X[:2], keep_all_levels=True)\n        assert ({ind.name for ind in glo2.index.levels} ==\n                {ind.name for ind in coh2.index.levels} ==\n                {\"outcome\", \"feature\", \"feature_value\"})\n        assert {ind.name for ind in loc2.index.levels} == {\"sample\", \"outcome\", \"feature\", \"feature_value\"}\n\n        # global and cohort row-wise dicts have d_y * d_t entries\n        assert len(\n            glo_dict2[_CausalInsightsConstants.RowData]) == len(\n            coh_dict2[_CausalInsightsConstants.RowData]) == 1\n        # local dictionary is flattened to n_rows * d_y * d_t\n        assert len(loc_dict2[_CausalInsightsConstants.RowData]) == 2\n\n        ca._policy_tree_output(X, inds[0])\n        ca._heterogeneity_tree_output(X, inds[0])\n\n    def test_final_models(self):\n        d_y = (1,)\n        y = np.random.choice([0, 1], size=(500,) + d_y)\n        X = np.hstack((np.random.normal(size=(500, 2)),\n                       np.random.choice([0, 1], size=(500, 1)),\n                       np.random.choice([0, 1, 2], size=(500, 1))))\n        inds = [0, 1, 2, 3]\n        cats = [2, 3]\n        hinds = [0, 3]\n        for h_model in ['forest', 'linear']:\n            for classification in [False, True]:\n                ca = CausalAnalysis(inds, cats, hinds, classification=classification, heterogeneity_model=h_model)\n                ca.fit(X, y)\n                ca.global_causal_effect()\n                ca.cohort_causal_effect(X[:2])\n                ca.local_causal_effect(X[:2])\n                ca._global_causal_effect_dict()\n                ca._cohort_causal_effect_dict(X[:2])\n                ca._local_causal_effect_dict(X[:2])\n\n                ca._policy_tree_output(X, 1)\n                ca._heterogeneity_tree_output(X, 1)\n                ca._heterogeneity_tree_output(X, 3)\n\n                # Make sure we handle continuous, binary, and multi-class treatments\n                # For multiple discrete treatments, one \"always treat\" value per non-default treatment\n                for (idx, length) in [(0, 1), (1, 1), (2, 1), (3, 2)]:\n                    pto = ca._policy_tree_output(X, idx)\n                    policy_val = pto.policy_value\n                    always_trt = pto.always_treat\n                    assert isinstance(pto.control_name, str)\n                    assert isinstance(always_trt, dict)\n                    assert np.array(policy_val).shape == ()\n                    assert len(always_trt) == length\n                    for val in always_trt.values():\n                        assert np.array(val).shape == ()\n\n                    # policy value should exceed always treating with any treatment\n                    assert_less_close(np.array(list(always_trt.values())), policy_val)\n\n                    _ind_pol = ca.individualized_policy(X, inds[idx])\n\n                if not classification:\n                    # ExitStack can be used as a \"do nothing\" ContextManager\n                    cm = ExitStack()\n                else:\n                    cm = self.assertRaises(Exception)\n                with cm:\n                    ca.whatif(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                    ca.whatif(X[:2], np.ones(shape=(2,)), 2, y[:2])\n                    ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2])\n                    ca._whatif_dict(X[:2], np.ones(shape=(2,)), 1, y[:2], row_wise=True)\n\n        with self.assertRaises(AssertionError):\n            ca = CausalAnalysis(inds, cats, hinds, classification=classification, heterogeneity_model='other')\n            ca.fit(X, y)\n\n    def test_forest_with_pandas(self):\n        y = pd.Series(np.random.choice([0, 1], size=(500,)))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c'], size=500)})\n        inds = ['a', 'b', 'c', 'd']\n        cats = ['c', 'd']\n        hinds = ['a', 'd']\n\n        ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model='forest')\n        ca.fit(X, y)\n        glo = ca.global_causal_effect()\n        coh = ca.cohort_causal_effect(X[:2])\n        loc = ca.local_causal_effect(X[:2])\n\n        # global and cohort data should have exactly the same structure, but different values\n        assert glo.index.equals(coh.index)\n\n        # local index should have as many times entries as global as there were rows passed in\n        assert len(loc.index) == 2 * len(glo.index)\n\n        assert glo.index.names == ['feature', 'feature_value']\n        assert loc.index.names == ['sample'] + glo.index.names\n\n        # features; for categoricals they should appear #cats-1 times each\n        fts = ['a', 'b', 'c', 'd', 'd']\n\n        for i in range(len(fts)):\n            assert fts[i] == glo.index[i][0] == loc.index[i][1] == loc.index[len(fts) + i][1]\n\n        glo_dict = ca._global_causal_effect_dict()\n        glo_dict2 = ca._global_causal_effect_dict(row_wise=True)\n\n        coh_dict = ca._cohort_causal_effect_dict(X[:2])\n        coh_dict2 = ca._cohort_causal_effect_dict(X[:2], row_wise=True)\n\n        loc_dict = ca._local_causal_effect_dict(X[:2])\n        loc_dict2 = ca._local_causal_effect_dict(X[:2], row_wise=True)\n\n        glo_point_est = np.array(glo_dict[_CausalInsightsConstants.PointEstimateKey])\n        coh_point_est = np.array(coh_dict[_CausalInsightsConstants.PointEstimateKey])\n        loc_point_est = np.array(loc_dict[_CausalInsightsConstants.PointEstimateKey])\n\n        # global shape is (d_y, sum(d_t))\n        assert glo_point_est.shape == coh_point_est.shape == (1, 5)\n        assert loc_point_est.shape == (2,) + glo_point_est.shape\n\n        # global and cohort row-wise dicts have d_y * d_t entries\n        assert len(\n            glo_dict2[_CausalInsightsConstants.RowData]) == len(\n            coh_dict2[_CausalInsightsConstants.RowData]) == 5\n        # local dictionary is flattened to n_rows * d_y * d_t\n        assert len(loc_dict2[_CausalInsightsConstants.RowData]) == 10\n\n        ca._policy_tree_output(X, inds[1])\n        ca._heterogeneity_tree_output(X, inds[1])\n        ca._heterogeneity_tree_output(X, inds[3])\n\n        # Make sure we handle continuous, binary, and multi-class treatments\n        # For multiple discrete treatments, one \"always treat\" value per non-default treatment\n        for (idx, length) in [(0, 1), (1, 1), (2, 1), (3, 2)]:\n            pto = ca._policy_tree_output(X, inds[idx])\n            policy_val = pto.policy_value\n            always_trt = pto.always_treat\n            assert isinstance(pto.control_name, str)\n            assert isinstance(always_trt, dict)\n            assert np.array(policy_val).shape == ()\n            assert len(always_trt) == length\n            for val in always_trt.values():\n                assert np.array(val).shape == ()\n\n            # policy value should exceed always treating with any treatment\n            assert_less_close(np.array(list(always_trt.values())), policy_val)\n\n            _ind_pol = ca.individualized_policy(X, inds[idx])\n\n    def test_warm_start(self):\n        for classification in [True, False]:\n            # dgp\n            X1 = np.random.normal(0, 1, size=(500, 5))\n            X2 = np.random.choice([0, 1], size=(500, 1))\n            X3 = np.random.choice([0, 1, 2], size=(500, 1))\n            X = np.hstack((X1, X2, X3))\n            X_df = pd.DataFrame(X, columns=[f\"x{i} \"for i in range(7)])\n            y = np.random.choice([0, 1], size=(500,))\n            # model\n            hetero_inds = [0, 1, 2]\n            feat_inds = [1, 3, 5]\n            categorical = [5, 6]\n            ca = CausalAnalysis(feat_inds, categorical, heterogeneity_inds=hetero_inds,\n                                classification=classification,\n                                nuisance_models='linear', heterogeneity_model=\"linear\", n_jobs=-1)\n            ca.fit(X_df, y)\n            ca.global_causal_effect(alpha=0.05)\n            ca.local_causal_effect(X_df, alpha=0.05)\n\n            ca.feature_inds = [1, 2, 3, 5]\n            ca.fit(X_df, y, warm_start=True)\n            ca.global_causal_effect(alpha=0.05)\n            ca.local_causal_effect(X_df, alpha=0.05)\n\n    def test_empty_hinds(self):\n        for h_model in ['linear', 'forest']:\n            for classification in [True, False]:\n                X1 = np.random.normal(0, 1, size=(500, 5))\n                X2 = np.random.choice([0, 1], size=(500, 1))\n                X3 = np.random.choice([0, 1, 2], size=(500, 1))\n                X = np.hstack((X1, X2, X3))\n                X_df = pd.DataFrame(X, columns=[f\"x{i} \"for i in range(7)])\n                y = np.random.choice([0, 1], size=(500,))\n                # model\n                hetero_inds = [[], [], []]\n                feat_inds = [1, 3, 5]\n                categorical = [5, 6]\n                ca = CausalAnalysis(feat_inds, categorical, heterogeneity_inds=hetero_inds,\n                                    classification=classification,\n                                    nuisance_models='linear', heterogeneity_model=h_model, n_jobs=-1)\n                ca.fit(X_df, y)\n                ca.global_causal_effect(alpha=0.05)\n                ca.local_causal_effect(X_df, alpha=0.05)\n                for ind in feat_inds:\n                    ca._policy_tree_output(X_df, ind)\n                    ca._individualized_policy_dict(X_df, ind)\n\n    def test_can_serialize(self):\n        import pickle\n        y = pd.Series(np.random.choice([0, 1], size=(500,)))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c'], size=500)})\n        inds = ['a', 'b', 'c', 'd']\n        cats = ['c', 'd']\n        hinds = ['a', 'd']\n\n        ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model='linear')\n        ca = pickle.loads(pickle.dumps(ca))\n        ca.fit(X, y)\n        ca = pickle.loads(pickle.dumps(ca))\n        ca.global_causal_effect()\n\n    def test_over_cat_limit(self):\n        y = pd.Series(np.random.choice([0, 1], size=(500,)))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c', 'd'], size=500),\n                          'e': np.random.choice([7, 8, 9, 10, 11], size=500),\n                          'f': np.random.choice(['x', 'y'], size=500),\n                          'g': np.random.choice([0, 1], size=500),\n                          'h': np.random.choice(['q', 'r', 's'], size=500)})\n        inds = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']\n        cats = ['c', 'd', 'e', 'f', 'g', 'h']\n        hinds = ['a', 'd']\n        ca = CausalAnalysis(inds, cats, hinds, upper_bound_on_cat_expansion=2)\n        ca.fit(X, y)\n\n        # columns 'd', 'e', 'h' have too many values\n        self.assertEqual([res.feature_name for res in ca._results], ['a', 'b', 'c', 'f', 'g'])\n\n        inds = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']\n        cats = ['c', 'd', 'e', 'f', 'g', 'h']\n        hinds = ['a', 'd']\n        ca = CausalAnalysis(inds, cats, hinds, upper_bound_on_cat_expansion=3)\n        ca.fit(X, y)\n\n        # columns 'd', 'e' have too many values\n        self.assertEqual([res.feature_name for res in ca._results], ['a', 'b', 'c', 'f', 'g', 'h'])\n\n        ca.upper_bound_on_cat_expansion = 2\n        ca.fit(X, y, warm_start=True)\n\n        # lowering bound shouldn't affect already fit columns when warm starting\n        self.assertEqual([res.feature_name for res in ca._results], ['a', 'b', 'c', 'f', 'g', 'h'])\n\n        ca.upper_bound_on_cat_expansion = 4\n        ca.fit(X, y, warm_start=True)\n\n        # column d is now okay, too\n        self.assertEqual([res.feature_name for res in ca._results], ['a', 'b', 'c', 'd', 'f', 'g', 'h'])\n\n    def test_individualized_policy(self):\n        y_arr = np.random.choice([0, 1], size=(500,))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c'], size=500)})\n        inds = ['a', 'b', 'c', 'd']\n        cats = ['c', 'd']\n        hinds = ['a', 'd']\n\n        for y in [pd.Series(y_arr), y_arr.reshape(-1, 1)]:\n            for classification in [True, False]:\n                ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model='linear', classification=classification)\n                ca.fit(X, y)\n                df = ca.individualized_policy(X, 'a')\n                self.assertEqual(df.shape[0], 500)  # all rows included by default\n                self.assertEqual(df.shape[1], 4 + X.shape[1])  # new cols for policy, effect, upper and lower bounds\n                df = ca.individualized_policy(X, 'b', n_rows=5)\n                self.assertEqual(df.shape[0], 5)\n                self.assertEqual(df.shape[1], 4 + X.shape[1])  # new cols for policy, effect, upper and lower bounds\n                # verify that we can use a scalar treatment cost\n                df = ca.individualized_policy(X, 'c', treatment_costs=100)\n                self.assertEqual(df.shape[0], 500)\n                self.assertEqual(df.shape[1], 4 + X.shape[1])  # new cols for policy, effect, upper and lower bounds\n                # verify that we can specify per-treatment costs for each sample\n                df = ca.individualized_policy(X, 'd', alpha=0.05, treatment_costs=np.random.normal(size=(500, 2)))\n                self.assertEqual(df.shape[0], 500)\n                self.assertEqual(df.shape[1], 4 + X.shape[1])  # new cols for policy, effect, upper and lower bounds\n\n                ca._individualized_policy_dict(X, 'a')\n\n    def test_random_state(self):\n        # verify that using the same state returns the same results each time\n        y = np.random.choice([0, 1], size=(500,))\n        X = np.hstack((np.random.normal(size=(500, 2)),\n                       np.random.choice([0, 1], size=(500, 1)),\n                       np.random.choice([0, 1, 2], size=(500, 1))))\n        inds = [0, 1, 2, 3]\n        cats = [2, 3]\n        hinds = [0, 3]\n\n        for n_model, h_model, classification in\\\n            itertools.product(['linear', 'automl'],\n                              ['linear', 'forest'],\n                              [True, False]):\n\n            ca = CausalAnalysis(inds, cats, hinds, classification=classification,\n                                nuisance_models=n_model, heterogeneity_model=h_model, random_state=123)\n            ca.fit(X, y)\n            glo = ca.global_causal_effect()\n\n            ca2 = CausalAnalysis(inds, cats, hinds, classification=classification,\n                                 nuisance_models=n_model, heterogeneity_model=h_model, random_state=123)\n            ca2.fit(X, y)\n            glo2 = ca.global_causal_effect()\n\n            np.testing.assert_equal(glo.point.values, glo2.point.values)\n            np.testing.assert_equal(glo.stderr.values, glo2.stderr.values)\n\n    def test_can_set_categories(self):\n        y = pd.Series(np.random.choice([0, 1], size=(500,)))\n        X = pd.DataFrame({'a': np.random.normal(size=500),\n                          'b': np.random.normal(size=500),\n                          'c': np.random.choice([0, 1], size=500),\n                          'd': np.random.choice(['a', 'b', 'c'], size=500)})\n        inds = ['a', 'b', 'c', 'd']\n        cats = ['c', 'd']\n        hinds = ['a', 'd']\n\n        # set the categories for column 'd' explicitly so that b is default\n        categories = ['auto', ['b', 'c', 'a']]\n\n        ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model='linear', categories=categories)\n        ca.fit(X, y)\n        eff = ca.global_causal_effect()\n        values = eff.loc['d'].index.values\n        np.testing.assert_equal(values, ['cvb', 'avb'])\n\n    def test_policy_with_index(self):\n        inds = np.arange(1000)\n        np.random.shuffle(inds)\n        X = pd.DataFrame(np.random.normal(0, 1, size=(1000, 2)), columns=['A', 'B'], index=inds)\n        y = np.random.normal(0, 1, size=1000)\n        ca_test = CausalAnalysis(feature_inds=['A'], categorical=[])\n        ca_test.fit(X, y)\n        ind_policy = ca_test.individualized_policy(X[:50], feature_index='A')\n        self.assertFalse(ind_policy.isnull().values.any())\n\n    def test_invalid_inds(self):\n        X = np.zeros((300, 6))\n        y = np.random.normal(size=(300,))\n\n        # first column: 10 ones, this is fine\n        X[np.random.choice(300, 10, replace=False), 0] = 1  # ten ones, should be fine\n\n        # second column: 6 categories, plenty of random instances of each\n        # this is fine only if we increase the cateogry limit\n        X[:, 1] = np.random.choice(6, 300)  # six categories\n\n        # third column: nine ones, lots of twos, not enough unless we disable check\n        X[np.random.choice(300, 100, replace=False), 2] = 2\n        X[np.random.choice(300, 9, replace=False), 2] = 1\n\n        # fourth column: 5 ones, also not enough but barely works even with forest heterogeneity\n        X[np.random.choice(300, 5, replace=False), 3] = 1\n\n        # fifth column: 2 ones, ensures that we will change number of folds for linear heterogeneity\n        # forest heterogeneity won't work\n        X[np.random.choice(300, 2, replace=False), 4] = 1\n\n        # sixth column: just 1 one, not enough even without check\n        X[np.random.choice(300, 1), 5] = 1  # one instance of\n\n        col_names = ['a', 'b', 'c', 'd', 'e', 'f']\n        X = pd.DataFrame(X, columns=col_names)\n\n        for n in ['linear', 'automl']:\n            for h in ['linear', 'forest']:\n                for warm_start in [True, False]:\n                    ca = CausalAnalysis(col_names, col_names, col_names, verbose=1,\n                                        nuisance_models=n, heterogeneity_model=h)\n                    ca.fit(X, y)\n\n                    self.assertEqual(ca.trained_feature_indices_, [0])  # only first column okay\n                    self.assertEqual(ca.untrained_feature_indices_, [(1, 'upper_bound_on_cat_expansion'),\n                                                                     (2, 'cat_limit'),\n                                                                     (3, 'cat_limit'),\n                                                                     (4, 'cat_limit'),\n                                                                     (5, 'cat_limit')])\n\n                    # increase bound on cat expansion\n                    ca.upper_bound_on_cat_expansion = 6\n                    ca.fit(X, y, warm_start=warm_start)\n\n                    self.assertEqual(ca.trained_feature_indices_, [0, 1])  # second column okay also\n                    self.assertEqual(ca.untrained_feature_indices_, [(2, 'cat_limit'),\n                                                                     (3, 'cat_limit'),\n                                                                     (4, 'cat_limit'),\n                                                                     (5, 'cat_limit')])\n\n                    # skip checks (reducing folds accordingly)\n                    ca.skip_cat_limit_checks = True\n                    ca.fit(X, y, warm_start=warm_start)\n\n                    if h == 'linear':\n                        self.assertEqual(ca.trained_feature_indices_, [0, 1, 2, 3, 4])  # all but last col okay\n                        self.assertEqual(ca.untrained_feature_indices_, [(5, 'cat_limit')])\n                    else:\n                        self.assertEqual(ca.trained_feature_indices_, [0, 1, 2, 3])  # can't handle last two\n                        self.assertEqual(ca.untrained_feature_indices_, [(4, 'cat_limit'),\n                                                                         (5, 'cat_limit')])\n\n    # Add tests that guarantee that the reliance on DML feature order is not broken, such as\n    # Creare a transformer that zeros out all variables after the first n_x variables, so it zeros out W\n    # Pass an example where W is irrelevant and X is confounder\n    # As long as DML doesnt change the order of the inputs, then things should be good. Otherwise X would be\n    # zeroed out and the test will fail\n\n    def test_scaling_transforms(self):\n        # shouldn't matter if X is scaled much larger or much smaller than W, we should still get good estimates\n        n = 2000\n        X = np.random.normal(size=(n, 5))\n        W = np.random.normal(size=(n, 5))\n        W[:, 0] = 1  # make one of the columns a constant\n        xt, wt, xy, wy, theta = [np.random.normal(size=sz) for sz in [(5, 1), (5, 1), (5, 1), (5, 1), (1, 1)]]\n        T = X @ xt + W @ wt + np.random.normal(size=(n, 1))\n        Y = X @ xy + W @ wy + T @ theta\n        arr1 = np.hstack([X, W, T])\n        # rescaling X shouldn't affect the first stage models because they normalize the inputs\n        arr2 = np.hstack([1000 * X, W, T])\n        for hmodel in ['linear', 'forest']:\n            inds = [-1]  # we just care about T\n            cats = []\n            hinds = list(range(X.shape[1]))\n            ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model=hmodel, random_state=123)\n            ca.fit(arr1, Y)\n            eff1 = ca.global_causal_effect()\n\n            ca.fit(arr2, Y)\n            eff2 = ca.global_causal_effect()\n\n            np.testing.assert_allclose(eff1.point.values, eff2.point.values, rtol=1e-5)\n            np.testing.assert_allclose(eff1.ci_lower.values, eff2.ci_lower.values, rtol=1e-5)\n            np.testing.assert_allclose(eff1.ci_upper.values, eff2.ci_upper.values, rtol=1e-5)\n\n            np.testing.assert_allclose(eff1.point.values, theta.flatten(), rtol=1e-2)\n\n        # to recover individual coefficients with linear models, we need to be more careful in how we set up X to avoid\n        # cross terms\n        X = np.zeros(shape=(n, 5))\n        X[range(X.shape[0]), np.random.choice(5, size=n)] = 1\n        xt, wt, xy, wy, theta = [np.random.normal(size=sz) for sz in [(5, 1), (5, 1), (5, 1), (5, 1), (5, 1)]]\n        T = X @ xt + W @ wt + np.random.normal(size=(n, 1))\n        Y = X @ xy + W @ wy + T * (X @ theta)\n        arr1 = np.hstack([X, W, T])\n        arr2 = np.hstack([1000 * X, W, T])\n        for hmodel in ['linear', 'forest']:\n            inds = [-1]  # we just care about T\n            cats = []\n            hinds = list(range(X.shape[1]))\n            ca = CausalAnalysis(inds, cats, hinds, heterogeneity_model=hmodel, random_state=123)\n            ca.fit(arr1, Y)\n            eff1 = ca.global_causal_effect()\n            loc1 = ca.local_causal_effect(\n                np.hstack([np.eye(X.shape[1]), np.zeros((X.shape[1], arr1.shape[1] - X.shape[1]))]))\n            ca.fit(arr2, Y)\n            eff2 = ca.global_causal_effect()\n            loc2 = ca.local_causal_effect(\n                # scale by 1000 to match the input to this model:\n                # the scale of X does matter for the final model, which keeps results in user-denominated units\n                1000 * np.hstack([np.eye(X.shape[1]), np.zeros((X.shape[1], arr1.shape[1] - X.shape[1]))]))\n\n            # rescaling X still shouldn't affect the first stage models\n            np.testing.assert_allclose(eff1.point.values, eff2.point.values, rtol=1e-5)\n            np.testing.assert_allclose(eff1.ci_lower.values, eff2.ci_lower.values, rtol=1e-5)\n            np.testing.assert_allclose(eff1.ci_upper.values, eff2.ci_upper.values, rtol=1e-5)\n\n            np.testing.assert_allclose(loc1.point.values, loc2.point.values, rtol=1e-2)\n\n            # TODO: we don't recover the correct values with enough accuracy to enable this assertion\n            #       is there a different way to verify that we are learning the correct coefficients?\n\n            # np.testing.assert_allclose(loc1.point.values, theta.flatten(), rtol=1e-1)\n"
  },
  {
    "path": "econml/tests/test_discrete_outcome.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\nimport pytest\nimport unittest\nimport numpy as np\nimport pandas as pd\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\n\nfrom econml.dml import LinearDML, SparseLinearDML, CausalForestDML\nfrom econml.dr import LinearDRLearner, ForestDRLearner\nfrom econml.iv.dml import OrthoIV, DMLIV\nfrom econml.iv.dr import DRIV, LinearDRIV, SparseLinearDRIV, ForestDRIV, IntentToTreatDRIV, LinearIntentToTreatDRIV\n\nfrom econml.utilities import filter_none_kwargs\n\n\nclass TestDiscreteOutcome(unittest.TestCase):\n    # accuracy test\n    def test_accuracy(self):\n        n = 1000\n        discrete_outcome = True\n        discrete_treatment = True\n        true_ate = 0.3\n        num_iterations = 10\n\n        ests = [\n            LinearDML(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n            CausalForestDML(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n            LinearDRLearner(discrete_outcome=discrete_outcome)\n        ]\n\n        for est in ests:\n\n            count_within_interval = 0\n\n            for _ in range(num_iterations):\n\n                W = np.random.uniform(-1, 1, size=(n, 1))\n                D = np.random.binomial(1, .5 + .1 * W[:, 0], size=(n,))\n                Y = np.random.binomial(1, .5 + true_ate * D + .1 * W[:, 0], size=(n,))\n\n                if isinstance(est, CausalForestDML):\n                    est.fit(Y, D, X=W)\n                    ate_lb, ate_ub = est.ate_interval(X=W)\n\n                else:\n                    est.fit(Y, D, W=W)\n                    ate_lb, ate_ub = est.ate_interval()\n\n                if isinstance(est, LinearDRLearner):\n                    est.summary(T=1)\n                else:\n                    est.summary()\n\n                if ate_lb <= true_ate <= ate_ub:\n                    count_within_interval += 1\n\n            assert count_within_interval >= 6, (\n                f\"{est.__class__.__name__}: True ATE falls within the interval bounds \"\n                f\"only {count_within_interval} times out of {num_iterations}\"\n            )\n\n    # accuracy test, DML\n    def test_accuracy_iv(self):\n        n = 1000\n        discrete_outcome = True\n        discrete_treatment = True\n        true_ate = 0.3\n        num_iterations = 10\n\n        ests = [\n            OrthoIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n            LinearDRIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n        ]\n\n        for est in ests:\n\n            count_within_interval = 0\n\n            for _ in range(num_iterations):\n\n                W = np.random.uniform(-1, 1, size=(n, 1))\n                Z = np.random.uniform(-1, 1, size=(n, 1))\n                D = np.random.binomial(1, .5 + .1 * W[:, 0] + .1 * Z[:, 0], size=(n,))\n                Y = np.random.binomial(1, .5 + true_ate * D + .1 * W[:, 0], size=(n,))\n\n                est.fit(Y, D, W=W, Z=Z)\n                ate_lb, ate_ub = est.ate_interval()\n                est.summary()\n\n                if ate_lb <= true_ate <= ate_ub:\n                    count_within_interval += 1\n\n            assert count_within_interval >= 6, (\n                f\"{est.__class__.__name__}: True ATE falls within the interval bounds \"\n                f\"only {count_within_interval} times out of {num_iterations}\"\n            )\n\n    def test_string_outcome(self):\n        n = 100\n        true_ate = 0.3\n        W = np.random.uniform(-1, 1, size=(n, 1))\n        D = np.random.binomial(1, .5 + .1 * W[:, 0], size=(n,))\n        Y = np.random.binomial(1, .5 + true_ate * D + .1 * W[:, 0], size=(n,))\n        Y_str = pd.Series(Y).replace(0, 'a').replace(1, 'b').values\n        est = LinearDML(discrete_outcome=True, discrete_treatment=True)\n        est.fit(Y_str, D, X=W)\n\n    def test_basic_functionality(self):\n        n = 100\n        discrete_outcome = True\n        d_x = 3\n\n        def gen_array(n, is_binary, d):\n            sz = (n, d) if d > 0 else (n,)\n\n            if is_binary:\n                return np.random.choice([0, 1], size=sz)\n            else:\n                return np.random.normal(size=sz)\n\n        for discrete_treatment in [True, False]:\n            for discrete_instrument in [True, False, None]:\n\n                Y = gen_array(n, discrete_outcome, d=0)\n                T = gen_array(n, discrete_treatment, d=0)\n                Z = None\n                if discrete_instrument is not None:\n                    Z = gen_array(n, discrete_instrument, d=0)\n                X = gen_array(n, is_binary=False, d=d_x)\n\n                if Z is not None:\n                    est_list = [\n                        DRIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                             discrete_instrument=discrete_instrument),\n                        DMLIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                              discrete_instrument=discrete_instrument),\n                        OrthoIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                                discrete_instrument=discrete_instrument),\n                        LinearDRIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                                   discrete_instrument=discrete_instrument),\n                        SparseLinearDRIV(discrete_outcome=discrete_outcome,\n                                         discrete_treatment=discrete_treatment,\n                                         discrete_instrument=discrete_instrument),\n                        ForestDRIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                                   discrete_instrument=discrete_instrument),\n                        OrthoIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                                discrete_instrument=discrete_instrument),\n                        # uncomment when issue #837 is resolved\n                        # NonParamDMLIV(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment,\n                        #               discrete_instrument=discrete_instrument, model_final=LinearRegression())\n                    ]\n\n                    if discrete_instrument and discrete_treatment:\n                        est_list += [\n                            LinearIntentToTreatDRIV(discrete_outcome=discrete_outcome),\n                            IntentToTreatDRIV(discrete_outcome=discrete_outcome),\n                        ]\n\n                else:\n                    est_list = [\n                        LinearDML(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n                        SparseLinearDML(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment),\n                        CausalForestDML(discrete_outcome=discrete_outcome, discrete_treatment=discrete_treatment)\n                    ]\n\n                    if discrete_treatment:\n                        est_list += [\n                            LinearDRLearner(discrete_outcome=discrete_outcome),\n                            ForestDRLearner(discrete_outcome=discrete_outcome),\n                        ]\n\n                for est in est_list:\n                    print(est)\n                    est.fit(Y, T, **filter_none_kwargs(X=X, Z=Z))\n                    est.score(Y, T, **filter_none_kwargs(X=X, Z=Z))\n                    est.effect(X=X)\n                    est.const_marginal_effect(X=X)\n                    est.marginal_effect(T, X=X)\n                    est.ate(X=X)\n\n                    # make sure the auto outcome model is a classifier\n                    if hasattr(est, 'model_y'):\n                        outcome_model_attr = 'models_y'\n                    elif hasattr(est, 'model_regression'):\n                        outcome_model_attr = 'models_regression'\n                    elif hasattr(est, 'model_y_xw'):\n                        outcome_model_attr = 'models_y_xw'\n                    assert (\n                        hasattr(\n                            getattr(est, outcome_model_attr)[0][0],\n                            'predict_proba'\n                        )\n                    ), 'Auto outcome model is not a classifier!'\n\n    def test_constraints(self):\n        \"\"\"Confirm errors/warnings when discreteness is not handled correctly for discrete outcomes and treatments.\"\"\"\n        X = np.random.normal(size=(100, 3))\n        Y = np.random.choice([0, 1], size=(100))\n        T = np.random.choice([0, 1], size=(100, 1))\n\n        ests = [\n            LinearDML()\n        ]\n\n        for est in ests:\n            with self.subTest(est=type(est).__name__, kind='discrete treatment'):\n                est.discrete_treatment = False\n                est.model_t = LogisticRegression()\n                with pytest.raises(AttributeError):\n                    est.fit(Y=Y, T=T, X=X)\n                est.discrete_treatment = True\n                est.model_t = LinearRegression()\n                with pytest.warns(UserWarning):\n                    est.fit(Y=Y, T=T, X=X)\n\n        ests += [LinearDRLearner()]\n        for est in ests:\n            print(est)\n            with self.subTest(est=type(est).__name__, kind='discrete outcome'):\n                est.discrete_outcome = False\n                if isinstance(est, LinearDRLearner):\n                    est.model_regression = LogisticRegression()\n                else:\n                    est.model_y = LogisticRegression()\n                with pytest.raises(AttributeError):\n                    est.fit(Y=Y, T=T, X=X)\n                est.discrete_outcome = True\n                if isinstance(est, LinearDRLearner):\n                    est.model_regression = LinearRegression()\n                else:\n                    est.model_y = LinearRegression()\n                with pytest.warns(UserWarning):\n                    est.fit(Y=Y, T=T, X=X)\n"
  },
  {
    "path": "econml/tests/test_dml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\nimport pytest\nimport pickle\nfrom sklearn.linear_model import LinearRegression, Lasso, LassoCV, LogisticRegression\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import OneHotEncoder, FunctionTransformer, PolynomialFeatures\nfrom sklearn.model_selection import KFold\nfrom econml.dml import DML, LinearDML, SparseLinearDML, KernelDML, CausalForestDML\nfrom econml.dml import NonParamDML\nimport numpy as np\nimport pandas as pd\nfrom econml.utilities import shape, hstack, vstack, reshape, cross_product\nfrom econml.inference import BootstrapInference\nfrom contextlib import ExitStack\nfrom scipy.stats import pearsonr\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\nimport itertools\nfrom econml.sklearn_extensions.linear_model import WeightedLasso, StatsModelsRLM\nfrom econml.tests.test_statsmodels import _summarize\nfrom econml.grf import MultiOutputGRF\nfrom econml.tests.utilities import (GroupingModel, NestedModel)\n\n\ntry:\n    import ray\n    ray_installed = True\nexcept ImportError:\n    ray_installed = False\n\n\n# all solutions to underdetermined (or exactly determined) Ax=b are given by A⁺b+(I-A⁺A)w for some arbitrary w\n# note that if Ax=b is overdetermined, this will raise an assertion error\n\n\ndef rand_sol(A, b):\n    \"\"\"Generate a random solution to the equation Ax=b.\"\"\"\n    assert np.linalg.matrix_rank(A) <= len(b)\n    A_plus = np.linalg.pinv(A)\n    x = A_plus @ b\n    return x + (np.eye(x.shape[0]) - A_plus @ A) @ np.random.normal(size=x.shape)\n\n\n@pytest.mark.dml\nclass TestDML(unittest.TestCase):\n\n    def test_cate_api_without_ray(self):\n        treatment_featurizations = [None]\n        self._test_cate_api(treatment_featurizations, False)\n\n    @pytest.mark.ray\n    def test_cate_api_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            treatment_featurizations = [None]\n            self._test_cate_api(treatment_featurizations, use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def _test_cate_api(self, treatment_featurizations, use_ray=False):\n        \"\"\"Test that we correctly implement the CATE API.\"\"\"\n        n_c = 20  # number of rows for continuous models\n        n_d = 30  # number of rows for discrete models\n\n        def make_random(n, is_discrete, d):\n            if d is None:\n                return None\n            sz = (n, d) if d >= 0 else (n,)\n            if is_discrete:\n                while True:\n                    arr = np.random.choice(['a', 'b', 'c'], size=sz)\n                    # ensure that we've got at least 6 of every element\n                    # 2 outer splits, 3 inner splits when model_t is 'auto' and treatment is discrete\n                    # NOTE: this number may need to change if the default number of folds in\n                    #       WeightedStratifiedKFold changes\n                    _, counts = np.unique(arr, return_counts=True)\n                    if len(counts) == 3 and counts.min() > 5:\n                        return arr\n            else:\n                return np.random.normal(size=sz)\n\n        for d_t in [2, 1, -1]:\n            for is_discrete in [True, False] if d_t <= 1 else [False]:\n                for treatment_featurizer in treatment_featurizations:\n                    for d_y in [3, 1, -1]:\n                        for d_x in [2, None]:\n                            for d_w in [2, None]:\n                                n = n_d if is_discrete else n_c\n                                W, X, Y, T = [make_random(n, is_discrete, d)\n                                              for is_discrete, d in [(False, d_w),\n                                                                     (False, d_x),\n                                                                     (False, d_y),\n                                                                     (is_discrete, d_t)]]\n\n                                for featurizer, fit_cate_intercept in\\\n                                    [(None, True),\n                                     (PolynomialFeatures(degree=2, include_bias=False), True),\n                                     (PolynomialFeatures(degree=2, include_bias=True), False)]:\n\n                                    if is_discrete and treatment_featurizer:\n                                        continue\n\n                                    d_t_final = 2 if is_discrete else d_t\n\n                                    effect_shape = (n,) + ((d_y,) if d_y > 0 else ())\n                                    effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1), 6)\n                                    marginal_effect_shape = ((n,) +\n                                                             ((d_y,) if d_y > 0 else ()) +\n                                                             ((d_t_final,) if d_t_final > 0 else ()))\n                                    marginal_effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1) *\n                                                                          (d_t_final if d_t_final > 0 else 1), 6)\n\n                                    # since T isn't passed to const_marginal_effect, defaults to one row if X is None\n                                    const_marginal_effect_shape = ((n if d_x else 1,) +\n                                                                   ((d_y,) if d_y > 0 else ()) +\n                                                                   ((d_t_final,) if d_t_final > 0 else ()))\n                                    const_marginal_effect_summaryframe_shape = (\n                                        (n if d_x else 1) * (d_y if d_y > 0 else 1) *\n                                        (d_t_final if d_t_final > 0 else 1), 6)\n\n                                    fd_x = featurizer.fit_transform(X).shape[1:] if featurizer and d_x \\\n                                        else ((d_x,) if d_x else (0,))\n                                    coef_shape = Y.shape[1:] + (T.shape[1:] if not is_discrete else (2,)) + fd_x\n\n                                    coef_summaryframe_shape = (\n                                        (d_y if d_y > 0 else 1) * (fd_x[0] if fd_x[0] >\n                                                                   0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n                                    intercept_shape = Y.shape[1:] + (T.shape[1:] if not is_discrete else (2,))\n                                    intercept_summaryframe_shape = (\n                                        (d_y if d_y > 0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n\n                                    model_t = LogisticRegression() if is_discrete else Lasso()\n\n                                    all_infs = [None, 'auto', BootstrapInference(2)]\n\n                                    for est, multi, infs in \\\n                                            [(DML(model_y=Lasso(),\n                                                  model_t=model_t,\n                                                  model_final=Lasso(alpha=0.1, fit_intercept=False),\n                                                  featurizer=featurizer,\n                                                  fit_cate_intercept=fit_cate_intercept,\n                                                  discrete_treatment=is_discrete,\n                                                  treatment_featurizer=treatment_featurizer,\n                                                  use_ray=use_ray),\n                                              True,\n                                              [None] +\n                                              ([BootstrapInference(\n                                                  n_bootstrap_samples=20)] if not is_discrete else [])),\n                                             (DML(model_y=Lasso(),\n                                                  model_t=model_t,\n                                                  model_final=StatsModelsRLM(fit_intercept=False),\n                                                  featurizer=featurizer,\n                                                  fit_cate_intercept=fit_cate_intercept,\n                                                  discrete_treatment=is_discrete,\n                                                  treatment_featurizer=treatment_featurizer,\n                                                  use_ray=use_ray),\n                                              True,\n                                              ['auto']),\n                                             (LinearDML(model_y=Lasso(),\n                                                        model_t=model_t,\n                                                        featurizer=featurizer,\n                                                        fit_cate_intercept=fit_cate_intercept,\n                                                        discrete_treatment=is_discrete,\n                                                        treatment_featurizer=treatment_featurizer,\n                                                        use_ray=use_ray),\n                                              True,\n                                              all_infs),\n                                             (SparseLinearDML(model_y=WeightedLasso(),\n                                                              model_t=model_t,\n                                                              featurizer=featurizer,\n                                                              fit_cate_intercept=fit_cate_intercept,\n                                                              discrete_treatment=is_discrete,\n                                                              treatment_featurizer=treatment_featurizer,\n                                                              use_ray=use_ray),\n                                              True,\n                                              [None, 'auto'] +\n                                              ([BootstrapInference(n_bootstrap_samples=20)]\n                                              if not is_discrete else [])),\n                                             (KernelDML(model_y=WeightedLasso(),\n                                                        model_t=model_t,\n                                                        fit_cate_intercept=fit_cate_intercept,\n                                                        discrete_treatment=is_discrete,\n                                                        treatment_featurizer=treatment_featurizer,\n                                                        use_ray=use_ray),\n                                              False,\n                                              [None]),\n                                             (CausalForestDML(model_y=WeightedLasso(),\n                                                              model_t=model_t,\n                                                              featurizer=featurizer,\n                                                              n_estimators=4,\n                                                              n_jobs=1,\n                                                              discrete_treatment=is_discrete,\n                                                              use_ray=use_ray),\n                                              True,\n                                              ['auto', 'blb'])]:\n\n                                        if not (multi) and d_y > 1:\n                                            continue\n\n                                        if X is None and isinstance(est, CausalForestDML):\n                                            continue\n\n                                        # ensure we can serialize the unfit estimator\n                                        pickle.dumps(est)\n\n                                        for inf in infs:\n                                            with self.subTest(d_w=d_w, d_x=d_x, d_y=d_y, d_t=d_t,\n                                                              is_discrete=is_discrete, est=type(est).__name__,\n                                                              model_final=repr(getattr(est, 'model_final', None)),\n                                                              inf=repr(inf)):\n\n                                                if X is None and (not fit_cate_intercept):\n                                                    with pytest.raises(AttributeError):\n                                                        est.fit(Y, T, X=X, W=W, inference=inf)\n                                                    continue\n\n                                                est.fit(Y, T, X=X, W=W, inference=inf)\n\n                                                # ensure we can pickle the fit estimator\n                                                pickle.dumps(est)\n\n                                                # make sure we can call the marginal_effect and effect methods\n                                                const_marg_eff = est.const_marginal_effect(X)\n                                                marg_eff = est.marginal_effect(T, X)\n                                                self.assertEqual(shape(marg_eff), marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_eff), const_marginal_effect_shape)\n\n                                                np.testing.assert_allclose(\n                                                    marg_eff if d_x else marg_eff[0:1], const_marg_eff)\n\n                                                assert isinstance(est.score_, float)\n                                                for score_list in est.nuisance_scores_y:\n                                                    for score in score_list:\n                                                        assert isinstance(score, float)\n                                                for score_list in est.nuisance_scores_t:\n                                                    for score in score_list:\n                                                        assert isinstance(score, float)\n\n                                                T0 = np.full_like(T, 'a') if is_discrete else np.zeros_like(T)\n                                                eff = est.effect(X, T0=T0, T1=T)\n                                                self.assertEqual(shape(eff), effect_shape)\n\n                                                if ((not isinstance(est, KernelDML)) and\n                                                        (not isinstance(est, CausalForestDML))):\n                                                    self.assertEqual(shape(est.coef_), coef_shape)\n                                                    if fit_cate_intercept:\n                                                        self.assertEqual(shape(est.intercept_), intercept_shape)\n                                                    else:\n                                                        with pytest.raises(AttributeError):\n                                                            self.assertEqual(shape(est.intercept_), intercept_shape)\n\n                                                if d_y > 1 or is_discrete or d_t > 1:\n                                                    # sensitivity interval should not calculate\n                                                    # when d_y > 1 or t is multi category discrete / multi dim cont\n                                                    with pytest.raises(\n                                                            ValueError,\n                                                            match='Sensitivity analysis for DML is not supported'):\n                                                        est.sensitivity_interval()\n\n                                                    with pytest.raises(\n                                                            ValueError,\n                                                            match='Sensitivity analysis for DML is not supported'):\n                                                        est.robustness_value()\n\n                                                else:\n\n                                                    # make sure sensitivity methods can be called.\n                                                    # allow for data-dependent error with negative sigma, nu\n                                                    for method in [est.sensitivity_interval,\n                                                                   est.robustness_value,\n                                                                   est.sensitivity_summary]:\n                                                        try:\n                                                            method()\n                                                        except ValueError as e:\n                                                            assert 'sigma and nu must be non-negative' in str(e)\n\n                                                if inf is not None:\n                                                    const_marg_eff_int = est.const_marginal_effect_interval(X)\n                                                    marg_eff_int = est.marginal_effect_interval(T, X)\n                                                    self.assertEqual(shape(marg_eff_int),\n                                                                     (2,) + marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_eff_int),\n                                                                     (2,) + const_marginal_effect_shape)\n                                                    self.assertEqual(shape(est.effect_interval(X, T0=T0, T1=T)),\n                                                                     (2,) + effect_shape)\n                                                    if ((not isinstance(est, KernelDML)) and\n                                                            (not isinstance(est, CausalForestDML))):\n                                                        self.assertEqual(shape(est.coef__interval()),\n                                                                         (2,) + coef_shape)\n                                                        if fit_cate_intercept:\n                                                            self.assertEqual(shape(est.intercept__interval()),\n                                                                             (2,) + intercept_shape)\n                                                        else:\n                                                            with pytest.raises(AttributeError):\n                                                                self.assertEqual(shape(est.intercept__interval()),\n                                                                                 (2,) + intercept_shape)\n\n                                                    const_marg_effect_inf = est.const_marginal_effect_inference(X)\n                                                    T1 = np.full_like(T, 'b') if is_discrete else T\n                                                    effect_inf = est.effect_inference(X, T0=T0, T1=T1)\n                                                    marg_effect_inf = est.marginal_effect_inference(T, X)\n                                                    # test const marginal inference\n                                                    self.assertEqual(shape(const_marg_effect_inf.summary_frame()),\n                                                                     const_marginal_effect_summaryframe_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.point_estimate),\n                                                                     const_marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.stderr),\n                                                                     const_marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.var),\n                                                                     const_marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.pvalue()),\n                                                                     const_marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.zstat()),\n                                                                     const_marginal_effect_shape)\n                                                    self.assertEqual(shape(const_marg_effect_inf.conf_int()),\n                                                                     (2,) + const_marginal_effect_shape)\n                                                    np.testing.assert_array_almost_equal(\n                                                        const_marg_effect_inf.conf_int()[0],\n                                                        const_marg_eff_int[0], decimal=5)\n                                                    const_marg_effect_inf.population_summary()._repr_html_()\n\n                                                    # test effect inference\n                                                    self.assertEqual(shape(effect_inf.summary_frame()),\n                                                                     effect_summaryframe_shape)\n                                                    self.assertEqual(shape(effect_inf.point_estimate),\n                                                                     effect_shape)\n                                                    self.assertEqual(shape(effect_inf.stderr),\n                                                                     effect_shape)\n                                                    self.assertEqual(shape(effect_inf.var),\n                                                                     effect_shape)\n                                                    self.assertEqual(shape(effect_inf.pvalue()),\n                                                                     effect_shape)\n                                                    self.assertEqual(shape(effect_inf.zstat()),\n                                                                     effect_shape)\n                                                    self.assertEqual(shape(effect_inf.conf_int()),\n                                                                     (2,) + effect_shape)\n                                                    np.testing.assert_array_almost_equal(\n                                                        effect_inf.conf_int()[0],\n                                                        est.effect_interval(X, T0=T0, T1=T1)[0], decimal=5)\n                                                    effect_inf.population_summary()._repr_html_()\n\n                                                    # test marginal effect inference\n                                                    self.assertEqual(shape(marg_effect_inf.summary_frame()),\n                                                                     marginal_effect_summaryframe_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.point_estimate),\n                                                                     marginal_effect_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.stderr),\n                                                                     marginal_effect_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.var),\n                                                                     marginal_effect_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.pvalue()),\n                                                                     marginal_effect_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.zstat()),\n                                                                     marginal_effect_shape)\n                                                    self.assertEqual(shape(marg_effect_inf.conf_int()),\n                                                                     (2,) + marginal_effect_shape)\n                                                    np.testing.assert_array_almost_equal(\n                                                        marg_effect_inf.conf_int()[0], marg_eff_int[0], decimal=5)\n                                                    marg_effect_inf.population_summary()._repr_html_()\n\n                                                    # test coef__inference and intercept__inference\n                                                    if ((not isinstance(est, KernelDML)) and\n                                                            (not isinstance(est, CausalForestDML))):\n                                                        if X is not None:\n                                                            self.assertEqual(\n                                                                shape(est.coef__inference().summary_frame()),\n                                                                coef_summaryframe_shape)\n                                                            np.testing.assert_array_almost_equal(\n                                                                est.coef__inference().conf_int()\n                                                                [0], est.coef__interval()[0], decimal=5)\n\n                                                        if fit_cate_intercept:\n                                                            cm = ExitStack()\n                                                            # ExitStack can be used as a \"do nothing\" ContextManager\n                                                        else:\n                                                            cm = pytest.raises(AttributeError)\n                                                        with cm:\n                                                            self.assertEqual(shape(est.intercept__inference().\n                                                                                   summary_frame()),\n                                                                             intercept_summaryframe_shape)\n                                                            np.testing.assert_array_almost_equal(\n                                                                est.intercept__inference().conf_int()\n                                                                [0], est.intercept__interval()[0], decimal=5)\n\n                                                        est.summary()\n\n                                                est.score(Y, T, X, W)\n\n                                                if isinstance(est, CausalForestDML):\n                                                    np.testing.assert_array_equal(est.feature_importances_.shape,\n                                                                                  ((d_y,) if d_y > 0 else ()) + fd_x)\n\n                                                # make sure we can call effect with implied scalar treatments,\n                                                # no matter the dimensions of T, and also that we warn when there\n                                                # are multiple treatments\n                                                if d_t > 1:\n                                                    cm = self.assertWarns(Warning)\n                                                else:\n                                                    # ExitStack can be used as a \"do nothing\" ContextManager\n                                                    cm = ExitStack()\n                                                with cm:\n                                                    effect_shape2 = (n if d_x else 1,) + ((d_y,) if d_y > 0 else ())\n                                                    eff = est.effect(X) if not is_discrete else est.effect(\n                                                        X, T0='a', T1='b')\n                                                    self.assertEqual(shape(eff), effect_shape2)\n\n    def test_cate_api_nonparam_without_ray(self):\n        self._test_cate_api_nonparam(use_ray=False)\n\n    @pytest.mark.ray\n    def test_cate_api_nonparam_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_cate_api_nonparam(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def _test_cate_api_nonparam(self, use_ray=False):\n        \"\"\"Test that we correctly implement the CATE API.\"\"\"\n        n = 20\n\n        def make_random(is_discrete, d):\n            if d is None:\n                return None\n            sz = (n, d) if d >= 0 else (n,)\n            if is_discrete:\n                while True:\n                    arr = np.random.choice(['a', 'b'], size=sz)\n                    # ensure that we've got at least two of every element\n                    _, counts = np.unique(arr, return_counts=True)\n                    if len(counts) == 2 and counts.min() > 2:\n                        return arr\n            else:\n                return np.random.normal(size=sz)\n\n        for d_t in [1, -1]:\n            for is_discrete in [True, False] if d_t <= 1 else [False]:\n                for d_y in [3, 1, -1]:\n                    for d_x in [2, None]:\n                        for d_w in [2, None]:\n                            W, X, Y, T = [make_random(is_discrete, d)\n                                          for is_discrete, d in [(False, d_w),\n                                                                 (False, d_x),\n                                                                 (False, d_y),\n                                                                 (is_discrete, d_t)]]\n\n                            d_t_final = 1 if is_discrete else d_t\n\n                            effect_shape = (n,) + ((d_y,) if d_y > 0 else ())\n                            effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1), 6)\n                            marginal_effect_shape = ((n,) +\n                                                     ((d_y,) if d_y > 0 else ()) +\n                                                     ((d_t_final,) if d_t_final > 0 else ()))\n                            marginal_effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1) *\n                                                                  (d_t_final if d_t_final > 0 else 1), 6)\n                            # since T isn't passed to const_marginal_effect, defaults to one row if X is None\n                            const_marginal_effect_shape = ((n if d_x else 1,) +\n                                                           ((d_y,) if d_y > 0 else ()) +\n                                                           ((d_t_final,) if d_t_final > 0 else ()))\n                            const_marginal_effect_summaryframe_shape = (\n                                (n if d_x else 1) * (d_y if d_y > 0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n\n                            model_t = LogisticRegression() if is_discrete else WeightedLasso()\n\n                            base_infs = [None, BootstrapInference(2)]\n                            for est, multi, infs in [(NonParamDML(model_y=WeightedLasso(),\n                                                                  model_t=model_t,\n                                                                  model_final=WeightedLasso(),\n                                                                  featurizer=None,\n                                                                  discrete_treatment=is_discrete,\n                                                                  use_ray=use_ray),\n                                                      True,\n                                                      base_infs),\n                                                     (NonParamDML(model_y=WeightedLasso(),\n                                                                  model_t=model_t,\n                                                                  model_final=WeightedLasso(),\n                                                                  featurizer=FunctionTransformer(),\n                                                                  discrete_treatment=is_discrete,\n                                                                  use_ray=use_ray),\n                                                      True,\n                                                      base_infs), ]:\n\n                                if not (multi) and d_y > 1:\n                                    continue\n\n                                for inf in infs:\n                                    with self.subTest(d_w=d_w, d_x=d_x, d_y=d_y, d_t=d_t,\n                                                      is_discrete=is_discrete,\n                                                      featurizer=repr(est.featurizer), inf=repr(inf)):\n                                        if X is None:\n                                            with pytest.raises(AttributeError):\n                                                est.fit(Y, T, X=X, W=W, inference=inf)\n                                            continue\n\n                                        est.fit(Y, T, X=X, W=W, inference=inf)\n                                        # make sure we can call the marginal_effect and effect methods\n                                        const_marg_eff = est.const_marginal_effect(X)\n                                        marg_eff = est.marginal_effect(T, X)\n                                        self.assertEqual(shape(marg_eff), marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_eff), const_marginal_effect_shape)\n\n                                        np.testing.assert_array_equal(\n                                            marg_eff if d_x else marg_eff[0:1], const_marg_eff)\n\n                                        T0 = np.full_like(T, 'a') if is_discrete else np.zeros_like(T)\n                                        eff = est.effect(X, T0=T0, T1=T)\n                                        self.assertEqual(shape(eff), effect_shape)\n\n                                        if inf is not None:\n                                            const_marg_eff_int = est.const_marginal_effect_interval(X)\n                                            marg_eff_int = est.marginal_effect_interval(T, X)\n                                            self.assertEqual(shape(marg_eff_int),\n                                                             (2,) + marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_eff_int),\n                                                             (2,) + const_marginal_effect_shape)\n                                            self.assertEqual(shape(est.effect_interval(X, T0=T0, T1=T)),\n                                                             (2,) + effect_shape)\n                                            if inf in ['auto', 'statsmodels', 'debiasedlasso', 'blb']:\n                                                const_marg_effect_inf = est.const_marginal_effect_inference(X)\n                                                T1 = np.full_like(T, 'b') if is_discrete else T\n                                                effect_inf = est.effect_inference(X, T0=T0, T1=T1)\n                                                marg_effect_inf = est.marginal_effect_inference(T, X)\n                                                # test const marginal inference\n                                                self.assertEqual(shape(const_marg_effect_inf.summary_frame()),\n                                                                 const_marginal_effect_summaryframe_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.point_estimate),\n                                                                 const_marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.stderr),\n                                                                 const_marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.var),\n                                                                 const_marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.pvalue()),\n                                                                 const_marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.zstat()),\n                                                                 const_marginal_effect_shape)\n                                                self.assertEqual(shape(const_marg_effect_inf.conf_int()),\n                                                                 (2,) + const_marginal_effect_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    const_marg_effect_inf.conf_int()[0],\n                                                    const_marg_eff_int[0], decimal=5)\n                                                const_marg_effect_inf.population_summary()._repr_html_()\n\n                                                # test effect inference\n                                                self.assertEqual(shape(effect_inf.summary_frame()),\n                                                                 effect_summaryframe_shape)\n                                                self.assertEqual(shape(effect_inf.point_estimate),\n                                                                 effect_shape)\n                                                self.assertEqual(shape(effect_inf.stderr),\n                                                                 effect_shape)\n                                                self.assertEqual(shape(effect_inf.var),\n                                                                 effect_shape)\n                                                self.assertEqual(shape(effect_inf.pvalue()),\n                                                                 effect_shape)\n                                                self.assertEqual(shape(effect_inf.zstat()),\n                                                                 effect_shape)\n                                                self.assertEqual(shape(effect_inf.conf_int()),\n                                                                 (2,) + effect_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    effect_inf.conf_int()[0],\n                                                    est.effect_interval(X, T0=T0, T1=T1)[0], decimal=5)\n                                                effect_inf.population_summary()._repr_html_()\n\n                                                # test marginal effect inference\n                                                self.assertEqual(shape(marg_effect_inf.summary_frame()),\n                                                                 marginal_effect_summaryframe_shape)\n                                                self.assertEqual(shape(marg_effect_inf.point_estimate),\n                                                                 marginal_effect_shape)\n                                                self.assertEqual(shape(marg_effect_inf.stderr),\n                                                                 marginal_effect_shape)\n                                                self.assertEqual(shape(marg_effect_inf.var),\n                                                                 marginal_effect_shape)\n                                                self.assertEqual(shape(marg_effect_inf.pvalue()),\n                                                                 marginal_effect_shape)\n                                                self.assertEqual(shape(marg_effect_inf.zstat()),\n                                                                 marginal_effect_shape)\n                                                self.assertEqual(shape(marg_effect_inf.conf_int()),\n                                                                 (2,) + marginal_effect_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    marg_effect_inf.conf_int()[0], marg_eff_int[0], decimal=5)\n                                                marg_effect_inf.population_summary()._repr_html_()\n\n                                        est.score(Y, T, X, W)\n\n                                        # make sure we can call effect with implied scalar treatments, no matter the\n                                        # dimensions of T, and also that we warn when there are multiple treatments\n                                        if d_t > 1:\n                                            cm = self.assertWarns(Warning)\n                                        else:\n                                            cm = ExitStack()  # ExitStack can be used as a \"do nothing\" ContextManager\n                                        with cm:\n                                            effect_shape2 = (n if d_x else 1,) + ((d_y,) if d_y > 0 else ())\n                                            eff = est.effect(X) if not is_discrete else est.effect(X, T0='a', T1='b')\n                                            self.assertEqual(shape(eff), effect_shape2)\n\n    def test_bad_splits_discrete(self):\n        \"\"\"Test that we raise an error when some training splits in a crossfit fold don't contain all treatments.\"\"\"\n        Y = np.array([2, 3, 1, 3, 2, 1, 1, 1])\n        T = np.array([2, 2, 1, 2, 1, 1, 1, 1])\n        X = np.ones((8, 1))\n        est = LinearDML(cv=[(np.arange(4, 8), np.arange(4))], discrete_treatment=True)\n        with pytest.raises(AttributeError):\n            est.fit(Y, T, X=X)\n        Y = np.array([2, 3, 1, 3, 2, 1, 1, 1])\n        T = np.array([2, 2, 1, 2, 2, 2, 2, 2])\n        X = np.ones((8, 1))\n        est = LinearDML(cv=[(np.arange(4, 8), np.arange(4))], discrete_treatment=True)\n        with pytest.raises(AttributeError):\n            est.fit(Y, T, X=X)\n\n    def test_bad_treatment_nonparam(self):\n        \"\"\"Test that the non-parametric dml raises errors when treatment is not binary or single dimensional.\"\"\"\n        Y = np.array([2, 3, 1, 3, 2, 1, 1, 1])\n        T = np.array([3, 2, 1, 2, 1, 2, 1, 3])\n        X = np.ones((8, 1))\n        est = NonParamDML(model_y=WeightedLasso(),\n                          model_t=LogisticRegression(),\n                          model_final=WeightedLasso(),\n                          discrete_treatment=True)\n        with pytest.raises(AttributeError):\n            est.fit(Y, T, X=X)\n        T = np.ones((8, 2))\n        est = NonParamDML(model_y=WeightedLasso(),\n                          model_t=LinearRegression(),\n                          model_final=WeightedLasso(),\n                          discrete_treatment=False)\n        with pytest.raises(AttributeError):\n            est.fit(Y, T, X=X)\n\n    def test_access_to_internal_models(self):\n        \"\"\"Test that API related to accessing the nuisance models, cate_model and featurizer is working.\"\"\"\n        Y = np.array([2, 3, 1, 3, 2, 1, 1, 1])\n        T = np.array([3, 2, 1, 2, 1, 2, 1, 3])\n        X = np.ones((8, 1))\n        est = DML(model_y=WeightedLasso(),\n                  model_t=LogisticRegression(),\n                  model_final=WeightedLasso(),\n                  featurizer=PolynomialFeatures(degree=2, include_bias=False),\n                  fit_cate_intercept=True,\n                  discrete_treatment=True)\n        est.fit(Y, T, X=X)\n        assert isinstance(est.original_featurizer, PolynomialFeatures)\n        assert isinstance(est.featurizer_, Pipeline)\n        assert isinstance(est.model_cate, WeightedLasso)\n        for mdl in est.models_y[0]:\n            assert isinstance(mdl, WeightedLasso)\n        for mdl in est.models_t[0]:\n            assert isinstance(mdl, LogisticRegression)\n        np.testing.assert_array_equal(est.cate_feature_names(['A']), ['A', 'A^2'])\n        np.testing.assert_array_equal(est.cate_feature_names(), ['X0', 'X0^2'])\n        est = DML(model_y=WeightedLasso(),\n                  model_t=LogisticRegression(),\n                  model_final=WeightedLasso(),\n                  featurizer=None,\n                  fit_cate_intercept=True,\n                  discrete_treatment=True)\n        est.fit(Y, T, X=X)\n        assert est.original_featurizer is None\n        assert isinstance(est.featurizer_, FunctionTransformer)\n        assert isinstance(est.model_cate, WeightedLasso)\n        for mdl in est.models_y[0]:\n            assert isinstance(mdl, WeightedLasso)\n        for mdl in est.models_t[0]:\n            assert isinstance(mdl, LogisticRegression)\n        np.testing.assert_array_equal(est.cate_feature_names(['A']), ['A'])\n\n    def test_forest_dml_perf(self):\n        \"\"\"Testing accuracy of forest DML is reasonable.\"\"\"\n        np.random.seed(1234)\n        n = 20000  # number of raw samples\n        d = 10\n        for _ in range(2):\n            X = np.random.binomial(1, .5, size=(n, d))\n            T = np.random.binomial(1, .5, size=(n,))\n\n            def true_fn(x):\n                return -1 + 2 * x[:, 0] + x[:, 1] * x[:, 2]\n\n            y = true_fn(X) * T + X[:, 0] + (1 * X[:, 0] + 1) * np.random.normal(0, 1, size=(n,))\n\n            XT = np.hstack([T.reshape(-1, 1), X])\n            _X1, _X2, _y1, _y2, X1_sum, X2_sum, y1_sum, y2_sum, n1_sum, n2_sum, _var1_sum, _var2_sum = _summarize(XT, y)\n            # We concatenate the two copies data\n            X_sum = np.vstack([np.array(X1_sum)[:, 1:], np.array(X2_sum)[:, 1:]])\n            T_sum = np.concatenate((np.array(X1_sum)[:, 0], np.array(X2_sum)[:, 0]))\n            y_sum = np.concatenate((y1_sum, y2_sum))  # outcome\n            n_sum = np.concatenate((n1_sum, n2_sum))  # number of summarized points\n            for summarized, min_samples_leaf, tune in [(False, 20, False), (True, 1, False), (False, 20, True)]:\n                est = CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=30, min_samples_leaf=30),\n                                      model_t=GradientBoostingClassifier(n_estimators=30, min_samples_leaf=30),\n                                      discrete_treatment=True,\n                                      cv=2,\n                                      n_jobs=None,\n                                      n_estimators=1000,\n                                      max_samples=.4,\n                                      min_samples_leaf=min_samples_leaf,\n                                      min_impurity_decrease=0.001,\n                                      verbose=0, min_var_fraction_leaf=.1,\n                                      fit_intercept=False,\n                                      random_state=12345)\n                if tune:\n                    est.tune(y, T, X=X[:, :4], W=X[:, 4:])\n                if summarized:\n                    est.fit(y_sum, T_sum, X=X_sum[:, :4], W=X_sum[:, 4:],\n                            sample_weight=n_sum)\n                else:\n                    est.fit(y, T, X=X[:, :4], W=X[:, 4:])\n                X_test = np.array(list(itertools.product([0, 1], repeat=4)))\n                point = est.effect(X_test)\n                truth = true_fn(X_test)\n                lb, ub = est.effect_interval(X_test, alpha=.01)\n                np.testing.assert_allclose(point, truth, rtol=0, atol=.3)\n                np.testing.assert_array_less(lb - .01, truth)\n                np.testing.assert_array_less(truth, ub + .01)\n\n                est = CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=50, min_samples_leaf=100),\n                                      model_t=GradientBoostingRegressor(n_estimators=50, min_samples_leaf=100),\n                                      discrete_treatment=False,\n                                      cv=2,\n                                      n_jobs=None,\n                                      n_estimators=1000,\n                                      max_samples=.4,\n                                      min_samples_leaf=min_samples_leaf,\n                                      min_impurity_decrease=0.001,\n                                      verbose=0, min_var_fraction_leaf=.1,\n                                      fit_intercept=False,\n                                      random_state=12345)\n                if tune:\n                    with np.testing.assert_raises(ValueError):\n                        est.tune(y, T, X=X[:, :4], W=X[:, 4:], params={'discrete_treatment': [True, False]})\n                    est.tune(y, T, X=X[:, :4], W=X[:, 4:], params={'max_samples': [.1, .3]})\n                if summarized:\n                    est.fit(y_sum, T_sum, X=X_sum[:, :4], W=X_sum[:, 4:],\n                            sample_weight=n_sum)\n                else:\n                    est.fit(y, T, X=X[:, :4], W=X[:, 4:])\n                X_test = np.array(list(itertools.product([0, 1], repeat=4)))\n                point = est.effect(X_test)\n                truth = true_fn(X_test)\n                lb, ub = est.effect_interval(X_test, alpha=.01)\n                np.testing.assert_allclose(point, truth, rtol=0, atol=.3)\n                np.testing.assert_array_less(lb - .01, truth)\n                np.testing.assert_array_less(truth, ub + .01)\n\n\n    def test_forest_dml_score_fns(self):\n        np.random.seed(1234)\n        n = 20000  # number of raw samples\n        d = 10\n\n        Z = np.random.binomial(1, .5, size=(n, d))\n        T = np.random.binomial(1, .5, size=(n,))\n\n        def true_fn(x):\n            return -1 + 2 * x[:, 0] + x[:, 1] * x[:, 2]\n\n        y = true_fn(Z) * T + Z[:, 0] + (1 * Z[:, 0] + 1) * np.random.normal(0, 1, size=(n,))\n        X = Z[:, :4]\n        W = Z[:, 4:]\n\n        est = CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=30, min_samples_leaf=30),\n                              model_t=GradientBoostingClassifier(n_estimators=30, min_samples_leaf=30),\n                              discrete_treatment=True,\n                              cv=2,\n                              n_jobs=None,\n                              n_estimators=1000,\n                              max_samples=.4,\n                              min_samples_leaf=10,\n                              min_impurity_decrease=0.001,\n                              verbose=0, min_var_fraction_leaf=.1,\n                              fit_intercept=False,\n                              random_state=12345)\n\n        est.fit(y, T, X=X, W=W)\n\n        s1 = est.score(Y=y,T=T,X=X, W=W, scoring='mean_squared_error')\n        s2 = est.score(Y=y,T=T,X=X, W=W)\n        assert s1 == s2\n        np.testing.assert_allclose(s1, 2.50, rtol=0, atol=.01)\n        s3 = est.score(Y=y, T=T, X=X, W=W, scoring='mean_absolute_error')\n        np.testing.assert_allclose(s3, 1.19, rtol=0, atol=.01)\n        s4 = est.score(Y=y, T=T, X=X, W=W, scoring='r2')\n        np.testing.assert_allclose(s4, 0.113, rtol=0, atol=.001)\n        s5 = est.score(Y=y, T=T, X=X, W=W, scoring=pearsonr)\n        np.testing.assert_allclose(s5[0], 0.337, rtol=0, atol=0.005 )\n\n        sn1 = est.score_nuisances(Y=y, T=T, X=X, W=W,\n                                  t_scoring='mean_squared_error',\n                                  y_scoring='mean_squared_error')\n        np.testing.assert_allclose(sn1['Y_mean_squared_error'], [2.8,2.8], rtol=0, atol=.1)\n        np.testing.assert_allclose(sn1['T_mean_squared_error'], [1.5,1.5], rtol=0, atol=.1)\n\n        sn2 = est.score_nuisances(Y=y, T=T, X=X, W=W,\n                                  t_scoring='mean_absolute_error',\n                                  y_scoring='mean_absolute_error')\n        np.testing.assert_allclose(sn2['Y_mean_absolute_error'], [1.3,1.3], rtol=0, atol=.1)\n        np.testing.assert_allclose(sn2['T_mean_absolute_error'], [1.0,1.0], rtol=0, atol=.1)\n\n        sn3 = est.score_nuisances(Y=y, T=T, X=X, W=W,\n                                  t_scoring='r2',\n                                  y_scoring='r2')\n        np.testing.assert_allclose(sn3['Y_r2'], [0.27,0.27], rtol=0, atol=.005)\n        np.testing.assert_allclose(sn3['T_r2'], [-5.1,-5.1], rtol=0, atol=0.25)\n\n        sn4 = est.score_nuisances(Y=y, T=T, X=X, W=W,\n                                  t_scoring=pearsonr,\n                                  y_scoring=pearsonr)\n        # Ignoring the p-values returned with the score\n        y_pearsonr = [sn4[s][i][0] for s in sn4 if s.startswith('Y_') for i in range(len(sn4[s])) ]\n        t_pearsonr = [sn4[s][i][0] for s in sn4 if s.startswith('T_') for i in range(len(sn4[s])) ]\n        np.testing.assert_allclose(y_pearsonr, [0.52, 0.52], rtol=0, atol=.01)\n        np.testing.assert_allclose(t_pearsonr, [.035, .035], rtol=0, atol=0.005)\n\n        # T is binary, and can be used to check binary eval functions\n        sn5 = est.score_nuisances(Y=y, T=T, X=X, W=W, t_scoring='roc_auc')\n        np.testing.assert_allclose(sn5['T_roc_auc'], [0.52,0.52], rtol=0, atol=.01)\n\n        sn6 = est.score_nuisances(Y=y, T=T, X=X, W=W, t_scoring='log_loss')\n        np.testing.assert_allclose(sn6['T_log_loss'], [17.4,17.4], rtol=0, atol=0.1)\n\n    def test_aaforest_pandas(self):\n        \"\"\"Test that we can use CausalForest with pandas inputs.\"\"\"\n        df = pd.DataFrame({'a': np.random.normal(size=500),\n                           'b': np.random.normal(size=500),\n                           'c': np.random.choice([0, 1], size=500),\n                           'd': np.random.choice(['a', 'b', 'c'], size=500)})\n\n        est = CausalForestDML(discrete_treatment=True)\n        est.tune(Y=df['a'], T=df['d'], X=df[['b', 'c']])\n        est.fit(Y=df['a'], T=df['d'], X=df[['b', 'c']])\n\n        # make sure we can get out post-fit stuff\n        est.ate_\n        est.ate__inference()\n        est.effect(df[['b', 'c']], T0=pd.Series(['b'] * 500), T1=pd.Series(['c'] * 500))\n\n    def test_cfdml_ate_inference(self):\n        np.random.seed(1234)\n        n = 20000  # number of raw samples\n        d = 10\n        for it in range(2):\n            X = np.random.binomial(1, .5, size=(n, d))\n            T = np.random.binomial(2, .5, size=(n,))\n\n            def true_fn(x):\n                return -1 + 2 * x[:, 0] + x[:, 1] * x[:, 2]\n\n            y = true_fn(X) * (T == 1) + true_fn(X) * (T == 2) + X[:, 0] + np.random.normal(0, 1, size=(n,))\n            est = CausalForestDML(discrete_treatment=True,\n                                  featurizer=PolynomialFeatures(degree=2, interaction_only=True, include_bias=False),\n                                  cv=2,\n                                  n_estimators=400,\n                                  max_samples=.45,\n                                  max_depth=3,\n                                  min_balancedness_tol=.2,\n                                  n_jobs=None,\n                                  min_samples_leaf=40,\n                                  min_impurity_decrease=0.001,\n                                  verbose=0, min_var_fraction_leaf=.1,\n                                  fit_intercept=True,\n                                  random_state=125)\n            est.fit(np.hstack([y.reshape(-1, 1), y.reshape(-1, 1)]), T, X=X[:, :4], W=X[:, 4:])\n            X_test = np.array(list(itertools.product([0, 1], repeat=4)))\n            point = est.effect(X_test)\n            truth = np.hstack([true_fn(X_test).reshape(-1, 1), true_fn(X_test).reshape(-1, 1)])\n            lb, ub = est.effect_interval(X_test, alpha=.01)\n            np.testing.assert_allclose(point, truth, rtol=0, atol=.4)\n            np.testing.assert_array_less(lb - .04, truth)\n            np.testing.assert_array_less(truth, ub + .04)\n            mean_truth = np.mean(true_fn(X))\n            np.testing.assert_allclose(est.ate_, mean_truth, rtol=0, atol=.06)\n            np.testing.assert_allclose(est.att_(T=1), mean_truth, rtol=0, atol=.06)\n            np.testing.assert_allclose(est.att_(T=2), mean_truth, rtol=0, atol=.06)\n            inf_sum = est.ate__inference().summary_frame(treatment_names=['drugA', 'drugB'])\n            np.testing.assert_allclose(inf_sum.point_estimate, mean_truth, rtol=0, atol=.06)\n            np.testing.assert_array_less(inf_sum.ci_lower - .03, mean_truth)\n            np.testing.assert_array_less(mean_truth - .03, inf_sum.ci_upper)\n            inf_sum = est.att__inference(T=1).summary_frame(alpha=0.01, treatment_names=['drugA', 'drugB'])\n            np.testing.assert_allclose(inf_sum.point_estimate, mean_truth, rtol=0, atol=.06)\n            np.testing.assert_array_less(inf_sum.ci_lower - .03, mean_truth)\n            np.testing.assert_array_less(mean_truth - .03, inf_sum.ci_upper)\n            tables = est.summary().tables\n            for t in range(4):\n                np.testing.assert_allclose(np.array(tables[t].data[1:])[:, 1].astype(float),\n                                           mean_truth, rtol=0, atol=.06)\n\n            if it == 0:\n                est.fit(y[:100], T[:100], X=X[:100, :4], W=X[:100, 4:], cache_values=True)\n                np.testing.assert_equal(len(est.summary().tables), 7)\n                np.testing.assert_equal(len(est[0][0].feature_importances_), 10)\n                np.testing.assert_equal(len(est), est.n_estimators)\n                np.testing.assert_equal(len([tree[0].feature_importances_ for tree in est]), est.n_estimators)\n                with np.testing.assert_raises(ValueError):\n                    est.model_final = LinearRegression()\n                assert isinstance(est.model_final, MultiOutputGRF)\n                est.featurizer = None\n                est.fit(y[:100], T[:100], X=X[:100, :4], W=X[:100, 4:], cache_values=True)\n                np.testing.assert_equal(est.shap_values(X[:2, :4])['Y0']['T0_1'].values.shape, (2, 4))\n                with np.testing.assert_raises(TypeError):\n                    est.fit(y[:100], T[:100], X=X[:100, :4], W=X[:100, 4:], sample_var=np.ones(100))\n                with np.testing.assert_raises(ValueError):\n                    est.fit(y[:100], T[:100], X=None, W=X[:100, 4:])\n                for est in [CausalForestDML(discrete_treatment=False,\n                                            n_estimators=16),\n                            CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=30, min_samples_leaf=30),\n                                            model_t=GradientBoostingClassifier(n_estimators=30, min_samples_leaf=30),\n                                            discrete_treatment=True,\n                                            drate=False,\n                                            n_estimators=16)]:\n                    est.fit(y[:100], T[:100], X=X[:100, :4], W=X[:100, 4:], cache_values=True)\n                    with np.testing.assert_raises(AttributeError):\n                        est.ate_\n                    with np.testing.assert_raises(AttributeError):\n                        est.ate__inference()\n                    with np.testing.assert_raises(AttributeError):\n                        est.ate_stderr_\n                    with np.testing.assert_raises(AttributeError):\n                        est.att_(T=1)\n                    with np.testing.assert_raises(AttributeError):\n                        est.att__inference(T=1)\n                    with np.testing.assert_raises(AttributeError):\n                        est.att_stderr_(T=1)\n                    np.testing.assert_equal(len(est.summary().tables), 3)\n\n    def test_can_use_vectors(self):\n        \"\"\"Test that we can pass vectors for T and Y (not only 2-dimensional arrays).\"\"\"\n        dmls = [\n            LinearDML(model_y=LinearRegression(), model_t=LinearRegression(), fit_cate_intercept=False),\n            SparseLinearDML(model_y=LinearRegression(), model_t=LinearRegression(), fit_cate_intercept=False)\n        ]\n        for dml in dmls:\n            dml.fit(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), X=np.ones((6, 1)))\n            self.assertAlmostEqual(dml.coef_.reshape(())[()], 1)\n            score = dml.score(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), np.ones((6, 1)))\n            self.assertAlmostEqual(score, 0)\n\n    def test_can_use_sample_weights(self):\n        \"\"\"Test that we can pass sample weights to an estimator.\"\"\"\n        dmls = [\n            LinearDML(model_y=LinearRegression(), model_t='auto', fit_cate_intercept=False),\n            SparseLinearDML(model_y=LinearRegression(), model_t='auto', fit_cate_intercept=False)\n        ]\n        for dml in dmls:\n            dml.fit(np.array([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]),\n                    X=np.ones((12, 1)), sample_weight=np.ones((12, )))\n            self.assertAlmostEqual(dml.coef_.reshape(())[()], 1)\n\n    def test_discrete_treatments(self):\n        \"\"\"Test that we can use discrete treatments.\"\"\"\n        dmls = [\n            LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                      fit_cate_intercept=False, discrete_treatment=True),\n            SparseLinearDML(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                            fit_cate_intercept=False, discrete_treatment=True)\n        ]\n        for dml in dmls:\n            # create a simple artificial setup where effect of moving from treatment\n            #     1 -> 2 is 2,\n            #     1 -> 3 is 1, and\n            #     2 -> 3 is -1 (necessarily, by composing the previous two effects)\n            # Using an uneven number of examples from different classes,\n            # and having the treatments in non-lexicographic order,\n            # Should rule out some basic issues.\n            dml.fit(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array([3, 2, 1, 2, 3, 1, 1, 1]), X=np.ones((8, 1)))\n            np.testing.assert_almost_equal(\n                dml.effect(\n                    np.ones((9, 1)),\n                    T0=np.array([1, 1, 1, 2, 2, 2, 3, 3, 3]),\n                    T1=np.array([1, 2, 3, 1, 2, 3, 1, 2, 3])\n                ),\n                [0, 2, 1, -2, 0, -1, -1, 1, 0],\n                decimal=2)\n            dml.score(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array([3, 2, 1, 2, 3, 1, 1, 1]), np.ones((8, 1)))\n\n    def _test_can_custom_splitter(self, use_ray=False):\n        # test that we can fit with a KFold instance\n        dml = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                        discrete_treatment=True, cv=KFold(), use_ray=use_ray)\n        dml.fit(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), X=np.ones((6, 1)))\n        dml.score(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), np.ones((6, 1)))\n\n        # test that we can fit with a train/test iterable\n        dml = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                        discrete_treatment=True, cv=[([0, 1, 2], [3, 4, 5])], use_ray=use_ray)\n        dml.fit(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), X=np.ones((6, 1)))\n        dml.score(np.array([1, 2, 3, 1, 2, 3]), np.array([1, 2, 3, 1, 2, 3]), np.ones((6, 1)))\n\n    @pytest.mark.ray\n    def test_can_use_custom_splitter_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_can_custom_splitter(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_can_use_custom_splitter_without_ray(self):\n        self._test_can_custom_splitter(use_ray=False)\n\n    def test_can_use_featurizer(self):\n        \"\"\"Test that we can use a featurizer, and that fit is only called during training.\"\"\"\n        # predetermined splits ensure that all features are seen in each split\n        splits = ([0, 2, 3, 6, 8, 11, 13, 15, 16],\n                  [1, 4, 5, 7, 9, 10, 12, 14, 17])\n\n        dml = LinearDML(model_y=LinearRegression(), model_t=LinearRegression(),\n                        fit_cate_intercept=False, featurizer=OneHotEncoder(sparse_output=False),\n                        cv=[splits, splits[::-1]])\n\n        T = np.tile([1, 2, 3], 6)\n        Y = np.array([1, 2, 3, 1, 2, 3])\n        Y = np.concatenate([Y, 0 * Y, -Y])\n        X = np.repeat([[7, 8, 9]], 6, axis=1).T\n\n        dml.fit(Y, T, X=X)\n\n        # because there is one fewer unique element in the test set, fit_transform would return the wrong number of fts\n        X_test = np.array([[7, 8]]).T\n\n        np.testing.assert_equal(dml.effect(X_test)[::-1], dml.effect(X_test[::-1]))\n        eff_int = np.array(dml.effect_interval(X_test))\n        eff_int_rev = np.array(dml.effect_interval(X_test[::-1]))\n        np.testing.assert_equal(eff_int[:, ::-1], eff_int_rev)\n\n        eff_int = np.array(dml.const_marginal_effect_interval(X_test))\n        eff_int_rev = np.array(dml.const_marginal_effect_interval(X_test[::-1]))\n        np.testing.assert_equal(eff_int[:, ::-1], eff_int_rev)\n\n    def test_can_use_statsmodel_inference(self):\n        \"\"\"Test that we can use statsmodels to generate confidence intervals.\"\"\"\n        dml = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                        discrete_treatment=True)\n        dml.fit(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array(\n            [3, 2, 1, 2, 3, 1, 1, 1]), X=np.ones((8, 1)))\n        interval = dml.effect_interval(np.ones((9, 1)),\n                                       T0=np.array([1, 1, 1, 2, 2, 2, 3, 3, 3]),\n                                       T1=np.array([1, 2, 3, 1, 2, 3, 1, 2, 3]),\n                                       alpha=0.05)\n        point = dml.effect(np.ones((9, 1)),\n                           T0=np.array([1, 1, 1, 2, 2, 2, 3, 3, 3]),\n                           T1=np.array([1, 2, 3, 1, 2, 3, 1, 2, 3]))\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        assert (lo < hi).any()  # for at least some of the examples, the CI should have nonzero width\n\n        interval = dml.const_marginal_effect_interval(np.ones((9, 1)), alpha=0.05)\n        point = dml.const_marginal_effect(np.ones((9, 1)))\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        assert (lo < hi).any()  # for at least some of the examples, the CI should have nonzero width\n\n        interval = dml.coef__interval(alpha=0.05)\n        point = dml.coef_\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        assert (lo < hi).any()  # for at least some of the examples, the CI should have nonzero width\n\n        interval = dml.intercept__interval(alpha=0.05)\n        point = dml.intercept_\n        assert len(interval) == 2\n        lo, hi = interval\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        assert (lo < hi).any()  # for at least some of the examples, the CI should have nonzero width\n\n    def test_ignores_final_intercept(self):\n        \"\"\"Test that final model intercepts are ignored (with a warning).\"\"\"\n        class InterceptModel:\n            def fit(self, Y, X):\n                pass\n\n            def predict(self, X):\n                return X + 1\n\n            def prediction_stderr(self, X):\n                return np.zeros(X.shape[0])\n\n        # (incorrectly) use a final model with an intercept\n        dml = DML(model_y=LinearRegression(), model_t=LinearRegression(),\n                  model_final=InterceptModel())\n        # Because final model is fixed, actual values of T and Y don't matter\n        t = np.random.normal(size=100)\n        y = np.random.normal(size=100)\n        with self.assertWarns(Warning):  # we should warn whenever there's an intercept\n            dml.fit(y, t)\n        assert dml.const_marginal_effect() == 1  # coefficient on X in InterceptModel is 1\n        assert dml.const_marginal_effect_inference().point_estimate == 1\n        assert dml.const_marginal_effect_inference().conf_int() == (1, 1)\n        assert dml.const_marginal_effect_interval() == (1, 1)\n        assert dml.effect() == 1\n        assert dml.effect_inference().point_estimate == 1\n        assert dml.effect_inference().conf_int() == (1, 1)\n        assert dml.effect_interval() == (1, 1)\n        assert dml.marginal_effect(1) == 1  # coefficient on X in InterceptModel is 1\n        assert dml.marginal_effect_inference(1).point_estimate == 1\n        assert dml.marginal_effect_inference(1).conf_int() == (1, 1)\n        assert dml.marginal_effect_interval(1) == (1, 1)\n\n    def test_sparse(self):\n        # Ensure reproducibility\n        np.random.seed(123)\n        n_p = np.random.randint(2, 5)  # 2 to 4 products\n        d_w = np.random.randint(0, 5)  # random number of covariates\n        min_n = np.ceil(2 + d_w * (1 + (d_w + 1) / n_p))  # minimum number of rows per product\n        n_r = np.random.randint(min_n, min_n + 3)\n        with self.subTest(n_p=n_p, d_w=d_w, n_r=n_r):\n            TestDML._test_sparse(n_p, d_w, n_r)\n\n    def test_linear_sparse(self):\n        \"\"\"SparseDML test with a sparse DGP.\"\"\"\n        # Sparse DGP\n        np.random.seed(123)\n        n_x = 50\n        n_nonzero = 5\n        n_w = 5\n        n = 1000\n        # Treatment effect coef\n        a = np.zeros(n_x)\n        nonzero_idx = np.random.choice(n_x, size=n_nonzero, replace=False)\n        a[nonzero_idx] = 1\n        # Other coefs\n        b = np.zeros(n_x + n_w)\n        g = np.zeros(n_x + n_w)\n        b_nonzero = np.random.choice(n_x + n_w, size=n_nonzero, replace=False)\n        g_nonzero = np.random.choice(n_x + n_w, size=n_nonzero, replace=False)\n        b[b_nonzero] = 1\n        g[g_nonzero] = 1\n        # Features and controls\n        x = np.random.normal(size=(n, n_x))\n        w = np.random.normal(size=(n, n_w))\n        xw = np.hstack([x, w])\n        err_T = np.random.normal(size=n)\n        T = xw @ b + err_T\n        err_Y = np.random.normal(size=n, scale=0.5)\n        Y = T * (x @ a) + xw @ g + err_Y\n        # Test sparse estimator\n        # --> test coef_, intercept_\n        # with this DGP, since T depends linearly on X, Y depends on X quadratically\n        # so we should use a quadratic featurizer\n        sparse_dml = SparseLinearDML(fit_cate_intercept=False, model_y=Pipeline([('poly', PolynomialFeatures(2)),\n                                                                                 ('lr', LassoCV())]))\n        sparse_dml.fit(Y, T, X=x, W=w)\n        np.testing.assert_allclose(a, sparse_dml.coef_, atol=2e-1)\n        with pytest.raises(AttributeError):\n            sparse_dml.intercept_\n        # --> test treatment effects\n        # Restrict x_test to vectors of norm < 1\n        x_test = np.random.uniform(size=(10, n_x))\n        true_eff = (x_test @ a)\n        eff = sparse_dml.effect(x_test, T0=0, T1=1)\n        np.testing.assert_allclose(true_eff, eff, atol=0.5)\n        # --> check inference\n        y_lower, y_upper = sparse_dml.effect_interval(x_test, T0=0, T1=1)\n        in_CI = ((y_lower < true_eff) & (true_eff < y_upper))\n        # Check that a majority of true effects lie in the 5-95% CI\n        self.assertTrue(in_CI.mean() > 0.8)\n\n    @staticmethod\n    def _generate_recoverable_errors(a_X, X, a_W=None, W=None, featurizer=None):\n        \"\"\"Return error vectors e_t and e_y such that OLS can recover the true coefficients from both stages.\"\"\"\n        if W is None:\n            W = np.empty((shape(X)[0], 0))\n        if a_W is None:\n            a_W = np.zeros((shape(W)[1],))\n        # to correctly recover coefficients for T via OLS, we need e_t to be orthogonal to [W;X]\n        WX = hstack([W, X])\n        e_t = rand_sol(WX.T, np.zeros((shape(WX)[1],)))\n\n        # to correctly recover coefficients for Y via OLS, we need ([X; W]⊗[1; ϕ(X); W])⁺ e_y =\n        #                                                          -([X; W]⊗[1; ϕ(X); W])⁺ ((ϕ(X)⊗e_t)a_X+(W⊗e_t)a_W)\n        # then, to correctly recover a in the third stage, we additionally need (ϕ(X)⊗e_t)ᵀ e_y = 0\n\n        ϕ = featurizer.fit_transform(X) if featurizer is not None else X\n\n        v_X = cross_product(ϕ, e_t)\n        v_W = cross_product(W, e_t)\n\n        M = np.linalg.pinv(cross_product(WX, hstack([np.ones((shape(WX)[0], 1)), ϕ, W])))\n        e_y = rand_sol(vstack([M, v_X.T]), vstack([-M @ (v_X @ a_X + v_W @ a_W), np.zeros((shape(v_X)[1],))]))\n\n        return e_t, e_y\n\n    # sparse test case: heterogeneous effect by product\n    @staticmethod\n    def _test_sparse(n_p, d_w, n_r):\n        # need at least as many rows in e_y as there are distinct columns\n        # in [X;X⊗W;W⊗W;X⊗e_t] to find a solution for e_t\n        assert n_p * n_r >= 2 * n_p + n_p * d_w + d_w * (d_w + 1) / 2\n        a = np.random.normal(size=(n_p,))  # one effect per product\n        n = n_p * n_r * 100\n        p = np.tile(range(n_p), n_r * 100)  # product id\n\n        b = np.random.normal(size=(d_w + n_p,))\n        g = np.random.normal(size=(d_w + n_p,))\n\n        x = np.empty((2 * n, n_p))  # product dummies\n        w = np.empty((2 * n, d_w))\n        y = np.empty(2 * n)\n        t = np.empty(2 * n)\n\n        for fold in range(0, 2):\n            x_f = OneHotEncoder().fit_transform(np.reshape(p, (-1, 1))).toarray()\n            w_f = np.random.normal(size=(n, d_w))\n            xw_f = hstack([x_f, w_f])\n            e_t_f, e_y_f = TestDML._generate_recoverable_errors(a, x_f, W=w_f)\n\n            t_f = xw_f @ b + e_t_f\n            y_f = t_f * np.choose(p, a) + xw_f @ g + e_y_f\n\n            x[fold * n:(fold + 1) * n, :] = x_f\n            w[fold * n:(fold + 1) * n, :] = w_f\n            y[fold * n:(fold + 1) * n] = y_f\n            t[fold * n:(fold + 1) * n] = t_f\n\n        # we have quadratic terms in y, so we need to pipeline with a quadratic featurizer\n        dml = SparseLinearDML(model_y=Pipeline([('poly', PolynomialFeatures(2)),\n                                                ('lr', LinearRegression(fit_intercept=False))]),\n                              model_t=LinearRegression(fit_intercept=False),\n                              fit_cate_intercept=False)\n        dml.fit(y, t, X=x, W=w)\n        np.testing.assert_allclose(a, dml.coef_.reshape(-1), atol=1e-1)\n        eff = reshape(t * np.choose(np.tile(p, 2), a), (-1,))\n        np.testing.assert_allclose(eff, dml.effect(x, T0=0, T1=t), atol=1e-1)\n\n    def _test_nuisance_scores(self, use_ray=False):\n        X = np.random.choice(np.arange(5), size=(100, 3))\n        y = np.random.normal(size=(100,))\n        T = np.random.choice(np.arange(3), size=(100, 2))\n        W = np.random.normal(size=(100, 2))\n        for mc_iters in [1, 2, 3]:\n            for cv in [1, 2, 3]:\n                est = LinearDML(cv=cv, mc_iters=mc_iters, use_ray=use_ray)\n                est.fit(y, T, X=X, W=W)\n                assert len(est.nuisance_scores_t) == len(est.nuisance_scores_y) == mc_iters\n                assert len(est.nuisance_scores_t[0]) == len(est.nuisance_scores_y[0]) == cv\n                est.score(y, T, X=X, W=W)\n\n    @pytest.mark.ray\n    def test_nuisance_scores_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_nuisance_scores(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_nuisance_scores_without_ray(self):\n        self._test_nuisance_scores(use_ray=False)\n\n    @pytest.mark.ray\n    def test_compare_nuisance_with_ray_vs_without_ray(self):\n        X = np.random.choice(np.arange(5), size=(100, 3))\n        y = np.random.normal(size=(100,))\n        T = np.random.choice(np.arange(3), size=(100, 2))\n        W = np.random.normal(size=(100, 2))\n        try:\n            ray.init(num_cpus=1)\n            for mc_iters in [1, 2, 3]:\n                for cv in [1, 2, 3]:\n                    est_with_ray = LinearDML(cv=cv, mc_iters=mc_iters, use_ray=True)\n                    est_without_ray = LinearDML(cv=cv, mc_iters=mc_iters, use_ray=False)\n\n                    est_with_ray.fit(y, T, X=X, W=W)\n                    est_without_ray.fit(y, T, X=X, W=W)\n\n                    # Compare results with and without Ray\n                    assert len(est_with_ray.nuisance_scores_t) == len(est_without_ray.nuisance_scores_t) == mc_iters\n                    assert len(est_with_ray.nuisance_scores_y) == len(est_without_ray.nuisance_scores_y) == mc_iters\n                    assert len(est_with_ray.nuisance_scores_t[0]) == len(est_without_ray.nuisance_scores_t[0]) == cv\n                    assert len(est_with_ray.nuisance_scores_y[0]) == len(est_without_ray.nuisance_scores_y[0]) == cv\n        finally:\n            ray.shutdown()\n\n    def test_categories(self):\n        dmls = [LinearDML, SparseLinearDML]\n        for ctor in dmls:\n            dml1 = ctor(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                        fit_cate_intercept=False, discrete_treatment=True, random_state=123)\n            dml2 = ctor(model_y=LinearRegression(), model_t=LogisticRegression(C=1000),\n                        fit_cate_intercept=False, discrete_treatment=True, categories=['c', 'b', 'a'],\n                        random_state=123)\n\n            # create a simple artificial setup where effect of moving from treatment\n            #     a -> b is 2,\n            #     a -> c is 1, and\n            #     b -> c is -1 (necessarily, by composing the previous two effects)\n            # Using an uneven number of examples from different classes,\n            # and having the treatments in non-lexicographic order,\n            # should rule out some basic issues.\n\n            # Note that explicitly specifying the dtype as object is necessary until\n            # there's a fix for https://github.com/scikit-learn/scikit-learn/issues/15616\n\n            for dml in [dml1, dml2]:\n                dml.fit(np.array([2, 3, 1, 3, 2, 1, 1, 1]),\n                        np.array(['c', 'b', 'a', 'b', 'c', 'a', 'a', 'a'], dtype='object'), X=np.ones((8, 1)))\n\n            # estimated effects should be identical when treatment is explicitly given\n            np.testing.assert_almost_equal(\n                dml1.effect(\n                    np.ones((9, 1)),\n                    T0=np.array(['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'], dtype='object'),\n                    T1=np.array(['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'], dtype='object')\n                ),\n                dml2.effect(\n                    np.ones((9, 1)),\n                    T0=np.array(['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'], dtype='object'),\n                    T1=np.array(['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'], dtype='object')\n                ),\n                decimal=4)\n\n            # but const_marginal_effect should be reordered based on the explicit cagetories\n            cme1 = dml1.const_marginal_effect(np.ones((1, 1))).reshape(-1)\n            cme2 = dml2.const_marginal_effect(np.ones((1, 1))).reshape(-1)\n            self.assertAlmostEqual(cme1[1], -cme2[1], places=3)  # 1->3 in original ordering; 3->1 in new ordering\n            # 1-> 2 in original ordering; combination of 3->1 and 3->2\n            self.assertAlmostEqual(cme1[0], -cme2[1] + cme2[0], places=3)\n\n    def test_groups(self):\n\n        groups = [1, 2, 3, 4, 5, 6] * 10\n        t = groups\n        y = groups\n\n        n_copies = {i: 10 for i in [1, 2, 3, 4, 5, 6]}\n\n        # test outer grouping\n        # with 2 folds, we should get exactly 3 groups per split, each with 10 copies of the y or t value\n        est = LinearDML(model_y=GroupingModel(LinearRegression(), 60, (3, 3), n_copies),\n                        model_t=GroupingModel(LinearRegression(), 60, (3, 3), n_copies))\n        est.fit(y, t, groups=groups)\n\n        # test nested grouping\n\n        # with 2-fold outer and 2-fold inner grouping, and six total groups,\n        # should get 1 or 2 groups per split\n\n        est = LinearDML(model_y=NestedModel(LassoCV(cv=2), 60, (1, 2), n_copies),\n                        model_t=NestedModel(LassoCV(cv=2), 60, (1, 2), n_copies))\n        est.fit(y, t, groups=groups)\n\n    def test_treatment_names(self):\n        Y = np.random.normal(size=(100, 1))\n        T = np.random.binomial(n=1, p=0.5, size=(100, 1))\n        X = np.random.normal(size=(100, 3))\n\n        Ts = [\n            T,\n            pd.DataFrame(T, columns=[0])\n        ]\n\n        init_args_list = [\n            {'discrete_treatment': True},\n            {'treatment_featurizer': PolynomialFeatures(degree=2, include_bias=False)},\n            {'treatment_featurizer': FunctionTransformer(lambda x: np.hstack([x, np.sqrt(x)]))},\n        ]\n\n        for T in Ts:\n            for init_args in init_args_list:\n                est = LinearDML(**init_args).fit(Y=Y, T=T, X=X)\n                t_name = '0' if isinstance(T, pd.DataFrame) else 'T0'  # default treatment name\n                postfixes = ['_1'] if 'discrete_treatment' in init_args else ['', '^2']  # transformer postfixes\n\n                # Try default, integer, and new user-passed treatment name\n                for new_treatment_name in [None, [999], ['NewTreatmentName']]:\n\n                    # FunctionTransformers are agnostic to passed treatment names\n                    if isinstance(init_args.get('treatment_featurizer'), FunctionTransformer):\n                        assert (est.cate_treatment_names(new_treatment_name) == ['feat(T)0', 'feat(T)1'])\n\n                    # Expected treatment names are the sums of user-passed prefixes and transformer-specific postfixes\n                    else:\n                        expected_prefix = str(new_treatment_name[0]) if new_treatment_name is not None else t_name\n                        assert (est.cate_treatment_names(new_treatment_name) == [\n                                expected_prefix + postfix for postfix in postfixes])\n\n    def test_causal_forest_tune_with_discrete_outcome_and_treatment(self):\n        np.random.seed(1234)\n        n = 1000\n        treatment = np.repeat([0, 1], n // 2)\n        covariate = np.resize([0, 1], n)\n        outcome = ((treatment == 1) & (covariate == 1)).astype(int)\n        X = covariate.reshape(-1, 1)\n        Y = outcome\n        T = treatment\n\n        est = CausalForestDML(\n            model_y=GradientBoostingClassifier(),\n            model_t=GradientBoostingClassifier(),\n            discrete_outcome=True,\n            discrete_treatment=True\n        )\n        est.tune(Y=Y, T=T, X=X)\n        est.fit(Y=Y, T=T, X=X)\n"
  },
  {
    "path": "econml/tests/test_dmliv.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport pickle\nimport unittest\n\nimport numpy as np\nimport pytest\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, LogisticRegressionCV\nfrom sklearn.preprocessing import PolynomialFeatures\n\nfrom econml.iv.dml import OrthoIV, DMLIV, NonParamDMLIV\nfrom econml.sklearn_extensions.linear_model import WeightedLassoCVWrapper\nfrom econml.utilities import shape\nfrom econml.tests.utilities import GroupingModel\n\n\n@pytest.mark.cate_api\nclass TestDMLIV(unittest.TestCase):\n    def test_cate_api(self):\n        def const_marg_eff_shape(n, d_x, d_y, binary_T):\n            return (n if d_x else 1,) + ((d_y,) if d_y > 1 else ()) + ((1,) if binary_T else ())\n\n        def marg_eff_shape(n, d_y, binary_T):\n            return (n,) + ((d_y,) if d_y > 1 else ()) + ((1,) if binary_T else ())\n\n        def eff_shape(n, d_x, d_y):\n            return (n if d_x else 1,) + ((d_y,) if d_y > 1 else ())\n\n        n = 1000\n        y = np.random.normal(size=(n,))\n\n        for d_y in [1, 3]:\n            if d_y == 1:\n                y = np.random.normal(size=(n,))\n            else:\n                y = y = np.random.normal(size=(n, d_y))\n            for d_w in [None, 10]:\n                if d_w is None:\n                    W = None\n                else:\n                    W = np.random.normal(size=(n, d_w))\n                for d_x in [None, 3]:\n                    if d_x is None:\n                        X = None\n                    else:\n                        X = np.random.normal(size=(n, d_x))\n                    for binary_Z in [True, False]:\n                        if binary_Z:\n                            Z = np.random.choice([3, 4], size=(n,))\n                        else:\n                            Z = np.random.normal(1, 3, size=(n,))\n                        for binary_T in [True, False]:\n                            if binary_T:\n                                T = np.random.choice([0, 1], size=(n,))\n                            else:\n                                T = np.random.uniform(1, 3, size=(n,)) + 0.5 * Z\n                            for featurizer in [\n                                None,\n                                PolynomialFeatures(degree=2, include_bias=False),\n                            ]:\n                                # since we're running so many combinations, just use LassoCV/LogisticRegressionCV\n                                # for the models instead of also selecting over random forest models\n                                est_list = [\n                                    OrthoIV(\n                                        model_y_xw=WeightedLassoCVWrapper(),\n                                        model_t_xw=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_z_xw=LogisticRegressionCV() if binary_Z else WeightedLassoCVWrapper(),\n                                        projection=False,\n                                        featurizer=featurizer,\n                                        discrete_treatment=binary_T,\n                                        discrete_instrument=binary_Z,\n                                    ),\n                                    OrthoIV(\n                                        model_y_xw=WeightedLassoCVWrapper(),\n                                        model_t_xw=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_t_xwz=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        projection=True,\n                                        featurizer=featurizer,\n                                        discrete_treatment=binary_T,\n                                        discrete_instrument=binary_Z,\n                                    ),\n                                    DMLIV(\n                                        model_y_xw=WeightedLassoCVWrapper(),\n                                        model_t_xw=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_t_xwz=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_final=LinearRegression(fit_intercept=False),\n                                        featurizer=featurizer,\n                                        discrete_treatment=binary_T,\n                                        discrete_instrument=binary_Z,\n                                    ),\n                                    NonParamDMLIV(\n                                        model_y_xw=WeightedLassoCVWrapper(),\n                                        model_t_xw=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_t_xwz=LogisticRegressionCV() if binary_T else WeightedLassoCVWrapper(),\n                                        model_final=RandomForestRegressor(),\n                                        featurizer=featurizer,\n                                        discrete_treatment=binary_T,\n                                        discrete_instrument=binary_Z,\n                                    ),\n                                ]\n\n                                if X is None:\n                                    est_list = est_list[:-1]\n\n                                for est in est_list:\n                                    with self.subTest(d_w=d_w, d_x=d_x, binary_T=binary_T, binary_Z=binary_Z,\n                                                      featurizer=repr(featurizer), est=type(est).__name__,\n                                                      projection=getattr(est, 'projection', None)):\n\n                                        # ensure we can serialize unfit estimator\n                                        pickle.dumps(est)\n\n                                        est.fit(y, T, Z=Z, X=X, W=W)\n\n                                        # ensure we can serialize fit estimator\n                                        pickle.dumps(est)\n\n                                        # expected effect size\n                                        const_marginal_effect_shape = const_marg_eff_shape(n, d_x, d_y, binary_T)\n                                        marginal_effect_shape = marg_eff_shape(n, d_y, binary_T)\n                                        effect_shape = eff_shape(n, d_x, d_y)\n                                        # test effect\n                                        const_marg_eff = est.const_marginal_effect(X)\n                                        self.assertEqual(shape(const_marg_eff), const_marginal_effect_shape)\n                                        marg_eff = est.marginal_effect(T, X)\n                                        self.assertEqual(shape(marg_eff), marginal_effect_shape)\n                                        eff = est.effect(X, T0=0, T1=1)\n                                        self.assertEqual(shape(eff), effect_shape)\n\n                                        # test inference\n                                        # only OrthoIV support inference other than bootstrap\n                                        if isinstance(est, OrthoIV):\n                                            const_marg_eff_int = est.const_marginal_effect_interval(X)\n                                            marg_eff_int = est.marginal_effect_interval(T, X)\n                                            eff_int = est.effect_interval(X, T0=0, T1=1)\n                                            self.assertEqual(shape(const_marg_eff_int), (2,) +\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(marg_eff_int), (2,) + marginal_effect_shape)\n                                            self.assertEqual(shape(eff_int), (2,) + effect_shape)\n\n                                        # test summary\n                                        if isinstance(est, (OrthoIV, DMLIV)):\n                                            est.summary()\n\n                                        # test can run score\n                                        est.score(y, T, Z, X=X, W=W)\n\n                                        if X is not None:\n                                            # test cate_feature_names\n                                            expect_feat_len = featurizer.fit(\n                                                X).n_output_features_ if featurizer else d_x\n                                            self.assertEqual(len(est.cate_feature_names()), expect_feat_len)\n\n                                            # test can run shap values\n                                            est.shap_values(X[:10])\n\n    def test_accuracy(self):\n        np.random.seed(123)\n\n        # dgp\n        def dgp(n, p, true_fn):\n            def epsilon_sample(n):\n                return np.random.normal(-3, 3, size=(n,))\n            X = np.random.normal(0, 1, size=(n, p))\n            beta_z = np.random.uniform(3, 5, size=(p,))\n            Z = np.dot(X, beta_z) + epsilon_sample(n)\n            beta_t = np.random.uniform(0, 1, size=(p,))\n            T = 3 * true_fn(X) * Z + np.dot(X, beta_t) + epsilon_sample(n)\n            beta_y = np.random.uniform(1, 3, size=(p,))\n            y = true_fn(X) * T + np.dot(X, beta_y) + epsilon_sample(n)\n            return y, T, Z, X\n\n        ests_list = [\n            OrthoIV(\n                projection=False,\n                discrete_treatment=False,\n                discrete_instrument=False,\n                fit_cate_intercept=True,\n            ),\n            OrthoIV(\n                projection=True,\n                discrete_treatment=False,\n                discrete_instrument=False,\n                fit_cate_intercept=True,\n            ),\n        ]\n\n        # no heterogeneity\n        n = 2000\n        p = 5\n        true_ate = 1.3\n\n        def true_fn(X):\n            return true_ate\n        y, T, Z, X = dgp(n, p, true_fn)\n        for est in ests_list:\n            with self.subTest(projection=est.projection):\n                est.fit(y, T, Z=Z, X=None, W=X, inference=\"auto\")\n                ate_lb, ate_ub = est.effect_interval()\n                np.testing.assert_array_less(ate_lb, true_ate)\n                np.testing.assert_array_less(true_ate, ate_ub)\n\n    def test_groups(self):\n        n = 500\n        d_w = 10\n        d_x = 3\n        W = np.random.normal(size=(n, d_w))\n        X = np.random.normal(size=(n, d_x))\n        T = np.random.choice([\"a\", \"b\"], size=(n,))\n        Z = np.random.choice([\"c\", \"d\"], size=(n,))\n        groups = [i // 4 for i in range(n)]\n        y = groups\n        n_copies = {i: 4 for i in range(125)}\n        ct_lims = (62, 63)  # floor(n_groups / 2), ceil(n_groups / 2)\n\n        est_list = [\n            OrthoIV(\n                projection=False,\n                discrete_treatment=True,\n                discrete_instrument=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims, n_copies),\n                model_t_xw=LogisticRegression(),\n                model_z_xw=LogisticRegression(),\n            ),\n            OrthoIV(\n                projection=True,\n                discrete_treatment=True,\n                discrete_instrument=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims, n_copies),\n                model_t_xw=LogisticRegression(),\n                model_t_xwz=LogisticRegression(),\n            ),\n            DMLIV(\n                model_final=LinearRegression(fit_intercept=False),\n                discrete_treatment=True,\n                discrete_instrument=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims, n_copies),\n                model_t_xw=LogisticRegression(),\n                model_t_xwz=LogisticRegression(),\n            ),\n            NonParamDMLIV(\n                model_final=RandomForestRegressor(),\n                discrete_treatment=True,\n                discrete_instrument=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims, n_copies),\n                model_t_xw=LogisticRegression(),\n                model_t_xwz=LogisticRegression(),\n            ),\n        ]\n\n        for est in est_list:\n            with self.subTest(est=type(est).__name__, projection=getattr(est, 'projection', None)):\n                est.fit(y, T, Z=Z, X=X, W=W, groups=groups)\n                est.score(y, T, Z=Z, X=X, W=W)\n                est.const_marginal_effect(X)\n"
  },
  {
    "path": "econml/tests/test_dominicks.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport os.path\nimport pandas as pd\nimport numpy as np\nimport urllib.request\nfrom econml.utilities import reshape, shape\nfrom econml.dml import LinearDML\nfrom sklearn.base import TransformerMixin\nfrom sklearn.ensemble import RandomForestRegressor\nimport pytest\n\n\n@pytest.mark.xfail(\n    reason=\"This test used to work, but fully downloading the blob has become flaky. Needs investigation.\")\ndef test_dominicks():\n    file_name = \"oj_large.csv\"\n    if not os.path.isfile(file_name):\n        print(\"Downloading file (this might take a few seconds)...\")\n        urllib.request.urlretrieve(\n            \"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/OrangeJuice/oj_large.csv\",\n            file_name)\n    oj_data = pd.read_csv(file_name)\n\n    brands = sorted(set(oj_data[\"brand\"]))\n    stores = sorted(set(oj_data[\"store\"]))\n\n    featnames = [\"week\", \"feat\"] + list(oj_data.columns[6:])\n\n    # Preprocess data\n\n    # Convert 'week' to a date\n    # week_zero = datetime.datetime.strptime(\"09/07/89\", \"%m/%d/%y\")\n    # oj_data[\"week\"] = pd.to_timedelta(oj_data[\"week\"], unit='w') + week_zero\n\n    # Take log of price\n    oj_data[\"logprice\"] = np.log(oj_data[\"price\"])\n    oj_data.drop(\"price\", axis=1, inplace=True)\n\n    # Make brand numeric\n    oj_data[\"brand\"] = [brands.index(b) for b in oj_data[\"brand\"]]\n\n    class PriceFeaturizer(TransformerMixin):\n        def __init__(self, n_prods, own_price=True,\n                     cross_price_groups=False, cross_price_indiv=True, per_product_effects=True):\n            base_arrays = []\n            effect_names = []\n            one_hots = [(0,) * p + (1,) + (0,) * (n_prods - p - 1) for p in range(n_prods)]\n            if own_price:\n                base_arrays.append(np.eye(n_prods))\n                effect_names.append(\"own price\")\n            if cross_price_groups:\n                base_arrays.append((np.ones((n_prods, n_prods)) - np.eye(n_prods)) / (n_prods - 1))\n                effect_names.append(\"group cross price\")\n            if cross_price_indiv:\n                for p in range(n_prods):\n                    base_arrays.append(one_hots[p] * np.ones((n_prods, 1)) - np.diag(one_hots[p]))\n                    effect_names.append(\"cross price effect {} ->\".format(p))\n            if per_product_effects:\n                all = [(np.diag(one_hots[p]) @ arr, nm + \" {}\".format(p))\n                       for arr, nm in zip(base_arrays, effect_names) for p in range(n_prods)]\n                # remove meaningless features (e.g. cross-price effects of products on themselves),\n                # which have all zero coeffs\n                nonempty = [(arr, nm) for arr, nm in all if np.count_nonzero(arr) > 0]\n                self._features = [arr for arr, _ in nonempty]\n                self._names = [nm for _, nm in nonempty]\n            else:\n                self._features = base_arrays\n                self._names = effect_names\n\n        def fit(self, X):\n            self._is_fitted = True\n            assert shape(X)[1] == 0\n            return self\n\n        def transform(self, X):\n            assert self._is_fitted\n            assert shape(X)[1] == 0\n            return np.tile(self._features, (shape(X)[0], 1, 1, 1))\n\n        @property\n        def names(self):\n            return self._names\n\n    for name, op, xp_g, xp_i, pp in [(\"Homogeneous treatment effect\", True, False, False, False),\n                                     (\"Heterogeneous treatment effects\", True, False, False, True),\n                                     ((\"Heterogeneous treatment effects\"\n                                       \" with group effects\"), True, True, False, True),\n                                     ((\"Heterogeneous treatment effects\"\n                                       \" with cross price effects\"), True, False, True, True)]:\n\n        print(name)\n        np.random.seed(42)\n\n        ft = PriceFeaturizer(n_prods=3, own_price=op, cross_price_groups=xp_g,\n                             cross_price_indiv=xp_i, per_product_effects=pp)\n        names = ft.names\n        dml = LinearDML(model_y=RandomForestRegressor(),\n                        model_t=RandomForestRegressor(),\n                        featurizer=ft,\n                        cv=2)\n\n        effects = []\n        for store in stores:\n            data = oj_data[oj_data['store'] == store].sort_values(by=['week', 'brand'])\n            dml.fit(T=reshape(data.as_matrix([\"logprice\"]), (-1, 3)),\n                    Y=reshape(data.as_matrix([\"logmove\"]), (-1, 3)),\n                    W=reshape(data.as_matrix(featnames), (-1, 3 * len(featnames))))\n            effects.append(dml.coef_)\n        effects = np.array(effects)\n        for nm, eff in zip(names, effects.T):\n            print(\" Effect: {}\".format(nm))\n            print(\"   Mean: {}\".format(np.mean(eff)))\n            print(\"   Std.: {}\".format(np.std(eff)))\n\n    class ConstFt(TransformerMixin):\n        def fit(self, X):\n            return self\n\n        def transform(self, X):\n            return np.ones((shape(X)[0], 1))\n\n    print(\"Vanilla HTE+XP\")\n\n    np.random.seed(42)\n    dml = LinearDML(model_y=RandomForestRegressor(),\n                    model_t=RandomForestRegressor(),\n                    featurizer=ConstFt(),\n                    cv=2)\n\n    effects = []\n    for store in stores:\n        data = oj_data[oj_data['store'] == store].sort_values(by=['week', 'brand'])\n        dml.fit(T=reshape(data.as_matrix([\"logprice\"]), (-1, 3)),\n                Y=reshape(data.as_matrix([\"logmove\"]), (-1, 3)),\n                W=reshape(data.as_matrix(featnames), (-1, 3 * len(featnames))))\n        effects.append(dml.coef_)\n    effects = np.array(effects)\n    names = [\"{} on {}\".format(i, j) for j in range(3) for i in range(3)]\n    for nm, eff in zip(names, reshape(effects, (-1, 9)).T):\n        print(\" Effect: {}\".format(nm))\n        print(\"   Mean: {}\".format(np.mean(eff)))\n        print(\"   Std.: {}\".format(np.std(eff)))\n"
  },
  {
    "path": "econml/tests/test_dowhy.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport pandas as pd\nimport unittest\nfrom econml.dml import LinearDML, CausalForestDML\nfrom econml.orf import DROrthoForest\nfrom econml.dr import DRLearner, ForestDRLearner, LinearDRLearner\nfrom econml.metalearners import XLearner\nfrom econml.iv.dml import OrthoIV, DMLIV\nfrom econml.iv.dr import LinearDRIV\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\n\n\nclass TestDowhy(unittest.TestCase):\n\n    def _get_data(self):\n        X = np.random.normal(0, 1, size=(250, 5))\n        T = np.random.binomial(1, .5, size=(250,))\n        Y = np.random.normal(0, 1, size=(250,))\n        Z = np.random.normal(0, 1, size=(250,))\n        return Y, T, X[:, [0]], X[:, 1:], Z\n\n    def test_dowhy(self):\n        def reg():\n            return LinearRegression()\n\n        def clf():\n            return LogisticRegression()\n\n        Y, T, X, W, Z = self._get_data()\n        # test at least one estimator from each category\n        models = {\"dml\": LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True),\n                  \"dr\": DRLearner(model_propensity=clf(), model_regression=reg(),\n                                  model_final=reg()),\n                  \"forestdr\": ForestDRLearner(model_propensity=clf(), model_regression=reg()),\n                  \"xlearner\": XLearner(models=reg(), cate_models=reg(), propensity_model=clf()),\n                  \"cfdml\": CausalForestDML(model_y=reg(), model_t=clf(), discrete_treatment=True),\n                  \"orf\": DROrthoForest(n_trees=10, propensity_model=clf(), model_Y=reg()),\n                  \"orthoiv\": OrthoIV(model_y_xw=reg(),\n                                     model_t_xw=clf(),\n                                     model_z_xw=reg(),\n                                     discrete_treatment=True,\n                                     discrete_instrument=False),\n                  \"dmliv\": DMLIV(fit_cate_intercept=True,\n                                 discrete_treatment=True,\n                                 discrete_instrument=False),\n                  \"driv\": LinearDRIV(flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                                     fit_cate_intercept=True,\n                                     discrete_instrument=False,\n                                     discrete_treatment=True)}\n        for name, model in models.items():\n            with self.subTest(name=name):\n                est = model\n                if name == \"xlearner\":\n                    est_dowhy = est.dowhy.fit(Y, T, X=np.hstack((X, W)), W=None)\n                elif name in [\"orthoiv\", \"dmliv\", \"driv\"]:\n                    est_dowhy = est.dowhy.fit(Y, T, Z=Z, X=X, W=W)\n                else:\n                    est_dowhy = est.dowhy.fit(Y, T, X=X, W=W)\n                # test causal graph\n                # need to set matplotlib backend before viewing model\n\n                import matplotlib\n                matplotlib.use('Agg')\n\n                est_dowhy.view_model(layout=None)\n                # test refutation estimate\n                est_dowhy.refute_estimate(method_name=\"random_common_cause\", num_simulations=3)\n                if name != \"orf\":\n                    est_dowhy.refute_estimate(method_name=\"add_unobserved_common_cause\",\n                                              confounders_effect_on_treatment=\"binary_flip\",\n                                              confounders_effect_on_outcome=\"linear\",\n                                              effect_strength_on_treatment=0.1,\n                                              effect_strength_on_outcome=0.1,)\n                    est_dowhy.refute_estimate(method_name=\"placebo_treatment_refuter\", placebo_type=\"permute\",\n                                              num_simulations=3)\n                    est_dowhy.refute_estimate(method_name=\"data_subset_refuter\", subset_fraction=0.8,\n                                              num_simulations=3)\n\n    def test_store_dataframe_name(self):\n        Y, T, X, W, Z = self._get_data()\n        Y_name = \"outcome\"\n        Y = pd.Series(Y, name=Y_name)\n        T_name = \"treatment\"\n        T = pd.Series(T, name=T_name)\n        X_name = [\"feature\"]\n        X = pd.DataFrame(X, columns=X_name)\n        W_name = [\"control1\", \"control2\", \"control3\", \"control4\"]\n        W = pd.DataFrame(W, columns=W_name)\n        est = LinearDRLearner().dowhy.fit(Y, T, X, W)\n        np.testing.assert_array_equal(est._common_causes, X_name + W_name)\n        np.testing.assert_array_equal(est._effect_modifiers, X_name)\n        np.testing.assert_array_equal(est._treatment, [T_name])\n        np.testing.assert_array_equal(est._outcome, [Y_name])\n\n    def test_dowhy_without_fit(self):\n        with self.assertRaises(AttributeError) as context:\n            LinearDRLearner().dowhy.refute_estimate(method_name=\"random_common_cause\", num_simulations=3)\n        self.assertTrue(\"Please call `DoWhyWrapper.fit` first before any other operations.\" in str(context.exception))\n\n        with self.assertRaises(AttributeError) as context:\n            LinearDRLearner().dowhy._estimator_object\n        self.assertTrue(\"call `DoWhyWrapper.fit` first before any other operations.\" in str(context.exception))\n"
  },
  {
    "path": "econml/tests/test_driv.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom econml.iv.dr import (DRIV, LinearDRIV, SparseLinearDRIV, ForestDRIV, IntentToTreatDRIV, LinearIntentToTreatDRIV,)\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\nfrom econml.utilities import shape\nfrom econml.tests.utilities import GroupingModel\n\nimport itertools\nimport numpy as np\nimport pytest\nimport pickle\nfrom scipy import special\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import LassoCV, LinearRegression, LogisticRegression\nimport unittest\n\ntry:\n    import ray\n\n    ray_installed = True\nexcept ImportError:\n    ray_installed = False\n\n\n@pytest.mark.cate_api\nclass TestDRIV(unittest.TestCase):\n    def _test_cate_api(self, use_ray=False):\n        def const_marg_eff_shape(n, d_x, binary_T):\n            \"\"\"Constant marginal effect shape.\"\"\"\n            return (n if d_x else 1,) + ((1,) if binary_T else ())\n\n        def marg_eff_shape(n, binary_T):\n            \"\"\"Marginal effect shape.\"\"\"\n            return (n,) + ((1,) if binary_T else ())\n\n        def eff_shape(n, d_x):\n            \"\"\"Effect shape.\"\"\"\n            return (n if d_x else 1,)\n\n        n = 500\n        y = np.random.normal(size=(n,))\n\n        # parameter combinations to test\n        for d_w, d_x, binary_T, binary_Z, projection, fit_cov_directly, featurizer\\\n            in itertools.product(\n                [None, 10],     # d_w\n                [None, 3],      # d_x\n                [True, False],  # binary_T\n                [True, False],  # binary_Z\n                [True, False],  # projection\n                [True, False],  # fit_cov_directly\n                [None, PolynomialFeatures(degree=2, include_bias=False), ],):    # featurizer\n\n            if d_w is None:\n                W = None\n            else:\n                W = np.random.normal(size=(n, d_w))\n\n            if d_x is None:\n                X = None\n            else:\n                X = np.random.normal(size=(n, d_x))\n\n            if binary_T:\n                T = np.random.choice([\"a\", \"b\"], size=(n,))\n            else:\n                T = np.random.normal(size=(n,))\n\n            if binary_Z:\n                Z = np.random.choice([\"c\", \"d\"], size=(n,))\n            else:\n                Z = np.random.normal(size=(n,))\n\n            est_list = [\n                # we're running a lot of tests, so use fixed models instead of model selection\n                DRIV(\n                    model_y_xw=LinearRegression(),\n                    model_t_xw=LogisticRegression() if binary_T else LinearRegression(),\n                    model_tz_xw=LogisticRegression() if binary_T and binary_Z and not (\n                        projection or fit_cov_directly) else LinearRegression(),\n                    model_t_xwz=\"auto\" if not projection else LogisticRegression() if binary_T else LinearRegression(),\n                    model_z_xw=\"auto\" if projection else LogisticRegression() if binary_Z else LinearRegression(),\n                    flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                    model_final=StatsModelsLinearRegression(\n                        fit_intercept=False\n                    ),\n                    fit_cate_intercept=True,\n                    projection=projection,\n                    fit_cov_directly=fit_cov_directly,\n                    discrete_instrument=binary_Z,\n                    discrete_treatment=binary_T,\n                    featurizer=featurizer,\n                    use_ray=use_ray,\n                ),\n                LinearDRIV(\n                    model_y_xw=LinearRegression(),\n                    model_t_xw=LogisticRegression() if binary_T else LinearRegression(),\n                    model_tz_xw=LogisticRegression() if binary_T and binary_Z and not (\n                        projection or fit_cov_directly) else LinearRegression(),\n                    model_t_xwz=\"auto\" if not projection else LogisticRegression() if binary_T else LinearRegression(),\n                    model_z_xw=\"auto\" if projection else LogisticRegression() if binary_Z else LinearRegression(),\n                    flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                    fit_cate_intercept=True,\n                    projection=projection,\n                    fit_cov_directly=fit_cov_directly,\n                    discrete_instrument=binary_Z,\n                    discrete_treatment=binary_T,\n                    featurizer=featurizer,\n                    use_ray=use_ray,\n                ),\n                SparseLinearDRIV(\n                    model_y_xw=LinearRegression(),\n                    model_t_xw=LogisticRegression() if binary_T else LinearRegression(),\n                    model_tz_xw=LogisticRegression() if binary_T and binary_Z and not (\n                        projection or fit_cov_directly) else LinearRegression(),\n                    model_t_xwz=\"auto\" if not projection else LogisticRegression() if binary_T else LinearRegression(),\n                    model_z_xw=\"auto\" if projection else LogisticRegression() if binary_Z else LinearRegression(),\n                    flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                    fit_cate_intercept=True,\n                    projection=projection,\n                    fit_cov_directly=fit_cov_directly,\n                    discrete_instrument=binary_Z,\n                    discrete_treatment=binary_T,\n                    featurizer=featurizer,\n                    use_ray=use_ray,\n                ),\n                ForestDRIV(\n                    model_y_xw=LinearRegression(),\n                    model_t_xw=LogisticRegression() if binary_T else LinearRegression(),\n                    model_tz_xw=LogisticRegression() if binary_T and binary_Z and not (\n                        projection or fit_cov_directly) else LinearRegression(),\n                    model_t_xwz=\"auto\" if not projection else LogisticRegression() if binary_T else LinearRegression(),\n                    model_z_xw=\"auto\" if projection else LogisticRegression() if binary_Z else LinearRegression(),\n                    flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                    projection=projection,\n                    fit_cov_directly=fit_cov_directly,\n                    discrete_instrument=binary_Z,\n                    discrete_treatment=binary_T,\n                    featurizer=featurizer,\n                    use_ray=use_ray,\n                ),\n            ]\n\n            if X is None:\n                est_list = est_list[:-1]  # ForestDRIV doesn't support X=None\n\n            # IntentToTreatDRIV only supports binary treatments and instruments, and doesn't support fit_cov_directly\n            if binary_T and binary_Z and not fit_cov_directly:\n                est_list += [\n                    IntentToTreatDRIV(\n                        model_y_xw=LinearRegression(),\n                        model_t_xwz=LogisticRegression(),\n                        flexible_model_effect=StatsModelsLinearRegression(\n                            fit_intercept=False\n                        ),\n                        fit_cate_intercept=True,\n                        featurizer=featurizer,\n                        use_ray=use_ray,\n                    ),\n                    LinearIntentToTreatDRIV(\n                        model_y_xw=LinearRegression(),\n                        model_t_xwz=LogisticRegression(),\n                        flexible_model_effect=StatsModelsLinearRegression(\n                            fit_intercept=False\n                        ),\n                        featurizer=featurizer,\n                        use_ray=use_ray,\n                    ),\n                ]\n\n            for est in est_list:\n                with self.subTest(d_w=d_w, d_x=d_x, binary_T=binary_T, binary_Z=binary_Z,\n                                  projection=projection, fit_cov_directly=fit_cov_directly,\n                                  featurizer=repr(featurizer), est=type(est).__name__):\n\n                    # TODO: serializing/deserializing for every combination -- is this necessary?\n                    # ensure we can serialize unfit estimator\n                    pickle.dumps(est)\n\n                    est.fit(y, T, Z=Z, X=X, W=W)\n\n                    # ensure we can serialize fit estimator\n                    pickle.dumps(est)\n\n                    # expected effect size\n                    exp_const_marginal_effect_shape = const_marg_eff_shape(n, d_x, binary_T)\n                    marginal_effect_shape = marg_eff_shape(n, binary_T)\n                    effect_shape = eff_shape(n, d_x)\n\n                    # assert calculated constant marginal effect shape is expected\n                    # const_marginal effect is defined in LinearCateEstimator class\n                    const_marg_eff = est.const_marginal_effect(X)\n                    self.assertEqual(shape(const_marg_eff), exp_const_marginal_effect_shape)\n\n                    # assert calculated marginal effect shape is expected\n                    marg_eff = est.marginal_effect(T, X)\n                    self.assertEqual(shape(marg_eff), marginal_effect_shape)\n\n                    T0 = \"a\" if binary_T else 0\n                    T1 = \"b\" if binary_T else 1\n                    eff = est.effect(X, T0=T0, T1=T1)\n                    self.assertEqual(shape(eff), effect_shape)\n\n                    # test inference\n                    const_marg_eff_int = est.const_marginal_effect_interval(X)\n                    marg_eff_int = est.marginal_effect_interval(T, X)\n                    eff_int = est.effect_interval(X, T0=T0, T1=T1)\n                    self.assertEqual(shape(const_marg_eff_int), (2,) + exp_const_marginal_effect_shape)\n                    self.assertEqual(shape(marg_eff_int), (2,) + marginal_effect_shape)\n                    self.assertEqual(shape(eff_int), (2,) + effect_shape)\n\n                    # test can run score\n                    est.score(y, T, Z=Z, X=X, W=W)\n\n                    if X is not None:\n                        # test cate_feature_names\n                        expect_feat_len = featurizer.fit(\n                            X).n_output_features_ if featurizer else d_x\n                        self.assertEqual(len(est.cate_feature_names()), expect_feat_len)\n\n                        # test can run shap values\n                        _ = est.shap_values(X[:10])\n\n    @pytest.mark.ray\n    def test_cate_api_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_cate_api(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_cate_api_without_ray(self):\n        self._test_cate_api(use_ray=False)\n\n    def _test_accuracy(self, use_ray=False):\n        np.random.seed(0)\n\n        # dgp (binary T, binary Z)\n\n        def dgp(n, p, true_fn):\n            X = np.random.normal(0, 1, size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            nu = np.random.uniform(0, 10, size=(n,))\n            coef_Z = 0.8\n            C = np.random.binomial(\n                1, coef_Z * special.expit(0.4 * X[:, 0] + nu)\n            )  # Compliers when recomended\n            C0 = np.random.binomial(\n                1, 0.06 * np.ones(X.shape[0])\n            )  # Non-compliers when not recommended\n            T = C * Z + C0 * (1 - Z)\n            y = true_fn(X) * T + 2 * nu + 5 * (X[:, 3] > 0) + 0.1 * np.random.uniform(0, 1, size=(n,))\n            return y, T, Z, X\n\n        ests_list = [LinearIntentToTreatDRIV(\n            flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False), fit_cate_intercept=True,\n            use_ray=use_ray\n        ), LinearDRIV(\n            fit_cate_intercept=True,\n            projection=False,\n            discrete_instrument=True,\n            discrete_treatment=True,\n            flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n            use_ray=use_ray\n        )]\n        for est in ests_list:\n            with self.subTest(est=type(est).__name__):\n                # no heterogeneity\n                n = 1000\n                p = 10\n                true_ate = 10\n\n                def true_fn(X):\n                    return true_ate\n                y, T, Z, X = dgp(n, p, true_fn)\n\n                est.fit(y, T, Z=Z, X=None, W=X, inference=\"auto\")\n                ate_lb, ate_ub = est.ate_interval()\n                np.testing.assert_array_less(ate_lb, true_ate)\n                np.testing.assert_array_less(true_ate, ate_ub)\n\n                # with heterogeneity\n                true_coef = 10\n\n                def true_fn(X):\n                    return true_coef * X[:, 0]\n                y, T, Z, X = dgp(n, p, true_fn)\n\n                est.fit(y, T, Z=Z, X=X[:, [0]], W=X[:, 1:], inference=\"auto\")\n                coef_lb, coef_ub = est.coef__interval()\n                intercept_lb, intercept_ub = est.intercept__interval(alpha=0.05)\n                np.testing.assert_array_less(coef_lb, true_coef)\n                np.testing.assert_array_less(true_coef, coef_ub)\n                np.testing.assert_array_less(intercept_lb, 0)\n                np.testing.assert_array_less(0, intercept_ub)\n\n    @pytest.mark.ray\n    def test_accuracy_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_accuracy(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_accuracy_without_ray(self):\n        self._test_accuracy(use_ray=False)\n\n    def test_fit_cov_directly(self):\n        # fitting the covariance directly should be at least as good as computing the covariance from separate models\n\n        # set the models so that model selection over random forests doesn't take too much time in the repeated trials\n        est = LinearDRIV(model_y_xw=LinearRegression(), model_t_xw=LinearRegression(), model_z_xw=LinearRegression(),\n                         model_tz_xw=LassoCV())\n\n        n = 500\n        p = 10\n        true_coef = 10\n\n        n_trials = 201\n        wins = 0\n\n        for _ in range(n_trials):\n\n            X = np.random.normal(size=(n, p))\n            Z = np.random.binomial(1, 0.5, size=(n,))\n            u = np.random.normal(size=(n,))  # unmeasured confounder\n            T = np.random.binomial(1, special.expit(X[:, 0] + Z + u))\n            y = np.random.normal(size=(n,)) + true_coef * X[:, 0] * T + u\n\n            est.fit_cov_directly = False\n            est.fit(y, T, Z=Z, X=X[:, [0]], W=X[:, 1:])\n            coef_indirect = est.coef_\n\n            est.fit_cov_directly = True\n            est.fit(y, T, Z=Z, X=X[:, [0]], W=X[:, 1:])\n            coef_direct = est.coef_\n\n            # directly fitting the covariance should be better than indirectly fitting it\n            if (np.linalg.norm(coef_direct - true_coef) <\n                    np.linalg.norm(coef_indirect - true_coef)):\n                wins += 1\n        print(\"wins: \", wins)\n        self.assertGreater(wins, n_trials / 2)\n\n    def test_groups(self):\n        n = 500\n        d_w = 10\n        d_x = 3\n        W = np.random.normal(size=(n, d_w))\n        X = np.random.normal(size=(n, d_x))\n        T = np.random.choice([\"a\", \"b\"], size=(n,))\n        Z = np.random.choice([\"c\", \"d\"], size=(n,))\n        groups = [i // 4 for i in range(n)]\n        y = groups\n        n_copies = {i: 4 for i in range(125)}\n\n        def ceil(a, b):  # ceiling analog of //\n            return -(a // -b)\n        ct_lims_2 = (125 // 2, ceil(125, 2))\n        ct_lims_3 = (125 - ceil(125, 3), 125 - 125 // 3)\n\n        est_list = [\n            DRIV(\n                discrete_instrument=True,\n                discrete_treatment=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_2, n_copies),\n                model_z_xw=LogisticRegression(),\n                model_t_xw=LogisticRegression(),\n                model_tz_xw=LinearRegression(),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            ),\n            LinearDRIV(\n                discrete_instrument=True,\n                discrete_treatment=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_2, n_copies),\n                model_z_xw=LogisticRegression(),\n                model_t_xw=LogisticRegression(),\n                model_tz_xw=LinearRegression(),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            ),\n            SparseLinearDRIV(\n                discrete_instrument=True,\n                discrete_treatment=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_2, n_copies),\n                model_z_xw=LogisticRegression(),\n                model_t_xw=LogisticRegression(),\n                model_tz_xw=LinearRegression(),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            ),\n            ForestDRIV(\n                discrete_instrument=True,\n                discrete_treatment=True,\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_2, n_copies),\n                model_z_xw=LogisticRegression(),\n                model_t_xw=LogisticRegression(),\n                model_tz_xw=LinearRegression(),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            ),\n            IntentToTreatDRIV(\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_3, n_copies),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            ),\n            LinearIntentToTreatDRIV(\n                model_y_xw=GroupingModel(LinearRegression(), n, ct_lims_3, n_copies),\n                model_t_xwz=LogisticRegression(),\n                prel_cate_approach='dmliv'\n            )\n        ]\n\n        for est in est_list:\n            with self.subTest(est=type(est).__name__):\n                est.fit(y, T, Z=Z, X=X, W=W, groups=groups)\n                est.score(y, T, Z=Z, X=X, W=W)\n                est.const_marginal_effect(X)\n"
  },
  {
    "path": "econml/tests/test_drlearner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom contextlib import ExitStack\nimport pickle\nimport unittest\n\nimport numpy as np\nimport pytest\n\nimport scipy.special\nfrom sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor, RandomForestRegressor\nfrom sklearn.exceptions import DataConversionWarning\nfrom sklearn.linear_model import LinearRegression, Lasso, LassoCV, LogisticRegression, LogisticRegressionCV\nfrom sklearn.model_selection import KFold, StratifiedGroupKFold\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import FunctionTransformer, PolynomialFeatures\n\nfrom econml.dr import DRLearner, LinearDRLearner, SparseLinearDRLearner, ForestDRLearner\nfrom econml.inference import BootstrapInference, StatsModelsInferenceDiscrete\nfrom econml.utilities import get_feature_names_or_default, shape\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\nfrom econml.tests.utilities import (GroupingModel, NestedModel)\n\ntry:\n    import ray\n\n    ray_installed = True\nexcept ImportError:\n    ray_installed = False\n\n\n@pytest.mark.serial\nclass TestDRLearner(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        # Set random seed\n        cls.random_state = np.random.RandomState(12345)\n        # Generate data\n        # DGP constants\n        cls.d = 5\n        cls.n = 1000\n        cls.n_test = 200\n        cls.beta = np.array([0.25, -0.38, 1.41, 0.50, -1.22])\n        cls.heterogeneity_index = 1\n        # Test data\n        cls.X_test = cls.random_state.multivariate_normal(\n            np.zeros(cls.d),\n            np.diag(np.ones(cls.d)),\n            cls.n_test)\n        # Constant treatment effect and propensity\n        cls.const_te_data = TestDRLearner._generate_data(\n            cls.n, cls.d, cls._untreated_outcome,\n            treatment_effect=TestDRLearner._const_te,\n            propensity=lambda x: 0.3)\n        # Heterogeneous treatment and propensity\n        cls.heterogeneous_te_data = TestDRLearner._generate_data(\n            cls.n, cls.d, cls._untreated_outcome,\n            treatment_effect=TestDRLearner._heterogeneous_te,\n            propensity=lambda x: (0.8 if (x[2] > -0.5 and x[2] < 0.5) else 0.2))\n\n    def _test_cate_api(self, use_ray=False):\n        \"\"\"Test that we correctly implement the CATE API.\"\"\"\n        n = 20\n\n        def make_random(is_discrete, d):\n            if d is None:\n                return None\n            sz = (n, d) if d > 0 else (n,)\n            if is_discrete:\n                while True:\n                    arr = np.random.choice(['a', 'b', 'c'], size=sz)\n                    # ensure that we've got at least two of every element\n                    _, counts = np.unique(arr, return_counts=True)\n                    if len(counts) == 3 and counts.min() > 1:\n                        return arr\n            else:\n                return np.random.normal(size=sz)\n\n        for d_y in [0, 1]:\n            is_discrete = True\n            for d_t in [0, 1]:\n                for d_x in [2, None]:\n                    for d_w in [2, None]:\n                        W, X, Y, T = [make_random(is_discrete, d)\n                                      for is_discrete, d in [(False, d_w),\n                                                             (False, d_x),\n                                                             (False, d_y),\n                                                             (is_discrete, d_t)]]\n\n                        if (X is None) and (W is None):\n                            continue\n                        d_t_final = 2 if is_discrete else d_t\n\n                        effect_shape = (n,) + ((d_y,) if d_y > 0 else ())\n                        effect_summaryframe_shape = (\n                            n * (d_y if d_y > 0 else 1), 6)\n                        marginal_effect_shape = ((n,) +\n                                                 ((d_y,) if d_y > 0 else ()) +\n                                                 ((d_t_final,) if d_t_final > 0 else ()))\n                        marginal_effect_summaryframe_shape = (\n                            n * (d_y if d_y > 0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n\n                        # since T isn't passed to const_marginal_effect, defaults to one row if X is None\n                        const_marginal_effect_shape = ((n if d_x else 1,) +\n                                                       ((d_y,) if d_y > 0 else ()) +\n                                                       ((d_t_final,) if d_t_final > 0 else ()))\n                        const_marginal_effect_summaryframe_shape = (\n                            (n if d_x else 1) * (d_y if d_y > 0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n\n                        coef_shape = ((d_y,) if d_y > 0 else ()) + (d_x or 1,)\n                        coef_summaryframe_shape = ((d_y or 1) * (d_x or 1), 6)\n\n                        intercept_shape = (d_y,) if d_y > 0 else ()\n                        intercept_summaryframe_shape = (d_y if d_y > 0 else 1, 6)\n\n                        for est in [LinearDRLearner(model_propensity=LogisticRegression(C=1000, solver='lbfgs',\n                                                                                        multi_class='auto'),\n                                                    use_ray=use_ray),\n                                    DRLearner(model_propensity=LogisticRegression(multi_class='auto'),\n                                              model_regression=LinearRegression(),\n                                              model_final=StatsModelsLinearRegression(),\n                                              multitask_model_final=True, use_ray=use_ray)]:\n\n                            # ensure that we can serialize unfit estimator\n                            pickle.dumps(est)\n\n                            infs = [None, BootstrapInference(2)]\n\n                            test_linear_attrs = False\n\n                            if isinstance(est, LinearDRLearner):\n                                infs.append('auto')\n                                test_linear_attrs = True\n\n                            for inf in infs:\n                                with self.subTest(d_w=d_w, d_x=d_x, d_y=d_y, d_t=d_t,\n                                                  is_discrete=is_discrete, est=type(est).__name__, inf=repr(inf)):\n                                    est.fit(Y, T, X=X, W=W, inference=inf)\n\n                                    # ensure that we can serialize fit estimator\n                                    pickle.dumps(est)\n\n                                    # make sure sensitivity methods can be called.\n                                    # allow for data-dependent error with negative sigma, nu\n                                    for T_val in ['b', 'c']:\n                                        for func in [est.sensitivity_interval,\n                                                     est.robustness_value,\n                                                     est.sensitivity_summary]:\n                                            try:\n                                                func(T=T_val)\n                                            except ValueError as e:\n                                                self.assertIn('sigma and nu must be non-negative', str(e))\n\n                                    # ensure sensitivity analysis fails on control\n                                    with pytest.raises(AssertionError):\n                                        est.sensitivity_interval(T='a')\n\n                                    with pytest.raises(AssertionError):\n                                        est.robustness_value(T='a')\n\n                                    with pytest.raises(AssertionError):\n                                        est.sensitivity_summary(T='a')\n\n                                    # ensure failure on unknown treatment values\n                                    with pytest.raises(ValueError, match='not in the list of treatments'):\n                                        est.sensitivity_interval(T=1)\n\n                                    with pytest.raises(ValueError, match='not in the list of treatments'):\n                                        est.robustness_value(T=1)\n\n                                    with pytest.raises(ValueError, match='not in the list of treatments'):\n                                        est.sensitivity_summary(T=1)\n\n\n                                    # make sure we can call the marginal_effect and effect methods\n                                    const_marg_eff = est.const_marginal_effect(\n                                        X)\n                                    marg_eff = est.marginal_effect(T, X)\n                                    self.assertEqual(\n                                        shape(marg_eff), marginal_effect_shape)\n                                    self.assertEqual(\n                                        shape(const_marg_eff), const_marginal_effect_shape)\n\n                                    np.testing.assert_array_equal(\n                                        marg_eff if d_x else marg_eff[0:1], const_marg_eff)\n\n                                    T0 = np.full_like(T, 'a')\n                                    eff = est.effect(X, T0=T0, T1=T)\n                                    self.assertEqual(shape(eff), effect_shape)\n                                    if inf is not None:\n                                        T1 = np.full_like(T, 'b')\n\n                                        const_marg_eff_int = est.const_marginal_effect_interval(\n                                            X)\n                                        marg_eff_int = est.marginal_effect_interval(\n                                            T, X)\n                                        self.assertEqual(shape(marg_eff_int),\n                                                         (2,) + marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_eff_int),\n                                                         (2,) + const_marginal_effect_shape)\n                                        self.assertEqual(shape(est.effect_interval(X, T0=T0, T1=T1)),\n                                                         (2,) + effect_shape)\n\n                                        const_marg_effect_inf = est.const_marginal_effect_inference(\n                                            X)\n                                        effect_inf = est.effect_inference(\n                                            X, T0=T0, T1=T1)\n                                        marg_effect_inf = est.marginal_effect_inference(\n                                            T, X)\n\n                                        # test const marginal inference\n                                        self.assertEqual(shape(const_marg_effect_inf.summary_frame()),\n                                                         const_marginal_effect_summaryframe_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.point_estimate),\n                                                         const_marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.stderr),\n                                                         const_marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.var),\n                                                         const_marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.pvalue()),\n                                                         const_marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.zstat()),\n                                                         const_marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_effect_inf.conf_int()),\n                                                         (2,) + const_marginal_effect_shape)\n                                        np.testing.assert_array_almost_equal(const_marg_effect_inf.conf_int()\n                                                                             [0], const_marg_eff_int[0], decimal=5)\n                                        const_marg_effect_inf.population_summary()._repr_html_()\n\n                                        # test effect inference\n                                        self.assertEqual(shape(effect_inf.summary_frame()),\n                                                         effect_summaryframe_shape)\n                                        self.assertEqual(shape(effect_inf.point_estimate),\n                                                         effect_shape)\n                                        self.assertEqual(shape(effect_inf.stderr),\n                                                         effect_shape)\n                                        self.assertEqual(shape(effect_inf.var),\n                                                         effect_shape)\n                                        self.assertEqual(shape(effect_inf.pvalue()),\n                                                         effect_shape)\n                                        self.assertEqual(shape(effect_inf.zstat()),\n                                                         effect_shape)\n                                        self.assertEqual(shape(effect_inf.conf_int()),\n                                                         (2,) + effect_shape)\n                                        np.testing.assert_array_almost_equal(effect_inf.conf_int()[0],\n                                                                             est.effect_interval(\n                                            X, T0=T0, T1=T1)[0],\n                                            decimal=5)\n                                        effect_inf.population_summary()._repr_html_()\n\n                                        # test marginal effect inference\n                                        self.assertEqual(shape(marg_effect_inf.summary_frame()),\n                                                         marginal_effect_summaryframe_shape)\n                                        self.assertEqual(shape(marg_effect_inf.point_estimate),\n                                                         marginal_effect_shape)\n                                        self.assertEqual(shape(marg_effect_inf.stderr),\n                                                         marginal_effect_shape)\n                                        self.assertEqual(shape(marg_effect_inf.var),\n                                                         marginal_effect_shape)\n                                        self.assertEqual(shape(marg_effect_inf.pvalue()),\n                                                         marginal_effect_shape)\n                                        self.assertEqual(shape(marg_effect_inf.zstat()),\n                                                         marginal_effect_shape)\n                                        self.assertEqual(shape(marg_effect_inf.conf_int()),\n                                                         (2,) + marginal_effect_shape)\n                                        np.testing.assert_array_almost_equal(marg_effect_inf.conf_int()[0],\n                                                                             marg_eff_int[0], decimal=5)\n                                        marg_effect_inf.population_summary()._repr_html_()\n\n                                        # test coef_ and intercept_ inference\n                                        if test_linear_attrs:\n                                            if X is not None:\n                                                self.assertEqual(shape(est.coef_('b')), coef_shape)\n                                                coef_inf = est.coef__inference('b')\n                                                self.assertEqual(shape(coef_inf.summary_frame()),\n                                                                 coef_summaryframe_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    coef_inf.conf_int()[0], est.coef__interval('b')[0])\n\n                                            self.assertEqual(shape(est.intercept_('b')), intercept_shape)\n                                            int_inf = est.intercept__inference('b')\n                                            self.assertEqual(shape(int_inf.summary_frame()),\n                                                             intercept_summaryframe_shape)\n                                            np.testing.assert_array_almost_equal(\n                                                int_inf.conf_int()[0], est.intercept__interval('b')[0])\n\n                                            # verify we can generate the summary\n                                            est.summary('b')\n\n                                    est.score(Y, T, X, W)\n\n                                    # make sure we can call effect with implied scalar treatments, no matter the\n                                    # dimensions of T, and also that we warn when there are multiple treatments\n                                    if d_t > 1:\n                                        cm = self.assertWarns(Warning)\n                                    else:\n                                        cm = ExitStack()  # ExitStack can be used as a \"do nothing\" ContextManager\n                                    with cm:\n                                        effect_shape2 = (n if d_x else 1,) + ((d_y,) if d_y > 0 else ())\n                                        eff = est.effect(X, T0='a', T1='b')\n                                        self.assertEqual(\n                                            shape(eff), effect_shape2)\n\n    @pytest.mark.ray\n    def test_test_cate_api_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_cate_api(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_test_cate_api_without_ray(self):\n        self._test_cate_api(use_ray=False)\n\n    # TODO Almost identical to DML test, so consider merging\n    def test_can_use_vectors(self):\n        \"\"\"Test that we can pass vectors for T and Y (not only 2-dimensional arrays).\"\"\"\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(\n                                  C=1000, solver='lbfgs', multi_class='auto'),\n                              fit_cate_intercept=False,\n                              featurizer=FunctionTransformer(validate=True))\n        dml.fit(np.array([1, 2, 1, 2]), np.array(\n            [1, 2, 1, 2]), X=np.ones((4, 1)))\n        self.assertAlmostEqual(dml.coef_(T=2).reshape(())[()], 1)\n\n    # TODO Almost identical to DML test, so consider merging\n    def test_can_use_sample_weights(self):\n        \"\"\"Test that we can pass sample weights to an estimator.\"\"\"\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(\n                                  C=1000, solver='lbfgs', multi_class='auto'),\n                              featurizer=FunctionTransformer(validate=True))\n        dml.fit(np.array([1, 2, 1, 2]), np.array([1, 2, 1, 2]), W=np.ones((4, 1)),\n                sample_weight=np.ones((4, )))\n        self.assertAlmostEqual(dml.intercept_(T=2), 1)\n\n    # TODO Almost identical to DML test, so consider merging\n    def test_discrete_treatments(self):\n        \"\"\"Test that we can use discrete treatments.\"\"\"\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(\n                                  C=1000, solver='lbfgs', multi_class='auto'),\n                              featurizer=FunctionTransformer(validate=True))\n        # create a simple artificial setup where effect of moving from treatment\n        #     1 -> 2 is 2,\n        #     1 -> 3 is 1, and\n        #     2 -> 3 is -1 (necessarily, by composing the previous two effects)\n        # Using an uneven number of examples from different classes,\n        # and having the treatments in non-lexicographic order,\n        # Should rule out some basic issues.\n        dml.fit(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array(\n            [3, 2, 1, 2, 3, 1, 1, 1]), X=np.ones((8, 1)))\n        np.testing.assert_almost_equal(dml.effect(np.ones((9, 1)),\n                                                  T0=np.array(\n                                                      [1, 1, 1, 2, 2, 2, 3, 3, 3]),\n                                                  T1=np.array([1, 2, 3, 1, 2, 3, 1, 2, 3])),\n                                       [0, 2, 1, -2, 0, -1, -1, 1, 0])\n        dml.score(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array(\n            [3, 2, 1, 2, 3, 1, 1, 1]), np.ones((8, 1)))\n\n    # TODO Almost identical to DML test, so consider merging\n    def test_can_custom_splitter(self):\n        \"\"\"Test that we can fit with a KFold instance.\"\"\"\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(\n                                  C=1000, solver='lbfgs', multi_class='auto'),\n                              cv=KFold(n_splits=3))\n        dml.fit(np.array([1, 2, 3, 1, 2, 3]), np.array(\n            [1, 2, 3, 1, 2, 3]), X=np.ones((6, 1)))\n        dml.score(np.array([1, 2, 3, 1, 2, 3]), np.array(\n            [1, 2, 3, 1, 2, 3]), np.ones((6, 1)))\n\n        # test that we can fit with a train/test iterable\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(\n                                  C=1000, solver='lbfgs', multi_class='auto'),\n                              cv=[([0, 1, 2], [3, 4, 5])])\n        dml.fit(np.array([1, 2, 3, 1, 2, 3]), np.array(\n            [1, 2, 3, 1, 2, 3]), X=np.ones((6, 1)))\n        dml.score(np.array([1, 2, 3, 1, 2, 3]), np.array(\n            [1, 2, 3, 1, 2, 3]), np.ones((6, 1)))\n\n    # TODO Almost identical to DML test, so consider merging\n    def test_can_use_statsmodel_inference(self):\n        \"\"\"Test that we can use statsmodels to generate confidence intervals.\"\"\"\n        dml = LinearDRLearner(model_regression=LinearRegression(),\n                              model_propensity=LogisticRegression(C=1000, solver='lbfgs', multi_class='auto'))\n        dml.fit(np.array([2, 3, 1, 3, 2, 1, 1, 1]), np.array(\n            [3, 2, 1, 2, 3, 1, 1, 1]), X=np.ones((8, 1)))\n        interval = dml.effect_interval(np.ones((9, 1)),\n                                       T0=np.array(\n                                           [1, 1, 1, 1, 1, 1, 1, 1, 1]),\n                                       T1=np.array(\n                                           [2, 2, 3, 2, 2, 3, 2, 2, 3]),\n                                       alpha=0.05)\n        point = dml.effect(np.ones((9, 1)),\n                           T0=np.array([1, 1, 1, 1, 1, 1, 1, 1, 1]),\n                           T1=np.array([2, 2, 3, 2, 2, 3, 2, 2, 3]))\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        # for at least some of the examples, the CI should have nonzero width\n        assert (lo < hi).any()\n\n        interval = dml.const_marginal_effect_interval(\n            np.ones((9, 1)), alpha=0.05)\n        point = dml.const_marginal_effect(np.ones((9, 1)))\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        # for at least some of the examples, the CI should have nonzero width\n        assert (lo < hi).any()\n\n        interval = dml.coef__interval(T=2, alpha=0.05)\n        point = dml.coef_(T=2)\n        assert len(interval) == 2\n        lo, hi = interval\n        assert lo.shape == hi.shape == point.shape\n        assert (lo <= point).all()\n        assert (point <= hi).all()\n        # for at least some of the examples, the CI should have nonzero width\n        assert (lo < hi).any()\n\n    def test_drlearner_all_attributes(self):\n        import scipy.special\n        np.random.seed(123)\n        controls = np.random.uniform(-1, 1, size=(5000, 3))\n        T = np.random.binomial(2, scipy.special.expit(controls[:, 0]))\n        sigma = 0.01\n        y = (1 + .5 * controls[:, 0]) * T + controls[:,\n                                                     0] + np.random.normal(0, sigma, size=(5000,))\n        for X in [controls]:\n            for W in [None, controls]:\n                for sample_weight in [None, np.ones(X.shape[0])]:\n                    for freq_weight, sample_var in [(None, None), (np.ones(X.shape[0]), np.zeros(X.shape[0]))]:\n                        for featurizer in [None, PolynomialFeatures(degree=2, include_bias=False)]:\n                            for models in [(GradientBoostingClassifier(), GradientBoostingRegressor(),\n                                            RandomForestRegressor(n_estimators=100,\n                                                                  max_depth=5, min_samples_leaf=50)),\n                                           (GradientBoostingClassifier(), GradientBoostingRegressor(),\n                                            RandomForestRegressor(n_estimators=100,\n                                                                  max_depth=5, min_samples_leaf=50)),\n                                           (LogisticRegression(solver='lbfgs', multi_class='auto'),\n                                            LinearRegression(), StatsModelsLinearRegression())]:\n                                for multitask_model_final in [False, True]:\n                                    if (not isinstance(models[2], StatsModelsLinearRegression)) and (sample_var\n                                                                                                     is not None):\n                                        continue\n                                    with self.subTest(X_present=(X is not None), W_present=(W is not None),\n                                                      sample_weight_present=(sample_weight is not None),\n                                                      freq_weight_present=(freq_weight is not None),\n                                                      sample_var_present=(sample_var is not None),\n                                                      featurizer=repr(featurizer),\n                                                      models=[type(m).__name__ for m in models],\n                                                      multitask_model_final=multitask_model_final):\n                                        est = DRLearner(model_propensity=models[0],\n                                                        model_regression=models[1],\n                                                        model_final=models[2],\n                                                        featurizer=featurizer,\n                                                        multitask_model_final=multitask_model_final)\n                                        if (X is None) and (W is None):\n                                            with pytest.raises(AttributeError):\n                                                est.fit(y, T, X=X, W=W, sample_weight=sample_weight,\n                                                        freq_weight=freq_weight, sample_var=sample_var)\n                                            continue\n                                        est.fit(\n                                            y, T, X=X, W=W, sample_weight=sample_weight,\n                                            freq_weight=freq_weight, sample_var=sample_var)\n                                        np.testing.assert_allclose(est.effect(X[:3], T0=0, T1=1), 1 + .5 * X[:3, 0],\n                                                                   rtol=0, atol=.15)\n                                        np.testing.assert_allclose(est.const_marginal_effect(X[:3]),\n                                                                   np.hstack(\n                                                                       [1 + .5 * X[:3, [0]],\n                                                                        2 * (1 + .5 * X[:3, [0]])]),\n                                                                   rtol=0, atol=.15)\n                                        for t in [1, 2]:\n                                            np.testing.assert_allclose(est.marginal_effect(t, X[:3]),\n                                                                       np.hstack([1 + .5 * X[:3, [0]],\n                                                                                  2 * (1 + .5 * X[:3, [0]])]),\n                                                                       rtol=0, atol=.15)\n                                        assert isinstance(est.score_, float)\n                                        assert isinstance(\n                                            est.score(y, T, X=X, W=W), float)\n\n                                        feature_names = ['A', 'B', 'C']\n                                        out_feat_names = feature_names\n                                        if featurizer is not None:\n                                            out_feat_names = get_feature_names_or_default(featurizer.fit(X),\n                                                                                          feature_names)\n                                            np.testing.assert_array_equal(\n                                                est.featurizer_.n_features_in_, 3)\n                                        np.testing.assert_array_equal(est.cate_feature_names(feature_names),\n                                                                      out_feat_names)\n\n                                        if isinstance(models[0], GradientBoostingClassifier):\n                                            np.testing.assert_array_equal(np.array([mdl.feature_importances_\n                                                                                    for mdl\n                                                                                    in est.models_regression[0]\n                                                                                    ]).shape,\n                                                                          [2, 2 + X.shape[1] +\n                                                                           (W.shape[1] if W is not None else 0)])\n                                            np.testing.assert_array_equal(np.array([mdl.feature_importances_\n                                                                                    for mdl\n                                                                                    in est.models_propensity[0]\n                                                                                    ]).shape,\n                                                                          [2, X.shape[1] +\n                                                                           (W.shape[1] if W is not None else 0)])\n                                        else:\n                                            np.testing.assert_array_equal(np.array([mdl.coef_\n                                                                                    for mdl\n                                                                                    in est.models_regression[0]\n                                                                                    ]).shape,\n                                                                          [2, 2 + X.shape[1] +\n                                                                           (W.shape[1] if W is not None else 0)])\n                                            np.testing.assert_array_equal(np.array([mdl.coef_\n                                                                                    for mdl\n                                                                                    in est.models_propensity[0]\n                                                                                    ]).shape,\n                                                                          [2, 3, X.shape[1] +\n                                                                           (W.shape[1] if W is not None else 0)])\n                                        if multitask_model_final:\n                                            if isinstance(models[2], RandomForestRegressor):\n                                                np.testing.assert_equal(np.argsort(\n                                                    est.multitask_model_cate.feature_importances_)[-1], 0)\n                                            else:\n                                                true_coef = np.zeros(\n                                                    (2, len(out_feat_names)))\n                                                true_coef[:, 0] = [.5, 1]\n                                                np.testing.assert_allclose(\n                                                    est.multitask_model_cate.coef_, true_coef, rtol=0, atol=.15)\n                                                np.testing.assert_allclose(\n                                                    est.multitask_model_cate.intercept_, [1, 2], rtol=0, atol=.15)\n                                        else:\n                                            for t in [1, 2]:\n                                                if isinstance(models[2], RandomForestRegressor):\n                                                    np.testing.assert_equal(np.argsort(\n                                                        est.model_cate(T=t).feature_importances_)[-1], 0)\n                                                else:\n                                                    true_coef = np.zeros(\n                                                        len(out_feat_names))\n                                                    true_coef[0] = .5 * t\n                                                    np.testing.assert_allclose(\n                                                        est.model_cate(T=t).coef_, true_coef, rtol=0, atol=.15)\n                                                    np.testing.assert_allclose(\n                                                        est.model_cate(T=t).intercept_, t, rtol=0, atol=.15)\n\n    def _test_drlearner_with_inference_all_attributes(self, use_ray):\n        np.random.seed(123)\n        controls = np.random.uniform(-1, 1, size=(10000, 2))\n        T = np.random.binomial(2, scipy.special.expit(controls[:, 0]))\n        sigma = 0.01\n        y = (1 + .5 * controls[:, 0]) * T + controls[:,\n                                                     0] + np.random.normal(0, sigma, size=(10000,))\n        for X in [None, controls]:\n            for W in [None, controls]:\n                for sample_weight in [None, np.ones(T.shape[0])]:\n                    for freq_weight, sample_var in [(None, None), (np.ones(T.shape[0]), np.zeros(T.shape[0]))]:\n                        for featurizer in [None, PolynomialFeatures(degree=2, include_bias=False)]:\n                            for model_t, model_y, est_class, inference in [(GradientBoostingClassifier(),\n                                                                            GradientBoostingRegressor(),\n                                                                            ForestDRLearner, 'auto'),\n                                                                           (LogisticRegression(solver='lbfgs',\n                                                                                               multi_class='auto'),\n                                                                            LinearRegression(),\n                                                                            LinearDRLearner, 'auto'),\n                                                                           (LogisticRegression(solver='lbfgs',\n                                                                                               multi_class='auto'),\n                                                                            LinearRegression(), LinearDRLearner,\n                                                                            StatsModelsInferenceDiscrete(\n                                                                               cov_type='nonrobust')),\n                                                                           (LogisticRegression(solver='lbfgs',\n                                                                                               multi_class='auto'),\n                                                                            LinearRegression(), SparseLinearDRLearner,\n                                                                            'auto')\n                                                                           ]:\n                                with self.subTest(X_present=(X is not None), W_present=(W is not None),\n                                                  sample_weight_present=(sample_weight is not None),\n                                                  freq_weight_present=(freq_weight is not None),\n                                                  sample_var_present=(sample_var is not None),\n                                                  featurizer=repr(featurizer),\n                                                  model_y=type(model_y).__name__, model_t=type(model_t).__name__,\n                                                  est_class=est_class.__name__, inference=repr(inference)):\n                                    if (X is None) and (est_class == SparseLinearDRLearner):\n                                        continue\n                                    if (X is None) and (est_class == ForestDRLearner):\n                                        continue\n                                    if (featurizer is not None) and (est_class == ForestDRLearner):\n                                        continue\n\n                                    if est_class == ForestDRLearner:\n                                        est = est_class(model_propensity=model_t,\n                                                        model_regression=model_y,\n                                                        n_estimators=1000,\n                                                        use_ray=use_ray)\n                                    else:\n                                        est = est_class(model_propensity=model_t,\n                                                        model_regression=model_y,\n                                                        featurizer=featurizer,\n                                                        use_ray=use_ray)\n\n                                    if (X is None) and (W is None):\n                                        with pytest.raises(AttributeError):\n                                            if isinstance(est, LinearDRLearner):\n                                                est.fit(\n                                                    y, T, X=X, W=W, sample_weight=sample_weight,\n                                                    freq_weight=freq_weight, sample_var=sample_var)\n                                            else:\n                                                est.fit(\n                                                    y, T, X=X, W=W, sample_weight=sample_weight)\n                                        continue\n                                    if isinstance(est, LinearDRLearner):\n                                        est.fit(y, T, X=X, W=W, sample_weight=sample_weight, freq_weight=freq_weight,\n                                                sample_var=sample_var, inference=inference)\n                                    else:\n                                        est.fit(y, T, X=X, W=W, sample_weight=sample_weight, inference=inference)\n\n                                    if X is not None:\n                                        lower, upper = est.effect_interval(\n                                            X[:3], T0=0, T1=1)\n                                        point = est.effect(X[:3], T0=0, T1=1)\n                                        truth = 1 + .5 * X[:3, 0]\n                                        TestDRLearner._check_with_interval(\n                                            truth, point, lower, upper)\n                                        lower, upper = est.const_marginal_effect_interval(\n                                            X[:3])\n                                        point = est.const_marginal_effect(\n                                            X[:3])\n                                        truth = np.hstack(\n                                            [1 + .5 * X[:3, [0]], 2 * (1 + .5 * X[:3, [0]])])\n                                        TestDRLearner._check_with_interval(\n                                            truth, point, lower, upper)\n                                    else:\n                                        lower, upper = est.effect_interval(\n                                            T0=0, T1=1)\n                                        point = est.effect(T0=0, T1=1)\n                                        truth = np.array([1])\n                                        TestDRLearner._check_with_interval(\n                                            truth, point, lower, upper)\n                                        lower, upper = est.const_marginal_effect_interval()\n                                        point = est.const_marginal_effect()\n                                        truth = np.array([[1, 2]])\n                                        TestDRLearner._check_with_interval(\n                                            truth, point, lower, upper)\n\n                                    for t in [1, 2]:\n                                        if X is not None:\n                                            lower, upper = est.marginal_effect_interval(\n                                                t, X[:3])\n                                            point = est.marginal_effect(\n                                                t, X[:3])\n                                            truth = np.hstack(\n                                                [1 + .5 * X[:3, [0]], 2 * (1 + .5 * X[:3, [0]])])\n                                            TestDRLearner._check_with_interval(\n                                                truth, point, lower, upper)\n                                        else:\n                                            lower, upper = est.marginal_effect_interval(\n                                                t)\n                                            point = est.marginal_effect(t)\n                                            truth = np.array([[1, 2]])\n                                            TestDRLearner._check_with_interval(\n                                                truth, point, lower, upper)\n                                    assert isinstance(est.score_, float)\n                                    assert isinstance(\n                                        est.score(y, T, X=X, W=W), float)\n\n                                    if X is not None:\n                                        feature_names = ['A', 'B']\n                                    else:\n                                        feature_names = []\n                                    out_feat_names = feature_names\n                                    if X is not None:\n                                        if (featurizer is not None):\n                                            out_feat_names = get_feature_names_or_default(featurizer.fit(X),\n                                                                                          feature_names)\n                                            np.testing.assert_array_equal(\n                                                est.featurizer_.n_features_in_, 2)\n                                        np.testing.assert_array_equal(est.cate_feature_names(feature_names),\n                                                                      out_feat_names)\n\n                                    if isinstance(model_t, GradientBoostingClassifier):\n                                        np.testing.assert_array_equal(np.array([mdl.feature_importances_\n                                                                                for mdl\n                                                                                in est.models_regression[0]]).shape,\n                                                                      [2, 2 + len(feature_names) +\n                                                                       (W.shape[1] if W is not None else 0)])\n                                        np.testing.assert_array_equal(np.array([mdl.feature_importances_\n                                                                                for mdl\n                                                                                in est.models_propensity[0]]).shape,\n                                                                      [2, len(feature_names) +\n                                                                       (W.shape[1] if W is not None else 0)])\n                                    else:\n                                        np.testing.assert_array_equal(np.array([mdl.coef_\n                                                                                for mdl\n                                                                                in est.models_regression[0]]).shape,\n                                                                      [2, 2 + len(feature_names) +\n                                                                       (W.shape[1] if W is not None else 0)])\n                                        np.testing.assert_array_equal(np.array([mdl.coef_\n                                                                                for mdl\n                                                                                in est.models_propensity[0]]).shape,\n                                                                      [2, 3, len(feature_names) +\n                                                                       (W.shape[1] if W is not None else 0)])\n\n                                    if isinstance(est, (LinearDRLearner, SparseLinearDRLearner)):\n                                        if X is not None:\n                                            for t in [1, 2]:\n                                                true_coef = np.zeros(\n                                                    len(out_feat_names))\n                                                true_coef[0] = .5 * t\n                                                lower, upper = est.model_cate(\n                                                    T=t).coef__interval()\n                                                point = est.model_cate(\n                                                    T=t).coef_\n                                                truth = true_coef\n                                                TestDRLearner._check_with_interval(\n                                                    truth, point, lower, upper)\n\n                                                lower, upper = est.coef__interval(\n                                                    t)\n                                                point = est.coef_(t)\n                                                truth = true_coef\n                                                TestDRLearner._check_with_interval(\n                                                    truth, point, lower, upper)\n                                                # test coef__inference function works\n                                                est.coef__inference(\n                                                    t).summary_frame()\n                                                np.testing.assert_array_almost_equal(\n                                                    est.coef__inference(t).conf_int()[0], lower, decimal=5)\n                                        for t in [1, 2]:\n                                            lower, upper = est.model_cate(\n                                                T=t).intercept__interval()\n                                            point = est.model_cate(\n                                                T=t).intercept_\n                                            truth = t\n                                            TestDRLearner._check_with_interval(\n                                                truth, point, lower, upper)\n\n                                            lower, upper = est.intercept__interval(\n                                                t)\n                                            point = est.intercept_(t)\n                                            truth = t\n                                            TestDRLearner._check_with_interval(\n                                                truth, point, lower, upper)\n                                            # test intercept__inference function works\n                                            est.intercept__inference(\n                                                t).summary_frame()\n                                            np.testing.assert_array_almost_equal(\n                                                est.intercept__inference(t).conf_int()[0], lower, decimal=5)\n                                            # test summary function works\n                                            est.summary(t)\n\n                                    if isinstance(est, ForestDRLearner):\n                                        for t in [1, 2]:\n                                            np.testing.assert_array_equal(est.feature_importances_(t).shape,\n                                                                          [X.shape[1]])\n\n    @pytest.mark.ray\n    def test_drlearner_with_inference_all_attributes_with_ray(self):\n        try:\n            ray.init(num_cpus=1)\n            self._test_drlearner_with_inference_all_attributes(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_drlearner_with_inference_all_attributes_without_ray(self):\n        self._test_drlearner_with_inference_all_attributes(use_ray=False)\n\n    @staticmethod\n    def _check_with_interval(truth, point, lower, upper):\n        np.testing.assert_allclose(point, truth, rtol=0, atol=.2)\n        np.testing.assert_array_less(lower - 0.05, truth)\n        np.testing.assert_array_less(truth, upper + 0.05)\n\n    def test_DRLearner(self):\n        \"\"\"Test whether the DRLearner can accurately estimate constant and heterogeneous treatment effects.\"\"\"\n        DR_learner = DRLearner(model_regression=LinearRegression(),\n                               model_final=LinearRegression())\n        # Test inputs\n        # self._test_inputs(DR_learner)\n        # Test constant treatment effect\n        self._test_te(DR_learner, tol=0.5, te_type=\"const\")\n        # Test heterogeneous treatment effect\n        outcome_model = Pipeline(\n            [('poly', PolynomialFeatures()), ('model', LinearRegression())])\n        DR_learner = DRLearner(model_regression=outcome_model,\n                               model_propensity=LogisticRegressionCV(),\n                               model_final=LinearRegression())\n        self._test_te(DR_learner, tol=0.5, te_type=\"heterogeneous\")\n        # Test heterogenous treatment effect for W =/= None\n        self._test_with_W(DR_learner, tol=0.5)\n\n    def test_sparse(self):\n        \"\"\"SparseDRLearner test with a sparse DGP.\"\"\"\n        # Sparse DGP\n        np.random.seed(123)\n        n_x = 50\n        n_nonzero = 1\n        n_w = 5\n        n = 2000\n        # Treatment effect coef\n        a = np.zeros(n_x)\n        nonzero_idx = np.random.choice(n_x, size=n_nonzero, replace=False)\n        a[nonzero_idx] = 1\n        # Other coefs\n        b = np.zeros(n_x + n_w)\n        g = np.zeros(n_x + n_w)\n        b_nonzero = np.random.choice(n_x + n_w, size=n_nonzero, replace=False)\n        g_nonzero = np.random.choice(n_x + n_w, size=n_nonzero, replace=False)\n        b[b_nonzero] = 1\n        g[g_nonzero] = 1\n        # Features and controls\n        x = np.random.normal(size=(n, n_x))\n        w = np.random.normal(size=(n, n_w))\n        xw = np.hstack([x, w])\n        T = np.random.binomial(1, scipy.special.expit(xw @ b))\n        err_Y = np.random.normal(size=n, scale=0.5)\n        Y = T * (x @ a) + xw @ g + err_Y\n        # Test sparse estimator\n        # --> test coef_, intercept_\n        sparse_dml = SparseLinearDRLearner()\n        sparse_dml.fit(Y, T, X=x, W=w)\n        np.testing.assert_allclose(a, sparse_dml.coef_(T=1), atol=2e-1)\n        np.testing.assert_allclose(sparse_dml.intercept_(T=1), 0, atol=2e-1)\n        # --> test treatment effects\n        # Restrict x_test to vectors of norm < 1\n        x_test = np.random.uniform(size=(10, n_x))\n        true_eff = (x_test @ a)\n        eff = sparse_dml.effect(x_test, T0=0, T1=1)\n        np.testing.assert_allclose(true_eff, eff, atol=0.5)\n        # --> check inference\n        y_lower, y_upper = sparse_dml.effect_interval(x_test, T0=0, T1=1)\n        in_CI = ((y_lower < true_eff) & (true_eff < y_upper))\n        # Check that a majority of true effects lie in the 5-95% CI\n        self.assertGreater(in_CI.mean(), 0.8)\n\n    def test_groups(self):\n        groups = [1, 2, 3, 4, 5, 6] * 10\n        t = [1, 2, 3] * 20\n        y = groups\n        w = np.random.normal(size=(60, 1))\n\n        n_copies = {i: 10 for i in [1, 2, 3, 4, 5, 6]}\n\n        # test outer grouping\n        # NOTE: StratifiedGroupKFold has a bug when shuffle is True where it doesn't always stratify properly\n        #       so we explicitly pass a StratifiedGroupKFold with shuffle=False (the default) rather than letting\n        #       cross-fit generate one\n        est = LinearDRLearner(model_propensity=LogisticRegression(),\n                              # with 2-fold grouping, we should get exactly 3 groups per split\n                              model_regression=GroupingModel(LinearRegression(), 60, (3, 3), n_copies),\n                              cv=StratifiedGroupKFold(2))\n        est.fit(y, t, W=w, groups=groups)\n\n        # test nested grouping\n        est = LinearDRLearner(model_propensity=LogisticRegression(),\n                              # with 2-fold outer and 2-fold inner grouping, we should get 1-2 groups per split\n                              model_regression=NestedModel(LassoCV(cv=2), 60, (1, 2), n_copies),\n                              cv=StratifiedGroupKFold(2))\n        est.fit(y, t, W=w, groups=groups)\n\n    def test_score(self):\n        \"\"\"Test that scores are the same whether the final model's prediction is the shape of the input or a vector.\"\"\"\n        X = np.random.normal(0, 1, size=(100, 2))\n        W = np.random.normal(0, 1, size=(100, 10))\n        Y = np.random.normal(0, 1, size=(100,))\n\n        # helper class\n        class L(StatsModelsLinearRegression):\n            def __init__(self, shape):\n                self.shape = shape\n                super().__init__()\n\n            def predict(self, X):\n                return super().predict(X).reshape(self.shape)\n\n        for d_t in [2, 3]:\n            T = np.random.choice(d_t, 100)\n            for multitask_model_final in [True, False]:\n                score = DRLearner(model_propensity=LogisticRegression(),\n                                  model_regression=Lasso(),\n                                  model_final=StatsModelsLinearRegression(), cv=1,\n                                  multitask_model_final=multitask_model_final).fit(Y, T, X=X, W=W).score_\n                for shape_y in [(-1, 1), (-1,)]:\n                    for shape_l in [(-1, 1), (-1,)]:\n                        Y = Y.reshape(shape_y)\n                        score1 = DRLearner(model_propensity=LogisticRegression(),\n                                           model_regression=Lasso(),\n                                           model_final=L(shape_l), cv=1,\n                                           multitask_model_final=multitask_model_final).fit(Y, T, X=X, W=W).score_\n                        np.testing.assert_equal(score1, score)\n\n    def test_multitask_model_final(self):\n        \"\"\"Test that multitask model final works for different return of model cate even treatment is binary.\"\"\"\n        n = 100\n        X = np.random.normal(0, 1, size=(n, 2))\n        W = np.random.normal(0, 1, size=(n, 10))\n        Y = np.random.normal(0, 1, size=(n,))\n        for d_t in [2, 3]:\n            T = np.random.choice(d_t, n)\n            cme_shape = (n, d_t - 1)\n            effect_shape = (n,)\n            for model_final in [Lasso(), StatsModelsLinearRegression()]:\n                est = DRLearner(model_propensity=LogisticRegression(),\n                                model_regression=Lasso(),\n                                model_final=model_final,\n                                multitask_model_final=True).fit(Y, T, X=X, W=W)\n                np.testing.assert_array_equal(est.const_marginal_effect(X).shape, cme_shape)\n                np.testing.assert_array_equal(est.effect(X).shape, effect_shape)\n\n    def _test_te(self, learner_instance, tol, te_type=\"const\"):\n        if te_type not in [\"const\", \"heterogeneous\"]:\n            raise ValueError(\n                \"Type of treatment effect must be 'const' or 'heterogeneous'.\")\n        X, T, Y = getattr(\n            TestDRLearner, \"{te_type}_te_data\".format(te_type=te_type))\n        te_func = getattr(\n            TestDRLearner, \"_{te_type}_te\".format(te_type=te_type))\n        # Fit learner and get the effect\n        learner_instance.fit(Y, T, X=X)\n        te_hat = learner_instance.effect(TestDRLearner.X_test)\n        # Get the true treatment effect\n        te = np.apply_along_axis(te_func, 1, TestDRLearner.X_test)\n        # Compute treatment effect residuals (absolute)\n        te_res = np.abs(te - te_hat)\n        # Check that at least 90% of predictions are within tolerance interval\n        self.assertGreaterEqual(np.mean(te_res < tol), 0.90)\n\n    def _test_with_W(self, learner_instance, tol):\n        # Only for heterogeneous TE\n        X, T, Y = TestDRLearner.heterogeneous_te_data\n        # Fit learner on X and W and get the effect\n        learner_instance.fit(\n            Y, T, X=X[:, [TestDRLearner.heterogeneity_index]], W=X)\n        te_hat = learner_instance.effect(\n            TestDRLearner.X_test[:, [TestDRLearner.heterogeneity_index]])\n        # Get the true treatment effect\n        te = np.apply_along_axis(\n            TestDRLearner._heterogeneous_te, 1, TestDRLearner.X_test)\n        # Compute treatment effect residuals (absolute)\n        te_res = np.abs(te - te_hat)\n        # Check that at least 90% of predictions are within tolerance interval\n        self.assertGreaterEqual(np.mean(te_res < tol), 0.90)\n\n    def _test_inputs(self, learner_instance):\n        X, T, Y = TestDRLearner.const_te_data\n        # Check that one can pass in regular lists\n        learner_instance.fit(list(Y), list(T), X=list(X))\n        learner_instance.effect(list(TestDRLearner.X_test))\n        # Check that it fails correctly if lists of different shape are passed in\n        self.assertRaises(ValueError, learner_instance.fit,\n                          Y, T, X[:TestDRLearner.n // 2])\n        self.assertRaises(ValueError, learner_instance.fit,\n                          Y[:TestDRLearner.n // 2], T, X)\n        # Check that it fails when T contains values other than 0 and 1\n        self.assertRaises(ValueError, learner_instance.fit, Y, T + 1, X)\n        # Check that it works when T, Y have shape (n, 1)\n        self.assertWarns(DataConversionWarning,\n                         learner_instance.fit, Y.reshape(-1,\n                                                         1), T.reshape(-1, 1), X\n                         )\n\n    @classmethod\n    def _untreated_outcome(cls, x):\n        return np.dot(x, cls.beta) + cls.random_state.normal(0, 1)\n\n    @classmethod\n    def _const_te(cls, x):\n        return 2\n\n    @classmethod\n    def _heterogeneous_te(cls, x):\n        return x[cls.heterogeneity_index]\n\n    @classmethod\n    def _generate_data(cls, n, d, untreated_outcome, treatment_effect, propensity):\n        \"\"\"Generate population data for given untreated_outcome, treatment_effect and propensity functions.\n\n        Parameters\n        ----------\n            n (int): population size\n            d (int): number of covariates\n            untreated_outcome (func): untreated outcome conditional on covariates\n            treatment_effect (func): treatment effect conditional on covariates\n            propensity (func): probability of treatment conditional on covariates\n        \"\"\"\n        # Generate covariates\n        X = cls.random_state.multivariate_normal(\n            np.zeros(d), np.diag(np.ones(d)), n)\n        # Generate treatment\n        T = np.apply_along_axis(\n            lambda x: cls.random_state.binomial(1, propensity(x), 1)[0], 1, X)\n        # Calculate outcome\n        Y0 = np.apply_along_axis(lambda x: untreated_outcome(x), 1, X)\n        treat_effect = np.apply_along_axis(lambda x: treatment_effect(x), 1, X)\n        Y = Y0 + treat_effect * T\n        return (X, T, Y)\n\n\nclass TestSampleTrimming(unittest.TestCase):\n    \"\"\"Tests for sample trimming functionality in DRLearner.\"\"\"\n\n    @classmethod\n    def setUpClass(cls):\n        # Set random seed for reproducibility\n        cls.random_state = np.random.RandomState(42)\n        cls.n = 500\n        cls.d = 3\n\n        # Generate data with varying propensity scores\n        cls.X = cls.random_state.randn(cls.n, cls.d)\n        # Propensity based on X[:,0] - creates some extreme propensities\n        cls.true_propensity = 1 / (1 + np.exp(-2 * cls.X[:, 0]))\n        cls.T = (cls.random_state.rand(cls.n) < cls.true_propensity).astype(int)\n        cls.Y = cls.T + cls.X[:, 0] + cls.random_state.randn(cls.n) * 0.5\n\n    def test_trimming_disabled_by_default(self):\n        \"\"\"Test that trimming is disabled when trimming_threshold=None (default).\"\"\"\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        self.assertEqual(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_used_, self.n)\n\n    def test_trimming_with_fixed_threshold(self):\n        \"\"\"Test trimming with a fixed threshold value.\"\"\"\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        # Some samples should be trimmed\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n    def test_trimming_with_auto_threshold(self):\n        \"\"\"Test trimming with automatic threshold calculation.\"\"\"\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold='auto',\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        # Auto trimming should trim some samples\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n    def test_higher_threshold_trims_more(self):\n        \"\"\"Test that higher threshold values trim more samples.\"\"\"\n        est_low = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.05,\n            random_state=123\n        )\n        est_high = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.15,\n            random_state=123\n        )\n\n        est_low.fit(self.Y, self.T, X=self.X)\n        est_high.fit(self.Y, self.T, X=self.X)\n\n        self.assertGreater(est_high.n_samples_trimmed_, est_low.n_samples_trimmed_)\n\n    def test_trimming_uses_raw_propensities(self):\n        \"\"\"Test that trimming uses raw propensities, not clipped ones.\"\"\"\n        # If trimming used clipped propensities, different min_propensity values\n        # would result in different trimming counts (with same random_state)\n        est1 = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            min_propensity=0.05,\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est2 = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            min_propensity=0.15,\n            trimming_threshold=0.1,\n            random_state=123\n        )\n\n        est1.fit(self.Y, self.T, X=self.X)\n        est2.fit(self.Y, self.T, X=self.X)\n\n        # Same trimming count regardless of min_propensity\n        self.assertEqual(est1.n_samples_trimmed_, est2.n_samples_trimmed_)\n\n    def test_trimming_warning_when_threshold_less_than_min_propensity(self):\n        \"\"\"Test that a warning is emitted when trimming_threshold < min_propensity.\"\"\"\n        import warnings\n\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            min_propensity=0.1,\n            trimming_threshold=0.05,\n            random_state=123\n        )\n\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            est.fit(self.Y, self.T, X=self.X)\n\n            # Check that a warning was raised\n            trimming_warnings = [\n                x for x in w\n                if 'trimming_threshold' in str(x.message) and 'min_propensity' in str(x.message)\n            ]\n            self.assertEqual(len(trimming_warnings), 1)\n\n    def test_no_warning_when_threshold_greater_than_min_propensity(self):\n        \"\"\"Test that no warning is emitted when trimming_threshold >= min_propensity.\"\"\"\n        import warnings\n\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            min_propensity=0.05,\n            trimming_threshold=0.1,\n            random_state=123\n        )\n\n        with warnings.catch_warnings(record=True) as w:\n            warnings.simplefilter(\"always\")\n            est.fit(self.Y, self.T, X=self.X)\n\n            # Check that no trimming-related warning was raised\n            trimming_warnings = [\n                x for x in w\n                if 'trimming_threshold' in str(x.message) and 'min_propensity' in str(x.message)\n            ]\n            self.assertEqual(len(trimming_warnings), 0)\n\n    def test_trimming_with_linear_drlearner(self):\n        \"\"\"Test that trimming works with LinearDRLearner.\"\"\"\n        est = LinearDRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n        # Verify that we can still compute effects\n        effect = est.effect(self.X[:5])\n        self.assertEqual(effect.shape, (5,))\n\n    def test_trimming_with_sparse_linear_drlearner(self):\n        \"\"\"Test that trimming works with SparseLinearDRLearner.\"\"\"\n        est = SparseLinearDRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n    def test_trimming_with_forest_drlearner(self):\n        \"\"\"Test that trimming works with ForestDRLearner.\"\"\"\n        est = ForestDRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123,\n            n_estimators=16  # Must be divisible by subforest_size (default 4)\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n    def test_score_respects_trimming(self):\n        \"\"\"Test that the score method respects the trimming setting.\"\"\"\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X)\n\n        # Score should work without errors\n        score = est.score(self.Y, self.T, X=self.X)\n        self.assertIsInstance(score, float)\n\n    def test_trimming_with_sample_weights(self):\n        \"\"\"Test that trimming works correctly with sample weights.\"\"\"\n        sample_weight = np.ones(self.n)\n        sample_weight[:100] = 2.0  # Higher weight for first 100 samples\n\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(self.Y, self.T, X=self.X, sample_weight=sample_weight)\n\n        self.assertGreater(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_trimmed_ + est.n_samples_used_, self.n)\n\n    def test_trimming_preserves_effect_estimation(self):\n        \"\"\"Test that trimming doesn't break effect estimation.\"\"\"\n        # Create a simple DGP with known treatment effect\n        np.random.seed(42)\n        n = 1000\n        X = np.random.randn(n, 2)\n        true_effect = 2.0\n        propensity = 1 / (1 + np.exp(-X[:, 0]))\n        T = (np.random.rand(n) < propensity).astype(int)\n        Y = true_effect * T + X[:, 0] + np.random.randn(n) * 0.5\n\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n        est.fit(Y, T, X=X)\n\n        # Average effect should be close to true effect\n        effects = est.effect(X)\n        np.testing.assert_allclose(np.mean(effects), true_effect, atol=0.3)\n\n    def test_multitreatment_trimming_warns(self):\n        \"\"\"Test that trimming with multiple treatments emits a warning.\"\"\"\n        # Generate multi-treatment data\n        np.random.seed(42)\n        n = 500\n        X = np.random.randn(n, 3)\n        T = np.random.choice([0, 1, 2], size=n, p=[0.4, 0.3, 0.3])\n        Y = T + X[:, 0] + np.random.randn(n) * 0.5\n\n        est = DRLearner(\n            model_propensity=LogisticRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold=0.1,\n            random_state=123\n        )\n\n        # Should emit a warning about multiple treatments\n        with self.assertWarns(UserWarning) as cm:\n            est.fit(Y, T, X=X)\n\n        self.assertIn(\"binary treatment\", str(cm.warning))\n\n        # Should still work, but without performing any trimming\n        self.assertEqual(est.n_samples_trimmed_, 0)\n        self.assertEqual(est.n_samples_used_, n)\n\n    def test_auto_trimming_uniform_propensity_full_range(self):\n        \"\"\"Test auto trimming with propensity scores uniform on [0, 1].\n\n        Following Crump et al. (2009), when propensity scores are uniformly\n        distributed on [0, 1], the optimal threshold is approximately 0.1,\n        which means roughly 20.3% of observations should be trimmed\n        (those with propensity < 0.1 or > 0.9).\n        \"\"\"\n        n = 10000\n\n        # Generate X uniform on [0, 1] which will be used directly as propensity\n        # Use logistic transformation to make propensity = X\n        # p = 1 / (1 + exp(-f(X))) => f(X) = log(p / (1-p)) = logit(X)\n        X_uniform = np.random.uniform(0.001, 0.999, size=(n, 1))  # Avoid exact 0 and 1\n        true_propensity = X_uniform[:, 0]\n\n        # Generate treatment from Bernoulli with these propensities\n        T = (np.random.rand(n) < true_propensity).astype(int)\n\n        # Generate outcome\n        Y = T + np.random.randn(n) * 0.5\n\n        # The propensity is linear in the feature, so just use LinearRegression as the propensity model\n        # even though it's a regressor rather than a classifier.\n        est = DRLearner(\n            model_propensity=LinearRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold='auto'\n        )\n        est.fit(Y, T, X=X_uniform)\n\n        # Expected trimming: ~20.3% (propensity < 0.1 or > 0.9)\n        # Allow some tolerance due to model estimation and sampling variation\n        trim_fraction = est.n_samples_trimmed_ / n\n\n        # Check that trimming fraction is approximately correct\n        # Expected is ~0.203 (10.15% on each tail for uniform distribution)\n        self.assertGreater(trim_fraction, 0.165, \"Should trim at least 16.5% of samples\")\n        self.assertLess(trim_fraction, 0.245, \"Should trim at most 24.5% of samples\")\n\n    def test_auto_trimming_uniform_propensity_narrow_range(self):\n        \"\"\"Test auto trimming with propensity scores uniform on [0.25, 0.75].\n\n        When propensity scores are uniformly distributed on [0.25, 0.75],\n        all observations have reasonable overlap and no trimming should occur.\n        \"\"\"\n        n = 10000\n\n        # Generate X uniform on [0.25, 0.75] which will be the propensity\n        X_uniform = np.random.uniform(0.25, 0.75, size=(n, 1))\n        true_propensity = X_uniform[:, 0]\n\n        # Generate treatment from Bernoulli with these propensities\n        T = (np.random.rand(n) < true_propensity).astype(int)\n\n        # Generate outcome\n        Y = T + np.random.randn(n) * 0.5\n\n        # The propensity is linear in the feature, so just use LinearRegression as the propensity model\n        # even though it's a regressor rather than a classifier.\n        est = DRLearner(\n            model_propensity=LinearRegression(),\n            model_regression=LinearRegression(),\n            trimming_threshold='auto',\n            random_state=123\n        )\n        est.fit(Y, T, X=X_uniform)\n\n        # Expected: no trimming since all propensities are in [0.25, 0.75]\n        # The optimal threshold should be <= 0.25, so no observations are trimmed\n        trim_fraction = est.n_samples_trimmed_ / n\n\n        # Should trim very few or no samples (allow up to 1% for estimation error)\n        self.assertLess(trim_fraction, 0.01,\n                        f\"Should trim very few samples when propensities are in [0.25, 0.75], \"\n                        f\"but trimmed {trim_fraction*100:.1f}%\")\n"
  },
  {
    "path": "econml/tests/test_drtester.py",
    "content": "import unittest\n\nimport numpy as np\nimport pandas as pd\nimport scipy.stats as st\nfrom sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor\n\nfrom econml.validate.drtester import DRTester\nfrom econml.dml import DML\n\n\nclass TestDRTester(unittest.TestCase):\n\n    @staticmethod\n    def _get_data(num_treatments=1):\n        np.random.seed(576)\n\n        N = 20000  # number of units\n        K = 5  # number of covariates\n\n        # Generate random Xs\n        X_mu = np.zeros(5)  # Means of Xs\n        # Random covariance matrix of Xs\n        X_sig = np.diag(np.random.rand(5))\n        X = st.multivariate_normal(X_mu, X_sig).rvs(N)\n\n        # Effect of Xs on outcome\n        X_beta = np.random.uniform(0, 5, K)\n        # Effect of treatment on outcomes\n        D_beta = np.arange(num_treatments + 1)\n        # Effect of treatment on outcome conditional on X1\n        DX1_beta = np.array([0] * num_treatments + [3])\n\n        # Generate treatments based on X and random noise\n        beta_treat = np.random.uniform(-1, 1, (num_treatments + 1, K))\n        D1 = np.zeros((N, num_treatments + 1))\n        for k in range(num_treatments + 1):\n            D1[:, k] = X @ beta_treat[k, :] + np.random.gumbel(0, 1, N)\n        D = np.array([np.where(D1[i, :] == np.max(D1[i, :]))[0][0] for i in range(N)])\n        D_dum = pd.get_dummies(D)\n\n        # Generate Y (based on X, D, and random noise)\n        Y_sig = 1  # Variance of random outcome noise\n        Y = X @ X_beta + (D_dum @ D_beta) + X[:, 1] * (D_dum @ DX1_beta) + np.random.normal(0, Y_sig, N)\n        Y = Y.to_numpy()\n\n        train_prop = .5\n        train_N = np.ceil(train_prop * N)\n        ind = np.array(range(N))\n        train_ind = np.random.choice(N, int(train_N), replace=False)\n        val_ind = ind[~np.isin(ind, train_ind)]\n\n        Xtrain, Dtrain, Ytrain = X[train_ind], D[train_ind], Y[train_ind]\n        Xval, Dval, Yval = X[val_ind], D[val_ind], Y[val_ind]\n\n        return Xtrain, Dtrain, Ytrain, Xval, Dval, Yval\n\n    def test_multi(self):\n        Xtrain, Dtrain, Ytrain, Xval, Dval, Yval = self._get_data(num_treatments=2)\n\n        # Simple classifier and regressor for propensity, outcome, and cate\n        reg_t = RandomForestClassifier(random_state=0)\n        reg_y = GradientBoostingRegressor(random_state=0)\n\n        cate = DML(\n            model_y=reg_y,\n            model_t=reg_t,\n            model_final=reg_y,\n            discrete_treatment=True\n        ).fit(Y=Ytrain, T=Dtrain, X=Xtrain)\n\n        # test the DR outcome difference\n        my_dr_tester = DRTester(\n            model_regression=reg_y,\n            model_propensity=reg_t,\n            cate=cate\n        ).fit_nuisance(\n            Xval, Dval, Yval, Xtrain, Dtrain, Ytrain\n        )\n        dr_outcomes = my_dr_tester.dr_val_\n\n        ates = dr_outcomes.mean(axis=0)\n        for k in range(dr_outcomes.shape[1]):\n            ate_errs = np.sqrt(((dr_outcomes[:, k] - ates[k]) ** 2).sum() /\n                               (dr_outcomes.shape[0] * (dr_outcomes.shape[0] - 1)))\n\n            self.assertLess(abs(ates[k] - (k + 1)), 2 * ate_errs)\n\n        res = my_dr_tester.evaluate_all(Xval, Xtrain)\n        res_df = res.summary()\n\n        for k in range(4):\n            if k in [0, 3]:\n                self.assertRaises(ValueError, res.plot_cal, k)\n                self.assertRaises(ValueError, res.plot_qini, k)\n                self.assertRaises(ValueError, res.plot_toc, k)\n            else:  # real treatments, k = 1 or 2\n                self.assertTrue(res.plot_cal(k) is not None)\n                self.assertTrue(res.plot_qini(k) is not None)\n                self.assertTrue(res.plot_toc(k) is not None)\n\n        self.assertGreater(res_df.blp_pval.values[0], 0.1)  # no heterogeneity\n        self.assertLess(res_df.blp_pval.values[1], 0.05)  # heterogeneity\n\n        self.assertLess(res_df.cal_r_squared.values[0], 0)  # poor R2\n        self.assertGreater(res_df.cal_r_squared.values[1], 0)  # good R2\n\n        self.assertLess(res_df.qini_pval.values[1], res_df.qini_pval.values[0])\n        self.assertLess(res_df.autoc_pval.values[1], res_df.autoc_pval.values[0])\n\n    def test_binary(self):\n        Xtrain, Dtrain, Ytrain, Xval, Dval, Yval = self._get_data(num_treatments=1)\n\n        # Simple classifier and regressor for propensity, outcome, and cate\n        reg_t = RandomForestClassifier(random_state=0)\n        reg_y = GradientBoostingRegressor(random_state=0)\n\n        cate = DML(\n            model_y=reg_y,\n            model_t=reg_t,\n            model_final=reg_y,\n            discrete_treatment=True\n        ).fit(Y=Ytrain, T=Dtrain, X=Xtrain)\n\n        # test the DR outcome difference\n        my_dr_tester = DRTester(\n            model_regression=reg_y,\n            model_propensity=reg_t,\n            cate=cate\n        ).fit_nuisance(\n            Xval, Dval, Yval, Xtrain, Dtrain, Ytrain\n        )\n        dr_outcomes = my_dr_tester.dr_val_\n\n        ate = dr_outcomes.mean(axis=0)\n        ate_err = np.sqrt(((dr_outcomes - ate) ** 2).sum() /\n                          (dr_outcomes.shape[0] * (dr_outcomes.shape[0] - 1)))\n        truth = 1\n        self.assertLess(abs(ate - truth), 2 * ate_err)\n\n        res = my_dr_tester.evaluate_all(Xval, Xtrain)\n        res_df = res.summary()\n\n        for k in range(3):\n            if k in [0, 2]:\n                self.assertRaises(ValueError, res.plot_cal, k)\n                self.assertRaises(ValueError, res.plot_qini, k)\n                self.assertRaises(ValueError, res.plot_toc, k)\n            else:  # real treatment, k = 1\n                self.assertTrue(res.plot_cal(k) is not None)\n                self.assertTrue(res.plot_qini(k, 'ucb2') is not None)\n                self.assertTrue(res.plot_toc(k, 'ucb1') is not None)\n\n        self.assertLess(res_df.blp_pval.values[0], 0.05)  # heterogeneity\n        self.assertGreater(res_df.cal_r_squared.values[0], 0)  # good R2\n        self.assertLess(res_df.qini_pval.values[0], 0.05)  # heterogeneity\n        self.assertLess(res_df.autoc_pval.values[0], 0.05)  # heterogeneity\n\n    def test_nuisance_val_fit(self):\n        Xtrain, Dtrain, Ytrain, Xval, Dval, Yval = self._get_data(num_treatments=1)\n\n        # Simple classifier and regressor for propensity, outcome, and cate\n        reg_t = RandomForestClassifier(random_state=0)\n        reg_y = GradientBoostingRegressor(random_state=0)\n\n        cate = DML(\n            model_y=reg_y,\n            model_t=reg_t,\n            model_final=reg_y,\n            discrete_treatment=True\n        ).fit(Y=Ytrain, T=Dtrain, X=Xtrain)\n\n        # test the DR outcome difference\n        my_dr_tester = DRTester(\n            model_regression=reg_y,\n            model_propensity=reg_t,\n            cate=cate\n        ).fit_nuisance(Xval, Dval, Yval)\n\n        dr_outcomes = my_dr_tester.dr_val_\n\n        ate = dr_outcomes.mean(axis=0)\n        ate_err = np.sqrt(((dr_outcomes - ate) ** 2).sum() /\n                          (dr_outcomes.shape[0] * (dr_outcomes.shape[0] - 1)))\n        truth = 1\n        self.assertLess(abs(ate - truth), 2 * ate_err)\n\n        # use evaluate_blp to fit on validation only\n        blp_res = my_dr_tester.evaluate_blp(Xval)\n\n        self.assertLess(blp_res.pvals[0], 0.05)  # heterogeneity\n\n        for kwargs in [{}, {'Xval': Xval}]:\n            with self.assertRaises(Exception) as exc:\n                my_dr_tester.evaluate_cal(kwargs)\n            self.assertEqual(\n                str(exc.exception), \"Must fit nuisance models on training sample data to use calibration test\"\n            )\n\n    def test_exceptions(self):\n        Xtrain, Dtrain, Ytrain, Xval, Dval, Yval = self._get_data(num_treatments=1)\n\n        # Simple classifier and regressor for propensity, outcome, and cate\n        reg_t = RandomForestClassifier(random_state=0)\n        reg_y = GradientBoostingRegressor(random_state=0)\n\n        cate = DML(\n            model_y=reg_y,\n            model_t=reg_t,\n            model_final=reg_y,\n            discrete_treatment=True\n        ).fit(Y=Ytrain, T=Dtrain, X=Xtrain)\n\n        # test the DR outcome difference\n        my_dr_tester = DRTester(\n            model_regression=reg_y,\n            model_propensity=reg_t,\n            cate=cate\n        )\n\n        # fit nothing\n        for func in [my_dr_tester.evaluate_blp, my_dr_tester.evaluate_cal, my_dr_tester.evaluate_uplift]:\n            with self.assertRaises(Exception) as exc:\n                func()\n            if func.__name__ == 'evaluate_cal':\n                self.assertEqual(\n                    str(exc.exception), \"Must fit nuisance models on training sample data to use calibration test\"\n                )\n            else:\n                self.assertEqual(str(exc.exception), \"Must fit nuisances before evaluating\")\n\n        my_dr_tester = my_dr_tester.fit_nuisance(\n            Xval, Dval, Yval, Xtrain, Dtrain, Ytrain\n        )\n\n        for func in [\n            my_dr_tester.evaluate_blp,\n            my_dr_tester.evaluate_cal,\n            my_dr_tester.evaluate_uplift,\n            my_dr_tester.evaluate_all\n        ]:\n            with self.assertRaises(Exception) as exc:\n                func()\n            if func.__name__ == 'evaluate_blp':\n                self.assertEqual(\n                    str(exc.exception), \"CATE predictions not yet calculated - must provide Xval\"\n                )\n            else:\n                self.assertEqual(str(exc.exception),\n                                 \"CATE predictions not yet calculated - must provide both Xval, Xtrain\")\n\n        for func in [\n            my_dr_tester.evaluate_cal,\n            my_dr_tester.evaluate_uplift,\n            my_dr_tester.evaluate_all\n        ]:\n            with self.assertRaises(Exception) as exc:\n                func(Xval=Xval)\n            self.assertEqual(\n                str(exc.exception), \"CATE predictions not yet calculated - must provide both Xval, Xtrain\")\n\n        cal_res = my_dr_tester.evaluate_cal(Xval, Xtrain)\n        self.assertGreater(cal_res.cal_r_squared[0], 0)  # good R2\n\n        with self.assertRaises(Exception) as exc:\n            my_dr_tester.evaluate_uplift(metric='blah')\n        self.assertEqual(\n            str(exc.exception), \"Unsupported metric 'blah' - must be one of ['toc', 'qini']\"\n        )\n\n        my_dr_tester = DRTester(\n            model_regression=reg_y,\n            model_propensity=reg_t,\n            cate=cate\n        ).fit_nuisance(\n            Xval, Dval, Yval, Xtrain, Dtrain, Ytrain\n        )\n        qini_res = my_dr_tester.evaluate_uplift(Xval, Xtrain)\n        self.assertLess(qini_res.pvals[0], 0.05)\n\n        with self.assertRaises(Exception) as exc:\n            qini_res.plot_uplift(tmt=1, err_type='blah')\n        self.assertEqual(\n            str(exc.exception), \"Invalid error type 'blah'; must be one of [None, 'ucb2', 'ucb1']\"\n        )\n\n        autoc_res = my_dr_tester.evaluate_uplift(Xval, Xtrain, metric='toc')\n        self.assertLess(autoc_res.pvals[0], 0.05)\n"
  },
  {
    "path": "econml/tests/test_dynamic_dml.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\nimport unittest\nimport pytest\nimport pickle\nimport numpy as np\nfrom contextlib import ExitStack\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import (LassoCV, Lasso, MultiTaskLasso,\n                                  LogisticRegression)\nfrom econml.panel.dml import DynamicDML\nfrom econml.panel.dml._dml import _get_groups_period_filter\nfrom econml.inference import BootstrapInference\nfrom econml.utilities import shape\nfrom econml.tests.dgp import DynamicPanelDGP\n\n\n@pytest.mark.cate_api\nclass TestDynamicDML(unittest.TestCase):\n\n    def test_cate_api(self):\n        \"\"\"Test that we correctly implement the CATE API.\"\"\"\n        n_panels = 100  # number of panels\n        n_periods = 3  # number of time periods per panel\n        n = n_panels * n_periods\n        groups = np.repeat(a=np.arange(n_panels), repeats=n_periods, axis=0)\n\n        def make_random(n, is_discrete, d):\n            if d is None:\n                return None\n            sz = (n, d) if d >= 0 else (n,)\n            if is_discrete:\n                return np.random.choice(['a', 'b', 'c'], size=sz)\n            else:\n                return np.random.normal(size=sz)\n\n        for d_t in [2, 1, -1]:\n            for is_discrete in [True, False] if d_t <= 1 else [False]:\n                # for is_discrete in [False]:\n                for d_y in [3, 1, -1]:\n                    for d_x in [2, None]:\n                        for d_w in [2, None]:\n                            W, X, Y, T = [make_random(n, is_discrete, d)\n                                          for is_discrete, d in [(False, d_w),\n                                                                 (False, d_x),\n                                                                 (False, d_y),\n                                                                 (is_discrete, d_t)]]\n                            T_test = np.hstack([(T.reshape(-1, 1) if d_t == -1 else T) for i in range(n_periods)])\n                            for featurizer, fit_cate_intercept in\\\n                                [(None, True),\n                                 (PolynomialFeatures(degree=2, include_bias=False), True),\n                                 (PolynomialFeatures(degree=2, include_bias=True), False)]:\n\n                                d_t_final = (2 if is_discrete else max(d_t, 1)) * n_periods\n\n                                effect_shape = (n,) + ((d_y,) if d_y > 0 else ())\n                                effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1), 6)\n                                marginal_effect_shape = ((n,) +\n                                                         ((d_y,) if d_y > 0 else ()) +\n                                                         ((d_t_final,) if d_t_final > 0 else ()))\n                                marginal_effect_summaryframe_shape = (n * (d_y if d_y > 0 else 1) *\n                                                                      (d_t_final if d_t_final > 0 else 1), 6)\n\n                                # since T isn't passed to const_marginal_effect, defaults to one row if X is None\n                                const_marginal_effect_shape = ((n if d_x else 1,) +\n                                                               ((d_y,) if d_y > 0 else ()) +\n                                                               ((d_t_final,) if d_t_final > 0 else ()))\n                                const_marginal_effect_summaryframe_shape = (\n                                    (n if d_x else 1) * (d_y if d_y > 0 else 1) *\n                                    (d_t_final if d_t_final > 0 else 1), 6)\n\n                                fd_x = featurizer.fit_transform(X).shape[1:] if featurizer and d_x\\\n                                    else ((d_x,) if d_x else (0,))\n                                coef_shape = Y.shape[1:] + (d_t_final, ) + fd_x\n\n                                coef_summaryframe_shape = (\n                                    (d_y if d_y > 0 else 1) * (fd_x[0] if fd_x[0] >\n                                                               0 else 1) * (d_t_final), 6)\n                                intercept_shape = Y.shape[1:] + (d_t_final, )\n                                intercept_summaryframe_shape = (\n                                    (d_y if d_y > 0 else 1) * (d_t_final if d_t_final > 0 else 1), 6)\n\n                                all_infs = [None, 'auto', BootstrapInference(2)]\n                                est = DynamicDML(model_y=Lasso() if d_y < 1 else MultiTaskLasso(),\n                                                 model_t=LogisticRegression() if is_discrete else\n                                                 (Lasso() if d_t < 1 else MultiTaskLasso()),\n                                                 featurizer=featurizer,\n                                                 fit_cate_intercept=fit_cate_intercept,\n                                                 discrete_treatment=is_discrete)\n\n                                # ensure we can serialize the unfit estimator\n                                pickle.dumps(est)\n\n                                for inf in all_infs:\n                                    with self.subTest(d_w=d_w, d_x=d_x, d_y=d_y, d_t=d_t,\n                                                      is_discrete=is_discrete, est=type(est).__name__, inf=repr(inf)):\n\n                                        if X is None and (not fit_cate_intercept):\n                                            with pytest.raises(AttributeError):\n                                                est.fit(Y, T, X=X, W=W, groups=groups, inference=inf)\n                                            continue\n\n                                        est.fit(Y, T, X=X, W=W, groups=groups, inference=inf)\n\n                                        # ensure we can pickle the fit estimator\n                                        pickle.dumps(est)\n\n                                        # make sure we can call the marginal_effect and effect methods\n                                        const_marg_eff = est.const_marginal_effect(X)\n                                        marg_eff = est.marginal_effect(T_test, X)\n                                        self.assertEqual(shape(marg_eff), marginal_effect_shape)\n                                        self.assertEqual(shape(const_marg_eff), const_marginal_effect_shape)\n\n                                        np.testing.assert_allclose(\n                                            marg_eff if d_x else marg_eff[0:1], const_marg_eff)\n\n                                        assert len(est.score_) == n_periods\n                                        for score in est.nuisance_scores_y[0]:\n                                            assert score.shape == (n_periods, )\n                                        for score in est.nuisance_scores_t[0]:\n                                            assert score.shape == (n_periods, n_periods)\n\n                                        T0 = np.full_like(T_test, 'a') if is_discrete else np.zeros_like(T_test)\n                                        eff = est.effect(X, T0=T0, T1=T_test)\n                                        self.assertEqual(shape(eff), effect_shape)\n\n                                        self.assertEqual(shape(est.coef_), coef_shape)\n                                        if fit_cate_intercept:\n                                            self.assertEqual(shape(est.intercept_), intercept_shape)\n                                        else:\n                                            with pytest.raises(AttributeError):\n                                                self.assertEqual(shape(est.intercept_), intercept_shape)\n\n                                        if inf is not None:\n                                            const_marg_eff_int = est.const_marginal_effect_interval(X)\n                                            marg_eff_int = est.marginal_effect_interval(T_test, X)\n                                            self.assertEqual(shape(marg_eff_int),\n                                                             (2,) + marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_eff_int),\n                                                             (2,) + const_marginal_effect_shape)\n                                            self.assertEqual(shape(est.effect_interval(X, T0=T0, T1=T_test)),\n                                                             (2,) + effect_shape)\n                                            self.assertEqual(shape(est.coef__interval()),\n                                                             (2,) + coef_shape)\n                                            if fit_cate_intercept:\n                                                self.assertEqual(shape(est.intercept__interval()),\n                                                                 (2,) + intercept_shape)\n                                            else:\n                                                with pytest.raises(AttributeError):\n                                                    self.assertEqual(shape(est.intercept__interval()),\n                                                                     (2,) + intercept_shape)\n\n                                            const_marg_effect_inf = est.const_marginal_effect_inference(X)\n                                            T1 = np.full_like(T_test, 'b') if is_discrete else T_test\n                                            effect_inf = est.effect_inference(X, T0=T0, T1=T1)\n                                            marg_effect_inf = est.marginal_effect_inference(T_test, X)\n                                            # test const marginal inference\n                                            self.assertEqual(shape(const_marg_effect_inf.summary_frame()),\n                                                             const_marginal_effect_summaryframe_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.point_estimate),\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.stderr),\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.var),\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.pvalue()),\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.zstat()),\n                                                             const_marginal_effect_shape)\n                                            self.assertEqual(shape(const_marg_effect_inf.conf_int()),\n                                                             (2,) + const_marginal_effect_shape)\n                                            np.testing.assert_array_almost_equal(\n                                                const_marg_effect_inf.conf_int()[0],\n                                                const_marg_eff_int[0], decimal=5)\n                                            const_marg_effect_inf.population_summary()._repr_html_()\n\n                                            # test effect inference\n                                            self.assertEqual(shape(effect_inf.summary_frame()),\n                                                             effect_summaryframe_shape)\n                                            self.assertEqual(shape(effect_inf.point_estimate),\n                                                             effect_shape)\n                                            self.assertEqual(shape(effect_inf.stderr),\n                                                             effect_shape)\n                                            self.assertEqual(shape(effect_inf.var),\n                                                             effect_shape)\n                                            self.assertEqual(shape(effect_inf.pvalue()),\n                                                             effect_shape)\n                                            self.assertEqual(shape(effect_inf.zstat()),\n                                                             effect_shape)\n                                            self.assertEqual(shape(effect_inf.conf_int()),\n                                                             (2,) + effect_shape)\n                                            np.testing.assert_array_almost_equal(\n                                                effect_inf.conf_int()[0],\n                                                est.effect_interval(X, T0=T0, T1=T1)[0], decimal=5)\n                                            effect_inf.population_summary()._repr_html_()\n\n                                            # test marginal effect inference\n                                            self.assertEqual(shape(marg_effect_inf.summary_frame()),\n                                                             marginal_effect_summaryframe_shape)\n                                            self.assertEqual(shape(marg_effect_inf.point_estimate),\n                                                             marginal_effect_shape)\n                                            self.assertEqual(shape(marg_effect_inf.stderr),\n                                                             marginal_effect_shape)\n                                            self.assertEqual(shape(marg_effect_inf.var),\n                                                             marginal_effect_shape)\n                                            self.assertEqual(shape(marg_effect_inf.pvalue()),\n                                                             marginal_effect_shape)\n                                            self.assertEqual(shape(marg_effect_inf.zstat()),\n                                                             marginal_effect_shape)\n                                            self.assertEqual(shape(marg_effect_inf.conf_int()),\n                                                             (2,) + marginal_effect_shape)\n                                            np.testing.assert_array_almost_equal(\n                                                marg_effect_inf.conf_int()[0], marg_eff_int[0], decimal=5)\n                                            marg_effect_inf.population_summary()._repr_html_()\n\n                                            # test coef__inference and intercept__inference\n                                            if X is not None:\n                                                self.assertEqual(\n                                                    shape(est.coef__inference().summary_frame()),\n                                                    coef_summaryframe_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    est.coef__inference().conf_int()\n                                                    [0], est.coef__interval()[0], decimal=5)\n\n                                            if fit_cate_intercept:\n                                                cm = ExitStack()\n                                                # ExitStack can be used as a \"do nothing\" ContextManager\n                                            else:\n                                                cm = pytest.raises(AttributeError)\n                                            with cm:\n                                                self.assertEqual(shape(est.intercept__inference().\n                                                                       summary_frame()),\n                                                                 intercept_summaryframe_shape)\n                                                np.testing.assert_array_almost_equal(\n                                                    est.intercept__inference().conf_int()\n                                                    [0], est.intercept__interval()[0], decimal=5)\n\n                                            est.summary()\n                                        est.score(Y, T, X, W, groups=groups)\n                                        # make sure we can call effect with implied scalar treatments,\n                                        # no matter the dimensions of T, and also that we warn when there\n                                        # are multiple treatments\n                                        if d_t > 1:\n                                            cm = self.assertWarns(Warning)\n                                        else:\n                                            # ExitStack can be used as a \"do nothing\" ContextManager\n                                            cm = ExitStack()\n                                        with cm:\n                                            effect_shape2 = (n if d_x else 1,) + ((d_y,) if d_y > 0 else ())\n                                            eff = est.effect(X) if not is_discrete else est.effect(\n                                                X, T0='a', T1='b')\n                                            self.assertEqual(shape(eff), effect_shape2)\n\n    def test_perf(self):\n        np.random.seed(123)\n        n_units = 1000\n        n_periods = 3\n        n_treatments = 1\n        n_x = 100\n        s_x = 10\n        s_t = 10\n        hetero_strength = .5\n        hetero_inds = np.arange(n_x - n_treatments, n_x)\n\n        def lasso_model():\n            return LassoCV(cv=3)\n\n        # No heterogeneity\n        dgp = DynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(\n            s_x, random_seed=12345)\n        Y, T, X, W, groups = dgp.observational_data(n_units, s_t=s_t, random_seed=12345)\n        est = DynamicDML(model_y=lasso_model(), model_t=lasso_model(), cv=3)\n        # Define indices to test\n        groups_filter = _get_groups_period_filter(groups, 3)\n        shuffled_idx = np.array([groups_filter[i] for i in range(n_periods)]).flatten()\n        test_indices = [np.arange(n_units * n_periods), shuffled_idx]\n        for test_idx in test_indices:\n            est.fit(Y[test_idx], T[test_idx], X=X[test_idx] if X is not None else None, W=W[test_idx],\n                    groups=groups[test_idx], inference=\"auto\")\n            np.testing.assert_allclose(est.intercept_, dgp.true_effect.flatten(), atol=0.2)\n            np.testing.assert_array_less(est.intercept__interval()[0], dgp.true_effect.flatten())\n            np.testing.assert_array_less(dgp.true_effect.flatten(), est.intercept__interval()[1])\n\n        # Heterogeneous effects\n        dgp = DynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(\n            s_x, hetero_strength=hetero_strength, hetero_inds=hetero_inds, random_seed=12)\n        Y, T, X, W, groups = dgp.observational_data(n_units, s_t=s_t, random_seed=1)\n        hetero_strength = .5\n        hetero_inds = np.arange(n_x - n_treatments, n_x)\n        for test_idx in test_indices:\n            est.fit(Y[test_idx], T[test_idx], X=X[test_idx], W=W[test_idx], groups=groups[test_idx], inference=\"auto\")\n            np.testing.assert_allclose(est.intercept_, dgp.true_effect.flatten(), atol=0.2)\n            np.testing.assert_allclose(est.coef_, dgp.true_hetero_effect[:, hetero_inds + 1], atol=0.2)\n            np.testing.assert_array_less(est.intercept__interval()[0], dgp.true_effect.flatten())\n            np.testing.assert_array_less(dgp.true_effect.flatten(), est.intercept__interval()[1])\n            np.testing.assert_array_less(est.coef__interval()[0] - .05, dgp.true_hetero_effect[:, hetero_inds + 1])\n            np.testing.assert_array_less(dgp.true_hetero_effect[:, hetero_inds + 1] - .05, est.coef__interval()[1])\n"
  },
  {
    "path": "econml/tests/test_federated_learning.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport unittest\n\nfrom econml.dml import LinearDML\nfrom econml.dr import LinearDRLearner\nfrom econml.inference import StatsModelsInference, StatsModelsInferenceDiscrete\nfrom econml.federated_learning import FederatedEstimator\n\n\nclass FunctionRegressor:\n    \"\"\"A simple model that ignores the data it is fitted on, always just using the specified function to predict.\"\"\"\n\n    def __init__(self, func):\n        self.func = func\n\n    def fit(self, X, y, sample_weight=None):\n        pass\n\n    def predict(self, X):\n        return self.func(X)\n\n\nclass FunctionClassifier(FunctionRegressor):\n    \"\"\"A simple model that ignores the data it is fitted on, always just using the specified function to predict.\"\"\"\n\n    def __init__(self, func):\n        self.func = func\n\n    def predict_proba(self, X):\n        return self.func(X)\n\n\nclass TestFederatedLearning(unittest.TestCase):\n    \"\"\"\n    A set of unit tests for the FederatedLearner class.\n\n    These tests check various scenarios of splitting, aggregation, and comparison\n    between FederatedLearner and individual LinearDML/LinearDRLearner estimators.\n\n    Parameters\n    ----------\n    None\n\n    Returns\n    -------\n    None\n    \"\"\"\n\n    def test_lineardrlearner(self):\n\n        num_samples = 1000\n        n_w = 5\n        n_x = 5\n        for n_t in [2, 3]:\n            X = np.random.normal(size=(num_samples, n_x))\n            W = np.random.normal(size=(num_samples, n_w))\n            T = np.random.choice(range(n_t), size=(num_samples,))\n            Y = np.random.normal(size=(num_samples,))\n            Y1, T1, X1, W1 = [A[:num_samples // 2] for A in [Y, T, X, W]]\n            Y2, T2, X2, W2 = [A[num_samples // 2:] for A in [Y, T, X, W]]\n\n            # fixed functions as first stage models\n            # they can be anything as long as fitting doesn't modify the predictions\n            # that way, it doesn't matter if they are trained on different subsets of the data\n            a = np.random.normal(size=(n_x + n_w, n_t))\n            b = np.random.normal(size=(n_x + n_w + n_t - 1))\n\n            t_model = FunctionClassifier(lambda XW: np.exp(XW @ a))\n            y_model = FunctionRegressor(lambda XW: XW @ b)\n\n            for cov_type in ['HC0', 'HC1', 'nonrobust']:\n                with self.subTest(n_t=n_t, cov_type=cov_type):\n                    est_all = LinearDRLearner(model_propensity=t_model, model_regression=y_model,\n                                              enable_federation=True)\n                    est_h1 = LinearDRLearner(model_propensity=t_model, model_regression=y_model,\n                                             enable_federation=True)\n                    est_h2 = LinearDRLearner(model_propensity=t_model, model_regression=y_model,\n                                             enable_federation=True)\n                    est_h2_no_fed = LinearDRLearner(model_propensity=t_model, model_regression=y_model,\n                                                    enable_federation=False)\n                    est_h2_wrong_cov = LinearDRLearner(model_propensity=t_model, model_regression=y_model,\n                                                       enable_federation=True)\n\n                    est_all.fit(Y, T, X=X, W=W,\n                                inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                    est_h1.fit(Y1, T1, X=X1, W=W1,\n                               inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                    est_h2.fit(Y2, T2, X=X2, W=W2,\n                               inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                    est_h2_no_fed.fit(Y2, T2, X=X2, W=W2,\n                                      inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                    est_h2_wrong_cov.fit(Y2, T2, X=X2, W=W2,\n                                         inference=StatsModelsInferenceDiscrete(cov_type=('HC0' if cov_type != 'HC0'\n                                                                                          else 'HC1')))\n\n                    est_fed1 = FederatedEstimator([est_all])\n\n                    est_fed2 = FederatedEstimator([est_h1, est_h2])\n\n                    with self.assertRaises(AssertionError):\n                        # all estimators must have opted in to federation\n                        FederatedEstimator([est_h1, est_h2_no_fed])\n\n                    with self.assertRaises(AssertionError):\n                        # all estimators must have the same covariance type\n                        FederatedEstimator([est_h1, est_h2_wrong_cov])\n\n                    # test coefficients\n                    for t in range(1, n_t):\n                        np.testing.assert_allclose(est_fed1.coef_(t),\n                                                   est_fed2.coef_(t))\n                        np.testing.assert_allclose(est_fed1.coef_(t),\n                                                   est_all.coef_(t))\n                        np.testing.assert_allclose(est_fed1.coef__interval(t),\n                                                   est_fed2.coef__interval(t))\n                        np.testing.assert_allclose(est_fed1.coef__interval(t),\n                                                   est_all.coef__interval(t))\n\n                    # test effects\n                    np.testing.assert_allclose(est_fed1.effect(X[:10]),\n                                               est_fed2.effect(X[:10]))\n                    np.testing.assert_allclose(est_fed1.effect(X[:10]),\n                                               est_all.effect(X[:10]))\n                    np.testing.assert_allclose(est_fed1.effect_interval(X[:10]),\n                                               est_fed2.effect_interval(X[:10]))\n                    np.testing.assert_allclose(est_fed1.effect_interval(X[:10]),\n                                               est_all.effect_interval(X[:10]))\n\n    def test_splitting_works(self):\n\n        num_samples = 1000\n        n_w = 5\n        for d_x in [None, 5]:\n            for d_t in [(), (2,)]:\n                for d_y in [(), (2,)]:\n                    for weights in [None, np.random.uniform(size=num_samples)]:\n                        for sample_var in [None, np.random.uniform(size=(num_samples,) + d_y)]:\n\n                            n_x = d_x if d_x is not None else 0\n                            X = np.random.normal(size=(num_samples, n_x)) if d_x is not None else None\n                            W = np.random.normal(size=(num_samples, n_w))\n                            T = np.random.normal(size=(num_samples,) + d_t)\n                            Y = np.random.normal(size=(num_samples,) + d_y)\n                            freq_weights = np.random.choice(\n                                [2, 3, 4], size=num_samples) if sample_var is not None else None\n\n                            (Y1, T1, X1, W1,\n                             weights1, freq_weights1, sample_var1) = [A[:num_samples // 2] if A is not None else None\n                                                                      for A in [Y, T, X, W,\n                                                                                weights, freq_weights, sample_var]]\n                            (Y2, T2, X2, W2,\n                             weights2, freq_weights2, sample_var2) = [A[num_samples // 2:] if A is not None else None\n                                                                      for A in [Y, T, X, W,\n                                                                                weights, freq_weights, sample_var]]\n\n                            # fixed functions as first stage models\n                            # they can be anything as long as fitting doesn't modify the predictions\n                            # that way, it doesn't matter if they are trained on different subsets of the data\n                            a = np.random.normal(size=(n_x + n_w,) + d_t)\n                            b = np.random.normal(size=(n_x + n_w,) + d_y)\n\n                            t_model = FunctionRegressor(lambda XW: XW @ a)\n                            y_model = FunctionRegressor(lambda XW: XW @ b)\n\n                            for cov_type in ['HC0', 'HC1', 'nonrobust']:\n                                with self.subTest(d_x=d_x, d_t=d_t, d_y=d_y,\n                                                  weights=(weights is not None), fw=(freq_weights is not None),\n                                                  cov_type=cov_type):\n                                    est_all = LinearDML(model_t=t_model, model_y=y_model,\n                                                        enable_federation=True)\n                                    est_h1 = LinearDML(model_t=t_model, model_y=y_model,\n                                                       enable_federation=True)\n                                    est_h2 = LinearDML(model_t=t_model, model_y=y_model,\n                                                       enable_federation=True)\n\n                                    est_all.fit(Y, T, X=X, W=W,\n                                                sample_weight=weights,\n                                                freq_weight=freq_weights,\n                                                sample_var=sample_var,\n                                                inference=StatsModelsInference(cov_type=cov_type))\n                                    est_h1.fit(Y1, T1, X=X1, W=W1,\n                                               sample_weight=weights1,\n                                               freq_weight=freq_weights1,\n                                               sample_var=sample_var1,\n                                               inference=StatsModelsInference(cov_type=cov_type))\n                                    est_h2.fit(Y2, T2, X=X2, W=W2,\n                                               sample_weight=weights2,\n                                               freq_weight=freq_weights2,\n                                               sample_var=sample_var2,\n                                               inference=StatsModelsInference(cov_type=cov_type))\n\n                                    est_fed1 = FederatedEstimator([est_all])\n\n                                    est_fed2 = FederatedEstimator([est_h1, est_h2])\n                                    # test coefficients\n                                    np.testing.assert_allclose(est_fed1.coef_,\n                                                               est_fed2.coef_)\n                                    np.testing.assert_allclose(est_fed1.coef_,\n                                                               est_all.coef_)\n                                    np.testing.assert_allclose(est_fed1.coef__interval(),\n                                                               est_fed2.coef__interval())\n                                    np.testing.assert_allclose(est_fed1.coef__interval(),\n                                                               est_all.coef__interval())\n\n                                    # test effects\n                                    X_test = X[:10] if X is not None else None\n                                    np.testing.assert_allclose(est_fed1.effect(X_test),\n                                                               est_fed2.effect(X_test))\n                                    np.testing.assert_allclose(est_fed1.effect(X_test),\n                                                               est_all.effect(X_test))\n                                    np.testing.assert_allclose(est_fed1.effect_interval(X_test),\n                                                               est_fed2.effect_interval(X_test))\n                                    np.testing.assert_allclose(est_fed1.effect_interval(X_test),\n                                                               est_all.effect_interval(X_test))\n"
  },
  {
    "path": "econml/tests/test_grf_cython.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport unittest\r\nimport numpy as np\r\nfrom econml.tree import DepthFirstTreeBuilder, BestSplitter, Tree\r\nfrom econml.grf import LinearMomentGRFCriterion, LinearMomentGRFCriterionMSE\r\nfrom econml.grf._utils import matinv, lstsq, pinv, fast_max_eigv, fast_min_eigv\r\nfrom econml.utilities import cross_product\r\n\r\n\r\nclass TestGRFCython(unittest.TestCase):\r\n\r\n    def _get_base_config(self, n_features=2, n_t=2, n_samples_train=1000):\r\n        n_y = 1\r\n        return {'criterion': 'het',\r\n                'n_features': n_features,\r\n                'n_y': n_y,\r\n                'n_outputs': n_t + 1,\r\n                'n_relevant_outputs': n_t,\r\n                'store_jac': True,\r\n                'n_samples': n_samples_train,\r\n                'n_samples_train': n_samples_train,\r\n                'max_features': n_features,\r\n                'min_samples_split': 2,\r\n                'min_samples_leaf': 10,\r\n                'min_weight_leaf': 1,\r\n                'min_eig_leaf': -1,\r\n                'min_eig_leaf_on_val': False,\r\n                'min_balancedness_tol': .3,\r\n                'max_depth': 2,\r\n                'min_impurity_decrease': 0.0,\r\n                'honest': False,\r\n                'random_state': 1234,\r\n                'max_node_samples': n_samples_train,\r\n                'samples_train': np.arange(n_samples_train, dtype=np.intp),\r\n                'samples_val': np.arange(n_samples_train, dtype=np.intp)\r\n                }\r\n\r\n    def _get_base_honest_config(self, n_features=2, n_t=2, n_samples_train=1000):\r\n        n_y = 1\r\n        return {'criterion': 'het',\r\n                'n_features': n_features,\r\n                'n_y': n_y,\r\n                'n_outputs': n_t + 1,\r\n                'n_relevant_outputs': n_t,\r\n                'store_jac': True,\r\n                'n_samples': 2 * n_samples_train,\r\n                'n_samples_train': n_samples_train,\r\n                'max_features': n_features,\r\n                'min_samples_split': 2,\r\n                'min_samples_leaf': 10,\r\n                'min_weight_leaf': 1,\r\n                'min_eig_leaf': -1,\r\n                'min_eig_leaf_on_val': False,\r\n                'min_balancedness_tol': .3,\r\n                'max_depth': 2,\r\n                'min_impurity_decrease': 0.0,\r\n                'honest': True,\r\n                'random_state': 1234,\r\n                'max_node_samples': n_samples_train,\r\n                'samples_train': np.arange(n_samples_train, dtype=np.intp),\r\n                'samples_val': np.arange(n_samples_train, 2 * n_samples_train, dtype=np.intp)\r\n                }\r\n\r\n    def _get_cython_objects(self, *, criterion, n_features, n_y, n_outputs, n_relevant_outputs,\r\n                            store_jac, n_samples, n_samples_train, max_features,\r\n                            min_samples_split, min_samples_leaf, min_weight_leaf,\r\n                            min_eig_leaf, min_eig_leaf_on_val, min_balancedness_tol, max_depth, min_impurity_decrease,\r\n                            honest, random_state, max_node_samples, samples_train,\r\n                            samples_val):\r\n        tree = Tree(n_features, n_outputs, n_relevant_outputs, store_jac)\r\n        if criterion == 'het':\r\n            criterion = LinearMomentGRFCriterion(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                                                 n_samples, max_node_samples, random_state)\r\n            criterion_val = LinearMomentGRFCriterion(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                                                     n_samples, max_node_samples, random_state)\r\n        else:\r\n            criterion = LinearMomentGRFCriterionMSE(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                                                    n_samples, max_node_samples, random_state)\r\n            criterion_val = LinearMomentGRFCriterionMSE(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                                                        n_samples, max_node_samples, random_state)\r\n        splitter = BestSplitter(criterion, criterion_val,\r\n                                max_features, min_samples_leaf, min_weight_leaf,\r\n                                min_balancedness_tol, honest, min_eig_leaf, min_eig_leaf_on_val, random_state)\r\n        builder = DepthFirstTreeBuilder(splitter, min_samples_split,\r\n                                        min_samples_leaf, min_weight_leaf,\r\n                                        max_depth, min_impurity_decrease)\r\n        return tree, criterion, criterion_val, splitter, builder\r\n\r\n    def _get_continuous_data(self, config):\r\n        random_state = np.random.RandomState(config['random_state'])\r\n        X = random_state.normal(size=(config['n_samples_train'], config['n_features']))\r\n        T = np.zeros((config['n_samples_train'], config['n_relevant_outputs']))\r\n        for t in range(T.shape[1]):\r\n            T[:, t] = random_state.binomial(1, .5, size=(T.shape[0],))\r\n        Taug = np.hstack([T, np.ones((T.shape[0], 1))])\r\n        y = ((X[:, [0]] > 0.0) + .5) * np.sum(T, axis=1, keepdims=True) + .5\r\n        yaug = np.hstack([y, y * Taug, cross_product(Taug, Taug)])\r\n        X = np.vstack([X, X])\r\n        yaug = np.vstack([yaug, yaug])\r\n        return X, yaug, np.hstack([(X[:, [0]] > 0.0) + .5, (X[:, [0]] > 0.0) + .5])\r\n\r\n    def _train_tree(self, config, X, y):\r\n        tree, criterion, criterion_val, splitter, builder = self._get_cython_objects(**config)\r\n        builder.build(tree, X, y,\r\n                      config['samples_train'],\r\n                      config['samples_val'],\r\n                      store_jac=config['store_jac'])\r\n        return tree\r\n\r\n    def _get_true_quantities(self, config, X, y, mask, criterion):\r\n        alpha = y[mask, config['n_y']:config['n_y'] + config['n_outputs']]\r\n        pointJ = y[mask, config['n_y'] + config['n_outputs']:\r\n                   config['n_y'] + (config['n_outputs'] + 1) * config['n_outputs']]\r\n        jac = np.mean(pointJ, axis=0)\r\n        precond = np.mean(alpha, axis=0)\r\n        invJ = np.linalg.inv(jac.reshape((alpha.shape[1], alpha.shape[1])))\r\n        param = invJ @ precond\r\n        moment = alpha - pointJ.reshape((-1, alpha.shape[1], alpha.shape[1])) @ param\r\n        rho = ((invJ @ moment.T).T)[:, :config['n_relevant_outputs']]\r\n        if criterion == 'het':\r\n            impurity = np.mean(rho**2) - np.mean(np.mean(rho, axis=0)**2)\r\n        else:\r\n            impurity = np.mean(y[mask, :config['n_y']]**2)\r\n            impurity -= (param.reshape(1, -1) @ jac.reshape((alpha.shape[1], alpha.shape[1])) @ param)[0]\r\n        return jac, precond, param, impurity\r\n\r\n    def _get_node_quantities(self, tree, node_id):\r\n        return (tree.jac[node_id, :], tree.precond[node_id, :],\r\n                tree.full_value[node_id, :, 0], tree.impurity[node_id])\r\n\r\n    def _test_tree_quantities(self, base_config_gen, criterion):\r\n        config = base_config_gen()\r\n        config['criterion'] = criterion\r\n        config['max_depth'] = 1\r\n        X, y, truth = self._get_continuous_data(config)\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(X[:config['n_samples_train']], X[config['n_samples_train']:])\r\n        np.testing.assert_array_equal(y[:config['n_samples_train']], y[config['n_samples_train']:])\r\n        np.testing.assert_array_equal(config['samples_train'], np.arange(config['n_samples_train']))\r\n        if config['honest']:\r\n            np.testing.assert_array_equal(config['samples_val'],\r\n                                          np.arange(config['n_samples_train'], 2 * config['n_samples_train']))\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2]))\r\n        np.testing.assert_allclose(tree.threshold, np.array([0, -2, -2]), atol=.1, rtol=0)\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, np.ones(X.shape[0]) > 0, criterion),\r\n                         self._get_node_quantities(tree, 0))]\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y,\r\n                                                   X[:, tree.feature[0]] < tree.threshold[0], criterion),\r\n                         self._get_node_quantities(tree, 1))]\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y,\r\n                                                   X[:, tree.feature[0]] >= tree.threshold[0], criterion),\r\n                         self._get_node_quantities(tree, 2))]\r\n\r\n        mask = np.abs(X[:, 0]) > .05\r\n        np.testing.assert_allclose(tree.predict(X[mask]), truth[mask], atol=.05)\r\n\r\n        config = base_config_gen()\r\n        config['criterion'] = criterion\r\n        config['max_depth'] = 2\r\n        X, y, truth = self._get_continuous_data(config)\r\n        tree = self._train_tree(config, X, y)\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, np.ones(X.shape[0]) > 0, criterion),\r\n                         self._get_node_quantities(tree, 0))]\r\n        mask0 = X[:, tree.feature[0]] < tree.threshold[0]\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, mask0, criterion),\r\n                         self._get_node_quantities(tree, 1))]\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, ~mask0, criterion),\r\n                         self._get_node_quantities(tree, 4))]\r\n        mask1a = mask0 & (X[:, tree.feature[1]] < tree.threshold[1])\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, mask1a, criterion),\r\n                         self._get_node_quantities(tree, 2))]\r\n        mask1b = mask0 & (X[:, tree.feature[1]] >= tree.threshold[1])\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, mask1b, criterion),\r\n                         self._get_node_quantities(tree, 3))]\r\n        mask1c = (~mask0) & (X[:, tree.feature[4]] < tree.threshold[4])\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, mask1c, criterion),\r\n                         self._get_node_quantities(tree, 5))]\r\n        mask1d = (~mask0) & (X[:, tree.feature[4]] >= tree.threshold[4])\r\n        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n         for a, b in zip(self._get_true_quantities(config, X, y, mask1d, criterion),\r\n                         self._get_node_quantities(tree, 6))]\r\n\r\n        mask = np.abs(X[:, 0]) > .05\r\n        np.testing.assert_allclose(tree.predict(X[mask]), truth[mask], atol=.05)\r\n\r\n    def test_dishonest_tree(self):\r\n        self._test_tree_quantities(self._get_base_config, criterion='het')\r\n        self._test_tree_quantities(self._get_base_config, criterion='mse')\r\n\r\n    def test_honest_tree(self):\r\n        self._test_tree_quantities(self._get_base_honest_config, criterion='het')\r\n        self._test_tree_quantities(self._get_base_honest_config, criterion='mse')\r\n\r\n    def test_honest_dishonest_equivalency(self):\r\n        for criterion in ['het', 'mse']:\r\n            config = self._get_base_config()\r\n            config['criterion'] = criterion\r\n            config['max_depth'] = 4\r\n            X, y, _ = self._get_continuous_data(config)\r\n            tree = self._train_tree(config, X, y)\r\n            config = self._get_base_honest_config()\r\n            config['criterion'] = criterion\r\n            config['max_depth'] = 4\r\n            X, y, _ = self._get_continuous_data(config)\r\n            honest_tree = self._train_tree(config, X, y)\r\n            np.testing.assert_equal(tree.feature, honest_tree.feature)\r\n            np.testing.assert_equal(tree.threshold, honest_tree.threshold)\r\n            np.testing.assert_equal(tree.value, honest_tree.value)\r\n            np.testing.assert_equal(tree.full_value, honest_tree.full_value)\r\n            np.testing.assert_equal(tree.impurity, honest_tree.impurity)\r\n            np.testing.assert_equal(tree.impurity, honest_tree.impurity_train)\r\n            np.testing.assert_equal(tree.n_node_samples, honest_tree.n_node_samples)\r\n            np.testing.assert_equal(tree.weighted_n_node_samples, honest_tree.weighted_n_node_samples_train)\r\n            np.testing.assert_equal(tree.n_node_samples, honest_tree.n_node_samples_train)\r\n            np.testing.assert_equal(tree.jac, honest_tree.jac)\r\n            np.testing.assert_equal(tree.precond, honest_tree.precond)\r\n            np.testing.assert_equal(tree.predict(X), honest_tree.predict(X))\r\n            np.testing.assert_equal(tree.predict_full(X), honest_tree.predict_full(X))\r\n            np.testing.assert_equal(tree.compute_feature_importances(), honest_tree.compute_feature_importances())\r\n            np.testing.assert_equal(tree.compute_feature_heterogeneity_importances(),\r\n                                    honest_tree.compute_feature_heterogeneity_importances())\r\n\r\n    def test_min_var_leaf(self):\r\n        n_samples_train = 10\r\n        for criterion in ['het', 'mse']:\r\n            config = self._get_base_config(n_samples_train=n_samples_train, n_t=1, n_features=1)\r\n            config['max_depth'] = 1\r\n            config['min_samples_leaf'] = 1\r\n            config['min_eig_leaf'] = .2\r\n            config['criterion'] = criterion\r\n            X = np.arange(n_samples_train).reshape(-1, 1)\r\n            T = np.random.binomial(1, .5, size=(n_samples_train, 1))\r\n            T[X[:, 0] < n_samples_train // 2] = 0\r\n            T[X[:, 0] >= n_samples_train // 2] = 1\r\n            Taug = np.hstack([T, np.ones((T.shape[0], 1))])\r\n            y = np.zeros((n_samples_train, 1))\r\n            yaug = np.hstack([y, y * Taug, cross_product(Taug, Taug)])\r\n            tree = self._train_tree(config, X, yaug)\r\n            if criterion == 'het':\r\n                np.testing.assert_array_less(config['min_eig_leaf'], np.mean(T[X[:, 0] > tree.threshold[0]]**2))\r\n                np.testing.assert_array_less(config['min_eig_leaf'], np.mean(T[X[:, 0] <= tree.threshold[0]]**2))\r\n            else:\r\n                np.testing.assert_array_equal(tree.feature, np.array([-2]))\r\n\r\n    def test_fast_eigv(self):\r\n        n = 4\r\n        np.random.seed(123)\r\n        for _ in range(10):\r\n            A = np.random.normal(0, 1, size=(n, n))\r\n            A = np.asfortranarray(A @ A.T)\r\n            apx = fast_min_eigv(A, 5, 123)\r\n            opt = np.min(np.linalg.eig(A)[0])\r\n            np.testing.assert_allclose(apx, opt, atol=.01, rtol=.3)\r\n            apx = fast_max_eigv(A, 10, 123)\r\n            opt = np.max(np.linalg.eig(A)[0])\r\n            np.testing.assert_allclose(apx, opt, atol=.5, rtol=.2)\r\n\r\n    def test_linalg(self):\r\n        np.random.seed(1235)\r\n        for n, m, nrhs in [(3, 3, 3), (3, 2, 1), (3, 1, 2), (1, 4, 2), (3, 4, 5)]:\r\n            for _ in range(100):\r\n                A = np.random.normal(0, 1, size=(n, m))\r\n                y = np.random.normal(0, 1, size=(n, nrhs))\r\n                yf = y\r\n                if m > n:\r\n                    yf = np.zeros((m, nrhs))\r\n                    yf[:n] = y\r\n                ours = np.asfortranarray(np.zeros((m, nrhs)))\r\n                lstsq(np.asfortranarray(A), np.asfortranarray(yf.copy()), ours, copy_b=True)\r\n                true = np.linalg.lstsq(A, y, rcond=np.finfo(np.float64).eps * max(n, m))[0]\r\n                np.testing.assert_allclose(ours, true, atol=.00001, rtol=.0)\r\n\r\n                ours = np.asfortranarray(np.zeros(A.T.shape, dtype=np.float64))\r\n                pinv(np.asfortranarray(A), ours)\r\n                true = np.linalg.pinv(A)\r\n                np.testing.assert_allclose(ours, true, atol=.00001, rtol=.0)\r\n\r\n                if n == m:\r\n                    ours = np.asfortranarray(np.zeros(A.T.shape, dtype=np.float64))\r\n                    matinv(np.asfortranarray(A), ours)\r\n                    true = np.linalg.inv(A)\r\n                    np.testing.assert_allclose(ours, true, atol=.00001, rtol=.0)\r\n"
  },
  {
    "path": "econml/tests/test_grf_python.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport unittest\r\nimport numpy as np\r\nimport pandas as pd\r\nimport joblib\r\nfrom econml.grf import RegressionForest, CausalForest, CausalIVForest, MultiOutputGRF\r\nfrom econml.utilities import cross_product\r\nfrom copy import deepcopy\r\nfrom sklearn.utils import check_random_state\r\nimport scipy.stats\r\n\r\n\r\nclass TestGRFPython(unittest.TestCase):\r\n\r\n    def _get_base_config(self):\r\n        return {'n_estimators': 1, 'subforest_size': 1, 'max_depth': 2,\r\n                'min_samples_split': 2, 'min_samples_leaf': 1,\r\n                'inference': False, 'max_samples': 1.0, 'honest': False,\r\n                'n_jobs': None, 'random_state': 123}\r\n\r\n    def _get_regression_data(self, n, n_features, random_state):\r\n        X = np.zeros((n, n_features))\r\n        X[:, 0] = np.arange(X.shape[0])\r\n        X[:, 1] = np.random.RandomState(random_state).normal(0, 1, size=(X.shape[0]))\r\n        y = 1.0 * (X[:, 0] >= n / 2).reshape(-1, 1)\r\n        y += 1.0 * (X[:, 0] >= n / 4).reshape(-1, 1)\r\n        y += 1.0 * (X[:, 0] >= 3 * n / 4).reshape(-1, 1)\r\n        return X, y, y\r\n\r\n    def test_regression_tree_internals(self):\r\n        base_config = self._get_base_config()\r\n        n, n_features = 10, 2\r\n        random_state = 123\r\n        X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n        forest = RegressionForest(**base_config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 0, -2, -2, 0, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, 2.5, - 2, -2, 7.5, -2, -2]))\r\n        np.testing.assert_array_almost_equal(tree.value.flatten()[:3],\r\n                                             np.array([np.mean(y),\r\n                                                       np.mean(y[X[:, tree.feature[0]] < tree.threshold[0]]),\r\n                                                       np.mean(y[(X[:, tree.feature[0]] < tree.threshold[0]) &\r\n                                                                 (X[:, tree.feature[1]] < tree.threshold[1])])]),\r\n                                             decimal=5)\r\n        np.testing.assert_array_almost_equal(tree.predict(X), y, decimal=5)\r\n        tree.predict_precond(X)\r\n        tree.predict_jac(X)\r\n        tree.predict_precond_and_jac(X)\r\n\r\n        less = X[:, tree.feature[0]] < tree.threshold[0]\r\n\r\n        # testing importances\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y)\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False),\r\n                                             feature_importances, decimal=5)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y) - np.var(y[less])\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False, max_depth=0),\r\n                                             feature_importances, decimal=5)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y) - np.var(y[less]) + .5 * (np.var(y[less]))\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False,\r\n                                                                              max_depth=1, depth_decay=1.0),\r\n                                             feature_importances, decimal=5)\r\n        # testing heterogeneity importances\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = 5 * 5 * (np.mean(y[less]) - np.mean(y[~less]))**2 / 100\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                            max_depth=0),\r\n                                             feature_importances, decimal=5)\r\n        feature_importances[0] += .5 * (2 * 2 * 3 * (1)**2 / 5) / 10\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                            max_depth=1,\r\n                                                                                            depth_decay=1.0),\r\n                                             feature_importances, decimal=5)\r\n        feature_importances[0] += .5 * (2 * 2 * 3 * (1)**2 / 5) / 10\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False),\r\n                                             feature_importances, decimal=5)\r\n\r\n        # Testing that all parameters do what they are supposed to\r\n        config = deepcopy(base_config)\r\n        config['min_samples_leaf'] = 5\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_samples_split'] = 11\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([-2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([-2]))\r\n        np.testing.assert_array_almost_equal(tree.predict(X), np.mean(y), decimal=5)\r\n        np.testing.assert_array_almost_equal(tree.predict_full(X), np.mean(y), decimal=5)\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_weight_fraction_leaf'] = .5\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n        # testing predict, apply and decision path\r\n        less = X[:, tree.feature[0]] < tree.threshold[0]\r\n        y_pred = np.zeros((X.shape[0], 1))\r\n        y_pred[less] = np.mean(y[less])\r\n        y_pred[~less] = np.mean(y[~less])\r\n        np.testing.assert_array_almost_equal(tree.predict(X), y_pred, decimal=5)\r\n        np.testing.assert_array_almost_equal(tree.predict_full(X), y_pred, decimal=5)\r\n        decision_path = np.zeros((X.shape[0], len(tree.feature)))\r\n        decision_path[less, :] = np.array([1, 1, 0])\r\n        decision_path[~less, :] = np.array([1, 0, 1])\r\n        np.testing.assert_array_equal(tree.decision_path(X).todense(), decision_path)\r\n        apply = np.zeros(X.shape[0])\r\n        apply[less] = 1\r\n        apply[~less] = 2\r\n        np.testing.assert_array_equal(tree.apply(X), apply)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = 1\r\n        np.testing.assert_array_equal(tree.compute_feature_importances(),\r\n                                      feature_importances)\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_balancedness_tol'] = 0.\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_balancedness_tol'] = 0.1\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 0, -2, -2, 0, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, 2.5, - 2, -2, 7.5, -2, -2]))\r\n\r\n        config = deepcopy(base_config)\r\n        config['max_depth'] = 1\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_impurity_decrease'] = 0.9999\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = deepcopy(base_config)\r\n        config['min_impurity_decrease'] = 1.0001\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        tree = forest[0].tree_\r\n        np.testing.assert_array_equal(tree.feature, np.array([-2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([-2, ]))\r\n\r\n    def _get_causal_data(self, n, n_features, n_treatments, random_state):\r\n        random_state = np.random.RandomState(random_state)\r\n        X = random_state.normal(size=(n, n_features))\r\n        T = np.zeros((n, n_treatments))\r\n        for t in range(T.shape[1]):\r\n            T[:, t] = random_state.binomial(1, .5, size=(T.shape[0],))\r\n        y = ((X[:, [0]] > 0.0) + .5) * np.sum(T, axis=1, keepdims=True) + .5\r\n        return (X, T, y, np.hstack([(X[:, [0]] > 0.0) + .5, (X[:, [0]] > 0.0) + .5]),\r\n                np.hstack([(X[:, [0]] > 0.0) + .5, (X[:, [0]] > 0.0) + .5, .5 * np.ones((X.shape[0], 1))]))\r\n\r\n    def _get_true_quantities(self, X, T, y, mask, criterion, fit_intercept, sample_weight=None):\r\n        if sample_weight is None:\r\n            sample_weight = np.ones(X.shape[0])\r\n        X, T, y, sample_weight = X[mask], T[mask], y[mask], sample_weight[mask]\r\n        n_relevant_outputs = T.shape[1]\r\n        if fit_intercept:\r\n            T = np.hstack([T, np.ones((T.shape[0], 1))])\r\n        alpha = y * T\r\n        pointJ = cross_product(T, T)\r\n        node_weight = np.sum(sample_weight)\r\n        jac = node_weight * np.average(pointJ, axis=0, weights=sample_weight)\r\n        precond = node_weight * np.average(alpha, axis=0, weights=sample_weight)\r\n\r\n        if jac.shape[0] == 1:\r\n            invJ = np.array([[1 / jac[0]]])\r\n        elif jac.shape[0] == 4:\r\n            det = jac[0] * jac[3] - jac[1] * jac[2]\r\n            if abs(det) < 1e-6:\r\n                det = 1e-6\r\n            invJ = np.array([[jac[3], -jac[1]], [-jac[2], jac[0]]]) / det\r\n        else:\r\n            invJ = np.linalg.inv(jac.reshape((alpha.shape[1], alpha.shape[1])) + 1e-6 * np.eye(T.shape[1]))\r\n\r\n        param = invJ @ precond\r\n        jac = jac / node_weight\r\n        precond = precond / node_weight\r\n        if criterion == 'het':\r\n            moment = alpha - pointJ.reshape((-1, alpha.shape[1], alpha.shape[1])) @ param\r\n            rho = ((invJ @ moment.T).T)[:, :n_relevant_outputs] * node_weight\r\n            impurity = np.mean(np.average(rho**2, axis=0, weights=sample_weight))\r\n            impurity -= np.mean(np.average(rho, axis=0, weights=sample_weight)**2)\r\n        else:\r\n            impurity = np.mean(np.average(y**2, axis=0, weights=sample_weight))\r\n            impurity -= (param.reshape(1, -1) @ jac.reshape((alpha.shape[1], alpha.shape[1])) @ param)[0]\r\n        return jac, precond, param, impurity\r\n\r\n    def _get_node_quantities(self, tree, node_id):\r\n        return (tree.jac[node_id, :], tree.precond[node_id, :],\r\n                tree.full_value[node_id, :, 0], tree.impurity[node_id])\r\n\r\n    def _train_causal_forest(self, X, T, y, config, sample_weight=None):\r\n        return CausalForest(**config).fit(X, T, y, sample_weight=sample_weight)\r\n\r\n    def _train_iv_forest(self, X, T, y, config, sample_weight=None):\r\n        return CausalIVForest(**config).fit(X, T, y, Z=T, sample_weight=sample_weight)\r\n\r\n    def _test_causal_tree_internals(self, trainer):\r\n        config = self._get_base_config()\r\n        for criterion in ['het', 'mse']:\r\n            for fit_intercept in [False, True]:\r\n                for min_var_fraction_leaf in [None, .4]:\r\n                    config['criterion'] = criterion\r\n                    config['fit_intercept'] = fit_intercept\r\n                    config['max_depth'] = 2\r\n                    config['min_samples_leaf'] = 5\r\n                    config['min_var_fraction_leaf'] = min_var_fraction_leaf\r\n                    n, n_features, n_treatments = 100, 2, 2\r\n                    random_state = 123\r\n                    X, T, y, truth, truth_full = self._get_causal_data(n, n_features, n_treatments, random_state)\r\n                    forest = trainer(X, T, y, config)\r\n                    tree = forest[0].tree_\r\n                    paths = np.array(forest[0].decision_path(X).todense())\r\n                    for node_id in range(len(tree.feature)):\r\n                        mask = paths[:, node_id] > 0\r\n                        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n                         for a, b in zip(self._get_true_quantities(X, T, y, mask, criterion, fit_intercept),\r\n                                         self._get_node_quantities(tree, node_id))]\r\n                    if fit_intercept and (min_var_fraction_leaf is not None):\r\n                        mask = np.abs(X[:, 0]) > .3\r\n                        np.testing.assert_allclose(tree.predict(X[mask]), truth[mask], atol=.05)\r\n                        np.testing.assert_allclose(tree.predict_full(X[mask]), truth_full[mask], atol=.05)\r\n\r\n    def _test_causal_honesty(self, trainer):\r\n        for criterion in ['het', 'mse']:\r\n            for fit_intercept in [False, True]:\r\n                for min_var_fraction_leaf, min_var_leaf_on_val in [(None, False), (.4, False), (.4, True)]:\r\n                    for min_impurity_decrease in [0.0, 0.07]:\r\n                        for inference in [False, True]:\r\n                            for sample_weight in [None, 'rand']:\r\n                                config = self._get_base_config()\r\n                                config['honest'] = True\r\n                                config['criterion'] = criterion\r\n                                config['fit_intercept'] = fit_intercept\r\n                                config['max_depth'] = 2\r\n                                config['min_samples_leaf'] = 5\r\n                                config['min_var_fraction_leaf'] = min_var_fraction_leaf\r\n                                config['min_var_leaf_on_val'] = min_var_leaf_on_val\r\n                                config['min_impurity_decrease'] = min_impurity_decrease\r\n                                config['inference'] = inference\r\n                                n, n_features, n_treatments = 400, 2, 2\r\n                                if inference:\r\n                                    config['n_estimators'] = 4\r\n                                    config['subforest_size'] = 2\r\n                                    config['max_samples'] = .4\r\n                                    config['n_jobs'] = 1\r\n                                    n = 800\r\n                                random_state = 123\r\n                                if sample_weight is not None:\r\n                                    sample_weight = check_random_state(random_state).randint(0, 4, size=n)\r\n                                X, T, y, truth, truth_full = self._get_causal_data(n, n_features,\r\n                                                                                   n_treatments, random_state)\r\n                                forest = trainer(X, T, y, config, sample_weight=sample_weight)\r\n                                subinds = forest.get_subsample_inds()\r\n                                if (sample_weight is None) and fit_intercept and (min_var_fraction_leaf is not None):\r\n                                    mask = np.abs(X[:, 0]) > .5\r\n                                    np.testing.assert_allclose(forest.predict(X[mask]),\r\n                                                               truth[mask], atol=.07)\r\n                                    np.testing.assert_allclose(forest.predict_full(X[mask]),\r\n                                                               truth_full[mask], atol=.07)\r\n                                    np.testing.assert_allclose(forest.predict_tree_average(X[mask]),\r\n                                                               truth[mask], atol=.07)\r\n                                    np.testing.assert_allclose(forest.predict_tree_average_full(X[mask]),\r\n                                                               truth_full[mask], atol=.07)\r\n                                forest_paths, ptr = forest.decision_path(X)\r\n                                forest_paths = np.array(forest_paths.todense())\r\n                                forest_apply = forest.apply(X)\r\n                                for it, tree in enumerate(forest):\r\n                                    tree_paths = np.array(tree.decision_path(X).todense())\r\n                                    np.testing.assert_array_equal(tree_paths, forest_paths[:, ptr[it]:ptr[it + 1]])\r\n                                    tree_apply = tree.apply(X)\r\n                                    np.testing.assert_array_equal(tree_apply, forest_apply[:, it])\r\n                                    _, samples_val = tree.get_train_test_split_inds()\r\n                                    inds_val = subinds[it][samples_val]\r\n                                    Xval, Tval, yval, truthval = X[inds_val], T[inds_val], y[inds_val], truth[inds_val]\r\n                                    sample_weightval = sample_weight[inds_val] if sample_weight is not None else None\r\n                                    paths = np.array(tree.decision_path(Xval).todense())\r\n                                    for node_id in range(len(tree.tree_.feature)):\r\n                                        mask = paths[:, node_id] > 0\r\n                                        [np.testing.assert_allclose(a, b, atol=1e-4)\r\n                                         for a, b in zip(self._get_true_quantities(Xval, Tval, yval, mask,\r\n                                                                                   criterion, fit_intercept,\r\n                                                                                   sample_weight=sample_weightval),\r\n                                                         self._get_node_quantities(tree.tree_, node_id))]\r\n                                    if ((sample_weight is None) and\r\n                                            fit_intercept and (min_var_fraction_leaf is not None)):\r\n                                        mask = np.abs(Xval[:, 0]) > .5\r\n                                        np.testing.assert_allclose(tree.tree_.predict(Xval[mask]),\r\n                                                                   truthval[mask], atol=.07)\r\n                                    if (sample_weight is None) and min_impurity_decrease > 0.0005:\r\n                                        assert np.all((tree.tree_.feature == 0) | (tree.tree_.feature == -2))\r\n\r\n    def test_causal_tree(self,):\r\n        self._test_causal_tree_internals(self._train_causal_forest)\r\n        self._test_causal_honesty(self._train_causal_forest)\r\n\r\n    def test_iv_tree(self,):\r\n        self._test_causal_tree_internals(self._train_iv_forest)\r\n        self._test_causal_honesty(self._train_iv_forest)\r\n\r\n    def test_min_var_leaf(self,):\r\n        random_state = np.random.RandomState(123)\r\n        n, n_features, n_treatments = 200, 2, 1\r\n        X = random_state.normal(size=(n, n_features))\r\n        T = np.zeros((n, n_treatments))\r\n        for t in range(T.shape[1]):\r\n            T[:, t] = random_state.binomial(1, .5 + .2 * np.clip(X[:, 0], -1, 1), size=(T.shape[0],))\r\n        y = ((X[:, [0]] > 0.0) + .5) * np.sum(T, axis=1, keepdims=True) + .5\r\n        total_std = np.std(T)\r\n        min_var = .7 * total_std\r\n        for honest, min_var_fraction_leaf, min_var_leaf_on_val in [(False, None, False), (False, .8, False),\r\n                                                                   (True, None, True), (True, .8, True)]:\r\n            config = self._get_base_config()\r\n            config['criterion'] = 'mse'\r\n            config['n_estimators'] = 4\r\n            config['max_samples'] = 1.0\r\n            config['max_depth'] = None\r\n            config['min_var_fraction_leaf'] = min_var_fraction_leaf\r\n            config['fit_intercept'] = True\r\n            config['honest'] = honest\r\n            config['min_var_leaf_on_val'] = min_var_leaf_on_val\r\n            forest = self._train_causal_forest(X, T, y, config)\r\n            subinds = forest.get_subsample_inds()\r\n            for it, tree in enumerate(forest):\r\n                _, samples_val = tree.get_train_test_split_inds()\r\n                inds_val = subinds[it][samples_val]\r\n                Xval, Tval, _ = X[inds_val], T[inds_val], y[inds_val]\r\n                paths = np.array(tree.decision_path(Xval).todense())\r\n                if min_var_fraction_leaf is None:\r\n                    with np.testing.assert_raises(AssertionError):\r\n                        for node_id in range(len(tree.tree_.feature)):\r\n                            mask = paths[:, node_id] > 0\r\n                            np.testing.assert_array_less(min_var - 1e-7, np.std(Tval[mask]))\r\n                else:\r\n                    for node_id in range(len(tree.tree_.feature)):\r\n                        mask = paths[:, node_id] > 0\r\n                        np.testing.assert_array_less(min_var - 1e-7, np.std(Tval[mask]))\r\n\r\n    def test_subsampling(self,):\r\n        # test that the subsampling scheme past to the trees is correct\r\n        random_state = 123\r\n        # The sample size is chosen in particular to test rounding based error when subsampling\r\n        n, n_features, n_treatments = 107, 2, 2\r\n        n_estimators = 1000\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['max_samples'] = .7\r\n        config['max_depth'] = 1\r\n        X, T, y, _, _ = self._get_causal_data(n, n_features, n_treatments, random_state)\r\n        forest = self._train_causal_forest(X, T, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, config['max_samples'], atol=.06)\r\n        counts = np.zeros(n)\r\n        for it, tree in enumerate(forest):\r\n            samples_train, samples_val = tree.get_train_test_split_inds()\r\n            np.testing.assert_equal(samples_train, samples_val)\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['max_samples'] = 7\r\n        config['max_depth'] = 1\r\n        X, T, y, _, _ = self._get_causal_data(n, n_features, n_treatments, random_state)\r\n        forest = self._train_causal_forest(X, T, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, config['max_samples'] / n, atol=.06)\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['inference'] = True\r\n        config['subforest_size'] = 2\r\n        config['max_samples'] = .5\r\n        config['max_depth'] = 1\r\n        config['honest'] = True\r\n        X, T, y, _, _ = self._get_causal_data(n, n_features, n_treatments, random_state)\r\n        forest = self._train_causal_forest(X, T, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, .5, atol=.06)\r\n        counts = np.zeros(n)\r\n        for it, tree in enumerate(forest):\r\n            _, samples_val = tree.get_train_test_split_inds()\r\n            inds_val = subinds[it][samples_val]\r\n            counts[inds_val] += 1\r\n        np.testing.assert_allclose(counts / n_estimators, .25, atol=.05)\r\n        return\r\n\r\n    def _get_step_regression_data(self, n, n_features, random_state):\r\n        rnd = np.random.RandomState(random_state)\r\n        X = rnd.uniform(-1, 1, size=(n, n_features))\r\n        y = 1.0 * (X[:, 0] >= 0.0).reshape(-1, 1) + rnd.normal(0, 1, size=(n, 1))\r\n        return X, y, y\r\n\r\n    def test_var(self,):\r\n        # test that the estimator calcualtes var correctly\r\n        config = self._get_base_config()\r\n        config['honest'] = True\r\n        config['max_depth'] = 0\r\n        config['inference'] = True\r\n        config['n_estimators'] = 1000\r\n        config['subforest_size'] = 2\r\n        config['max_samples'] = .5\r\n        config['n_jobs'] = 1\r\n        n_features = 2\r\n        # test api\r\n        n = 100\r\n        random_state = 123\r\n        X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        alpha = .1\r\n        mean, var = forest.predict_and_var(X)\r\n        lb = scipy.stats.norm.ppf(alpha / 2, loc=mean[:, 0], scale=np.sqrt(var[:, 0, 0])).reshape(-1, 1)\r\n        ub = scipy.stats.norm.ppf(1 - alpha / 2, loc=mean[:, 0], scale=np.sqrt(var[:, 0, 0])).reshape(-1, 1)\r\n\r\n        np.testing.assert_allclose(var, forest.predict_var(X))\r\n        lbtest, ubtest = forest.predict_interval(X, alpha=alpha)\r\n        np.testing.assert_allclose(lb, lbtest)\r\n        np.testing.assert_allclose(ub, ubtest)\r\n        meantest, lbtest, ubtest = forest.predict(X, interval=True, alpha=alpha)\r\n        np.testing.assert_allclose(mean, meantest)\r\n        np.testing.assert_allclose(lb, lbtest)\r\n        np.testing.assert_allclose(ub, ubtest)\r\n        np.testing.assert_allclose(np.sqrt(var[:, 0, 0]), forest.prediction_stderr(X)[:, 0])\r\n\r\n        # test accuracy\r\n        for n in [10, 100, 1000, 10000]:\r\n            random_state = 123\r\n            X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n            forest = RegressionForest(**config).fit(X, y)\r\n            our_mean, our_var = forest.predict_and_var(X[:1])\r\n            true_mean, true_var = np.mean(y), np.var(y) / y.shape[0]\r\n            np.testing.assert_allclose(our_mean, true_mean, atol=0.05)\r\n            np.testing.assert_allclose(our_var, true_var, atol=0.05, rtol=.1)\r\n        for n, our_thr, true_thr in [(1000, .5, .25), (10000, .05, .05)]:\r\n            random_state = 123\r\n            config['max_depth'] = 1\r\n            X, y, truth = self._get_step_regression_data(n, n_features, random_state)\r\n            forest = RegressionForest(**config).fit(X, y)\r\n            posX = X[X[:, 0] > our_thr]\r\n            negX = X[X[:, 0] < -our_thr]\r\n            our_pos_mean, our_pos_var = forest.predict_and_var(posX)\r\n            our_neg_mean, our_neg_var = forest.predict_and_var(negX)\r\n            pos = X[:, 0] > true_thr\r\n            true_pos_mean, true_pos_var = np.mean(y[pos]), np.var(y[pos]) / y[pos].shape[0]\r\n            neg = X[:, 0] < -true_thr\r\n            true_neg_mean, true_neg_var = np.mean(y[neg]), np.var(y[neg]) / y[neg].shape[0]\r\n            np.testing.assert_allclose(our_pos_mean, true_pos_mean, atol=0.07)\r\n            np.testing.assert_allclose(our_pos_var, true_pos_var, atol=0.0, rtol=.25)\r\n            np.testing.assert_allclose(our_neg_mean, true_neg_mean, atol=0.07)\r\n            np.testing.assert_allclose(our_neg_var, true_neg_var, atol=0.0, rtol=.25)\r\n        return\r\n\r\n    def test_projection(self,):\r\n        # test the projection functionality of forests\r\n        # test that the estimator calcualtes var correctly\r\n        np.set_printoptions(precision=10, suppress=True)\r\n        config = self._get_base_config()\r\n        config['honest'] = True\r\n        config['max_depth'] = 0\r\n        config['inference'] = True\r\n        config['n_estimators'] = 100\r\n        config['subforest_size'] = 2\r\n        config['max_samples'] = .5\r\n        config['n_jobs'] = 1\r\n        n_features = 2\r\n        # test api\r\n        n = 100\r\n        random_state = 123\r\n        X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        mean, var = forest.predict_and_var(X)\r\n        mean = mean.flatten()\r\n        var = var.flatten()\r\n        y = np.hstack([y, y])\r\n        truth = np.hstack([truth, truth])\r\n        forest = RegressionForest(**config).fit(X, y)\r\n        projector = np.ones((X.shape[0], 2)) / 2.0\r\n        mean_proj, var_proj = forest.predict_projection_and_var(X, projector)\r\n        np.testing.assert_allclose(mean_proj, mean)\r\n        np.testing.assert_allclose(var_proj, var)\r\n        np.testing.assert_allclose(var_proj, forest.predict_projection_var(X, projector))\r\n        np.testing.assert_allclose(mean_proj, forest.predict_projection(X, projector))\r\n        return\r\n\r\n    def test_feature_importances(self,):\r\n        # test that the estimator calcualtes var correctly\r\n        for trainer in [self._train_causal_forest, self._train_iv_forest]:\r\n            for criterion in ['het', 'mse']:\r\n                for sample_weight in [None, 'rand']:\r\n                    config = self._get_base_config()\r\n                    config['honest'] = True\r\n                    config['criterion'] = criterion\r\n                    config['fit_intercept'] = True\r\n                    config['max_depth'] = 2\r\n                    config['min_samples_leaf'] = 5\r\n                    config['min_var_fraction_leaf'] = None\r\n                    config['min_impurity_decrease'] = 0.0\r\n                    config['inference'] = True\r\n                    config['n_estimators'] = 4\r\n                    config['subforest_size'] = 2\r\n                    config['max_samples'] = .4\r\n                    config['n_jobs'] = 1\r\n\r\n                    n, n_features, n_treatments = 800, 2, 2\r\n                    random_state = 123\r\n                    if sample_weight is not None:\r\n                        sample_weight = check_random_state(random_state).randint(0, 4, size=n)\r\n                    X, T, y, truth, truth_full = self._get_causal_data(n, n_features,\r\n                                                                       n_treatments, random_state)\r\n                    forest = trainer(X, T, y, config, sample_weight=sample_weight)\r\n                    forest_het_importances = np.zeros(n_features)\r\n                    for it, tree in enumerate(forest):\r\n                        tree_ = tree.tree_\r\n                        tfeature = tree_.feature\r\n                        timpurity = tree_.impurity\r\n                        tdepth = tree_.depth\r\n                        tleft = tree_.children_left\r\n                        tright = tree_.children_right\r\n                        tw = tree_.weighted_n_node_samples\r\n                        tvalue = tree_.value\r\n\r\n                        for max_depth in [0, 2]:\r\n                            feature_importances = np.zeros(n_features)\r\n                            for it, (feat, impurity, depth, left, right, w) in\\\r\n                                    enumerate(zip(tfeature, timpurity, tdepth, tleft, tright, tw)):\r\n                                if (left != -1) and (depth <= max_depth):\r\n                                    gain = w * impurity - tw[left] * timpurity[left] - tw[right] * timpurity[right]\r\n                                    feature_importances[feat] += gain / (depth + 1)**2.0\r\n                            feature_importances /= tw[0]\r\n                            totest = tree.tree_.compute_feature_importances(normalize=False,\r\n                                                                            max_depth=max_depth, depth_decay=2.0)\r\n                            np.testing.assert_allclose(feature_importances, totest)\r\n\r\n                            het_importances = np.zeros(n_features)\r\n                            for it, (feat, depth, left, right, w) in\\\r\n                                    enumerate(zip(tfeature, tdepth, tleft, tright, tw)):\r\n                                if (left != -1) and (depth <= max_depth):\r\n                                    gain = tw[left] * tw[right] * np.mean((tvalue[left] - tvalue[right])**2) / w\r\n                                    het_importances[feat] += gain / (depth + 1)**2.0\r\n                            het_importances /= tw[0]\r\n                            totest = tree.tree_.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                          max_depth=max_depth,\r\n                                                                                          depth_decay=2.0)\r\n                            np.testing.assert_allclose(het_importances, totest)\r\n                        het_importances /= np.sum(het_importances)\r\n                        forest_het_importances += het_importances / len(forest)\r\n\r\n                    np.testing.assert_allclose(forest_het_importances,\r\n                                               forest.feature_importances(max_depth=2, depth_decay_exponent=2.0))\r\n                    np.testing.assert_allclose(forest_het_importances, forest.feature_importances_)\r\n        return\r\n\r\n    def test_non_standard_input(self,):\r\n        # test that the estimator accepts lists, tuples and pandas data frames\r\n        n_features = 2\r\n        n = 100\r\n        random_state = 123\r\n        X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n        forest = RegressionForest(n_estimators=20, n_jobs=1, random_state=123).fit(X, y)\r\n        pred = forest.predict(X)\r\n        forest = RegressionForest(n_estimators=20, n_jobs=1, random_state=123).fit(tuple(X), tuple(y))\r\n        np.testing.assert_allclose(pred, forest.predict(tuple(X)))\r\n        forest = RegressionForest(n_estimators=20, n_jobs=1, random_state=123).fit(list(X), list(y))\r\n        np.testing.assert_allclose(pred, forest.predict(list(X)))\r\n        forest = RegressionForest(n_estimators=20, n_jobs=1, random_state=123).fit(pd.DataFrame(X), pd.DataFrame(y))\r\n        np.testing.assert_allclose(pred, forest.predict(pd.DataFrame(X)))\r\n        forest = RegressionForest(n_estimators=20, n_jobs=1, random_state=123).fit(\r\n            pd.DataFrame(X), pd.Series(y.ravel()))\r\n        np.testing.assert_allclose(pred, forest.predict(pd.DataFrame(X)))\r\n        return\r\n\r\n    def test_raise_exceptions(self,):\r\n        # test that we raise errors in mishandled situations.\r\n        n_features = 2\r\n        n = 10\r\n        random_state = 123\r\n        X, y, truth = self._get_regression_data(n, n_features, random_state)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=20).fit(X, y[:4])\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=20, subforest_size=3).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=20, inference=True, max_samples=.6).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=20, max_samples=20).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=20, max_samples=1.2).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = RegressionForest(n_estimators=4, warm_start=True, inference=True).fit(X, y)\r\n            forest.inference = False\r\n            forest.n_estimators = 8\r\n            forest.fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, criterion='peculiar').fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, max_depth=-1).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, min_samples_split=-1).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, min_samples_leaf=-1).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, min_weight_fraction_leaf=-1.0).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, min_var_fraction_leaf=-1.0).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, max_features=10).fit(X, y, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            forest = CausalForest(n_estimators=4, min_balancedness_tol=.55).fit(X, y, y)\r\n\r\n        return\r\n\r\n    def test_warm_start(self,):\r\n        n_features = 2\r\n        n = 100\r\n        random_state = 123\r\n        X, y, _ = self._get_regression_data(n, n_features, random_state)\r\n\r\n        for inference in [True, False]:\r\n            forest = RegressionForest(n_estimators=4, inference=inference,\r\n                                      warm_start=True, random_state=123).fit(X, y)\r\n            forest.n_estimators = 8\r\n            forest.fit(X, y)\r\n            pred1 = forest.predict(X)\r\n            inds1 = forest.get_subsample_inds()\r\n            tree_states1 = [t.random_state for t in forest]\r\n\r\n            forest = RegressionForest(n_estimators=8, inference=inference,\r\n                                      warm_start=True, random_state=123).fit(X, y)\r\n            pred2 = forest.predict(X)\r\n            inds2 = forest.get_subsample_inds()\r\n            tree_states2 = [t.random_state for t in forest]\r\n\r\n            np.testing.assert_allclose(pred1, pred2)\r\n            np.testing.assert_allclose(inds1, inds2)\r\n            np.testing.assert_allclose(tree_states1, tree_states2)\r\n        return\r\n\r\n    def test_multioutput(self,):\r\n        # test that the subsampling scheme past to the trees is correct\r\n        random_state = 123\r\n        n, n_features, n_treatments = 10, 2, 2\r\n        X, T, y, _, _ = self._get_causal_data(n, n_features, n_treatments, random_state)\r\n        y = np.hstack([y, y])\r\n        for est in [CausalForest(n_estimators=4, random_state=123),\r\n                    CausalIVForest(n_estimators=4, random_state=123)]:\r\n            forest = MultiOutputGRF(est)\r\n            if isinstance(est, CausalForest):\r\n                forest.fit(X, T, y)\r\n            else:\r\n                forest.fit(X, T, y, Z=T)\r\n            pred, lb, ub = forest.predict(X, interval=True, alpha=.05)\r\n            np.testing.assert_array_equal(pred.shape, (X.shape[0], 2, n_treatments))\r\n            np.testing.assert_allclose(pred[:, 0, :], pred[:, 1, :])\r\n            np.testing.assert_allclose(lb[:, 0, :], lb[:, 1, :])\r\n            np.testing.assert_allclose(ub[:, 0, :], ub[:, 1, :])\r\n            pred, var = forest.predict_and_var(X)\r\n            np.testing.assert_array_equal(pred.shape, (X.shape[0], 2, n_treatments))\r\n            np.testing.assert_array_equal(var.shape, (X.shape[0], 2, n_treatments, n_treatments))\r\n            np.testing.assert_allclose(pred[:, 0, :], pred[:, 1, :])\r\n            np.testing.assert_allclose(var[:, 0, :, :], var[:, 1, :, :])\r\n            pred, var = forest.predict_projection_and_var(X, np.ones((X.shape[0], n_treatments)))\r\n            np.testing.assert_array_equal(pred.shape, (X.shape[0], 2))\r\n            np.testing.assert_array_equal(var.shape, (X.shape[0], 2))\r\n            np.testing.assert_allclose(pred[:, 0], pred[:, 1])\r\n            np.testing.assert_allclose(var[:, 0], var[:, 1])\r\n            imps = forest.feature_importances(max_depth=3, depth_decay_exponent=1.0)\r\n            np.testing.assert_array_equal(imps.shape, (X.shape[1], 2))\r\n            np.testing.assert_allclose(imps[:, 0], imps[:, 1])\r\n            imps = forest.feature_importances_\r\n            np.testing.assert_array_equal(imps.shape, (2, X.shape[1]))\r\n            np.testing.assert_allclose(imps[0, :], imps[1, :])\r\n\r\n        return\r\n\r\n    def test_pickling(self,):\r\n\r\n        n_features = 2\r\n        n = 10\r\n        random_state = 123\r\n        X, y, _ = self._get_regression_data(n, n_features, random_state)\r\n\r\n        forest = RegressionForest(n_estimators=4, warm_start=True, random_state=123).fit(X, y)\r\n        forest.n_estimators = 8\r\n        forest.fit(X, y)\r\n        pred1 = forest.predict(X)\r\n\r\n        joblib.dump(forest, 'forest.jbl')\r\n        loaded_forest = joblib.load('forest.jbl')\r\n        np.testing.assert_equal(loaded_forest.n_estimators, forest.n_estimators)\r\n        np.testing.assert_allclose(loaded_forest.predict(X), pred1)\r\n"
  },
  {
    "path": "econml/tests/test_inference.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport pandas as pd\nimport unittest\nimport pytest\nimport pickle\nfrom sklearn.base import clone\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, Lasso\nfrom econml.dml import LinearDML, DML, NonParamDML\nfrom econml.dr import LinearDRLearner, DRLearner\nfrom econml.inference import (BootstrapInference, NormalInferenceResults,\n                              EmpiricalInferenceResults, PopulationSummaryResults)\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression, DebiasedLasso\nfrom econml.utilities import get_feature_names_or_default, get_input_columns\n\n\nclass TestInference(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        np.random.seed(123)\n        # DGP constants\n        cls.n = 1000\n        cls.d_w = 3\n        cls.d_x = 3\n        # Generate data\n        cls.X = np.random.uniform(0, 1, size=(cls.n, cls.d_x))\n        cls.W = np.random.normal(0, 1, size=(cls.n, cls.d_w))\n        cls.T = np.random.binomial(1, .5, size=(cls.n,))\n        cls.Y = np.random.normal(0, 1, size=(cls.n, ))\n\n    def test_summary(self):\n        \"\"\"Test the inference results summary for continuous treatment estimators.\"\"\"\n        # Test inference results when `cate_feature_names` doesn not exist\n\n        for inference in [BootstrapInference(n_bootstrap_samples=5), 'auto']:\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(),\n                                 featurizer=PolynomialFeatures(degree=2,\n                                                               include_bias=False)\n                                 )\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = cate_est.summary()\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            default_names = get_input_columns(TestInference.X)\n            fnames = get_feature_names_or_default(PolynomialFeatures(degree=2,\n                                                                     include_bias=False).fit(TestInference.X),\n                                                  default_names)\n            np.testing.assert_array_equal(coef_rows, fnames)\n            intercept_rows = np.asarray(summary_results.tables[1].data)[1:, 0]\n            np.testing.assert_array_equal(intercept_rows, ['cate_intercept'])\n\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(),\n                                 featurizer=PolynomialFeatures(degree=2,\n                                                               include_bias=False)\n                                 )\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = cate_est.summary(feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            fnames = get_feature_names_or_default(PolynomialFeatures(degree=2,\n                                                                     include_bias=False).fit(TestInference.X),\n                                                  fnames)\n            np.testing.assert_array_equal(coef_rows, fnames)\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(), featurizer=None)\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = cate_est.summary()\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, ['X' + str(i) for i in range(TestInference.d_x)])\n\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(), featurizer=None)\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = cate_est.summary(feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, fnames)\n\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(), featurizer=None)\n            wrapped_est = self._NoFeatNamesEst(cate_est)\n            wrapped_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = wrapped_est.summary()\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, ['X' + str(i) for i in range(TestInference.d_x)])\n\n            cate_est = LinearDML(model_t=LinearRegression(), model_y=LinearRegression(), featurizer=None)\n            wrapped_est = self._NoFeatNamesEst(cate_est)\n            wrapped_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = wrapped_est.summary(feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, fnames)\n\n    def test_summary_discrete(self):\n        \"\"\"Test the inference results summary for discrete treatment estimators.\"\"\"\n        # Test inference results when `cate_feature_names` doesn not exist\n\n        for inference in [BootstrapInference(n_bootstrap_samples=5), 'auto']:\n            cate_est = LinearDRLearner(model_regression=LinearRegression(), model_propensity=LogisticRegression(),\n                                       featurizer=PolynomialFeatures(degree=2,\n                                                                     include_bias=False)\n                                       )\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = cate_est.summary(T=1)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            default_names = get_input_columns(TestInference.X)\n            fnames = get_feature_names_or_default(PolynomialFeatures(degree=2,\n                                                                     include_bias=False).fit(TestInference.X),\n                                                  default_names)\n            np.testing.assert_array_equal(coef_rows, fnames)\n            intercept_rows = np.asarray(summary_results.tables[1].data)[1:, 0]\n            np.testing.assert_array_equal(intercept_rows, ['cate_intercept'])\n\n            cate_est = LinearDRLearner(model_regression=LinearRegression(),\n                                       model_propensity=LogisticRegression(),\n                                       featurizer=PolynomialFeatures(degree=2,\n                                                                     include_bias=False)\n                                       )\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = cate_est.summary(T=1, feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            fnames = get_feature_names_or_default(PolynomialFeatures(degree=2,\n                                                                     include_bias=False).fit(TestInference.X),\n                                                  fnames)\n            np.testing.assert_array_equal(coef_rows, fnames)\n            cate_est = LinearDRLearner(model_regression=LinearRegression(),\n                                       model_propensity=LogisticRegression(), featurizer=None)\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = cate_est.summary(T=1)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, ['X' + str(i) for i in range(TestInference.d_x)])\n\n            cate_est = LinearDRLearner(model_regression=LinearRegression(),\n                                       model_propensity=LogisticRegression(), featurizer=None)\n            cate_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = cate_est.summary(T=1, feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, fnames)\n\n            cate_est = LinearDRLearner(model_regression=LinearRegression(),\n                                       model_propensity=LogisticRegression(), featurizer=None)\n            wrapped_est = self._NoFeatNamesEst(cate_est)\n            wrapped_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            summary_results = wrapped_est.summary(T=1)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, ['X' + str(i) for i in range(TestInference.d_x)])\n\n            cate_est = LinearDRLearner(model_regression=LinearRegression(),\n                                       model_propensity=LogisticRegression(), featurizer=None)\n            wrapped_est = self._NoFeatNamesEst(cate_est)\n            wrapped_est.fit(\n                TestInference.Y,\n                TestInference.T,\n                X=TestInference.X,\n                W=TestInference.W,\n                inference=inference\n            )\n            fnames = ['Q' + str(i) for i in range(TestInference.d_x)]\n            summary_results = wrapped_est.summary(T=1, feature_names=fnames)\n            coef_rows = np.asarray(summary_results.tables[0].data)[1:, 0]\n            np.testing.assert_array_equal(coef_rows, fnames)\n\n    def test_degenerate_cases(self):\n        \"\"\"Test that we return the correct values when our distribution doesn't vary.\"\"\"\n        predictions = np.array([[1, 0], [1, 1]])  # first component is always 1\n        for inf in [EmpiricalInferenceResults(d_t=1, d_y=2,\n                                              pred=np.mean(predictions, axis=0), pred_dist=predictions,\n                                              inf_type='coefficient'),\n                    NormalInferenceResults(d_t=1, d_y=2,\n                                           pred=np.mean(predictions, axis=0), pred_stderr=np.std(predictions, axis=0),\n                                           mean_pred_stderr=None,\n                                           inf_type='coefficient')]:\n            zs = inf.zstat()\n            pv = inf.pvalue()\n            # test value 0 is less than estimate of 1 and variance is 0, so z score should be inf\n            assert np.isposinf(zs[0])\n            # predictions in column 1 have nonzero variance, so the zstat should always be some finite value\n            assert np.isfinite(zs[1])\n            assert pv[0] == 0  # pvalue should be zero when test value is greater or less than all samples\n\n            test_point = np.array([1, 0.5])\n            zs = inf.zstat(test_point)\n            pv = inf.pvalue(test_point)\n            # test value 1 is equal to the estimate of 1 and variance is 0, so z score should be nan\n            assert np.isnan(zs[0])\n            # predictions in column 1 have nonzero variance, so the zstat should always be some finite value\n            assert np.isfinite(zs[1])\n            # pvalue is also nan when variance is 0 and the point tested is equal to the point tested\n            assert np.isnan(pv[0])\n            # pvalue for second column should be greater than zero since some points are on either side\n            # of the tested value\n            assert 0 < pv[1] <= 1\n\n            test_point = np.array([2, 1])\n            zs = inf.zstat(test_point)\n            pv = inf.pvalue(test_point)\n            # test value 2 is greater than estimate of 1 and variance is 0, so z score should be -inf\n            assert np.isneginf(zs[0])\n            # predictions in column 1 have nonzero variance, so the zstat should always be some finite value\n            assert np.isfinite(zs[1])\n            # pvalue is also nan when variance is 0 and the point tested is equal to the point tested\n            assert pv[0] == 0  # pvalue should be zero when test value is greater or less than all samples\n\n            pop = PopulationSummaryResults(np.mean(predictions, axis=0).reshape(1, 2), np.std(\n                predictions, axis=0).reshape(1, 2), None, d_t=1, d_y=2, alpha=0.05, value=0, decimals=3, tol=0.001)\n            pop._print()  # verify that we can access all attributes even in degenerate case\n            pop.summary()\n\n    def test_can_summarize(self):\n        LinearDML(model_t=LinearRegression(), model_y=LinearRegression()).fit(\n            TestInference.Y,\n            TestInference.T,\n            X=TestInference.X,\n            W=TestInference.W\n        ).summary()\n\n        LinearDRLearner(model_regression=LinearRegression(),\n                        model_propensity=LogisticRegression(), fit_cate_intercept=False).fit(\n            TestInference.Y,\n            TestInference.T > 0,\n            X=TestInference.X,\n            W=TestInference.W,\n            inference=BootstrapInference(5)\n        ).summary(1)\n\n    def test_alpha(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        est = LinearDML(model_y=LinearRegression(), model_t=LinearRegression())\n        est.fit(Y, T, X=X, W=W)\n\n        # ensure alpha is passed\n        lb, ub = est.const_marginal_ate_interval(X, alpha=1)\n        assert (lb == ub).all()\n\n        lb, ub = est.const_marginal_ate_interval(X)\n        assert (lb != ub).all()\n\n    def test_inference_with_none_stderr(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        est = DML(model_y=LinearRegression(),\n                  model_t=LinearRegression(),\n                  model_final=Lasso(alpha=0.1, fit_intercept=False),\n                  featurizer=PolynomialFeatures(degree=1, include_bias=False),\n                  random_state=123)\n        est.fit(Y, T, X=X, W=W)\n        est.summary()\n        est.coef__inference().summary_frame()\n        est.intercept__inference().summary_frame()\n        est.effect_inference(X).summary_frame()\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        est.marginal_effect_inference(T, X).summary_frame()\n\n        est = NonParamDML(model_y=LinearRegression(),\n                          model_t=LinearRegression(),\n                          model_final=LinearRegression(fit_intercept=False),\n                          featurizer=PolynomialFeatures(degree=1, include_bias=False),\n                          random_state=123)\n        est.fit(Y, T, X=X, W=W)\n        est.effect_inference(X).summary_frame()\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        est.marginal_effect_inference(T, X).summary_frame()\n\n        est = DRLearner(model_regression=LinearRegression(),\n                        model_propensity=LogisticRegression(),\n                        model_final=LinearRegression())\n        est.fit(Y, T, X=X, W=W)\n        est.effect_inference(X).summary_frame()\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        est.marginal_effect_inference(T, X).summary_frame()\n\n    def test_auto_inference(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        est = DRLearner(model_regression=LinearRegression(),\n                        model_propensity=LogisticRegression(),\n                        model_final=StatsModelsLinearRegression())\n        est.fit(Y, T, X=X, W=W)\n        est.effect_inference(X).summary_frame()\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        est.marginal_effect_inference(T, X).summary_frame()\n        est = DRLearner(model_regression=LinearRegression(),\n                        model_propensity=LogisticRegression(),\n                        model_final=LinearRegression(),\n                        multitask_model_final=True)\n        est.fit(Y, T, X=X, W=W)\n        with pytest.raises(AttributeError):\n            est.effect_inference(X)\n\n        est = DML(model_y=LinearRegression(),\n                  model_t=LinearRegression(),\n                  model_final=StatsModelsLinearRegression(fit_intercept=False),\n                  random_state=123)\n        est.fit(Y, T, X=X, W=W)\n        est.summary()\n        est.coef__inference().summary_frame()\n        assert est.coef__inference().stderr is not None\n        est.intercept__inference().summary_frame()\n        assert est.intercept__inference().stderr is not None\n        est.effect_inference(X).summary_frame()\n        assert est.effect_inference(X).stderr is not None\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        assert est.const_marginal_effect_inference(X).stderr is not None\n        est.marginal_effect_inference(T, X).summary_frame()\n        assert est.marginal_effect_inference(T, X).stderr is not None\n\n        est = NonParamDML(model_y=LinearRegression(),\n                          model_t=LinearRegression(),\n                          model_final=DebiasedLasso(),\n                          random_state=123)\n        est.fit(Y, T, X=X, W=W)\n        est.effect_inference(X).summary_frame()\n        assert est.effect_inference(X).stderr is not None\n        est.effect_inference(X).population_summary()\n        est.const_marginal_effect_inference(X).summary_frame()\n        assert est.const_marginal_effect_inference(X).stderr is not None\n        est.marginal_effect_inference(T, X).summary_frame()\n        assert est.marginal_effect_inference(T, X).stderr is not None\n\n    def test_pickle_inferenceresult(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        est = DML(model_y=LinearRegression(),\n                  model_t=LinearRegression(),\n                  model_final=Lasso(alpha=0.1, fit_intercept=False),\n                  featurizer=PolynomialFeatures(degree=1, include_bias=False),\n                  random_state=123)\n        est.fit(Y, T, X=X, W=W)\n        effect_inf = est.effect_inference(X)\n        pickle.dumps(effect_inf)\n\n    def test_mean_pred_stderr(self):\n        \"\"\"Test that mean_pred_stderr is not None when estimator's final stage is linear.\"\"\"\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        ests = [LinearDML(model_t=LinearRegression(), model_y=LinearRegression(),\n                          featurizer=PolynomialFeatures(degree=2,\n                                                        include_bias=False)\n                          ),\n                LinearDRLearner(model_regression=LinearRegression(), model_propensity=LogisticRegression(),\n                                featurizer=PolynomialFeatures(degree=2,\n                                                              include_bias=False)\n                                )]\n        for est in ests:\n            est.fit(Y, T, X=X, W=W)\n            assert est.const_marginal_effect_inference(X).population_summary().mean_pred_stderr is not None\n            # only is not None when T1 is a constant or a list of constant\n            assert est.effect_inference(X).population_summary().mean_pred_stderr is not None\n            if est.__class__.__name__ == \"LinearDRLearner\":\n                assert est.coef__inference(T=1).mean_pred_stderr is None\n            else:\n                assert est.coef__inference().mean_pred_stderr is None\n\n    def test_isolate_inferenceresult_from_estimator(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        est = LinearDML().fit(Y, T, X=X, W=W)\n        coef = est.coef_\n        inf = est.coef__inference()\n        inf.pred[0] = .5\n        new_coef = est.coef_\n        np.testing.assert_array_equal(coef, new_coef)\n\n    def test_translate(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        for offset in [10, pd.Series(np.arange(TestInference.X.shape[0]))]:\n            for inf in ['auto', BootstrapInference(n_bootstrap_samples=5)]:\n                est = LinearDML().fit(Y, T, X=X, W=W, inference=inf)\n                inf = est.const_marginal_effect_inference(X)\n                pred, bounds, _summary = inf.point_estimate, inf.conf_int(), inf.summary_frame()\n                inf.translate(offset)\n                pred2, bounds2, _summary2 = inf.point_estimate, inf.conf_int(), inf.summary_frame()\n                np.testing.assert_array_equal(pred + offset, pred2)\n                np.testing.assert_array_almost_equal(bounds[0] + offset, bounds2[0])\n                np.testing.assert_array_almost_equal(bounds[1] + offset, bounds2[1])\n\n    def test_scale(self):\n        Y, T, X, W = TestInference.Y, TestInference.T, TestInference.X, TestInference.W\n        for factor in [10, pd.Series(np.arange(TestInference.X.shape[0]))]:\n            for inf in ['auto', BootstrapInference(n_bootstrap_samples=5)]:\n                est = LinearDML().fit(Y, T, X=X, W=W, inference=inf)\n                inf = est.const_marginal_effect_inference(X)\n                pred, bounds, _summary = inf.point_estimate, inf.conf_int(), inf.summary_frame()\n                inf.scale(factor)\n                pred2, bounds2, _summary2 = inf.point_estimate, inf.conf_int(), inf.summary_frame()\n                np.testing.assert_array_equal(pred * factor, pred2)\n                np.testing.assert_array_almost_equal(bounds[0] * factor, bounds2[0])\n                np.testing.assert_array_almost_equal(bounds[1] * factor, bounds2[1])\n\n    class _NoFeatNamesEst:\n        def __init__(self, cate_est):\n            self.cate_est = clone(cate_est, safe=False)\n\n        def __getattr__(self, name):\n            if name != 'cate_feature_names':\n                return getattr(self.cate_est, name)\n            else:\n                return self.__getattribute__(name)\n"
  },
  {
    "path": "econml/tests/test_integration.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom econml.utilities import get_feature_names_or_default\nimport numpy as np\nimport pandas as pd\nimport unittest\n\n\nfrom econml.dr import LinearDRLearner, SparseLinearDRLearner, ForestDRLearner\nfrom econml.dml import LinearDML, SparseLinearDML, CausalForestDML\nfrom econml.orf import DMLOrthoForest, DROrthoForest\nfrom econml.sklearn_extensions.linear_model import WeightedLasso\nfrom econml.metalearners import XLearner, SLearner, TLearner\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\nfrom sklearn.linear_model import MultiTaskLasso, LassoCV\nfrom sklearn.preprocessing import PolynomialFeatures, FunctionTransformer\nfrom econml.iv.dr import LinearIntentToTreatDRIV\n\n\nclass TestPandasIntegration(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        np.random.seed(123)\n        # DGP constants\n        cls.n_controls = 10\n        cls.n_features = 2\n        cls.n = 100\n        # Define data features\n        # Added `_df`to names to be different from the default cate_estimator names\n        cls.controls = [f\"W{i}_df\" for i in range(cls.n_controls)]\n        cls.features = [f\"X{i}_df\" for i in range(cls.n_features)]\n        cls.instrument = [\"Z0_df\"]\n        cls.outcome = [\"Y0_df\"]\n        cls.cont_treat = [\"T0_df\"]\n        cls.bin_treat = [\"T2_df\"]\n        cls.cat_treat = [\"T_cat\"]\n        cls.cat_treat_labels = [\"None\", \"One\", \"Two\"]\n        cls.outcome_multi = [\"Y0_df\", \"Y1_df\"]\n        cls.cont_treat_multi = [\"T0_df\", \"T1_df\"]\n        # Generate data\n        d = {}\n        d.update({w: np.random.normal(size=cls.n) for w in cls.controls})\n        d.update({x: np.random.normal(size=cls.n) for x in cls.features})\n        d.update({t: np.random.uniform(size=cls.n) for t in cls.cont_treat_multi})\n        d.update({t: np.random.binomial(1, 0.5, size=cls.n) for t in cls.bin_treat})\n        d.update({t: np.random.choice([\"None\", \"One\", \"Two\"], size=cls.n, p=[0.4, 0.3, 0.3]) for t in cls.cat_treat})\n        d.update({z: np.random.binomial(1, 0.5, size=cls.n) for z in cls.instrument})\n        d.update({y: np.random.normal(size=cls.n) for y in cls.outcome_multi})\n        cls.df = pd.DataFrame(d)\n\n    def test_dml(self):\n        #################################\n        #  Single treatment and outcome #\n        #################################\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        W = TestPandasIntegration.df[TestPandasIntegration.controls]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.cont_treat]\n        # Test LinearDML\n        est = LinearDML(model_y=LassoCV(), model_t=LassoCV())\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary())  # Check that names propagate as expected\n        # |--> Test featurizers\n        est.featurizer = PolynomialFeatures(degree=2, include_bias=False)\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        self._check_input_names(\n            est.summary(),\n            feat_comp=get_feature_names_or_default(est.original_featurizer, X.columns))\n        est.featurizer = FunctionTransformer()\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        self._check_input_names(\n            est.summary(),\n            feat_comp=[f\"feat(X){i}\" for i in range(TestPandasIntegration.n_features)])\n        est.featurizer = ColumnTransformer([('passthrough', 'passthrough', [0])])\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        # ColumnTransformer behaves differently depending on version of sklearn, so we no longer check the names\n\n        # |--> Test re-fit\n        est.featurizer = None\n        X1 = X.rename(columns={c: \"{}_1\".format(c) for c in X.columns})\n        est.fit(Y, T, X=X1, W=W, inference='statsmodels')\n        self._check_input_names(est.summary(), feat_comp=X1.columns)\n        # Test SparseLinearDML\n        est = SparseLinearDML(model_y=LassoCV(), model_t=LassoCV())\n        est.fit(Y, T, X=X, W=W, inference='debiasedlasso')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary())  # Check that names propagate as expected\n        # Test ForestDML\n        est = CausalForestDML(model_y=GradientBoostingRegressor(), model_t=GradientBoostingRegressor())\n        est.fit(Y, T, X=X, W=W, inference='blb')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        ####################################\n        #  Mutiple treatments and outcomes #\n        ####################################\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome_multi]\n        T = TestPandasIntegration.df[TestPandasIntegration.cont_treat_multi]\n        # Test LinearDML\n        est = LinearDML(model_y=MultiTaskLasso(), model_t=MultiTaskLasso())\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        self._check_input_names(est.summary(), True, True)  # Check that names propagate as expected\n        self._check_popsum_names(est.effect_inference(X).population_summary(), True)\n        est.fit(Y, T, X=X, W=W, inference='bootstrap')  # Check bootstrap as well\n        self._check_input_names(est.summary(), True, True)\n        self._check_popsum_names(est.effect_inference(X).population_summary(), True)\n        # Test SparseLinearDML\n        est = SparseLinearDML(model_y=MultiTaskLasso(), model_t=MultiTaskLasso())\n        est.fit(Y, T, X=X, W=W, inference='debiasedlasso')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary(), True, True)  # Check that names propagate as expected\n        self._check_popsum_names(est.effect_inference(X).population_summary(), True)\n\n    def test_orf(self):\n        # Single outcome only, ORF does not support multiple outcomes\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        W = TestPandasIntegration.df[TestPandasIntegration.controls]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.cont_treat]\n        # Test DMLOrthoForest\n        est = DMLOrthoForest(\n            n_trees=100, max_depth=2, model_T=WeightedLasso(), model_Y=WeightedLasso())\n        est.fit(Y, T, X=X, W=W, inference='blb')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n        # Test DROrthoForest\n        est = DROrthoForest(n_trees=100, max_depth=2)\n        T = TestPandasIntegration.df[TestPandasIntegration.bin_treat]\n        est.fit(Y, T, X=X, W=W, inference='blb')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n\n    def test_metalearners(self):\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        W = TestPandasIntegration.df[TestPandasIntegration.controls]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.bin_treat]\n        # Test XLearner\n        # Skipping population summary names test because bootstrap inference is too slow\n        est = XLearner(models=GradientBoostingRegressor(),\n                       propensity_model=GradientBoostingClassifier(),\n                       cate_models=GradientBoostingRegressor())\n        est.fit(Y, T, X=np.hstack([X, W]))\n        _treatment_effects = est.effect(np.hstack([X, W]))\n        # Test SLearner\n        est = SLearner(overall_model=GradientBoostingRegressor())\n        est.fit(Y, T, X=np.hstack([X, W]))\n        _treatment_effects = est.effect(np.hstack([X, W]))\n        # Test TLearner\n        est = TLearner(models=GradientBoostingRegressor())\n        est.fit(Y, T, X=np.hstack([X, W]))\n        _treatment_effects = est.effect(np.hstack([X, W]))\n\n    def test_drlearners(self):\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        W = TestPandasIntegration.df[TestPandasIntegration.controls]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.bin_treat]\n        # Test LinearDRLearner\n        est = LinearDRLearner(model_propensity=GradientBoostingClassifier(),\n                              model_regression=GradientBoostingRegressor())\n        est.fit(Y, T, X=X, W=W, inference='statsmodels')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary(T=1))\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n        # Test SparseLinearDRLearner\n        est = SparseLinearDRLearner(model_propensity=GradientBoostingClassifier(),\n                                    model_regression=GradientBoostingRegressor())\n        est.fit(Y, T, X=X, W=W, inference='debiasedlasso')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary(T=1))\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n        # Test ForestDRLearner\n        est = ForestDRLearner(model_propensity=GradientBoostingClassifier(),\n                              model_regression=GradientBoostingRegressor())\n        est.fit(Y, T, X=X, W=W, inference='blb')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n\n    def test_orthoiv(self):\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.bin_treat]\n        Z = TestPandasIntegration.df[TestPandasIntegration.instrument]\n        # Test LinearIntentToTreatDRIV\n        est = LinearIntentToTreatDRIV(model_y_xw=GradientBoostingRegressor(),\n                                      model_t_xwz=GradientBoostingClassifier(),\n                                      flexible_model_effect=GradientBoostingRegressor())\n        est.fit(Y, T, Z=Z, X=X, inference='statsmodels')\n        _treatment_effects = est.effect(X)\n        _lb, _ub = est.effect_interval(X, alpha=0.05)\n        self._check_input_names(est.summary())  # Check input names propagate\n        self._check_popsum_names(est.effect_inference(X).population_summary())\n\n    def test_cat_treatments(self):\n        X = TestPandasIntegration.df[TestPandasIntegration.features]\n        Y = TestPandasIntegration.df[TestPandasIntegration.outcome]\n        T = TestPandasIntegration.df[TestPandasIntegration.cat_treat]\n        # Test categorical treatments\n        est = LinearDML(discrete_treatment=True,\n                        categories=TestPandasIntegration.cat_treat_labels)\n        est.fit(Y, T, X=X)\n        self._check_input_names(est.summary(), T_cat=True)\n        treat_name = \"Category\"\n        self._check_input_names(est.summary(treatment_names=[treat_name]), T_cat=True, treat_comp=[\n                                f\"{treat_name}_{t}\" for t in TestPandasIntegration.cat_treat_labels[1:]])\n        # Check refit\n        est.fit(Y, T, X=X)\n        self._check_input_names(est.summary(), T_cat=True)\n        # Check refit after setting categories\n        est.categories = [f\"{t}_1\" for t in TestPandasIntegration.cat_treat_labels]\n        T = T.apply(lambda t: t + \"_1\")\n        est.fit(Y, T, X=X)\n        self._check_input_names(est.summary(), T_cat=True, treat_comp=[\n                                f\"{TestPandasIntegration.cat_treat[0]}_{t}_1\" for t in\n                                TestPandasIntegration.cat_treat_labels[1:]])\n\n    def _check_input_names(self, summary_table,\n                           Y_multi=False, T_multi=False, T_cat=False, feat_comp=None, treat_comp=None):\n        index_name = np.array(summary_table.tables[0].data)[1:, 0]\n        if feat_comp is None:\n            feat_comp = TestPandasIntegration.features\n        if treat_comp is None:\n            if T_multi:\n                treat_comp = TestPandasIntegration.cont_treat_multi\n            if T_cat:\n                treat_comp = [\"{}_{}\".format(TestPandasIntegration.cat_treat[0], label)\n                              for label in TestPandasIntegration.cat_treat_labels[1:]]\n\n        if Y_multi:\n            out_comp = TestPandasIntegration.outcome_multi\n            if T_cat or T_multi:\n                index_name_comp = [\n                    f\"{feat}|{outcome}|{treat}\" for feat in feat_comp for outcome in out_comp for treat in treat_comp]\n\n            else:\n                index_name_comp = [\n                    f\"{feat}|{outcome}\" for feat in feat_comp for outcome in out_comp]\n        else:\n            if T_cat or T_multi:\n                index_name_comp = [\n                    f\"{feat}|{treat}\" for feat in feat_comp for treat in treat_comp]\n            else:\n                index_name_comp = feat_comp\n        np.testing.assert_array_equal(index_name, index_name_comp)\n\n    def _check_popsum_names(self, popsum, Y_multi=False):\n        np.testing.assert_array_equal(popsum.output_names,\n                                      TestPandasIntegration.outcome_multi if Y_multi\n                                      else TestPandasIntegration.outcome)\n"
  },
  {
    "path": "econml/tests/test_linear_model.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Tests for linear_model extensions.\"\"\"\n\nimport numpy as np\nimport unittest\nfrom econml.sklearn_extensions.linear_model import (WeightedLasso, WeightedLassoCV, WeightedMultiTaskLassoCV,\n                                                    WeightedLassoCVWrapper, DebiasedLasso, MultiOutputDebiasedLasso,\n                                                    SelectiveRegularization)\nfrom econml.sklearn_extensions.model_selection import WeightedKFold\nfrom sklearn.linear_model import Lasso, LassoCV, LinearRegression, MultiTaskLassoCV, Ridge\nfrom sklearn.base import clone\n\n\nclass TestLassoExtensions(unittest.TestCase):\n    \"\"\"Test WeightedLasso.\"\"\"\n\n    @classmethod\n    def setUpClass(cls):\n        \"\"\"Set up test class.\"\"\"\n        np.random.seed(123)\n        # DGP constants\n        cls.n_samples = 1000\n        cls.n_dim = 50\n        cls.X = np.random.normal(size=(cls.n_samples, cls.n_dim))\n        # DGP coefficients\n        cls.coefs1 = np.zeros(cls.n_dim)\n        nonzero_idx1 = np.random.choice(cls.n_dim, replace=False, size=5)\n        cls.coefs2 = np.zeros(cls.n_dim)\n        nonzero_idx2 = np.random.choice(cls.n_dim, replace=False, size=5)\n        cls.coefs1[nonzero_idx1] = 1\n        cls.coefs2[nonzero_idx2] = 1\n        cls.intercept = 3\n        cls.intercept1 = 2\n        cls.intercept2 = 0\n        cls.error_sd = 0.2\n        # Generated outcomes\n        cls.y1 = cls.intercept1 + np.dot(cls.X[:cls.n_samples // 2], cls.coefs1) + \\\n            np.random.normal(scale=cls.error_sd, size=cls.n_samples // 2)\n        cls.y2 = cls.intercept2 + np.dot(cls.X[cls.n_samples // 2:], cls.coefs2) + \\\n            np.random.normal(scale=cls.error_sd, size=cls.n_samples // 2)\n        cls.y = np.concatenate((cls.y1, cls.y2))\n        cls.y_simple = np.dot(cls.X, cls.coefs1) + np.random.normal(scale=cls.error_sd, size=cls.n_samples)\n        cls.y_2D = np.concatenate((TestLassoExtensions.y_simple.reshape(-1, 1),\n                                   TestLassoExtensions.y.reshape(-1, 1)), axis=1)\n        cls.y2_full = np.dot(cls.X, cls.coefs2) + np.random.normal(scale=cls.error_sd, size=cls.n_samples)\n        cls.y_2D_consistent = np.concatenate((TestLassoExtensions.y_simple.reshape(-1, 1),\n                                              TestLassoExtensions.y2_full.reshape(-1, 1)), axis=1)\n\n    def test_can_clone(self):\n        for model in [WeightedLasso(), WeightedLassoCV(), WeightedMultiTaskLassoCV(),\n                      WeightedLassoCVWrapper(), DebiasedLasso(), MultiOutputDebiasedLasso()]:\n            clone(model)\n\n    #################\n    # WeightedLasso #\n    #################\n    def test_one_DGP(self):\n        \"\"\"Test WeightedLasso with one set of coefficients.\n\n        To test the correctness of the weighted lasso, we compare the weight lasso with integer weights\n        with the standard lasso where the data entries have been replicated a number of times given by the\n        integer weights.\n        \"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y_simple, TestLassoExtensions.y_simple[TestLassoExtensions.n_samples // 2:]))\n        # Range of alphas\n        alpha_range = [0.001, 0.01, 0.1]\n        # Compare with Lasso\n        # --> No intercept\n        params = {'fit_intercept': False}\n        self._compare_with_lasso(X_expanded, y_expanded, TestLassoExtensions.X,\n                                 TestLassoExtensions.y_simple, sample_weight, alpha_range, params)\n        # --> With intercept\n        params = {'fit_intercept': True}\n        # When DGP has no intercept\n        self._compare_with_lasso(X_expanded, y_expanded, TestLassoExtensions.X,\n                                 TestLassoExtensions.y_simple, sample_weight, alpha_range, params)\n        # When DGP has intercept\n        self._compare_with_lasso(X_expanded, y_expanded + TestLassoExtensions.intercept, TestLassoExtensions.X,\n                                 TestLassoExtensions.y_simple + TestLassoExtensions.intercept,\n                                 sample_weight, alpha_range, params)\n        # --> Coerce coefficients to be positive\n        params = {'positive': True}\n        self._compare_with_lasso(X_expanded, y_expanded, TestLassoExtensions.X,\n                                 TestLassoExtensions.y_simple, sample_weight, alpha_range, params)\n        # --> Toggle max_iter & tol\n        params = {'max_iter': 100, 'tol': 1e-3}\n        self._compare_with_lasso(X_expanded, y_expanded, TestLassoExtensions.X,\n                                 TestLassoExtensions.y_simple, sample_weight, alpha_range, params)\n\n    def test_mixed_DGP(self):\n        \"\"\"Test WeightedLasso with two sets of coefficients.\"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.zeros(TestLassoExtensions.n_samples // 2)))\n        # Data from one DGP has weight 0. Check that we recover correct coefficients\n        self._compare_with_lasso(TestLassoExtensions.X[:TestLassoExtensions.n_samples // 2], TestLassoExtensions.y1,\n                                 TestLassoExtensions.X, TestLassoExtensions.y, sample_weight)\n        # Mixed DGP scenario.\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y1, TestLassoExtensions.y2, TestLassoExtensions.y2))\n        self._compare_with_lasso(X_expanded, y_expanded,\n                                 TestLassoExtensions.X, TestLassoExtensions.y, sample_weight)\n\n    def test_multiple_outputs(self):\n        \"\"\"Test multiple outputs.\"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.zeros(TestLassoExtensions.n_samples // 2)))\n        # Define multioutput\n        self._compare_with_lasso(TestLassoExtensions.X[:TestLassoExtensions.n_samples // 2],\n                                 TestLassoExtensions.y_2D[:TestLassoExtensions.n_samples // 2],\n                                 TestLassoExtensions.X, TestLassoExtensions.y_2D, sample_weight)\n\n    ###################\n    # WeightedLassoCV #\n    ###################\n    def test_no_weights_cv(self):\n        \"\"\"Test whether WeightedLassoCV with no weights returns LassoCV results.\"\"\"\n        # Define alphas to test\n        alphas = np.logspace(-4, -1, num=10)\n        # Compare with LassoCV\n        # --> No intercept\n        params = {'fit_intercept': False}\n        self._compare_with_lasso_cv(TestLassoExtensions.X, TestLassoExtensions.y_simple, TestLassoExtensions.X,\n                                    TestLassoExtensions.y_simple, sample_weight=None, alphas=alphas, params=params)\n        # --> With intercept\n        params = {'fit_intercept': True}\n        y_intercept = TestLassoExtensions.y_simple + TestLassoExtensions.intercept\n        self._compare_with_lasso_cv(TestLassoExtensions.X, y_intercept, TestLassoExtensions.X,\n                                    y_intercept, sample_weight=None, alphas=alphas, params=params)\n        # --> Force parameters to be positive\n        params = {'positive': True}\n        self._compare_with_lasso_cv(TestLassoExtensions.X, y_intercept, TestLassoExtensions.X,\n                                    y_intercept, sample_weight=None, alphas=alphas, params=params)\n\n    def test_weighted_KFold(self):\n        \"\"\"Test WeightedKFold used in WeightedLassoCV.\"\"\"\n        # Choose a smaller n to speed-up process\n        n = 100\n        sample_weight = np.random.choice(10, size=n)\n        n_splits = 3\n        wkf = WeightedKFold(n_splits=n_splits)\n        total_weight = np.sum(sample_weight)\n        for _, test_index in wkf.split(TestLassoExtensions.X[:n],\n                                       TestLassoExtensions.y_simple[:n], sample_weight=sample_weight):\n            # Compare fold weights\n            self.assertAlmostEqual(\n                np.sum(sample_weight[test_index]) / total_weight, 1 / n_splits,\n                delta=5e-2)\n\n    def test_balanced_weights_cv(self):\n        \"\"\"Test whether WeightedLassoCV with balanced weights.\"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y_simple, TestLassoExtensions.y_simple[TestLassoExtensions.n_samples // 2:]))\n        # Define splitters\n        # WeightedKFold splitter\n        cv_splitter = WeightedKFold(n_splits=3)\n        wlasso_cv = list(cv_splitter.split(TestLassoExtensions.X, TestLassoExtensions.y_simple,\n                                           sample_weight=sample_weight))\n        # Map weighted splitter to an extended splitter\n        index_mapper = {}\n        for i in range(TestLassoExtensions.n_samples):\n            if i < TestLassoExtensions.n_samples // 2:\n                index_mapper[i] = [i]\n            else:\n                index_mapper[i] = [i, i + TestLassoExtensions.n_samples // 2]\n        lasso_cv = self._map_splitter(wlasso_cv, TestLassoExtensions.n_samples +\n                                      TestLassoExtensions.n_samples // 2, index_mapper)\n        # Define alphas to test\n        alphas = np.logspace(-4, -1, num=10)\n        # Compare with LassoCV\n        # --> No intercept\n        params = {'fit_intercept': False}\n        self._compare_with_lasso_cv(X_expanded, y_expanded, TestLassoExtensions.X, TestLassoExtensions.y_simple,\n                                    sample_weight=sample_weight, alphas=alphas,\n                                    lasso_cv=lasso_cv, wlasso_cv=wlasso_cv, params=params)\n        # --> With intercept\n        params = {'fit_intercept': True}\n        y_intercept = TestLassoExtensions.y_simple + TestLassoExtensions.intercept\n        self._compare_with_lasso_cv(X_expanded, y_expanded + TestLassoExtensions.intercept,\n                                    TestLassoExtensions.X, y_intercept,\n                                    sample_weight=sample_weight, alphas=alphas,\n                                    lasso_cv=lasso_cv, wlasso_cv=wlasso_cv, params=params)\n        # --> Force parameters to be positive\n        params = {'positive': True}\n        self._compare_with_lasso_cv(X_expanded, y_expanded + TestLassoExtensions.intercept,\n                                    TestLassoExtensions.X, y_intercept,\n                                    sample_weight=sample_weight, alphas=alphas,\n                                    lasso_cv=lasso_cv, wlasso_cv=wlasso_cv, params=params)\n\n    ############################\n    # MultiTaskWeightedLassoCV #\n    ############################\n    def test_multiple_outputs_no_weights_cv(self):\n        \"\"\"Test MultiTaskWeightedLassoCV with no weights.\"\"\"\n        # Define alphas to test\n        alphas = np.logspace(-4, -1, num=10)\n        # Define splitter\n        cv = WeightedKFold(n_splits=3)\n        # Compare with MultiTaskLassoCV\n        # --> No intercept\n        params = {'fit_intercept': False}\n        self._compare_with_lasso_cv(TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    sample_weight=None, alphas=alphas,\n                                    lasso_cv=cv, wlasso_cv=cv, params=params)\n        # --> With intercept\n        params = {'fit_intercept': True}\n        self._compare_with_lasso_cv(TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    sample_weight=None, alphas=alphas,\n                                    lasso_cv=cv, wlasso_cv=cv, params=params)\n\n    def test_multiple_outputs_balanced_weights_cv(self):\n        \"\"\"Test MultiTaskWeightedLassoCV with weights.\"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y_2D, TestLassoExtensions.y_2D[TestLassoExtensions.n_samples // 2:]))\n        # Define splitters\n        # WeightedKFold splitter\n        cv_splitter = WeightedKFold(n_splits=3)\n        wlasso_cv = list(cv_splitter.split(TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                           sample_weight=sample_weight))\n        # Map weighted splitter to an extended splitter\n        index_mapper = {}\n        for i in range(TestLassoExtensions.n_samples):\n            if i < TestLassoExtensions.n_samples // 2:\n                index_mapper[i] = [i]\n            else:\n                index_mapper[i] = [i, i + TestLassoExtensions.n_samples // 2]\n        lasso_cv = self._map_splitter(wlasso_cv, TestLassoExtensions.n_samples +\n                                      TestLassoExtensions.n_samples // 2, index_mapper)\n        # Define alphas to test\n        alphas = np.logspace(-4, -1, num=10)\n        # Compare with LassoCV\n        # --> No intercept\n        params = {'fit_intercept': False}\n        self._compare_with_lasso_cv(X_expanded, y_expanded, TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    sample_weight=sample_weight, alphas=alphas,\n                                    lasso_cv=lasso_cv, wlasso_cv=wlasso_cv, params=params)\n        # --> With intercept\n        params = {'fit_intercept': True}\n        self._compare_with_lasso_cv(X_expanded, y_expanded,\n                                    TestLassoExtensions.X, TestLassoExtensions.y_2D,\n                                    sample_weight=sample_weight, alphas=alphas,\n                                    lasso_cv=lasso_cv, wlasso_cv=wlasso_cv, params=params)\n\n    ##########################\n    # WeightedLassoCVWrapper #\n    ##########################\n    def test_wrapper_attributes(self):\n        \"\"\"Test that attributes are properly maintained across calls to fit that switch between 1- and 2-D.\"\"\"\n        wrapper = WeightedLassoCVWrapper(alphas=[5, 10], max_iter=100)\n        wrapper.tol = 0.01  # set an attribute manually as well\n\n        assert wrapper.alphas == [5, 10]\n        assert wrapper.max_iter == 100\n        assert wrapper.tol == 0.01\n\n        # perform 1D fit\n        wrapper.fit(np.random.normal(size=(100, 3)), np.random.normal(size=100))\n\n        assert wrapper.alphas == [5, 10]\n        assert wrapper.max_iter == 100\n        assert wrapper.tol == 0.01\n\n        # perform 2D fit\n        wrapper.fit(np.random.normal(size=(100, 3)), np.random.normal(size=(100, 2)))\n\n        assert wrapper.alphas == [5, 10]\n        assert wrapper.max_iter == 100\n        assert wrapper.tol == 0.01\n\n    #################\n    # DebiasedLasso #\n    #################\n\n    def test_debiased_lasso_one_DGP(self):\n        \"\"\"Test DebiasedLasso with one set of coefficients.\"\"\"\n        # Test DebiasedLasso without weights\n        # --> Check debiased coeffcients without intercept\n        params = {'fit_intercept': False}\n        self._check_debiased_coefs(TestLassoExtensions.X, TestLassoExtensions.y_simple, sample_weight=None,\n                                   expected_coefs=TestLassoExtensions.coefs1,\n                                   expected_intercept=TestLassoExtensions.intercept,\n                                   params=params)\n        # --> Check debiased coeffcients with intercept\n        self._check_debiased_coefs(TestLassoExtensions.X,\n                                   TestLassoExtensions.y_simple + TestLassoExtensions.intercept,\n                                   sample_weight=None,\n                                   expected_coefs=TestLassoExtensions.coefs1,\n                                   expected_intercept=TestLassoExtensions.intercept)\n        # --> Check 5-95 CI coverage for unit vectors\n        self._check_debiased_CI(TestLassoExtensions.X, TestLassoExtensions.y_simple + TestLassoExtensions.intercept,\n                                sample_weight=None,\n                                expected_coefs=TestLassoExtensions.coefs1,\n                                expected_intercept=TestLassoExtensions.intercept)\n        # Test DebiasedLasso with weights for one DGP\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y_simple, TestLassoExtensions.y_simple[TestLassoExtensions.n_samples // 2:]))\n        # --> Check debiased coefficients\n        weighted_debiased_coefs = self._check_debiased_coefs(TestLassoExtensions.X, TestLassoExtensions.y_simple,\n                                                             sample_weight=sample_weight,\n                                                             expected_coefs=TestLassoExtensions.coefs1)\n        expanded_debiased_coefs = self._check_debiased_coefs(X_expanded, y_expanded, sample_weight=None,\n                                                             expected_coefs=TestLassoExtensions.coefs1)\n        np.testing.assert_allclose(weighted_debiased_coefs, expanded_debiased_coefs, atol=5e-2)\n\n    def test_debiased_lasso_mixed_DGP(self):\n        \"\"\"Test WeightedLasso with two sets of coefficients.\"\"\"\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.zeros(TestLassoExtensions.n_samples // 2)))\n        # Data from one DGP has weight 0. Check that we recover correct coefficients\n        # --> Check debiased coeffcients\n        self._check_debiased_coefs(TestLassoExtensions.X, TestLassoExtensions.y,\n                                   sample_weight=sample_weight,\n                                   expected_coefs=TestLassoExtensions.coefs1,\n                                   expected_intercept=TestLassoExtensions.intercept1)\n\n    def test_multi_output_debiased_lasso(self):\n        \"\"\"Test MultiOutputDebiasedLasso.\"\"\"\n        # Test that attributes propagate correctly\n        est = MultiOutputDebiasedLasso()\n        multioutput_attrs = est.get_params()\n        debiased_attrs = DebiasedLasso().get_params()\n        for attr in debiased_attrs:\n            self.assertTrue(attr in multioutput_attrs)\n        # Test MultiOutputDebiasedLasso without weights\n        # --> Check debiased coeffcients without intercept\n        params = {'fit_intercept': False}\n        self._check_debiased_coefs(TestLassoExtensions.X, TestLassoExtensions.y_2D_consistent,\n                                   sample_weight=None,\n                                   expected_coefs=[TestLassoExtensions.coefs1, TestLassoExtensions.coefs2],\n                                   params=params)\n        # --> Check debiased coeffcients with intercept\n        intercept_2D = np.array([TestLassoExtensions.intercept1, TestLassoExtensions.intercept2])\n        self._check_debiased_coefs(TestLassoExtensions.X,\n                                   TestLassoExtensions.y_2D_consistent + intercept_2D,\n                                   sample_weight=None,\n                                   expected_coefs=[TestLassoExtensions.coefs1, TestLassoExtensions.coefs2],\n                                   expected_intercept=intercept_2D)\n        # --> Check CI coverage\n        self._check_debiased_CI_2D(TestLassoExtensions.X,\n                                   TestLassoExtensions.y_2D_consistent + intercept_2D,\n                                   sample_weight=None,\n                                   expected_coefs=np.array([TestLassoExtensions.coefs1, TestLassoExtensions.coefs2]),\n                                   expected_intercept=intercept_2D)\n        # Test MultiOutputDebiasedLasso with weights\n        # Define weights\n        sample_weight = np.concatenate((np.ones(TestLassoExtensions.n_samples // 2),\n                                        np.ones(TestLassoExtensions.n_samples // 2) * 2))\n        # Define extended datasets\n        X_expanded = np.concatenate(\n            (TestLassoExtensions.X, TestLassoExtensions.X[TestLassoExtensions.n_samples // 2:]))\n        y_expanded = np.concatenate(\n            (TestLassoExtensions.y_2D_consistent,\n             TestLassoExtensions.y_2D_consistent[TestLassoExtensions.n_samples // 2:]))\n        # --> Check debiased coefficients\n        weighted_debiased_coefs = self._check_debiased_coefs(\n            TestLassoExtensions.X,\n            TestLassoExtensions.y_2D_consistent,\n            sample_weight=sample_weight,\n            expected_coefs=[TestLassoExtensions.coefs1, TestLassoExtensions.coefs2],\n            params=params)\n        expanded_debiased_coefs = self._check_debiased_coefs(\n            X_expanded, y_expanded, sample_weight=None,\n            expected_coefs=[TestLassoExtensions.coefs1, TestLassoExtensions.coefs2],\n            params=params)\n        for i in range(2):\n            np.testing.assert_allclose(weighted_debiased_coefs[i], expanded_debiased_coefs[i], atol=5e-2)\n\n    def _check_debiased_CI(self,\n                           X, y, sample_weight, expected_coefs,\n                           expected_intercept=0, n_experiments=200, params={}):\n        # Unit vectors\n        X_test = np.eye(TestLassoExtensions.n_dim)\n        y_test_mean = expected_intercept + expected_coefs\n        is_in_interval = np.zeros((n_experiments, TestLassoExtensions.n_dim))\n        for i in range(n_experiments):\n            np.random.seed(i)\n            X_exp = np.random.normal(size=X.shape)\n            err = np.random.normal(scale=TestLassoExtensions.error_sd, size=X.shape[0])\n            y_exp = expected_intercept + np.dot(X_exp, expected_coefs) + err\n            debiased_lasso = DebiasedLasso()\n            debiased_lasso.set_params(**params)\n            debiased_lasso.fit(X_exp, y_exp, sample_weight)\n            y_lower, y_upper = debiased_lasso.predict_interval(X_test, alpha=0.1)\n            is_in_interval[i] = ((y_test_mean >= y_lower) & (y_test_mean <= y_upper))\n        CI_coverage = np.mean(is_in_interval, axis=0)\n        self.assertTrue(all(CI_coverage >= 0.85))\n        self.assertTrue(all(CI_coverage <= 0.95))\n\n    def _check_debiased_CI_2D(self,\n                              X, y, sample_weight, expected_coefs,\n                              expected_intercept=0, n_experiments=200, params={}):\n        # Unit vectors\n        X_test = np.eye(TestLassoExtensions.n_dim)\n        y_test_mean = expected_intercept + expected_coefs.T\n        is_in_interval = np.zeros((y.shape[1], n_experiments, TestLassoExtensions.n_dim))\n        for i in range(n_experiments):\n            np.random.seed(i)\n            X_exp = np.random.normal(size=X.shape)\n            err = np.random.normal(scale=TestLassoExtensions.error_sd, size=(X.shape[0], y.shape[1]))\n            y_exp = expected_intercept + np.dot(X_exp, expected_coefs.T) + err\n            debiased_lasso = MultiOutputDebiasedLasso()\n            debiased_lasso.set_params(**params)\n            debiased_lasso.fit(X_exp, y_exp, sample_weight)\n            y_lower, y_upper = debiased_lasso.predict_interval(X_test, alpha=0.1)\n            for j in range(y.shape[1]):\n                is_in_interval[j, i, :] = ((y_test_mean[:, j] >= y_lower[:, j]) & (y_test_mean[:, j] <= y_upper[:, j]))\n        for i in range(y.shape[1]):\n            CI_coverage = np.mean(is_in_interval[i], axis=0)\n            self.assertTrue(all(CI_coverage >= 0.85))\n\n    def _check_debiased_coefs(self, X, y, sample_weight, expected_coefs, expected_intercept=0, params={}):\n        debiased_lasso = MultiOutputDebiasedLasso() if np.ndim(y) > 1 else DebiasedLasso()\n        debiased_lasso.set_params(**params)\n        debiased_lasso.fit(X, y, sample_weight)\n        all_params = debiased_lasso.get_params()\n        # Check coeffcients and intercept are the same within tolerance\n        if np.ndim(y) > 1:\n            for i in range(y.shape[1]):\n                np.testing.assert_allclose(debiased_lasso.coef_[i], expected_coefs[i], atol=5e-2)\n                if all_params[\"fit_intercept\"]:\n                    self.assertAlmostEqual(debiased_lasso.intercept_[i], expected_intercept[i], delta=1e-2)\n        else:\n            np.testing.assert_allclose(debiased_lasso.coef_, expected_coefs, atol=5e-2)\n            if all_params[\"fit_intercept\"]:\n                self.assertAlmostEqual(debiased_lasso.intercept_, expected_intercept, delta=1e-2)\n        return debiased_lasso.coef_\n\n    def _compare_with_lasso(self, lasso_X, lasso_y, wlasso_X, wlasso_y, sample_weight, alpha_range=[0.01], params={}):\n        for alpha in alpha_range:\n            lasso = Lasso(alpha=alpha)\n            lasso.set_params(**params)\n            lasso.fit(lasso_X, lasso_y)\n            wlasso = WeightedLasso(alpha=alpha)\n            wlasso.set_params(**params)\n            wlasso.fit(wlasso_X, wlasso_y, sample_weight=sample_weight)\n            # Check results are similar with tolerance 1e-6\n            if np.ndim(lasso_y) > 1:\n                for i in range(lasso_y.shape[1]):\n                    np.testing.assert_allclose(lasso.coef_[i], wlasso.coef_[i])\n                    if lasso.get_params()[\"fit_intercept\"]:\n                        self.assertAlmostEqual(lasso.intercept_[i], wlasso.intercept_[i])\n            else:\n                np.testing.assert_allclose(lasso.coef_, wlasso.coef_)\n                self.assertAlmostEqual(lasso.intercept_, wlasso.intercept_)\n\n    def _compare_with_lasso_cv(self, lasso_X, lasso_y, wlasso_X, wlasso_y,\n                               sample_weight, alphas, lasso_cv=3, wlasso_cv=3, params={}, tol=1e-8):\n        # Check if multitask\n        if np.ndim(lasso_y) > 1:\n            lassoCV = MultiTaskLassoCV(alphas=alphas, cv=lasso_cv)\n            wlassoCV = WeightedMultiTaskLassoCV(alphas=alphas, cv=wlasso_cv)\n        else:\n            lassoCV = LassoCV(alphas=alphas, cv=lasso_cv)\n            wlassoCV = WeightedLassoCV(alphas=alphas, cv=wlasso_cv)\n        lassoCV.set_params(**params)\n        lassoCV.fit(lasso_X, lasso_y)\n        wlassoCV.set_params(**params)\n        wlassoCV.fit(wlasso_X, wlasso_y, sample_weight)\n        # Check that same alpha is chosen\n        self.assertEqual(lassoCV.alpha_, wlassoCV.alpha_)\n        # Check that the coefficients are similar\n        if np.ndim(lasso_y) > 1:\n            for i in range(lasso_y.shape[1]):\n                np.testing.assert_allclose(lassoCV.coef_[i], wlassoCV.coef_[i], atol=tol)\n                if lassoCV.get_params()[\"fit_intercept\"]:\n                    self.assertAlmostEqual(lassoCV.intercept_[i], wlassoCV.intercept_[i])\n        else:\n            np.testing.assert_allclose(lassoCV.coef_, wlassoCV.coef_, atol=tol)\n            self.assertAlmostEqual(lassoCV.intercept_, wlassoCV.intercept_)\n\n    def _map_splitter(self, weighted_splits, n_expanded, index_mapper):\n        unweighted_splits = []\n        all_idx = np.arange(n_expanded)\n        for _, test_idx in weighted_splits:\n            unweighted_test_idx = []\n            for idx in test_idx:\n                unweighted_test_idx += index_mapper[idx]\n            unweighted_test_idx = np.asarray(unweighted_test_idx)\n            unweighted_train_idx = np.setdiff1d(all_idx, unweighted_test_idx, assume_unique=True)\n            unweighted_splits.append((unweighted_train_idx, unweighted_test_idx))\n        return unweighted_splits\n\n\nclass TestSelectiveRegularization(unittest.TestCase):\n\n    # selective ridge has a simple implementation that we can test against\n    # see https://stats.stackexchange.com/questions/69205/how-to-derive-the-ridge-regression-solution/164546#164546\n    def test_against_ridge_ground_truth(self):\n        for _ in range(10):\n            n = 100 + np.random.choice(500)\n            d = 5 + np.random.choice(20)\n            n_inds = np.random.choice(np.arange(2, d - 2))\n            inds = np.random.choice(d, n_inds, replace=False)\n            alpha = np.random.uniform(0.5, 1.5)\n            X = np.random.normal(size=(n, d))\n            y = np.random.normal(size=(n,))\n            coef = SelectiveRegularization(unpenalized_inds=np.delete(np.arange(d), inds),\n                                           penalized_model=Ridge(alpha=alpha, fit_intercept=False),\n                                           fit_intercept=False).fit(X, y).coef_\n            X_aug = np.zeros((n_inds, d))\n            X_aug[np.arange(n_inds), inds] = np.sqrt(alpha)\n            y_aug = np.zeros((n_inds,))\n            coefs = LinearRegression(fit_intercept=False).fit(np.vstack((X, X_aug)),\n                                                              np.concatenate((y, y_aug))).coef_\n            np.testing.assert_allclose(coef, coefs)\n\n    # it should be the case that when we set fit_intercept to true,\n    # it doesn't matter whether the penalized model also fits an intercept or not\n    def test_intercept(self):\n        for _ in range(10):\n            n = 100 + np.random.choice(500)\n            d = 5 + np.random.choice(20)\n            n_inds = np.random.choice(np.arange(2, d - 2))\n            inds = np.random.choice(d, n_inds, replace=False)\n            unpenalized_inds = np.delete(np.arange(d), inds)\n            alpha = np.random.uniform(0.5, 1.5)\n            X = np.random.normal(size=(n, d))\n            y = np.random.normal(size=(n,))\n            models = [SelectiveRegularization(unpenalized_inds=unpenalized_inds,\n                                              penalized_model=Lasso(alpha=alpha,\n                                                                    fit_intercept=inner_intercept),\n                                              fit_intercept=True)\n                      for inner_intercept in [False, True]]\n\n            for model in models:\n                model.fit(X, y)\n\n            np.testing.assert_allclose(models[0].coef_, models[1].coef_)\n            np.testing.assert_allclose(models[0].intercept_, models[1].intercept_)\n\n    def test_vectors_and_arrays(self):\n        X = np.random.normal(size=(10, 3))\n        Y = np.random.normal(size=(10, 2))\n        model = SelectiveRegularization(unpenalized_inds=[0],\n                                        penalized_model=Ridge(),\n                                        fit_intercept=True)\n        self.assertEqual(model.fit(X, Y).coef_.shape, (2, 3))\n        self.assertEqual(model.fit(X, Y[:, 0]).coef_.shape, (3,))\n\n    def test_can_use_sample_weights(self):\n        n = 100 + np.random.choice(500)\n        d = 5 + np.random.choice(20)\n        n_inds = np.random.choice(np.arange(2, d - 2))\n        inds = np.random.choice(d, n_inds, replace=False)\n        alpha = np.random.uniform(0.5, 1.5)\n        X = np.random.normal(size=(n, d))\n        y = np.random.normal(size=(n,))\n        sample_weight = np.random.choice([1, 2], n)\n        # create an extra copy of rows with weight 2\n        X_aug = X[sample_weight == 2, :]\n        y_aug = y[sample_weight == 2]\n        model = SelectiveRegularization(unpenalized_inds=inds,\n                                        penalized_model=Ridge(alpha=alpha),\n                                        fit_intercept=True)\n        coef = model.fit(X, y, sample_weight=sample_weight).coef_\n        coef2 = model.fit(np.vstack((X, X_aug)),\n                          np.concatenate((y, y_aug))).coef_\n        np.testing.assert_allclose(coef, coef2)\n\n    def test_can_slice(self):\n        n = 100 + np.random.choice(500)\n        d = 5 + np.random.choice(20)\n        alpha = np.random.uniform(0.5, 1.5)\n        X = np.random.normal(size=(n, d))\n        y = np.random.normal(size=(n,))\n        coef = SelectiveRegularization(unpenalized_inds=slice(2, None),\n                                       penalized_model=Lasso(alpha=alpha),\n                                       fit_intercept=True).fit(X, y).coef_\n        X_perm = np.hstack((X[:, 1:],\n                            X[:, :1]))\n        coef2 = SelectiveRegularization(unpenalized_inds=slice(1, -1),\n                                        penalized_model=Lasso(alpha=alpha),\n                                        fit_intercept=True).fit(X_perm, y).coef_\n        np.testing.assert_allclose(coef2, np.hstack((coef[1:],\n                                                     coef[:1])))\n\n    def test_can_use_index_lambda(self):\n        n = 100 + np.random.choice(500)\n        d = 5 + np.random.choice(20)\n        alpha = np.random.uniform(0.5, 1.5)\n        X = np.random.normal(size=(n, d))\n        y = np.random.normal(size=(n,))\n        coef = SelectiveRegularization(unpenalized_inds=slice(2, None),\n                                       penalized_model=Lasso(alpha=alpha),\n                                       fit_intercept=True).fit(X, y).coef_\n\n        def index_lambda(X, y):\n            # instead of a slice, explicitly return an array of indices\n            return np.arange(2, X.shape[1])\n        coef2 = SelectiveRegularization(unpenalized_inds=index_lambda,\n                                        penalized_model=Lasso(alpha=alpha),\n                                        fit_intercept=True).fit(X, y).coef_\n        np.testing.assert_allclose(coef, coef2)\n\n    def test_can_pass_through_attributes(self):\n        X = np.random.normal(size=(10, 3))\n        y = np.random.normal(size=(10,))\n        model = SelectiveRegularization(unpenalized_inds=[0],\n                                        penalized_model=LassoCV(),\n                                        fit_intercept=True)\n\n        # _penalized_inds is only set during fitting\n        with self.assertRaises(AttributeError):\n            _inds = model._penalized_inds\n\n        # cv exists on penalized model\n        _old_cv = model.cv\n        model.cv = 2\n\n        model.fit(X, y)\n\n        # now we can access _penalized_inds\n        assert np.array_equal(model._penalized_inds, [1, 2])\n\n        # check that we can read the cv attribute back out from the underlying model\n        assert model.cv == 2\n\n    def test_can_clone_selective_regularization(self):\n        model = SelectiveRegularization(unpenalized_inds=[0],\n                                        penalized_model=LassoCV(),\n                                        fit_intercept=True)\n        model.cv = 2\n        model2 = clone(model, safe=False)\n        assert model2.cv == 2\n"
  },
  {
    "path": "econml/tests/test_metalearners.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport unittest\nfrom sklearn.exceptions import DataConversionWarning\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom econml.metalearners import SLearner, TLearner, XLearner, DomainAdaptationLearner\n\n\nclass TestMetalearners(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        # Set random seed\n        cls.random_state = np.random.RandomState(12345)\n        # Generate data\n        # DGP constants\n        cls.d = 5\n        cls.n = 1000\n        cls.n_test = 200\n        cls.heterogeneity_index = 1\n        # Test data\n        cls.X_test = cls.random_state.multivariate_normal(\n            np.zeros(cls.d),\n            np.diag(np.ones(cls.d)),\n            cls.n_test)\n        # Constant treatment effect\n        cls.const_te_data = TestMetalearners._generate_data(\n            cls.n, cls.d, beta=cls.random_state.uniform(0, 1, cls.d),\n            treatment_effect=TestMetalearners._const_te, multi_y=False)\n        # Constant treatment with multi output Y\n        cls.const_te_multiy_data = TestMetalearners._generate_data(\n            cls.n, cls.d, beta=cls.random_state.uniform(0, 1, size=(cls.d, 2)),\n            treatment_effect=TestMetalearners._const_te, multi_y=True)\n        # Heterogeneous treatment\n        cls.heterogeneous_te_data = TestMetalearners._generate_data(\n            cls.n, cls.d, beta=cls.random_state.uniform(0, 1, cls.d),\n            treatment_effect=TestMetalearners._heterogeneous_te, multi_y=False)\n        # Heterogeneous treatment with multi output Y\n        cls.heterogeneous_te_multiy_data = TestMetalearners._generate_data(\n            cls.n, cls.d, beta=cls.random_state.uniform(0, 1, size=(cls.d, 2)),\n            treatment_effect=TestMetalearners._heterogeneous_te, multi_y=True)\n\n    def test_TLearner(self):\n        \"\"\"Test whether the TLearner can accurately estimate constant and heterogeneous treatment effects.\"\"\"\n        # TLearner test\n        # Instantiate TLearner\n        T_learner = TLearner(models=LinearRegression())\n        # Test inputs\n        self._test_inputs(T_learner, T0=3, T1=5)\n        # Test constant and heterogeneous treatment effect, single and multi output y\n        for te_type in [\"const\", \"heterogeneous\"]:\n            for multi_y in [False, True]:\n                self._test_te(T_learner, T0=3, T1=5, tol=0.5, te_type=te_type, multi_y=multi_y)\n\n    def test_SLearner(self):\n        \"\"\"Test whether the SLearner can accurately estimate constant and heterogeneous treatment effects.\"\"\"\n        # Instantiate SLearner\n        S_learner = SLearner(overall_model=LinearRegression())\n        # Test inputs\n        self._test_inputs(S_learner, T0=3, T1=5)\n        # Test constant treatment effect\n        self._test_te(S_learner, T0=3, T1=5, tol=0.5, te_type=\"const\", multi_y=False)\n        # Test constant treatment effect with multi output Y\n        self._test_te(S_learner, T0=3, T1=5, tol=0.5, te_type=\"const\", multi_y=True)\n        # Test heterogeneous treatment effect\n        # Need interactions between T and features\n        overall_model = Pipeline([('poly', PolynomialFeatures()), ('model', LinearRegression())])\n        S_learner = SLearner(overall_model=overall_model)\n        self._test_te(S_learner, T0=3, T1=5, tol=0.5, te_type=\"heterogeneous\", multi_y=False)\n        # Test heterogeneous treatment effect with multi output Y\n        self._test_te(S_learner, T0=3, T1=5, tol=0.5, te_type=\"heterogeneous\", multi_y=True)\n\n    def test_XLearner(self):\n        \"\"\"Test whether the XLearner can accurately estimate constant and heterogeneous treatment effects.\"\"\"\n        # Instantiate XLearner\n        X_learner = XLearner(models=LinearRegression())\n        # Test inputs\n        self._test_inputs(X_learner, T0=3, T1=5)\n        # Test constant and heterogeneous treatment effect, single and multi output y\n        for te_type in [\"const\", \"heterogeneous\"]:\n            for multi_y in [False, True]:\n                self._test_te(X_learner, T0=3, T1=5, tol=0.5, te_type=te_type, multi_y=multi_y)\n\n    def test_DALearner(self):\n        \"\"\"Test whether the DALearner can accurately estimate constant and heterogeneous treatment effects.\"\"\"\n        # Instantiate DomainAdaptationLearner\n        DA_learner = DomainAdaptationLearner(models=LinearRegression(),\n                                             final_models=LinearRegression())\n        # Test inputs\n        self._test_inputs(DA_learner, T0=3, T1=5)\n        # Test constant and heterogeneous treatment effect, single and multi output y\n        for te_type in [\"const\", \"heterogeneous\"]:\n            for multi_y in [False, True]:\n                self._test_te(DA_learner, T0=3, T1=5, tol=0.5, te_type=te_type, multi_y=multi_y)\n\n    def _test_te(self, learner_instance, T0, T1, tol, te_type=\"const\", multi_y=False):\n        if te_type not in [\"const\", \"heterogeneous\"]:\n            raise ValueError(\"Type of treatment effect must be 'const' or 'heterogeneous'.\")\n        te_func = getattr(TestMetalearners, \"_{te_type}_te\".format(te_type=te_type))\n        if multi_y:\n            X, T, Y = getattr(TestMetalearners, \"{te_type}_te_multiy_data\".format(te_type=te_type))\n            # Get the true treatment effect\n            te = np.repeat((np.apply_along_axis(te_func, 1, TestMetalearners.X_test) *\n                            (T1 - T0)).reshape(-1, 1), 2, axis=1)\n            marginal_te = np.repeat(np.apply_along_axis(\n                te_func, 1, TestMetalearners.X_test).reshape(-1, 1) * np.array([2, 4]), 2, axis=0).reshape((-1, 2, 2))\n        else:\n            X, T, Y = getattr(TestMetalearners, \"{te_type}_te_data\".format(te_type=te_type))\n            # Get the true treatment effect\n            te = np.apply_along_axis(te_func, 1, TestMetalearners.X_test) * (T1 - T0)\n            marginal_te = np.apply_along_axis(te_func, 1, TestMetalearners.X_test).reshape(-1, 1) * np.array([2, 4])\n        # Fit learner and get the effect and marginal effect\n        learner_instance.fit(Y, T, X=X)\n        te_hat = learner_instance.effect(TestMetalearners.X_test, T0=T0, T1=T1)\n        marginal_te_hat = learner_instance.marginal_effect(T1, TestMetalearners.X_test)\n        # Compute treatment effect residuals (absolute)\n        te_res = np.abs(te - te_hat)\n        marginal_te_res = np.abs(marginal_te - marginal_te_hat)\n        # Check that at least 90% of predictions are within tolerance interval\n        self.assertGreaterEqual(np.mean(te_res < tol), 0.90)\n        self.assertGreaterEqual(np.mean(marginal_te_res < tol), 0.90)\n        # Check whether the output shape is right\n        m = TestMetalearners.X_test.shape[0]\n        d_t = 2\n        d_y = Y.shape[1:]\n        self.assertEqual(te_hat.shape, (m,) + d_y)\n        self.assertEqual(marginal_te_hat.shape, (m, d_t,) + d_y)\n\n    def _test_inputs(self, learner_instance, T0, T1):\n        X, T, Y = TestMetalearners.const_te_data\n        # Check that one can pass in regular lists\n        learner_instance.fit(list(Y), list(T), X=list(X))\n        learner_instance.effect(list(TestMetalearners.X_test), T0=T0, T1=T1)\n        # Check that it fails correctly if lists of different shape are passed in\n        self.assertRaises(ValueError, learner_instance.fit, Y, T, X=X[:TestMetalearners.n // 2])\n        self.assertRaises(ValueError, learner_instance.fit, Y[:TestMetalearners.n // 2], T, X=X)\n        # Check that it works when T, Y have shape (n, 1)\n        self.assertWarns(DataConversionWarning,\n                         learner_instance.fit, Y.reshape(-1, 1), T.reshape(-1, 1), X=X\n                         )\n\n    @classmethod\n    def _const_te(cls, x):\n        return 2\n\n    @classmethod\n    def _heterogeneous_te(cls, x):\n        return x[cls.heterogeneity_index]\n\n    @classmethod\n    def _generate_data(cls, n, d, beta, treatment_effect, multi_y):\n        \"\"\"Generate population data for given treatment_effect functions.\n\n        Parameters\n        ----------\n            n (int): population size\n            d (int): number of covariates\n            untreated_outcome (func): untreated outcome conditional on covariates\n            treatment_effect (func): treatment effect conditional on covariates\n        \"\"\"\n        # Generate covariates\n        X = cls.random_state.multivariate_normal(np.zeros(d), np.diag(np.ones(d)), n)\n        # Generate treatment\n        T = cls.random_state.choice([1, 3, 5], size=n, p=[0.2, 0.3, 0.5])\n        # Calculate outcome\n        Y0 = (np.dot(X, beta) + cls.random_state.normal(0, 1)).reshape(n, -1)\n        treat_effect = np.apply_along_axis(lambda x: treatment_effect(x), 1, X)\n        Y = Y0 + (treat_effect * T).reshape(-1, 1)\n        if not multi_y:\n            Y = Y.flatten()\n        return (X, T, Y)\n"
  },
  {
    "path": "econml/tests/test_missing_values.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\nimport unittest\nimport numpy as np\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, Lasso\nfrom sklearn.pipeline import make_pipeline\nfrom sklearn.impute import SimpleImputer\n\n\nfrom econml._ortho_learner import _OrthoLearner\nfrom econml.dml import LinearDML, SparseLinearDML, KernelDML, CausalForestDML, NonParamDML, DML\nfrom econml.iv.dml import OrthoIV, DMLIV, NonParamDMLIV\nfrom econml.iv.dr import DRIV, LinearDRIV, SparseLinearDRIV, ForestDRIV, IntentToTreatDRIV, LinearIntentToTreatDRIV\nfrom econml.orf import DMLOrthoForest, DROrthoForest\nfrom econml.dr import DRLearner, LinearDRLearner, SparseLinearDRLearner, ForestDRLearner\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\nfrom econml.panel.dml import DynamicDML\nfrom econml.metalearners import TLearner, SLearner, XLearner, DomainAdaptationLearner\n\nimport inspect\nimport scipy\n\n\nclass ModelNuisance:\n    def __init__(self, model_t, model_y):\n        self._model_t = model_t\n        self._model_y = model_y\n\n    def train(self, is_selecting, folds, Y, T, W=None):\n        self._model_t.fit(W, T)\n        self._model_y.fit(W, Y)\n        return self\n\n    def predict(self, Y, T, W=None):\n        return Y - self._model_y.predict(W), T - self._model_t.predict(W)\n\n\nclass ModelFinal:\n\n    def __init__(self):\n        return\n\n    def fit(self, Y, T, W=None, nuisances=None):\n        Y_res, T_res = nuisances\n        self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n        return self\n\n    def predict(self):\n        # theta needs to be of dimension (1, d_t) if T is (n, d_t)\n        return np.array([[self.model.coef_[0]]])\n\n    def score(self, Y, T, W=None, nuisances=None):\n        Y_res, T_res = nuisances\n        return np.mean((Y_res - self.model.predict(T_res.reshape(-1, 1)))**2)\n\n\nclass ParametricModelFinalForMissing:\n    def __init__(self, model_final):\n        self.model_final = model_final\n\n    def fit(self, *args, **kwargs):\n        self.model_final.fit(*args, **kwargs)\n\n        self.coef_ = self.model_final[-1].coef_\n        self.intercept_ = self.model_final[-1].intercept_\n        self.intercept_stderr_ = self.model_final[-1].intercept_stderr_\n        self.coef_stderr_ = self.model_final[-1].coef_stderr_\n        return self\n\n    def predict(self, *args, **kwargs):\n        return self.model_final.predict(*args, **kwargs)\n\n    # assumes an sklearn pipeline by indexing -1 of model_final\n    def prediction_stderr(self, *args, **kwargs):\n        return self.model_final[-1].prediction_stderr(*args, **kwargs)\n\n\nclass NonParamModelFinal:\n    def __init__(self, pipeline):\n        self.pipeline = pipeline\n\n    def fit(self, *args, **kwargs):\n        sample_weight = kwargs.pop('sample_weight')\n        # pass sample weight to final step of pipeline\n        sample_weight_dict = {f'{self.pipeline.steps[-1][0]}__sample_weight': sample_weight}\n        return self.pipeline.fit(*args, **kwargs, **sample_weight_dict)\n\n    def predict(self, *args, **kwargs):\n        return self.pipeline.predict(*args, **kwargs)\n\n    def predict_proba(self, *args, **kwargs):\n        return self.pipeline.predict_proba(*args, **kwargs)\n\n\ndef create_data_dict(Y, T, X, X_missing, W, W_missing, Z, X_has_missing=False, W_has_missing=False, include_Z=False):\n    data_dict = {'Y': Y, 'T': T, 'X': X_missing if X_has_missing else X, 'W': W_missing if W_has_missing else W}\n    if include_Z:\n        data_dict['Z'] = Z\n\n    return data_dict\n\n\nclass OrthoLearner(_OrthoLearner):\n    def _gen_ortho_learner_model_nuisance(self):\n        return ModelNuisance(\n            make_pipeline(SimpleImputer(strategy='mean'), LinearRegression()),\n            make_pipeline(SimpleImputer(strategy='mean'), LinearRegression())\n        )\n\n    def _gen_ortho_learner_model_final(self):\n        return ModelFinal()\n\n\nclass TestMissing(unittest.TestCase):\n\n    def test_missing(self):\n        # create data with missing values\n        np.random.seed(123)\n        X = np.random.normal(size=(1000, 1))\n        W = np.random.normal(size=(1000, 5))\n        T = X[:, 0] + np.random.normal(size=(1000,))\n        y = (1 + 0.5 * X[:, 0]) * T + X[:, 0] + np.random.normal(size=(1000,))\n        mask = np.random.rand(*W.shape) < 0.05\n        W_missing = W.copy()\n        W_missing[mask] = np.nan\n        groups = np.repeat(np.arange(500), 2)  # groups for dynamic dml\n\n        # model that can handle missing values\n        nuisance_model = make_pipeline(SimpleImputer(strategy='mean'), LinearRegression())\n        OrthoLearner(discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None,\n                     discrete_instrument=None, categories='auto', cv=3, random_state=1,\n                     allow_missing=True).fit(y, T, W=W_missing)\n\n        CausalForestDML(model_y=nuisance_model, model_t=nuisance_model,\n                        allow_missing=True).fit(y, T, X=X, W=W_missing)\n\n        DynamicDML(model_y=nuisance_model, model_t=nuisance_model,\n                   allow_missing=True).fit(y, T, W=W_missing, groups=groups)\n\n        LinearDML(model_y=nuisance_model, model_t=nuisance_model,\n                  allow_missing=True).dowhy.fit(y, T, X=X, W=W_missing)\n\n    def test_missing2(self):\n        n = 100\n        np.random.seed(123)\n        X = np.random.normal(size=(n, 1))\n        W = np.random.normal(size=(n, 5))\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0] + np.random.normal(size=(n,))))\n        y = (1 + 0.5 * X[:, 0]) * T + X[:, 0] + np.random.normal(size=(n,))\n        mask = np.random.rand(*W.shape) < 0.05\n        W_missing = W.copy()\n        W_missing[mask] = np.nan\n        mask = np.random.rand(*X.shape) < 0.05\n        X_missing = X.copy()\n        X_missing[mask] = np.nan\n        Z = np.random.binomial(1, 0.5, size=(n,))\n\n        clsf = make_pipeline(SimpleImputer(strategy='mean'), LogisticRegression())\n        regr = make_pipeline(SimpleImputer(strategy='mean'), LinearRegression())\n        model_final = make_pipeline(SimpleImputer(strategy='mean'), LinearRegression())\n        param_model_final = ParametricModelFinalForMissing(make_pipeline(\n            SimpleImputer(strategy='mean'), StatsModelsLinearRegression(fit_intercept=False)))\n        non_param_model_final = NonParamModelFinal(make_pipeline(SimpleImputer(strategy='mean'), Lasso()))\n        non_param_model_final_t = NonParamModelFinal(make_pipeline(\n            SimpleImputer(strategy='mean'), LogisticRegression()))\n        discrete_treatment = True\n        discrete_instrument = True\n\n        # test X, W only\n        x_w_missing_models = [\n            NonParamDML(model_y=regr, model_t=clsf, model_final=non_param_model_final,\n                        discrete_treatment=discrete_treatment, allow_missing=True),\n            DML(model_y=regr, model_t=clsf, discrete_treatment=discrete_treatment,\n                model_final=param_model_final, allow_missing=True),\n            DMLIV(model_y_xw=regr, model_t_xw=clsf, model_t_xwz=clsf,\n                  model_final=param_model_final, discrete_treatment=discrete_treatment,\n                  discrete_instrument=discrete_instrument, allow_missing=True),\n            NonParamDMLIV(model_y_xw=regr, model_t_xw=clsf, model_t_xwz=clsf,\n                          model_final=non_param_model_final, discrete_treatment=discrete_treatment,\n                          discrete_instrument=discrete_instrument, allow_missing=True),\n            DRLearner(model_propensity=clsf, model_regression=regr,\n                      model_final=param_model_final, allow_missing=True)\n        ]\n\n        # test W only\n        w_missing_models = [\n            DRIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf, model_tz_xw=regr,\n                 discrete_treatment=discrete_treatment, discrete_instrument=discrete_instrument,\n                 prel_cate_approach='driv', projection=False, allow_missing=True),\n            DRIV(model_y_xw=regr, model_t_xw=clsf, model_t_xwz=clsf, model_tz_xw=regr,\n                 discrete_treatment=discrete_treatment, discrete_instrument=discrete_instrument,\n                 prel_cate_approach='driv', projection=True, allow_missing=True),\n            DRIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf, model_t_xwz=clsf, model_tz_xw=regr,\n                 discrete_treatment=discrete_treatment, discrete_instrument=discrete_instrument,\n                 prel_cate_approach='dmliv', projection=False, allow_missing=True),\n            DRIV(model_y_xw=regr, model_t_xw=clsf, model_t_xwz=clsf, model_tz_xw=regr,\n                 discrete_treatment=discrete_treatment, discrete_instrument=discrete_instrument,\n                 prel_cate_approach='dmliv', projection=True, allow_missing=True),\n            IntentToTreatDRIV(model_y_xw=regr, model_t_xwz=clsf, prel_cate_approach='driv',\n                              model_final=model_final, allow_missing=True),\n            IntentToTreatDRIV(model_y_xw=regr, model_t_xwz=clsf, prel_cate_approach='dmliv',\n                              model_final=model_final, allow_missing=True),\n            LinearDML(model_y=regr, model_t=clsf, discrete_treatment=True, allow_missing=True),\n            SparseLinearDML(model_y=regr, model_t=clsf, discrete_treatment=True, allow_missing=True),\n            KernelDML(model_y=regr, model_t=clsf, discrete_treatment=True, allow_missing=True),\n            CausalForestDML(model_y=regr, model_t=clsf, discrete_treatment=True, allow_missing=True),\n            LinearDRLearner(model_propensity=clsf, model_regression=regr, allow_missing=True),\n            SparseLinearDRLearner(model_propensity=clsf, model_regression=regr, allow_missing=True),\n            ForestDRLearner(model_propensity=clsf, model_regression=regr, allow_missing=True),\n            OrthoIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf,\n                    discrete_treatment=True, discrete_instrument=True, allow_missing=True),\n            LinearDRIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf, model_tz_xw=regr,\n                       prel_cate_approach='driv', discrete_treatment=True, discrete_instrument=True,\n                       allow_missing=True),\n            SparseLinearDRIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf, model_tz_xw=regr,\n                             prel_cate_approach='driv', discrete_treatment=True, discrete_instrument=True,\n                             allow_missing=True),\n            ForestDRIV(model_y_xw=regr, model_t_xw=clsf, model_z_xw=clsf, model_tz_xw=regr,\n                       prel_cate_approach='driv', discrete_treatment=True, discrete_instrument=True,\n                       allow_missing=True),\n            LinearIntentToTreatDRIV(model_y_xw=regr, model_t_xwz=clsf,\n                                    prel_cate_approach='driv', allow_missing=True),\n            DMLOrthoForest(model_T=clsf, model_Y=regr, model_T_final=non_param_model_final_t,\n                           model_Y_final=non_param_model_final, discrete_treatment=True, allow_missing=True),\n            DROrthoForest(propensity_model=clsf, model_Y=regr, propensity_model_final=non_param_model_final_t,\n                          model_Y_final=non_param_model_final, allow_missing=True),\n        ]\n\n        metalearners = [\n            SLearner(overall_model=regr, allow_missing=True),\n            TLearner(models=regr, allow_missing=True),\n            XLearner(models=regr, propensity_model=clsf, cate_models=regr, allow_missing=True),\n            DomainAdaptationLearner(models=regr, final_models=regr,\n                                    propensity_model=clsf, allow_missing=True)\n        ]\n\n        for est in x_w_missing_models:\n            with self.subTest(est=type(est).__name__,\n                              projection=getattr(est, 'projection', None),\n                              prel_cate_approach=getattr(est, 'prel_cate_approach', None),\n                              kind='missing X and W'):\n\n                if 'Z' in inspect.getfullargspec(est.fit).kwonlyargs:\n                    include_Z = True\n                else:\n                    include_Z = False\n\n                data_dict = create_data_dict(y, T, X, X_missing, W, W_missing, Z,\n                                             X_has_missing=True, W_has_missing=True, include_Z=include_Z)\n                est.fit(**data_dict)\n                # test that we allow missing in X when calling effects\n                est.effect(X_missing)\n                est.const_marginal_effect(X_missing)\n                est.marginal_effect(T, X_missing)\n\n                # test inference for parametric ests\n                if not isinstance(est, (NonParamDMLIV, NonParamDML, DMLIV)):\n                    est.effect_interval(X_missing)\n                    est.const_marginal_effect_interval(X_missing)\n\n                # dowhy does not support missing values in X\n                self.assertRaises(ValueError, est.dowhy.fit, **data_dict)\n\n                # assert that fitting with missing values fails when allow_missing is False\n                # and that setting allow_missing after init still works\n                est.allow_missing = False\n                self.assertRaises(ValueError, est.fit, **data_dict)\n                self.assertRaises(ValueError, est.dowhy.fit, **data_dict)\n\n        for est in w_missing_models:\n            with self.subTest(est=type(est).__name__,\n                              projection=getattr(est, 'projection', None),\n                              prel_cate_approach=getattr(est, 'prel_cate_approach', None),\n                              kind='missing W'):\n\n                if 'Z' in inspect.getfullargspec(est.fit).kwonlyargs:\n                    include_Z = True\n                else:\n                    include_Z = False\n\n                data_dict = create_data_dict(y, T, X, X_missing, W, W_missing, Z,\n                                             X_has_missing=False, W_has_missing=True, include_Z=include_Z)\n                est.fit(**data_dict)\n                est.effect(X)\n                est.dowhy.fit(**data_dict)\n\n                # assert that we fail with a value error when we pass missing X to a model that doesn't support it\n                data_dict_to_fail = create_data_dict(y, T, X, X_missing, W, W_missing, Z,\n                                                     X_has_missing=True, W_has_missing=True, include_Z=include_Z)\n                self.assertRaises(ValueError, est.fit, **data_dict_to_fail)\n                self.assertRaises(ValueError, est.dowhy.fit, **data_dict_to_fail)\n\n                # assert that fitting with missing values fails when allow_missing is False\n                # and that setting allow_missing after init still works\n                est.allow_missing = False\n                self.assertRaises(ValueError, est.fit, **data_dict)\n                self.assertRaises(ValueError, est.dowhy.fit, **data_dict)\n\n        for est in metalearners:\n            with self.subTest(est=type(est).__name__,\n                              projection=getattr(est, 'projection', None),\n                              prel_cate_approach=getattr(est, 'prel_cate_approach', None),\n                              kind='metalearner'):\n\n                data_dict = create_data_dict(y, T, X, X_missing, W, W_missing, Z,\n                                             X_has_missing=True, W_has_missing=False, include_Z=False)\n                # metalearners don't support W\n                data_dict.pop('W')\n\n                # metalearners do support missing values in X\n                est.fit(**data_dict)\n\n                # test inference with missing\n                est.effect(X_missing)\n                est.const_marginal_effect(X_missing)\n                est.marginal_effect(T, X_missing)\n\n                # dowhy never supports missing values in X\n                self.assertRaises(ValueError, est.dowhy.fit, **data_dict)\n"
  },
  {
    "path": "econml/tests/test_model_selection.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\nimport numpy as np\nfrom scipy.special import expit\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.linear_model import (ElasticNetCV, Lasso, LassoCV, LinearRegression, LogisticRegression,\n                                  LogisticRegressionCV, MultiTaskElasticNetCV, MultiTaskLassoCV,\n                                  RidgeCV, RidgeClassifierCV)\nfrom sklearn.model_selection import GridSearchCV, RandomizedSearchCV\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom econml.dml import LinearDML\nfrom econml.sklearn_extensions.linear_model import WeightedLassoCVWrapper\nfrom econml.utilities import SeparateModel\nfrom econml.dr import LinearDRLearner\n\n\nclass TestModelSelection(unittest.TestCase):\n\n    def _simple_dgp(self, n, d_x, d_w, discrete_treatment):\n        n = 500  # keep the data set small since we're testing a lot of models and don't care about the results\n        X = np.random.normal(size=(n, d_x))\n        W = np.random.normal(size=(n, d_w))\n        alpha = np.random.normal(size=(X.shape[1]))\n        n_f = d_w + d_x\n        beta = np.random.normal(size=(n_f,))\n        gamma = np.random.normal(size=(n_f,))\n        XW = np.hstack([X, W])\n        if discrete_treatment:\n            T = np.random.binomial(1, expit(XW @ beta))\n        else:\n            T = XW @ beta + np.random.normal(size=(n,))\n        Y = (X @ alpha) * T + XW @ gamma + np.random.normal(size=(n,))\n        return Y, T, X, W\n\n    def test_poly(self):\n        # tests that we can recover the right degree of polynomial features\n        # implicitly also tests ability to handle pipelines\n        # since 'poly' uses pipelines containing PolynomialFeatures\n        n = 5000\n        X = np.random.normal(size=(n, 2))\n        W = np.random.normal(size=(n, 3))\n\n        for true_d in range(1, 4):\n            with self.subTest(true_d=true_d):\n                pf = PolynomialFeatures(degree=true_d)\n\n                fts = pf.fit_transform(np.hstack([X, W]))\n                k = fts.shape[1]\n                m = X.shape[1] + W.shape[1]\n\n                alpha_x = np.random.normal(size=(X.shape[1],))\n                alpha_1 = np.random.normal(size=())\n                beta = np.random.normal(size=(k,))\n                gamma = np.random.normal(size=(k,))\n\n                # generate larger coefficients in a set of high degree features,\n                # weighted towards higher degree features\n                ft_inds_beta = np.random.choice(k, size=m, replace=False, p=np.arange(k) / np.sum(np.arange(k)))\n                ft_inds_gamma = np.random.choice(k, size=m, replace=False, p=np.arange(k) / np.sum(np.arange(k)))\n\n                beta[ft_inds_beta] = 10 * np.random.normal(1, size=(m,))\n                gamma[ft_inds_gamma] = 10 * np.random.normal(1, size=(m,))\n\n                t = np.random.normal(size=(n,)) + fts @ beta + np.random.normal(scale=0.5, size=(n,))\n                y = np.random.normal(size=(n,)) + t * (alpha_1 + X @ alpha_x) + fts @ gamma\n\n                # just test a polynomial T model, since for Y the correct degree also depends on\n                # the interation of T and X\n                mdl = LinearDML(model_t='poly',\n                                model_y=LinearRegression()).fit(y, t, X=X, W=W)\n                for t in mdl.models_t[0]:\n                    self.assertEqual(t[0].degree, true_d)\n\n    def test_all_strings(self):\n        for discrete_treatment in [True, False]:\n            Y, T, X, W = self._simple_dgp(500, 2, 3, discrete_treatment)\n            for model_t in ['auto', 'linear', 'poly', 'forest', 'gbf', 'nnet', 'automl']:\n                with self.subTest(model_t=model_t, discrete_treatment=discrete_treatment):\n                    mdl = LinearDML(model_t=model_t,\n                                    discrete_treatment=discrete_treatment,\n                                    model_y=LinearRegression())\n                    mdl.fit(Y, T, X=X, W=W)\n\n            model_t = 'some_random_string'\n            with self.subTest(model_t=model_t, discrete_treatment=True):\n                mdl = LinearDML(model_t=model_t,\n                                discrete_treatment=discrete_treatment,\n                                model_y=LinearRegression())\n                with self.assertRaises(ValueError):\n                    mdl.fit(Y, T, X=X, W=W)\n\n    def test_list_selection(self):\n        Y, T, X, W = self._simple_dgp(500, 2, 3, False)\n\n        # test corner case with just one model in a list\n        mdl = LinearDML(model_t=[LinearRegression()],\n                        model_y=LinearRegression())\n        mdl.fit(Y, T, X=X, W=W)\n\n        # test corner case with empty list\n        with self.assertRaises(Exception):\n            mdl = LinearDML(model_t=[],\n                            model_y=LinearRegression())\n            mdl.fit(Y, T, X=X, W=W)\n\n        # test selecting between two fixed models\n        mdl = LinearDML(model_t=[LinearRegression(), RandomForestRegressor()],\n                        model_y=LinearRegression())\n        mdl.fit(Y, T, X=X, W=W)\n        # DGP is a linear model, so linear regression should fit better\n        assert isinstance(mdl.models_t[0][0], LinearRegression)\n\n        T2 = T + 10 * (X[:, 1] > 0)  # add a non-linear effect\n        mdl.fit(Y, T2, X=X, W=W)\n        # DGP is now non-linear, so random forest should fit better\n        assert isinstance(mdl.models_t[0][0], RandomForestRegressor)\n\n    def test_sklearn_model_selection(self):\n        for is_discrete, mdls in [(True, [LogisticRegressionCV(), RidgeClassifierCV(),\n                                          GridSearchCV(LogisticRegression(), {'C': [1, 10]}),\n                                          RandomizedSearchCV(LogisticRegression(), {'C': [1, 10]})]),\n                                  (False, [ElasticNetCV(), LassoCV(), RidgeCV(),\n                                           MultiTaskElasticNetCV(), MultiTaskLassoCV(), WeightedLassoCVWrapper(),\n                                           GridSearchCV(Lasso(), {'alpha': [0.1, 1]}),\n                                           RandomizedSearchCV(Lasso(), {'alpha': [0.1, 1]})])]:\n            Y, T, X, W = self._simple_dgp(500, 2, 3, is_discrete)\n            T2 = np.tile(T.reshape(-1, 1), (1, 2))  # multi-column T\n            for mdl in mdls:\n                # these models only work on multi-output data\n                use_array = isinstance(mdl, (MultiTaskElasticNetCV, MultiTaskLassoCV))\n                with self.subTest(model=type(mdl).__name__):\n                    est = LinearDML(model_t=mdl,\n                                    discrete_treatment=is_discrete,\n                                    model_y=LinearRegression())\n                    est.fit(Y, T2 if use_array else T, X=X, W=W)\n\n    def test_fixed_model_scoring(self):\n        Y, T, X, W = self._simple_dgp(500, 2, 3, True)\n\n        # SeparatedModel doesn't support scoring; that should be fine when not compared to other models\n        mdl = LinearDRLearner(model_regression=SeparateModel(LassoCV(), LassoCV()),\n                              model_propensity=LogisticRegressionCV())\n        mdl.fit(Y, T, X=X, W=W)\n\n        # on the other hand, when we need to compare the score to other models, it should raise an error\n        with self.assertRaises(Exception):\n            mdl = LinearDRLearner(model_regression=[SeparateModel(LassoCV(), LassoCV()), Lasso()],\n                                  model_propensity=LogisticRegressionCV())\n            mdl.fit(Y, T, X=X, W=W)\n"
  },
  {
    "path": "econml/tests/test_montecarlo.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\r\nimport unittest\r\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\r\nfrom econml.dml import (DML, LinearDML, SparseLinearDML, KernelDML, NonParamDML, CausalForestDML)\r\nfrom econml.dr import (DRLearner, LinearDRLearner, SparseLinearDRLearner, ForestDRLearner)\r\nfrom econml.iv.dml import OrthoIV, DMLIV, NonParamDMLIV\r\nfrom econml.iv.dr import (IntentToTreatDRIV, LinearIntentToTreatDRIV)\r\nimport numpy as np\r\n\r\n\r\nclass TestMonteCarlo(unittest.TestCase):\r\n\r\n    def test_montecarlo(self):\r\n        \"\"\"Test that we can perform nuisance averaging, and that it reduces the variance in a simple example.\"\"\"\r\n        y = np.random.normal(size=30) + [0, 1] * 15\r\n        T = np.random.normal(size=(30,)) + y\r\n        W = np.random.normal(size=(30, 3))\r\n        est1 = LinearDML(model_y=LinearRegression(), model_t=LinearRegression())\r\n        est2 = LinearDML(model_y=LinearRegression(), model_t=LinearRegression(), mc_iters=2)\r\n        est3 = LinearDML(model_y=LinearRegression(), model_t=LinearRegression(), mc_iters=2, mc_agg='median')\r\n        # Run ten experiments, recomputing the variance of 10 estimates of the effect in each experiment\r\n        v1s = [np.var([est1.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        v2s = [np.var([est2.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        v3s = [np.var([est3.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        # The average variance should be lower when using monte carlo iterations\r\n        assert np.mean(v2s) < np.mean(v1s)\r\n        assert np.mean(v3s) < np.mean(v1s)\r\n\r\n    def test_discrete_treatment(self):\r\n        \"\"\"Test that we can perform nuisance averaging, and that it reduces the variance in a simple example.\"\"\"\r\n        y = np.random.normal(size=30) + [0, 1] * 15\r\n        T = np.random.binomial(1, .5, size=(30,))\r\n        W = np.random.normal(size=(30, 3))\r\n        est1 = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(),\r\n                         discrete_treatment=True)\r\n        est2 = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(),\r\n                         discrete_treatment=True, mc_iters=2)\r\n        est3 = LinearDML(model_y=LinearRegression(), model_t=LogisticRegression(),\r\n                         discrete_treatment=True, mc_iters=2, mc_agg='median')\r\n        # Run ten experiments, recomputing the variance of 10 estimates of the effect in each experiment\r\n        v1s = [np.var([est1.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        v2s = [np.var([est2.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        v3s = [np.var([est3.fit(y, T, W=W).effect() for _ in range(10)]) for _ in range(10)]\r\n        # The average variance should be lower when using monte carlo iterations\r\n        assert np.mean(v2s) < np.mean(v1s)\r\n        assert np.mean(v3s) < np.mean(v1s)\r\n\r\n    def test_parameter_passing(self):\r\n        for gen in [DML, NonParamDML]:\r\n            est = gen(model_y=LinearRegression(), model_t=LinearRegression(),\r\n                      model_final=LinearRegression(),\r\n                      mc_iters=2, mc_agg='median')\r\n            assert est.mc_iters == 2\r\n            assert est.mc_agg == 'median'\r\n        for gen in [LinearDML, SparseLinearDML, KernelDML, CausalForestDML]:\r\n            est = gen(model_y=LinearRegression(), model_t=LinearRegression(),\r\n                      mc_iters=2, mc_agg='median')\r\n            assert est.mc_iters == 2\r\n            assert est.mc_agg == 'median'\r\n        for gen in [DRLearner, LinearDRLearner, SparseLinearDRLearner, ForestDRLearner]:\r\n            est = gen(mc_iters=2, mc_agg='median')\r\n            assert est.mc_iters == 2\r\n            assert est.mc_agg == 'median'\r\n        for gen in [OrthoIV(model_y_xw=LinearRegression(),\r\n                            model_t_xw=LinearRegression(),\r\n                            model_z_xw=LinearRegression(), mc_iters=2, mc_agg='median'),\r\n                    DMLIV(model_y_xw=LinearRegression(),\r\n                          model_t_xw=LinearRegression(),\r\n                          model_t_xwz=LinearRegression(),\r\n                          model_final=LinearRegression(), mc_iters=2, mc_agg='median'),\r\n                    NonParamDMLIV(model_y_xw=LinearRegression(),\r\n                                  model_t_xw=LinearRegression(),\r\n                                  model_t_xwz=LinearRegression(),\r\n                                  model_final=LinearRegression(), mc_iters=2, mc_agg='median'),\r\n                    IntentToTreatDRIV(model_y_xw=LinearRegression(),\r\n                                      model_t_xwz=LinearRegression(),\r\n                                      flexible_model_effect=LinearRegression(), mc_iters=2, mc_agg='median'),\r\n                    LinearIntentToTreatDRIV(model_y_xw=LinearRegression(),\r\n                                            model_t_xwz=LinearRegression(),\r\n                                            flexible_model_effect=LinearRegression(),\r\n                                            mc_iters=2, mc_agg='median')]:\r\n            assert est.mc_iters == 2\r\n            assert est.mc_agg == 'median'\r\n"
  },
  {
    "path": "econml/tests/test_notebooks.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport re\nimport pytest\nimport html\nimport os\n\n_nbdir = os.path.join(os.path.dirname(__file__), '..', '..', 'notebooks')\n_maindir = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..'))\n\n_nbsubdirs = ['.', 'CustomerScenarios', 'Solutions']  # TODO: add AutoML notebooks\n\n# filter directories by regex if the NOTEBOOK_DIR_PATTERN environment variable is set\n_nbsubdirs = [d for d in _nbsubdirs if re.match(os.getenv('NOTEBOOK_DIR_PATTERN', '.*'), d)]\n\n_notebooks = [\n    os.path.join(subdir, path)\n    for subdir in _nbsubdirs\n    for path in os.listdir(os.path.join(_nbdir, subdir))\n    if path.endswith('.ipynb')]\n# omit the lalonde notebook\n_notebooks = [nb for nb in _notebooks if \"Lalonde\" not in nb]\n\n\n@pytest.mark.parametrize(\"file\", _notebooks)\n@pytest.mark.notebook\ndef test_notebook(file):\n    import nbformat\n    import nbconvert\n\n    nb = nbformat.read(os.path.join(_nbdir, file), as_version=4)\n\n    # require all cells to complete within 15 minutes, which will help prevent us from\n    # creating notebooks that are annoying for our users to actually run themselves\n    ep = nbconvert.preprocessors.ExecutePreprocessor(\n        timeout=1800, allow_errors=True)\n\n    ep.preprocess(nb, {'metadata': {'path': '.'}})\n\n    output_file = os.path.join(_nbdir, 'output', file)\n    # create directory if necessary\n    os.makedirs(os.path.dirname(output_file), exist_ok=True)\n    nbformat.write(nb, output_file, version=4)\n\n    errors = [nbconvert.preprocessors.CellExecutionError.from_cell_and_msg(cell, output)\n              for cell in nb.cells if \"outputs\" in cell\n              for output in cell[\"outputs\"]\n              if output.output_type == \"error\"]\n    if errors:\n        err_str = \"\\n\".join(html.unescape(str(err)) for err in errors)\n        raise AssertionError(\"Encountered {0} exception(s):\\n{1}\".format(len(errors), err_str))\n"
  },
  {
    "path": "econml/tests/test_orf.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport unittest\nimport warnings\nfrom numpy.random import choice, normal, uniform\nfrom sklearn.linear_model import Lasso, LogisticRegression, LogisticRegressionCV\nfrom sklearn.multioutput import MultiOutputRegressor\nfrom econml.orf import DMLOrthoForest, DROrthoForest\nfrom econml.sklearn_extensions.linear_model import WeightedLassoCVWrapper\n\n\nclass TestOrthoForest(unittest.TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        np.random.seed(123)\n        # DGP constants\n        cls.n = 2000\n        cls.d_w = 5\n        cls.support_size = 1\n        cls.d_x = 1\n        cls.epsilon_sample = lambda n: uniform(-1, 1, size=n)\n        cls.eta_sample = lambda n: uniform(-1, 1, size=n)\n        cls.support = choice(range(cls.d_w), size=cls.support_size, replace=False)\n        cls.coefs_T = uniform(0, 1, size=cls.support_size)\n        cls.coefs_Y = uniform(0, 1, size=cls.support_size)\n        # Generate data\n        cls.X = uniform(0, 1, size=(cls.n, cls.d_x))\n        cls.W = normal(0, 1, size=(cls.n, cls.d_w))\n        # Test data\n        cls.x_test = normal(0, 1, size=(10, cls.d_x))\n        cls.x_test[:, 0] = np.arange(0, 1, 0.1)\n        cls.expected_exp_te = np.array([cls._exp_te(x) for x in TestOrthoForest.x_test])\n        cls.expected_const_te = np.array([cls._const_te(x) for x in TestOrthoForest.x_test])\n        # Remove warnings that might be raised by the models passed into the ORF\n        warnings.filterwarnings(\"ignore\")\n\n    def test_continuous_treatments(self):\n        np.random.seed(123)\n        for global_residualization in [False, True]:\n            # Generate data with continuous treatments\n            T = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_T) + \\\n                TestOrthoForest.eta_sample(TestOrthoForest.n)\n            TE = np.array([self._exp_te(x) for x in TestOrthoForest.X])\n            Y = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_Y) + \\\n                T * TE + TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n            # Instantiate model with most of the default parameters. Using n_jobs=1 since code coverage\n            # does not work well with parallelism.\n            est = DMLOrthoForest(n_jobs=1, n_trees=10,\n                                 model_T=Lasso(),\n                                 model_Y=Lasso(),\n                                 model_T_final=WeightedLassoCVWrapper(),\n                                 model_Y_final=WeightedLassoCVWrapper(),\n                                 global_residualization=global_residualization)\n            # Test inputs for continuous treatments\n            # --> Check that one can pass in regular lists\n            est.fit(list(Y), list(T), X=list(TestOrthoForest.X), W=list(TestOrthoForest.W))\n            # --> Check that it fails correctly if lists of different shape are passed in\n            self.assertRaises(ValueError, est.fit, Y[:TestOrthoForest.n // 2], T[:TestOrthoForest.n // 2],\n                              X=TestOrthoForest.X, W=TestOrthoForest.W)\n            # Check that outputs have the correct shape\n            out_te = est.const_marginal_effect(TestOrthoForest.x_test)\n            self.assertEqual(TestOrthoForest.x_test.shape[0], out_te.shape[0])\n            # Test continuous treatments with controls\n            est = DMLOrthoForest(n_trees=100, min_leaf_size=10,\n                                 max_depth=50, subsample_ratio=0.50, bootstrap=False, n_jobs=1,\n                                 model_T=Lasso(alpha=0.024),\n                                 model_Y=Lasso(alpha=0.024),\n                                 model_T_final=WeightedLassoCVWrapper(cv=5),\n                                 model_Y_final=WeightedLassoCVWrapper(cv=5),\n                                 global_residualization=global_residualization,\n                                 global_res_cv=5)\n            est.fit(Y, T, X=TestOrthoForest.X, W=TestOrthoForest.W, inference=\"blb\")\n            self._test_te(est, TestOrthoForest.expected_exp_te, tol=0.5)\n            self._test_ci(est, TestOrthoForest.expected_exp_te, tol=1.5)\n            # Test continuous treatments without controls\n            T = TestOrthoForest.eta_sample(TestOrthoForest.n)\n            Y = T * TE + TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n            est.fit(Y, T, X=TestOrthoForest.X, inference=\"blb\")\n            self._test_te(est, TestOrthoForest.expected_exp_te, tol=0.5)\n            self._test_ci(est, TestOrthoForest.expected_exp_te, tol=1.5)\n\n    def test_binary_treatments(self):\n        np.random.seed(123)\n        # Generate data with binary treatments\n        log_odds = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_T) + \\\n            TestOrthoForest.eta_sample(TestOrthoForest.n)\n        T_sigmoid = 1 / (1 + np.exp(-log_odds))\n        T = np.array([np.random.binomial(1, p) for p in T_sigmoid])\n        TE = np.array([self._exp_te(x) for x in TestOrthoForest.X])\n        Y = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_Y) + \\\n            T * TE + TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n        # Instantiate model with default params. Using n_jobs=1 since code coverage\n        # does not work well with parallelism.\n        est = DROrthoForest(n_trees=10, n_jobs=1,\n                            propensity_model=LogisticRegression(), model_Y=Lasso(),\n                            propensity_model_final=LogisticRegressionCV(penalty='l1', solver='saga'),\n                            model_Y_final=WeightedLassoCVWrapper())\n        # Test inputs for binary treatments\n        # --> Check that one can pass in regular lists\n        est.fit(list(Y), list(T), X=list(TestOrthoForest.X), W=list(TestOrthoForest.W))\n        # --> Check that it fails correctly if lists of different shape are passed in\n        self.assertRaises(ValueError, est.fit, Y[:TestOrthoForest.n // 2], T[:TestOrthoForest.n // 2],\n                          X=TestOrthoForest.X, W=TestOrthoForest.W)\n        # --> Check that it works when T, Y have shape (n, 1)\n        est.fit(Y.reshape(-1, 1), T.reshape(-1, 1), X=TestOrthoForest.X, W=TestOrthoForest.W)\n        # --> Check that it fails correctly when T has shape (n, 2)\n        self.assertRaises(ValueError, est.fit, Y, np.ones((TestOrthoForest.n, 2)),\n                          X=TestOrthoForest.X, W=TestOrthoForest.W)\n        # --> Check that it fails correctly when the treatments are not numeric\n        self.assertRaises(ValueError, est.fit, Y, np.array([\"a\"] * TestOrthoForest.n),\n                          X=TestOrthoForest.X, W=TestOrthoForest.W)\n        # Check that outputs have the correct shape\n        out_te = est.const_marginal_effect(TestOrthoForest.x_test)\n        self.assertSequenceEqual((TestOrthoForest.x_test.shape[0], 1, 1), out_te.shape)\n        # Test binary treatments with controls\n        est = DROrthoForest(n_trees=100, min_leaf_size=10,\n                            max_depth=30, subsample_ratio=0.30, bootstrap=False, n_jobs=1,\n                            propensity_model=LogisticRegression(\n                                C=1 / 0.024, penalty='l1', solver='saga'),\n                            model_Y=Lasso(alpha=0.024),\n                            propensity_model_final=LogisticRegressionCV(penalty='l1', solver='saga'),\n                            model_Y_final=WeightedLassoCVWrapper())\n        est.fit(Y, T, X=TestOrthoForest.X, W=TestOrthoForest.W, inference=\"blb\")\n        self._test_te(est, TestOrthoForest.expected_exp_te, tol=0.7, treatment_type='discrete')\n        self._test_ci(est, TestOrthoForest.expected_exp_te, tol=1.5, treatment_type='discrete')\n        # Test binary treatments without controls\n        log_odds = TestOrthoForest.eta_sample(TestOrthoForest.n)\n        T_sigmoid = 1 / (1 + np.exp(-log_odds))\n        T = np.array([np.random.binomial(1, p) for p in T_sigmoid])\n        Y = T * TE + TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n        est.fit(Y, T, X=TestOrthoForest.X, inference=\"blb\")\n        self._test_te(est, TestOrthoForest.expected_exp_te, tol=0.5, treatment_type='discrete')\n        self._test_ci(est, TestOrthoForest.expected_exp_te, tol=1.5, treatment_type='discrete')\n\n    def test_multiple_treatments(self):\n        np.random.seed(123)\n        # Only applicable to continuous treatments\n        # Generate data for 2 treatments\n        TE = np.array([[TestOrthoForest._exp_te(x), TestOrthoForest._const_te(x)] for x in TestOrthoForest.X])\n        coefs_T = uniform(0, 1, size=(TestOrthoForest.support_size, 2))\n        T = np.matmul(TestOrthoForest.W[:, TestOrthoForest.support], coefs_T) + \\\n            uniform(-1, 1, size=(TestOrthoForest.n, 2))\n        delta_Y = np.array([np.dot(TE[i], T[i]) for i in range(TestOrthoForest.n)])\n        Y = delta_Y + np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_Y) + \\\n            TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n        for global_residualization in [False, True]:\n            # Test multiple treatments with controls\n            est = DMLOrthoForest(n_trees=100, min_leaf_size=10,\n                                 max_depth=50, subsample_ratio=0.50, bootstrap=False, n_jobs=1,\n                                 model_T=MultiOutputRegressor(Lasso(alpha=0.024)),\n                                 model_Y=Lasso(alpha=0.024),\n                                 model_T_final=WeightedLassoCVWrapper(cv=5),\n                                 model_Y_final=WeightedLassoCVWrapper(cv=5),\n                                 global_residualization=global_residualization,\n                                 global_res_cv=5)\n            est.fit(Y, T, X=TestOrthoForest.X, W=TestOrthoForest.W, inference=\"blb\")\n            expected_te = np.array([TestOrthoForest.expected_exp_te, TestOrthoForest.expected_const_te]).T\n            self._test_te(est, expected_te, tol=0.5, treatment_type='multi')\n            self._test_ci(est, expected_te, tol=2.0, treatment_type='multi')\n\n    def test_effect_shape(self):\n        np.random.seed(123)\n        n = 40  # number of raw samples\n        d = 4  # number of binary features + 1\n\n        # Generating random segments aka binary features. We will use features 0,...,3 for heterogeneity.\n        # The rest for controls. Just as an example.\n        X = np.random.binomial(1, .5, size=(n, d))\n        # Generating A/B test data\n        T = np.random.binomial(2, .5, size=(n,))\n        # Generating an outcome with treatment effect heterogeneity. The first binary feature creates heterogeneity\n        # We also have confounding on the first variable. We also have heteroskedastic errors.\n        y = (-1 + 2 * X[:, 0]) * T + X[:, 0] + (1 * X[:, 0] + 1) * np.random.normal(0, 1, size=(n,))\n        from sklearn.dummy import DummyClassifier, DummyRegressor\n        est = DROrthoForest(n_trees=10,\n                            model_Y=DummyRegressor(strategy='mean'),\n                            propensity_model=DummyClassifier(strategy='prior'),\n                            n_jobs=1)\n        est.fit(y, T, X=X)\n        assert est.const_marginal_effect(X[:3]).shape == (3, 2), \"Const Marginal Effect dimension incorrect\"\n        assert est.marginal_effect(1, X[:3]).shape == (3, 2), \"Marginal Effect dimension incorrect\"\n        assert est.effect(X[:3]).shape == (3,), \"Effect dimension incorrect\"\n        assert est.effect(X[:3], T0=0, T1=2).shape == (3,), \"Effect dimension incorrect\"\n        assert est.effect(X[:3], T0=1, T1=2).shape == (3,), \"Effect dimension incorrect\"\n        lb, _ = est.effect_interval(X[:3], T0=1, T1=2)\n        assert lb.shape == (3,), \"Effect interval dimension incorrect\"\n        lb, _ = est.effect_inference(X[:3], T0=1, T1=2).conf_int()\n        assert lb.shape == (3,), \"Effect interval dimension incorrect\"\n        lb, _ = est.const_marginal_effect_interval(X[:3])\n        assert lb.shape == (3, 2), \"Const Marginal Effect interval dimension incorrect\"\n        lb, _ = est.const_marginal_effect_inference(X[:3]).conf_int()\n        assert lb.shape == (3, 2), \"Const Marginal Effect interval dimension incorrect\"\n        lb, _ = est.marginal_effect_interval(1, X[:3])\n        assert lb.shape == (3, 2), \"Marginal Effect interval dimension incorrect\"\n        lb, _ = est.marginal_effect_inference(1, X[:3]).conf_int()\n        assert lb.shape == (3, 2), \"Marginal Effect interval dimension incorrect\"\n        est.fit(y.reshape(-1, 1), T, X=X)\n        assert est.const_marginal_effect(X[:3]).shape == (3, 1, 2), \"Const Marginal Effect dimension incorrect\"\n        assert est.marginal_effect(1, X[:3]).shape == (3, 1, 2), \"Marginal Effect dimension incorrect\"\n        assert est.effect(X[:3]).shape == (3, 1), \"Effect dimension incorrect\"\n        assert est.effect(X[:3], T0=0, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n        assert est.effect(X[:3], T0=1, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n        lb, _ = est.effect_interval(X[:3], T0=1, T1=2)\n        assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n        lb, _ = est.effect_inference(X[:3], T0=1, T1=2).conf_int()\n        assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n        lb, _ = est.const_marginal_effect_interval(X[:3])\n        assert lb.shape == (3, 1, 2), \"Const Marginal Effect interval dimension incorrect\"\n        lb, _ = est.const_marginal_effect_inference(X[:3]).conf_int()\n        assert lb.shape == (3, 1, 2), \"Const Marginal Effect interval dimension incorrect\"\n        lb, _ = est.marginal_effect_interval(1, X[:3])\n        assert lb.shape == (3, 1, 2), \"Marginal Effect interval dimension incorrect\"\n        lb, _ = est.marginal_effect_inference(1, X[:3]).conf_int()\n        assert lb.shape == (3, 1, 2), \"Marginal Effect interval dimension incorrect\"\n\n        from sklearn.preprocessing import FunctionTransformer\n        from sklearn.dummy import DummyClassifier, DummyRegressor\n        for global_residualization in [False, True]:\n            for treatment_featurization in [None, FunctionTransformer()]:\n                est = DMLOrthoForest(n_trees=10, model_Y=DummyRegressor(strategy='mean'),\n                                     model_T=DummyRegressor(strategy='mean'),\n                                     global_residualization=global_residualization,\n                                     treatment_featurizer=treatment_featurization,\n                                     n_jobs=1)\n                est.fit(y.reshape(-1, 1), T.reshape(-1, 1), X=X)\n                assert est.const_marginal_effect(X[:3]).shape == (3, 1, 1), \"Const Marginal Effect dimension incorrect\"\n                assert est.marginal_effect(1, X[:3]).shape == (3, 1, 1), \"Marginal Effect dimension incorrect\"\n                assert est.effect(X[:3]).shape == (3, 1), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=0, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=1, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n                lb, _ = est.effect_interval(X[:3], T0=1, T1=2)\n                assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n                lb, _ = est.effect_inference(X[:3], T0=1, T1=2).conf_int()\n                assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_interval(X[:3])\n                assert lb.shape == (3, 1, 1), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_inference(X[:3]).conf_int()\n                assert lb.shape == (3, 1, 1), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_interval(1, X[:3])\n                assert lb.shape == (3, 1, 1), \"Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_inference(1, X[:3]).conf_int()\n                assert lb.shape == (3, 1, 1), \"Marginal Effect interval dimension incorrect\"\n                est.fit(y.reshape(-1, 1), T, X=X)\n                assert est.const_marginal_effect(X[:3]).shape == (3, 1), \"Const Marginal Effect dimension incorrect\"\n                assert est.marginal_effect(1, X[:3]).shape == (3, 1), \"Marginal Effect dimension incorrect\"\n                assert est.effect(X[:3]).shape == (3, 1), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=0, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=1, T1=2).shape == (3, 1), \"Effect dimension incorrect\"\n                lb, _ = est.effect_interval(X[:3], T0=1, T1=2)\n                assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n                lb, _ = est.effect_inference(X[:3], T0=1, T1=2).conf_int()\n                assert lb.shape == (3, 1), \"Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_interval(X[:3])\n                print(lb.shape)\n                assert lb.shape == (3, 1), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_inference(X[:3]).conf_int()\n                assert lb.shape == (3, 1), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_interval(1, X[:3])\n                assert lb.shape == (3, 1), \"Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_inference(1, X[:3]).conf_int()\n                assert lb.shape == (3, 1), \"Marginal Effect interval dimension incorrect\"\n                est.fit(y, T, X=X)\n                assert est.const_marginal_effect(X[:3]).shape == (3,), \"Const Marginal Effect dimension incorrect\"\n                assert est.marginal_effect(1, X[:3]).shape == (3,), \"Marginal Effect dimension incorrect\"\n                assert est.effect(X[:3]).shape == (3,), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=0, T1=2).shape == (3,), \"Effect dimension incorrect\"\n                assert est.effect(X[:3], T0=1, T1=2).shape == (3,), \"Effect dimension incorrect\"\n                lb, _ = est.effect_interval(X[:3], T0=1, T1=2)\n                assert lb.shape == (3,), \"Effect interval dimension incorrect\"\n                lb, _ = est.effect_inference(X[:3], T0=1, T1=2).conf_int()\n                assert lb.shape == (3,), \"Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_interval(X[:3])\n                assert lb.shape == (3,), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.const_marginal_effect_inference(X[:3]).conf_int()\n                assert lb.shape == (3,), \"Const Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_interval(1, X[:3])\n                assert lb.shape == (3,), \"Marginal Effect interval dimension incorrect\"\n                lb, _ = est.marginal_effect_inference(1, X[:3]).conf_int()\n                assert lb.shape == (3,), \"Marginal Effect interval dimension incorrect\"\n\n    def test_nuisance_model_has_weights(self):\n        \"\"\"Test whether the correct exception is being raised if model_final doesn't have weights.\"\"\"\n\n        # Create a wrapper around Lasso that doesn't support weights\n        # since Lasso does natively support them starting in sklearn 0.23\n        class NoWeightModel:\n            def __init__(self):\n                self.model = Lasso()\n\n            def fit(self, X, y):\n                self.model.fit(X, y)\n                return self\n\n            def predict(self, X):\n                return self.model.predict(X)\n\n        # Generate data with continuous treatments\n        T = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_T) + \\\n            TestOrthoForest.eta_sample(TestOrthoForest.n)\n        TE = np.array([self._exp_te(x) for x in TestOrthoForest.X])\n        Y = np.dot(TestOrthoForest.W[:, TestOrthoForest.support], TestOrthoForest.coefs_Y) + \\\n            T * TE + TestOrthoForest.epsilon_sample(TestOrthoForest.n)\n        # Instantiate model with most of the default parameters\n        est = DMLOrthoForest(n_jobs=1, n_trees=10,\n                             model_T=NoWeightModel(),\n                             model_Y=NoWeightModel())\n        est.fit(Y=Y, T=T, X=TestOrthoForest.X, W=TestOrthoForest.W)\n        weights_error_msg = (\n            \"Estimators of type {} do not accept weights. \"\n            \"Consider using the class WeightedModelWrapper from econml.utilities to build a weighted model.\"\n        )\n        self.assertRaisesRegex(TypeError, weights_error_msg.format(\"NoWeightModel\"),\n                               est.effect, X=TestOrthoForest.X)\n\n    def _test_te(self, learner_instance, expected_te, tol, treatment_type='continuous'):\n        # Compute the treatment effect on test points\n        te_hat = learner_instance.const_marginal_effect(\n            TestOrthoForest.x_test\n        )\n        # Compute treatment effect residuals\n        if treatment_type == 'continuous':\n            te_res = np.abs(expected_te - te_hat)\n        elif treatment_type == 'discrete':\n            te_res = np.abs(expected_te - te_hat[:, 0])\n        else:\n            # Multiple treatments\n            te_res = np.abs(expected_te - te_hat)\n        # Allow at most 10% test points to be outside of the tolerance interval\n        self.assertLessEqual(np.mean(te_res > tol), 0.2)\n\n    def _test_ci(self, learner_instance, expected_te, tol, treatment_type='continuous'):\n\n        for te_lower, te_upper in\\\n            [learner_instance.const_marginal_effect_interval(TestOrthoForest.x_test),\n             learner_instance.const_marginal_effect_inference(TestOrthoForest.x_test).conf_int()]:\n\n            # Compute treatment effect residuals\n            if treatment_type == 'continuous':\n                delta_ci_upper = te_upper - expected_te\n                delta_ci_lower = expected_te - te_lower\n            elif treatment_type == 'discrete':\n                delta_ci_upper = te_upper[:, 0] - expected_te\n                delta_ci_lower = expected_te - te_lower[:, 0]\n            else:\n                # Multiple treatments\n                delta_ci_upper = te_upper - expected_te\n                delta_ci_lower = expected_te - te_lower\n            # Allow at most 20% test points to be outside of the confidence interval\n            # Check that the intervals are not too wide\n            self.assertLessEqual(np.mean(delta_ci_upper < 0), 0.2)\n            self.assertLessEqual(np.mean(np.abs(delta_ci_upper) > tol), 0.2)\n            self.assertLessEqual(np.mean(delta_ci_lower < 0), 0.2)\n            self.assertLessEqual(np.mean(np.abs(delta_ci_lower) > tol), 0.2)\n\n    @classmethod\n    def _const_te(cls, x):\n        return 2\n\n    @classmethod\n    def _exp_te(cls, x):\n        return np.exp(x[0] * 2)\n"
  },
  {
    "path": "econml/tests/test_ortho_learner.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nfrom sklearn.datasets import make_regression\nfrom econml._ortho_learner import _OrthoLearner, _crossfit\nfrom sklearn.linear_model import LinearRegression, Lasso\nfrom sklearn.model_selection import KFold\nimport numpy as np\nimport unittest\nimport pytest\n\ntry:\n    import ray\n\n    ray_installed = True\nexcept ImportError:\n    ray_installed = False\n\n\nclass TestOrthoLearner(unittest.TestCase):\n\n    def _test_crossfit(self, use_ray):\n        class Wrapper:\n\n            def __init__(self, model):\n                self._model = model\n\n            def train(self, is_selecting, folds, X, y, Q, W=None):\n                self._model.fit(X, y)\n                return self\n\n            def predict(self, X, y, Q, W=None):\n                return self._model.predict(X), y - self._model.predict(X), X\n\n            def score(self, X, y, Q, W=None):\n                return self._model.score(X, y)\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = list(KFold(2).split(X, y))\n        model = Lasso(alpha=0.01)\n        ray_remote_function_option = {\"num_cpus\": 1}\n\n        nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                              ray_remote_function_option,\n                                                              X, y, y, Z=None)\n        np.testing.assert_allclose(nuisance[0][folds[0][1]],\n                                   model.fit(X[folds[0][0]], y[folds[0][0]]).predict(X[folds[0][1]]))\n        np.testing.assert_allclose(nuisance[0][folds[0][0]],\n                                   model.fit(X[folds[0][1]], y[folds[0][1]]).predict(X[folds[0][0]]))\n        np.testing.assert_allclose(scores[0][0], model.fit(X[folds[0][0]], y[folds[0][0]]).score(X[folds[0][1]],\n                                                                                                 y[folds[0][1]]))\n        np.testing.assert_allclose(scores[0][1], model.fit(X[folds[0][1]], y[folds[0][1]]).score(X[folds[0][0]],\n                                                                                                 y[folds[0][0]]))\n        coef_ = np.zeros(X.shape[1])\n        coef_[0] = 1\n        [np.testing.assert_allclose(coef_, mdl._model.coef_, rtol=0, atol=0.08) for mdl in model_list]\n        np.testing.assert_array_equal(fitted_inds, np.arange(X.shape[0]))\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = list(KFold(2).split(X, y))\n        model = Lasso(alpha=0.01)\n        nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                              ray_remote_function_option,\n                                                              X, y, y, Z=None)\n        np.testing.assert_allclose(nuisance[0][folds[0][1]],\n                                   model.fit(X[folds[0][0]], y[folds[0][0]]).predict(X[folds[0][1]]))\n        np.testing.assert_allclose(nuisance[0][folds[0][0]],\n                                   model.fit(X[folds[0][1]], y[folds[0][1]]).predict(X[folds[0][0]]))\n        np.testing.assert_allclose(scores[0][0], model.fit(X[folds[0][0]], y[folds[0][0]]).score(X[folds[0][1]],\n                                                                                                 y[folds[0][1]]))\n        np.testing.assert_allclose(scores[0][1], model.fit(X[folds[0][1]], y[folds[0][1]]).score(X[folds[0][0]],\n                                                                                                 y[folds[0][0]]))\n        coef_ = np.zeros(X.shape[1])\n        coef_[0] = 1\n        [np.testing.assert_allclose(coef_, mdl._model.coef_, rtol=0, atol=0.08) for mdl in model_list]\n        np.testing.assert_array_equal(fitted_inds, np.arange(X.shape[0]))\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = list(KFold(2).split(X, y))\n        model = Lasso(alpha=0.01)\n        nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                              ray_remote_function_option,\n                                                              X, y, y, Z=None)\n        np.testing.assert_allclose(nuisance[0][folds[0][1]],\n                                   model.fit(X[folds[0][0]], y[folds[0][0]]).predict(X[folds[0][1]]))\n        np.testing.assert_allclose(nuisance[0][folds[0][0]],\n                                   model.fit(X[folds[0][1]], y[folds[0][1]]).predict(X[folds[0][0]]))\n        np.testing.assert_allclose(scores[0][0], model.fit(X[folds[0][0]], y[folds[0][0]]).score(X[folds[0][1]],\n                                                                                                 y[folds[0][1]]))\n        np.testing.assert_allclose(scores[0][1], model.fit(X[folds[0][1]], y[folds[0][1]]).score(X[folds[0][0]],\n                                                                                                 y[folds[0][0]]))\n        coef_ = np.zeros(X.shape[1])\n        coef_[0] = 1\n        [np.testing.assert_allclose(coef_, mdl._model.coef_, rtol=0, atol=0.08) for mdl in model_list]\n        np.testing.assert_array_equal(fitted_inds, np.arange(X.shape[0]))\n\n        class Wrapper:\n\n            def __init__(self, model):\n                self._model = model\n\n            def train(self, is_selecting, folds, X, y, W=None):\n                self._model.fit(X, y)\n                return self\n\n            def predict(self, X, y, W=None):\n                return self._model.predict(X), y - self._model.predict(X), X\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = [(np.arange(X.shape[0] // 2), np.arange(X.shape[0] // 2, X.shape[0])),\n                 (np.arange(X.shape[0] // 2), np.arange(X.shape[0] // 2, X.shape[0]))]\n        model = Lasso(alpha=0.01)\n        with pytest.raises(AttributeError):\n            nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                                  ray_remote_function_option,\n                                                                  X, y, y, Z=None)\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = [(np.arange(X.shape[0] // 2), np.arange(X.shape[0] // 2, X.shape[0])),\n                 (np.arange(X.shape[0] // 2), np.arange(X.shape[0] // 2, X.shape[0]))]\n        model = Lasso(alpha=0.01)\n        with pytest.raises(AttributeError):\n            nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                                  ray_remote_function_option,\n                                                                  X, y, y, Z=None)\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\n        model = Lasso(alpha=0.01)\n        with pytest.raises(AttributeError):\n            nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                                  ray_remote_function_option,\n                                                                  X, y, y, Z=None)\n\n        np.random.seed(123)\n        X = np.random.normal(size=(5000, 3))\n        y = X[:, 0] + np.random.normal(size=(5000,))\n        folds = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\n        model = Lasso(alpha=0.01)\n        with pytest.raises(AttributeError):\n            nuisance, model_list, fitted_inds, scores = _crossfit(Wrapper(model), folds, use_ray,\n                                                                  ray_remote_function_option,\n                                                                  X, y, y, Z=None)\n\n    @pytest.mark.ray\n    def test_crossfit_with_ray(self):\n        try:\n            ray.init()\n            self._test_crossfit(use_ray=True)\n        finally:\n            ray.shutdown()\n\n    def test_crossfit_without_ray(self):\n        self._test_crossfit(use_ray=False)\n\n    @pytest.mark.ray\n    def test_crossfit_comparison(self):\n        try:\n            ray.init()  # Initialize Ray\n\n            class Wrapper:\n\n                def __init__(self, model):\n                    self._model = model\n\n                def train(self, is_selecting, folds, X, y, Q, W=None):\n                    self._model.fit(X, y)\n                    return self\n\n                def predict(self, X, y, Q, W=None):\n                    return self._model.predict(X), y - self._model.predict(X), X\n\n                def score(self, X, y, Q, W=None):\n                    return self._model.score(X, y)\n\n            # Generate synthetic data\n            X, y = make_regression(n_samples=10, n_features=5, noise=0.1, random_state=42)\n            folds = list(KFold(2).split(X, y))\n            model = LinearRegression()\n            ray_remote_function_option = {\"num_cpus\": 1}\n\n            # Run _crossfit with Ray enabled\n            nuisance_ray, model_list_ray, fitted_inds_ray, scores_ray = _crossfit(Wrapper(model), folds, True,\n                                                                                  ray_remote_function_option,\n                                                                                  X, y, y, Z=None)\n            # Run _crossfit without Ray\n            nuisance_regular, model_list_regular, fitted_inds_regular, scores_regular = _crossfit(Wrapper(model),\n                                                                                                  folds,\n                                                                                                  False, {},\n                                                                                                  X, y, y, Z=None)\n            # Compare the results\n            assert np.allclose(nuisance_ray[0], nuisance_regular[0])\n            assert np.allclose(nuisance_ray[1], nuisance_regular[1])\n            assert np.allclose(fitted_inds_ray, fitted_inds_regular)\n            assert np.allclose(scores_ray, scores_regular)\n\n        finally:\n            ray.shutdown()  # Shutdown Ray\n\n    def _test_ol(self, use_ray):\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, T)\n                self._model_y.fit(W, Y)\n                return self\n\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict(W)\n\n        class ModelFinal:\n\n            def __init__(self):\n                return\n\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n\n            def predict(self, X=None):\n                return self.model.coef_[0]\n\n            def score(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                return np.mean((Y_res - self.model.predict(T_res.reshape(-1, 1))) ** 2)\n\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LinearRegression(), LinearRegression())\n\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None,\n                           discrete_instrument=False, categories='auto', random_state=None, use_ray=use_ray)\n        est.fit(y, X[:, 0], W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=2)\n        np.testing.assert_almost_equal(est.score(y, X[:, 0], W=X[:, 1:]), sigma**2, decimal=3)\n        np.testing.assert_almost_equal(est.score_, sigma**2, decimal=3)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n        # Nuisance model has no score method, so nuisance_scores_ should be none\n        assert est.nuisance_scores_ is None\n\n        # Test non keyword based calls to fit\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=False, treatment_featurizer=None,\n                           discrete_instrument=False, categories='auto', random_state=None, use_ray=use_ray)\n        # test non-array inputs\n        est.fit(list(y), list(X[:, 0]), X=None, W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=2)\n        np.testing.assert_almost_equal(est.score(y, X[:, 0], None, X[:, 1:]), sigma ** 2, decimal=3)\n        np.testing.assert_almost_equal(est.score_, sigma ** 2, decimal=3)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n\n        # Test custom splitter\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n        est = OrthoLearner(cv=KFold(n_splits=3), discrete_outcome=False,\n                           discrete_treatment=False, treatment_featurizer=None, discrete_instrument=False,\n                           categories='auto', random_state=None, use_ray=use_ray)\n        est.fit(y, X[:, 0], X=None, W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=2)\n        np.testing.assert_almost_equal(est.score(y, X[:, 0], W=X[:, 1:]), sigma**2, decimal=3)\n        np.testing.assert_almost_equal(est.score_, sigma**2, decimal=3)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n\n        # Test incomplete set of test folds\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n        folds = [(np.arange(X.shape[0] // 2), np.arange(X.shape[0] // 2, X.shape[0]))]\n        est = OrthoLearner(cv=folds, discrete_outcome=False,\n                           discrete_treatment=False, treatment_featurizer=None, discrete_instrument=False,\n                           categories='auto', random_state=None, use_ray=use_ray)\n\n        est.fit(y, X[:, 0], X=None, W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=2)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=2)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=1)\n        np.testing.assert_almost_equal(est.score(y, X[:, 0], W=X[:, 1:]), sigma**2, decimal=2)\n        np.testing.assert_almost_equal(est.score_, sigma**2, decimal=2)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=2)\n\n        # Test that non-standard scoring raise the appropriate exception\n        self.assertRaises(NotImplementedError, est.score, y, X[:, 0], W=X[:, 1:], scoring='mean_squared_error')\n\n    @pytest.mark.ray\n    def test_ol_with_ray(self):\n        self._test_ol(True)\n\n    def test_ol_without_ray(self):\n        self._test_ol(False)\n\n    def test_ol_no_score_final(self):\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, T)\n                self._model_y.fit(W, Y)\n                return self\n\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict(W)\n\n        class ModelFinal:\n\n            def __init__(self):\n                return\n\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n\n            def predict(self, X=None):\n                return self.model.coef_[0]\n\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LinearRegression(), LinearRegression())\n\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=False,\n                           treatment_featurizer=None, discrete_instrument=False,\n                           categories='auto', random_state=None)\n        est.fit(y, X[:, 0], W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=2)\n        assert est.score_ is None\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n\n    def test_ol_nuisance_scores(self):\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, T)\n                self._model_y.fit(W, Y)\n                return self\n\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict(W)\n\n            def score(self, Y, T, W=None):\n                return (self._model_t.score(W, Y), self._model_y.score(W, T))\n\n        class ModelFinal:\n\n            def __init__(self):\n                return\n\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n\n            def predict(self, X=None):\n                return self.model.coef_[0]\n\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LinearRegression(), LinearRegression())\n\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        sigma = 0.1\n        y = X[:, 0] + X[:, 1] + np.random.normal(0, sigma, size=(10000,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=False,\n                           treatment_featurizer=None, discrete_instrument=False,\n                           categories='auto', random_state=None)\n        est.fit(y, X[:, 0], W=X[:, 1:])\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(T0=0, T1=10), np.ones(1) * 10, decimal=2)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n        nuisance_scores_y = est.nuisance_scores_[0]\n        nuisance_scores_t = est.nuisance_scores_[1]\n        assert len(nuisance_scores_y) == len(nuisance_scores_t) == 1  # as many scores as iterations\n        assert len(nuisance_scores_y[0]) == len(nuisance_scores_t[0]) == 2  # as many scores as splits\n        # y scores should be positive, since W predicts Y somewhat\n        # t scores might not be, since W and T are uncorrelated\n        np.testing.assert_array_less(0, nuisance_scores_y[0])\n\n    def test_ol_discrete_treatment(self):\n        class ModelNuisance:\n            def __init__(self, model_t, model_y):\n                self._model_t = model_t\n                self._model_y = model_y\n\n            def train(self, is_selecting, folds, Y, T, W=None):\n                self._model_t.fit(W, np.matmul(T, np.arange(1, T.shape[1] + 1)))\n                self._model_y.fit(W, Y)\n                return self\n\n            def predict(self, Y, T, W=None):\n                return Y - self._model_y.predict(W), T - self._model_t.predict_proba(W)[:, 1:]\n\n        class ModelFinal:\n\n            def __init__(self):\n                return\n\n            def fit(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                self.model = LinearRegression(fit_intercept=False).fit(T_res.reshape(-1, 1), Y_res)\n                return self\n\n            def predict(self):\n                # theta needs to be of dimension (1, d_t) if T is (n, d_t)\n                return np.array([[self.model.coef_[0]]])\n\n            def score(self, Y, T, W=None, nuisances=None):\n                Y_res, T_res = nuisances\n                return np.mean((Y_res - self.model.predict(T_res.reshape(-1, 1)))**2)\n\n        from sklearn.linear_model import LogisticRegression\n\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                return ModelNuisance(LogisticRegression(solver='lbfgs'), LinearRegression())\n\n            def _gen_ortho_learner_model_final(self):\n                return ModelFinal()\n\n        np.random.seed(123)\n        X = np.random.normal(size=(10000, 3))\n        import scipy.special\n        T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\n        sigma = 0.01\n        y = T + X[:, 0] + np.random.normal(0, sigma, size=(10000,))\n        est = OrthoLearner(cv=2, discrete_outcome=False, discrete_treatment=True,\n                           treatment_featurizer=None, discrete_instrument=False,\n                           categories='auto', random_state=None)\n        est.fit(y, T, W=X)\n        np.testing.assert_almost_equal(est.const_marginal_effect(), 1, decimal=3)\n        np.testing.assert_array_almost_equal(est.effect(), np.ones(1), decimal=3)\n        np.testing.assert_almost_equal(est.score(y, T, W=X), sigma**2, decimal=3)\n        np.testing.assert_almost_equal(est.ortho_learner_model_final_.model.coef_[0], 1, decimal=3)\n"
  },
  {
    "path": "econml/tests/test_policy_forest.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport unittest\r\nimport numpy as np\r\nimport pandas as pd\r\nimport pytest\r\nimport joblib\r\nfrom econml.policy import PolicyTree, PolicyForest\r\nfrom econml.policy import DRPolicyTree, DRPolicyForest\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.preprocessing import PolynomialFeatures\r\nfrom sklearn.dummy import DummyClassifier, DummyRegressor\r\nfrom sklearn.model_selection import GroupKFold\r\n\r\n\r\ngraphviz_works = True\r\ntry:\r\n    from graphviz import Graph\r\n    g = Graph()\r\n    g.render()\r\nexcept Exception:\r\n    graphviz_works = False\r\n\r\n\r\nclass TestPolicyForest(unittest.TestCase):\r\n\r\n    def _get_base_config(self):\r\n        return {'n_estimators': 1, 'max_depth': 2,\r\n                'min_samples_split': 2, 'min_samples_leaf': 1,\r\n                'max_samples': 1.0, 'honest': False,\r\n                'n_jobs': None, 'random_state': 123}\r\n\r\n    def _get_policy_data(self, n, n_features, random_state, n_outcomes=2):\r\n        random_state = np.random.RandomState(random_state)\r\n        X = random_state.normal(size=(n, n_features))\r\n        if n_outcomes == 1:\r\n            y = (X[:, 0] > 0.0) - .5\r\n        else:\r\n            y = np.hstack([np.zeros((X.shape[0], 1)), (X[:, [0]] > 0.0) - .5])\r\n        return (X, y, y)\r\n\r\n    def _get_true_quantities(self, X, y, mask, sample_weight=None):\r\n        if sample_weight is None:\r\n            sample_weight = np.ones(X.shape[0])\r\n        X, y, sample_weight = X[mask], y[mask], sample_weight[mask]\r\n        node_value = np.average(y, axis=0, weights=sample_weight)\r\n        impurity = - np.max(node_value)\r\n        return node_value, impurity\r\n\r\n    def _get_node_quantities(self, tree, node_id):\r\n        return (tree.full_value[node_id, :, 0], tree.impurity[node_id])\r\n\r\n    def _train_policy_forest(self, X, y, config, sample_weight=None):\r\n        return PolicyForest(**config).fit(X, y, sample_weight=sample_weight)\r\n\r\n    def _train_dr_policy_forest(self, X, y, config, sample_weight=None):\r\n        config.pop('criterion')\r\n        if sample_weight is not None:\r\n            sample_weight = np.repeat(sample_weight, 2)\r\n        groups = np.repeat(np.arange(X.shape[0]), 2)\r\n        X = np.repeat(X, 2, axis=0)\r\n        T = np.zeros(y.shape)\r\n        T[:, 1] = 1\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        return DRPolicyForest(model_regression=DummyRegressor(strategy='constant', constant=0),\r\n                              model_propensity=DummyClassifier(strategy='uniform'),\r\n                              featurizer=PolynomialFeatures(degree=1, include_bias=False),\r\n                              cv=GroupKFold(n_splits=2),\r\n                              **config).fit(y, T, X=X,\r\n                                            sample_weight=sample_weight,\r\n                                            groups=groups).policy_model_\r\n\r\n    def _train_dr_policy_tree(self, X, y, config, sample_weight=None):\r\n        config.pop('n_estimators')\r\n        config.pop('max_samples')\r\n        config.pop('n_jobs')\r\n        config.pop('criterion')\r\n        if sample_weight is not None:\r\n            sample_weight = np.repeat(sample_weight, 2)\r\n        groups = np.repeat(np.arange(X.shape[0]), 2)\r\n        X = np.repeat(X, 2, axis=0)\r\n        T = np.zeros(y.shape)\r\n        T[:, 1] = 1\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        return [DRPolicyTree(model_regression=DummyRegressor(strategy='constant', constant=0),\r\n                             model_propensity=DummyClassifier(strategy='uniform'),\r\n                             featurizer=PolynomialFeatures(degree=1, include_bias=False),\r\n                             cv=GroupKFold(n_splits=2),\r\n                             **config).fit(y, T, X=X, sample_weight=sample_weight,\r\n                                           groups=groups).policy_model_]\r\n\r\n    def _test_policy_tree_internals(self, trainer):\r\n        config = self._get_base_config()\r\n        for criterion in ['neg_welfare']:\r\n            config['criterion'] = criterion\r\n            config['max_depth'] = 2\r\n            config['min_samples_leaf'] = 5\r\n            n, n_features = 100, 2\r\n            random_state = 123\r\n            X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n            forest = trainer(X, y, config)\r\n            tree = forest[0].tree_\r\n            paths = np.array(forest[0].decision_path(X).todense())\r\n            for node_id in range(len(tree.feature)):\r\n                mask = paths[:, node_id] > 0\r\n                [np.testing.assert_allclose(a, b, atol=1e-4)\r\n                    for a, b in zip(self._get_true_quantities(X, y, mask),\r\n                                    self._get_node_quantities(tree, node_id))]\r\n\r\n    def _test_policy_honesty(self, trainer, dr=False):\r\n        n_outcome_list = [1, 2] if not dr else [2]\r\n        for criterion in ['neg_welfare']:\r\n            for min_impurity_decrease in [0.0, 0.07]:\r\n                for sample_weight in [None, 'rand']:\r\n                    for n_outcomes in n_outcome_list:\r\n                        config = self._get_base_config()\r\n                        config['honest'] = not dr\r\n                        config['criterion'] = criterion\r\n                        config['max_depth'] = 2\r\n                        config['min_samples_leaf'] = 5\r\n                        config['min_impurity_decrease'] = min_impurity_decrease\r\n                        n, n_features = 800, 2\r\n                        config['n_estimators'] = 4\r\n                        config['max_samples'] = .4 if not dr else 1.0\r\n                        config['n_jobs'] = 1\r\n                        random_state = 123\r\n                        if sample_weight is not None:\r\n                            sample_weight = check_random_state(random_state).randint(0, 4, size=n)\r\n                        X, y, truth = self._get_policy_data(n, n_features, random_state, n_outcomes)\r\n                        forest = trainer(X, y, config, sample_weight=sample_weight)\r\n                        subinds = forest.get_subsample_inds()\r\n                        forest_paths, ptr = forest.decision_path(X)\r\n                        forest_paths = np.array(forest_paths.todense())\r\n                        forest_apply = forest.apply(X)\r\n                        for it, tree in enumerate(forest):\r\n                            tree_paths = np.array(tree.decision_path(X).todense())\r\n                            np.testing.assert_array_equal(tree_paths, forest_paths[:, ptr[it]:ptr[it + 1]])\r\n                            tree_apply = tree.apply(X)\r\n                            np.testing.assert_array_equal(tree_apply, forest_apply[:, it])\r\n                            _, samples_val = tree.get_train_test_split_inds()\r\n                            inds_val = subinds[it][samples_val]\r\n                            if dr:\r\n                                inds_val = inds_val[np.array(inds_val) % 2 == 0] // 2\r\n                            Xval, yval, _ = X[inds_val], y[inds_val], truth[inds_val]\r\n                            sample_weightval = sample_weight[inds_val] if sample_weight is not None else None\r\n                            paths = np.array(tree.decision_path(Xval).todense())\r\n                            for node_id in range(len(tree.tree_.feature)):\r\n                                mask = paths[:, node_id] > 0\r\n                                [np.testing.assert_allclose(a, b, atol=1e-4)\r\n                                    for a, b in zip(self._get_true_quantities(Xval, yval, mask,\r\n                                                                              sample_weight=sample_weightval),\r\n                                                    self._get_node_quantities(tree.tree_, node_id))]\r\n                            if (sample_weight is None) and min_impurity_decrease > 0.0005:\r\n                                assert np.all((tree.tree_.feature == 0) | (tree.tree_.feature == -2))\r\n\r\n    def test_policy_tree(self,):\r\n        self._test_policy_tree_internals(self._train_policy_forest)\r\n        self._test_policy_honesty(self._train_policy_forest)\r\n\r\n    def test_drpolicy_tree(self,):\r\n        self._test_policy_tree_internals(self._train_dr_policy_tree)\r\n\r\n    def test_drpolicy_forest(self,):\r\n        self._test_policy_tree_internals(self._train_dr_policy_forest)\r\n        self._test_policy_honesty(self._train_dr_policy_forest, dr=True)\r\n\r\n    def test_subsampling(self,):\r\n        # test that the subsampling scheme past to the trees is correct\r\n        random_state = 123\r\n        n, n_features = 10, 2\r\n        n_estimators = 600\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['max_samples'] = .7\r\n        config['max_depth'] = 1\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n        forest = self._train_policy_forest(X, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, .7, atol=.06)\r\n        counts = np.zeros(n)\r\n        for it, tree in enumerate(forest):\r\n            samples_train, samples_val = tree.get_train_test_split_inds()\r\n            np.testing.assert_equal(samples_train, samples_val)\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['max_samples'] = 7\r\n        config['max_depth'] = 1\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n        forest = self._train_policy_forest(X, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, .7, atol=.06)\r\n        config = self._get_base_config()\r\n        config['n_estimators'] = n_estimators\r\n        config['max_samples'] = .4\r\n        config['max_depth'] = 1\r\n        config['honest'] = True\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n        forest = self._train_policy_forest(X, y, config)\r\n        subinds = forest.get_subsample_inds()\r\n        inds, counts = np.unique(subinds, return_counts=True)\r\n        np.testing.assert_allclose(counts / n_estimators, .4, atol=.06)\r\n        counts = np.zeros(n)\r\n        for it, tree in enumerate(forest):\r\n            _, samples_val = tree.get_train_test_split_inds()\r\n            inds_val = subinds[it][samples_val]\r\n            counts[inds_val] += 1\r\n        np.testing.assert_allclose(counts / n_estimators, .2, atol=.05)\r\n        return\r\n\r\n    def test_feature_importances(self,):\r\n        # test that the estimator calcualtes var correctly\r\n        for trainer in [self._train_policy_forest]:\r\n            for criterion in ['neg_welfare']:\r\n                for sample_weight in [None, 'rand']:\r\n                    config = self._get_base_config()\r\n                    config['honest'] = True\r\n                    config['criterion'] = criterion\r\n                    config['max_depth'] = 2\r\n                    config['min_samples_leaf'] = 5\r\n                    config['min_impurity_decrease'] = 0.0\r\n                    config['n_estimators'] = 4\r\n                    config['max_samples'] = .4\r\n                    config['n_jobs'] = 1\r\n\r\n                    n, n_features = 800, 2\r\n                    random_state = 123\r\n                    if sample_weight is not None:\r\n                        sample_weight = check_random_state(random_state).randint(0, 4, size=n)\r\n                    X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n                    forest = trainer(X, y, config, sample_weight=sample_weight)\r\n                    forest_het_importances = np.zeros(n_features)\r\n                    for it, tree in enumerate(forest):\r\n                        tree_ = tree.tree_\r\n                        tfeature = tree_.feature\r\n                        timpurity = tree_.impurity\r\n                        tdepth = tree_.depth\r\n                        tleft = tree_.children_left\r\n                        tright = tree_.children_right\r\n                        tw = tree_.weighted_n_node_samples\r\n                        tvalue = tree_.value\r\n\r\n                        for max_depth in [0, 2]:\r\n                            feature_importances = np.zeros(n_features)\r\n                            for it, (feat, impurity, depth, left, right, w) in\\\r\n                                    enumerate(zip(tfeature, timpurity, tdepth, tleft, tright, tw)):\r\n                                if (left != -1) and (depth <= max_depth):\r\n                                    gain = w * impurity - tw[left] * timpurity[left] - tw[right] * timpurity[right]\r\n                                    feature_importances[feat] += gain / (depth + 1)**2.0\r\n                            feature_importances /= tw[0]\r\n                            totest = tree.tree_.compute_feature_importances(normalize=False,\r\n                                                                            max_depth=max_depth, depth_decay=2.0)\r\n                            np.testing.assert_array_equal(feature_importances, totest)\r\n\r\n                            het_importances = np.zeros(n_features)\r\n                            for it, (feat, depth, left, right, w) in\\\r\n                                    enumerate(zip(tfeature, tdepth, tleft, tright, tw)):\r\n                                if (left != -1) and (depth <= max_depth):\r\n                                    gain = tw[left] * tw[right] * np.mean((tvalue[left] - tvalue[right])**2) / w\r\n                                    het_importances[feat] += gain / (depth + 1)**2.0\r\n                            het_importances /= tw[0]\r\n                            totest = tree.tree_.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                          max_depth=max_depth,\r\n                                                                                          depth_decay=2.0)\r\n                            np.testing.assert_allclose(het_importances, totest)\r\n                        het_importances /= np.sum(het_importances)\r\n                        forest_het_importances += het_importances / len(forest)\r\n\r\n                    np.testing.assert_allclose(forest_het_importances,\r\n                                               forest.feature_importances(max_depth=2, depth_decay_exponent=2.0))\r\n                    np.testing.assert_allclose(forest_het_importances, forest.feature_importances_)\r\n        return\r\n\r\n    def test_non_standard_input(self,):\r\n        # test that the estimator accepts lists, tuples and pandas data frames\r\n        n_features = 2\r\n        n = 2000\r\n        random_state = 123\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n        forest = PolicyForest(n_estimators=20, n_jobs=1, random_state=123).fit(X, y)\r\n        pred = forest.predict(X)\r\n        pred_val = forest.predict_value(X)\r\n        pred_prob = forest.predict_proba(X)\r\n        assert pred_prob.shape == (X.shape[0], 2)\r\n        feat_imp = forest.feature_importances()\r\n        forest = PolicyForest(n_estimators=20, n_jobs=1, random_state=123).fit(X.astype(np.float32),\r\n                                                                               np.asfortranarray(y))\r\n        np.testing.assert_allclose(pred, forest.predict(tuple(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(tuple(X)))\r\n        forest = PolicyForest(n_estimators=20, n_jobs=1, random_state=123).fit(tuple(X), tuple(y))\r\n        np.testing.assert_allclose(pred, forest.predict(tuple(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(tuple(X)))\r\n        np.testing.assert_allclose(pred_prob, forest.predict_proba(tuple(X)))\r\n        forest = PolicyForest(n_estimators=20, n_jobs=1, random_state=123).fit(list(X), list(y))\r\n        np.testing.assert_allclose(pred, forest.predict(list(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(list(X)))\r\n        np.testing.assert_allclose(pred_prob, forest.predict_proba(list(X)))\r\n        forest = PolicyForest(n_estimators=20, n_jobs=1, random_state=123).fit(pd.DataFrame(X), pd.DataFrame(y))\r\n        np.testing.assert_allclose(pred, forest.predict(pd.DataFrame(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(pd.DataFrame(X)))\r\n        np.testing.assert_allclose(pred_prob, forest.predict_proba(pd.DataFrame(X)))\r\n\r\n        groups = np.repeat(np.arange(X.shape[0]), 2)\r\n        Xraw = X.copy()\r\n        X = np.repeat(X, 2, axis=0)\r\n        T = np.zeros(y.shape)\r\n        T[:, 1] = 1\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        forest = DRPolicyForest(model_regression=DummyRegressor(strategy='constant', constant=0),\r\n                                model_propensity=DummyClassifier(strategy='uniform'),\r\n                                featurizer=PolynomialFeatures(degree=1, include_bias=False),\r\n                                cv=GroupKFold(n_splits=2),\r\n                                n_estimators=100, n_jobs=1, random_state=123).fit(y, T, X=X,\r\n                                                                                  groups=groups)\r\n        mask = np.abs(Xraw[:, 0]) > .1\r\n        np.testing.assert_allclose(pred[mask], forest.predict(Xraw[mask]))\r\n        np.testing.assert_allclose(pred_val[mask, 1] - pred_val[mask, 0],\r\n                                   forest.predict_value(Xraw[mask]).flatten(), atol=.08)\r\n        np.testing.assert_allclose(feat_imp, forest.feature_importances(), atol=1e-4)\r\n        np.testing.assert_allclose(feat_imp, forest.feature_importances_, atol=1e-4)\r\n        pred = forest.predict(X)\r\n        pred_val = forest.predict_value(X)\r\n        pred_prob = forest.predict_proba(X)\r\n        np.testing.assert_allclose(pred, forest.predict(tuple(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(tuple(X)))\r\n        np.testing.assert_allclose(pred, forest.predict(pd.DataFrame(X)))\r\n        np.testing.assert_allclose(pred_val, forest.predict_value(pd.DataFrame(X)))\r\n        np.testing.assert_allclose(pred_prob, forest.predict_proba(pd.DataFrame(X)))\r\n\r\n        return\r\n\r\n    def test_raise_exceptions(self,):\r\n        # test that we raise errors in mishandled situations.\r\n        n_features = 2\r\n        n = 10\r\n        random_state = 123\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=20, max_samples=20).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=20, max_samples=1.2).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, criterion='peculiar').fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, max_depth=-1).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, min_samples_split=-1).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, min_samples_leaf=-1).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, min_weight_fraction_leaf=-1.0).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, max_features=10).fit(X, y)\r\n        with np.testing.assert_raises(ValueError):\r\n            PolicyForest(n_estimators=4, min_balancedness_tol=.55).fit(X, y)\r\n\r\n        return\r\n\r\n    def test_warm_start(self,):\r\n        n_features = 2\r\n        n = 10\r\n        random_state = 123\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n\r\n        forest = PolicyForest(n_estimators=4, warm_start=True, random_state=123).fit(X, y)\r\n        with pytest.warns(UserWarning):\r\n            forest.fit(X, y)\r\n        forest.n_estimators = 3\r\n        with np.testing.assert_raises(ValueError):\r\n            forest.fit(X, y)\r\n        forest.n_estimators = 8\r\n        forest.fit(X, y)\r\n        pred1 = forest.predict(X)\r\n        inds1 = forest.get_subsample_inds()\r\n        tree_states1 = [t.random_state for t in forest]\r\n\r\n        forest = PolicyForest(n_estimators=8, warm_start=True, random_state=123).fit(X, y)\r\n        pred2 = forest.predict(X)\r\n        inds2 = forest.get_subsample_inds()\r\n        tree_states2 = [t.random_state for t in forest]\r\n\r\n        np.testing.assert_allclose(pred1, pred2)\r\n        np.testing.assert_allclose(inds1, inds2)\r\n        np.testing.assert_allclose(tree_states1, tree_states2)\r\n        return\r\n\r\n    @pytest.mark.skipif(not graphviz_works, reason=\"graphviz must be installed to test plotting\")\r\n    def test_plotting(self):\r\n        n_features = 2\r\n        n = 1000\r\n        random_state = 123\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n\r\n        tree = PolicyTree(max_depth=4, random_state=123).fit(X, y)\r\n        tree.plot(max_depth=2)\r\n        tree.render('test', max_depth=2)\r\n\r\n        groups = np.repeat(np.arange(X.shape[0]), 2)\r\n        X = np.repeat(X, 2, axis=0)\r\n        T = np.zeros(y.shape)\r\n        T[:, 1] = 1\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        forest = DRPolicyForest(model_regression=DummyRegressor(strategy='constant', constant=0),\r\n                                model_propensity=DummyClassifier(strategy='uniform'),\r\n                                featurizer=PolynomialFeatures(degree=1, include_bias=False),\r\n                                cv=GroupKFold(n_splits=2),\r\n                                n_estimators=20, n_jobs=1, random_state=123).fit(y, T, X=X,\r\n                                                                                 groups=groups)\r\n        forest.plot(0, max_depth=2)\r\n        forest.render(0, 'testdrf', max_depth=2)\r\n        forest.export_graphviz(0, max_depth=2)\r\n\r\n        tree = DRPolicyTree(model_regression=DummyRegressor(strategy='constant', constant=0),\r\n                            model_propensity=DummyClassifier(strategy='uniform'),\r\n                            featurizer=PolynomialFeatures(degree=1, include_bias=False),\r\n                            cv=GroupKFold(n_splits=2), random_state=123).fit(y, T, X=X,\r\n                                                                             groups=groups)\r\n        tree.plot(max_depth=2)\r\n        tree.render('testdrt', max_depth=2)\r\n        tree.export_graphviz(max_depth=2)\r\n\r\n    def test_pickling(self,):\r\n\r\n        n_features = 2\r\n        n = 10\r\n        random_state = 123\r\n        X, y, _ = self._get_policy_data(n, n_features, random_state)\r\n\r\n        forest = PolicyForest(n_estimators=4, warm_start=True, random_state=123).fit(X, y)\r\n        forest.n_estimators = 8\r\n        forest.fit(X, y)\r\n        pred1 = forest.predict(X)\r\n\r\n        joblib.dump(forest, 'forest.jbl')\r\n        loaded_forest = joblib.load('forest.jbl')\r\n        np.testing.assert_equal(loaded_forest.n_estimators, forest.n_estimators)\r\n        np.testing.assert_allclose(loaded_forest.predict(X), pred1)\r\n"
  },
  {
    "path": "econml/tests/test_random_state.py",
    "content": "import unittest\r\nfrom sklearn.linear_model import LinearRegression\r\nfrom econml.dml import LinearDML, SparseLinearDML, KernelDML\r\nfrom econml.dml import NonParamDML, CausalForestDML\r\nfrom econml.dr import DRLearner, SparseLinearDRLearner, LinearDRLearner, ForestDRLearner\r\nfrom econml.iv.dml import OrthoIV, NonParamDMLIV\r\nfrom econml.iv.dr import (LinearDRIV, IntentToTreatDRIV, LinearIntentToTreatDRIV)\r\nimport numpy as np\r\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\r\nfrom sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\r\n\r\n\r\nclass TestRandomState(unittest.TestCase):\r\n\r\n    @staticmethod\r\n    def _make_data(n, p):\r\n        np.random.seed(1283)\r\n        X = np.random.uniform(-1, 1, size=(n, p))\r\n        W = np.random.uniform(-1, 1, size=(n, p))\r\n\r\n        def true_propensity(x):\r\n            return .4 + .1 * (x[:, 0] > 0)\r\n\r\n        def true_effect(x):\r\n            return .4 + .2 * x[:, 0]\r\n\r\n        def true_conf(x):\r\n            return x[:, 1]\r\n\r\n        T = np.random.binomial(1, true_propensity(X))\r\n        Y = true_effect(X) * T + true_conf(X) + np.random.normal(size=(n,))\r\n        X_test = np.zeros((100, p))\r\n        X_test[:, 0] = np.linspace(-1, 1, 100)\r\n        return Y, T, X, W, X_test\r\n\r\n    @staticmethod\r\n    def _test_random_state(est, X_test, Y, T, **kwargs):\r\n        est.fit(Y, T, **kwargs)\r\n        te1 = est.effect(X_test)\r\n        est.fit(Y, T, **kwargs)\r\n        te2 = est.effect(X_test)\r\n        est.fit(Y, T, **kwargs)\r\n        te3 = est.effect(X_test)\r\n        np.testing.assert_allclose(te1, te2, err_msg='random state fixing does not work')\r\n        np.testing.assert_allclose(te1, te3, err_msg='random state fixing does not work')\r\n\r\n    def test_dml_random_state(self):\r\n        Y, T, X, W, X_test = TestRandomState._make_data(500, 2)\r\n        for est in [\r\n                NonParamDML(model_y=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                            model_t=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                            model_final=RandomForestRegressor(max_depth=3, n_estimators=10, min_samples_leaf=100,\r\n                                                              bootstrap=True, random_state=123),\r\n                            discrete_treatment=True, cv=2, random_state=123),\r\n                CausalForestDML(model_y=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                                model_t=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                                n_estimators=8,\r\n                                discrete_treatment=True, cv=2, random_state=123),\r\n                LinearDML(model_y=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                          model_t=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                          discrete_treatment=True, cv=2, random_state=123),\r\n                SparseLinearDML(discrete_treatment=True, cv=2, random_state=123),\r\n                KernelDML(discrete_treatment=True, cv=2, random_state=123)]:\r\n            TestRandomState._test_random_state(est, X_test, Y, T, X=X, W=W)\r\n\r\n    def test_dr_random_state(self):\r\n        Y, T, X, W, X_test = self._make_data(500, 2)\r\n        for est in [\r\n                DRLearner(model_final=RandomForestRegressor(max_depth=3, n_estimators=10, min_samples_leaf=100,\r\n                                                            bootstrap=True, random_state=123),\r\n                          cv=2, random_state=123),\r\n                LinearDRLearner(random_state=123),\r\n                SparseLinearDRLearner(cv=2, random_state=123),\r\n                ForestDRLearner(model_regression=RandomForestRegressor(n_estimators=10, max_depth=4,\r\n                                                                       random_state=123),\r\n                                model_propensity=RandomForestClassifier(\r\n                    n_estimators=10, max_depth=4, random_state=123),\r\n                    cv=2, random_state=123)]:\r\n            TestRandomState._test_random_state(est, X_test, Y, T, X=X, W=W)\r\n\r\n    def test_orthoiv_random_state(self):\r\n        Y, T, X, W, X_test = self._make_data(500, 2)\r\n        for est in [\r\n            OrthoIV(model_y_xw=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                    model_t_xw=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                    model_z_xw=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                    discrete_treatment=True, discrete_instrument=True, cv=2, random_state=123),\r\n            NonParamDMLIV(model_y_xw=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                          model_t_xw=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                          model_t_xwz=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                          model_final=LinearRegression(),\r\n                          discrete_treatment=True, discrete_instrument=True, cv=2, random_state=123),\r\n            LinearDRIV(model_y_xw=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                       model_t_xw=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                       model_z_xw=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                       model_tz_xw=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                       flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\r\n                       discrete_treatment=True, discrete_instrument=True, cv=2, random_state=123),\r\n            IntentToTreatDRIV(model_y_xw=RandomForestRegressor(n_estimators=10, max_depth=4, random_state=123),\r\n                              model_t_xwz=RandomForestClassifier(n_estimators=10, max_depth=4, random_state=123),\r\n                              flexible_model_effect=RandomForestRegressor(\r\n                                  n_estimators=10, max_depth=4, random_state=123),\r\n                              cv=2, random_state=123),\r\n            LinearIntentToTreatDRIV(model_y_xw=RandomForestRegressor(n_estimators=10,\r\n                                                                     max_depth=4, random_state=123),\r\n                                    model_t_xwz=RandomForestClassifier(n_estimators=10,\r\n                                                                       max_depth=4, random_state=123),\r\n                                    flexible_model_effect=RandomForestRegressor(n_estimators=10,\r\n                                                                                max_depth=4,\r\n                                                                                random_state=123),\r\n                                    cv=2, random_state=123)]:\r\n            TestRandomState._test_random_state(est, X_test, Y, T, X=X, W=W, Z=T)\r\n"
  },
  {
    "path": "econml/tests/test_refit.py",
    "content": "import unittest\r\nimport pytest\r\nimport numpy as np\r\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, Lasso, ElasticNet\r\nfrom sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\r\nfrom sklearn.preprocessing import PolynomialFeatures\r\nfrom sklearn.pipeline import Pipeline\r\nfrom econml.dml import (DML, LinearDML, SparseLinearDML, NonParamDML)\r\nfrom econml.dr import (LinearDRLearner, SparseLinearDRLearner)\r\nfrom econml.iv.dml import (OrthoIV, DMLIV, NonParamDMLIV)\r\nfrom econml.iv.dr import (IntentToTreatDRIV, LinearIntentToTreatDRIV)\r\nfrom econml.sklearn_extensions.linear_model import (DebiasedLasso, WeightedLasso,\r\n                                                    StatsModelsRLM, StatsModelsLinearRegression)\r\nfrom econml.inference import NormalInferenceResults, BootstrapInference\r\n\r\n\r\nclass TestRefit(unittest.TestCase):\r\n\r\n    def _get_data(self):\r\n        X = np.random.choice(np.arange(5), size=(500, 3))\r\n        y = np.random.normal(size=(500,))\r\n        T = np.random.binomial(1, .5, size=(500,))\r\n        W = np.random.normal(size=(500, 2))\r\n        return y, T, X, W\r\n\r\n    def test_dml(self):\r\n        \"\"\"Test setting attributes and refitting.\"\"\"\r\n        y, T, X, W = self._get_data()\r\n\r\n        dml = DML(model_y=LinearRegression(),\r\n                  model_t=LinearRegression(),\r\n                  model_final=StatsModelsLinearRegression(fit_intercept=False),\r\n                  random_state=123)\r\n        dml.fit(y, T, X=X, W=W)\r\n        with pytest.raises(Exception):\r\n            dml.refit_final()\r\n        dml.fit(y, T, X=X, W=W, cache_values=True)\r\n        dml.model_final = StatsModelsRLM(fit_intercept=False)\r\n        dml.refit_final()\r\n        assert isinstance(dml.model_cate, StatsModelsRLM)\r\n        np.testing.assert_array_equal(dml.model_cate.coef_[1:].flatten(), dml.coef_.flatten())\r\n        lb, ub = dml.model_cate.coef__interval(alpha=0.01)\r\n        lbt, ubt = dml.coef__interval(alpha=0.01)\r\n        np.testing.assert_array_equal(lb[1:].flatten(), lbt.flatten())\r\n        np.testing.assert_array_equal(ub[1:].flatten(), ubt.flatten())\r\n        intcpt = dml.intercept_\r\n        dml.fit_cate_intercept = False\r\n        np.testing.assert_equal(dml.intercept_, intcpt)\r\n        dml.refit_final()\r\n        np.testing.assert_array_equal(dml.model_cate.coef_.flatten(), dml.coef_.flatten())\r\n        lb, ub = dml.model_cate.coef__interval(alpha=0.01)\r\n        lbt, ubt = dml.coef__interval(alpha=0.01)\r\n        np.testing.assert_array_equal(lb.flatten(), lbt.flatten())\r\n        np.testing.assert_array_equal(ub.flatten(), ubt.flatten())\r\n        with pytest.raises(AttributeError):\r\n            dml.intercept_\r\n        with pytest.raises(AttributeError):\r\n            dml.intercept__interval()\r\n        dml.model_final = DebiasedLasso(fit_intercept=False, random_state=123)\r\n        dml.refit_final()\r\n        assert isinstance(dml.model_cate, DebiasedLasso)\r\n        dml.featurizer = PolynomialFeatures(degree=2, include_bias=False)\r\n        dml.model_final = StatsModelsLinearRegression(fit_intercept=False)\r\n        dml.refit_final()\r\n        assert isinstance(dml.featurizer_, PolynomialFeatures)\r\n        dml.fit_cate_intercept = True\r\n        dml.refit_final()\r\n        assert isinstance(dml.featurizer_, Pipeline)\r\n        np.testing.assert_array_equal(dml.coef_.shape, (X.shape[1]**2))\r\n        np.testing.assert_array_equal(dml.coef__interval()[0].shape, (X.shape[1]**2))\r\n        coefpre = dml.coef_\r\n        coefpreint = dml.coef__interval()\r\n        dml.fit(y, T, X=X, W=W)\r\n        np.testing.assert_array_equal(coefpre, dml.coef_)\r\n        np.testing.assert_array_equal(coefpreint[0], dml.coef__interval()[0])\r\n        dml.discrete_treatment = True\r\n        dml.featurizer = None\r\n        dml.model_t = LogisticRegression(random_state=123)\r\n        dml.fit(y, T, X=X, W=W)\r\n        newdml = DML(model_y=LinearRegression(),\r\n                     model_t=LogisticRegression(random_state=123),\r\n                     model_final=StatsModelsLinearRegression(fit_intercept=False),\r\n                     discrete_treatment=True,\r\n                     random_state=123).fit(y, T, X=X, W=W)\r\n        np.testing.assert_array_equal(dml.coef_, newdml.coef_)\r\n        np.testing.assert_array_equal(dml.coef__interval()[0], newdml.coef__interval()[0])\r\n\r\n        ldml = LinearDML(model_y=LinearRegression(),\r\n                         model_t=LinearRegression())\r\n        ldml.fit(y, T, X=X, W=W, cache_values=True)\r\n        # can set final model for plain DML, but can't for LinearDML (hardcoded to StatsModelsRegression)\r\n        with pytest.raises(ValueError):\r\n            ldml.model_final = StatsModelsRLM()\r\n\r\n        ldml = SparseLinearDML(model_y=LinearRegression(),\r\n                               model_t=LinearRegression())\r\n        ldml.fit(y, T, X=X, W=W, cache_values=True)\r\n        # can set final model for plain DML, but can't for LinearDML (hardcoded to StatsModelsRegression)\r\n        with pytest.raises(ValueError):\r\n            ldml.model_final = StatsModelsRLM()\r\n        ldml.alpha = 0.01\r\n        ldml.max_iter = 10\r\n        ldml.tol = 0.01\r\n        ldml.refit_final()\r\n        np.testing.assert_equal(ldml.model_cate.estimators_[0].alpha, 0.01)\r\n        np.testing.assert_equal(ldml.model_cate.estimators_[0].max_iter, 10)\r\n        np.testing.assert_equal(ldml.model_cate.estimators_[0].tol, 0.01)\r\n\r\n    def test_nonparam_dml(self):\r\n        y, T, X, W = self._get_data()\r\n\r\n        dml = NonParamDML(model_y=LinearRegression(),\r\n                          model_t=LinearRegression(),\r\n                          model_final=WeightedLasso(random_state=123),\r\n                          random_state=123)\r\n        dml.fit(y, T, X=X, W=W)\r\n        with pytest.raises(Exception):\r\n            dml.refit_final()\r\n        dml.fit(y, T, X=X, W=W, cache_values=True)\r\n        dml.model_final = DebiasedLasso(fit_intercept=False, random_state=123)\r\n        dml.refit_final()\r\n        assert isinstance(dml.model_cate, DebiasedLasso)\r\n        dml.effect_interval(X[:1])\r\n        dml.featurizer = PolynomialFeatures(degree=2, include_bias=False)\r\n        dml.refit_final()\r\n        assert isinstance(dml.featurizer_, PolynomialFeatures)\r\n        dml.effect_interval(X[:1])\r\n        dml.discrete_treatment = True\r\n        dml.featurizer = None\r\n        dml.model_t = LogisticRegression(random_state=123)\r\n        dml.model_final = DebiasedLasso(random_state=123)\r\n        dml.fit(y, T, X=X, W=W)\r\n        newdml = NonParamDML(model_y=LinearRegression(),\r\n                             model_t=LogisticRegression(random_state=123),\r\n                             model_final=DebiasedLasso(random_state=123),\r\n                             discrete_treatment=True,\r\n                             random_state=123).fit(y, T, X=X, W=W)\r\n        np.testing.assert_array_equal(dml.effect(X[:1]), newdml.effect(X[:1]))\r\n        np.testing.assert_array_equal(dml.effect_interval(X[:1])[0], newdml.effect_interval(X[:1])[0])\r\n\r\n    def test_drlearner(self):\r\n        y, T, X, W = self._get_data()\r\n\r\n        for est in [LinearDRLearner(random_state=123),\r\n                    SparseLinearDRLearner(random_state=123)]:\r\n            est.fit(y, T, X=X, W=W, cache_values=True)\r\n            np.testing.assert_equal(est.model_regression, 'auto')\r\n            est.model_regression = LinearRegression()\r\n            est.model_propensity = LogisticRegression(random_state=123)\r\n            est.fit(y, T, X=X, W=W, cache_values=True)\r\n            assert isinstance(est.model_regression, LinearRegression)\r\n            with pytest.raises(ValueError):\r\n                est.multitask_model_final = True\r\n            with pytest.raises(ValueError):\r\n                est.model_final = LinearRegression()\r\n            est.min_propensity = .1\r\n            est.mc_iters = 2\r\n            est.featurizer = PolynomialFeatures(degree=2, include_bias=False)\r\n            est.refit_final()\r\n            assert isinstance(est.featurizer_, PolynomialFeatures)\r\n            np.testing.assert_equal(est.mc_iters, 2)\r\n            intcpt = est.intercept_(T=1)\r\n            est.fit_cate_intercept = False\r\n            np.testing.assert_equal(est.intercept_(T=1), intcpt)\r\n            est.refit_final()\r\n            with pytest.raises(AttributeError):\r\n                est.intercept(T=1)\r\n            est.fit(y, T, X=X, W=W, cache_values=False)\r\n            with pytest.raises(AssertionError):\r\n                est.refit_final()\r\n\r\n    def test_orthoiv(self):\r\n        y, T, X, W = self._get_data()\r\n        Z = T.copy()\r\n        est = OrthoIV(model_y_xw=LinearRegression(),\r\n                      model_t_xw=LinearRegression(),\r\n                      model_z_xw=LinearRegression(),\r\n                      mc_iters=2)\r\n        est.fit(y, T, Z=Z, W=W, cache_values=True)\r\n        est.refit_final()\r\n        est.model_y_xw = Lasso()\r\n        est.model_t_xw = ElasticNet()\r\n        est.model_z_xw = WeightedLasso()\r\n        est.fit(y, T, Z=Z, W=W, cache_values=True)\r\n        assert isinstance(est.models_y_xw[0][0], Lasso)\r\n        assert isinstance(est.models_t_xw[0][0], ElasticNet)\r\n        assert isinstance(est.models_z_xw[0][0], WeightedLasso)\r\n\r\n        est = DMLIV(model_y_xw=LinearRegression(),\r\n                    model_t_xw=LinearRegression(),\r\n                    model_t_xwz=LinearRegression(),\r\n                    model_final=LinearRegression(fit_intercept=False),\r\n                    mc_iters=2)\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        est.model_y_xw = Lasso()\r\n        est.model_t_xw = ElasticNet()\r\n        est.model_t_xwz = WeightedLasso()\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        assert isinstance(est.models_y_xw[0][0], Lasso)\r\n        assert isinstance(est.models_t_xw[0][0], ElasticNet)\r\n        assert isinstance(est.models_t_xwz[0][0], WeightedLasso)\r\n\r\n        est = NonParamDMLIV(model_y_xw=LinearRegression(),\r\n                            model_t_xw=LinearRegression(),\r\n                            model_t_xwz=LinearRegression(),\r\n                            model_final=LinearRegression(fit_intercept=True),\r\n                            mc_iters=2)\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        est.featurizer = PolynomialFeatures(degree=2, include_bias=False)\r\n        est.model_final = WeightedLasso()\r\n        est.refit_final()\r\n        assert isinstance(est.model_cate, WeightedLasso)\r\n        assert isinstance(est.featurizer_, PolynomialFeatures)\r\n\r\n        est = IntentToTreatDRIV(model_y_xw=LinearRegression(), model_t_xwz=LogisticRegression(),\r\n                                flexible_model_effect=LinearRegression())\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        assert est.model_final is None\r\n        assert isinstance(est.model_final_, LinearRegression)\r\n        est.flexible_model_effect = Lasso()\r\n        est.refit_final()\r\n        assert est.model_final is None\r\n        assert isinstance(est.model_final_, Lasso)\r\n        est.model_final = Lasso()\r\n        est.refit_final()\r\n        assert isinstance(est.model_final, Lasso)\r\n        assert isinstance(est.model_final_, Lasso)\r\n        assert isinstance(est.models_nuisance_[0][0]._prel_model_effect.model_final_, LinearRegression)\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        assert isinstance(est.models_nuisance_[0][0]._prel_model_effect.model_final_, Lasso)\r\n\r\n        est = LinearIntentToTreatDRIV(model_y_xw=LinearRegression(), model_t_xwz=LogisticRegression(),\r\n                                      flexible_model_effect=LinearRegression())\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        est.fit_cate_intercept = False\r\n        est.intercept_\r\n        est.intercept__interval()\r\n        est.refit_final()\r\n        with pytest.raises(AttributeError):\r\n            est.intercept_\r\n        with pytest.raises(AttributeError):\r\n            est.intercept__interval()\r\n        with pytest.raises(ValueError):\r\n            est.model_final = LinearRegression()\r\n        est.flexible_model_effect = Lasso()\r\n        est.fit(y, T, Z=Z, X=X, W=W, cache_values=True)\r\n        assert isinstance(est.models_nuisance_[0][0]._prel_model_effect.model_final_, Lasso)\r\n\r\n    def test_can_set_discrete_treatment(self):\r\n        X = np.random.choice(np.arange(5), size=(500, 3))\r\n        y = np.random.normal(size=(500,))\r\n        T = np.random.choice(np.arange(3), size=(500, 1))\r\n        W = np.random.normal(size=(500, 2))\r\n        est = LinearDML(model_y=RandomForestRegressor(),\r\n                        model_t=RandomForestClassifier(min_samples_leaf=10),\r\n                        discrete_treatment=True,\r\n                        cv=3)\r\n        est.fit(y, T, X=X, W=W)\r\n        est.effect(X)\r\n        est.discrete_treatment = False\r\n        with pytest.raises(AttributeError):\r\n            est.fit(y, T, X=X, W=W)  # should fail because passing a clf when discrete_treatment=False\r\n\r\n    def test_refit_final_inference(self):\r\n        \"\"\"Test that we can perform inference during refit_final.\"\"\"\r\n        est = LinearDML(featurizer=PolynomialFeatures(1, include_bias=False))\r\n\r\n        X = np.random.choice(np.arange(5), size=(500, 3))\r\n        y = np.random.normal(size=(500,))\r\n        T = np.random.choice(np.arange(3), size=(500, 2))\r\n        W = np.random.normal(size=(500, 2))\r\n\r\n        est.fit(y, T, X=X, W=W, cache_values=True, inference='statsmodels')\r\n\r\n        assert isinstance(est.effect_inference(X), NormalInferenceResults)\r\n\r\n        with pytest.raises(ValueError):\r\n            est.refit_final(inference=BootstrapInference(2))\r\n\r\n    def test_rlearner_residuals(self):\r\n        y, T, X, W = self._get_data()\r\n\r\n        dml = DML(model_y=LinearRegression(),\r\n                  model_t=LinearRegression(),\r\n                  cv=1,\r\n                  model_final=StatsModelsLinearRegression(fit_intercept=False),\r\n                  random_state=123)\r\n        with pytest.raises(AttributeError):\r\n            y_res, T_res, X_res, W_res = dml.residuals_\r\n        dml.fit(y, T, X=X, W=W)\r\n        with pytest.raises(AttributeError):\r\n            y_res, T_res, X_res, W_res = dml.residuals_\r\n        dml.fit(y, T, X=X, W=W, cache_values=True)\r\n        y_res, T_res, X_res, W_res = dml.residuals_\r\n        np.testing.assert_array_equal(X, X_res)\r\n        np.testing.assert_array_equal(W, W_res)\r\n        XW = np.hstack([X, W])\r\n        np.testing.assert_array_equal(y_res, y - LinearRegression().fit(XW, y).predict(XW))\r\n        np.testing.assert_array_equal(T_res, T - LinearRegression().fit(XW, T).predict(XW))\r\n"
  },
  {
    "path": "econml/tests/test_rscorer.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport unittest\r\nimport numpy as np\r\nfrom sklearn.preprocessing import PolynomialFeatures\r\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\r\nfrom sklearn.model_selection import train_test_split\r\nfrom joblib import Parallel, delayed\r\n\r\nfrom econml.dml import DML, LinearDML, SparseLinearDML, NonParamDML\r\nfrom econml.metalearners import XLearner, TLearner, SLearner, DomainAdaptationLearner\r\nfrom econml.dr import DRLearner\r\nfrom econml.score import RScorer\r\n\r\n\r\ndef _fit_model(name, model, Y, T, X):\r\n    return name, model.fit(Y, T, X=X)\r\n\r\n\r\nclass TestRScorer(unittest.TestCase):\r\n\r\n    def _get_data(self, discrete_outcome=False):\r\n        X = np.random.normal(0, 1, size=(100000, 2))\r\n        T = np.random.binomial(1, .5, size=(100000,))\r\n        if discrete_outcome:\r\n            eps = np.random.normal(size=(100000,))\r\n            log_odds = X[:, 0]*T + eps\r\n            y_sigmoid = 1/(1 + np.exp(-log_odds))\r\n            y = np.array([np.random.binomial(1, p) for p in y_sigmoid])\r\n            # Difference in conditional probabilities P(y=1|X,T=1) - P(y=1|X,T=0)\r\n            true_eff = (1 / (1 + np.exp(-(X[:, 0]+eps)))) - (1 / (1 + np.exp(-eps)))\r\n        else:\r\n            y = X[:, 0] * T + np.random.normal(size=(100000,))\r\n            true_eff = X[:, 0]\r\n\r\n        y = y.reshape(-1, 1)\r\n        T = T.reshape(-1, 1)\r\n        return y, T, X, true_eff\r\n\r\n    def test_comparison(self):\r\n\r\n        def reg():\r\n            return LinearRegression()\r\n\r\n        def clf():\r\n            return LogisticRegression()\r\n\r\n        test_cases = [\r\n            {\"name\":\"continuous_outcome\", \"discrete_outcome\": False},\r\n            {\"name\":\"discrete_outcome\", \"discrete_outcome\": True}\r\n        ]\r\n\r\n        for case in test_cases:\r\n            with self.subTest(case[\"name\"]):\r\n                discrete_outcome = case[\"discrete_outcome\"]\r\n\r\n                if discrete_outcome:\r\n                    y, T, X, true_eff = self._get_data(discrete_outcome=True)\r\n\r\n                    models = [('ldml', LinearDML(model_y=clf(), model_t=clf(), discrete_treatment=True,\r\n                                                 discrete_outcome=discrete_outcome, cv=3)),\r\n                            ('sldml', SparseLinearDML(model_y=clf(), model_t=clf(), discrete_treatment=True,\r\n                                                      discrete_outcome=discrete_outcome,\r\n                                                      featurizer=PolynomialFeatures(degree=2, include_bias=False),\r\n                                                      cv=3)),\r\n                            ('drlearner', DRLearner(model_propensity=clf(), model_regression=clf(), model_final=reg(),\r\n                                                    discrete_outcome=discrete_outcome, cv=3)),\r\n                            ('rlearner', NonParamDML(model_y=clf(), model_t=clf(), model_final=reg(),\r\n                                                    discrete_treatment=True, discrete_outcome=discrete_outcome, cv=3)),\r\n                            ('dml3dlasso', DML(model_y=clf(), model_t=clf(), model_final=reg(), discrete_treatment=True,\r\n                                               discrete_outcome=discrete_outcome,\r\n                                               featurizer=PolynomialFeatures(degree=3), cv=3)),\r\n                            # SLearner as baseline for rootpehe score - not enough variation in rscore w/ above models\r\n                            ('slearner', SLearner(overall_model=reg())),\r\n                            ]\r\n\r\n                else:\r\n                    y, T, X, true_eff = self._get_data()\r\n\r\n                    models = [('ldml', LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True, cv=3)),\r\n                            ('sldml', SparseLinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True,\r\n                                                        featurizer=PolynomialFeatures(degree=2, include_bias=False),\r\n                                                        cv=3)),\r\n                            ('xlearner', XLearner(models=reg(), cate_models=reg(), propensity_model=clf())),\r\n                            ('dalearner', DomainAdaptationLearner(models=reg(), final_models=reg(),\r\n                                                                  propensity_model=clf())),\r\n                            ('slearner', SLearner(overall_model=reg())),\r\n                            ('tlearner', TLearner(models=reg())),\r\n                            ('drlearner', DRLearner(model_propensity=clf(), model_regression=reg(),\r\n                                                    model_final=reg(), cv=3)),\r\n                            ('rlearner', NonParamDML(model_y=reg(), model_t=clf(), model_final=reg(),\r\n                                                    discrete_treatment=True, cv=3)),\r\n                            ('dml3dlasso', DML(model_y=reg(), model_t=clf(), model_final=reg(),\r\n                                               discrete_treatment=True, featurizer=PolynomialFeatures(degree=3), cv=3))\r\n                            ]\r\n\r\n                (X_train, X_val, T_train, T_val,\r\n                Y_train, Y_val, _, true_eff_val) = train_test_split(X, T, y, true_eff, test_size=.4)\r\n\r\n                models = Parallel(n_jobs=1, verbose=1)(delayed(_fit_model)(name, mdl,\r\n                                                                        Y_train, T_train, X_train)\r\n                                                    for name, mdl in models)\r\n\r\n                if discrete_outcome:\r\n                    scorer = RScorer(model_y=clf(), model_t=clf(),\r\n                                    discrete_treatment=True, discrete_outcome=discrete_outcome,\r\n                                    cv=3, mc_iters=2, mc_agg='median')\r\n                else:\r\n                    scorer = RScorer(model_y=reg(), model_t=clf(),\r\n                                    discrete_treatment=True, cv=3,\r\n                                    mc_iters=2, mc_agg='median')\r\n\r\n                scorer.fit(Y_val, T_val, X=X_val)\r\n                rscore = [scorer.score(mdl) for _, mdl in models]\r\n                rootpehe_score = [np.sqrt(np.mean((true_eff_val.flatten() - mdl.effect(X_val).flatten())**2))\r\n                                for _, mdl in models]\r\n                # Checking neg corr between rscore and rootpehe (precision in estimating heterogeneous effects)\r\n                assert LinearRegression().fit(np.array(rscore).reshape(-1, 1), np.array(rootpehe_score)).coef_ < 0.5\r\n                mdl, _ = scorer.best_model([mdl for _, mdl in models])\r\n                rootpehe_best = np.sqrt(np.mean((true_eff_val.flatten() - mdl.effect(X_val).flatten())**2))\r\n                # Checking best model selection behaves as intended\r\n                assert rootpehe_best < 1.5 * np.min(rootpehe_score) + 0.05\r\n                mdl, _ = scorer.ensemble([mdl for _, mdl in models])\r\n                rootpehe_ensemble = np.sqrt(np.mean((true_eff_val.flatten() - mdl.effect(X_val).flatten())**2))\r\n                # Checking cate ensembling behaves as intended\r\n                assert rootpehe_ensemble < 1.5 * np.min(rootpehe_score) + 0.05\r\n"
  },
  {
    "path": "econml/tests/test_sensitivity_analysis.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\nimport pytest\n\nfrom econml.dml import LinearDML, CausalForestDML\nfrom econml.dr import LinearDRLearner\nfrom econml.validate.sensitivity_analysis import sensitivity_interval\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\nimport numpy as np\n\n\n\nclass TestSensitivityAnalysis(unittest.TestCase):\n\n    def test_params(self):\n        # test alpha when calling through lineardml\n\n        n = 1000\n        a = np.random.normal(size=5)\n        X = np.random.normal(size=(n,5), loc=[1,0.5,0,0,0])/3 # closest to center 1, then 2, then 3\n        centers = np.array([[1,0,0,0,0], [0,1,0,0,0]]) # uncomment for binary treatment\n\n        ds = X[:,None,:]-centers[None,:,:]\n        ds = np.einsum(\"nci,nci->nc\", ds, ds)\n\n        ps_r = np.exp(-ds)\n        ps = ps_r / np.sum(ps_r, axis=1, keepdims=True)\n\n        T = np.random.default_rng().multinomial(1, ps) @ np.arange(len(centers))\n        Y = np.random.normal(size=n) + 3*(T == 1)*X[:,1] - (T == 2) + 2 * X @ a\n\n        ests = [\n            LinearDML(\n                model_y=LinearRegression(),\n                model_t=LogisticRegression(),\n                # implicitly test that discrete binary treatment works for dml\n                # other permutations are tested in test_dml\n                discrete_treatment=True,\n                cv=3,\n                random_state=0,\n            ),\n            CausalForestDML(\n                model_y=LinearRegression(),\n                model_t=LogisticRegression(),\n                discrete_treatment=True,\n                cv=3,\n                random_state=0,\n            ),\n            LinearDRLearner(\n                model_regression=LinearRegression(),\n                model_propensity=LogisticRegression(),\n                cv=3,\n                random_state=0,\n            )\n        ]\n\n        for est in ests:\n\n            est.fit(Y, T, X=X, W=None)\n\n            T_arg = {}\n            if isinstance(est, LinearDRLearner):\n                T_arg = {'T': 1}\n\n            # baseline sensitivity results\n            lb, ub = est.sensitivity_interval(**T_arg, alpha=0.05, c_y=0.05, c_t=0.05, rho=1)\n            rv = est.robustness_value(**T_arg, alpha=0.05)\n\n            # check that alpha is passed through\n            lb2, ub2 = est.sensitivity_interval(**T_arg, alpha=0.5, c_y=0.05, c_t=0.05, rho=1)\n            self.assertTrue(lb < ub)\n            self.assertTrue(lb2 < ub2)\n            self.assertTrue(lb2 > lb)\n            self.assertTrue(ub2 < ub)\n\n            rv2 = est.robustness_value(**T_arg, alpha=0.5)\n            self.assertTrue(rv2 > rv)\n\n            # check that c_y, c_d are passed through\n            lb3, ub3 = est.sensitivity_interval(**T_arg, alpha=0.05, c_y=0.3, c_t=0.3, rho=1)\n            self.assertTrue(lb3 < lb)\n            self.assertTrue(ub3 > ub)\n\n            # check that interval_type is passed through\n            lb4, ub4 = est.sensitivity_interval(**T_arg, alpha=0.05,\n                                                c_y=0.05, c_t=0.05, rho=1, interval_type='theta')\n            self.assertTrue(lb4 > lb)\n            self.assertTrue(ub4 < ub)\n            self.assertTrue(lb4 < ub4)\n\n            rv4 = est.robustness_value(**T_arg, alpha=0.05, interval_type='theta')\n            self.assertTrue(rv4 > rv)\n\n            # check that null_hypothesis is passed through\n            rv5 = est.robustness_value(**T_arg, alpha=0.05, null_hypothesis=10)\n            self.assertNotEqual(rv5, rv)\n\n\n    def test_invalid_params(self):\n\n        theta = 0.5\n        sigma = 0.5\n        nu = 0.5\n        cov = np.random.normal(size=(3, 3))\n\n        sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=0.05, c_t=0.05, rho=1)\n\n        # check that c_y, c_y, rho are constrained\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=-0.5, c_t=0.05, rho=1)\n\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=0.05, c_t=-0.5, rho=1)\n\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=1.5, c_t=0.05, rho=1)\n\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=0.05, c_t=0.05, rho=-1.5)\n\n        # ensure we raise an error on invalid sigma, nu\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, -1, nu, cov, alpha=0.05, c_y=0.05, c_t=0.05, rho=1)\n\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma,-1, cov, alpha=0.05, c_y=0.05, c_t=0.05, rho=1)\n\n        # ensure failure on invalid interval_type\n        with pytest.raises(ValueError):\n            sensitivity_interval(theta, sigma, nu, cov, alpha=0.05, c_y=0.05, c_t=0.05, rho=1, interval_type='foo')\n\n"
  },
  {
    "path": "econml/tests/test_shap.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nimport unittest\nimport shap\nfrom econml.dml import LinearDML, CausalForestDML, NonParamDML\nfrom econml.orf import DMLOrthoForest, DROrthoForest\nfrom econml.dr import DRLearner, ForestDRLearner\nfrom econml.metalearners import TLearner, SLearner, XLearner, DomainAdaptationLearner\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, Lasso\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.preprocessing import PolynomialFeatures\n\n\nclass TestShap(unittest.TestCase):\n    def test_continuous_t(self):\n        n = 100\n        d_x = 3\n        d_w = 2\n        X = np.random.normal(size=(n, d_x))\n        W = np.random.normal(size=(n, d_w))\n        for d_t in [2, 1]:\n            for d_y in [3, 1]:\n                Y = np.random.normal(size=(n, d_y))\n                Y = Y.flatten() if d_y == 1 else Y\n                T = np.random.normal(size=(n, d_t))\n                T = T.flatten() if d_t == 1 else T\n                for featurizer in [None, PolynomialFeatures(degree=2, include_bias=False)]:\n\n                    est_list = [LinearDML(model_y=LinearRegression(),\n                                          model_t=LinearRegression(), featurizer=featurizer),\n                                CausalForestDML(model_y=LinearRegression(), model_t=LinearRegression())]\n                    if d_t == 1:\n                        est_list += [\n                            NonParamDML(model_y=LinearRegression(\n                            ), model_t=LinearRegression(), model_final=RandomForestRegressor(), featurizer=featurizer),\n                        ]\n                    for est in est_list:\n                        with self.subTest(est=type(est).__name__, featurizer=repr(featurizer), d_y=d_y, d_t=d_t):\n                            est.fit(Y, T, X=X, W=W)\n                            shap_values = est.shap_values(X[:10], feature_names=[\"a\", \"b\", \"c\"],\n                                                          background_samples=None)\n\n                            for i, output in enumerate(est.cate_output_names()):\n                                for j, treat in enumerate(est.cate_treatment_names()):\n                                    # test base values equals to mean of constant marginal effect\n                                    if not isinstance(est, (CausalForestDML, DMLOrthoForest)):\n                                        mean_cate = est.const_marginal_effect(X[:10]).mean(axis=0)\n                                        mean_cate = np.array(mean_cate).reshape((d_y, d_t))[i, j]\n                                        self.assertAlmostEqual(\n                                            shap_values[output][treat].base_values[0], mean_cate, delta=1e-2)\n\n                                    # test shape of shap values output is as expected\n                                    self.assertEqual(len(shap_values[output]), d_t)\n                                    self.assertEqual(len(shap_values), d_y)\n                                    # test shape of attribute of explanation object is as expected\n                                    self.assertEqual(shap_values[output][treat].values.shape[0], 10)\n                                    self.assertEqual(shap_values[output][treat].data.shape[0], 10)\n                                    self.assertEqual(shap_values[output][treat].base_values.shape, (10,))\n                                    # test length of feature names equals to shap values shape\n                                    self.assertEqual(\n                                        len(shap_values[output][treat].feature_names),\n                                        shap_values[output][treat].values.shape[1])\n\n    def test_discrete_t(self):\n        n = 100\n        d_x = 3\n        d_w = 2\n        X = np.random.normal(size=(n, d_x))\n        W = np.random.normal(size=(n, d_w))\n        for d_t in [3, 2]:\n            for d_y in [3, 1]:\n                Y = np.random.normal(size=(n, d_y))\n                Y = Y.flatten() if d_y == 1 else Y\n                T = np.random.choice(range(d_t), size=(n,))\n                for featurizer in [None, PolynomialFeatures(degree=2, include_bias=False)]:\n\n                    est_list = [LinearDML(featurizer=featurizer, discrete_treatment=True),\n                                TLearner(models=RandomForestRegressor()),\n                                SLearner(overall_model=RandomForestRegressor()),\n                                XLearner(models=RandomForestRegressor()),\n                                DomainAdaptationLearner(models=RandomForestRegressor(),\n                                                        final_models=RandomForestRegressor()),\n                                CausalForestDML(model_y=LinearRegression(), model_t=LogisticRegression(),\n                                                discrete_treatment=True)\n                                ]\n                    if d_t == 2:\n                        est_list += [\n                            NonParamDML(model_y=LinearRegression(\n                            ), model_t=LogisticRegression(), model_final=RandomForestRegressor(),\n                                featurizer=featurizer, discrete_treatment=True)]\n                    if d_y == 1:\n                        est_list += [DRLearner(multitask_model_final=True, featurizer=featurizer),\n                                     DRLearner(multitask_model_final=False, featurizer=featurizer),\n                                     ForestDRLearner()]\n                    for est in est_list:\n                        with self.subTest(est=type(est).__name__, featurizer=repr(featurizer), d_y=d_y, d_t=d_t):\n                            if isinstance(est, (TLearner, SLearner, XLearner, DomainAdaptationLearner)):\n                                est.fit(Y, T, X=X)\n                            else:\n                                est.fit(Y, T, X=X, W=W)\n                            shap_values = est.shap_values(X[:10], feature_names=[\"a\", \"b\", \"c\"],\n                                                          background_samples=None)\n                            for i, output in enumerate(est.cate_output_names()):\n                                for j, treat in enumerate(est.cate_treatment_names()):\n                                    # test base values equals to mean of constant marginal effect\n                                    if not isinstance(est, (CausalForestDML, ForestDRLearner, DROrthoForest)):\n                                        mean_cate = est.const_marginal_effect(X[:10]).mean(axis=0)\n                                        mean_cate = np.array(mean_cate).reshape((d_y, d_t - 1))[i, j]\n                                        self.assertAlmostEqual(\n                                            shap_values[output][treat].base_values[0], mean_cate, delta=1e-2)\n\n                                    # test shape of shap values output is as expected\n                                    self.assertEqual(len(shap_values[output]), d_t - 1)\n                                    self.assertEqual(len(shap_values), d_y)\n                                    # test shape of attribute of explanation object is as expected\n                                    self.assertEqual(shap_values[output][treat].values.shape[0], 10)\n                                    self.assertEqual(shap_values[output][treat].data.shape[0], 10)\n                                    self.assertEqual(shap_values[output][treat].base_values.shape, (10,))\n                                    # test length of feature names equals to shap values shape\n                                    self.assertEqual(\n                                        len(shap_values[output][treat].feature_names),\n                                        shap_values[output][treat].values.shape[1])\n\n    def test_identical_output(self):\n        # import here since otherwise test collection would fail if matplotlib is not installed\n        import matplotlib\n        matplotlib.use('Agg')\n        from shap.plots import scatter, heatmap, bar, beeswarm, waterfall\n\n        # Treatment effect function\n        def exp_te(x):\n            return np.exp(2 * x[0])\n        n = 500\n        n_w = 10\n        support_size = 5\n        n_x = 2\n        # Outcome support\n        support_Y = np.random.choice(range(n_w), size=support_size, replace=False)\n        coefs_Y = np.random.uniform(0, 1, size=(support_size,))\n\n        def epsilon_sample(n):\n            return np.random.uniform(-1, 1, size=(n,))\n        # Treatment support\n        support_T = support_Y\n        coefs_T = np.random.uniform(0, 1, size=support_size)\n\n        def eta_sample(n):\n            return np.random.uniform(-1, 1, size=n)\n        # Generate controls, covariates, treatments and outcomes\n        W = np.random.normal(0, 1, size=(n, n_w))\n        X = np.random.uniform(0, 1, size=(n, n_x))\n        # Heterogeneous treatment effects\n        TE = np.array([np.exp(2 * x_i[0]) for x_i in X]).flatten()\n        T = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\n        Y = (TE * T) + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\n        Y = np.tile(Y.reshape(-1, 1), (1, 2))\n        est = LinearDML(model_y=Lasso(),\n                        model_t=Lasso(),\n                        random_state=123,\n                        fit_cate_intercept=True,\n                        featurizer=PolynomialFeatures(degree=2, include_bias=False))\n        est.fit(Y, T, X=X, W=W)\n        shap_values1 = est.shap_values(X[:10], feature_names=[\"A\", \"B\"], treatment_names=[\"orange\"],\n                                       background_samples=None)\n        est = LinearDML(model_y=Lasso(),\n                        model_t=Lasso(),\n                        random_state=123,\n                        fit_cate_intercept=True,\n                        featurizer=PolynomialFeatures(degree=2, include_bias=False))\n        est.fit(Y[:, 0], T, X=X, W=W)\n        shap_values2 = est.shap_values(X[:10], feature_names=[\"A\", \"B\"], treatment_names=[\"orange\"],\n                                       background_samples=None)\n        np.testing.assert_allclose(shap_values1[\"Y0\"][\"orange\"].data,\n                                   shap_values2[\"Y0\"][\"orange\"].data)\n        np.testing.assert_allclose(shap_values1[\"Y0\"][\"orange\"].values,\n                                   shap_values2[\"Y0\"][\"orange\"].values)\n        # TODO There is a matrix dimension mismatch between multiple outcome and single outcome, should solve that\n        # through shap package.\n        np.testing.assert_allclose(shap_values1[\"Y0\"][\"orange\"].main_effects,\n                                   shap_values2[\"Y0\"][\"orange\"].main_effects)\n        np.testing.assert_allclose(shap_values1[\"Y0\"][\"orange\"].base_values,\n                                   shap_values2[\"Y0\"][\"orange\"].base_values)\n\n        # test shap could generate the plot from the shap_values\n        heatmap(shap_values1[\"Y0\"][\"orange\"], show=False)\n        if shap.__version__ != \"0.40.0\":\n            # waterfall is broken in this version, fixed by https://github.com/slundberg/shap/pull/2444\n            waterfall(shap_values1[\"Y0\"][\"orange\"][6], show=False)\n        scatter(shap_values1[\"Y0\"][\"orange\"][:, \"A\"], show=False)\n        bar(shap_values1[\"Y0\"][\"orange\"], show=False)\n        beeswarm(shap_values1[\"Y0\"][\"orange\"], show=False)\n"
  },
  {
    "path": "econml/tests/test_statsmodels.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\n\nimport numpy as np\nimport pytest\n\nimport scipy.special\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom statsmodels.regression.linear_model import WLS\nfrom statsmodels.sandbox.regression.gmm import IV2SLS\nfrom statsmodels.tools.tools import add_constant\n\nfrom econml.inference import StatsModelsInference, StatsModelsInferenceDiscrete\nfrom econml.dml import LinearDML, NonParamDML\nfrom econml.dr import LinearDRLearner\nfrom econml.iv.dml import DMLIV\nfrom econml.iv.dr import LinearDRIV\nfrom econml.sklearn_extensions.linear_model import WeightedLasso, StatsModelsLinearRegression\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression as OLS\nfrom econml.sklearn_extensions.linear_model import StatsModels2SLS\nfrom econml.utilities import (ndim, transpose, shape, reshape)\n\n\nclass StatsModelsOLS:\n    \"\"\"\n    Helper class to wrap a StatsModels OLS model to conform to the sklearn API.\n\n    Parameters\n    ----------\n    fit_intercept: bool (default False)\n        Whether to fit an intercept\n\n    Attributes\n    ----------\n    fit_args: dict of str: object\n        The arguments to pass to the `OLS` regression's `fit` method.  See the\n        statsmodels documentation for more information.\n    results: RegressionResults\n        After `fit` has been called, this attribute will store the regression results.\n    \"\"\"\n\n    def __init__(self, fit_intercept=True, fit_args={}):\n        self.fit_args = fit_args\n        self.fit_intercept = fit_intercept\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"\n        Fit the ordinary least squares model.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            Training data\n        y : array_like, shape (n_samples, 1) or (n_samples,)\n            Target values\n        sample_weight : array_like, shape (n_samples,)\n            Individual weights for each sample\n\n        Returns\n        -------\n        self\n        \"\"\"\n        assert ndim(y) == 1 or (ndim(y) == 2 and shape(y)[1] == 1)\n        y = reshape(y, (-1,))\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n        if sample_weight is not None:\n            ols = WLS(y, X, weights=sample_weight, hasconst=self.fit_intercept)\n        else:\n            ols = WLS(y, X, hasconst=self.fit_intercept)\n        self.results = ols.fit(**self.fit_args)\n        return self\n\n    def predict(self, X):\n        \"\"\"\n        Predict using the model.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            Samples.\n\n        Returns\n        -------\n        array, shape (n_samples,)\n            Predicted values\n        \"\"\"\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n        return self.results.predict(X)\n\n    def predict_interval(self, X, alpha=.05):\n        \"\"\"\n        Get a confidence interval for the prediction at `X`.\n\n        Parameters\n        ----------\n        X : array_like\n            The features at which to predict\n        alpha : float\n            The significance level to use for the interval\n\n        Returns\n        -------\n        array, shape (2, n_samples)\n            Lower and upper bounds for the confidence interval at each sample point\n        \"\"\"\n        if self.fit_intercept:\n            X = add_constant(X, has_constant='add')\n        # NOTE: we use `obs = False` to get a confidence, rather than prediction, interval\n        preds = self.results.get_prediction(X).conf_int(alpha=alpha, obs=False)\n        # statsmodels uses the last dimension instead of the first to store the confidence intervals,\n        # so we need to transpose the result\n        return transpose(preds)\n\n    @property\n    def coef_(self):\n        if self.fit_intercept:\n            return self.results.params[1:]\n        else:\n            return self.results.params\n\n    def coef__interval(self, alpha):\n        if self.fit_intercept:\n            return transpose(self.results.conf_int(alpha=alpha)[1:])\n        else:\n            return transpose(self.results.conf_int(alpha=alpha))\n\n    @property\n    def intercept_(self):\n        if self.fit_intercept:\n            return self.results.params[0]\n        else:\n            return 0\n\n    def intercept__interval(self, alpha):\n        if self.fit_intercept:\n            return self.results.conf_int(alpha=alpha)[0]\n        else:\n            return np.array([0, 0])\n\n\ndef _compare_classes(est, lr, X_test, alpha=.05, tol=1e-12):\n    assert np.all(np.abs(est.coef_ - lr.coef_) < tol), \"{}, {}\".format(est.coef_, lr.coef_)\n    assert np.all(np.abs(np.array(est.coef__interval(alpha=alpha)) -\n                         np.array(lr.coef__interval(alpha=alpha))) < tol), \\\n        \"{}, {}\".format(est.coef__interval(alpha=alpha), np.array(lr.coef__interval(alpha=alpha)))\n    assert np.all(np.abs(est.intercept_ - lr.intercept_) < tol), \"{}, {}\".format(est.intercept_, lr.intercept_)\n    assert np.all(np.abs(np.array(est.intercept__interval(alpha=alpha)) -\n                         np.array(lr.intercept__interval(alpha=alpha))) < tol), \\\n        \"{}, {}\".format(est.intercept__interval(alpha=alpha), lr.intercept__interval(alpha=alpha))\n    assert np.all(np.abs(est.predict(X_test) - lr.predict(X_test)) <\n                  tol), \"{}, {}\".format(est.predict(X_test), lr.predict(X_test))\n    assert np.all(np.abs(np.array(est.predict_interval(X_test, alpha=alpha)) -\n                         np.array(lr.predict_interval(X_test, alpha=alpha))) < tol), \\\n        \"{}, {}\".format(est.predict_interval(X_test, alpha=alpha), lr.predict_interval(X_test, alpha=alpha))\n\n\ndef _summarize(X, y, w=None):\n    original_w = w\n    if w is None:\n        w = np.ones((y.shape[0],))\n    X_unique = np.unique(X, axis=0)\n    y_sum_first = []\n    n_sum_first = []\n    var_first = []\n    X_final_first = []\n    w_sum_first = []\n    y_sum_sec = []\n    n_sum_sec = []\n    var_sec = []\n    X_final_sec = []\n    w_sum_sec = []\n    X1 = []\n    X2 = []\n    y1 = []\n    y2 = []\n    w1 = []\n    w2 = []\n    for it, xt in enumerate(X_unique):\n        mask = (X == xt).all(axis=1)\n        if mask.any():\n            y_mask = y[mask]\n            X_mask = X[mask]\n            w_mask = w[mask]\n            if np.sum(mask) >= 2:\n                X_mask_first = X_mask[:y_mask.shape[0] // 2]\n                X_mask_sec = X_mask[y_mask.shape[0] // 2:]\n                y_mask_first = y_mask[:y_mask.shape[0] // 2]\n                y_mask_sec = y_mask[y_mask.shape[0] // 2:]\n                w_mask_first = w_mask[:w_mask.shape[0] // 2]\n                w_mask_sec = w_mask[w_mask.shape[0] // 2:]\n\n                X1 = np.vstack([X1, X_mask_first]) if len(X1) > 0 else X_mask_first\n                y1 = np.concatenate((y1, y_mask_first)) if len(y1) > 0 else y_mask_first\n                w1 = np.concatenate((w1, w_mask_first)) if len(w1) > 0 else w_mask_first\n                X2 = np.vstack([X2, X_mask_sec]) if len(X2) > 0 else X_mask_sec\n                y2 = np.concatenate((y2, y_mask_sec)) if len(y2) > 0 else y_mask_sec\n                w2 = np.concatenate((w2, w_mask_sec)) if len(w2) > 0 else w_mask_sec\n\n                y_sum_first.append(np.mean(y_mask_first, axis=0))\n                w_sum_first.append(w_mask_first[0])\n                n_sum_first.append(len(y_mask_first))\n                var_first.append(np.var(y_mask_first, axis=0))\n                X_final_first.append(xt)\n                y_sum_sec.append(np.mean(y_mask_sec, axis=0))\n                w_sum_sec.append(w_mask_sec[0])\n                n_sum_sec.append(len(y_mask_sec))\n                var_sec.append(np.var(y_mask_sec, axis=0))\n                X_final_sec.append(xt)\n            else:\n                if np.random.binomial(1, .5, size=1) == 1:\n                    X1 = np.vstack([X1, X_mask]) if len(X1) > 0 else X_mask\n                    y1 = np.concatenate((y1, y_mask)) if len(y1) > 0 else y_mask\n                    w1 = np.concatenate((w1, w_mask)) if len(w1) > 0 else w_mask\n                    y_sum_first.append(np.mean(y_mask, axis=0))\n                    w_sum_first.append(w_mask[0])\n                    n_sum_first.append(len(y_mask))\n                    var_first.append(np.var(y_mask, axis=0))\n                    X_final_first.append(xt)\n                else:\n                    X2 = np.vstack([X2, X_mask]) if len(X2) > 0 else X_mask\n                    y2 = np.concatenate((y2, y_mask)) if len(y2) > 0 else y_mask\n                    w2 = np.concatenate((w2, w_mask)) if len(w2) > 0 else w_mask\n                    y_sum_sec.append(np.mean(y_mask, axis=0))\n                    w_sum_sec.append(w_mask[0])\n                    n_sum_sec.append(len(y_mask))\n                    var_sec.append(np.var(y_mask, axis=0))\n                    X_final_sec.append(xt)\n    if original_w is None:\n        return (X1, X2, y1, y2,\n                X_final_first, X_final_sec, y_sum_first, y_sum_sec, n_sum_first, n_sum_sec,\n                var_first, var_sec)\n\n    return (X1, X2, y1, y2, w1, w2,\n            X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first, n_sum_sec,\n            var_first, var_sec)\n\n\ndef _compare_dml_classes(est, lr, X_test, alpha=.05, tol=1e-10):\n    assert np.all(np.abs(est.coef_ - lr.coef_) < tol), \"{}, {}\".format(est.coef_, lr.coef_)\n    assert np.all(np.abs(np.array(est.coef__interval(alpha=alpha)) - np.array(lr.coef__interval(alpha=alpha))) <\n                  tol), \\\n        \"{}, {}\".format(np.array(est.coef__interval(alpha=alpha)), np.array(lr.coef__interval(alpha=alpha)))\n    assert np.all(np.abs(est.effect(X_test) - lr.effect(X_test)) <\n                  tol), \"{}, {}\".format(est.effect(X_test), lr.effect(X_test))\n    assert np.all(np.abs(np.array(est.effect_interval(X_test, alpha=alpha)) -\n                         np.array(lr.effect_interval(X_test, alpha=alpha))) < tol), \\\n        \"{}, {}\".format(est.effect_interval(X_test, alpha=alpha), lr.effect_interval(X_test, alpha=alpha))\n\n\ndef _compare_dr_classes(est, lr, X_test, alpha=.05, tol=1e-10):\n    assert np.all(np.abs(est.coef_(T=1) - lr.coef_(T=1)) < tol), \"{}, {}\".format(est.coef_(T=1), lr.coef_(T=1))\n    assert np.all(np.abs(np.array(est.coef__interval(T=1, alpha=alpha)) -\n                         np.array(lr.coef__interval(T=1, alpha=alpha))) < tol), \\\n        \"{}, {}\".format(np.array(est.coef__interval(T=1, alpha=alpha)), np.array(lr.coef__interval(T=1, alpha=alpha)))\n    assert np.all(np.abs(est.effect(X_test) - lr.effect(X_test)) <\n                  tol), \"{}, {}\".format(est.effect(X_test), lr.effect(X_test))\n    assert np.all(np.abs(np.array(est.effect_interval(X_test, alpha=alpha)) -\n                         np.array(lr.effect_interval(X_test, alpha=alpha))) < tol), \\\n        \"{}, {}\".format(est.effect_interval(X_test, alpha=alpha), lr.effect_interval(X_test, alpha=alpha))\n\n\n@pytest.mark.serial\nclass TestStatsModels(unittest.TestCase):\n\n    def test_comp_with_lr(self):\n        \"\"\"Testing that we recover the same as sklearn's linear regression in terms of point estimates.\"\"\"\n        np.random.seed(123)\n        n = 1000\n        d = 3\n        X = np.random.binomial(1, .8, size=(n, d))\n        T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n\n        def true_effect(x):\n            return x[:, 0] + .5\n        y = true_effect(X) * T + X[:, 0] + X[:, 2]\n        weights = np.random.uniform(0, 1, size=(X.shape[0]))\n\n        est = OLS().fit(X, y)\n        lr = LinearRegression().fit(X, y)\n        assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n        assert np.all(np.abs(est.intercept_ - lr.intercept_) < 1e-12), \"{}, {}\".format(est.coef_, lr.intercept_)\n\n        est = OLS(fit_intercept=False).fit(X, y)\n        lr = LinearRegression(fit_intercept=False).fit(X, y)\n        assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n        assert np.all(np.abs(est.intercept_ - lr.intercept_) < 1e-12), \"{}, {}\".format(est.coef_, lr.intercept_)\n\n        est = OLS(fit_intercept=False).fit(X, y, sample_weight=weights)\n        lr = LinearRegression(fit_intercept=False).fit(X, y, sample_weight=weights)\n        assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n        assert np.all(np.abs(est.intercept_ - lr.intercept_) < 1e-12), \"{}, {}\".format(est.coef_, lr.intercept_)\n\n        n = 1000\n        d = 3\n        for p in np.arange(1, 4):\n            X = np.random.binomial(1, .8, size=(n, d))\n            T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n\n            def true_effect(x):\n                return np.hstack([x[:, [0]] + .5 + t for t in range(p)])\n            y = np.zeros((n, p))\n            y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * p] + \\\n                (0 * X[:, [0] * p] + 1) * np.random.normal(0, 1, size=(n, p))\n            weights = np.random.uniform(0, 1, size=(X.shape[0]))\n\n            est = OLS().fit(X, y)\n            lr = LinearRegression().fit(X, y)\n            assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n            assert np.all(np.abs(est.intercept_ - lr.intercept_) <\n                          1e-12), \"{}, {}\".format(est.intercept_, lr.intercept_)\n\n            est = OLS(fit_intercept=False).fit(X, y)\n            lr = LinearRegression(fit_intercept=False).fit(X, y)\n            assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n            assert np.all(np.abs(est.intercept_ - lr.intercept_) <\n                          1e-12), \"{}, {}\".format(est.intercept_, lr.intercept_)\n\n            est = OLS(fit_intercept=False).fit(X, y, sample_weight=weights)\n            lr = LinearRegression(fit_intercept=False).fit(X, y, sample_weight=weights)\n            assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n            assert np.all(np.abs(est.intercept_ - lr.intercept_) <\n                          1e-12), \"{}, {}\".format(est.intercept_, lr.intercept_)\n\n    def test_o_dtype(self):\n        \"\"\"Testing that the models still work when the np arrays are of O dtype.\"\"\"\n        np.random.seed(123)\n        n = 1000\n        d = 3\n\n        X = np.random.normal(size=(n, d)).astype('O')\n        y = np.random.normal(size=n).astype('O')\n\n        est = OLS().fit(X, y)\n        lr = LinearRegression().fit(X, y)\n        assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n        assert np.all(np.abs(est.intercept_ - lr.intercept_) < 1e-12), \"{}, {}\".format(est.coef_, lr.intercept_)\n\n        est = OLS(fit_intercept=False).fit(X, y)\n        lr = LinearRegression(fit_intercept=False).fit(X, y)\n        assert np.all(np.abs(est.coef_ - lr.coef_) < 1e-12), \"{}, {}\".format(est.coef_, lr.coef_)\n        assert np.all(np.abs(est.intercept_ - lr.intercept_) < 1e-12), \"{}, {}\".format(est.coef_, lr.intercept_)\n\n    def test_inference(self):\n        \"\"\"Testing that we recover the expected standard errors and confidence intervals in a known example.\"\"\"\n        # 1-d output\n        d = 3\n        X = np.vstack([np.eye(d)])\n        y = X[:, 0]\n        est = OLS(fit_intercept=False, cov_type=\"nonrobust\").fit(X, y)\n        assert np.all(np.abs(est.coef_ - [1, 0, 0]) <= 1e-12), \"{}, {}\".format(est.coef_, [1, 0, 0])\n        assert np.all(np.abs(est.coef__interval() - np.array([[1, 0, 0], [1, 0, 0]])) <= 1e-12), \\\n            \"{}, {}\".format(est.coef__interval(), np.array([[1, 0, 0], [1, 0, 0]]))\n        assert np.all(est.coef_stderr_ <= 1e-12)\n        assert np.all(est._param_var <= 1e-12)\n\n        d = 3\n        X = np.vstack([np.eye(d), np.ones((1, d)), np.zeros((1, d))])\n        y = X[:, 0]\n        est = OLS(fit_intercept=True, cov_type=\"nonrobust\").fit(X, y)\n        assert np.all(np.abs(est.coef_ - np.array([1] + [0] * (d - 1))) <=\n                      1e-12), \"{}, {}\".format(est.coef_, [1] + [0] * (d - 1))\n        assert np.all(np.abs(est.coef__interval() - np.array([[1] + [0] * (d - 1), [1] + [0] * (d - 1)])) <= 1e-12), \\\n            \"{}, {}\".format(est.coef__interval(), np.array([[1] + [0] * (d - 1), [1] + [0] * (d - 1)]))\n        assert np.all(est.coef_stderr_ <= 1e-12)\n        assert np.all(est._param_var <= 1e-12)\n        assert np.abs(est.intercept_) <= 1e-12\n        assert np.all(np.abs(est.intercept__interval()) <= 1e-12)\n\n        d = 3\n        X = np.vstack([np.eye(d)])\n        y = np.concatenate((X[:, 0] - 1, X[:, 0] + 1))\n        X = np.vstack([X, X])\n        est = OLS(fit_intercept=False, cov_type=\"nonrobust\").fit(X, y)\n        assert np.all(np.abs(est.coef_ - ([1] + [0] * (d - 1))) <=\n                      1e-12), \"{}, {}\".format(est.coef_, [1] + [0] * (d - 1))\n        assert np.all(np.abs(est.coef_stderr_ - np.array([1] * d)) <= 1e-12)\n        assert np.all(np.abs(est.coef__interval()[0] -\n                             np.array([scipy.stats.norm.ppf(.025, loc=1, scale=1)] +\n                                      [scipy.stats.norm.ppf(.025, loc=0, scale=1)] * (d - 1))) <= 1e-12), \\\n            \"{}, {}\".format(est.coef__interval()[0], np.array([scipy.stats.norm.ppf(.025, loc=1, scale=1)] +\n                                                              [scipy.stats.norm.ppf(.025, loc=0, scale=1)] * (d - 1)))\n        assert np.all(np.abs(est.coef__interval()[1] -\n                             np.array([scipy.stats.norm.ppf(.975, loc=1, scale=1)] +\n                                      [scipy.stats.norm.ppf(.975, loc=0, scale=1)] * (d - 1))) <= 1e-12), \\\n            \"{}, {}\".format(est.coef__interval()[1], np.array([scipy.stats.norm.ppf(.975, loc=1, scale=1)] +\n                                                              [scipy.stats.norm.ppf(.975, loc=0, scale=1)] * (d - 1)))\n\n        # 2-d output\n        d = 3\n        p = 4\n        X = np.vstack([np.eye(d)])\n        y = np.vstack((X[:, [0] * p] - 1, X[:, [0] * p] + 1))\n        X = np.vstack([X, X])\n        est = OLS(fit_intercept=False, cov_type=\"nonrobust\").fit(X, y)\n        for t in range(p):\n            assert np.all(np.abs(est.coef_[t] - ([1] + [0] * (d - 1))) <=\n                          1e-12), \"{}, {}\".format(est.coef_[t], [1] + [0] * (d - 1))\n            assert np.all(np.abs(est.coef_stderr_[t] - np.array([1] * d)) <= 1e-12), \"{}\".format(est.coef_stderr_[t])\n            assert np.all(np.abs(est.coef__interval()[0][t] -\n                                 np.array([scipy.stats.norm.ppf(.025, loc=1, scale=1)] +\n                                          [scipy.stats.norm.ppf(.025, loc=0, scale=1)] * (d - 1))) <= 1e-12), \\\n                \"{}, {}\".format(est.coef__interval()[0][t],\n                                np.array([scipy.stats.norm.ppf(.025, loc=1, scale=1)] +\n                                         [scipy.stats.norm.ppf(.025, loc=0, scale=1)] * (d - 1)))\n            assert np.all(np.abs(est.coef__interval()[1][t] -\n                                 np.array([scipy.stats.norm.ppf(.975, loc=1, scale=1)] +\n                                          [scipy.stats.norm.ppf(.975, loc=0, scale=1)] * (d - 1))) <= 1e-12), \\\n                \"{}, {}\".format(est.coef__interval()[1][t],\n                                np.array([scipy.stats.norm.ppf(.975, loc=1, scale=1)] +\n                                         [scipy.stats.norm.ppf(.975, loc=0, scale=1)] * (d - 1)))\n            assert np.all(np.abs(est.intercept_[t]) <= 1e-12), \"{}\".format(est.intercept_[t])\n            assert np.all(np.abs(est.intercept_stderr_[t]) <= 1e-12), \"{}\".format(est.intercept_stderr_[t])\n            assert np.all(np.abs(est.intercept__interval()[0][t]) <=\n                          1e-12), \"{}\".format(est.intercept__interval()[0][t])\n\n        d = 3\n        p = 4\n        X = np.vstack([np.eye(d), np.zeros((1, d))])\n        y = np.vstack((X[:, [0] * p] - 1, X[:, [0] * p] + 1))\n        X = np.vstack([X, X])\n        est = OLS(fit_intercept=True, cov_type=\"nonrobust\").fit(X, y)\n        for t in range(p):\n            assert np.all(np.abs(est.coef_[t] - ([1] + [0] * (d - 1))) <=\n                          1e-12), \"{}, {}\".format(est.coef_[t], [1] + [0] * (d - 1))\n            assert np.all(np.abs(est.coef_stderr_[t] - np.array([np.sqrt(2)] * d)) <=\n                          1e-12), \"{}\".format(est.coef_stderr_[t])\n            assert np.all(np.abs(est.coef__interval()[0][t] -\n                                 np.array([scipy.stats.norm.ppf(.025, loc=1, scale=np.sqrt(2))] +\n                                          [scipy.stats.norm.ppf(.025, loc=0, scale=np.sqrt(2))] * (d - 1))) <=\n                          1e-12), \\\n                \"{}, {}\".format(est.coef__interval()[0][t],\n                                np.array([scipy.stats.norm.ppf(.025, loc=1, scale=np.sqrt(2))] +\n                                         [scipy.stats.norm.ppf(.025, loc=0, scale=np.sqrt(2))] * (d - 1)))\n            assert np.all(np.abs(est.coef__interval()[1][t] -\n                                 np.array([scipy.stats.norm.ppf(.975, loc=1, scale=np.sqrt(2))] +\n                                          [scipy.stats.norm.ppf(.975, loc=0, scale=np.sqrt(2))] * (d - 1))) <=\n                          1e-12), \\\n                \"{}, {}\".format(est.coef__interval()[1][t],\n                                np.array([scipy.stats.norm.ppf(.975, loc=1, scale=np.sqrt(2))] +\n                                         [scipy.stats.norm.ppf(.975, loc=0, scale=np.sqrt(2))] * (d - 1)))\n            assert np.all(np.abs(est.intercept_[t]) <= 1e-12), \"{}\".format(est.intercept_[t])\n            assert np.all(np.abs(est.intercept_stderr_[t] - 1) <= 1e-12), \"{}\".format(est.intercept_stderr_[t])\n            assert np.all(np.abs(est.intercept__interval()[0][t] -\n                                 scipy.stats.norm.ppf(.025, loc=0, scale=1)) <= 1e-12), \\\n                \"{}, {}\".format(est.intercept__interval()[0][t], scipy.stats.norm.ppf(.025, loc=0, scale=1))\n\n    def test_comp_with_statsmodels(self):\n        \"\"\"Comparing with confidence intervals and standard errors of statsmodels in the un-weighted case.\"\"\"\n        np.random.seed(123)\n\n        # Single dimensional output y\n        n = 1000\n        d = 3\n        X = np.random.binomial(1, .8, size=(n, d))\n        T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n        weight = 0.5 * X[:, 1] + 1.2 * X[:, 2]\n\n        def true_effect(x):\n            return x[:, 0] + .5\n        y = true_effect(X) * T + X[:, 0] + X[:, 2] + np.random.normal(0, 1, size=(n,))\n        X_test = np.unique(np.random.binomial(1, .5, size=(n, d)), axis=0)\n        for fit_intercept in [True, False]:\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                est = OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y)\n                lr = StatsModelsOLS(fit_intercept=fit_intercept, fit_args={\n                                    'cov_type': cov_type, 'use_t': False}).fit(X, y)\n                _compare_classes(est, lr, X_test)\n                # compare with weight\n                est = OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y, sample_weight=weight)\n                lr = StatsModelsOLS(fit_intercept=fit_intercept, fit_args={\n                                    'cov_type': cov_type, 'use_t': False}).fit(X, y, sample_weight=weight)\n                _compare_classes(est, lr, X_test)\n\n        n = 1000\n        d = 3\n        X = np.random.normal(0, 1, size=(n, d))\n        y = X[:, 0] + X[:, 2] + np.random.normal(0, 1, size=(n,))\n        X_test = np.unique(np.random.binomial(1, .5, size=(n, d)), axis=0)\n        weight = abs(0.5 * X[:, 1] + 1.2 * X[:, 2])\n        for fit_intercept in [True, False]:\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                est = OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y)\n                lr = StatsModelsOLS(fit_intercept=fit_intercept, fit_args={\n                                    'cov_type': cov_type, 'use_t': False}).fit(X, y)\n                _compare_classes(est, lr, X_test)\n                # compare with weight\n                est = OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y, sample_weight=weight)\n                lr = StatsModelsOLS(fit_intercept=fit_intercept, fit_args={\n                                    'cov_type': cov_type, 'use_t': False}).fit(X, y, sample_weight=weight)\n                _compare_classes(est, lr, X_test)\n\n        d = 3\n        X = np.vstack([np.eye(d)])\n        y = np.concatenate((X[:, 0] - 1, X[:, 0] + 1))\n        X = np.vstack([X, X])\n        X_test = np.unique(np.random.binomial(1, .5, size=(n, d)), axis=0)\n        weight = np.random.uniform(0, 1, size=(X.shape[0],))\n        for cov_type in ['nonrobust', 'HC0', 'HC1']:\n            for alpha in [.01, .05, .1]:\n                _compare_classes(OLS(fit_intercept=False, cov_type=cov_type).fit(X, y),\n                                 StatsModelsOLS(fit_intercept=False, fit_args={\n                                                'cov_type': cov_type, 'use_t': False}).fit(X, y),\n                                 X_test, alpha=alpha)\n                # compare with weight\n                _compare_classes(OLS(fit_intercept=False, cov_type=cov_type).fit(X, y, sample_weight=weight),\n                                 StatsModelsOLS(fit_intercept=False, fit_args={\n                                                'cov_type': cov_type, 'use_t': False}).fit(X, y, sample_weight=weight),\n                                 X_test, alpha=alpha)\n\n        d = 3\n        X = np.vstack([np.eye(d), np.ones((1, d)), np.zeros((1, d))])\n        y = np.concatenate((X[:, 0] - 1, X[:, 0] + 1))\n        X = np.vstack([X, X])\n        X_test = np.unique(np.random.binomial(1, .5, size=(n, d)), axis=0)\n        weight = np.random.uniform(0, 1, size=(X.shape[0],))\n        for cov_type in ['nonrobust', 'HC0', 'HC1']:\n            _compare_classes(OLS(fit_intercept=True, cov_type=cov_type).fit(X, y),\n                             StatsModelsOLS(fit_intercept=True,\n                                            fit_args={'cov_type': cov_type, 'use_t': False}).fit(X, y), X_test)\n            # compare with weight\n            _compare_classes(OLS(fit_intercept=True, cov_type=cov_type).fit(X, y, sample_weight=weight),\n                             StatsModelsOLS(fit_intercept=True, fit_args={\n                                 'cov_type': cov_type, 'use_t': False}).fit(X, y, sample_weight=weight),\n                             X_test)\n\n        # Multi-dimensional output y\n        n = 1000\n        d = 3\n        for p in np.arange(1, 4):\n            X = np.random.binomial(1, .8, size=(n, d))\n            T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n\n            def true_effect(x):\n                return np.hstack([x[:, [0]] + .5 + t for t in range(p)])\n            y = np.zeros((n, p))\n            y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * p] + \\\n                (0 * X[:, [0] * p] + 1) * np.random.normal(0, 1, size=(n, p))\n            weight = 0.5 * X[:, 1] + 1.2 * X[:, 2]\n\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                for fit_intercept in [True, False]:\n                    for alpha in [.01, .05, .2]:\n                        est = OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y, sample_weight=weight)\n                        lr = [StatsModelsOLS(fit_intercept=fit_intercept, fit_args={\n                                             'cov_type': cov_type, 'use_t': False}).fit(X, y[:, t],\n                                                                                        sample_weight=weight)\n                              for t in range(p)]\n                        for t in range(p):\n                            assert np.all(np.abs(est.coef_[t] - lr[t].coef_) < 1e-12), \\\n                                \"{}, {}, {}: {}, {}\".format(cov_type, fit_intercept, t, est.coef_[t], lr[t].coef_)\n                            assert np.all(np.abs(np.array(est.coef__interval(alpha=alpha))[:, t] -\n                                                 lr[t].coef__interval(alpha=alpha)) < 1e-12), \\\n                                \"{}, {}, {}: {} vs {}\".format(cov_type, fit_intercept, t,\n                                                              np.array(est.coef__interval(alpha=alpha))[:, t],\n                                                              lr[t].coef__interval(alpha=alpha))\n                            assert np.all(np.abs(est.intercept_[t] - lr[t].intercept_) < 1e-12), \\\n                                \"{}, {}, {}: {} vs {}\".format(cov_type, fit_intercept, t,\n                                                              est.intercept_[t], lr[t].intercept_)\n                            assert np.all(np.abs(np.array(est.intercept__interval(alpha=alpha))[:, t] -\n                                                 lr[t].intercept__interval(alpha=alpha)) < 1e-12), \\\n                                \"{}, {}, {}: {} vs {}\".format(cov_type, fit_intercept, t,\n                                                              np.array(est.intercept__interval(alpha=alpha))[:, t],\n                                                              lr[t].intercept__interval(alpha=alpha))\n                            assert np.all(np.abs(est.predict(X_test)[:, t] - lr[t].predict(X_test)) < 1e-12), \\\n                                \"{}, {}, {}: {} vs {}\".format(cov_type, fit_intercept, t, est.predict(X_test)[\n                                                              :, t], lr[t].predict(X_test))\n                            assert np.all(np.abs(np.array(est.predict_interval(X_test, alpha=alpha))[:, :, t] -\n                                                 lr[t].predict_interval(X_test, alpha=alpha)) < 1e-12), \\\n                                \"{}, {}, {}: {} vs {}\".format(cov_type, fit_intercept, t,\n                                                              np.array(est.predict_interval(X_test,\n                                                                                            alpha=alpha))[:, :, t],\n                                                              lr[t].predict_interval(X_test, alpha=alpha))\n\n    def test_sum_vs_original(self):\n        \"\"\"Testing that the summarized version gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n        # 1-d y\n        n = 100\n        p = 1\n        d = 5\n        X_test = np.random.binomial(1, .5, size=(100, d))\n\n        X = np.random.binomial(1, .8, size=(n, d))\n        y = X[:, [0] * p] + (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, p))\n        y = y.flatten()\n        w = X[:, 0] * 0.5 + X[:, 1] * 1.2\n\n        (X1, X2, y1, y2, w1, w2,\n         X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first, n_sum_sec,\n         var_first, var_sec) = _summarize(X, y, w)\n        X = np.vstack([X1, X2])\n        y = np.concatenate((y1, y2))\n        w = np.concatenate((w1, w2))\n        X_final = np.vstack([X_final_first, X_final_sec])\n        y_sum = np.concatenate((y_sum_first, y_sum_sec))\n        w_sum = np.concatenate((w_sum_first, w_sum_sec))\n        n_sum = np.concatenate((n_sum_first, n_sum_sec))\n        var_sum = np.concatenate((var_first, var_sec))\n\n        for cov_type in ['nonrobust', 'HC0', 'HC1']:\n            for fit_intercept in [True, False]:\n                for alpha in [.01, .05, .2]:\n                    _compare_classes(OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X, y),\n                                     OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X_final, y_sum,\n                                                                freq_weight=n_sum, sample_var=var_sum),\n                                     X_test, alpha=alpha)\n                    _compare_classes(StatsModelsOLS(fit_intercept=fit_intercept,\n                                                    fit_args={'cov_type': cov_type, 'use_t': False}).fit(X, y),\n                                     OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X_final, y_sum,\n                                                                freq_weight=n_sum, sample_var=var_sum),\n                                     X_test, alpha=alpha)\n                    # compare when both sample_var and sample_weight exist\n                    _compare_classes(OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X, y, sample_weight=w),\n                                     OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X_final, y_sum, sample_weight=w_sum,\n                                                                freq_weight=n_sum, sample_var=var_sum),\n                                     X_test, alpha=alpha)\n                    _compare_classes(StatsModelsOLS(fit_intercept=fit_intercept,\n                                                    fit_args={'cov_type': cov_type,\n                                                              'use_t': False}).fit(X, y, sample_weight=w),\n                                     OLS(fit_intercept=fit_intercept,\n                                         cov_type=cov_type).fit(X_final, y_sum, sample_weight=w_sum,\n                                                                freq_weight=n_sum, sample_var=var_sum),\n                                     X_test, alpha=alpha)\n\n        # multi-d y\n        n = 100\n        for d in [1, 5]:\n            for p in [1, 5]:\n                X_test = np.random.binomial(1, .5, size=(100, d))\n\n                X = np.random.binomial(1, .8, size=(n, d))\n                y = X[:, [0] * p] + (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, p))\n                w = X[:, 0] * 1.2\n\n                (X1, X2, y1, y2, w1, w2,\n                 X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first, n_sum_sec,\n                 var_first, var_sec) = _summarize(X, y, w)\n                X = np.vstack([X1, X2])\n                y = np.concatenate((y1, y2))\n                w = np.concatenate((w1, w2))\n                X_final = np.vstack([X_final_first, X_final_sec])\n                y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                var_sum = np.concatenate((var_first, var_sec))\n\n                for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                    for fit_intercept in [True, False]:\n                        for alpha in [.01, .05, .2]:\n                            _compare_classes(OLS(fit_intercept=fit_intercept, cov_type=cov_type).fit(X, y),\n                                             OLS(fit_intercept=fit_intercept,\n                                                 cov_type=cov_type).fit(X_final, y_sum,\n                                                                        freq_weight=n_sum,\n                                                                        sample_var=var_sum),\n                                             X_test, alpha=alpha)\n                            # compare when both sample_var and sample_weight exist\n                            _compare_classes(OLS(fit_intercept=fit_intercept,\n                                                 cov_type=cov_type).fit(X, y, sample_weight=w),\n                                             OLS(fit_intercept=fit_intercept,\n                                                 cov_type=cov_type).fit(X_final, y_sum, sample_weight=w_sum,\n                                                                        freq_weight=n_sum,\n                                                                        sample_var=var_sum),\n                                             X_test, alpha=alpha)\n\n    def test_dml_sum_vs_original(self):\n        \"\"\"Testing that the summarized version of DML gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n\n        n = 1000\n        for d in [1, 5]:\n            for p in [1, 5]:\n                for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                    for alpha in [.01, .05, .2]:\n                        X = np.random.binomial(1, .8, size=(n, d))\n                        T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n                        w = X[:, 0] * 1.2\n\n                        def true_effect(x):\n                            return np.hstack([x[:, [0]] + t for t in range(p)])\n                        y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * p] + \\\n                            (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, p))\n                        if p == 1:\n                            y = y.flatten()\n                        X_test = np.random.binomial(1, .5, size=(100, d))\n\n                        XT = np.hstack([X, T.reshape(-1, 1)])\n                        (X1, X2, y1, y2, w1, w2,\n                            X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first,\n                            n_sum_sec, var_first, var_sec) = _summarize(XT, y, w)\n                        X = np.vstack([X1, X2])\n                        y = np.concatenate((y1, y2))\n                        w = np.concatenate((w1, w2))\n                        X_final = np.vstack([X_final_first, X_final_sec])\n                        y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                        w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                        n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                        var_sum = np.concatenate((var_first, var_sec))\n                        first_half_sum = len(y_sum_first)\n                        first_half = len(y1)\n\n                        class SplitterSum:\n                            def __init__(self):\n                                return\n\n                            def split(self, X, T):\n                                return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                        (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n\n                        class Splitter:\n                            def __init__(self):\n                                return\n\n                            def split(self, X, T):\n                                return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\n                                        (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\n                        for first_stage_model in [LinearRegression(),\n                                                  WeightedLasso(alpha=0.01, fit_intercept=True,\n                                                                tol=1e-12, random_state=123),\n                                                  RandomForestRegressor(n_estimators=10, bootstrap=False,\n                                                                        random_state=123)]:\n                            est = LinearDML(\n                                model_y=first_stage_model,\n                                model_t=first_stage_model,\n                                cv=SplitterSum())\n                            lr = LinearDML(\n                                model_y=first_stage_model,\n                                model_t=first_stage_model,\n                                cv=Splitter())\n\n                            est.fit(y_sum,\n                                    X_final[:, -1], X=X_final[:, :-1],\n                                    W=None, freq_weight=n_sum,\n                                    sample_var=var_sum,\n                                    inference=StatsModelsInference(cov_type=cov_type))\n                            lr.fit(y, X[:, -1], X=X[:, :-1], W=None,\n                                   inference=StatsModelsInference(cov_type=cov_type))\n                            _compare_dml_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n                            # compare when both sample_var and sample_weight exist\n                            est.fit(y_sum,\n                                    X_final[:, -1], X=X_final[:, :-1],\n                                    W=None, sample_weight=w_sum, freq_weight=n_sum,\n                                    sample_var=var_sum,\n                                    inference=StatsModelsInference(cov_type=cov_type))\n                            lr.fit(y, X[:, -1], X=X[:, :-1], W=None, sample_weight=w,\n                                   inference=StatsModelsInference(cov_type=cov_type))\n                            _compare_dml_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n    def test_nonparamdml_sum_vs_original(self):\n        \"\"\"Testing that the summarized version of DML gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n\n        n = 1000\n        for d in [1, 5]:\n            for p in [1, 5]:\n                for alpha in [.01, .05, .2]:\n                    X = np.random.binomial(1, .8, size=(n, d))\n                    T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n                    w = X[:, 0] * 1.2\n\n                    def true_effect(x):\n                        return np.hstack([x[:, [0]] + t for t in range(p)])\n                    y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * p] + \\\n                        (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, p))\n                    if p == 1:\n                        y = y.flatten()\n                    X_test = np.random.binomial(1, .5, size=(100, d))\n\n                    XT = np.hstack([X, T.reshape(-1, 1)])\n                    (X1, X2, y1, y2, w1, w2,\n                        X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first,\n                        n_sum_sec, var_first, var_sec) = _summarize(XT, y, w)\n                    X = np.vstack([X1, X2])\n                    y = np.concatenate((y1, y2))\n                    w = np.concatenate((w1, w2))\n                    X_final = np.vstack([X_final_first, X_final_sec])\n                    y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                    w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                    n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                    var_sum = np.concatenate((var_first, var_sec))\n                    first_half_sum = len(y_sum_first)\n                    first_half = len(y1)\n\n                    class SplitterSum:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                    (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n\n                    class Splitter:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\n                                    (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\n                    for first_stage_model in [LinearRegression(),\n                                              WeightedLasso(alpha=0.01, fit_intercept=True,\n                                                            tol=1e-12, random_state=123),\n                                              RandomForestRegressor(n_estimators=10, bootstrap=False,\n                                                                    random_state=123)]:\n                        est = NonParamDML(\n                            model_y=first_stage_model,\n                            model_t=first_stage_model,\n                            model_final=OLS(),\n                            cv=SplitterSum()).fit(y_sum,\n                                                  X_final[:, -1], X=X_final[:, :-1],\n                                                  W=None, freq_weight=n_sum,\n                                                  sample_var=var_sum,\n                                                  inference=\"auto\")\n\n                        lr = NonParamDML(\n                            model_y=first_stage_model,\n                            model_t=first_stage_model,\n                            model_final=OLS(),\n                            cv=Splitter()).fit(y, X[:, -1], X=X[:, :-1], W=None,\n                                               inference=\"auto\")\n                        _compare_classes(est.model_final_, lr.model_final_, X_test, alpha=alpha, tol=1e-10)\n\n                        # compare when both sample_var and sample_weight exist\n                        est.fit(y_sum,\n                                X_final[:, -1], X=X_final[:, :-1],\n                                W=None, sample_weight=w_sum, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=\"auto\")\n                        lr.fit(y, X[:, -1], X=X[:, :-1], W=None, sample_weight=w,\n                               inference=\"auto\")\n                        _compare_classes(est.model_final_, lr.model_final_, X_test, alpha=alpha, tol=1e-10)\n\n    def test_dr_sum_vs_original(self):\n        \"\"\"Testing that the summarized version of DR gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n\n        n = 1000\n        for d in [1, 5]:\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                for alpha in [.01, .05, .2]:\n                    X = np.random.binomial(1, .8, size=(n, d))\n                    T = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n                    w = X[:, 0] * 1.2\n\n                    def true_effect(x):\n                        return x[:, [0]]\n                    y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * 1] + \\\n                        (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, 1))\n                    y = y.flatten()\n                    X_test = np.random.binomial(1, .5, size=(100, d))\n\n                    XT = np.hstack([X, T.reshape(-1, 1)])\n                    (X1, X2, y1, y2, w1, w2,\n                        X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first,\n                        n_sum_sec, var_first, var_sec) = _summarize(XT, y, w)\n                    X = np.vstack([X1, X2])\n                    y = np.concatenate((y1, y2))\n                    w = np.concatenate((w1, w2))\n                    X_final = np.vstack([X_final_first, X_final_sec])\n                    y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                    w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                    n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                    var_sum = np.concatenate((var_first, var_sec))\n                    first_half_sum = len(y_sum_first)\n                    first_half = len(y1)\n\n                    class SplitterSum:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                    (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n\n                    class Splitter:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\n                                    (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\n                    for model_regression in [LinearRegression(),\n                                             WeightedLasso(alpha=0.01, fit_intercept=True,\n                                                           tol=1e-12, random_state=123),\n                                             RandomForestRegressor(n_estimators=10, bootstrap=False,\n                                                                   max_depth=3,\n                                                                   random_state=123)]:\n                        model_propensity = LogisticRegression(random_state=123)\n                        est = LinearDRLearner(\n                            model_regression=model_regression,\n                            model_propensity=model_propensity,\n                            cv=SplitterSum())\n                        lr = LinearDRLearner(\n                            model_regression=model_regression,\n                            model_propensity=model_propensity,\n                            cv=Splitter())\n\n                        est.fit(y_sum,\n                                X_final[:, -1], X=X_final[:, :-1],\n                                W=None, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                        lr.fit(y, X[:, -1], X=X[:, :-1], W=None,\n                               inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                        _compare_dr_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n                        # compare when both sample_var and sample_weight exist\n                        est.fit(y_sum,\n                                X_final[:, -1], X=X_final[:, :-1],\n                                W=None, sample_weight=w_sum, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                        lr.fit(y, X[:, -1], X=X[:, :-1], W=None, sample_weight=w,\n                               inference=StatsModelsInferenceDiscrete(cov_type=cov_type))\n                        _compare_dr_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n    def test_lineardriv_sum_vs_original(self):\n        \"\"\"Testing that the summarized version of DR gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n\n        n = 1000\n        for d in [1, 5]:\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                for alpha in [.01, .05, .2]:\n                    X = np.random.binomial(1, .8, size=(n, d))\n                    Z = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n                    T = np.random.binomial(1, .8 * Z + .1, size=(n,))\n                    w = 0.5 + X[:, 0] * 1.2\n\n                    def true_effect(x):\n                        return x[:, [0]]\n                    y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * 1] + \\\n                        (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, 1))\n                    y = y.flatten()\n                    X_test = np.random.binomial(1, .5, size=(100, d))\n\n                    XTZ = np.hstack([X, T.reshape(-1, 1), Z.reshape(-1, 1)])\n                    (X1, X2, y1, y2, w1, w2,\n                        X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first,\n                        n_sum_sec, var_first, var_sec) = _summarize(XTZ, y, w)\n                    X = np.vstack([X1, X2])\n                    y = np.concatenate((y1, y2))\n                    w = np.concatenate((w1, w2))\n                    X_final = np.vstack([X_final_first, X_final_sec])\n                    y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                    w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                    n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                    var_sum = np.concatenate((var_first, var_sec))\n                    first_half_sum = len(y_sum_first)\n                    first_half = len(y1)\n\n                    class SplitterSum:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                    (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n\n                    class Splitter:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\n                                    (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\n                    for model_regression in [LinearRegression(),\n                                             WeightedLasso(alpha=0.01, fit_intercept=True,\n                                                           tol=1e-12, random_state=123),\n                                             RandomForestRegressor(n_estimators=10, bootstrap=False,\n                                                                   max_depth=3,\n                                                                   random_state=123)]:\n                        model_propensity = LogisticRegression(random_state=123)\n                        est = LinearDRIV(\n                            model_y_xw=model_regression,\n                            model_t_xw=model_propensity,\n                            model_z_xw=model_propensity,\n                            model_tz_xw=model_regression,\n                            flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                            discrete_instrument=True,\n                            discrete_treatment=True,\n                            cv=SplitterSum())\n\n                        lr = LinearDRIV(\n                            model_y_xw=model_regression,\n                            model_t_xw=model_propensity,\n                            model_z_xw=model_propensity,\n                            model_tz_xw=model_regression,\n                            flexible_model_effect=StatsModelsLinearRegression(fit_intercept=False),\n                            discrete_instrument=True,\n                            discrete_treatment=True,\n                            cv=Splitter())\n\n                        est.fit(y_sum,\n                                X_final[:, -2], Z=X_final[:, -1], X=X_final[:, :-2],\n                                W=None, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInference(cov_type=cov_type))\n                        lr.fit(y, X[:, -2], Z=X[:, -1], X=X[:, :-2], W=None,\n                               inference=StatsModelsInference(cov_type=cov_type))\n                        _compare_dml_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n                        # compare when both sample_var and sample_weight exist\n                        est.fit(y_sum,\n                                X_final[:, -2], Z=X_final[:, -1], X=X_final[:, :-2],\n                                W=None, sample_weight=w_sum, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInference(cov_type=cov_type))\n                        lr.fit(y, X[:, -2], Z=X[:, -1], X=X[:, :-2], W=None, sample_weight=w,\n                               inference=StatsModelsInference(cov_type=cov_type))\n                        _compare_dml_classes(est, lr, X_test, alpha=alpha, tol=1e-8)\n\n    def test_dmliv_sum_vs_original(self):\n        \"\"\"Testing that the summarized version of DR gives the same results as the non-summarized.\"\"\"\n        np.random.seed(123)\n\n        n = 1000\n        for d in [1, 5]:\n            for cov_type in ['nonrobust', 'HC0', 'HC1']:\n                for alpha in [.01, .05, .2]:\n                    X = np.random.binomial(1, .8, size=(n, d))\n                    Z = np.random.binomial(1, .5 * X[:, 0] + .25, size=(n,))\n                    T = np.random.binomial(1, .8 * Z + .1, size=(n,))\n                    w = 0.5 + X[:, 0] * 1.2\n\n                    def true_effect(x):\n                        return x[:, [0]]\n                    y = true_effect(X) * T.reshape(-1, 1) + X[:, [0] * 1] + \\\n                        (1 * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, 1))\n                    y = y.flatten()\n                    X_test = np.random.binomial(1, .5, size=(100, d))\n\n                    XTZ = np.hstack([X, T.reshape(-1, 1), Z.reshape(-1, 1)])\n                    (X1, X2, y1, y2, w1, w2,\n                        X_final_first, X_final_sec, y_sum_first, y_sum_sec, w_sum_first, w_sum_sec, n_sum_first,\n                        n_sum_sec, var_first, var_sec) = _summarize(XTZ, y, w)\n                    X = np.vstack([X1, X2])\n                    y = np.concatenate((y1, y2))\n                    w = np.concatenate((w1, w2))\n                    X_final = np.vstack([X_final_first, X_final_sec])\n                    y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                    w_sum = np.concatenate((w_sum_first, w_sum_sec))\n                    n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                    var_sum = np.concatenate((var_first, var_sec))\n                    first_half_sum = len(y_sum_first)\n                    first_half = len(y1)\n\n                    class SplitterSum:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                    (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n\n                    class Splitter:\n                        def __init__(self):\n                            return\n\n                        def split(self, X, T):\n                            return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\n                                    (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\n                    for model_regression in [LinearRegression(),\n                                             WeightedLasso(alpha=0.01, fit_intercept=True,\n                                                           tol=1e-12, random_state=123),\n                                             RandomForestRegressor(n_estimators=10, bootstrap=False,\n                                                                   max_depth=3,\n                                                                   random_state=123)]:\n                        model_propensity = LogisticRegression(random_state=123)\n                        est = DMLIV(\n                            model_y_xw=model_regression,\n                            model_t_xw=model_propensity,\n                            model_t_xwz=model_propensity,\n                            discrete_instrument=True,\n                            discrete_treatment=True,\n                            fit_cate_intercept=False,\n                            cv=SplitterSum())\n\n                        lr = DMLIV(\n                            model_y_xw=model_regression,\n                            model_t_xw=model_propensity,\n                            model_t_xwz=model_propensity,\n                            discrete_instrument=True,\n                            discrete_treatment=True,\n                            fit_cate_intercept=False,\n                            cv=Splitter())\n\n                        est.fit(y_sum,\n                                X_final[:, -2], Z=X_final[:, -1], X=X_final[:, :-2],\n                                W=None, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInference(cov_type=cov_type))\n                        lr.fit(y, X[:, -2], Z=X[:, -1], X=X[:, :-2], W=None,\n                               inference=StatsModelsInference(cov_type=cov_type))\n                        _compare_classes(est.model_final_, lr.model_final_, X_test, alpha=alpha, tol=1e-8)\n\n                        # compare when both sample_var and sample_weight exist\n                        est.fit(y_sum,\n                                X_final[:, -2], Z=X_final[:, -1], X=X_final[:, :-2],\n                                W=None, sample_weight=w_sum, freq_weight=n_sum,\n                                sample_var=var_sum,\n                                inference=StatsModelsInference(cov_type=cov_type))\n                        lr.fit(y, X[:, -2], Z=X[:, -1], X=X[:, :-2], W=None, sample_weight=w,\n                               inference=StatsModelsInference(cov_type=cov_type))\n                        _compare_classes(est.model_final_, lr.model_final_, X_test, alpha=alpha, tol=1e-8)\n\n    def test_dml_multi_dim_treatment_outcome(self):\n        \"\"\"Testing that the summarized and unsummarized version of DML gives the correct (known results).\"\"\"\n        np.random.seed(123)\n        n = 100000\n        precision = .01\n        precision_int = .0001\n        with np.printoptions(formatter={'float': '{:.4f}'.format}, suppress=True):\n            for d in [2, 5]:  # n_feats + n_controls\n                for d_x in [1]:  # n_feats\n                    for p in [1, 5]:  # n_outcomes\n                        for q in [1, 5]:  # n_treatments\n                            X = np.random.binomial(1, .5, size=(n, d))\n                            T = np.hstack([np.random.binomial(1, .5 + .2 * (2 * X[:, [1]] - 1)) for _ in range(q)])\n\n                            def true_effect(x, i):\n                                return np.hstack([x[:, [0]] + 10 * t + i for t in range(p)])\n                            y = np.sum((true_effect(X, i) * T[:, [i]] for i in range(q)), axis=0) + X[:, [0] * p]\n                            if p == 1:\n                                y = y.flatten()\n                            est = LinearDML(model_y=LinearRegression(),\n                                            model_t=LinearRegression())\n                            est.fit(y, T, X=X[:, :d_x], W=X[:, d_x:],\n                                    inference=StatsModelsInference(cov_type='nonrobust'))\n                            intercept = est.intercept_.reshape((p, q))\n                            lower_int, upper_int = est.intercept__interval(alpha=.001)\n                            lower_int = lower_int.reshape((p, q))\n                            upper_int = upper_int.reshape((p, q))\n                            coef = est.coef_.reshape(p, q, d_x)\n                            lower, upper = est.coef__interval(alpha=.001)\n                            lower = lower.reshape(p, q, d_x)\n                            upper = upper.reshape(p, q, d_x)\n                            for i in range(p):\n                                for j in range(q):\n                                    np.testing.assert_allclose(intercept[i, j], 10 * i + j, rtol=0, atol=precision)\n                                    np.testing.assert_array_less(lower_int[i, j], 10 * i + j + precision_int)\n                                    np.testing.assert_array_less(10 * i + j - precision_int, upper_int[i, j])\n                                    np.testing.assert_allclose(coef[i, j, 0], 1, atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 0], 1)\n                                    np.testing.assert_array_less(1, upper[i, j, 0])\n                                    np.testing.assert_allclose(coef[i, j, 1:], np.zeros(coef[i, j, 1:].shape),\n                                                               atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 1:],\n                                                                 np.zeros(lower[i, j, 1:].shape) + precision_int)\n                                    np.testing.assert_array_less(np.zeros(lower[i, j, 1:].shape) - precision_int,\n                                                                 upper[i, j, 1:])\n\n                            est = LinearDML(model_y=LinearRegression(),\n                                            model_t=LinearRegression(),\n                                            featurizer=PolynomialFeatures(degree=1),\n                                            fit_cate_intercept=False)\n                            est.fit(y, T, X=X[:, :d_x], W=X[:, d_x:],\n                                    inference=StatsModelsInference(cov_type='nonrobust'))\n                            with pytest.raises(AttributeError):\n                                intercept = est.intercept_\n                            with pytest.raises(AttributeError):\n                                intercept = est.intercept__interval(alpha=0.05)\n                            coef = est.coef_.reshape(p, q, d_x + 1)\n                            lower, upper = est.coef__interval(alpha=.001)\n                            lower = lower.reshape(p, q, d_x + 1)\n                            upper = upper.reshape(p, q, d_x + 1)\n                            for i in range(p):\n                                for j in range(q):\n                                    np.testing.assert_allclose(coef[i, j, 0], 10 * i + j, rtol=0, atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 0], 10 * i + j + precision_int)\n                                    np.testing.assert_array_less(10 * i + j - precision_int, upper[i, j, 0])\n                                    np.testing.assert_allclose(coef[i, j, 1], 1, atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 1], 1)\n                                    np.testing.assert_array_less(1, upper[i, j, 1])\n                                    np.testing.assert_allclose(coef[i, j, 2:], np.zeros(coef[i, j, 2:].shape),\n                                                               atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 2:],\n                                                                 np.zeros(lower[i, j, 2:].shape) + precision_int)\n                                    np.testing.assert_array_less(np.zeros(lower[i, j, 2:].shape) - precision_int,\n                                                                 upper[i, j, 2:])\n                            XT = np.hstack([X, T])\n                            (X1, X2, y1, y2,\n                             X_final_first, X_final_sec, y_sum_first, y_sum_sec, n_sum_first, n_sum_sec,\n                             var_first, var_sec) = _summarize(XT, y)\n                            X = np.vstack([X1, X2])\n                            y = np.concatenate((y1, y2))\n                            X_final = np.vstack([X_final_first, X_final_sec])\n                            y_sum = np.concatenate((y_sum_first, y_sum_sec))\n                            n_sum = np.concatenate((n_sum_first, n_sum_sec))\n                            var_sum = np.concatenate((var_first, var_sec))\n                            first_half_sum = len(y_sum_first)\n\n                            class SplitterSum:\n                                def __init__(self):\n                                    return\n\n                                def split(self, X, T):\n                                    return [(np.arange(0, first_half_sum), np.arange(first_half_sum, X.shape[0])),\n                                            (np.arange(first_half_sum, X.shape[0]), np.arange(0, first_half_sum))]\n                            est = LinearDML(\n                                model_y=LinearRegression(),\n                                model_t=LinearRegression(),\n                                cv=SplitterSum(),\n                                discrete_treatment=False).fit(y_sum,\n                                                              X_final[:, d:],\n                                                              X=X_final[:, :d_x],\n                                                              W=X_final[:, d_x:d],\n                                                              freq_weight=n_sum,\n                                                              sample_var=var_sum,\n                                                              inference=StatsModelsInference(cov_type='nonrobust'))\n                            intercept = est.intercept_.reshape((p, q))\n                            lower_int, upper_int = est.intercept__interval(alpha=.001)\n                            lower_int = lower_int.reshape((p, q))\n                            upper_int = upper_int.reshape((p, q))\n                            coef = est.coef_.reshape(p, q, d_x)\n                            lower, upper = est.coef__interval(alpha=.001)\n                            lower = lower.reshape(p, q, d_x)\n                            upper = upper.reshape(p, q, d_x)\n                            for i in range(p):\n                                for j in range(q):\n                                    np.testing.assert_allclose(intercept[i, j], 10 * i + j, rtol=0, atol=precision)\n                                    np.testing.assert_array_less(lower_int[i, j], 10 * i + j + precision_int)\n                                    np.testing.assert_array_less(10 * i + j - precision_int, upper_int[i, j])\n                                    np.testing.assert_allclose(coef[i, j, 0], 1, atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 0], 1)\n                                    np.testing.assert_array_less(1, upper[i, j, 0])\n                                    np.testing.assert_allclose(coef[i, j, 1:], np.zeros(coef[i, j, 1:].shape),\n                                                               atol=precision)\n                                    np.testing.assert_array_less(lower[i, j, 1:],\n                                                                 np.zeros(lower[i, j, 1:].shape) + precision_int)\n                                    np.testing.assert_array_less(np.zeros(lower[i, j, 1:].shape) - precision_int,\n                                                                 upper[i, j, 1:])\n\n\nclass TestStatsModels2SLS(unittest.TestCase):\n    def test_comp_with_IV2SLS(self):\n        alpha = 0.05\n        tol = 1e-2\n\n        # dgp\n        n = 1000\n        Z = np.random.binomial(1, 0.5, size=(n, 1))\n        T = 3.5 * Z + np.random.normal(0, 1, size=(n, 1))\n        Y = 5.8 * T + np.random.normal(0, 1, size=(n, 1))\n\n        # StatsModels2SLS\n        est = StatsModels2SLS(cov_type=\"nonrobust\")\n        est.fit(Z, T, Y.ravel())\n\n        # IV2SLS\n        iv2sls = IV2SLS(Y.ravel(), T, Z).fit()\n\n        assert est.cov_type == iv2sls.cov_type, \"{}, {}\".format(est.cov_type, iv2sls.cov_type)\n        np.testing.assert_allclose(est.coef_, iv2sls.params, rtol=tol, atol=0)\n        np.testing.assert_allclose(est._param_var, iv2sls.cov_params(), rtol=tol, atol=0)\n        np.testing.assert_allclose(est.coef__interval(alpha=alpha)[\n                                   0], iv2sls.conf_int(alpha=alpha)[:, 0], rtol=tol, atol=0)\n        np.testing.assert_allclose(est.coef__interval(alpha=alpha)[\n                                   1], iv2sls.conf_int(alpha=alpha)[:, 1], rtol=tol, atol=0)\n"
  },
  {
    "path": "econml/tests/test_treatment_featurization.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\nimport pytest\nimport unittest\nimport numpy as np\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.ensemble import RandomForestRegressor\n\nfrom econml._ortho_learner import _OrthoLearner\nfrom econml.dml import LinearDML, SparseLinearDML, KernelDML, CausalForestDML, NonParamDML\nfrom econml.iv.dml import OrthoIV, DMLIV, NonParamDMLIV\nfrom econml.iv.dr import DRIV, LinearDRIV, SparseLinearDRIV, ForestDRIV\nfrom econml.orf import DMLOrthoForest\nfrom sklearn.preprocessing import FunctionTransformer\nfrom econml.sklearn_extensions.linear_model import StatsModelsLinearRegression, WeightedLassoCVWrapper\n\nfrom econml.iv.sieve import DPolynomialFeatures\nfrom copy import deepcopy\n\n\nclass DGP():\n    def __init__(self,\n                 n=1000,\n                 d_t=1,\n                 d_y=1,\n                 d_x=5,\n                 d_z=None,\n                 squeeze_T=False,\n                 squeeze_Y=False,\n                 nuisance_Y=None,\n                 nuisance_T=None,\n                 nuisance_TZ=None,\n                 theta=None,\n                 y_of_t=None,\n                 x_eps=1,\n                 y_eps=1,\n                 t_eps=1\n                 ):\n        self.n = n\n        self.d_t = d_t\n        self.d_y = d_y\n        self.d_x = d_x\n        self.d_z = d_z\n\n        self.squeeze_T = squeeze_T\n        self.squeeze_Y = squeeze_Y\n\n        self.nuisance_Y = nuisance_Y if nuisance_Y else lambda X: 0\n        self.nuisance_T = nuisance_T if nuisance_T else lambda X: 0\n        self.nuisance_TZ = nuisance_TZ if nuisance_TZ else lambda X: 0\n        self.theta = theta if theta else lambda X: 1\n        self.y_of_t = y_of_t if y_of_t else lambda X: 0\n\n        self.x_eps = x_eps\n        self.y_eps = y_eps\n        self.t_eps = t_eps\n\n    def gen_Y(self):\n        noise = np.random.normal(size=(self.n, self.d_y), scale=self.y_eps)\n        self.Y = self.theta(self.X) * self.y_of_t(self.T) + self.nuisance_Y(self.X) + noise\n        return self.Y\n\n    def gen_X(self):\n        self.X = np.random.normal(size=(self.n, self.d_x), scale=self.x_eps)\n        return self.X\n\n    def gen_T(self):\n        noise = np.random.normal(size=(self.n, self.d_t), scale=self.t_eps)\n        self.T_noise = noise\n        self.T = noise + self.nuisance_T(self.X) + self.nuisance_TZ(self.Z)\n        return self.T\n\n    def gen_Z(self):\n        if self.d_z:\n            Z_noise = np.random.normal(size=(self.n, self.d_z), loc=3, scale=3)\n            self.Z = Z_noise\n            return self.Z\n\n        else:\n            self.Z = None\n            return self.Z\n\n    def gen_data(self):\n        X = self.gen_X()\n        Z = self.gen_Z()\n        T = self.gen_T()\n        Y = self.gen_Y()\n\n        if self.squeeze_T:\n            T = T.squeeze()\n        if self.squeeze_Y:\n            Y = Y.squeeze()\n\n        data_dict = {\n            'Y': Y,\n            'T': T,\n            'X': X\n        }\n\n        if self.d_z:\n            data_dict['Z'] = Z\n\n        return data_dict\n\n\ndef actual_effect(y_of_t, T0, T1):\n    return y_of_t(T1) - y_of_t(T0)\n\n\ndef nuisance_T(X):\n    return -0.3 * X[:, [1]]\n\n\ndef nuisance_Y(X):\n    return 0.2 * X[:, [0]]\n\n\n# identity featurization effect functions\ndef identity_y_of_t(T):\n    return T\n\n\ndef identity_actual_marginal(T):\n    return np.ones(shape=(T.shape))\n\n\ndef identity_actual_cme():\n    return 1\n\n\nidentity_treatment_featurizer = FunctionTransformer()\n\n\n# polynomial featurization effect functions\ndef poly_y_of_t(T):\n    return 0.5 * T**2\n\n\ndef poly_actual_marginal(t):\n    return t\n\n\ndef poly_actual_cme():\n    return np.array([0, 0.5])\n\n\ndef poly_func_transform(x):\n    x = x.reshape(-1, 1)\n    return np.hstack([x, x**2])\n\n\npolynomial_treatment_featurizer = FunctionTransformer(func=poly_func_transform)\n\n\n# 1d polynomial featurization functions\ndef poly_1d_actual_cme():\n    return 0.5\n\n\ndef poly_1d_func_transform(x):\n    return x**2\n\n\npolynomial_1d_treatment_featurizer = FunctionTransformer(func=poly_1d_func_transform)\n\n\n# 2d-to-1d featurization functions\n\ndef sum_y_of_t(T):\n    return 0.5 * T.sum(axis=1, keepdims=True)\n\n\ndef sum_actual_cme():\n    return 0.5\n\n\ndef sum_actual_marginal(t):\n    return np.ones(shape=t.shape) * 0.5\n\n\ndef sum_func_transform(x):\n    return x.sum(axis=1, keepdims=True)\n\n\nsum_treatment_featurizer = FunctionTransformer(func=sum_func_transform)\n\n\n# 2d-to-1d vector featurization functions\ndef sum_squeeze_func_transform(x):\n    return x.sum(axis=1, keepdims=False)\n\n\nsum_squeeze_treatment_featurizer = FunctionTransformer(func=sum_squeeze_func_transform)\n\n\n@pytest.mark.treatment_featurization\nclass TestTreatmentFeaturization(unittest.TestCase):\n\n    def test_featurization(self):\n        # use LassoCV rather than also selecting over RandomForests to save time\n        dml_models = {\n            \"model_t\": WeightedLassoCVWrapper(),\n            \"model_y\": WeightedLassoCVWrapper()\n        }\n\n        dmliv_models = {\n            \"model_y_xw\": WeightedLassoCVWrapper(),\n            \"model_t_xw\": WeightedLassoCVWrapper(),\n            \"model_t_xwz\": WeightedLassoCVWrapper(),\n        }\n\n        driv_models = {\n            \"model_y_xw\": WeightedLassoCVWrapper(),\n            \"model_t_xw\": WeightedLassoCVWrapper(),\n            \"model_z_xw\": WeightedLassoCVWrapper(),\n            \"model_tz_xw\": WeightedLassoCVWrapper(),\n        }\n\n        identity_config = {\n            'DGP_params': {\n                'n': 2000,\n                'd_t': 1,\n                'd_y': 1,\n                'd_x': 5,\n                'squeeze_T': False,\n                'squeeze_Y': False,\n                'nuisance_Y': nuisance_Y,\n                'nuisance_T': nuisance_T,\n                'theta': None,\n                'y_of_t': identity_y_of_t,\n                'x_eps': 1,\n                'y_eps': 1,\n                't_eps': 1\n            },\n\n            'treatment_featurizer': identity_treatment_featurizer,\n            'actual_marginal': identity_actual_marginal,\n            'actual_cme': identity_actual_cme,\n            'squeeze_Ts': [False, True],\n            'squeeze_Ys': [False, True],\n            'est_dicts': [\n                {'class': LinearDML, 'init_args': dml_models},\n                {'class': CausalForestDML, 'init_args': dml_models},\n                {'class': SparseLinearDML, 'init_args': dml_models},\n                {'class': KernelDML, 'init_args': dml_models},\n            ]\n        }\n\n        poly_config = {\n            'DGP_params': {\n                'n': 2000,\n                'd_t': 1,\n                'd_y': 1,\n                'd_x': 5,\n                'squeeze_T': False,\n                'squeeze_Y': False,\n                'nuisance_Y': nuisance_Y,\n                'nuisance_T': nuisance_T,\n                'theta': None,\n                'y_of_t': poly_y_of_t,\n                'x_eps': 1,\n                'y_eps': 1,\n                't_eps': 1\n            },\n\n            'treatment_featurizer': polynomial_treatment_featurizer,\n            'actual_marginal': poly_actual_marginal,\n            'actual_cme': poly_actual_cme,\n            'squeeze_Ts': [False, True],\n            'squeeze_Ys': [False, True],\n            'est_dicts': [\n                {'class': LinearDML, 'init_args': dml_models},\n                {'class': CausalForestDML, 'init_args': dml_models},\n                {'class': SparseLinearDML, 'init_args': dml_models},\n                {'class': KernelDML, 'init_args': dml_models},\n            ]\n        }\n\n        poly_config_scikit = deepcopy(poly_config)\n        poly_config_scikit['treatment_featurizer'] = PolynomialFeatures(degree=2, include_bias=False)\n        poly_config_scikit['squeeze_Ts'] = [False]\n\n        poly_IV_config = deepcopy(poly_config)\n        poly_IV_config['DGP_params']['d_z'] = 1\n        poly_IV_config['DGP_params']['nuisance_TZ'] = lambda Z: Z\n        poly_IV_config['est_dicts'] = [\n            {'class': OrthoIV, 'init_args': {**dmliv_models,\n                                             'model_t_xwz': RandomForestRegressor(random_state=1),\n                                             'projection': True}},\n            {'class': DMLIV, 'init_args': {**dmliv_models,\n                                           'model_t_xwz': RandomForestRegressor(random_state=1)}},\n        ]\n\n        poly_1d_config = deepcopy(poly_config)\n        poly_1d_config['treatment_featurizer'] = polynomial_1d_treatment_featurizer\n        poly_1d_config['actual_cme'] = poly_1d_actual_cme\n        poly_1d_config['est_dicts'].append({\n            'class': NonParamDML,\n            'init_args': {\n                'model_y': LinearRegression(),\n                'model_t': LinearRegression(),\n                'model_final': StatsModelsLinearRegression()}})\n\n        poly_1d_IV_config = deepcopy(poly_IV_config)\n        poly_1d_IV_config['treatment_featurizer'] = polynomial_1d_treatment_featurizer\n        poly_1d_IV_config['actual_cme'] = poly_1d_actual_cme\n        poly_1d_IV_config['est_dicts'] = [\n            {'class': NonParamDMLIV, 'init_args': {**dmliv_models,\n                                                   'model_final': StatsModelsLinearRegression()}},\n            {'class': DRIV, 'init_args': {**driv_models,\n                                          'fit_cate_intercept': True}},\n            {'class': LinearDRIV, 'init_args': driv_models},\n            {'class': SparseLinearDRIV, 'init_args': driv_models},\n            {'class': ForestDRIV, 'init_args': driv_models},\n        ]\n\n        sum_IV_config = {\n            'DGP_params': {\n                'n': 2000,\n                'd_t': 2,\n                'd_y': 1,\n                'd_x': 5,\n                'd_z': 1,\n                'squeeze_T': False,\n                'squeeze_Y': False,\n                'nuisance_Y': nuisance_Y,\n                'nuisance_T': nuisance_T,\n                'nuisance_TZ': lambda Z: Z,\n                'theta': None,\n                'y_of_t': sum_y_of_t,\n                'x_eps': 1,\n                'y_eps': 1,\n                't_eps': 1\n            },\n\n            'treatment_featurizer': sum_treatment_featurizer,\n            'actual_marginal': sum_actual_marginal,\n            'actual_cme': sum_actual_cme,\n            'squeeze_Ts': [False],\n            'squeeze_Ys': [False, True],\n            'est_dicts': [\n                {'class': NonParamDMLIV, 'init_args': {**dmliv_models,\n                                                       'model_final': StatsModelsLinearRegression()}},\n                {'class': DRIV, 'init_args': {**driv_models,\n                                              'fit_cate_intercept': True}},\n                {'class': LinearDRIV, 'init_args': driv_models},\n                {'class': SparseLinearDRIV, 'init_args': driv_models},\n                {'class': ForestDRIV, 'init_args': driv_models},\n            ]\n        }\n\n        sum_squeeze_IV_config = deepcopy(sum_IV_config)\n        sum_squeeze_IV_config['treatment_featurizer'] = sum_squeeze_treatment_featurizer\n\n        sum_config = deepcopy(sum_IV_config)\n        sum_config['DGP_params']['d_z'] = None\n        sum_config['DGP_params']['nuisance_TZ'] = None\n        sum_config['est_dicts'] = deepcopy(poly_1d_config['est_dicts'])\n\n        sum_squeeze_config = deepcopy(sum_config)\n        sum_squeeze_config['treatment_featurizer'] = sum_squeeze_treatment_featurizer\n\n        configs = [\n            identity_config,\n            poly_config,\n            poly_config_scikit,\n            poly_IV_config,\n            poly_1d_config,\n            poly_1d_IV_config,\n            sum_IV_config,\n            sum_squeeze_IV_config,\n            sum_config,\n            sum_squeeze_config\n        ]\n\n        for config in configs:\n            for squeeze_Y in config['squeeze_Ys']:\n                for squeeze_T in config['squeeze_Ts']:\n                    config['DGP_params']['squeeze_Y'] = squeeze_Y\n                    config['DGP_params']['squeeze_T'] = squeeze_T\n                    dgp = DGP(**config['DGP_params'])\n                    data_dict = dgp.gen_data()\n                    Y = data_dict['Y']\n                    T = data_dict['T']\n                    X = data_dict['X']\n                    feat_T = config['treatment_featurizer'].fit_transform(T)\n\n                    data_dict_outside_feat = deepcopy(data_dict)\n                    data_dict_outside_feat['T'] = feat_T\n\n                    est_dicts = config['est_dicts']\n\n                    for est_dict in est_dicts:\n                        estClass = est_dict['class']\n                        init_args = deepcopy(est_dict['init_args'])\n                        init_args['treatment_featurizer'] = config['treatment_featurizer']\n                        init_args['random_state'] = 1\n\n                        est = estClass(**init_args)\n                        est.fit(**data_dict)\n\n                        init_args_outside_feat = deepcopy(est_dict['init_args'])\n                        init_args_outside_feat['random_state'] = 1\n                        est_outside_feat = estClass(**init_args_outside_feat)\n                        est_outside_feat.fit(**data_dict_outside_feat)\n\n                        #  test that treatment names are assigned for the featurized treatment\n                        assert (est.cate_treatment_names() is not None)\n\n                        if hasattr(est, 'summary'):\n                            est.summary()\n\n                        # expected shapes\n                        expected_eff_shape = (config['DGP_params']['n'],) + Y.shape[1:]\n                        expected_cme_shape = (config['DGP_params']['n'],) + Y.shape[1:] + feat_T.shape[1:]\n                        expected_me_shape = (config['DGP_params']['n'],) + Y.shape[1:] + T.shape[1:]\n                        expected_marginal_ate_shape = expected_me_shape[1:]\n\n                        # check effects\n                        T0 = np.ones(shape=T.shape) * 5\n                        T1 = np.ones(shape=T.shape) * 10\n                        eff = est.effect(X=X, T0=T0, T1=T1)\n                        assert (eff.shape == expected_eff_shape)\n                        outside_feat = config['treatment_featurizer']\n                        eff_outside_feat = est_outside_feat.effect(\n                            X=X, T0=outside_feat.fit_transform(T0), T1=outside_feat.fit_transform(T1))\n                        np.testing.assert_almost_equal(eff, eff_outside_feat)\n                        actual_eff = actual_effect(config['DGP_params']['y_of_t'], T0, T1)\n\n                        cme = est.const_marginal_effect(X=X)\n                        assert (cme.shape == expected_cme_shape)\n                        cme_outside_feat = est_outside_feat.const_marginal_effect(X=X)\n                        np.testing.assert_almost_equal(cme, cme_outside_feat)\n                        actual_cme = config['actual_cme']()\n\n                        me = est.marginal_effect(T=T, X=X)\n                        assert (me.shape == expected_me_shape)\n                        actual_me = config['actual_marginal'](T).reshape(me.shape)\n\n                        # ate\n                        m_ate = est.marginal_ate(T, X=X)\n                        assert (m_ate.shape == expected_marginal_ate_shape)\n\n                        if isinstance(est, (LinearDML, SparseLinearDML, LinearDRIV, SparseLinearDRIV)):\n                            d_f_t = feat_T.shape[1] if feat_T.shape[1:] else 1\n                            expected_coef_inference_shape = (\n                                config['DGP_params']['d_y'] * config['DGP_params']['d_x'] * d_f_t, 6)\n                            assert est.coef__inference().summary_frame().shape == expected_coef_inference_shape\n\n                            expected_intercept_inf_shape = (\n                                config['DGP_params']['d_y'] * d_f_t, 6)\n                            assert est.intercept__inference().summary_frame().shape == expected_intercept_inf_shape\n\n                        # loose inference checks\n                        if isinstance(est, (KernelDML)):\n                            continue\n\n                        if est._inference is None:\n                            continue\n\n                        # effect inference\n                        eff_inf = est.effect_inference(X=X, T0=T0, T1=T1)\n                        eff_lb, eff_ub = eff_inf.conf_int(alpha=0.01)\n                        assert (eff.shape == eff_lb.shape)\n                        proportion_in_interval = ((eff_lb < actual_eff) & (actual_eff < eff_ub)).mean()\n                        np.testing.assert_array_less(0.50, proportion_in_interval)\n                        np.testing.assert_almost_equal(eff, eff_inf.point_estimate)\n\n                        # marginal effect inference\n                        me_inf = est.marginal_effect_inference(T, X=X)\n                        me_lb, me_ub = me_inf.conf_int(alpha=0.01)\n                        assert (me.shape == me_lb.shape)\n                        proportion_in_interval = ((me_lb < actual_me) & (actual_me < me_ub)).mean()\n                        np.testing.assert_array_less(0.50, proportion_in_interval)\n                        np.testing.assert_almost_equal(me, me_inf.point_estimate)\n\n                        # const marginal effect inference\n                        cme_inf = est.const_marginal_effect_inference(X=X)\n                        cme_lb, cme_ub = cme_inf.conf_int(alpha=0.01)\n                        assert (cme.shape == cme_lb.shape)\n                        proportion_in_interval = ((cme_lb < actual_cme) & (actual_cme < cme_ub)).mean()\n                        np.testing.assert_array_less(0.50, proportion_in_interval)\n                        np.testing.assert_almost_equal(cme, cme_inf.point_estimate)\n\n    def test_jac(self):\n        def func_transform(x):\n            x = x.reshape(-1, 1)\n            return np.hstack([np.ones_like(x), x, x**2])\n\n        def calc_expected_jacobian(T):\n            jac = DPolynomialFeatures(degree=2, include_bias=True).fit_transform(T)\n            return jac\n\n        treatment_featurizers = [\n            PolynomialFeatures(degree=2, include_bias=True),\n            FunctionTransformer(func=func_transform)\n        ]\n\n        n = 10000\n        d_t = 1\n        T = np.random.normal(size=(n, d_t))\n        T[0, 0] = 0  # hardcode one value of exactly zero to test that we don't generate nan\n\n        for treatment_featurizer in treatment_featurizers:\n            # fit a dummy estimator first so the featurizer can be fit to the treatment\n            dummy_est = LinearDML(treatment_featurizer=treatment_featurizer)\n            dummy_est.fit(Y=T, T=T, X=T)\n            expected_jac = calc_expected_jacobian(T)\n            jac_T = dummy_est.transformer.jac(T)\n            np.testing.assert_almost_equal(jac_T, expected_jac)\n\n    def test_fail_discrete_treatment_and_treatment_featurizer(self):\n        class OrthoLearner(_OrthoLearner):\n            def _gen_ortho_learner_model_nuisance(self):\n                pass\n\n            def _gen_ortho_learner_model_final(self):\n                pass\n\n        est_and_params = [\n            {\n                'estimator': OrthoLearner,\n                'params': {\n                    'cv': 2,\n                    'discrete_outcome': False,\n                    'discrete_treatment': False,\n                    'treatment_featurizer': None,\n                    'discrete_instrument': False,\n                    'categories': 'auto',\n                    'random_state': None\n                }\n            },\n            {'estimator': LinearDML, 'params': {}},\n            {'estimator': CausalForestDML, 'params': {}},\n            {'estimator': SparseLinearDML, 'params': {}},\n            {'estimator': KernelDML, 'params': {}},\n            {'estimator': DMLOrthoForest, 'params': {}}\n\n        ]\n\n        dummy_vec = np.random.normal(size=(100, 1))\n\n        for est_and_param in est_and_params:\n            params = est_and_param['params']\n            params['discrete_treatment'] = True\n            params['treatment_featurizer'] = True\n            est = est_and_param['estimator'](**params)\n            with self.assertRaises(AssertionError, msg='Estimator fit did not fail when passed '\n                                   'both discrete treatment and treatment featurizer'):\n                est.fit(Y=dummy_vec, T=dummy_vec, X=dummy_vec)\n\n    def test_cate_treatment_names_edge_cases(self):\n        Y = np.random.normal(size=(100, 1))\n        T = np.random.binomial(n=2, p=0.5, size=(100, 1))\n        X = np.random.normal(size=(100, 3))\n\n        # edge case with transformer that only takes a vector treatment\n        # so far will always return None for cate_treatment_names\n        def weird_func(x):\n            assert np.ndim(x) == 1\n            return x\n        est = LinearDML(treatment_featurizer=FunctionTransformer(weird_func)).fit(Y=Y, T=T.squeeze(), X=X)\n        assert est.cate_treatment_names() is None\n        assert est.cate_treatment_names(['too', 'many', 'feature_names']) is None\n\n        # assert proper handling of improper feature names passed to certain transformers\n        est = LinearDML(discrete_treatment=True).fit(Y=Y, T=T, X=X)\n        assert est.cate_treatment_names() == ['T0_1', 'T0_2']\n        assert est.cate_treatment_names(['too', 'many', 'feature_names']) is None\n\n        est = LinearDML(treatment_featurizer=PolynomialFeatures(degree=2, include_bias=False)).fit(Y=Y, T=T, X=X)\n        assert est.cate_treatment_names() == ['T0', 'T0^2']\n        # depending on sklearn version, bad feature names either throws error or only uses first relevant name\n        assert est.cate_treatment_names(['too', 'many', 'feature_names']) in [None, ['too', 'too^2']]\n\n    def test_alpha_passthrough(self):\n        X = np.random.normal(size=(100, 3))\n        T = np.random.normal(size=(100, 1)) + X[:, [0]]\n        Y = np.random.normal(size=(100, 1)) + T + X[:, [0]]\n\n        est = LinearDML(model_y=LinearRegression(), model_t=LinearRegression(),\n                        treatment_featurizer=FunctionTransformer())\n        est.fit(Y=Y, T=T, X=X)\n\n        # ensure alpha is passed\n        lb, ub = est.marginal_effect_interval(T, X, alpha=1)\n        assert (lb == ub).all()\n\n        lb, ub = est.marginal_effect_interval(T, X)\n        assert (lb != ub).all()\n\n        lb1, ub1 = est.marginal_effect_interval(T, X, alpha=0.01)\n        lb2, ub2 = est.marginal_effect_interval(T, X, alpha=0.1)\n\n        assert (lb1 < lb2).all() and (ub1 > ub2).all()\n\n    def test_identity_feat_with_cate_api(self):\n        from .test_dml import TestDML\n        treatment_featurizations = [FunctionTransformer()]\n        TestDML()._test_cate_api(treatment_featurizations)\n"
  },
  {
    "path": "econml/tests/test_tree.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nimport unittest\r\n\r\nimport numpy as np\r\nimport pytest\r\n\r\nfrom econml.tree import DepthFirstTreeBuilder, BestSplitter, Tree, MSE\r\n\r\n\r\n@pytest.mark.serial\r\nclass TestTree(unittest.TestCase):\r\n\r\n    def _get_base_config(self):\r\n        n_features = 2\r\n        n_samples_train = 10\r\n        n_y = 1\r\n        return {'n_features': n_features,\r\n                'n_y': n_y,\r\n                'n_outputs': n_y,\r\n                'n_relevant_outputs': n_y,\r\n                'store_jac': False,\r\n                'n_samples': n_samples_train,\r\n                'n_samples_train': n_samples_train,\r\n                'max_features': n_features,\r\n                'min_samples_split': 2,\r\n                'min_samples_leaf': 1,\r\n                'min_weight_leaf': 1,\r\n                'min_eig_leaf': -1,\r\n                'min_eig_leaf_on_val': False,\r\n                'min_balancedness_tol': .3,\r\n                'max_depth': 2,\r\n                'min_impurity_decrease': 0.0,\r\n                'honest': False,\r\n                'random_state': 123,\r\n                'max_node_samples': n_samples_train,\r\n                'samples_train': np.arange(n_samples_train, dtype=np.intp),\r\n                'samples_val': np.arange(n_samples_train, dtype=np.intp)\r\n                }\r\n\r\n    def _get_base_honest_config(self):\r\n        n_features = 2\r\n        n_samples_train = 10\r\n        n_y = 1\r\n        return {'n_features': n_features,\r\n                'n_y': n_y,\r\n                'n_outputs': n_y,\r\n                'n_relevant_outputs': n_y,\r\n                'store_jac': False,\r\n                'n_samples': 2 * n_samples_train,\r\n                'n_samples_train': n_samples_train,\r\n                'max_features': n_features,\r\n                'min_samples_split': 2,\r\n                'min_samples_leaf': 1,\r\n                'min_weight_leaf': 1,\r\n                'min_eig_leaf': -1,\r\n                'min_eig_leaf_on_val': False,\r\n                'min_balancedness_tol': .3,\r\n                'max_depth': 2,\r\n                'min_impurity_decrease': 0.0,\r\n                'honest': True,\r\n                'random_state': 123,\r\n                'max_node_samples': n_samples_train,\r\n                'samples_train': np.arange(n_samples_train, dtype=np.intp),\r\n                'samples_val': np.arange(n_samples_train, 2 * n_samples_train, dtype=np.intp)\r\n                }\r\n\r\n    def _get_cython_objects(self, *, n_features, n_y, n_outputs, n_relevant_outputs,\r\n                            store_jac, n_samples, n_samples_train, max_features,\r\n                            min_samples_split, min_samples_leaf, min_weight_leaf,\r\n                            min_eig_leaf, min_eig_leaf_on_val, min_balancedness_tol, max_depth, min_impurity_decrease,\r\n                            honest, random_state, max_node_samples, samples_train,\r\n                            samples_val):\r\n        tree = Tree(n_features, n_outputs, n_relevant_outputs, store_jac)\r\n        criterion = MSE(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                        n_samples, max_node_samples, random_state)\r\n        criterion_val = MSE(n_outputs, n_relevant_outputs, n_features, n_y,\r\n                            n_samples, max_node_samples, random_state)\r\n        splitter = BestSplitter(criterion, criterion_val,\r\n                                max_features, min_samples_leaf, min_weight_leaf,\r\n                                min_balancedness_tol, honest, min_eig_leaf, min_eig_leaf_on_val, random_state)\r\n        builder = DepthFirstTreeBuilder(splitter, min_samples_split,\r\n                                        min_samples_leaf, min_weight_leaf,\r\n                                        max_depth, min_impurity_decrease)\r\n        return tree, criterion, criterion_val, splitter, builder\r\n\r\n    def _get_continuous_data(self, config):\r\n        X = np.zeros((config['n_samples_train'], config['n_features']))\r\n        X[:, 0] = np.arange(X.shape[0])\r\n        X[:, 1] = np.random.RandomState(config['random_state']).normal(0, 1, size=(X.shape[0]))\r\n        y = 1.0 * (X[:, 0] >= config['n_samples_train'] / 2).reshape(-1, 1)\r\n        y += 1.0 * (X[:, 0] >= config['n_samples_train'] / 4).reshape(-1, 1)\r\n        y += 1.0 * (X[:, 0] >= 3 * config['n_samples_train'] / 4).reshape(-1, 1)\r\n        X = np.vstack([X, X])\r\n        y = np.vstack([y, y])\r\n        return X, y\r\n\r\n    def _get_binary_data(self, config):\r\n        n_samples_train = config['n_samples_train']\r\n        X = np.zeros((n_samples_train, config['n_features']))\r\n        X[:n_samples_train // 2, 0] = 1\r\n        X[:n_samples_train // 4, 1] = 1\r\n        X[3 * n_samples_train // 4:, 1] = 1\r\n        y = 1.0 * (X[:, 0] + X[:, 1]).reshape(-1, 1)\r\n        X = np.vstack([X, X])\r\n        y = np.vstack([y, y])\r\n        return X, y\r\n\r\n    def _train_tree(self, config, X, y):\r\n        tree, criterion, criterion_val, splitter, builder = self._get_cython_objects(**config)\r\n        builder.build(tree, X, y,\r\n                      config['samples_train'],\r\n                      config['samples_val'],\r\n                      store_jac=config['store_jac'])\r\n        return tree\r\n\r\n    def _test_tree_continuous(self, base_config_gen):\r\n        config = base_config_gen()\r\n        X, y = self._get_continuous_data(config)\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 0, -2, -2, 0, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, 2.5, - 2, -2, 7.5, -2, -2]))\r\n        np.testing.assert_array_equal(tree.value.flatten()[:3],\r\n                                      np.array([np.mean(y),\r\n                                                np.mean(y[X[:, tree.feature[0]] < tree.threshold[0]]),\r\n                                                np.mean(y[(X[:, tree.feature[0]] < tree.threshold[0]) &\r\n                                                          (X[:, tree.feature[1]] < tree.threshold[1])])]))\r\n        np.testing.assert_array_almost_equal(tree.predict(X), y, decimal=10)\r\n        with np.testing.assert_raises(AttributeError):\r\n            tree.predict_precond(X)\r\n        with np.testing.assert_raises(AttributeError):\r\n            tree.predict_jac(X)\r\n        with np.testing.assert_raises(AttributeError):\r\n            tree.predict_precond_and_jac(X)\r\n\r\n        less = X[:, tree.feature[0]] < tree.threshold[0]\r\n\r\n        # testing importances\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y)\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False),\r\n                                             feature_importances, decimal=10)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y) - np.var(y[less])\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False, max_depth=0),\r\n                                             feature_importances, decimal=10)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = np.var(y) - np.var(y[less]) + .5 * (np.var(y[less]))\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_importances(normalize=False,\r\n                                                                              max_depth=1, depth_decay=1.0),\r\n                                             feature_importances, decimal=10)\r\n        # testing heterogeneity importances\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = 5 * 5 * (np.mean(y[less]) - np.mean(y[~less]))**2 / 100\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                            max_depth=0),\r\n                                             feature_importances, decimal=10)\r\n        feature_importances[0] += .5 * (2 * 2 * 3 * (1)**2 / 5) / 10\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False,\r\n                                                                                            max_depth=1,\r\n                                                                                            depth_decay=1.0),\r\n                                             feature_importances, decimal=10)\r\n        feature_importances[0] += .5 * (2 * 2 * 3 * (1)**2 / 5) / 10\r\n        np.testing.assert_array_almost_equal(tree.compute_feature_heterogeneity_importances(normalize=False),\r\n                                             feature_importances, decimal=10)\r\n\r\n        # Testing that all parameters do what they are supposed to\r\n        config = base_config_gen()\r\n        config['min_samples_leaf'] = 5\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = base_config_gen()\r\n        config['min_samples_split'] = 11\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([-2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([-2]))\r\n        np.testing.assert_array_almost_equal(tree.predict(X), np.mean(y), decimal=10)\r\n        np.testing.assert_array_almost_equal(tree.predict_full(X), np.mean(y), decimal=10)\r\n\r\n        config = base_config_gen()\r\n        config['min_weight_leaf'] = 5\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n        # testing predict, apply and decision path\r\n        less = X[:, tree.feature[0]] < tree.threshold[0]\r\n        y_pred = np.zeros((X.shape[0], 1))\r\n        y_pred[less] = np.mean(y[less])\r\n        y_pred[~less] = np.mean(y[~less])\r\n        np.testing.assert_array_almost_equal(tree.predict(X), y_pred, decimal=10)\r\n        np.testing.assert_array_almost_equal(tree.predict_full(X), y_pred, decimal=10)\r\n        decision_path = np.zeros((X.shape[0], len(tree.feature)))\r\n        decision_path[less, :] = np.array([1, 1, 0])\r\n        decision_path[~less, :] = np.array([1, 0, 1])\r\n        np.testing.assert_array_equal(tree.decision_path(X).todense(), decision_path)\r\n        apply = np.zeros(X.shape[0])\r\n        apply[less] = 1\r\n        apply[~less] = 2\r\n        np.testing.assert_array_equal(tree.apply(X), apply)\r\n        feature_importances = np.zeros(X.shape[1])\r\n        feature_importances[0] = 1\r\n        np.testing.assert_array_equal(tree.compute_feature_importances(),\r\n                                      feature_importances)\r\n\r\n        config = base_config_gen()\r\n        config['min_balancedness_tol'] = .0\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = base_config_gen()\r\n        config['min_balancedness_tol'] = .1\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 0, -2, -2, 0, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, 2.5, - 2, -2, 7.5, -2, -2]))\r\n\r\n        config = base_config_gen()\r\n        config['max_depth'] = 1\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = base_config_gen()\r\n        config['min_impurity_decrease'] = .99999\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, -2, -2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([4.5, -2, -2]))\r\n\r\n        config = base_config_gen()\r\n        config['min_impurity_decrease'] = 1.00001\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([-2, ]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([-2, ]))\r\n\r\n    def test_dishonest_tree(self):\r\n        self._test_tree_continuous(self._get_base_config)\r\n\r\n    def test_honest_tree(self):\r\n        self._test_tree_continuous(self._get_base_honest_config)\r\n\r\n    def test_multivariable_split(self):\r\n        config = self._get_base_config()\r\n        X, y = self._get_binary_data(config)\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 1, -2, -2, 1, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([0.5, 0.5, - 2, -2, 0.5, -2, -2]))\r\n\r\n    def test_honest_values(self):\r\n        config = self._get_base_honest_config()\r\n        X, y = self._get_binary_data(config)\r\n        y[config['n_samples_train']:] = .4\r\n        tree = self._train_tree(config, X, y)\r\n        np.testing.assert_array_equal(tree.feature, np.array([0, 1, -2, -2, 1, -2, -2]))\r\n        np.testing.assert_array_equal(tree.threshold, np.array([0.5, 0.5, - 2, -2, 0.5, -2, -2]))\r\n        np.testing.assert_array_almost_equal(tree.value.flatten(), .4 * np.ones(len(tree.value)))\r\n\r\n    def test_noisy_instance(self):\r\n\r\n        # initialize parameters\r\n        n_samples = 5000\r\n        X = np.random.normal(0, 1, size=(n_samples, 1))\r\n        y_base = 1.0 * X[:, [0]] * (X[:, [0]] > 0)\r\n        y = y_base + np.random.normal(0, .1, size=(n_samples, 1))\r\n\r\n        # initialize config wtih base config and overwite some values\r\n        config = self._get_base_config()\r\n        config['n_features'] = 1\r\n        config['max_features'] = 1\r\n        config['max_depth'] = 10\r\n        config['min_samples_leaf'] = 20\r\n        config['n_samples'] = X.shape[0]\r\n        config['min_balancedness_tol'] = .5\r\n        config['n_samples_train'] = X.shape[0]\r\n        config['max_node_samples'] = X.shape[0]\r\n        config['samples_train'] = np.arange(X.shape[0], dtype=np.intp)\r\n        config['samples_val'] = np.arange(X.shape[0], dtype=np.intp)\r\n\r\n        # predict tree using config parameters and assert\r\n        # shape of trained tree is the same as y_test\r\n        tree = self._train_tree(config, X, y)\r\n        X_test = np.zeros((100, 1))\r\n        X_test[:, 0] = np.linspace(np.percentile(X, 10), np.percentile(X, 90), 100)\r\n        y_test = 1.0 * X_test[:, [0]] * (X_test[:, [0]] > 0)\r\n        np.testing.assert_array_almost_equal(tree.predict(X_test), y_test, decimal=1)\r\n\r\n        # initialize config wtih base honest config and overwite some values\r\n        config = self._get_base_honest_config()\r\n        config['n_features'] = 1\r\n        config['max_features'] = 1\r\n        config['max_depth'] = 10\r\n        config['min_samples_leaf'] = 20\r\n        config['n_samples'] = X.shape[0]\r\n        config['min_balancedness_tol'] = .5\r\n        config['n_samples_train'] = X.shape[0] // 2\r\n        config['max_node_samples'] = X.shape[0] // 2\r\n        config['samples_train'] = np.arange(X.shape[0] // 2, dtype=np.intp)\r\n        config['samples_val'] = np.arange(X.shape[0] // 2, X.shape[0], dtype=np.intp)\r\n\r\n        # predict tree using config parameters and assert\r\n        # shape of trained tree is the same as y_test\r\n        tree = self._train_tree(config, X, y)\r\n        X_test = np.zeros((100, 1))\r\n        X_test[:, 0] = np.linspace(np.percentile(X, 10), np.percentile(X, 90), 100)\r\n        y_test = 1.0 * X_test[:, [0]] * (X_test[:, [0]] > 0)\r\n        np.testing.assert_array_almost_equal(tree.predict(X_test), y_test, decimal=1)\r\n"
  },
  {
    "path": "econml/tests/test_two_stage_least_squares.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Tests for two stage least squares module.\"\"\"\n\nimport unittest\nimport numpy as np\nimport pytest\n\nfrom econml.utilities import shape, reshape\nfrom econml.iv.sieve import (SieveTSLS, HermiteFeatures, DPolynomialFeatures)\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.preprocessing import PolynomialFeatures\n\n\nclass Test2SLS(unittest.TestCase):\n\n    def test_hermite_shape(self):\n        for d, s in [(3, 0), (4, 2)]:\n            for j in [True, False]:\n                for n, x in [(5, 1), (7, 3)]:\n                    last_dim = (d + 1)**x if j else (d + 1) * x\n                    correct_shape = (n,) + (x,) * s + (last_dim,)\n                    output_shape = shape(HermiteFeatures(d, s, j).fit_transform(np.zeros((n, x))))\n                    assert output_shape == correct_shape\n\n    def test_hermite_results(self):\n        inputs = np.random.normal(size=(5, 1))\n        hf = HermiteFeatures(3).fit_transform(inputs)\n        # first polynomials are 1, x, x*x-1, x*x*x-3*x\n        ones = np.ones(shape(inputs))\n        polys = np.hstack([ones, inputs, inputs * inputs - ones, inputs * inputs * inputs - 3 * inputs])\n        assert (np.allclose(hf, polys * np.exp(-inputs * inputs / 2)))\n\n        for j in [True, False]:\n            hf = HermiteFeatures(1, shift=1, joint=j).fit_transform(inputs)\n            # first derivatives are -x, -x^2+1 (since there's just one column, joint-ness doesn't matter)\n            polys = np.hstack([-inputs, -inputs * inputs + ones])\n            assert (np.allclose(hf, reshape(polys * np.exp(-inputs * inputs / 2), (5, 1, 2))))\n\n    @pytest.mark.slow\n    def test_hermite_approx(self):\n        n = 50000\n        x = np.random.uniform(low=-0.5, high=1.5, size=(n, 2))\n        y = (x[:, 1] > x[:, 0]) * \\\n            (0 <= x[:, 0]) * \\\n            (x[:, 0] <= 1) * \\\n            (0 <= x[:, 1]) * \\\n            (x[:, 1] <= 1) + \\\n            np.random.normal(0, 0.01, (n,))\n\n        def err(k, j):\n            hf = HermiteFeatures(k, joint=j)\n            m = LinearRegression()\n            m.fit(hf.fit_transform(x[:n // 2, :]), y[:n // 2])\n            return ((y[n // 2:] - m.predict(hf.fit_transform(x[n // 2:, :]))) ** 2).mean()\n        # TODO: test something rather than just print...\n        print([(k, j, err(k, j)) for k in range(2, 15) for j in [False, True]])\n\n    def test_2sls_shape(self):\n        n = 100\n\n        def make_random(d):\n            sz = (n, d) if d >= 0 else (n,)\n            return np.random.normal(size=sz)\n\n        for d_t in [-1, 1, 2]:\n            n_t = d_t if d_t > 0 else 1\n            for d_y in [-1, 1, 2]:\n                for d_x in [1, 5]:\n                    for d_z in [1, 2]:\n                        d_w = 1\n                        if d_z >= n_t:\n                            T, Y, X, Z, W = [make_random(d) for d in [d_t, d_y, d_x, d_z, d_w]]\n                            est = SieveTSLS(\n                                t_featurizer=PolynomialFeatures(),\n                                x_featurizer=PolynomialFeatures(),\n                                z_featurizer=PolynomialFeatures(),\n                                dt_featurizer=DPolynomialFeatures())\n\n                            est.fit(Y, T, X=X, W=W, Z=Z)\n\n                            eff = est.effect(X)\n                            marg_eff = est.marginal_effect(T, X)\n\n                            effect_shape = (n,) + ((d_y,) if d_y > 0 else ())\n                            marginal_effect_shape = ((n if d_x else 1,) +\n                                                     ((d_y,) if d_y > 0 else ()) +\n                                                     ((d_t,) if d_t > 0 else ()))\n\n                            self.assertEqual(shape(marg_eff), marginal_effect_shape)\n                            self.assertEqual(shape(eff), effect_shape)\n\n    def test_marg_eff(self):\n        X = np.random.normal(size=(5000, 2))\n        Z = np.random.normal(size=(5000, 2))\n        W = np.random.normal(size=(5000, 1))\n        # Note: no noise, just testing that we can exactly recover when we ought to be able to\n        T = np.hstack([np.cross(X, Z).reshape(-1, 1) + W, (np.prod(X, axis=1) + np.prod(Z, axis=1)).reshape(-1, 1)])\n        Y = X * T + X**2\n\n        est = SieveTSLS(\n            t_featurizer=PolynomialFeatures(degree=2, interaction_only=False, include_bias=True),\n            x_featurizer=PolynomialFeatures(degree=2, interaction_only=False, include_bias=True),\n            z_featurizer=PolynomialFeatures(degree=2, interaction_only=False, include_bias=True),\n            dt_featurizer=DPolynomialFeatures(degree=2, interaction_only=False, include_bias=True))\n\n        est.fit(Y, T, X=X, W=W, Z=Z)\n\n        # pick some arbitrary X\n        X_test = np.array([[0.3, 0.7],\n                           [0.2, 0.1]])\n        eff = est.effect(X_test)  # effect = (X * 1 + X^2) - (X * 0 + X^2) = X\n        np.testing.assert_almost_equal(eff, X_test)\n\n        # pick some arbitrary T\n        T_test = np.array([[-0.3, 0.1],\n                           [0.6, -1.2]])\n        marg_eff = est.marginal_effect(T_test, X_test)  # marg effect_{i,j} = X_i if i=j, 0 otherwise\n        marg_eff_truth = np.zeros((X_test.shape[0], Y.shape[1], T.shape[1]))\n        marg_eff_truth[:, range(X.shape[1]), range(X.shape[1])] = X_test[:, :]\n        np.testing.assert_almost_equal(marg_eff, marg_eff_truth)\n\n    # TODO: this tests that we can run the method; how do we test that the results are reasonable?\n    def test_2sls(self):\n        n = 50000\n        d_w = 2\n        d_z = 1\n        d_x = 1\n        d_t = 1\n        d_y = 1\n        e = np.random.uniform(low=-0.5, high=0.5, size=(n, d_x))\n        z = np.random.uniform(size=(n, 1))\n        w = np.random.uniform(size=(n, d_w))\n        a = np.random.normal(size=(d_w, d_t))\n        b = np.random.normal(size=(d_w, d_y))\n        x = np.random.uniform(size=(n, d_x)) + e\n        p = x + z * e + w @ a + np.random.uniform(size=(n, d_t))\n        y = p * x + e + w @ b\n\n        losses = []\n        marg_effs = []\n\n        z_fresh = np.random.uniform(size=(n, d_z))\n        e_fresh = np.random.uniform(low=-0.5, high=0.5, size=(n, d_x))\n        x_fresh = np.random.uniform(size=(n, d_x)) + e_fresh\n        w_fresh = np.random.uniform(size=(n, d_w))\n        p_fresh = x_fresh + z_fresh * e_fresh + w_fresh @ a + np.random.uniform(size=(n, d_t))\n\n        for (dt, dx, dz) in [(0, 0, 0), (1, 1, 1), (5, 5, 5), (10, 10, 10), (3, 3, 10), (10, 10, 3)]:\n            np2sls = SieveTSLS(t_featurizer=HermiteFeatures(dt),\n                               x_featurizer=HermiteFeatures(dx),\n                               z_featurizer=HermiteFeatures(dz),\n                               dt_featurizer=HermiteFeatures(dt, shift=1))\n            np2sls.fit(y, p, X=x, W=w, Z=z)\n            effect = np2sls.effect(x_fresh, np.zeros(shape(p_fresh)), p_fresh)\n            losses.append(np.mean(np.square(p_fresh * x_fresh - effect)))\n            marg_effs.append(np2sls.marginal_effect(np.array([[0.3], [0.5], [0.7]]), np.array([[0.4], [0.6], [0.2]])))\n        print(\"losses: {}\".format(losses))\n        print(\"marg_effs: {}\".format(marg_effs))\n"
  },
  {
    "path": "econml/tests/test_utilities.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport unittest\nimport time\nimport random\nimport warnings\nimport numpy as np\nimport sparse as sp\nimport pytest\nfrom econml.utilities import (check_high_dimensional, einsum_sparse, todense, tocoo, transpose,\n                              inverse_onehot, cross_product, transpose_dictionary, deprecated, _deprecate_positional,\n                              strata_from_discrete_arrays)\nfrom sklearn.preprocessing import OneHotEncoder, SplineTransformer\n\n\nclass TestUtilities(unittest.TestCase):\n    def test_check_high_dimensional(self):\n        X = np.repeat(\n            a=np.expand_dims(np.arange(3), axis=1),\n            repeats=2,\n            axis=1,\n        )\n        T = np.expand_dims(np.arange(3), axis=1)\n\n        check_high_dimensional(X=X, T=T, threshold=0, featurizer=SplineTransformer())\n\n    def test_cross_product(self):\n        X = np.array([[1, 2],\n                      [3, 4]])\n        Y = np.array([[1, 2, 3],\n                      [4, 5, 6]])\n        Z = np.array([1,\n                      1])\n\n        # make sure cross product varies more slowly with first array\n        # and that vectors are okay as inputs\n        assert np.all(cross_product(Z, Y, X) == np.array([[1, 2, 3, 2, 4, 6],\n                                                          [12, 15, 18, 16, 20, 24]]))\n\n        assert np.all(cross_product(X, Z, Y) == np.array([[1, 2, 2, 4, 3, 6],\n                                                          [12, 16, 15, 20, 18, 24]]))\n\n        ()\n\n    def test_einsum_errors(self):\n        # number of inputs in specification must match number of inputs\n        with self.assertRaises(Exception):\n            einsum_sparse('abc,def->ad', tocoo(np.ones((1, 2, 3))))\n        with self.assertRaises(Exception):\n            einsum_sparse('abc->a', tocoo(np.ones((1, 2, 3))), tocoo(np.ones((1, 2, 3))))\n\n        # must have an output\n        with self.assertRaises(Exception):\n            einsum_sparse('abc', tocoo(np.ones((1, 2, 3))))\n\n        # output indices must be unique\n        with self.assertRaises(Exception):\n            einsum_sparse('abc->bb', tocoo(np.ones((1, 2, 3))))\n\n        # output indices must be present in an input\n        with self.assertRaises(Exception):\n            einsum_sparse('abc->bd', tocoo(np.ones((1, 2, 3))))\n\n        # number of indices must match number of dimensions for each input\n        with self.assertRaises(Exception):\n            einsum_sparse('ab->a', tocoo(np.ones((1, 2, 3))))\n        with self.assertRaises(Exception):\n            einsum_sparse('abcd->a', tocoo(np.ones((1, 2, 3))), tocoo(np.ones((1, 2, 3))))\n\n        # repeated indices must always have consistent sizes\n        with self.assertRaises(Exception):\n            einsum_sparse('aaa->a', tocoo(np.ones((1, 2, 3))))\n        with self.assertRaises(Exception):\n            einsum_sparse('abc,bac->a', tocoo(np.ones((1, 2, 3))), tocoo(np.ones((1, 2, 3))))\n\n    def test_einsum_basic(self):\n        # transpose\n        arr = sp.random((20, 30, 40), 0.1)\n        self.assertEqual((einsum_sparse('abc->cba', arr) != arr.transpose()).nnz, 0)\n\n        # tensordot\n        arr1 = sp.random((20, 30, 40), 0.1)\n        arr2 = sp.random((40, 30), 0.1)\n        arr3 = sp.random((40, 20, 10), 0.1)\n        self.assertTrue(np.allclose(todense(einsum_sparse('abc,cb->a', arr1, arr2)),\n                                    todense(sp.tensordot(arr1, arr2, axes=([1, 2], [1, 0])))))\n        self.assertTrue(np.allclose(todense(einsum_sparse('ab,acd->bcd', arr2, arr3)),\n                                    todense(sp.tensordot(arr2, arr3, axes=(0, 0)))))\n\n        # trace\n        arr = sp.random((100, 100), 0.1)\n        self.assertAlmostEqual(einsum_sparse('aa->', arr)[()], np.trace(todense(arr)))\n\n    def test_transpose_compatible(self):\n        \"\"\"Test that the results of `transpose` are compatible for sparse and dense arrays.\"\"\"\n        arr = tocoo(np.arange(27).reshape(3, 3, 3))\n        np.testing.assert_array_equal(todense(transpose(arr, (1, 2, 0))), transpose(todense(arr), (1, 2, 0)))\n        for _ in range(5):\n            ndims = np.random.randint(2, 6)\n            dims = tuple(np.random.randint(5, 20, size=ndims))\n            axes = np.random.permutation(range(ndims))\n            arr = sp.random(dims, density=0.1)\n            out1 = todense(transpose(arr, axes))\n            out2 = transpose(todense(arr), axes)\n            np.testing.assert_allclose(out1, out2, verbose=True)\n\n    def test_inverse_onehot(self):\n        T = np.random.randint(4, size=100)\n        T_oh = OneHotEncoder(categories='auto', sparse_output=False).fit_transform(T.reshape(-1, 1))[:, 1:]\n        T_inv = inverse_onehot(T_oh)\n        np.testing.assert_array_equal(T, T_inv)\n\n    # TODO: set up proper flag for this\n    @pytest.mark.slow\n    def test_einsum_random(self):\n        for _ in range(10):  # do 10 random tests\n            num_arrs = random.randint(3, 5)  # use between 3 and 5 arrays as input\n            arrs = [sp.random((20,) * random.randint(1, 5), 0.05) for _ in range(num_arrs)]\n            # pick indices at random with replacement from the first 7 letters of the alphabet\n            dims = [''.join(np.random.choice(list(\"abcdefg\"), arr.ndim)) for arr in arrs]\n            all_inds = set.union(*(set(inds) for inds in dims))\n            # of all of the distinct indices that appear in any input,\n            # pick a random subset of them (of size at most 5) to appear in the output\n            output = ''.join(random.sample(sorted(all_inds), random.randint(0, min(len(all_inds), 5))))\n            specification = ','.join(dims) + '->' + output\n            with self.subTest(spec=specification):\n                print(specification)\n                start = time.perf_counter()\n                spr = einsum_sparse(specification, *arrs)\n                mid = time.perf_counter()\n                der = np.einsum(specification, *[todense(arr) for arr in arrs])\n                end = time.perf_counter()\n                print(\" sparse: {0}\".format(mid - start))\n                print(\" dense:  {0}\".format(end - mid))\n                self.assertTrue(np.allclose(todense(spr),\n                                            der))\n\n    def test_transpose_dictionary(self):\n        d1 = {1: {'a': '1a', 'b': '1b'}, 2: {'b': '2b', 'a': '2a', 'c': '2c'}}\n        d2 = {'a': {1: '1a', 2: '2a'}, 'b': {2: '2b', 1: '1b'}, 'c': {2: '2c'}}\n        assert d1 == transpose_dictionary(d2)\n        assert d2 == transpose_dictionary(d1)\n\n    def test_deprecated(self):\n\n        @deprecated(\"This class is deprecated\")\n        class Deprecated:\n            def __init__(self, a, b=1):\n                self.sum = a + b\n\n            def get_sum(self):\n                return self.sum\n\n        @deprecated(\"This method is deprecated\", DeprecationWarning)\n        def depr(x, *args, y=2):\n            pass\n\n        # creating an instance should warn\n        with self.assertWarnsRegex(FutureWarning, \"This class is deprecated\"):\n            instance = Deprecated(1)\n\n        # using the instance should not warn\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"error\")\n            assert instance.get_sum() == 2\n\n        # using the deprecated method should warn\n        with self.assertWarnsRegex(DeprecationWarning, \"This method is deprecated\"):\n            depr(1, 2, 3, y=4)\n\n    def test_deprecate_positional(self):\n\n        @_deprecate_positional(\"Don't pass b or c by position\", ['b', 'c'])\n        def m(a, b, c=1, *args, **kwargs):\n            return a\n\n        with self.assertWarnsRegex(FutureWarning, \"Don't pass b or c by position\"):\n            m(1, 2)\n\n        with self.assertWarnsRegex(FutureWarning, \"Don't pass b or c by position\"):\n            m(1, 2, c=2)\n\n        # don't warn if b and c are passed by keyword\n        with warnings.catch_warnings():\n            warnings.simplefilter(\"error\")\n            m(1, b=2)\n            m(a=1, b=2)\n            m(1, b=2, c=3, X='other')\n\n    def test_single_strata_from_discrete_array(self):\n        T = np.repeat([[0, 1, 2]], 4, axis=0).ravel()\n        Z = np.repeat([[0, 1]], 6, axis=0).ravel()\n        Y = np.repeat([0, 1], 6, axis=0)\n\n        assert set(strata_from_discrete_arrays([T, Z, Y])) == set(np.arange(12))\n        assert set(strata_from_discrete_arrays([T, Z])) == set(np.arange(6))\n        assert set(strata_from_discrete_arrays([T])) == set(np.arange(3))\n        assert strata_from_discrete_arrays([]) is None\n"
  },
  {
    "path": "econml/tests/utilities.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nfrom sklearn.calibration import check_cv\n\n\nclass GroupingModel:\n    \"\"\"\n    Class for validating that grouping has been done correctly.\n\n    Checks that the number of distinct y values is within a given range, and that each y value\n    occurs some known number of times.\n\n    For example, if the groups each have the same size, and the target is identical to the group, then the number\n    of distinct y values should be in the range [n_groups-ceil(n_groups/cv), n_groups-floor(n_groups/cv)],\n    and the number of copies of each y value should be equal to the group size\n    \"\"\"\n\n    def __init__(self, model, total, limits, n_copies):\n        self.model = model\n        self.total = total\n        self.limits = limits\n        self.n_copies = n_copies\n\n    def validate(self, y, skip_group_counts=False):\n        (yvals, cts) = np.unique(y, return_counts=True)\n        (llim, ulim) = self.limits\n        # if we aren't fitting on the whole dataset, ensure that the limits are respected\n        if (not skip_group_counts) and (not (llim <= len(yvals) <= ulim)):\n            raise Exception(f\"Grouping failed: received {len(yvals)} groups instead of {llim}-{ulim}\")\n\n        # ensure that the grouping has worked correctly and we get exactly the number of copies\n        # of the items in whichever groups we see\n        for (yval, ct) in zip(yvals, cts):\n            if ct != self.n_copies[yval]:\n                raise Exception(\n                    f\"Grouping failed; received {ct} copies of {yval} instead of {self.n_copies[yval]}\")\n\n    def fit(self, X, y):\n        self.validate(y, len(y) == self.total)\n        self.model.fit(X, y)\n        return self\n\n    def predict(self, X):\n        return self.model.predict(X)\n\n\nclass NestedModel(GroupingModel):\n    \"\"\"\n    Class for testing nested grouping.\n\n    The wrapped model must have a 'cv' attribute;\n    this class exposes an identical 'cv' attribute, which is how nested CV is implemented in _fit_with_groups\n    \"\"\"\n\n    # DML nested CV works via a 'cv' attribute\n    @property\n    def cv(self):\n        return self.model.cv\n\n    @cv.setter\n    def cv(self, value):\n        self.model.cv = value\n\n    def fit(self, X, y):\n        for (train, test) in check_cv(self.cv, y).split(X, y):\n            # want to validate the nested grouping, not the outer grouping in the nesting tests\n            self.validate(y[train], len(y) == self.total)\n        self.model.fit(X, y)\n        return self\n"
  },
  {
    "path": "econml/tree/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\nfrom ._criterion import Criterion, RegressionCriterion, MSE\r\nfrom ._splitter import Splitter, BestSplitter\r\nfrom ._tree import DepthFirstTreeBuilder\r\nfrom ._tree import Tree\r\nfrom ._tree_classes import BaseTree\r\n\r\n__all__ = [\"BaseTree\",\r\n           \"Tree\",\r\n           \"Splitter\",\r\n           \"BestSplitter\",\r\n           \"DepthFirstTreeBuilder\",\r\n           \"Criterion\",\r\n           \"RegressionCriterion\",\r\n           \"MSE\"]\r\n"
  },
  {
    "path": "econml/tree/_criterion.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_criterion.pxd\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n# See _criterion.pyx for implementation details.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\n\r\nfrom ._tree cimport DOUBLE_t         # Type of y, sample_weight\r\nfrom ._tree cimport SIZE_t           # Type for indices and counters\r\nfrom ._tree cimport UINT32_t         # Unsigned 32 bit integer\r\n\r\ncdef class Criterion:\r\n    # The criterion computes the impurity of a node and the reduction of\r\n    # impurity of a split on that node. It also computes the output statistics\r\n    # such as the mean in regression and class probabilities in classification\r\n    # and parameter estimates in a tree that solves a moment equation.\r\n\r\n    # Internal structures\r\n    cdef bint proxy_children_impurity    # Whether the value returned by children_impurity is only an approximation\r\n    cdef const DOUBLE_t[:, ::1] y        # Values of y (y contains all the variables for node parameter estimation)\r\n    cdef DOUBLE_t* sample_weight         # Sample weights\r\n\r\n    cdef SIZE_t n_outputs                # Number of outputs\r\n    cdef SIZE_t n_relevant_outputs       # The first n_relevant_outputs are the ones we care about\r\n    cdef SIZE_t n_features               # Number of features\r\n    cdef SIZE_t n_y                      # The first n_y columns of the y matrix correspond to raw labels.\r\n                                         # The remainder are auxiliary variables required for parameter estimation\r\n    cdef UINT32_t random_state           # A random seed for any internal randomness\r\n\r\n    cdef SIZE_t* samples                 # Sample indices in X, y\r\n    cdef SIZE_t start                    # samples[start:pos] are the samples in the left node\r\n    cdef SIZE_t pos                      # samples[pos:end] are the samples in the right node\r\n    cdef SIZE_t end\r\n\r\n    cdef SIZE_t n_samples                # Number of all samples in y (i.e. rows of y)\r\n    cdef SIZE_t max_node_samples         # The maximum number of samples that can ever be contained in a node\r\n                                         # Used for memory space saving, as we need to allocate memory space for\r\n                                         # internal quantities that will store as many values as the number of samples\r\n                                         # in the current node under consideration. Providing this can save space\r\n                                         # allocation time.\r\n    cdef SIZE_t n_node_samples           # Number of samples in the node (end-start)\r\n    cdef double weighted_n_samples       # Weighted number of samples (in total)\r\n    cdef double weighted_n_node_samples  # Weighted number of samples in the node\r\n    cdef double weighted_n_left          # Weighted number of samples in the left node\r\n    cdef double weighted_n_right         # Weighted number of samples in the right node\r\n\r\n    cdef double* sum_total          # For classification criteria, the sum of the\r\n                                    # weighted count of each label. For regression,\r\n                                    # the sum of w*y. sum_total[k] is equal to\r\n                                    # sum_{i=start}^{end-1} w[samples[i]]*y[samples[i], k],\r\n                                    # where k is output index.\r\n    cdef double* sum_left           # Same as above, but for the left side of the split\r\n    cdef double* sum_right          # same as above, but for the right side of the split\r\n\r\n    # The criterion object is maintained such that left and right collected\r\n    # statistics correspond to samples[start:pos] and samples[pos:end].\r\n\r\n    # Methods\r\n    cdef int init(self, const DOUBLE_t[:, ::1] y, \r\n                  DOUBLE_t* sample_weight, double weighted_n_samples,\r\n                  SIZE_t* samples) except -1 nogil\r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end) except -1 nogil\r\n    cdef int reset(self) except -1 nogil\r\n    cdef int reverse_reset(self) except -1 nogil\r\n    cdef int update(self, SIZE_t new_pos) except -1 nogil\r\n    cdef double node_impurity(self) noexcept nogil\r\n    cdef double proxy_node_impurity(self) noexcept nogil\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil\r\n    cdef void node_value(self, double* dest) noexcept nogil\r\n    cdef void node_jacobian(self, double* dest) noexcept nogil\r\n    cdef void node_precond(self, double* dest) noexcept nogil\r\n    cdef double impurity_improvement(self, double impurity) noexcept nogil\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil\r\n    cdef double min_eig_left(self) noexcept nogil\r\n    cdef double min_eig_right(self) noexcept nogil\r\n\r\n\r\ncdef class RegressionCriterion(Criterion):\r\n    \"\"\"Abstract regression criterion.\"\"\"\r\n\r\n    cdef double sq_sum_total    # Stores sum_i sum_k y_{ik}^2, used for MSE calculation\r\n"
  },
  {
    "path": "econml/tree/_criterion.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_criterion.pyx\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nfrom libc.stdlib cimport calloc\r\nfrom libc.stdlib cimport free\r\nfrom libc.string cimport memcpy\r\nfrom libc.string cimport memset\r\nfrom libc.math cimport fabs\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\nfrom ._utils cimport log\r\nfrom ._utils cimport safe_realloc\r\nfrom ._utils cimport sizet_ptr_to_ndarray\r\n\r\ncdef class Criterion:\r\n    \"\"\"Interface for impurity criteria.\r\n    This object stores methods on how to calculate how good a split is using\r\n    different metrics.\r\n    \"\"\"\r\n\r\n    def __dealloc__(self):\r\n        \"\"\"Destructor.\"\"\"\r\n\r\n        free(self.sum_total)\r\n        free(self.sum_left)\r\n        free(self.sum_right)\r\n\r\n    def __getstate__(self):\r\n        return {}\r\n\r\n    def __setstate__(self, d):\r\n        pass\r\n\r\n    cdef int init(self, const DOUBLE_t[:, ::1] y, DOUBLE_t* sample_weight,\r\n                  double weighted_n_samples,\r\n                  SIZE_t* samples) except -1 nogil:\r\n        \"\"\"Placeholder for a method which will initialize the criterion.\r\n        Returns -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n\r\n        Parameters\r\n        ----------\r\n        y : array_like, dtype=DOUBLE_t\r\n            y is a buffer that can store values for variables required for parameter/value estimation\r\n        sample_weight : array_like, dtype=DOUBLE_t\r\n            The weight of each sample in y\r\n        weighted_n_samples : double\r\n            The total weight of all the samples whose indices are contained in the samples array\r\n        samples : array_like, dtype=SIZE_t\r\n            Indices of the samples in X and y, where samples[start:end]\r\n            correspond to the samples in this node\r\n        \"\"\"\r\n\r\n        pass\r\n    \r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\" Initialize a node calculation\r\n\r\n        Parameters\r\n        ----------\r\n        start : SIZE_t\r\n            The first sample to be used on this node\r\n        end : SIZE_t\r\n            The last sample used on this node\r\n        \"\"\"\r\n \r\n        pass\r\n\r\n    cdef int reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=start.\r\n        This method must be implemented by the subclass.\r\n        \"\"\"\r\n\r\n        pass\r\n\r\n    cdef int reverse_reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=end.\r\n        This method must be implemented by the subclass.\r\n        \"\"\"\r\n        pass\r\n\r\n    cdef int update(self, SIZE_t new_pos) except -1 nogil:\r\n        \"\"\"Updated statistics by moving samples[pos:new_pos] to the left child.\r\n        This updates the collected statistics by moving samples[pos:new_pos]\r\n        from the right child to the left child. It must be implemented by\r\n        the subclass.\r\n        Parameters\r\n        ----------\r\n        new_pos : SIZE_t\r\n            New starting index position of the samples in the right child\r\n        \"\"\"\r\n\r\n        pass\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Placeholder for calculating the impurity of the node.\r\n        Placeholder for a method which will evaluate the impurity of\r\n        the current node, i.e. the impurity of samples[start:end]. This is the\r\n        primary function of the criterion class.\r\n        \"\"\"\r\n\r\n        pass\r\n\r\n    cdef double proxy_node_impurity(self) noexcept nogil:\r\n        \"\"\" A proxy for the node impurity to be used for min_impurity_decrease.\r\n        By default it is equivalent to node_impurity, unless overwritten by child class.\r\n        \"\"\"\r\n        return self.node_impurity()\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        \"\"\"Placeholder for calculating the impurity of children.\r\n        Placeholder for a method which evaluates the impurity in\r\n        children nodes, i.e. the impurity of samples[start:pos] + the impurity\r\n        of samples[pos:end].\r\n        Parameters\r\n        ----------\r\n        impurity_left : double pointer\r\n            The memory address where the impurity of the left child should be\r\n            stored.\r\n        impurity_right : double pointer\r\n            The memory address where the impurity of the right child should be\r\n            stored\r\n        \"\"\"\r\n\r\n        pass\r\n\r\n    cdef void node_value(self, double* dest) noexcept nogil:\r\n        \"\"\"Placeholder for storing the node value.\r\n        Placeholder for a method which will compute the node value\r\n        of samples[start:end] and save the value into dest.\r\n        Parameters\r\n        ----------\r\n        dest : double pointer\r\n            The memory address where the node value should be stored.\r\n        \"\"\"\r\n\r\n        pass\r\n    \r\n    cdef void node_jacobian(self, double* dest) noexcept nogil:\r\n        \"\"\"Placeholder for storing the node jacobian value.\r\n        Placeholder for a method which will compute the node jacobian value in a linear\r\n        moment J(x) * theta(x) - precond(x) = 0 of samples[start:end] and save the value\r\n        into dest. If not implemented by child, raises an AttributeError if called.\r\n\r\n        Parameters\r\n        ----------\r\n        dest : double pointer\r\n            The memory address where the node jacobian should be stored.\r\n        \"\"\"\r\n        with gil:\r\n            raise AttributeError(\"Criterion does not support jacobian calculation\")\r\n    \r\n    cdef void node_precond(self, double* dest) noexcept nogil:\r\n        \"\"\"Placeholder for storing the node precond value.\r\n        Placeholder for a method which will compute the node precond value in a linear\r\n        moment J(x) * theta(x) - precond(x) = 0 of samples[start:end] and save the value\r\n        into dest. If not implemented by child, raises an AttributeError if called.\r\n\r\n        Parameters\r\n        ----------\r\n        dest : double pointer\r\n            The memory address where the node precond should be stored.\r\n        \"\"\"\r\n        with gil:\r\n            raise AttributeError(\"Criterion does not support preconditioned value calculation\")\r\n    \r\n    cdef double min_eig_left(self) noexcept nogil:\r\n        \"\"\"Placeholder for calculating proxy for minimum eigenvalue of the jacobian\r\n        of the left child of the current split. If not implemented by child, raises an AttributeError if called.\r\n        \"\"\"\r\n        with gil:\r\n            raise AttributeError(\"Criterion does not support jacobian and eigenvalue calculation!\")\r\n    \r\n    cdef double min_eig_right(self) noexcept nogil:\r\n        \"\"\"Placeholder for calculating proxy for minimum eigenvalue of the jacobian\r\n        of the right child of the current split. If not implemented by child, raises an AttributeError if called.\r\n        \"\"\"\r\n        with gil:\r\n            raise AttributeError(\"Criterion does not support jacobian and eigenvalue calculation!\")\r\n\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil:\r\n        \"\"\"Compute a proxy of the impurity reduction\r\n        This method is used to speed up the search for the best split.\r\n        It is a proxy quantity such that the split that maximizes this value\r\n        also maximizes the impurity improvement. It neglects all constant terms\r\n        of the impurity decrease for a given split.\r\n        The absolute impurity improvement is only computed by the\r\n        impurity_improvement method once the best split has been found.\r\n        \"\"\"\r\n        cdef double impurity_left\r\n        cdef double impurity_right\r\n        self.children_impurity(&impurity_left, &impurity_right)\r\n\r\n        return (- self.weighted_n_right * impurity_right\r\n                - self.weighted_n_left * impurity_left)\r\n\r\n    cdef double impurity_improvement(self, double impurity) noexcept nogil:\r\n        \"\"\"Compute the improvement in impurity\r\n        This method computes the improvement in impurity when a split occurs.\r\n        The weighted impurity improvement equation is the following:\r\n            N_t / N * (impurity - N_t_R / N_t * right_impurity\r\n                                - N_t_L / N_t * left_impurity)\r\n        where N is the total number of samples, N_t is the number of samples\r\n        at the current node, N_t_L is the number of samples in the left child,\r\n        and N_t_R is the number of samples in the right child,\r\n        Parameters\r\n        ----------\r\n        impurity : double\r\n            The initial impurity of the node before the split\r\n        Return\r\n        ------\r\n        double : improvement in impurity after the split occurs\r\n        \"\"\"\r\n\r\n        cdef double impurity_left\r\n        cdef double impurity_right\r\n\r\n        self.children_impurity(&impurity_left, &impurity_right)\r\n\r\n        return ((self.weighted_n_node_samples / self.weighted_n_samples) *\r\n                (impurity - (self.weighted_n_right / \r\n                             self.weighted_n_node_samples * impurity_right)\r\n                          - (self.weighted_n_left / \r\n                             self.weighted_n_node_samples * impurity_left)))\r\n\r\n\r\n# =============================================================================\r\n# Regression Criterion\r\n# =============================================================================\r\n\r\ncdef class RegressionCriterion(Criterion):\r\n    r\"\"\"Abstract regression criterion.\r\n    This handles cases where the target is a continuous value, and is\r\n    evaluated by computing the variance of the target values left and right\r\n    of the split point. The computation takes linear time with `n_samples`\r\n    by using ::\r\n        var = \\sum_i^n (y_i - y_bar) ** 2\r\n            = (\\sum_i^n y_i ** 2) - n_samples * y_bar ** 2\r\n    \"\"\"\r\n\r\n    def __cinit__(self, SIZE_t n_outputs, SIZE_t n_relevant_outputs, SIZE_t n_features, SIZE_t n_y,\r\n                  SIZE_t n_samples, SIZE_t max_node_samples, UINT32_t random_state):\r\n        \"\"\"Initialize parameters for this criterion.\r\n        Parameters\r\n        ----------\r\n        n_outputs : SIZE_t\r\n            The number of parameters/values to be estimated\r\n        n_relevant_outputs : SIZE_t\r\n            We only care about the first n_relevant_outputs of these parameters/values\r\n        n_features : SIZE_t\r\n            The number of features\r\n        n_y : SIZE_t\r\n            The first n_y columns of the 2d matrix y, contain the raw labels y_{ik}, the rest are auxiliary variables\r\n        n_samples : SIZE_t\r\n            The total number of rows in the 2d matrix y\r\n        max_node_samples : SIZE_t\r\n            The maximum number of samples that can ever be contained in a node\r\n        random_state : UINT32_t\r\n            A random seed for any internal randomness\r\n        \"\"\"\r\n\r\n        # Default values\r\n        self.n_outputs = n_outputs\r\n        self.n_relevant_outputs = n_relevant_outputs\r\n        self.n_features = n_features\r\n        self.n_y = n_y\r\n        self.random_state = random_state\r\n        self.proxy_children_impurity = False\r\n\r\n        self.samples = NULL\r\n        self.start = 0\r\n        self.pos = 0\r\n        self.end = 0\r\n\r\n        self.n_samples = n_samples\r\n        self.max_node_samples = max_node_samples\r\n        self.n_node_samples = 0\r\n        self.weighted_n_node_samples = 0.0\r\n        self.weighted_n_left = 0.0\r\n        self.weighted_n_right = 0.0\r\n\r\n        self.sq_sum_total = 0.0\r\n\r\n        # Allocate accumulators. Make sure they are NULL, not uninitialized,\r\n        # before an exception can be raised (which triggers __dealloc__).\r\n        self.sum_total = NULL\r\n        self.sum_left = NULL\r\n        self.sum_right = NULL\r\n\r\n        # Allocate memory for the accumulators\r\n        self.sum_total = <double*> calloc(n_outputs, sizeof(double))\r\n        self.sum_left = <double*> calloc(n_outputs, sizeof(double))\r\n        self.sum_right = <double*> calloc(n_outputs, sizeof(double))\r\n\r\n        if (self.sum_total == NULL or \r\n                self.sum_left == NULL or\r\n                self.sum_right == NULL):\r\n            raise MemoryError()\r\n\r\n    def __reduce__(self):\r\n        return (type(self), (self.n_outputs, self.n_relevant_outputs, self.n_features, self.n_y,\r\n                             self.n_samples, self.max_node_samples, self.random_state), self.__getstate__())\r\n\r\n    cdef int init(self, const DOUBLE_t[:, ::1] y, DOUBLE_t* sample_weight,\r\n                  double weighted_n_samples,\r\n                  SIZE_t* samples) except -1 nogil:\r\n        # Initialize fields\r\n        self.y = y\r\n        self.sample_weight = sample_weight\r\n        self.samples = samples\r\n        self.weighted_n_samples = weighted_n_samples\r\n\r\n        return 0\r\n\r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end) except -1 nogil:\r\n        \"\"\"Initialize the criterion at node samples[start:end] and\r\n           children samples[start:start] and samples[start:end].\"\"\"\r\n        self.start = start\r\n        self.end = end\r\n        self.n_node_samples = end - start\r\n        self.weighted_n_node_samples = 0.\r\n\r\n        cdef SIZE_t i\r\n        cdef SIZE_t p\r\n        cdef SIZE_t k\r\n        cdef DOUBLE_t y_ik\r\n        cdef DOUBLE_t w_y_ik\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        self.sq_sum_total = 0.0\r\n        memset(self.sum_total, 0, self.n_outputs * sizeof(double))\r\n\r\n        for p in range(start, end):\r\n            i = self.samples[p]\r\n\r\n            if self.sample_weight != NULL:\r\n                w = self.sample_weight[i]\r\n\r\n            for k in range(self.n_outputs):\r\n                y_ik = self.y[i, k]\r\n                w_y_ik = w * y_ik\r\n                self.sum_total[k] += w_y_ik\r\n                self.sq_sum_total += w_y_ik * y_ik\r\n\r\n            self.weighted_n_node_samples += w\r\n\r\n        # Reset to pos=start\r\n        self.reset()\r\n        return 0\r\n\r\n    cdef int reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=start.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * sizeof(double)\r\n        memset(self.sum_left, 0, n_bytes)\r\n        memcpy(self.sum_right, self.sum_total, n_bytes)\r\n\r\n        self.weighted_n_left = 0\r\n        self.weighted_n_right = self.weighted_n_node_samples\r\n        self.pos = self.start\r\n\r\n        return 0\r\n\r\n    cdef int reverse_reset(self) except -1 nogil:\r\n        \"\"\"Reset the criterion at pos=end.\"\"\"\r\n        cdef SIZE_t n_bytes = self.n_outputs * sizeof(double)\r\n        memset(self.sum_right, 0, n_bytes)\r\n        memcpy(self.sum_left, self.sum_total, n_bytes)\r\n\r\n        self.weighted_n_right = 0\r\n        self.weighted_n_left = self.weighted_n_node_samples\r\n        self.pos = self.end\r\n\r\n        return 0\r\n\r\n    cdef int update(self, SIZE_t new_pos) except -1 nogil:\r\n        \"\"\"Updated statistics by moving samples[pos:new_pos] to the left.\"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef double* sum_total = self.sum_total\r\n\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t end = self.end\r\n        cdef SIZE_t i\r\n        cdef SIZE_t p\r\n        cdef SIZE_t k\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        # Update statistics up to new_pos\r\n        #\r\n        # Given that\r\n        #           sum_left[x] +  sum_right[x] = sum_total[x]\r\n        # and that sum_total is known, we are going to update\r\n        # sum_left from the direction that require the least amount\r\n        # of computations, i.e. from pos to new_pos or from end to new_pos.\r\n\r\n        if (new_pos - pos) <= (end - new_pos):\r\n            for p in range(pos, new_pos):\r\n                i = samples[p]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(self.n_outputs):\r\n                    sum_left[k] += w * self.y[i, k]\r\n\r\n                self.weighted_n_left += w\r\n        else:\r\n            self.reverse_reset()\r\n\r\n            for p in range(end - 1, new_pos - 1, -1):\r\n                i = samples[p]\r\n\r\n                if sample_weight != NULL:\r\n                    w = sample_weight[i]\r\n\r\n                for k in range(self.n_outputs):\r\n                    sum_left[k] -= w * self.y[i, k]\r\n\r\n                self.weighted_n_left -= w\r\n\r\n        self.weighted_n_right = (self.weighted_n_node_samples -\r\n                                 self.weighted_n_left)\r\n        for k in range(self.n_outputs):\r\n            sum_right[k] = sum_total[k] - sum_left[k]\r\n\r\n        self.pos = new_pos\r\n\r\n        return 0\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        pass\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        pass\r\n\r\n    cdef void node_value(self, double* dest) noexcept nogil:\r\n        \"\"\"Compute the node value of samples[start:end] into dest.\"\"\"\r\n\r\n        cdef SIZE_t k\r\n\r\n        for k in range(self.n_outputs):\r\n            dest[k] = self.sum_total[k] / self.weighted_n_node_samples\r\n\r\n\r\ncdef class MSE(RegressionCriterion):\r\n    \"\"\"Mean squared error impurity criterion.\r\n        MSE = var_left + var_right\r\n    \"\"\"\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Evaluate the impurity of the current node, i.e. the impurity of\r\n           samples[start:end].\"\"\"\r\n\r\n        cdef double* sum_total = self.sum_total\r\n        cdef double impurity\r\n        cdef SIZE_t k\r\n\r\n        impurity = self.sq_sum_total / self.weighted_n_node_samples\r\n        for k in range(self.n_outputs):\r\n            impurity -= (sum_total[k] / self.weighted_n_node_samples)**2.0\r\n\r\n        return impurity / self.n_outputs\r\n\r\n    cdef double proxy_impurity_improvement(self) noexcept nogil:\r\n        \"\"\"Compute a proxy of the impurity reduction\r\n        This method is used to speed up the search for the best split.\r\n        It is a proxy quantity such that the split that maximizes this value\r\n        also maximizes the impurity improvement. It neglects all constant terms\r\n        of the impurity decrease for a given split.\r\n        The absolute impurity improvement is only computed by the\r\n        impurity_improvement method once the best split has been found.\r\n        \"\"\"\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n\r\n        cdef SIZE_t k\r\n        cdef double proxy_impurity_left = 0.0\r\n        cdef double proxy_impurity_right = 0.0\r\n\r\n        for k in range(self.n_outputs):\r\n            proxy_impurity_left += sum_left[k] * sum_left[k]\r\n            proxy_impurity_right += sum_right[k] * sum_right[k]\r\n\r\n        return (proxy_impurity_left / self.weighted_n_left +\r\n                proxy_impurity_right / self.weighted_n_right)\r\n\r\n    cdef void children_impurity(self, double* impurity_left,\r\n                                double* impurity_right) noexcept nogil:\r\n        \"\"\"Evaluate the impurity in children nodes, i.e. the impurity of the\r\n           left child (samples[start:pos]) and the impurity the right child\r\n           (samples[pos:end]).\"\"\"\r\n\r\n        cdef DOUBLE_t* sample_weight = self.sample_weight\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef SIZE_t pos = self.pos\r\n        cdef SIZE_t start = self.start\r\n\r\n        cdef double* sum_left = self.sum_left\r\n        cdef double* sum_right = self.sum_right\r\n        cdef DOUBLE_t y_ik\r\n\r\n        cdef double sq_sum_left = 0.0\r\n        cdef double sq_sum_right\r\n\r\n        cdef SIZE_t i\r\n        cdef SIZE_t p\r\n        cdef SIZE_t k\r\n        cdef DOUBLE_t w = 1.0\r\n\r\n        for p in range(start, pos):\r\n            i = samples[p]\r\n\r\n            if sample_weight != NULL:\r\n                w = sample_weight[i]\r\n\r\n            for k in range(self.n_outputs):\r\n                y_ik = self.y[i, k]\r\n                sq_sum_left += w * y_ik * y_ik\r\n\r\n        sq_sum_right = self.sq_sum_total - sq_sum_left\r\n\r\n        impurity_left[0] = sq_sum_left / self.weighted_n_left\r\n        impurity_right[0] = sq_sum_right / self.weighted_n_right\r\n\r\n        for k in range(self.n_outputs):\r\n            impurity_left[0] -= (sum_left[k] / self.weighted_n_left) ** 2.0\r\n            impurity_right[0] -= (sum_right[k] / self.weighted_n_right) ** 2.0\r\n\r\n        impurity_left[0] /= self.n_outputs\r\n        impurity_right[0] /= self.n_outputs\r\n"
  },
  {
    "path": "econml/tree/_splitter.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_splitter.pxd\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n# See _splitter.pyx for details.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\n\r\nfrom ._criterion cimport Criterion\r\n\r\nfrom ._tree cimport DTYPE_t          # Type of X\r\nfrom ._tree cimport DOUBLE_t         # Type of y, sample_weight\r\nfrom ._tree cimport SIZE_t           # Type for indices and counters\r\nfrom ._tree cimport INT32_t          # Signed 32 bit integer\r\nfrom ._tree cimport UINT32_t         # Unsigned 32 bit integer\r\n\r\ncdef struct SplitRecord:\r\n    # Data to track sample split\r\n    SIZE_t feature         # Which feature to split on.\r\n    SIZE_t pos             # Split samples array at the given position,\r\n                           # i.e. count of samples below threshold for feature.\r\n                           # pos is >= end if the node is a leaf.\r\n    SIZE_t pos_val         # Split samples_val array at the given position,\r\n                           # i.e. count of samples below threshold for feature.\r\n                           # pos_val is >= end_val if the node is a leaf.\r\n    double threshold       # Threshold to split at.\r\n    double improvement     # Impurity improvement given parent node.\r\n    double impurity_left   # Impurity of the left split on train set.\r\n    double impurity_right  # Impurity of the right split on train set.\r\n    double impurity_left_val   # Impurity of the left split on validation set.\r\n    double impurity_right_val  # Impurity of the right split on validation set.\r\n\r\ncdef class Splitter:\r\n    # The splitter searches in the input space for a feature and a threshold\r\n    # to split the samples samples[start:end] and samples_val[start_val:end_val].\r\n    #\r\n    # The impurity and value computations are delegated to a criterion and criterion_val object.\r\n\r\n    # Internal structures\r\n    cdef public Criterion criterion      # Impurity criterion for train set calculations\r\n    cdef public Criterion criterion_val      # Impurity criterion for val set calculations\r\n    cdef public SIZE_t max_features      # Number of features to test\r\n    cdef public SIZE_t min_samples_leaf  # Min samples in a leaf (on both train and val set)\r\n    cdef public double min_weight_leaf   # Minimum weight in a leaf (on both train and val set)\r\n    cdef public double min_eig_leaf      # Minimum value of proxy for the min eigenvalue of the jacobian (on train)\r\n    cdef public bint min_eig_leaf_on_val # Whether minimum eigenvalue constraint should also be enforced on val\r\n    cdef public double min_balancedness_tol # Tolerance level of how balanced a split can be (in [0, .5])\r\n    cdef public bint honest              # Are we doing train/val honest splitting\r\n\r\n    cdef UINT32_t rand_r_state           # sklearn_rand_r random number state\r\n\r\n    cdef SIZE_t* samples                 # Sample indices in X, y\r\n    cdef SIZE_t n_samples                # X.shape[0]\r\n    cdef double weighted_n_samples       # Weighted number of samples\r\n    cdef SIZE_t* samples_val             # Sample indices in Xval\r\n    cdef SIZE_t n_samples_val            # Xval.shape[0]\r\n    cdef double weighted_n_samples_val   # Weighted number of samples\r\n    cdef SIZE_t* features                # Feature indices in X\r\n    cdef SIZE_t* constant_features       # Constant features indices\r\n    cdef SIZE_t n_features               # X.shape[1]\r\n    cdef DTYPE_t* feature_values         # temp. array holding feature values\r\n    cdef DTYPE_t* feature_values_val     # temp. array holding feature values from validation set\r\n\r\n    cdef SIZE_t start                    # Start position for the current node for samples\r\n    cdef SIZE_t end                      # End position for the current node for samples\r\n    cdef SIZE_t start_val                # Start position for the current node for samples_val\r\n    cdef SIZE_t end_val                  # End position for the current node for samples_val\r\n\r\n    cdef const DTYPE_t[:, :] X\r\n    cdef const DOUBLE_t[:, ::1] y\r\n    cdef DOUBLE_t* sample_weight\r\n\r\n    # The samples vector `samples` is maintained by the Splitter object such\r\n    # that the train samples contained in a node are contiguous. With this setting,\r\n    # `node_split` reorganizes the node samples `samples[start:end]` in two\r\n    # subsets `samples[start:pos]` and `samples[pos:end]`.\r\n\r\n    # When `honest=True` then we also store a samples vector `samples_val` that\r\n    # is also maintained by the Splitter that keeps indices of the val set and\r\n    # such that the val samples contained in a node are contiguous in `samples_val`.\r\n    # `node_split` also reoganizes the node samples `samples_val[start_val:end_val]` in two\r\n    # subsets `samples_val[start_val:pos_val]` and `samples_val[pos_val:end_val]`.\r\n\r\n    # The 1-d  `features` array of size n_features contains the features\r\n    # indices and allows fast sampling without replacement of features.\r\n\r\n    # The 1-d `constant_features` array of size n_features holds in\r\n    # `constant_features[:n_constant_features]` the feature ids with\r\n    # constant values for all the samples in the train set that reached a specific node.\r\n    # The value `n_constant_features` is given by the parent node to its\r\n    # child nodes.  The content of the range `[n_constant_features:]` is left\r\n    # undefined, but preallocated for performance reasons\r\n    # This allows optimization with depth-based tree building.\r\n\r\n    # Methods\r\n    cdef int init_sample_inds(self, SIZE_t* samples,\r\n                              const SIZE_t[::1] np_samples,\r\n                              DOUBLE_t* sample_weight,\r\n                              SIZE_t* n_samples, double* weighted_n_samples) except -1 nogil\r\n\r\n    cdef int init(self, const DTYPE_t[:, :] X, const DOUBLE_t[:, ::1] y,\r\n                  DOUBLE_t* sample_weight,\r\n                  const SIZE_t[::1] np_samples_train,\r\n                  const SIZE_t[::1] np_samples_val) except -1 nogil\r\n\r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end, double* weighted_n_node_samples,\r\n                        SIZE_t start_val, SIZE_t end_val, double* weighted_n_node_samples_val) except -1 nogil\r\n\r\n    cdef int node_split(self,\r\n                        double impurity,   # Impurity of the node\r\n                        SplitRecord* split,\r\n                        SIZE_t* n_constant_features) except -1 nogil\r\n\r\n    cdef void node_value_val(self, double* dest) noexcept nogil\r\n    cdef void node_jacobian_val(self, double* dest) noexcept nogil\r\n    cdef void node_precond_val(self, double* dest) noexcept nogil\r\n    cdef double node_impurity(self) noexcept nogil\r\n    cdef double node_impurity_val(self) noexcept nogil\r\n    cdef double proxy_node_impurity(self) noexcept nogil\r\n    cdef double proxy_node_impurity_val(self) noexcept nogil\r\n    cdef bint is_children_impurity_proxy(self) noexcept nogil\r\n    "
  },
  {
    "path": "econml/tree/_splitter.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_splitter.pyx\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nfrom ._criterion cimport Criterion\r\n\r\nfrom libc.stdlib cimport free\r\nfrom libc.string cimport memcpy\r\nfrom libc.math cimport floor\r\n\r\nimport copy\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\nfrom ._utils cimport log\r\nfrom ._utils cimport rand_int\r\nfrom ._utils cimport rand_uniform\r\nfrom ._utils cimport RAND_R_MAX\r\nfrom ._utils cimport safe_realloc\r\n\r\ncdef double INFINITY = np.inf\r\n\r\n# Mitigate precision differences between 32 bit and 64 bit\r\ncdef DTYPE_t FEATURE_THRESHOLD = 1e-7\r\n\r\ncdef inline void _init_split(SplitRecord* self, SIZE_t start_pos, SIZE_t start_pos_val) noexcept nogil:\r\n    self.impurity_left = INFINITY\r\n    self.impurity_right = INFINITY\r\n    self.impurity_left_val = INFINITY\r\n    self.impurity_right_val = INFINITY\r\n    self.pos = start_pos\r\n    self.pos_val = start_pos_val\r\n    self.feature = 0\r\n    self.threshold = 0.\r\n    self.improvement = -INFINITY\r\n\r\n\r\ncdef class Splitter:\r\n    \"\"\"Abstract splitter class.\r\n    Splitters are called by tree builders to find the best splits, one split at a time.\r\n    \"\"\"\r\n\r\n    def __cinit__(self, Criterion criterion, Criterion criterion_val,\r\n                  SIZE_t max_features, SIZE_t min_samples_leaf, double min_weight_leaf,\r\n                  DTYPE_t min_balancedness_tol, bint honest, double min_eig_leaf, bint min_eig_leaf_on_val,\r\n                  UINT32_t random_state):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        criterion : Criterion\r\n            The criterion to measure the quality of a split on the train set.\r\n        criterion_val : Criterion\r\n            The criterion to be used to calculate quantities related to split quality on the val set.\r\n        max_features : SIZE_t\r\n            The maximal number of randomly selected features which can be\r\n            considered for a split.\r\n        min_samples_leaf : SIZE_t\r\n            The minimal number of samples each leaf can have, where splits\r\n            which would result in having less samples in a leaf are not considered.\r\n            Constraint is enforced on both the train and val set separately.\r\n        min_weight_leaf : SIZE_t\r\n            The minimal number of total weight of samples each leaf can have, where splits\r\n            which would result in having less weight in a leaf are not considered.\r\n            Constraint is enforced on both train and val set separately.\r\n        min_balancedness_tol : DTYPE_t\r\n            Tolerance level of how balanced a split can be (in [0, .5]) with\r\n            0 meaning split has to be fully balanced and .5 meaning no balancedness\r\n            constraint. Constraint is enforced on both train and val set separately.\r\n        honest : bint\r\n            Whether we should do honest splitting, i.e. train and val set are different.\r\n        min_eig_leaf : double\r\n            The minimum value of computationally fast proxies for the minimum eigenvalue\r\n            of the jacobian J(x) of a node in the case of linear moment equation trees:\r\n            J(x) * theta(x) - precond(x) = 0. The proxy used is defered and must be implemented\r\n            by the criterion objects, if min_eig_leaf >= 0.0, via the methods `min_eig_left()`\r\n            and `min_eig_right()` for the minimum eigenvalue proxy of the left and right child\r\n            correspondingly.\r\n        min_eig_leaf_on_val : bool\r\n            Whether the minimum eigenvalue constraint should also be enforced on the val set.\r\n            Should be used with caution as honesty is partially violated.\r\n        random_state : UINT32_t\r\n            The user inputed random seed to be used for pseudo-randomness\r\n        \"\"\"\r\n\r\n        self.criterion = criterion\r\n        if honest:\r\n            self.criterion_val = criterion_val\r\n        else:\r\n            self.criterion_val = criterion\r\n\r\n        self.features = NULL\r\n        self.n_features = 0\r\n\r\n        self.samples = NULL\r\n        self.n_samples = 0\r\n        self.samples_val = NULL\r\n        self.n_samples_val = 0\r\n        self.feature_values = NULL\r\n        self.feature_values_val = NULL\r\n\r\n        self.sample_weight = NULL\r\n\r\n        self.max_features = max_features\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_leaf = min_weight_leaf\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n        self.min_eig_leaf = min_eig_leaf\r\n        self.min_eig_leaf_on_val = min_eig_leaf_on_val\r\n        self.rand_r_state = random_state\r\n\r\n    def __dealloc__(self):\r\n        \"\"\"Destructor.\"\"\"\r\n\r\n        free(self.samples)\r\n        free(self.features)\r\n        free(self.constant_features)\r\n        free(self.feature_values)\r\n        if self.honest:\r\n            free(self.samples_val)\r\n            free(self.feature_values_val)\r\n\r\n    def __getstate__(self):\r\n        return {}\r\n\r\n    def __setstate__(self, d):\r\n        pass\r\n\r\n    cdef int init_sample_inds(self, SIZE_t* samples,\r\n                               const SIZE_t[::1] np_samples,\r\n                               DOUBLE_t* sample_weight,\r\n                               SIZE_t* n_samples,\r\n                               double* weighted_n_samples) except -1 nogil:\r\n        \"\"\" Initialize the cython sample index arrays `samples` based on the python\r\n        numpy array `np_samples`. Calculate total weight of samples as you go though the pass\r\n        and store it in the output variable `weighted_n_samples`. Update the number of samples\r\n        passed via the input/output variable `n_samples` to the number of *positively* weighted\r\n        samples, so that we only work with that subset.\r\n        \"\"\"\r\n        cdef SIZE_t i, j, ind\r\n        weighted_n_samples[0] = 0.0\r\n        j = 0\r\n        for i in range(np_samples.shape[0]):\r\n            ind = np_samples[i]\r\n            # Only work with positively weighted samples\r\n            if sample_weight == NULL or sample_weight[ind] > 0.0:\r\n                samples[j] = ind\r\n                j += 1\r\n\r\n            if sample_weight != NULL:\r\n                weighted_n_samples[0] += sample_weight[ind]\r\n            else:\r\n                weighted_n_samples[0] += 1.0\r\n\r\n        # Number of samples is number of positively weighted samples\r\n        n_samples[0] = j\r\n\r\n    cdef int init(self, const DTYPE_t[:, :] X, const DOUBLE_t[:, ::1] y,\r\n                  DOUBLE_t* sample_weight,\r\n                  const SIZE_t[::1] np_samples_train,\r\n                  const SIZE_t[::1] np_samples_val) except -1 nogil:\r\n        \"\"\"Initialize the splitter.\r\n        Take in the input data X, y and the train/val split. Returns -1 in case of failure to\r\n        allocate memory (and raise MemoryError) or 0 otherwise.\r\n\r\n        Parameters\r\n        ----------\r\n        X : object\r\n            This contains the inputs. Usually it is a 2d numpy array.\r\n        y : ndarray, dtype=DOUBLE_t\r\n            This is the vector of targets, or true labels, for the samples\r\n        sample_weight : ndarray, dtype=DOUBLE_t\r\n            The sample weights\r\n        np_samples_train : ndarray, dtype=SIZE_t\r\n            The indices of the samples in the train set\r\n        np_samples_val : ndarray, dtype=SIZE_t\r\n            The indices of the samples in the val set\r\n        \"\"\"\r\n\r\n        cdef SIZE_t n_features = X.shape[1]\r\n        cdef SIZE_t n_samples = np_samples_train.shape[0]\r\n\r\n        # Create a new array which will be used to store nonzero weighted\r\n        # sample indices of the training set.\r\n        cdef SIZE_t* samples = safe_realloc(&self.samples, n_samples)\r\n        # Initialize this array based on the numpy array np_samples_train\r\n        self.init_sample_inds(self.samples, np_samples_train, sample_weight,\r\n                         &self.n_samples, &self.weighted_n_samples)\r\n\r\n        # Create an array that will store a permuted version of the feature indices\r\n        # such that throughout the execution the first n_constant_features in this\r\n        # array are features that have been deemed as constant valued and are ignored.\r\n        # See loop invariant in `node_split()` method below.\r\n        cdef SIZE_t* features = safe_realloc(&self.features, n_features)\r\n        for i in range(n_features):\r\n            features[i] = i\r\n\r\n        self.n_features = n_features\r\n\r\n        safe_realloc(&self.feature_values, self.n_samples)      # Will store feature_values of the drawn feature\r\n        safe_realloc(&self.constant_features, self.n_features)  # Used as helper storage\r\n\r\n        self.X = X\r\n        self.y = y\r\n        self.sample_weight = sample_weight\r\n\r\n        # Initialize criterion\r\n        self.criterion.init(self.y, self.sample_weight, self.weighted_n_samples, self.samples)\r\n        \r\n        # If `honest=True` do initialize analogous validation set objects.\r\n        cdef SIZE_t n_samples_val\r\n        cdef SIZE_t* samples_val\r\n        if self.honest:\r\n            n_samples_val = np_samples_val.shape[0]\r\n            samples_val = safe_realloc(&self.samples_val, n_samples_val)\r\n            self.init_sample_inds(self.samples_val, np_samples_val, sample_weight,\r\n                            &self.n_samples_val, &self.weighted_n_samples_val)\r\n            safe_realloc(&self.feature_values_val, self.n_samples_val)\r\n            self.criterion_val.init(self.y, self.sample_weight, self.weighted_n_samples_val,\r\n                                    self.samples_val)\r\n        else:\r\n            self.n_samples_val = self.n_samples\r\n            self.samples_val = self.samples\r\n            self.weighted_n_samples_val = self.weighted_n_samples\r\n            self.feature_values_val = self.feature_values\r\n\r\n        return 0\r\n\r\n    cdef int node_reset(self, SIZE_t start, SIZE_t end,  double* weighted_n_node_samples,\r\n                        SIZE_t start_val, SIZE_t end_val, double* weighted_n_node_samples_val) except -1 nogil:\r\n        \"\"\"Reset splitter on node samples[start:end] on train set and [start_val:end_val] on val set.\r\n        Returns -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n\r\n        Parameters\r\n        ----------\r\n        start : SIZE_t\r\n            The index of the first sample to consider on the train set\r\n        end : SIZE_t\r\n            The index of the last sample to consider on the train set\r\n        weighted_n_node_samples : double*\r\n            On output, weighted_n_node_samples[0] stores the total weight of the training samples in the node\r\n        start_val : SIZE_t\r\n            The index of the first sample to consider on the val set\r\n        end_val : SIZE_t\r\n            The index of the last sample to consider on the val set\r\n        weighted_n_node_samples_val : double*\r\n            On output, weighted_n_node_samples_val[0] stores the total weight of the val samples in the node\r\n        \"\"\"\r\n\r\n        self.start = start\r\n        self.end = end\r\n        self.start_val = start_val\r\n        self.end_val = end_val\r\n\r\n        self.criterion.node_reset(start, end)\r\n        weighted_n_node_samples[0] = self.criterion.weighted_n_node_samples\r\n        \r\n        if self.honest:\r\n            self.criterion_val.node_reset(start_val, end_val)\r\n            weighted_n_node_samples_val[0] = self.criterion_val.weighted_n_node_samples\r\n        else:\r\n            weighted_n_node_samples_val[0] = self.criterion.weighted_n_node_samples\r\n        return 0\r\n\r\n    cdef int node_split(self, double impurity, SplitRecord* split,\r\n                        SIZE_t* n_constant_features) except -1 nogil:\r\n        \"\"\"Find the best split on node samples[start:end].\r\n        This is a placeholder method. The majority of computation will be done\r\n        here.\r\n        It should return -1 upon errors.\r\n        \"\"\"\r\n\r\n        pass\r\n\r\n    cdef void node_value_val(self, double* dest) noexcept nogil:\r\n        \"\"\"Copy the value of node samples[start:end] into dest.\"\"\"\r\n\r\n        self.criterion_val.node_value(dest)\r\n    \r\n    cdef void node_jacobian_val(self, double* dest) noexcept nogil:\r\n        \"\"\"Copy the mean jacobian of node samples[start:end] into dest.\"\"\"\r\n\r\n        self.criterion_val.node_jacobian(dest)\r\n    \r\n    cdef void node_precond_val(self, double* dest) noexcept nogil:\r\n        \"\"\"Copy the mean precond of node samples[start:end] into dest.\"\"\"\r\n\r\n        self.criterion_val.node_precond(dest)\r\n\r\n    cdef double node_impurity(self) noexcept nogil:\r\n        \"\"\"Return the impurity of the current node on the train set.\"\"\"\r\n\r\n        return self.criterion.node_impurity()\r\n    \r\n    cdef double node_impurity_val(self) noexcept nogil:\r\n        \"\"\"Return the impurity of the current node on the val set.\"\"\"\r\n\r\n        return self.criterion_val.node_impurity()\r\n    \r\n    cdef double proxy_node_impurity(self) noexcept nogil:\r\n        \"\"\"Return the impurity of the current node on the train set.\"\"\"\r\n\r\n        return self.criterion.proxy_node_impurity()\r\n    \r\n    cdef double proxy_node_impurity_val(self) noexcept nogil:\r\n        \"\"\"Return the impurity of the current node on the val set.\"\"\"\r\n\r\n        return self.criterion_val.proxy_node_impurity()\r\n\r\n    cdef bint is_children_impurity_proxy(self) noexcept nogil:\r\n        \"\"\"Whether the criterion method children_impurity() returns an\r\n        accurate node impurity of the children or just some computationally efficient\r\n        approximation.\r\n        \"\"\"\r\n        return (self.criterion.proxy_children_impurity or\r\n                self.criterion_val.proxy_children_impurity)\r\n\r\n\r\ncdef class BestSplitter(Splitter):\r\n    \"\"\"Splitter for finding the best split.\"\"\"\r\n    def __reduce__(self):\r\n        return (BestSplitter, (self.criterion,\r\n                               self.criterion_val,\r\n                               self.max_features,\r\n                               self.min_samples_leaf,\r\n                               self.min_weight_leaf,\r\n                               self.min_balancedness_tol,\r\n                               self.honest,\r\n                               self.min_eig_leaf,\r\n                               self.min_eig_leaf_on_val,\r\n                               self.random_state), self.__getstate__())\r\n\r\n    cdef int node_split(self, double impurity, SplitRecord* split,\r\n                        SIZE_t* n_constant_features) except -1 nogil:\r\n        \"\"\"Find the best split on node samples[start:end]\r\n        Returns -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n\r\n        Parameters\r\n        ----------\r\n        impurity : double\r\n            The impurity of the current node to be split. Passed in explicitly as it might\r\n            be potentially be calculated by the builder from a prior call to children_impurity\r\n            when the parent node was split, so as to avoid double calculation\r\n        split : SplitRecord*\r\n            On output, it stores the information that describe the best split found\r\n        n_constant_features : SIZE_t*\r\n            On input, it contains the number of known constant features in the node (because\r\n            they were already constant in the parent node). On output, it contains the new\r\n            number of constant features, including the new ones that were found constant within this\r\n            node.\r\n        \"\"\"\r\n        # Find the best split\r\n        cdef SIZE_t* samples = self.samples\r\n        cdef SIZE_t start = self.start\r\n        cdef SIZE_t end = self.end\r\n        cdef SIZE_t* samples_val = self.samples_val\r\n        cdef SIZE_t start_val = self.start_val\r\n        cdef SIZE_t end_val = self.end_val\r\n\r\n        cdef SIZE_t* features = self.features\r\n        cdef SIZE_t* constant_features = self.constant_features\r\n        cdef SIZE_t n_features = self.n_features\r\n\r\n        cdef DTYPE_t* Xf = self.feature_values\r\n        cdef DTYPE_t* Xf_val = self.feature_values_val\r\n        cdef SIZE_t max_features = self.max_features\r\n        cdef SIZE_t min_samples_leaf = self.min_samples_leaf\r\n        cdef double min_weight_leaf = self.min_weight_leaf\r\n        cdef double min_eig_leaf = self.min_eig_leaf\r\n        cdef UINT32_t* random_state = &self.rand_r_state\r\n\r\n        cdef SplitRecord best, current\r\n        cdef double current_proxy_improvement = -INFINITY\r\n        cdef double best_proxy_improvement = -INFINITY\r\n        cdef double current_threshold = 0.0\r\n        cdef double weighted_n_node_samples, weighted_n_samples, weighted_n_left, weighted_n_right\r\n\r\n        cdef SIZE_t f_i = n_features\r\n        cdef SIZE_t f_j\r\n        cdef SIZE_t p\r\n        cdef SIZE_t p_val\r\n        cdef SIZE_t i\r\n\r\n        cdef SIZE_t n_visited_features = 0\r\n        # Number of features discovered to be constant during the split search\r\n        cdef SIZE_t n_found_constants = 0\r\n        # Number of features known to be constant and drawn without replacement\r\n        cdef SIZE_t n_drawn_constants = 0\r\n        cdef SIZE_t n_known_constants = n_constant_features[0]\r\n        # n_total_constants = n_known_constants + n_found_constants\r\n        cdef SIZE_t n_total_constants = n_known_constants\r\n        cdef SIZE_t partition_end\r\n\r\n        _init_split(&best, end, end_val)\r\n\r\n        # Sample up to max_features without replacement using a\r\n        # Fisher-Yates-based algorithm (using the local variables `f_i` and\r\n        # `f_j` to compute a permutation of the `features` array).\r\n        #\r\n        # Skip the CPU intensive evaluation of the impurity criterion for\r\n        # features that were already detected as constant (hence not suitable\r\n        # for good splitting) by ancestor nodes and save the information on\r\n        # newly discovered constant features to spare computation on descendant\r\n        # nodes.\r\n        while (f_i > n_total_constants and  # Stop early if remaining features\r\n                                            # are constant\r\n                (n_visited_features < max_features or\r\n                 # At least one drawn features must be non constant\r\n                 n_visited_features <= n_found_constants + n_drawn_constants)):\r\n\r\n            n_visited_features += 1\r\n\r\n            # Loop invariant: elements of features in\r\n            # - [0, n_drawn_constant) holds drawn and known constant features;\r\n            # - [n_drawn_constant, n_known_constant) holds known constant\r\n            #   features that haven't been drawn yet;\r\n            # - [n_known_constant, n_total_constant) holds newly found constant\r\n            #   features;\r\n            # - [n_total_constant, f_i) holds features that haven't been drawn\r\n            #   yet and aren't constant apriori.\r\n            # - [f_i, n_features) holds features that have been drawn\r\n            #   and aren't constant.\r\n\r\n\r\n            # TODO. Add some randomness that rejects some splits so that each the threshold on\r\n            # each feature is sufficiently random and so that the number of features that\r\n            # are inspected is also random. This is required by the theory so that every feature\r\n            # will have the possibility to be the one that is split upon.\r\n\r\n            # Draw a feature at random\r\n            f_j = rand_int(n_drawn_constants, f_i - n_found_constants,\r\n                           random_state)\r\n\r\n            if f_j < n_known_constants:\r\n                # f_j in the interval [n_drawn_constants, n_known_constants[\r\n                features[n_drawn_constants], features[f_j] = features[f_j], features[n_drawn_constants]\r\n\r\n                n_drawn_constants += 1\r\n\r\n            else:\r\n                # f_j in the interval [n_known_constants, f_i - n_found_constants[\r\n                f_j += n_found_constants\r\n                # f_j in the interval [n_total_constants, f_i[\r\n                current.feature = features[f_j]\r\n\r\n                # Sort samples along that feature; by\r\n                # copying the values into an array and\r\n                # sorting the array in a manner which utilizes the cache more\r\n                # effectively.\r\n                for i in range(start, end):\r\n                    Xf[i] = self.X[samples[i], current.feature]\r\n\r\n                sort(Xf + start, samples + start, end - start)\r\n\r\n                if self.honest:\r\n                    for i in range(start_val, end_val):\r\n                        Xf_val[i] = self.X[samples_val[i], current.feature]\r\n                    \r\n                    sort(Xf_val + start_val, samples_val + start_val, end_val - start_val)\r\n\r\n                if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD:\r\n                    features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j]\r\n\r\n                    n_found_constants += 1\r\n                    n_total_constants += 1\r\n\r\n                else:\r\n                    f_i -= 1\r\n                    features[f_i], features[f_j] = features[f_j], features[f_i]\r\n\r\n                    # Evaluate all splits\r\n                    self.criterion.reset()  # Reset criterion to start evaluating splits in increasing feature manner\r\n                    if self.honest:\r\n                        self.criterion_val.reset() # If honest, then reset val criterion too\r\n                    # We know that by balancedness we must start by at least this position of the node\r\n                    p = start + <int>floor((.5 - self.min_balancedness_tol) * (end - start)) - 1\r\n                    p_val = start_val   # p_val will track p so no need to add the offset\r\n\r\n                    while p < end and p_val < end_val:\r\n                        # We find equivalent values up to floating point precision\r\n                        while (p + 1 < end and\r\n                               Xf[p + 1] <= Xf[p] + FEATURE_THRESHOLD):\r\n                            p += 1\r\n\r\n                        # (p + 1 >= end) or (X[samples[p + 1], current.feature] >\r\n                        #                    X[samples[p], current.feature])\r\n                        p += 1\r\n                        # (p >= end) or (X[samples[p], current.feature] >\r\n                        #                X[samples[p - 1], current.feature])\r\n\r\n                        # we set the threshold to be the mid-point between the two feature values\r\n                        current_threshold = Xf[p] / 2.0 + Xf[p - 1] / 2.0\r\n                        if ((current_threshold == Xf[p]) or\r\n                            (current_threshold == INFINITY) or\r\n                            (current_threshold == -INFINITY)):\r\n                            current_threshold = Xf[p - 1]\r\n\r\n                        # We need to advance p_val such that if we partition samples_val[start_val:end_val]\r\n                        # into samples_val[start_val:best.pos_val] and samples_val[best:pos_val:end_val], then\r\n                        # the first part contains all samples in Xval that are below the threshold. Thus we need\r\n                        # to advance p_val, until Xf_val[p_val] is the first p such that Xf_val[p] > threshold.\r\n                        if self.honest:\r\n                            while (p_val < end_val and\r\n                                Xf_val[p_val] <= current_threshold):\r\n                                p_val += 1\r\n                        else:\r\n                            p_val = p   # If not honest then p_val is same as p\r\n\r\n                        if p < end and p_val < end_val:\r\n                            current.pos = p\r\n                            current.pos_val = p_val\r\n\r\n                            # Reject if imbalanced on either train or val set. We know that the first\r\n                            # direction on the train set is guaranteed due to the offset we added to the\r\n                            # starting point.\r\n                            if (end - current.pos) < (.5 - self.min_balancedness_tol) * (end - start):\r\n                                break\r\n                            if (current.pos_val - start_val) < (.5 - self.min_balancedness_tol) * (end_val - start_val):\r\n                                continue\r\n                            if (end_val - current.pos_val) < (.5 - self.min_balancedness_tol) * (end_val - start_val):\r\n                                break\r\n\r\n                            # Reject if min_samples_leaf is not guaranteed\r\n                            if (current.pos - start) < min_samples_leaf:\r\n                                continue\r\n                            if (end - current.pos) < min_samples_leaf:\r\n                                break\r\n                            # Reject if min_samples_leaf is not guaranteed on val\r\n                            if (current.pos_val - start_val) < min_samples_leaf:\r\n                                continue\r\n                            if (end_val - current.pos_val) < min_samples_leaf:\r\n                                break\r\n\r\n                            # If nothing is rejected, then update the criterion to hold info on the split\r\n                            # at position current.pos\r\n                            self.criterion.update(current.pos)\r\n                            if self.honest:\r\n                                self.criterion_val.update(current.pos_val)  # similarly for criterion_val if honest\r\n\r\n                            # Reject if min_weight_leaf is not satisfied\r\n                            if self.criterion.weighted_n_left < min_weight_leaf:\r\n                                continue\r\n                            if self.criterion.weighted_n_right < min_weight_leaf:\r\n                                break\r\n                            # Reject if minimum eigenvalue proxy requirement is not satisfied on train\r\n                            # We do not check this constraint on val, since the eigenvalue proxy can depend on\r\n                            # label information and we will be violating honesty.\r\n                            if min_eig_leaf >= 0.0:\r\n                                if self.criterion.min_eig_left() < min_eig_leaf:\r\n                                    continue\r\n                                if self.criterion.min_eig_right() < min_eig_leaf:\r\n                                    continue\r\n                                if self.min_eig_leaf_on_val:\r\n                                    if self.criterion_val.min_eig_left() < min_eig_leaf:\r\n                                        continue\r\n                                    if self.criterion_val.min_eig_right() < min_eig_leaf:\r\n                                        continue\r\n\r\n                            # Reject if min_weight_leaf constraint is violated\r\n                            if self.honest:\r\n                                if self.criterion_val.weighted_n_left < min_weight_leaf:\r\n                                    continue\r\n                                if self.criterion_val.weighted_n_right < min_weight_leaf:\r\n                                    break\r\n                            \r\n                            # Calculate fast version of impurity_improvement of the split to be used for ranking splits\r\n                            current_proxy_improvement = self.criterion.proxy_impurity_improvement()\r\n\r\n                            if current_proxy_improvement > best_proxy_improvement:\r\n                                best_proxy_improvement = current_proxy_improvement\r\n                                # sum of halves is used to avoid infinite value\r\n                                current.threshold = current_threshold\r\n                                best = current  # copy\r\n\r\n        # Reorganize into samples[start:best.pos] + samples[best.pos:end]\r\n        if best.pos < end and best.pos_val < end_val:\r\n            partition_end = end\r\n            p = start\r\n\r\n            while p < partition_end:\r\n                if self.X[samples[p], best.feature] <= best.threshold:\r\n                    p += 1\r\n                else:\r\n                    partition_end -= 1\r\n\r\n                    samples[p], samples[partition_end] = samples[partition_end], samples[p]\r\n\r\n            if self.honest:\r\n                partition_end = end_val\r\n                p = start_val\r\n\r\n                while p < partition_end:\r\n                    if self.X[samples_val[p], best.feature] <= best.threshold:\r\n                        p += 1\r\n                    else:\r\n                        partition_end -= 1\r\n\r\n                        samples_val[p], samples_val[partition_end] = samples_val[partition_end], samples_val[p]\r\n\r\n            self.criterion.reset()\r\n            self.criterion.update(best.pos)\r\n            if self.honest:\r\n                self.criterion_val.reset()\r\n                self.criterion_val.update(best.pos_val)\r\n            # Calculate a more accurate version of impurity improvement using the input baseline impurity\r\n            # passed here by the TreeBuilder. The TreeBuilder uses the proxy_node_impurity() to calculate\r\n            # this baseline if self.is_children_impurity_proxy(), else uses the call to children_impurity()\r\n            # on the parent node, when that node was split.\r\n            best.improvement = self.criterion.impurity_improvement(impurity)\r\n            # if we need children impurities by the builder, then we populate these entries\r\n            # otherwise, we leave them blank to avoid the extra computation.\r\n            if not self.is_children_impurity_proxy():\r\n                self.criterion.children_impurity(&best.impurity_left, &best.impurity_right)\r\n                if self.honest:\r\n                    self.criterion_val.children_impurity(&best.impurity_left_val,\r\n                                                         &best.impurity_right_val)\r\n                else:\r\n                    best.impurity_left_val = best.impurity_left\r\n                    best.impurity_right_val = best.impurity_right\r\n\r\n        # Respect invariant for constant features: the original order of\r\n        # element in features[:n_known_constants] must be preserved for sibling\r\n        # and child nodes\r\n        memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants)\r\n\r\n        # Copy newly found constant features\r\n        memcpy(constant_features + n_known_constants,\r\n               features + n_known_constants,\r\n               sizeof(SIZE_t) * n_found_constants)\r\n\r\n        # Return values\r\n        split[0] = best\r\n        n_constant_features[0] = n_total_constants\r\n        return 0\r\n\r\n\r\n# Sort n-element arrays pointed to by Xf and samples, simultaneously,\r\n# by the values in Xf. Algorithm: Introsort (Musser, SP&E, 1997).\r\ncdef inline void sort(DTYPE_t* Xf, SIZE_t* samples, SIZE_t n) noexcept nogil:\r\n    if n == 0:\r\n      return\r\n    cdef int maxd = 2 * <int>log(n)\r\n    introsort(Xf, samples, n, maxd)\r\n\r\n\r\ncdef inline void swap(DTYPE_t* Xf, SIZE_t* samples,\r\n        SIZE_t i, SIZE_t j) noexcept nogil:\r\n    # Helper for sort\r\n    Xf[i], Xf[j] = Xf[j], Xf[i]\r\n    samples[i], samples[j] = samples[j], samples[i]\r\n\r\n\r\ncdef inline DTYPE_t median3(DTYPE_t* Xf, SIZE_t n) noexcept nogil:\r\n    # Median of three pivot selection, after Bentley and McIlroy (1993).\r\n    # Engineering a sort function. SP&E. Requires 8/3 comparisons on average.\r\n    cdef DTYPE_t a = Xf[0], b = Xf[n / 2], c = Xf[n - 1]\r\n    if a < b:\r\n        if b < c:\r\n            return b\r\n        elif a < c:\r\n            return c\r\n        else:\r\n            return a\r\n    elif b < c:\r\n        if a < c:\r\n            return a\r\n        else:\r\n            return c\r\n    else:\r\n        return b\r\n\r\n\r\n# Introsort with median of 3 pivot selection and 3-way partition function\r\n# (robust to repeated elements, e.g. lots of zero features).\r\ncdef void introsort(DTYPE_t* Xf, SIZE_t *samples,\r\n                    SIZE_t n, int maxd) noexcept nogil:\r\n    cdef DTYPE_t pivot\r\n    cdef SIZE_t i, l, r\r\n\r\n    while n > 1:\r\n        if maxd <= 0:   # max depth limit exceeded (\"gone quadratic\")\r\n            heapsort(Xf, samples, n)\r\n            return\r\n        maxd -= 1\r\n\r\n        pivot = median3(Xf, n)\r\n\r\n        # Three-way partition.\r\n        i = l = 0\r\n        r = n\r\n        while i < r:\r\n            if Xf[i] < pivot:\r\n                swap(Xf, samples, i, l)\r\n                i += 1\r\n                l += 1\r\n            elif Xf[i] > pivot:\r\n                r -= 1\r\n                swap(Xf, samples, i, r)\r\n            else:\r\n                i += 1\r\n\r\n        introsort(Xf, samples, l, maxd)\r\n        Xf += r\r\n        samples += r\r\n        n -= r\r\n\r\n\r\ncdef inline void sift_down(DTYPE_t* Xf, SIZE_t* samples,\r\n                           SIZE_t start, SIZE_t end) noexcept nogil:\r\n    # Restore heap order in Xf[start:end] by moving the max element to start.\r\n    cdef SIZE_t child, maxind, root\r\n\r\n    root = start\r\n    while True:\r\n        child = root * 2 + 1\r\n\r\n        # find max of root, left child, right child\r\n        maxind = root\r\n        if child < end and Xf[maxind] < Xf[child]:\r\n            maxind = child\r\n        if child + 1 < end and Xf[maxind] < Xf[child + 1]:\r\n            maxind = child + 1\r\n\r\n        if maxind == root:\r\n            break\r\n        else:\r\n            swap(Xf, samples, root, maxind)\r\n            root = maxind\r\n\r\n\r\ncdef void heapsort(DTYPE_t* Xf, SIZE_t* samples, SIZE_t n) noexcept nogil:\r\n    cdef SIZE_t start, end\r\n\r\n    # heapify\r\n    start = (n - 2) / 2\r\n    end = n\r\n    while True:\r\n        sift_down(Xf, samples, start, end)\r\n        if start == 0:\r\n            break\r\n        start -= 1\r\n\r\n    # sort by shrinking the heap, putting the max element immediately after it\r\n    end = n - 1\r\n    while end > 0:\r\n        swap(Xf, samples, 0, end)\r\n        sift_down(Xf, samples, 0, end)\r\n        end = end - 1\r\n"
  },
  {
    "path": "econml/tree/_tree.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_tree.pxd\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n# See _tree.pyx for details.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\n\r\nctypedef np.npy_float64 DTYPE_t          # Type of X\r\nctypedef np.npy_float64 DOUBLE_t         # Type of y, sample_weight\r\nctypedef np.npy_intp SIZE_t              # Type for indices and counters\r\nctypedef np.npy_int32 INT32_t            # Signed 32 bit integer\r\nctypedef np.npy_uint32 UINT32_t          # Unsigned 32 bit integer\r\n\r\nfrom ._splitter cimport Splitter\r\nfrom ._splitter cimport SplitRecord\r\n\r\ncdef struct Node:\r\n    # Base storage structure for the nodes in a Tree object\r\n\r\n    SIZE_t left_child                   # id of the left child of the node\r\n    SIZE_t right_child                   # id of the right child of the node\r\n    SIZE_t depth                         # the depth level of the node\r\n    SIZE_t feature                       # Feature used for splitting the node\r\n    DOUBLE_t threshold                   # Threshold value at the node\r\n    DOUBLE_t impurity                    # Impurity of the node on the val set\r\n    SIZE_t n_node_samples                # Number of samples at the node on the val set\r\n    DOUBLE_t weighted_n_node_samples     # Weighted number of samples at the node on the val set\r\n    DOUBLE_t impurity_train                    # Impurity of the node on the training set\r\n    SIZE_t n_node_samples_train                # Number of samples at the node on the training set\r\n    DOUBLE_t weighted_n_node_samples_train     # Weighted number of samples at the node on the training set\r\n\r\ncdef class Tree:\r\n    # The Tree object is a binary tree structure constructed by the\r\n    # TreeBuilder. The tree structure is used for predictions and\r\n    # feature importances.\r\n\r\n    # Input/Output layout\r\n    cdef public SIZE_t n_features        # Number of features in X\r\n    cdef public SIZE_t n_outputs         # Number of parameters estimated at each node\r\n    cdef public SIZE_t n_relevant_outputs # Prefix of the parameters that we care about\r\n    cdef SIZE_t* n_classes                # Legacy from sklearn for compatibility. Number of classes in classification\r\n    cdef public SIZE_t max_n_classes      # Number of classes for each output coordinate\r\n\r\n    # Inner structures: values are stored separately from node structure,\r\n    # since size is determined at runtime.\r\n    cdef public SIZE_t max_depth         # Max depth of the tree\r\n    cdef public SIZE_t node_count        # Counter for node IDs\r\n    cdef public SIZE_t capacity          # Capacity of tree, in terms of nodes\r\n    cdef Node* nodes                     # Array of nodes\r\n    cdef double* value                   # (capacity, n_outputs, max_n_classes) array of values\r\n    cdef SIZE_t value_stride             # = n_outputs * max_n_classes\r\n    cdef bint store_jac                  # wether to store jacobian and precond information\r\n    cdef double* jac                     # node jacobian in linear moment: J(x) * theta - precond(x) = 0\r\n    cdef SIZE_t jac_stride               # = n_outputs * n_outputs\r\n    cdef double* precond                 # node preconditioned value\r\n    cdef SIZE_t precond_stride           # = n_outputs\r\n\r\n    # Methods\r\n    cdef SIZE_t _add_node(self, SIZE_t parent, bint is_left, bint is_leaf,\r\n                          SIZE_t feature, double threshold, \r\n                          double impurity_train, SIZE_t n_node_samples_train,\r\n                          double weighted_n_samples_train,\r\n                          double impurity_val, SIZE_t n_node_samples_val,\r\n                          double weighted_n_samples_val) except -1 nogil\r\n    cdef int _resize(self, SIZE_t capacity) except -1 nogil\r\n    cdef int _resize_c(self, SIZE_t capacity=*) except -1 nogil\r\n\r\n    cdef np.ndarray _get_value_ndarray(self)\r\n    cdef np.ndarray _get_jac_ndarray(self)\r\n    cdef np.ndarray _get_precond_ndarray(self)\r\n    cdef np.ndarray _get_node_ndarray(self)\r\n\r\n    cpdef np.ndarray predict(self, object X)\r\n    cpdef np.ndarray predict_jac(self, object X)\r\n    cpdef np.ndarray predict_precond(self, object X)\r\n    cpdef predict_precond_and_jac(self, object X)\r\n    cpdef np.ndarray predict_full(self, object X)\r\n\r\n    cpdef np.ndarray apply(self, object X)\r\n    cdef np.ndarray _apply(self, object X)\r\n    cpdef object decision_path(self, object X)\r\n    cdef object _decision_path(self, object X)\r\n\r\n    cpdef compute_feature_importances(self, normalize=*, max_depth=*, depth_decay=*)\r\n    cpdef compute_feature_heterogeneity_importances(self, normalize=*, max_depth=*, depth_decay=*)\r\n\r\n# =============================================================================\r\n# Tree builder\r\n# =============================================================================\r\n\r\ncdef class TreeBuilder:\r\n    # The TreeBuilder recursively builds a Tree object from training samples,\r\n    # using a Splitter object for splitting internal nodes and assigning\r\n    # values to leaves.\r\n    #\r\n    # This class controls the various stopping criteria and the node splitting\r\n    # evaluation order, e.g. depth-first or best-first.\r\n\r\n    cdef Splitter splitter              # Splitting algorithm\r\n\r\n    cdef SIZE_t min_samples_split       # Minimum number of samples in an internal node\r\n    cdef SIZE_t min_samples_leaf        # Minimum number of samples in a leaf\r\n    cdef double min_weight_leaf         # Minimum weight in a leaf\r\n    cdef SIZE_t max_depth               # Maximal tree depth\r\n    cdef double min_impurity_decrease   # Impurity threshold for early stopping\r\n\r\n    cpdef build(self, Tree tree, object X, np.ndarray y,\r\n                np.ndarray samples_train,\r\n                np.ndarray samples_val,\r\n                np.ndarray sample_weight=*,\r\n                bint store_jac=*)\r\n    cdef _check_input(self, object X, np.ndarray y, np.ndarray sample_weight)\r\n"
  },
  {
    "path": "econml/tree/_tree.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_tree.pyx\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\n\r\nfrom cpython cimport Py_INCREF, PyObject, PyTypeObject\r\n\r\nfrom libc.stdlib cimport free\r\nfrom libc.string cimport memcpy\r\nfrom libc.string cimport memset\r\nfrom libc.stdint cimport SIZE_MAX\r\nfrom libc.math cimport pow\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\nfrom scipy.sparse import csr_matrix\r\n\r\nfrom ._utils cimport Stack\r\nfrom ._utils cimport StackRecord\r\nfrom ._utils cimport safe_realloc\r\nfrom ._utils cimport sizet_ptr_to_ndarray\r\n\r\ncdef extern from \"numpy/arrayobject.h\":\r\n    object PyArray_NewFromDescr(PyTypeObject* subtype, np.dtype descr,\r\n                                int nd, np.npy_intp* dims,\r\n                                np.npy_intp* strides,\r\n                                void* data, int flags, object obj)\r\n\r\n# =============================================================================\r\n# Types and constants\r\n# =============================================================================\r\n\r\nfrom numpy import float64 as DTYPE\r\nfrom numpy import float64 as DOUBLE\r\n\r\ncdef double INFINITY = np.inf\r\ncdef double EPSILON = np.finfo('double').eps\r\n\r\nTREE_LEAF = -1\r\nTREE_UNDEFINED = -2\r\ncdef SIZE_t _TREE_LEAF = TREE_LEAF\r\ncdef SIZE_t _TREE_UNDEFINED = TREE_UNDEFINED\r\ncdef SIZE_t INITIAL_STACK_SIZE = 10\r\n\r\n# The definition of a numpy type to be used for converting the malloc'ed memory space that\r\n# contains an array of Node struct's into a structured numpy parallel array that can be as\r\n# array[key][index].\r\nNODE_DTYPE = np.dtype({\r\n    'names': ['left_child', 'right_child', 'depth', 'feature', 'threshold',\r\n              'impurity', 'n_node_samples', 'weighted_n_node_samples',\r\n              'impurity_train', 'n_node_samples_train', 'weighted_n_node_samples_train'],\r\n    'formats': [np.intp, np.intp, np.intp, np.intp, np.float64,\r\n                np.float64, np.intp, np.float64,\r\n                np.float64, np.intp, np.float64],\r\n    'offsets': [\r\n        <Py_ssize_t> &(<Node*> NULL).left_child,\r\n        <Py_ssize_t> &(<Node*> NULL).right_child,\r\n        <Py_ssize_t> &(<Node*> NULL).depth,\r\n        <Py_ssize_t> &(<Node*> NULL).feature,\r\n        <Py_ssize_t> &(<Node*> NULL).threshold,\r\n        <Py_ssize_t> &(<Node*> NULL).impurity,\r\n        <Py_ssize_t> &(<Node*> NULL).n_node_samples,\r\n        <Py_ssize_t> &(<Node*> NULL).weighted_n_node_samples,\r\n        <Py_ssize_t> &(<Node*> NULL).impurity_train,\r\n        <Py_ssize_t> &(<Node*> NULL).n_node_samples_train,\r\n        <Py_ssize_t> &(<Node*> NULL).weighted_n_node_samples_train,\r\n    ]\r\n})\r\n\r\ncdef class TreeBuilder:\r\n    \"\"\"Interface for different tree building strategies.\"\"\"\r\n\r\n    cpdef build(self, Tree tree, object X, np.ndarray y,\r\n                np.ndarray samples_train,\r\n                np.ndarray samples_val,\r\n                np.ndarray sample_weight=None,\r\n                bint store_jac=False):\r\n        \"\"\"Build tree from the training set (X, y) using samples_train for the\r\n        constructing the splits and samples_val for estimating the node values. store_jac\r\n        controls whether jacobian information is stored in the tree nodes in the case of\r\n        generalized random forests.\r\n        \"\"\"\r\n        pass\r\n\r\n    cdef inline _check_input(self, object X, np.ndarray y, np.ndarray sample_weight):\r\n        \"\"\"Check input dtype, layout and format\"\"\"\r\n\r\n        # since we have to copy and perform linear algebra we will make it fortran for efficiency\r\n        if X.dtype != DTYPE:\r\n            X = np.asfortranarray(X, dtype=DTYPE)\r\n\r\n        if y.dtype != DOUBLE or not y.flags.contiguous:\r\n            y = np.ascontiguousarray(y, dtype=DOUBLE)\r\n\r\n        if (sample_weight is not None and\r\n            (sample_weight.dtype != DOUBLE or\r\n            not sample_weight.flags.contiguous)):\r\n                sample_weight = np.asarray(sample_weight, dtype=DOUBLE,\r\n                                           order=\"C\")\r\n\r\n        return X, y, sample_weight\r\n\r\n# Depth first builder ---------------------------------------------------------\r\n\r\ncdef class DepthFirstTreeBuilder(TreeBuilder):\r\n    \"\"\"Build a tree in depth-first fashion.\"\"\"\r\n\r\n    def __cinit__(self, Splitter splitter, SIZE_t min_samples_split,\r\n                  SIZE_t min_samples_leaf, double min_weight_leaf,\r\n                  SIZE_t max_depth, double min_impurity_decrease):\r\n        \"\"\" Initialize parameters.\r\n        \r\n        Parameters\r\n        ----------\r\n        splitter : cython extension class of type Splitter\r\n            The splitter to be used for deciding the best split of each node.\r\n        min_samples_split : SIZE_t\r\n            The minimum number of samples required for a node to be considered for splitting\r\n        min_samples_leaf : SIZE_t\r\n            The minimum number of samples that each node must contain\r\n        min_weight_leaf : double\r\n            The minimum total weight of samples that each node must contain\r\n        max_depth : SIZE_t\r\n            The maximum depth of the tree\r\n        min_impurity_decrease : SIZE_t\r\n            The minimum improvement in impurity that a split must provide to be executed\r\n        \"\"\"\r\n        self.splitter = splitter\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_leaf = min_weight_leaf\r\n        self.max_depth = max_depth\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n\r\n    cpdef build(self, Tree tree, object X, np.ndarray y,\r\n                np.ndarray samples_train,\r\n                np.ndarray samples_val,\r\n                np.ndarray sample_weight=None,\r\n                bint store_jac=False):\r\n        \"\"\"Build an honest tree from data (X, y).\r\n\r\n        Parameters\r\n        ----------\r\n        X : (n, d) np.array\r\n            The features to use for splitting\r\n        y : (n, p) np.array\r\n            Any information used by the criterion to calculate the node values for a given node defined by\r\n            the X's\r\n        samples_train : (n,) np.array of type np.intp\r\n            The indices of the samples in X to be used for creating the splits of the tree (training set).\r\n        samples_val : (n,) np.array of type np.intp\r\n            The indices of the samples in X to be used for calculating the node values of the tree (val set).\r\n        sample_weight : (n,) np.array of type np.float64\r\n            The weight of each sample\r\n        store_jac : bool, default False\r\n            Whether jacobian information should be stored in the tree nodes by calling the node_jacobian_val\r\n            and node_precond_val of the splitter. This is related to trees that solve linear moment equations\r\n            of the form: J(x) * theta(x) - precond(x) = 0. If store_jac=True, then J(x) and precond(x) are also\r\n            stored at the tree nodes at the end of the build for easy access.\r\n        \"\"\"\r\n\r\n        # check input\r\n        X, y, sample_weight = self._check_input(X, y, sample_weight)\r\n\r\n        cdef DOUBLE_t* sample_weight_ptr = NULL\r\n        if sample_weight is not None:\r\n            sample_weight_ptr = <DOUBLE_t*> sample_weight.data\r\n\r\n        # Initial capacity\r\n        cdef int init_capacity\r\n\r\n        if tree.max_depth <= 10:\r\n            init_capacity = (1 << (tree.max_depth + 1)) - 1\r\n        else:\r\n            init_capacity = 2047\r\n\r\n        tree._resize(init_capacity)\r\n\r\n        # Parameters\r\n        cdef Splitter splitter = self.splitter\r\n        cdef SIZE_t max_depth = self.max_depth\r\n        cdef SIZE_t min_samples_leaf = self.min_samples_leaf\r\n        cdef double min_weight_leaf = self.min_weight_leaf\r\n        cdef SIZE_t min_samples_split = self.min_samples_split\r\n        cdef double min_impurity_decrease = self.min_impurity_decrease\r\n\r\n        # Recursive partition (without actual recursion)\r\n        splitter.init(X, y, sample_weight_ptr, samples_train, samples_val)\r\n\r\n        # The indices of all samples are stored in two arrays, `samples` and `samples_val` by the splitter,\r\n        # such that each node contains the samples from `start` to `end` in the samples array and from\r\n        # `start_val` to `end_val` in the `samples_val` array. Thus these four numbers are sufficient to\r\n        # represent a \"node\" of the tree during building.\r\n        cdef SIZE_t start\r\n        cdef SIZE_t end\r\n        cdef SIZE_t start_val\r\n        cdef SIZE_t end_val\r\n        cdef SIZE_t depth       # The depth of the current node considered for splitting\r\n        cdef SIZE_t parent      # The parent of the current node considered for splitting\r\n        cdef bint is_left       # Whether the current node considered for splitting is a left or right child\r\n        cdef SIZE_t n_node_samples = splitter.n_samples                        # Total number of training samples\r\n        cdef double weighted_n_samples = splitter.weighted_n_samples           # Total weight of training samples\r\n        cdef double weighted_n_node_samples     # Will be storing the total training weight of the current node\r\n        cdef SIZE_t n_node_samples_val = splitter.n_samples_val                # Total number of val samples\r\n        cdef double weighted_n_samples_val = splitter.weighted_n_samples_val   # Total weight of val samples\r\n        cdef double weighted_n_node_samples_val # Will be storing the total val weight of the current node\r\n        cdef SplitRecord split  # A split record is a struct produced by the splitter that contains all the split info\r\n        cdef SIZE_t node_id     # Will be storing the id that the tree assigns to a node when added to the tree\r\n\r\n        cdef double impurity = INFINITY         # Will be storing the impurity of the node considered for splitting\r\n        cdef double proxy_impurity = INFINITY   # An approximate version of the impurity used for min impurity decrease\r\n        cdef SIZE_t n_constant_features         # number of features identified as taking a constant value in the node\r\n        cdef bint is_leaf                       # Whether the node we are about to add to the tree is a leaf\r\n        cdef bint first = 1                     # If this is the root node we are splitting\r\n        cdef SIZE_t max_depth_seen = -1         # Max depth we've seen so far\r\n        cdef int rc = 0                         # To be used as a success flag for memory resizing calls\r\n\r\n        cdef Stack stack = Stack(INITIAL_STACK_SIZE)    # A stack contains the entries of all nodes to be considered\r\n        cdef StackRecord stack_record   # A stack record contains all the information required to split a node\r\n\r\n        with nogil:\r\n            # push root node onto stack\r\n            rc = stack.push(0, n_node_samples, 0, n_node_samples_val,\r\n                            0, _TREE_UNDEFINED, 0, INFINITY, INFINITY, 0)\r\n            if rc == -1:\r\n                # got return code -1 - out-of-memory\r\n                with gil:\r\n                    raise MemoryError()\r\n\r\n            while not stack.is_empty():\r\n                stack.pop(&stack_record)        # Let's pop a node from the stack to split\r\n                # Let's store the stack record in local values for easy access and manipulation\r\n                start = stack_record.start\r\n                end = stack_record.end\r\n                start_val = stack_record.start_val\r\n                end_val = stack_record.end_val\r\n                depth = stack_record.depth\r\n                parent = stack_record.parent\r\n                is_left = stack_record.is_left\r\n                impurity = stack_record.impurity\r\n                impurity_val = stack_record.impurity_val\r\n                n_constant_features = stack_record.n_constant_features\r\n\r\n                # Some easy calculations\r\n                n_node_samples = end - start\r\n                n_node_samples_val = end_val - start_val\r\n                # Let's reset the splitter to the initial state of considering the current node to split\r\n                # This will also return the total weight of the node in the training and validation set\r\n                # in the two variables passed by reference.\r\n                splitter.node_reset(start, end, &weighted_n_node_samples,\r\n                                    start_val, end_val, &weighted_n_node_samples_val)\r\n\r\n                # Determine if the node is a leaf based on simple constraints on the training and val set\r\n                is_leaf = (depth >= max_depth or\r\n                           n_node_samples < min_samples_split or\r\n                           n_node_samples < 2 * min_samples_leaf or\r\n                           weighted_n_node_samples < 2 * min_weight_leaf or\r\n                           n_node_samples_val < min_samples_split or\r\n                           n_node_samples_val < 2 * min_samples_leaf or\r\n                           weighted_n_node_samples_val < 2 * min_weight_leaf)\r\n\r\n                # If either the splitter only returns approximate children impurities at the end of each split\r\n                # or if we are in the root node, then we need to calculate node impurity for both evaluating\r\n                # the min_impurity_decrease constraint and for storing the impurity at the tree. This is done\r\n                # because sometimes node impurity might be computationally intensive to calculate and can be easily\r\n                # done once the splitter has calculated all the quantities at `node_reset`, but would add too much\r\n                # computational burden if done twice (once when considering the node for splitting and once when\r\n                # calculating the node's impurity when it is the children of a node that has just been split). Thus\r\n                # sometimes we just want to calculate an approximate child node impurity, solely for the purpose\r\n                # of evaluating whether the min_impurity_decrease constraint is satisfied by the returned split.\r\n                if (splitter.is_children_impurity_proxy()) or first:\r\n                    # This is the baseline of what we should use for impurity improvement\r\n                    proxy_impurity = splitter.proxy_node_impurity()\r\n                    # This is the true node impurity we want to store in the tree. The two should coincide if\r\n                    # `splitter.is_children_impurity_proxy()==False`.\r\n                    impurity = splitter.node_impurity()             # The node impurity on the training set\r\n                    impurity_val = splitter.node_impurity_val()     # The node impurity on the val set\r\n                    first = 0\r\n                else:\r\n                    # We use the impurity value stored in the stack, which was returned by children_impurity()\r\n                    # when the parent node of this node was split.\r\n                    proxy_impurity = impurity\r\n\r\n                if not is_leaf:\r\n                    # Find the best split of the node and return it in the `split` variable\r\n                    # Also use the fact that so far we have deemed `n_constant_features` to be constant in the\r\n                    # parent node and at the end return the number of features that have been deemed as taking\r\n                    # constant value, by updating the `n_constant_features` which is passed by reference.\r\n                    # This is used for speeding up computation as these features are not considered further for\r\n                    # splitting. This speed up is also enabled by the fact that we are doing depth-first-search\r\n                    # build.\r\n                    splitter.node_split(proxy_impurity, &split, &n_constant_features)\r\n                    # Note from original sklearn comments: If EPSILON=0 in the below comparison, float precision\r\n                    # issues stop splitting, producing trees that are dissimilar to v0.18\r\n                    is_leaf = (is_leaf or\r\n                               split.pos >= end or # no split of the training set was valid\r\n                               split.pos_val >= end_val or # no split of the validation set was valid\r\n                               (split.improvement + EPSILON < min_impurity_decrease)) # min impurity is violated\r\n\r\n                # Add the node that was just split to the tree, with all the auxiliary information and\r\n                # get the `node_id` assigned to it.\r\n                node_id = tree._add_node(parent, is_left, is_leaf, \r\n                                         split.feature, split.threshold,\r\n                                         impurity, n_node_samples, weighted_n_node_samples,\r\n                                         impurity_val, n_node_samples_val, weighted_n_node_samples_val)\r\n                # Memory error\r\n                if node_id == SIZE_MAX:\r\n                    rc = -1\r\n                    break\r\n\r\n                # Store value for all nodes, to facilitate tree/model inspection and interpretation\r\n                splitter.node_value_val(tree.value + node_id * tree.value_stride)\r\n                # If we are in a linear moment case and we want to store the node jacobian and node precond,\r\n                # i.e. value = Jacobian^{-1} @ precond\r\n                if store_jac:\r\n                    splitter.node_jacobian_val(tree.jac + node_id * tree.jac_stride)\r\n                    splitter.node_precond_val(tree.precond + node_id * tree.precond_stride)\r\n\r\n                if not is_leaf:\r\n                    # Push right child on stack\r\n                    rc = stack.push(split.pos, end, split.pos_val, end_val, depth + 1, node_id, 0,\r\n                                    split.impurity_right, split.impurity_right_val, n_constant_features)\r\n                    if rc == -1:\r\n                        break\r\n\r\n                    # Push left child on stack\r\n                    rc = stack.push(start, split.pos, start_val, split.pos_val, depth + 1, node_id, 1,\r\n                                    split.impurity_left, split.impurity_left_val, n_constant_features)\r\n                    if rc == -1:\r\n                        break\r\n\r\n                if depth > max_depth_seen:\r\n                    max_depth_seen = depth\r\n\r\n            # Resize the tree to use the minimal required memory\r\n            if rc >= 0:\r\n                rc = tree._resize_c(tree.node_count)\r\n\r\n            # Update trees max_depth variable for the maximum seen depth\r\n            if rc >= 0:\r\n                tree.max_depth = max_depth_seen\r\n\r\n        if rc == -1:\r\n            raise MemoryError()\r\n\r\n\r\n# =============================================================================\r\n# Tree\r\n# =============================================================================\r\n\r\ncdef class Tree:\r\n    # This is only used for compatibility with sklearn trees. In sklearn this represents the number of classes\r\n    # in a classification tree for each target output. Here it is always an array of 1's of size `self.n_outputs`.\r\n    property n_classes:\r\n        def __get__(self):\r\n            return sizet_ptr_to_ndarray(self.n_classes, self.n_outputs)\r\n\r\n    property children_left:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['left_child'][:self.node_count]\r\n\r\n    property children_right:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['right_child'][:self.node_count]\r\n\r\n    property depth:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['depth'][:self.node_count]\r\n\r\n    property n_leaves:\r\n        def __get__(self):\r\n            return np.sum(np.logical_and(\r\n                self.children_left == -1,\r\n                self.children_right == -1))\r\n\r\n    property feature:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['feature'][:self.node_count]\r\n\r\n    property threshold:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['threshold'][:self.node_count]\r\n\r\n    property impurity:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['impurity'][:self.node_count]\r\n\r\n    property n_node_samples:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['n_node_samples'][:self.node_count]\r\n\r\n    property weighted_n_node_samples:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['weighted_n_node_samples'][:self.node_count]\r\n    \r\n    property impurity_train:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['impurity_train'][:self.node_count]\r\n\r\n    property n_node_samples_train:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['n_node_samples_train'][:self.node_count]\r\n\r\n    property weighted_n_node_samples_train:\r\n        def __get__(self):\r\n            return self._get_node_ndarray()['weighted_n_node_samples_train'][:self.node_count]\r\n\r\n    # Value returns the relevant parameters estimated at each node (the ones we care about)\r\n    property value:\r\n        def __get__(self):\r\n            return self._get_value_ndarray()[:self.node_count, :self.n_relevant_outputs]\r\n\r\n    # Value returns all the parameters estimated at each node (even the nuisance ones we don't care about)\r\n    property full_value:\r\n        def __get__(self):\r\n            return self._get_value_ndarray()[:self.node_count]\r\n\r\n    # The jacobian J(x) of the node, for the case of linear moment trees with moment: J(x) * theta(x) - precond(x) = 0\r\n    property jac:\r\n        def __get__(self):\r\n            if not self.store_jac:\r\n                raise AttributeError(\"Jacobian computation was not enabled. Set store_jac=True\")\r\n            return self._get_jac_ndarray()[:self.node_count]\r\n    \r\n    # The precond(x) of the node, for the case of linear moment trees with moment: J(x) * theta(x) - precond(x) = 0\r\n    property precond:\r\n        def __get__(self):\r\n            if not self.store_jac:\r\n                raise AttributeError(\"Preconditioned quantity computation was not enabled. Set store_jac=True\")\r\n            return self._get_precond_ndarray()[:self.node_count]\r\n\r\n    def __cinit__(self, int n_features, int n_outputs, int n_relevant_outputs=-1, bint store_jac=False):\r\n        \"\"\" Initialize parameters\r\n\r\n        Parameters\r\n        ----------\r\n        n_features : int\r\n            Number of features X at train time\r\n        n_outputs : int\r\n            How many parameters/outputs are stored/estimated at each node\r\n        n_relevant_outputs : int, default -1\r\n            Which prefix of the parameters do we care about. The remainder are nuisance parameters.\r\n            If `n_relevant_outputs=-1`, then all parameters are relevant.\r\n        store_jac : bool, default False\r\n            Whether we will be storing jacobian and precond of linear moments information at each node.\r\n        \"\"\"\r\n        self.n_features = n_features\r\n        self.n_outputs = n_outputs\r\n        self.n_relevant_outputs = n_relevant_outputs if n_relevant_outputs > 0 else n_outputs\r\n        self.value_stride = n_outputs\r\n        self.n_classes = NULL\r\n        safe_realloc(&self.n_classes, n_outputs)\r\n        self.max_n_classes = 1\r\n        cdef SIZE_t k\r\n        for k in range(n_outputs):\r\n            self.n_classes[k] = 1\r\n\r\n        # Inner structures\r\n        self.max_depth = 0\r\n        self.node_count = 0\r\n        self.capacity = 0\r\n        self.value = NULL\r\n        self.nodes = NULL\r\n        self.store_jac = store_jac\r\n        self.jac = NULL\r\n        self.jac_stride = n_outputs * n_outputs\r\n        self.precond = NULL\r\n        self.precond_stride = n_outputs\r\n\r\n    def __dealloc__(self):\r\n        \"\"\"Destructor.\"\"\"\r\n        # Free all inner structures\r\n        free(self.value)\r\n        free(self.nodes)\r\n        if self.store_jac:\r\n            free(self.jac)\r\n            free(self.precond)\r\n\r\n    def __reduce__(self):\r\n        \"\"\"Reduce re-implementation, for pickling.\"\"\"\r\n        return (Tree, (self.n_features, self.n_outputs,\r\n                       self.n_relevant_outputs, self.store_jac), self.__getstate__())\r\n\r\n    def __getstate__(self):\r\n        \"\"\"Getstate re-implementation, for pickling.\"\"\"\r\n        d = {}\r\n        # capacity is inferred during the __setstate__ using nodes\r\n        d['max_depth'] = self.max_depth\r\n        d[\"node_count\"] = self.node_count\r\n        d[\"nodes\"] = self._get_node_ndarray()\r\n        d[\"values\"] = self._get_value_ndarray()\r\n        if self.store_jac:\r\n            d['jac'] = self._get_jac_ndarray()\r\n            d['precond'] = self._get_precond_ndarray()\r\n        return d\r\n\r\n    def __setstate__(self, d):\r\n        \"\"\"Setstate re-implementation, for unpickling.\"\"\"\r\n        self.max_depth = d['max_depth']\r\n        self.node_count = d['node_count']\r\n\r\n        if 'nodes' not in d:\r\n            raise ValueError('You have loaded Tree version which '\r\n                             'cannot be imported')\r\n\r\n        node_ndarray = d['nodes']\r\n        value_ndarray = d['values']\r\n\r\n        if (node_ndarray.ndim != 1 or\r\n                node_ndarray.dtype != NODE_DTYPE or\r\n                not node_ndarray.flags.c_contiguous):\r\n            raise ValueError('Did not recognise loaded array layout for `node_ndarray`')\r\n\r\n        value_shape = (node_ndarray.shape[0], self.n_outputs, self.max_n_classes)\r\n        if (value_ndarray.shape != value_shape or\r\n                not value_ndarray.flags.c_contiguous or\r\n                value_ndarray.dtype != np.float64):\r\n            raise ValueError('Did not recognise loaded array layout for `value_ndarray`')\r\n\r\n        self.capacity = node_ndarray.shape[0]\r\n        if self._resize_c(self.capacity) != 0:\r\n            raise MemoryError(\"resizing tree to %d\" % self.capacity)\r\n        nodes = memcpy(self.nodes, (<np.ndarray> node_ndarray).data,\r\n                       self.capacity * sizeof(Node))\r\n        value = memcpy(self.value, (<np.ndarray> value_ndarray).data,\r\n                       self.capacity * self.value_stride * sizeof(double))\r\n        \r\n        if self.store_jac:\r\n            jac_ndarray = d['jac']\r\n            jac_shape = (node_ndarray.shape[0], self.n_outputs * self.n_outputs)\r\n            if (jac_ndarray.shape != jac_shape or\r\n                    not jac_ndarray.flags.c_contiguous or\r\n                    jac_ndarray.dtype != np.float64):\r\n                raise ValueError('Did not recognise loaded array layout for `jac_ndarray`')\r\n            jac = memcpy(self.jac, (<np.ndarray> jac_ndarray).data,\r\n                         self.capacity * self.jac_stride * sizeof(double))\r\n            precond_ndarray = d['precond']\r\n            precond_shape = (node_ndarray.shape[0], self.n_outputs)\r\n            if (precond_ndarray.shape != precond_shape or\r\n                    not precond_ndarray.flags.c_contiguous or\r\n                    precond_ndarray.dtype != np.float64):\r\n                raise ValueError('Did not recognise loaded array layout for `precond_ndarray`')\r\n            precond = memcpy(self.precond, (<np.ndarray> precond_ndarray).data,\r\n                             self.capacity * self.precond_stride * sizeof(double))\r\n\r\n    cdef int _resize(self, SIZE_t capacity) except -1 nogil:\r\n        \"\"\"Resize all inner arrays to `capacity`, if `capacity` == -1, then\r\n           double the size of the inner arrays.\r\n        Returns -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n        \"\"\"\r\n        if self._resize_c(capacity) != 0:\r\n            # Acquire gil only if we need to raise\r\n            with gil:\r\n                raise MemoryError()\r\n\r\n    cdef int _resize_c(self, SIZE_t capacity=SIZE_MAX) except -1 nogil:\r\n        \"\"\"Guts of _resize\r\n        Returns -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n        \"\"\"\r\n        if capacity == self.capacity and self.nodes != NULL:\r\n            return 0\r\n\r\n        if capacity == SIZE_MAX:\r\n            if self.capacity == 0:\r\n                capacity = 3  # default initial value\r\n            else:\r\n                capacity = 2 * self.capacity\r\n\r\n        safe_realloc(&self.nodes, capacity)\r\n        safe_realloc(&self.value, capacity * self.value_stride)\r\n\r\n        # value memory is initialised to 0 to enable classifier argmax\r\n        if capacity > self.capacity:\r\n            memset(<void*>(self.value + self.capacity * self.value_stride), 0,\r\n                   (capacity - self.capacity) * self.value_stride *\r\n                   sizeof(double))\r\n        \r\n        if self.store_jac:\r\n            safe_realloc(&self.jac, capacity * self.jac_stride)\r\n            safe_realloc(&self.precond, capacity * self.precond_stride)\r\n            if capacity > self.capacity:\r\n                memset(<void*>(self.jac + self.capacity * self.jac_stride), 0,\r\n                       (capacity - self.capacity) * self.jac_stride * sizeof(double))\r\n                memset(<void*>(self.precond + self.capacity * self.precond_stride), 0,\r\n                       (capacity - self.capacity) * self.precond_stride * sizeof(double))\r\n\r\n        # if capacity smaller than node_count, adjust the counter\r\n        if capacity < self.node_count:\r\n            self.node_count = capacity\r\n\r\n        self.capacity = capacity\r\n        return 0\r\n\r\n    cdef SIZE_t _add_node(self, SIZE_t parent, bint is_left, bint is_leaf,\r\n                          SIZE_t feature, double threshold, \r\n                          double impurity_train, SIZE_t n_node_samples_train,\r\n                          double weighted_n_node_samples_train,\r\n                          double impurity_val, SIZE_t n_node_samples_val,\r\n                          double weighted_n_node_samples_val) except -1 nogil:\r\n        \"\"\"Add a node to the tree.\r\n        The new node registers itself as the child of its parent.\r\n        Returns (size_t)(-1) on error.\r\n        \"\"\"\r\n        cdef SIZE_t node_id = self.node_count\r\n\r\n        if node_id >= self.capacity:\r\n            if self._resize_c() != 0:\r\n                return SIZE_MAX\r\n\r\n        cdef Node* node = &self.nodes[node_id]\r\n        node.impurity = impurity_val\r\n        node.n_node_samples = n_node_samples_val\r\n        node.weighted_n_node_samples = weighted_n_node_samples_val\r\n        node.impurity_train = impurity_train\r\n        node.n_node_samples_train = n_node_samples_train\r\n        node.weighted_n_node_samples_train = weighted_n_node_samples_train\r\n\r\n        if parent != _TREE_UNDEFINED:\r\n            if is_left:\r\n                self.nodes[parent].left_child = node_id\r\n            else:\r\n                self.nodes[parent].right_child = node_id\r\n            node.depth = self.nodes[parent].depth + 1\r\n        else:\r\n            node.depth = 0\r\n\r\n        if is_leaf:\r\n            node.left_child = _TREE_LEAF\r\n            node.right_child = _TREE_LEAF\r\n            node.feature = _TREE_UNDEFINED\r\n            node.threshold = _TREE_UNDEFINED\r\n        else:\r\n            # left_child and right_child will be set later\r\n            node.feature = feature\r\n            node.threshold = threshold\r\n\r\n        self.node_count += 1\r\n\r\n        return node_id\r\n\r\n    cpdef np.ndarray predict(self, object X):\r\n        \"\"\"Predict target for X.\"\"\"\r\n        out = self._get_value_ndarray().take(self.apply(X), axis=0,\r\n                                             mode='clip')[:, :self.n_relevant_outputs, 0]\r\n        return out\r\n    \r\n    cpdef np.ndarray predict_full(self, object X):\r\n        \"\"\"Predict target for X.\"\"\"\r\n        out = self._get_value_ndarray().take(self.apply(X), axis=0,\r\n                                             mode='clip')[:, :, 0]\r\n        return out\r\n    \r\n    cpdef np.ndarray predict_jac(self, object X):\r\n        \"\"\"Predict target for X.\"\"\"\r\n        if not self.store_jac:\r\n            raise AttributeError(\"Jacobian computation was not enalbed. Set store_jac=True\")\r\n        out = self._get_jac_ndarray().take(self.apply(X), axis=0,\r\n                                           mode='clip')\r\n        return out\r\n    \r\n    cpdef np.ndarray predict_precond(self, object X):\r\n        \"\"\"Predict target for X.\"\"\"\r\n        if not self.store_jac:\r\n            raise AttributeError(\"Preconditioned quantity computation was not enalbed. Set store_jac=True\")\r\n        out = self._get_precond_ndarray().take(self.apply(X), axis=0,\r\n                                               mode='clip')\r\n        return out\r\n    \r\n    cpdef predict_precond_and_jac(self, object X):\r\n        if not self.store_jac:\r\n            raise AttributeError(\"Preconditioned quantity computation was not enalbed. Set store_jac=True\")\r\n        leafs = self.apply(X)\r\n        precond = self._get_precond_ndarray().take(leafs, axis=0,\r\n                                                   mode='clip')\r\n        jac = self._get_jac_ndarray().take(leafs, axis=0,\r\n                                           mode='clip')\r\n        return precond, jac\r\n\r\n    cpdef np.ndarray apply(self, object X):\r\n        return self._apply(X)\r\n\r\n    cdef inline np.ndarray _apply(self, object X):\r\n        # Check input\r\n        if not isinstance(X, np.ndarray):\r\n            raise ValueError(\"X should be in np.ndarray format, got %s\"\r\n                             % type(X))\r\n\r\n        if X.dtype != DTYPE:\r\n            raise ValueError(\"X.dtype should be np.float64, got %s\" % X.dtype)\r\n\r\n        # Extract input\r\n        cdef const DTYPE_t[:, :] X_ndarray = X\r\n        cdef SIZE_t n_samples = X.shape[0]\r\n\r\n        # Initialize output\r\n        cdef np.ndarray[SIZE_t] out = np.zeros((n_samples,), dtype=np.intp)\r\n        cdef SIZE_t* out_ptr = <SIZE_t*> out.data\r\n\r\n        # Initialize auxiliary data-structure\r\n        cdef Node* node = NULL\r\n        cdef SIZE_t i = 0\r\n\r\n        with nogil:\r\n            for i in range(n_samples):\r\n                node = self.nodes\r\n                # While node not a leaf\r\n                while node.left_child != _TREE_LEAF:\r\n                    # ... and node.right_child != _TREE_LEAF:\r\n                    if X_ndarray[i, node.feature] <= node.threshold:\r\n                        node = &self.nodes[node.left_child]\r\n                    else:\r\n                        node = &self.nodes[node.right_child]\r\n\r\n                out_ptr[i] = <SIZE_t>(node - self.nodes)  # node offset\r\n\r\n        return out\r\n    \r\n    cpdef object decision_path(self, object X):\r\n        \"\"\"Finds the decision path (=node) for each sample in X.\"\"\"\r\n        return self._decision_path(X)\r\n\r\n    cdef inline object _decision_path(self, object X):\r\n        \"\"\"Finds the decision path (=node) for each sample in X.\"\"\"\r\n\r\n        # Check input\r\n        if not isinstance(X, np.ndarray):\r\n            raise ValueError(\"X should be in np.ndarray format, got %s\"\r\n                             % type(X))\r\n\r\n        if X.dtype != DTYPE:\r\n            raise ValueError(\"X.dtype should be np.float64, got %s\" % X.dtype)\r\n\r\n        # Extract input\r\n        cdef const DTYPE_t[:, :] X_ndarray = X\r\n        cdef SIZE_t n_samples = X.shape[0]\r\n\r\n        # Initialize output\r\n        cdef np.ndarray[SIZE_t] indptr = np.zeros(n_samples + 1, dtype=np.intp)\r\n        cdef SIZE_t* indptr_ptr = <SIZE_t*> indptr.data\r\n\r\n        cdef np.ndarray[SIZE_t] indices = np.zeros(n_samples *\r\n                                                   (1 + self.max_depth),\r\n                                                   dtype=np.intp)\r\n        cdef SIZE_t* indices_ptr = <SIZE_t*> indices.data\r\n\r\n        # Initialize auxiliary data-structure\r\n        cdef Node* node = NULL\r\n        cdef SIZE_t i = 0\r\n\r\n        with nogil:\r\n            for i in range(n_samples):\r\n                node = self.nodes\r\n                indptr_ptr[i + 1] = indptr_ptr[i]\r\n\r\n                # Add all external nodes\r\n                while node.left_child != _TREE_LEAF:\r\n                    # ... and node.right_child != _TREE_LEAF:\r\n                    indices_ptr[indptr_ptr[i + 1]] = <SIZE_t>(node - self.nodes)\r\n                    indptr_ptr[i + 1] += 1\r\n\r\n                    if X_ndarray[i, node.feature] <= node.threshold:\r\n                        node = &self.nodes[node.left_child]\r\n                    else:\r\n                        node = &self.nodes[node.right_child]\r\n\r\n                # Add the leave node\r\n                indices_ptr[indptr_ptr[i + 1]] = <SIZE_t>(node - self.nodes)\r\n                indptr_ptr[i + 1] += 1\r\n\r\n        indices = indices[:indptr[n_samples]]\r\n        cdef np.ndarray[SIZE_t] data = np.ones(shape=len(indices),\r\n                                               dtype=np.intp)\r\n        out = csr_matrix((data, indices, indptr),\r\n                         shape=(n_samples, self.node_count))\r\n\r\n        return out\r\n\r\n    cpdef compute_feature_importances(self, normalize=True, max_depth=None, depth_decay=.0):\r\n        \"\"\"Computes the importance of each feature (aka variable) based on impurity decrease.\r\n        \r\n        Parameters\r\n        ----------\r\n        normalize : bool, default True\r\n            Whether to normalize importances to sum to 1\r\n        max_depth : int or None, optional\r\n            The max depth of a split to consider when calculating importance\r\n        depth_decay : float, default .0\r\n            The decay of the importance of a split as a function of depth. The split importance is\r\n            re-weighted by 1 / (1 + depth)**depth_decay.\r\n        \"\"\"\r\n        cdef Node* left\r\n        cdef Node* right\r\n        cdef Node* nodes = self.nodes\r\n        cdef Node* node = nodes\r\n        cdef Node* end_node = node + self.node_count\r\n        cdef double c_depth_decay = depth_decay\r\n        cdef SIZE_t c_max_depth\r\n\r\n        cdef double normalizer = 0.\r\n\r\n        cdef np.ndarray[np.float64_t, ndim=1] importances\r\n        importances = np.zeros((self.n_features,))\r\n        cdef DOUBLE_t* importance_data = <DOUBLE_t*>importances.data\r\n\r\n        if max_depth is None:\r\n            c_max_depth = self.max_depth\r\n        else:\r\n            c_max_depth = max_depth\r\n\r\n        with nogil:\r\n            while node != end_node:\r\n                if node.left_child != _TREE_LEAF:\r\n                    # ... and node.right_child != _TREE_LEAF:\r\n                    if (max_depth is None) or node.depth <= c_max_depth:\r\n                        left = &nodes[node.left_child]\r\n                        right = &nodes[node.right_child]\r\n\r\n                        importance_data[node.feature] += pow(1 + node.depth, -c_depth_decay) * (\r\n                            node.weighted_n_node_samples * node.impurity -\r\n                            left.weighted_n_node_samples * left.impurity -\r\n                            right.weighted_n_node_samples * right.impurity)\r\n\r\n                node += 1\r\n\r\n        importances /= nodes[0].weighted_n_node_samples\r\n\r\n        if normalize:\r\n            normalizer = np.sum(importances)\r\n\r\n            if normalizer > 0.0:\r\n                # Avoid dividing by zero (e.g., when root is pure)\r\n                importances /= normalizer\r\n\r\n        return importances\r\n    \r\n    cpdef compute_feature_heterogeneity_importances(self, normalize=True, max_depth=None, depth_decay=.0):\r\n        \"\"\"Computes the importance of each feature (aka variable) based on amount of\r\n        parameter heterogeneity it creates. Each split adds:\r\n        parent_weight * (left_weight * right_weight) * mean((value_left[k] - value_right[k])**2) / parent_weight**2\r\n        \r\n        Parameters\r\n        ----------\r\n        normalize : bool, default True\r\n            Whether to normalize importances to sum to 1\r\n        max_depth : int or None, optional\r\n            The max depth of a split to consider when calculating importance\r\n        depth_decay : float, default .0\r\n            The decay of the importance of a split as a function of depth. The split importance is\r\n            re-weighted by 1 / (1 + depth)**depth_decay.\r\n        \"\"\"\r\n        cdef Node* left\r\n        cdef Node* right\r\n        cdef Node* nodes = self.nodes\r\n        cdef Node* node = nodes\r\n        cdef Node* end_node = node + self.node_count\r\n        cdef double c_depth_decay = depth_decay\r\n        cdef SIZE_t c_max_depth\r\n        cdef SIZE_t i\r\n\r\n        cdef double normalizer = 0.\r\n\r\n        cdef np.ndarray[np.float64_t, ndim=1] importances\r\n        importances = np.zeros((self.n_features,))\r\n        cdef DOUBLE_t* importance_data = <DOUBLE_t*>importances.data\r\n\r\n        if max_depth is None:\r\n            c_max_depth = self.max_depth\r\n        else:\r\n            c_max_depth = max_depth\r\n\r\n        with nogil:\r\n            while node != end_node:\r\n                if node.left_child != _TREE_LEAF:\r\n                    if (max_depth is None) or node.depth <= c_max_depth:\r\n                        # ... and node.right_child != _TREE_LEAF:\r\n                        left = &nodes[node.left_child]\r\n                        right = &nodes[node.right_child]\r\n                        # node_value = &self.value[(node - nodes) * self.value_stride]\r\n                        left_value = &self.value[(left - nodes) * self.value_stride]\r\n                        right_value = &self.value[(right - nodes) * self.value_stride]\r\n                        for i in range(self.n_relevant_outputs):\r\n                            importance_data[node.feature] += pow(1 + node.depth, -c_depth_decay) * (\r\n                                left.weighted_n_node_samples * right.weighted_n_node_samples *\r\n                                (left_value[i] - right_value[i])**2 / node.weighted_n_node_samples)\r\n                node += 1\r\n\r\n        importances /= (nodes[0].weighted_n_node_samples * self.n_relevant_outputs)\r\n\r\n        if normalize:\r\n            normalizer = np.sum(importances)\r\n\r\n            if normalizer > 0.0:\r\n                # Avoid dividing by zero (e.g., when root is pure)\r\n                importances /= normalizer\r\n\r\n        return importances\r\n\r\n    cdef np.ndarray _get_value_ndarray(self):\r\n        \"\"\"Wraps value as a 3-d NumPy array.\r\n        The array keeps a reference to this Tree, which manages the underlying\r\n        memory.\r\n        \"\"\"\r\n        # we make it a 3d array even though we only need 2d, for compatibility with sklearn\r\n        # plotting of trees.\r\n        cdef np.npy_intp shape[3]\r\n        shape[0] = <np.npy_intp> self.node_count\r\n        shape[1] = <np.npy_intp> self.n_outputs\r\n        shape[2] = <np.npy_intp> self.max_n_classes\r\n        cdef np.ndarray arr\r\n        arr = np.PyArray_SimpleNewFromData(3, shape, np.NPY_DOUBLE, self.value)\r\n        Py_INCREF(self)\r\n        np.PyArray_SetBaseObject(arr, self)\r\n        return arr\r\n    \r\n    cdef np.ndarray _get_jac_ndarray(self):\r\n        \"\"\"Wraps jacobian as a 2-d NumPy array.\r\n        The array keeps a reference to this Tree, which manages the underlying\r\n        memory.\r\n        \"\"\"\r\n        cdef np.npy_intp shape[2]\r\n        shape[0] = <np.npy_intp> self.node_count\r\n        shape[1] = <np.npy_intp> (self.n_outputs * self.n_outputs)\r\n        cdef np.ndarray arr\r\n        arr = np.PyArray_SimpleNewFromData(2, shape, np.NPY_DOUBLE, self.jac)\r\n        Py_INCREF(self)\r\n        np.PyArray_SetBaseObject(arr, self)\r\n        return arr\r\n\r\n    cdef np.ndarray _get_precond_ndarray(self):\r\n        \"\"\"Wraps precond as a 2-d NumPy array.\r\n        The array keeps a reference to this Tree, which manages the underlying\r\n        memory.\r\n        \"\"\"\r\n        cdef np.npy_intp shape[2]\r\n        shape[0] = <np.npy_intp> self.node_count\r\n        shape[1] = <np.npy_intp> self.n_outputs\r\n        cdef np.ndarray arr\r\n        arr = np.PyArray_SimpleNewFromData(2, shape, np.NPY_DOUBLE, self.precond)\r\n        Py_INCREF(self)\r\n        np.PyArray_SetBaseObject(arr, self)\r\n        return arr\r\n\r\n    cdef np.ndarray _get_node_ndarray(self):\r\n        \"\"\"Wraps nodes as a NumPy struct array.\r\n        The array keeps a reference to this Tree, which manages the underlying\r\n        memory. Individual fields are publicly accessible as properties of the\r\n        Tree.\r\n        \"\"\"\r\n        cdef np.npy_intp shape[1]\r\n        shape[0] = <np.npy_intp> self.node_count\r\n        cdef np.npy_intp strides[1]\r\n        strides[0] = sizeof(Node)\r\n        cdef np.ndarray arr\r\n        Py_INCREF(NODE_DTYPE)\r\n        arr = PyArray_NewFromDescr(<PyTypeObject *> np.ndarray,\r\n                                   <np.dtype> NODE_DTYPE, 1, shape,\r\n                                   strides, <void*> self.nodes,\r\n                                   np.NPY_ARRAY_DEFAULT, None)\r\n        Py_INCREF(self)\r\n        np.PyArray_SetBaseObject(arr, self)\r\n        return arr\r\n"
  },
  {
    "path": "econml/tree/_tree_classes.py",
    "content": "import numbers\r\nfrom math import ceil\r\nimport numpy as np\r\nfrom sklearn.base import BaseEstimator\r\nfrom sklearn.utils.validation import check_is_fitted\r\nfrom ._tree import Tree, DepthFirstTreeBuilder\r\nfrom ._splitter import Splitter, BestSplitter\r\nfrom ._criterion import Criterion\r\nfrom . import _tree\r\nfrom ..utilities import deprecated\r\nfrom sklearn.utils import check_array\r\nfrom sklearn.utils import check_random_state\r\nfrom sklearn.utils.validation import _check_sample_weight\r\n\r\n\r\nDTYPE = _tree.DTYPE\r\nDOUBLE = _tree.DOUBLE\r\n\r\nSPLITTERS = {\"best\": BestSplitter, }\r\n\r\n\r\nclass BaseTree(BaseEstimator):\r\n\r\n    def __init__(self, *,\r\n                 criterion,\r\n                 splitter=\"best\",\r\n                 max_depth=None,\r\n                 min_samples_split=10,\r\n                 min_samples_leaf=5,\r\n                 min_weight_fraction_leaf=0.,\r\n                 min_var_leaf=None,\r\n                 min_var_leaf_on_val=False,\r\n                 max_features=None,\r\n                 random_state=None,\r\n                 min_impurity_decrease=0.,\r\n                 min_balancedness_tol=0.45,\r\n                 honest=True):\r\n        self.criterion = criterion\r\n        self.splitter = splitter\r\n        self.max_depth = max_depth\r\n        self.min_samples_split = min_samples_split\r\n        self.min_samples_leaf = min_samples_leaf\r\n        self.min_weight_fraction_leaf = min_weight_fraction_leaf\r\n        self.min_var_leaf = min_var_leaf\r\n        self.min_var_leaf_on_val = min_var_leaf_on_val\r\n        self.max_features = max_features\r\n        self.random_state = random_state\r\n        self.min_impurity_decrease = min_impurity_decrease\r\n        self.min_balancedness_tol = min_balancedness_tol\r\n        self.honest = honest\r\n\r\n    def _get_valid_criteria(self):\r\n        pass\r\n\r\n    def _get_valid_min_var_leaf_criteria(self):\r\n        return ()\r\n\r\n    def _get_store_jac(self):\r\n        pass\r\n\r\n    def get_depth(self):\r\n        \"\"\"\r\n        Return the depth of the decision tree.\r\n\r\n        The depth of a tree is the maximum distance between the root\r\n        and any leaf.\r\n\r\n        Returns\r\n        -------\r\n        self.tree_.max_depth : int\r\n            The maximum depth of the tree.\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        return self.tree_.max_depth\r\n\r\n    def get_n_leaves(self):\r\n        \"\"\"Return the number of leaves of the decision tree.\r\n\r\n        Returns\r\n        -------\r\n        self.tree_.n_leaves : int\r\n            Number of leaves.\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        return self.tree_.n_leaves\r\n\r\n    def fit(self, X, y, n_y, n_outputs, n_relevant_outputs, sample_weight=None, check_input=True):\r\n        \"\"\"\r\n        Fit the tree to data.\r\n\r\n        Child class needs to have initialized the property `random_state_` before\r\n        calling this super `fit`.\r\n        \"\"\"\r\n        random_state = self.random_state_\r\n\r\n        # Determine output settings\r\n        n_samples, self.n_features_in_ = X.shape\r\n        self.n_outputs_ = n_outputs\r\n        self.n_relevant_outputs_ = n_relevant_outputs\r\n        self.n_y_ = n_y\r\n        self.n_samples_ = n_samples\r\n        self.honest_ = self.honest\r\n\r\n        # Important: This must be the first invocation of the random state at fit time, so that\r\n        # train/test splits are re-generatable from an external object simply by knowing the\r\n        # random_state parameter of the tree. Can be useful in the future if one wants to create local\r\n        # linear predictions. Currently is also useful for testing.\r\n        inds = np.arange(n_samples, dtype=np.intp)\r\n        if self.honest:\r\n            random_state.shuffle(inds)\r\n            samples_train, samples_val = inds[:n_samples // 2], inds[n_samples // 2:]\r\n        else:\r\n            samples_train, samples_val = inds, inds\r\n\r\n        if check_input:\r\n            if getattr(y, \"dtype\", None) != DOUBLE or not y.flags.contiguous:\r\n                y = np.ascontiguousarray(y, dtype=DOUBLE)\r\n            y = np.atleast_1d(y)\r\n            if y.ndim == 1:\r\n                # reshape is necessary to preserve the data contiguity against vs\r\n                # [:, np.newaxis] that does not.\r\n                y = np.reshape(y, (-1, 1))\r\n            if len(y) != n_samples:\r\n                raise ValueError(\"Number of labels=%d does not match \"\r\n                                 \"number of samples=%d\" % (len(y), n_samples))\r\n\r\n            if (sample_weight is not None):\r\n                sample_weight = _check_sample_weight(sample_weight, X, dtype=DOUBLE)\r\n\r\n        # Check parameters\r\n        max_depth = (np.iinfo(np.int32).max if self.max_depth is None\r\n                     else self.max_depth)\r\n\r\n        if isinstance(self.min_samples_leaf, numbers.Integral):\r\n            if not 1 <= self.min_samples_leaf:\r\n                raise ValueError(\"min_samples_leaf must be at least 1 \"\r\n                                 \"or in (0, 0.5], got %s\"\r\n                                 % self.min_samples_leaf)\r\n            min_samples_leaf = self.min_samples_leaf\r\n        else:  # float\r\n            if not 0. < self.min_samples_leaf <= 0.5:\r\n                raise ValueError(\"min_samples_leaf must be at least 1 \"\r\n                                 \"or in (0, 0.5], got %s\"\r\n                                 % self.min_samples_leaf)\r\n            min_samples_leaf = int(ceil(self.min_samples_leaf * n_samples))\r\n\r\n        if isinstance(self.min_samples_split, numbers.Integral):\r\n            if not 2 <= self.min_samples_split:\r\n                raise ValueError(\"min_samples_split must be an integer \"\r\n                                 \"greater than 1 or a float in (0.0, 1.0]; \"\r\n                                 \"got the integer %s\"\r\n                                 % self.min_samples_split)\r\n            min_samples_split = self.min_samples_split\r\n        else:  # float\r\n            if not 0. < self.min_samples_split <= 1.:\r\n                raise ValueError(\"min_samples_split must be an integer \"\r\n                                 \"greater than 1 or a float in (0.0, 1.0]; \"\r\n                                 \"got the float %s\"\r\n                                 % self.min_samples_split)\r\n            min_samples_split = int(ceil(self.min_samples_split * n_samples))\r\n            min_samples_split = max(2, min_samples_split)\r\n\r\n        min_samples_split = max(min_samples_split, 2 * min_samples_leaf)\r\n\r\n        if isinstance(self.max_features, str):\r\n            if self.max_features == \"auto\":\r\n                max_features = self.n_features_in_\r\n            elif self.max_features == \"sqrt\":\r\n                max_features = max(1, int(np.sqrt(self.n_features_in_)))\r\n            elif self.max_features == \"log2\":\r\n                max_features = max(1, int(np.log2(self.n_features_in_)))\r\n            else:\r\n                raise ValueError(\"Invalid value for max_features. \"\r\n                                 \"Allowed string values are 'auto', \"\r\n                                 \"'sqrt' or 'log2'.\")\r\n        elif self.max_features is None:\r\n            max_features = self.n_features_in_\r\n        elif isinstance(self.max_features, numbers.Integral):\r\n            max_features = self.max_features\r\n        else:  # float\r\n            if self.max_features > 0.0:\r\n                max_features = max(1,\r\n                                   int(self.max_features * self.n_features_in_))\r\n            else:\r\n                max_features = 0\r\n\r\n        self.max_features_ = max_features\r\n\r\n        if not 0 <= self.min_weight_fraction_leaf <= 0.5:\r\n            raise ValueError(\"min_weight_fraction_leaf must in [0, 0.5]\")\r\n        if max_depth < 0:\r\n            raise ValueError(\"max_depth must be greater than or equal to zero. \")\r\n        if not (0 <= max_features <= self.n_features_in_):\r\n            raise ValueError(\"max_features must be in [0, n_features]\")\r\n        if not 0 <= self.min_balancedness_tol <= 0.5:\r\n            raise ValueError(\"min_balancedness_tol must be in [0, 0.5]\")\r\n\r\n        if self.min_var_leaf is None:\r\n            min_var_leaf = -1.0\r\n        elif isinstance(self.min_var_leaf, numbers.Real) and (self.min_var_leaf >= 0.0):\r\n            min_var_leaf = self.min_var_leaf\r\n        else:\r\n            raise ValueError(\"min_var_leaf must be either None or a real in [0, infinity). \"\r\n                             \"Got {}\".format(self.min_var_leaf))\r\n        if not isinstance(self.min_var_leaf_on_val, bool):\r\n            raise ValueError(\"min_var_leaf_on_val must be either True or False. \"\r\n                             \"Got {}\".format(self.min_var_leaf_on_val))\r\n\r\n        # Set min_weight_leaf from min_weight_fraction_leaf\r\n        if sample_weight is None:\r\n            min_weight_leaf = (self.min_weight_fraction_leaf *\r\n                               n_samples)\r\n        else:\r\n            min_weight_leaf = (self.min_weight_fraction_leaf *\r\n                               np.sum(sample_weight))\r\n\r\n        # Build tree\r\n\r\n        # We calculate the maximum number of samples from each half-split that any node in the tree can\r\n        # hold. Used by criterion for memory space savings.\r\n        max_train = len(samples_train) if sample_weight is None else np.count_nonzero(sample_weight[samples_train])\r\n        if self.honest:\r\n            max_val = len(samples_val) if sample_weight is None else np.count_nonzero(sample_weight[samples_val])\r\n        # Initialize the criterion object and the criterion_val object if honest.\r\n        if callable(self.criterion):\r\n            criterion = self.criterion(self.n_outputs_, self.n_relevant_outputs_, self.n_features_in_, self.n_y_,\r\n                                       n_samples, max_train,\r\n                                       random_state.randint(np.iinfo(np.int32).max))\r\n            if not isinstance(criterion, Criterion):\r\n                raise ValueError(\"Input criterion is not a valid criterion\")\r\n            if self.honest:\r\n                criterion_val = self.criterion(self.n_outputs_, self.n_relevant_outputs_, self.n_features_in_,\r\n                                               self.n_y_, n_samples, max_val,\r\n                                               random_state.randint(np.iinfo(np.int32).max))\r\n            else:\r\n                criterion_val = criterion\r\n        else:\r\n            valid_criteria = self._get_valid_criteria()\r\n            if self.criterion not in valid_criteria:\r\n                raise ValueError(\"Input criterion is not a valid criterion\")\r\n            criterion = valid_criteria[self.criterion](\r\n                self.n_outputs_, self.n_relevant_outputs_, self.n_features_in_, self.n_y_, n_samples, max_train,\r\n                random_state.randint(np.iinfo(np.int32).max))\r\n            if self.honest:\r\n                criterion_val = valid_criteria[self.criterion](\r\n                    self.n_outputs_, self.n_relevant_outputs_, self.n_features_in_, self.n_y_, n_samples, max_val,\r\n                    random_state.randint(np.iinfo(np.int32).max))\r\n            else:\r\n                criterion_val = criterion\r\n\r\n        if (min_var_leaf >= 0.0 and (not isinstance(criterion, self._get_valid_min_var_leaf_criteria())) and\r\n                (not isinstance(criterion_val, self._get_valid_min_var_leaf_criteria()))):\r\n            raise ValueError(\"This criterion does not support min_var_leaf constraint!\")\r\n\r\n        splitter = self.splitter\r\n        if not isinstance(self.splitter, Splitter):\r\n            splitter = SPLITTERS[self.splitter](criterion, criterion_val,\r\n                                                self.max_features_,\r\n                                                min_samples_leaf,\r\n                                                min_weight_leaf,\r\n                                                self.min_balancedness_tol,\r\n                                                self.honest,\r\n                                                min_var_leaf,\r\n                                                self.min_var_leaf_on_val,\r\n                                                random_state.randint(np.iinfo(np.int32).max))\r\n\r\n        self.tree_ = Tree(self.n_features_in_, self.n_outputs_,\r\n                          self.n_relevant_outputs_, store_jac=self._get_store_jac())\r\n\r\n        builder = DepthFirstTreeBuilder(splitter, min_samples_split,\r\n                                        min_samples_leaf,\r\n                                        min_weight_leaf,\r\n                                        max_depth,\r\n                                        self.min_impurity_decrease)\r\n        builder.build(self.tree_, X, y, samples_train, samples_val,\r\n                      sample_weight=sample_weight,\r\n                      store_jac=self._get_store_jac())\r\n\r\n        return self\r\n\r\n    def _validate_X_predict(self, X, check_input):\r\n        \"\"\"Validate X whenever one tries to predict, apply, or any other of the prediction related methods.\"\"\"\r\n        if check_input:\r\n            X = check_array(X, dtype=DTYPE, accept_sparse=False, ensure_min_features=0)\r\n\r\n        n_features = X.shape[1]\r\n        if self.n_features_in_ != n_features:\r\n            raise ValueError(\"Number of features of the model must \"\r\n                             \"match the input. Model n_features is %s and \"\r\n                             \"input n_features is %s \"\r\n                             % (self.n_features_in_, n_features))\r\n\r\n        return X\r\n\r\n    def get_train_test_split_inds(self,):\r\n        \"\"\"\r\n        Regenerate the train_test_split of input sample indices.\r\n\r\n        Produces the split that was used for the training and the evaluation split of the honest tree construction\r\n        structure.\r\n\r\n        Uses the same random seed that was used at ``fit`` time and re-generates the indices.\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        random_state = check_random_state(self.random_seed_)\r\n        inds = np.arange(self.n_samples_, dtype=np.intp)\r\n        if self.honest_:\r\n            random_state.shuffle(inds)\r\n            return inds[:self.n_samples_ // 2], inds[self.n_samples_ // 2:]\r\n        else:\r\n            return inds, inds\r\n\r\n    def apply(self, X, check_input=True):\r\n        \"\"\"Return the index of the leaf that each sample is predicted as.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        X_leaves : array_like of shape (n_samples,)\r\n            For each datapoint x in X, return the index of the leaf x\r\n            ends up in. Leaves are numbered within\r\n            ``[0; self.tree_.node_count)``, possibly with gaps in the\r\n            numbering.\r\n        \"\"\"\r\n        check_is_fitted(self)\r\n        X = self._validate_X_predict(X, check_input)\r\n        return self.tree_.apply(X)\r\n\r\n    def decision_path(self, X, check_input=True):\r\n        \"\"\"Return the decision path in the tree.\r\n\r\n        Parameters\r\n        ----------\r\n        X : {array_like} of shape (n_samples, n_features)\r\n            The input samples. Internally, it will be converted to\r\n            ``dtype=np.float64``\r\n        check_input : bool, default True\r\n            Allow to bypass several input checking.\r\n            Don't use this parameter unless you know what you do.\r\n\r\n        Returns\r\n        -------\r\n        indicator : sparse matrix of shape (n_samples, n_nodes)\r\n            Return a node indicator CSR matrix where non zero elements\r\n            indicates that the samples goes through the nodes.\r\n        \"\"\"\r\n        X = self._validate_X_predict(X, check_input)\r\n        return self.tree_.decision_path(X)\r\n\r\n    @property\r\n    @deprecated(message=(\"This attribute is deprecated and will be removed in a future version; \"\r\n                         \"please use the 'n_features_in_' attribute instead.\"))\r\n    def n_features_(self):\r\n        return self.n_features_in_\r\n"
  },
  {
    "path": "econml/tree/_utils.pxd",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_utils.pxd\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nfrom ._tree cimport Node\r\n\r\nctypedef np.npy_float64 DTYPE_t          # Type of X\r\nctypedef np.npy_float64 DOUBLE_t         # Type of y, sample_weight\r\nctypedef np.npy_intp SIZE_t              # Type for indices and counters\r\nctypedef np.npy_int32 INT32_t            # Signed 32 bit integer\r\nctypedef np.npy_uint32 UINT32_t          # Unsigned 32 bit integer\r\n\r\n\r\ncdef enum:\r\n    # Max value for our rand_r replacement (near the bottom).\r\n    # We don't use RAND_MAX because it's different across platforms and\r\n    # particularly tiny on Windows/MSVC.\r\n    RAND_R_MAX = 0x7FFFFFFF\r\n\r\n\r\n# safe_realloc(&p, n) resizes the allocation of p to n * sizeof(*p) bytes or\r\n# raises a MemoryError. It never calls free, since that's __dealloc__'s job.\r\n#   cdef DTYPE_t *p = NULL\r\n#   safe_realloc(&p, n)\r\n# is equivalent to p = malloc(n * sizeof(*p)) with error checking.\r\nctypedef fused realloc_ptr:\r\n    # Add pointer types here as needed.\r\n    # (DTYPE_t*)\r\n    (SIZE_t*)\r\n    (unsigned char*)\r\n    (DOUBLE_t*)\r\n    (DOUBLE_t**)\r\n    (Node*)\r\n    (StackRecord*)\r\n\r\ncdef realloc_ptr safe_realloc(realloc_ptr* p, SIZE_t nelems) except * nogil\r\n\r\ncdef np.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size)\r\n\r\ncdef SIZE_t rand_int(SIZE_t low, SIZE_t high,\r\n                     UINT32_t* random_state) noexcept nogil\r\n\r\n\r\ncdef double rand_uniform(double low, double high,\r\n                         UINT32_t* random_state) noexcept nogil\r\n\r\n\r\ncdef double log(double x) noexcept nogil\r\n\r\n# =============================================================================\r\n# Stack data structure\r\n# =============================================================================\r\n\r\n# A record on the stack for depth-first tree growing\r\ncdef struct StackRecord:\r\n    SIZE_t start\r\n    SIZE_t end\r\n    SIZE_t start_val\r\n    SIZE_t end_val\r\n    SIZE_t depth\r\n    SIZE_t parent\r\n    bint is_left\r\n    double impurity\r\n    double impurity_val\r\n    SIZE_t n_constant_features\r\n\r\ncdef class Stack:\r\n    cdef SIZE_t capacity\r\n    cdef SIZE_t top\r\n    cdef StackRecord* stack_\r\n\r\n    cdef bint is_empty(self) noexcept nogil\r\n    cdef int push(self, SIZE_t start, SIZE_t end, SIZE_t start_val, SIZE_t end_val,\r\n                  SIZE_t depth, SIZE_t parent,\r\n                  bint is_left, double impurity, double impurity_val,\r\n                  SIZE_t n_constant_features) except -1 nogil\r\n    cdef int pop(self, StackRecord* res) noexcept nogil\r\n"
  },
  {
    "path": "econml/tree/_utils.pyx",
    "content": "# cython: cdivision=True\r\n# cython: boundscheck=False\r\n# cython: wraparound=False\r\n\r\n# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n#\r\n# This code is a fork from: https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/tree/_utils.pyx\r\n# published under the following license and copyright:\r\n# BSD 3-Clause License\r\n#\r\n# Copyright (c) 2007-2020 The scikit-learn developers.\r\n# All rights reserved.\r\n\r\nfrom libc.stdlib cimport free\r\nfrom libc.stdlib cimport malloc\r\nfrom libc.stdlib cimport realloc\r\nfrom libc.math cimport log as ln\r\n\r\nimport numpy as np\r\ncimport numpy as np\r\nnp.import_array()\r\n\r\n\r\ncdef inline UINT32_t DEFAULT_SEED = 1\r\ncdef inline double LN_TWO = ln(2.0)\r\n\r\n# =============================================================================\r\n# Helper functions\r\n# =============================================================================\r\n\r\n# rand_r replacement using a 32bit XorShift generator\r\n# See http://www.jstatsoft.org/v08/i14/paper for details\r\ncdef inline UINT32_t our_rand_r(UINT32_t* seed) noexcept nogil:\r\n    \"\"\"Generate a pseudo-random np.uint32 from a np.uint32 seed\"\"\"\r\n    # seed shouldn't ever be 0.\r\n    if (seed[0] == 0): seed[0] = DEFAULT_SEED\r\n\r\n    seed[0] ^= <UINT32_t>(seed[0] << 13)\r\n    seed[0] ^= <UINT32_t>(seed[0] >> 17)\r\n    seed[0] ^= <UINT32_t>(seed[0] << 5)\r\n\r\n    # Note: we must be careful with the final line cast to np.uint32 so that\r\n    # the function behaves consistently across platforms.\r\n    #\r\n    # The following cast might yield different results on different platforms:\r\n    # wrong_cast = <UINT32_t> RAND_R_MAX + 1\r\n    #\r\n    # We can use:\r\n    # good_cast = <UINT32_t>(RAND_R_MAX + 1)\r\n    # or:\r\n    # cdef np.uint32_t another_good_cast = <UINT32_t>RAND_R_MAX + 1\r\n    return seed[0] % <UINT32_t>(RAND_R_MAX + 1)\r\n\r\n\r\ncdef realloc_ptr safe_realloc(realloc_ptr* p, SIZE_t nelems) except * nogil:\r\n    # sizeof(realloc_ptr[0]) would be more like idiomatic C, but causes Cython\r\n    # 0.20.1 to crash.\r\n    cdef SIZE_t nbytes = nelems * sizeof(p[0][0])\r\n    if nbytes / sizeof(p[0][0]) != nelems:\r\n        # Overflow in the multiplication\r\n        with gil:\r\n            raise MemoryError(\"could not allocate (%d * %d) bytes\"\r\n                              % (nelems, sizeof(p[0][0])))\r\n    cdef realloc_ptr tmp = <realloc_ptr>realloc(p[0], nbytes)\r\n    if tmp == NULL:\r\n        with gil:\r\n            raise MemoryError(\"could not allocate %d bytes\" % nbytes)\r\n\r\n    p[0] = tmp\r\n    return tmp  # for convenience\r\n\r\n\r\ncdef inline np.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size):\r\n    \"\"\"Return copied data as 1D numpy array of intp's.\"\"\"\r\n    cdef np.npy_intp shape[1]\r\n    shape[0] = <np.npy_intp> size\r\n    return np.PyArray_SimpleNewFromData(1, shape, np.NPY_INTP, data).copy()\r\n\r\n\r\ncdef inline SIZE_t rand_int(SIZE_t low, SIZE_t high,\r\n                            UINT32_t* random_state) noexcept nogil:\r\n    \"\"\"Generate a random integer in [low; end).\"\"\"\r\n    return low + our_rand_r(random_state) % (high - low)\r\n\r\n\r\ncdef inline double rand_uniform(double low, double high,\r\n                                UINT32_t* random_state) noexcept nogil:\r\n    \"\"\"Generate a random double in [low; high).\"\"\"\r\n    return ((high - low) * <double> our_rand_r(random_state) /\r\n            <double> RAND_R_MAX) + low\r\n\r\n\r\ncdef inline double log(double x) noexcept nogil:\r\n    return ln(x) / LN_TWO\r\n\r\n\r\n# =============================================================================\r\n# Stack data structure\r\n# =============================================================================\r\n\r\ncdef class Stack:\r\n    \"\"\"A LIFO data structure.\r\n    Attributes\r\n    ----------\r\n    capacity : SIZE_t\r\n        The elements the stack can hold; if more added then ``self.stack_``\r\n        needs to be resized.\r\n    top : SIZE_t\r\n        The number of elements currently on the stack.\r\n    stack : StackRecord pointer\r\n        The stack of records (upward in the stack corresponds to the right).\r\n    \"\"\"\r\n\r\n    def __cinit__(self, SIZE_t capacity):\r\n        self.capacity = capacity\r\n        self.top = 0\r\n        self.stack_ = <StackRecord*> malloc(capacity * sizeof(StackRecord))\r\n\r\n    def __dealloc__(self):\r\n        free(self.stack_)\r\n\r\n    cdef bint is_empty(self) noexcept nogil:\r\n        return self.top <= 0\r\n\r\n    cdef int push(self, SIZE_t start, SIZE_t end, SIZE_t start_val, SIZE_t end_val,\r\n                  SIZE_t depth, SIZE_t parent,\r\n                  bint is_left, double impurity, double impurity_val,\r\n                  SIZE_t n_constant_features) except -1 nogil:\r\n        \"\"\"Push a new element onto the stack.\r\n        Return -1 in case of failure to allocate memory (and raise MemoryError)\r\n        or 0 otherwise.\r\n        \"\"\"\r\n        cdef SIZE_t top = self.top\r\n        cdef StackRecord* stack = NULL\r\n\r\n        # Resize if capacity not sufficient\r\n        if top >= self.capacity:\r\n            self.capacity *= 2\r\n            # Since safe_realloc can raise MemoryError, use `except -1`\r\n            safe_realloc(&self.stack_, self.capacity)\r\n\r\n        stack = self.stack_\r\n        stack[top].start = start\r\n        stack[top].end = end\r\n        stack[top].start_val = start_val\r\n        stack[top].end_val = end_val\r\n        stack[top].depth = depth\r\n        stack[top].parent = parent\r\n        stack[top].is_left = is_left\r\n        stack[top].impurity = impurity\r\n        stack[top].impurity_val = impurity_val\r\n        stack[top].n_constant_features = n_constant_features\r\n\r\n        # Increment stack pointer\r\n        self.top = top + 1\r\n        return 0\r\n\r\n    cdef int pop(self, StackRecord* res) noexcept nogil:\r\n        \"\"\"Remove the top element from the stack and copy to ``res``.\r\n        Returns 0 if pop was successful (and ``res`` is set); -1\r\n        otherwise.\r\n        \"\"\"\r\n        cdef SIZE_t top = self.top\r\n        cdef StackRecord* stack = self.stack_\r\n\r\n        if top <= 0:\r\n            return -1\r\n\r\n        res[0] = stack[top - 1]\r\n        self.top = top - 1\r\n\r\n        return 0"
  },
  {
    "path": "econml/utilities.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"Utility methods.\"\"\"\n\nfrom typing import Union\nimport numpy as np\nimport pandas as pd\nimport scipy.sparse\nimport sklearn\nimport sparse as sp\nimport inspect\nfrom collections import defaultdict, Counter\nfrom sklearn import clone\nfrom sklearn.base import TransformerMixin\nfrom functools import reduce, wraps\nfrom sklearn.utils import check_array, check_X_y\nfrom sklearn.utils.validation import assert_all_finite\nfrom sklearn.preprocessing import OneHotEncoder, PolynomialFeatures, LabelEncoder\nimport warnings\nfrom warnings import warn\nfrom statsmodels.iolib.table import SimpleTable\nfrom statsmodels.iolib.summary import summary_return\nfrom inspect import signature\nfrom packaging.version import parse\n\n\nMAX_RAND_SEED = np.iinfo(np.int32).max\n\n\nclass IdentityFeatures(TransformerMixin):\n    \"\"\"Featurizer that just returns the input data.\"\"\"\n\n    def fit(self, X):\n        \"\"\"Fit method (does nothing, just returns self).\"\"\"\n        return self\n\n    def transform(self, X):\n        \"\"\"Perform the identity transform, which returns the input unmodified.\"\"\"\n        return X\n\n\ndef parse_final_model_params(coef, intercept, d_y, d_t, d_t_in, bias_part_of_coef, fit_cate_intercept):\n    dt = d_t\n    if (d_t_in != d_t) and (d_t and d_t[0] == 1):  # binary treatment or single dim featurized treatment\n        dt = ()\n    cate_intercept = None\n    if bias_part_of_coef:\n        cate_coef = coef.reshape(d_y + dt + (-1,))[..., 1:]\n        if fit_cate_intercept:\n            cate_intercept = coef.reshape(d_y + dt + (-1,))[..., 0]\n    else:\n        cate_coef = coef.reshape(d_y + dt + (-1,))\n        if fit_cate_intercept:\n            cate_intercept = np.reshape(intercept, d_y + dt)\n    if (cate_intercept is not None) and (np.ndim(cate_intercept) == 0):\n        cate_intercept = cate_intercept.item()\n    return cate_coef, cate_intercept\n\n\ndef check_high_dimensional(X, T, *, threshold, featurizer=None, discrete_treatment=False, msg=\"\"):\n    # Check if model is sparse enough for this model\n    X, T = check_input_arrays(X, T)\n    if X is None:\n        d_x = 1\n    elif featurizer is None:\n        d_x = X.shape[1]\n    else:\n        d_x = clone(featurizer, safe=False).fit_transform(X).shape[1]\n    if discrete_treatment:\n        d_t = len(set(T.flatten())) - 1\n    else:\n        d_t = 1 if np.ndim(T) < 2 else T.shape[1]\n    if d_x * d_t < threshold:\n        warn(msg, UserWarning)\n\n\ndef inverse_onehot(T):\n    \"\"\"\n    Given a one-hot encoding of a value, return a vector reversing the encoding to get numeric treatment indices.\n\n    Note that we assume that the first column has been removed from the input.\n\n    Parameters\n    ----------\n    T : array (shape (n, d_t-1))\n        The one-hot-encoded array\n\n    Returns\n    -------\n    A : vector of int (shape (n,))\n        The un-encoded 0-based category indices\n    \"\"\"\n    assert ndim(T) == 2\n    # note that by default OneHotEncoder returns float64s, so need to convert to int\n    return (T @ np.arange(1, T.shape[1] + 1)).astype(int)\n\n\ndef issparse(X):\n    \"\"\"Determine whether an input is sparse.\n\n    For the purposes of this function, both `scipy.sparse` matrices and `sparse.SparseArray`\n    types are considered sparse.\n\n    Parameters\n    ----------\n    X : array_like\n        The input to check\n\n    Returns\n    -------\n    bool\n        Whether the input is sparse\n\n    \"\"\"\n    return scipy.sparse.issparse(X) or isinstance(X, sp.SparseArray)\n\n\ndef iscoo(X):\n    \"\"\"Determine whether an input is a `sparse.COO` array.\n\n    Parameters\n    ----------\n    X : array_like\n        The input to check\n\n    Returns\n    -------\n    bool\n        Whether the input is a `COO` array\n\n    \"\"\"\n    return isinstance(X, sp.COO)\n\n\ndef tocoo(X):\n    \"\"\"\n    Convert an array to a sparse COO array.\n\n    If the input is already an `sparse.COO` object, this returns the object directly; otherwise it is converted.\n    \"\"\"\n    if isinstance(X, sp.COO):\n        return X\n    elif isinstance(X, sp.DOK):\n        return sp.COO(X)\n    elif scipy.sparse.issparse(X):\n        return sp.COO.from_scipy_sparse(X)\n    else:\n        return sp.COO.from_numpy(X)\n\n\ndef todense(X):\n    \"\"\"\n    Convert an array to a dense numpy array.\n\n    If the input is already a numpy array, this may create a new copy.\n    \"\"\"\n    if scipy.sparse.issparse(X):\n        return X.toarray()\n    elif isinstance(X, sp.SparseArray):\n        return X.todense()\n    else:\n        # TODO: any way to avoid creating a copy if the array was already dense?\n        #       the call is necessary if the input was something like a list, though\n        return np.array(X)\n\n\ndef size(X):\n    \"\"\"Return the number of elements in the array.\n\n    Parameters\n    ----------\n    a : array_like\n        Input data\n\n    Returns\n    -------\n    int\n        The number of elements of the array\n    \"\"\"\n    return X.size if issparse(X) else np.size(X)\n\n\ndef shape(X):\n    \"\"\"Return a tuple of array dimensions.\"\"\"\n    return X.shape if issparse(X) else np.shape(X)\n\n\ndef ndim(X):\n    \"\"\"Return the number of array dimensions.\"\"\"\n    return X.ndim if issparse(X) else np.ndim(X)\n\n\ndef reshape(X, shape):\n    \"\"\"Return a new array that is a reshaped version of an input array.\n\n    The output will be sparse iff the input is.\n\n    Parameters\n    ----------\n    X : array_like\n        The array to reshape\n\n    shape : tuple of int\n        The desired shape of the output array\n\n    Returns\n    -------\n    ndarray or SparseArray\n        The reshaped output array\n    \"\"\"\n    if scipy.sparse.issparse(X):\n        # scipy sparse arrays don't support reshaping (even for 2D they throw not implemented errors),\n        # so convert to pydata sparse first\n        X = sp.COO.from_scipy_sparse(X)\n        if len(shape) == 2:\n            # in the 2D case, we can convert back to scipy sparse; in other cases we can't\n            return X.reshape(shape).to_scipy_sparse()\n    return X.reshape(shape)\n\n\ndef _apply(op, *XS):\n    \"\"\"\n    Apply a function to a sequence of sparse or dense array arguments.\n\n    If any array is sparse then all arrays are converted to COO before the function is applied;\n    if all of the arrays are scipy sparse arrays, and if the result is 2D,\n    the returned value will be a scipy sparse array as well\n    \"\"\"\n    all_scipy_sparse = all(scipy.sparse.issparse(X) for X in XS)\n    if any(issparse(X) for X in XS):\n        XS = tuple(tocoo(X) for X in XS)\n    result = op(*XS)\n    if all_scipy_sparse and len(shape(result)) == 2:\n        # both inputs were scipy and we can safely convert back to scipy because it's 2D\n        return result.to_scipy_sparse()\n    return result\n\n\ndef tensordot(X1, X2, axes):\n    \"\"\"\n    Compute tensor dot product along specified axes for arrays >= 1-D.\n\n    Parameters\n    ----------\n    X1, X2 : array_like, len(shape) >= 1\n        Tensors to \"dot\"\n\n    axes : int or (2,) array_like\n        integer_like\n            If an int N, sum over the last N axes of `X1` and the first N axes\n            of `X2` in order. The sizes of the corresponding axes must match\n        (2,) array_like\n            Or, a list of axes to be summed over, first sequence applying to `X1`,\n            second to `X2`. Both elements array_like must be of the same length.\n    \"\"\"\n    def td(X1, X2):\n        return sp.tensordot(X1, X2, axes) if iscoo(X1) else np.tensordot(X1, X2, axes)\n    return _apply(td, X1, X2)\n\n\ndef cross_product(*XS):\n    \"\"\"\n    Compute the cross product of features.\n\n    Parameters\n    ----------\n    X1 : n x d1 matrix\n        First matrix of n samples of d1 features\n        (or an n-element vector, which will be treated as an n x 1 matrix)\n    X2 : n x d2 matrix\n        Second matrix of n samples of d2 features\n        (or an n-element vector, which will be treated as an n x 1 matrix)\n\n    Returns\n    -------\n    A : n x (d1*d2*...) matrix\n        Matrix of n samples of d1*d2*... cross product features,\n        arranged in form such that each row t of X12 contains:\n        [X1[t,0]*X2[t,0]*..., ..., X1[t,d1-1]*X2[t,0]*..., X1[t,0]*X2[t,1]*..., ..., X1[t,d1-1]*X2[t,1]*..., ...]\n\n    \"\"\"\n    for X in XS:\n        assert 2 >= ndim(X) >= 1\n    n = shape(XS[0])[0]\n    for X in XS:\n        assert n == shape(X)[0]\n\n    def cross(XS):\n        k = len(XS)\n        XS = [reshape(XS[i], (n,) + (1,) * (k - i - 1) + (-1,) + (1,) * i) for i in range(k)]\n        return reshape(reduce(np.multiply, XS), (n, -1))\n    return _apply(cross, XS)\n\n\ndef stack(XS, axis=0):\n    \"\"\"\n    Join a sequence of arrays along a new axis.\n\n    The axis parameter specifies the index of the new axis in the dimensions of the result.\n    For example, if axis=0 it will be the first dimension and if axis=-1 it will be the last dimension.\n\n    Parameters\n    ----------\n    arrays : sequence of array_like\n        Each array must have the same shape\n\n    axis : int, optional\n        The axis in the result array along which the input arrays are stacked\n\n    Returns\n    -------\n    ndarray or SparseArray\n        The stacked array, which has one more dimension than the input arrays.\n        It will be sparse if the inputs are.\n    \"\"\"\n    def st(*XS):\n        return sp.stack(XS, axis=axis) if iscoo(XS[0]) else np.stack(XS, axis=axis)\n    return _apply(st, *XS)\n\n\ndef concatenate(XS, axis=0):\n    \"\"\"\n    Join a sequence of arrays along an existing axis.\n\n    Parameters\n    ----------\n    X1, X2, ... : sequence of array_like\n        The arrays must have the same shape, except in the dimension\n        corresponding to `axis` (the first, by default).\n\n    axis : int, optional\n        The axis along which the arrays will be joined.  Default is 0.\n\n    Returns\n    -------\n    ndarray or SparseArray\n        The concatenated array. It will be sparse if the inputs are.\n    \"\"\"\n    def conc(*XS):\n        return sp.concatenate(XS, axis=axis) if iscoo(XS[0]) else np.concatenate(XS, axis=axis)\n    return _apply(conc, *XS)\n\n\n# note: in contrast to np.hstack this only works with arrays of dimension at least 2\ndef hstack(XS):\n    \"\"\"\n    Stack arrays in sequence horizontally (column wise).\n\n    This is equivalent to concatenation along the second axis\n\n\n    Parameters\n    ----------\n    XS : sequence of ndarray\n        The arrays must have the same shape along all but the second axis.\n\n    Returns\n    -------\n    ndarray or SparseArray\n        The array formed by stacking the given arrays. It will be sparse if the inputs are.\n    \"\"\"\n    # Confusingly, this needs to concatenate, not stack (stack returns an array with an extra dimension)\n    return concatenate(XS, 1)\n\n\ndef vstack(XS):\n    \"\"\"\n    Stack arrays in sequence vertically (row wise).\n\n    This is equivalent to concatenation along the first axis after\n    1-D arrays of shape (N,) have been reshaped to (1,N).\n\n    Parameters\n    ----------\n    XS : sequence of ndarray\n        The arrays must have the same shape along all but the first axis.\n        1-D arrays must have the same length.\n\n    Returns\n    -------\n    ndarray or SparseArray\n        The array formed by stacking the given arrays, will be at least 2-D.   It will be sparse if the inputs are.\n    \"\"\"\n    # Confusingly, this needs to concatenate, not stack (stack returns an array with an extra dimension)\n    return concatenate(XS, 0)\n\n\ndef transpose(X, axes=None):\n    \"\"\"\n    Permute the dimensions of an array.\n\n    Parameters\n    ----------\n    X : array_like\n        Input array.\n    axes :  list of int, optional\n            By default, reverse the dimensions, otherwise permute the axes according to the values given\n\n    Returns\n    -------\n    p : ndarray or SparseArray\n        `X` with its axes permuted. This will be sparse if `X` is.\n\n    \"\"\"\n    def t(X):\n        if iscoo(X):\n            return X.transpose(axes)\n        else:\n            return np.transpose(X, axes)\n    return _apply(t, X)\n\n\ndef add_intercept(X):\n    \"\"\"\n    Add an intercept feature to an array by prepending a column of ones.\n\n    Parameters\n    ----------\n    X : array_like\n        Input array.  Must be 2D.\n\n    Returns\n    -------\n    arr : ndarray\n        `X` with a column of ones prepended\n    \"\"\"\n    return hstack([np.ones((X.shape[0], 1)), X])\n\n\ndef reshape_Y_T(Y, T):\n    \"\"\"\n    Reshapes Y and T when Y.ndim = 2 and/or T.ndim = 1.\n\n    Parameters\n    ----------\n    Y : array_like, shape (n, ) or (n, 1)\n        Outcome for the treatment policy. Must be a vector or single-column matrix.\n\n    T : array_like, shape (n, ) or (n, d_t)\n        Treatment policy.\n\n    Returns\n    -------\n    Y : array_like, shape (n, )\n        Flattened outcome for the treatment policy.\n\n    T : array_like, shape (n, 1) or (n, d_t)\n        Reshaped treatment policy.\n\n    \"\"\"\n    assert (len(Y) == len(T))\n    assert (Y.ndim <= 2)\n    if Y.ndim == 2:\n        assert (Y.shape[1] == 1)\n        Y = Y.flatten()\n    if T.ndim == 1:\n        T = T.reshape(-1, 1)\n    return Y, T\n\ndef _get_ensure_finite_arg(ensure_all_finite: Union[str, bool]) -> dict[str, Union[str, bool]]:\n    if parse(sklearn.__version__) < parse(\"1.6\"):\n        # `force_all_finite` was renamed to `ensure_all_finite` in sklearn 1.6 and will be deprecated in 1.8\n        return {'force_all_finite': ensure_all_finite}\n    else:\n        return {'ensure_all_finite': ensure_all_finite}\n\n\ndef check_inputs(Y, T, X, W=None, multi_output_T=True, multi_output_Y=True,\n                 force_all_finite_X=True, force_all_finite_W=True):\n    \"\"\"\n    Input validation for CATE estimators.\n\n    Checks Y, T, X, W for consistent length, enforces X, W 2d.\n    Standard input checks are only applied to all inputs,\n    such as checking that an input does not have np.nan or np.inf targets.\n    Converts regular Python lists to numpy arrays.\n\n    Parameters\n    ----------\n    Y : array_like, shape (n, ) or (n, d_y)\n        Outcome for the treatment policy.\n\n    T : array_like, shape (n, ) or (n, d_t)\n        Treatment policy.\n\n    X : array_like, shape (n, d_x)\n        Feature vector that captures heterogeneity.\n\n    W : array_like, shape (n, d_w), optional\n        High-dimensional controls.\n\n    multi_output_T : bool\n        Whether to allow more than one treatment.\n\n    multi_output_Y: bool\n        Whether to allow more than one outcome.\n\n    force_all_finite_X : bool or 'allow-nan', default True\n        Whether to allow inf and nan in input arrays in X.\n        'allow-nan': accepts only np.nan and pd.NA values in array. Values\n        cannot be infinite.\n\n    force_all_finite_W : bool or 'allow-nan', default True\n        Whether to allow inf and nan in input arrays in W.\n        'allow-nan': accepts only np.nan and pd.NA values in array. Values\n        cannot be infinite.\n\n    Returns\n    -------\n    Y : array_like, shape (n, ) or (n, d_y)\n        Converted and validated Y.\n\n    T : array_like, shape (n, ) or (n, d_t)\n        Converted and validated T.\n\n    X : array_like, shape (n, d_x)\n        Converted and validated X.\n\n    W : array_like, shape (n, d_w), optional\n        Converted and validated W.\n\n    \"\"\"\n    X, T = check_X_y(X, T, multi_output=multi_output_T, y_numeric=True,\n                     **_get_ensure_finite_arg(force_all_finite_X))\n    if force_all_finite_X == 'allow-nan':\n        try:\n            assert_all_finite(X)\n        except ValueError:\n            warnings.warn(\"X contains NaN. Causal identification strategy can be erroneous\"\n                          \" in the presence of missing values.\")\n    _, Y = check_X_y(X, Y, multi_output=multi_output_Y, y_numeric=True,\n                     **_get_ensure_finite_arg(force_all_finite_X))\n    if W is not None:\n        W, _ = check_X_y(W, Y, multi_output=multi_output_Y, y_numeric=True,\n                         **_get_ensure_finite_arg(force_all_finite_W))\n        if force_all_finite_W == 'allow-nan':\n            try:\n                assert_all_finite(W)\n            except ValueError:\n                warnings.warn(\"W contains NaN. Causal identification strategy can be erroneous\"\n                              \" in the presence of missing values.\")\n    return Y, T, X, W\n\n\ndef check_input_arrays(*args, validate_len=True, force_all_finite=True, dtype=None):\n    \"\"\"Cast input sequences into numpy arrays.\n\n    Only inputs that are sequence-like will be converted, all other inputs will be left as is.\n    When `validate_len` is True, the sequences will be checked for equal length.\n\n    Parameters\n    ----------\n    args : scalar or array_like\n        Inputs to be checked.\n\n    validate_len : bool, default True\n        Whether to check if the input arrays have the same length.\n\n    force_all_finite : bool or 'allow-nan', default True\n        Whether to allow inf and nan in input arrays.\n        'allow-nan': accepts only np.nan and pd.NA values in array. Values\n        cannot be infinite.\n\n    dtype : 'numeric', type, list of type, optional\n        Argument passed to sklearn.utils.check_array.\n        Specifies data type of result. If None, the dtype of the input is preserved.\n        If \"numeric\", dtype is preserved unless array.dtype is object.\n        If dtype is a list of types, conversion on the first type is only\n        performed if the dtype of the input is not in the list.\n\n    Returns\n    -------\n    args: array_like\n        List of inputs where sequence-like objects have been cast to numpy arrays.\n\n    \"\"\"\n    n = None\n    args = list(args)\n    for i, arg in enumerate(args):\n        if np.ndim(arg) > 0:\n            new_arg = check_array(arg, dtype=dtype, ensure_2d=False, accept_sparse=True,\n                                  **_get_ensure_finite_arg(force_all_finite))\n            if not force_all_finite:\n                # For when checking input values is disabled\n                try:\n                    assert_all_finite(new_arg)\n                except ValueError:\n                    warnings.warn(\"Input contains NaN, infinity or a value too large for dtype('float64') \"\n                                  \"but input check is disabled. Check the inputs before proceeding.\")\n            elif force_all_finite == 'allow-nan':\n                try:\n                    assert_all_finite(new_arg)\n                except ValueError:\n                    warnings.warn(\"Input contains NaN. Causal identification strategy can be erroneous\"\n                                  \" in the presence of missing values.\")\n\n            if validate_len:\n                m = new_arg.shape[0]\n                if n is None:\n                    n = m\n                else:\n                    assert (m == n), \"Input arrays have incompatible lengths: {} and {}\".format(n, m)\n            args[i] = new_arg\n    return args\n\n\ndef get_input_columns(X, prefix=\"X\"):\n    \"\"\"\n    Extract column names from dataframe-like input object.\n\n    Currently supports column name extraction from pandas DataFrame and Series objects.\n\n    Parameters\n    ----------\n    X : array_like or None\n        Input array with column names to be extracted.\n\n    prefix: str, default \"X\"\n        If input array doesn't have column names, a default using the naming scheme\n        \"{prefix}{column number}\" will be returned.\n\n    Returns\n    -------\n    cols: array_like or None\n        List of columns corresponding to the dataframe-like object.\n        None if the input array is not in the supported types.\n    \"\"\"\n    if X is None:\n        return None\n    if np.ndim(X) == 0:\n        raise ValueError(\n            f\"Expected array_like object for imput with prefix {prefix} but got '{X}' object instead.\")\n    # Type to column extraction function\n    type_to_func = {\n        pd.DataFrame: lambda x: x.columns.tolist(),\n        pd.Series: lambda x: [x.name]\n    }\n    if type(X) in type_to_func:\n        column_names = type_to_func[type(X)](X)\n\n        # if not all column names are strings\n        if not all(isinstance(item, str) for item in column_names):\n            warnings.warn(\"Not all column names are strings. Coercing to strings for now.\", UserWarning)\n\n        return [str(item) for item in column_names]\n\n    len_X = 1 if np.ndim(X) == 1 else np.asarray(X).shape[1]\n    return [f\"{prefix}{i}\" for i in range(len_X)]\n\n\ndef get_feature_names_or_default(featurizer, feature_names, prefix=\"feat(X)\"):\n    \"\"\"\n    Extract feature names from sklearn transformers. Otherwise attempts to assign default feature names.\n\n    Designed to be compatible with old and new sklearn versions.\n\n    Parameters\n    ----------\n    featurizer ： featurizer to extract feature names from\n    feature_names : sequence of str\n        input features\n    prefix : str, default \"feat(X)\"\n        output prefix in the event where we assign default feature names\n\n    Returns\n    -------\n    feature_names_out : list of str\n        The feature names\n    \"\"\"\n    # coerce feature names to be strings\n    if not all(isinstance(item, str) for item in feature_names):\n        warnings.warn(\"Not all feature names are strings. Coercing to strings for now.\", UserWarning)\n    feature_names = [str(item) for item in feature_names]\n\n    # Prefer sklearn 1.0's get_feature_names_out method to deprecated get_feature_names method\n    if hasattr(featurizer, \"get_feature_names_out\"):\n        try:\n            return featurizer.get_feature_names_out(feature_names)\n        except Exception:\n            # Some featurizers will throw, such as a pipeline with a transformer that doesn't itself support names\n            pass\n    if hasattr(featurizer, 'get_feature_names'):\n        try:\n            # Get number of arguments, some sklearn featurizer don't accept feature_names\n            arg_no = len(inspect.getfullargspec(featurizer.get_feature_names).args)\n            if arg_no == 1:\n                return featurizer.get_feature_names()\n            elif arg_no == 2:\n                return featurizer.get_feature_names(feature_names)\n        except Exception:\n            # Handles cases where the passed feature names create issues\n            pass\n    # Featurizer doesn't have 'get_feature_names' or has atypical 'get_feature_names'\n    try:\n        # Get feature names using featurizer\n        dummy_X = np.ones((1, len(feature_names)))\n        return get_input_columns(featurizer.transform(dummy_X), prefix=prefix)\n    except Exception:\n        # All attempts at retrieving transformed feature names have failed\n        # Delegate handling to downstream logic\n        return None\n\n\ndef check_models(models, n):\n    \"\"\"\n    Input validation for metalearner models.\n\n    Check whether the input models satisfy the criteria below.\n\n    Parameters\n    ----------\n    models ： estimator or list or tuple of estimators\n    n : int\n        Number of models needed\n\n    Returns\n    -------\n    models : list or tuple of estimator\n\n    \"\"\"\n    if isinstance(models, (tuple, list)):\n        if n != len(models):\n            raise ValueError(\"The number of estimators doesn't equal to the number of treatments. \"\n                             \"Please provide either a tuple/list of estimators \"\n                             \"with same number of treatments or an unified estimator.\")\n    elif hasattr(models, 'fit'):\n        models = [clone(models, safe=False) for i in range(n)]\n    else:\n        raise ValueError(\n            \"models must be either a tuple/list of estimators with same number of treatments \"\n            \"or an unified estimator.\")\n    return models\n\n\ndef broadcast_unit_treatments(X, d_t):\n    \"\"\"\n    Generate `d_t` unit treatments for each row of `X`.\n\n    Parameters\n    ----------\n    d_t: int\n        Number of treatments\n    X : array\n        Features\n\n    Returns\n    -------\n    X, T : (array, array)\n        The updated `X` array (with each row repeated `d_t` times),\n        and the generated `T` array\n    \"\"\"\n    d_x = shape(X)[0]\n    eye = np.eye(d_t)\n    # tile T and repeat X along axis 0 (so that the duplicated rows of X remain consecutive)\n    T = np.tile(eye, (d_x, 1))\n    Xs = np.repeat(X, d_t, axis=0)\n    return Xs, T\n\n\ndef reshape_treatmentwise_effects(A, d_t, d_y):\n    \"\"\"\n    Given an effects matrix ordered first by treatment, transform it to be ordered by outcome.\n\n    Parameters\n    ----------\n    A : array\n        The array of effects, of size n*d_y*d_t\n    d_t : tuple of int\n        Either () if T was a vector, or a 1-tuple of the number of columns of T if it was an array\n    d_y : tuple of int\n        Either () if Y was a vector, or a 1-tuple of the number of columns of Y if it was an array\n\n    Returns\n    -------\n    A : array (shape (m, d_y, d_t))\n        The transformed array.  Note that singleton dimensions will be dropped for any inputs which\n        were vectors, as in the specification of `BaseCateEstimator.marginal_effect`.\n    \"\"\"\n    A = reshape(A, (-1,) + d_t + d_y)\n    if d_t and d_y:\n        return transpose(A, (0, 2, 1))  # need to return as m by d_y by d_t matrix\n    else:\n        return A\n\ndef reshape_outcomewise_effects(A, d_y):\n    \"\"\"\n    Given an effects matrix, reshape second dimension to be consistent with d_y[0].\n\n    Parameters\n    ----------\n    A : array\n        The effects array to be reshaped. It should have shape (m,) or (m, d_y).\n    d_y : tuple of int\n        Either () if Y was a vector, or a 1-tuple of the number of columns of Y if it was an array.\n\n    Returns\n    -------\n    A : array\n        The reshaped effects array with shape:\n         - (m, ) if d_y is () and Y is a vector,\n         - (m, d_y) if d_y is a 1-tuple and Y is an array.\n    \"\"\"\n    if np.shape(A)[1:] == d_y or d_y == ():\n        return A\n    else:\n        return A.reshape(-1, d_y[0])\n\ndef einsum_sparse(subscripts, *arrs):\n    \"\"\"\n    Evaluate the Einstein summation convention on the operands.\n\n    Using the Einstein summation convention, many common multi-dimensional array operations can be represented\n    in a simple fashion. This function provides a way to compute such summations.\n\n    Parameters\n    ----------\n    subscripts : str\n        Specifies the subscripts for summation.\n        Unlike `np.eisnum` elipses are not supported and the output must be explicitly included\n\n    arrs : list of `sparse.COO`\n        These are the sparse arrays for the operation.\n\n    Returns\n    -------\n    SparseArray\n        The sparse array calculated based on the Einstein summation convention.\n    \"\"\"\n    inputs, outputs = subscripts.split('->')\n    inputs = inputs.split(',')\n    outputInds = set(outputs)\n    allInds = set.union(*[set(i) for i in inputs])\n\n    # same number of input definitions as arrays\n    assert len(inputs) == len(arrs)\n\n    # input definitions have same number of dimensions as each array\n    assert all(arr.ndim == len(input) for (arr, input) in zip(arrs, inputs))\n\n    # all result indices are unique\n    assert len(outputInds) == len(outputs)\n\n    # all result indices must match at least one input index\n    assert outputInds <= allInds\n\n    # map indices to all array, axis pairs for that index\n    indMap = {c: [(n, i) for n in range(len(inputs)) for (i, x) in enumerate(inputs[n]) if x == c] for c in allInds}\n\n    for c in indMap:\n        # each index has the same cardinality wherever it appears\n        assert len({arrs[n].shape[i] for (n, i) in indMap[c]}) == 1\n\n    # State: list of (set of letters, list of (corresponding indices, value))\n    # Algo: while list contains more than one entry\n    #         take two entries\n    #         sort both lists by intersection of their indices\n    #         merge compatible entries (where intersection of indices is equal - in the resulting list,\n    #         take the union of indices and the product of values), stepping through each list linearly\n\n    # TODO: might be faster to break into connected components first\n    #       e.g. for \"ab,d,bc->ad\", the two components \"ab,bc\" and \"d\" are independent,\n    #       so compute their content separately, then take cartesian product\n    #       this would save a few pointless sorts by empty tuples\n\n    # TODO: Consider investigating other performance ideas for these cases\n    #       where the dense method beat the sparse method (usually sparse is faster)\n    #       e,facd,c->cfed\n    #        sparse: 0.0335489\n    #        dense:  0.011465999999999997\n    #       gbd,da,egb->da\n    #        sparse: 0.0791625\n    #        dense:  0.007319099999999995\n    #       dcc,d,faedb,c->abe\n    #        sparse: 1.2868097\n    #        dense:  0.44605229999999985\n\n    def merge(x1, x2):\n        (s1, l1), (s2, l2) = x1, x2\n        keys = {c for c in s1 if c in s2}  # intersection of strings\n        outS = ''.join(set(s1 + s2))  # union of strings\n        outMap = [(True, s1.index(c)) if c in s1 else (False, s2.index(c)) for c in outS]\n\n        def keyGetter(s):\n            inds = [s.index(c) for c in keys]\n            return lambda p: tuple(p[0][ind] for ind in inds)\n        kg1 = keyGetter(s1)\n        kg2 = keyGetter(s2)\n        l1.sort(key=kg1)\n        l2.sort(key=kg2)\n        i1 = i2 = 0\n        outL = []\n        while i1 < len(l1) and i2 < len(l2):\n            k1, k2 = kg1(l1[i1]), kg2(l2[i2])\n            if k1 < k2:\n                i1 += 1\n            elif k2 < k1:\n                i2 += 1\n            else:\n                j1, j2 = i1, i2\n                while j1 < len(l1) and kg1(l1[j1]) == k1:\n                    j1 += 1\n                while j2 < len(l2) and kg2(l2[j2]) == k2:\n                    j2 += 1\n                for c1, d1 in l1[i1:j1]:\n                    for c2, d2 in l2[i2:j2]:\n                        outL.append((tuple(c1[charIdx] if inFirst else c2[charIdx] for inFirst, charIdx in outMap),\n                                     d1 * d2))\n                i1 = j1\n                i2 = j2\n        return outS, outL\n\n    # when indices are repeated within an array, pre-filter the coordinates and data\n    def filter_inds(coords, data, n):\n        counts = Counter(inputs[n])\n        repeated = [(c, counts[c]) for c in counts if counts[c] > 1]\n        if len(repeated) > 0:\n            mask = np.full(len(data), True)\n            for (k, v) in repeated:\n                inds = [i for i in range(len(inputs[n])) if inputs[n][i] == k]\n                for i in range(1, v):\n                    mask &= (coords[:, inds[0]] == coords[:, inds[i]])\n            if not all(mask):\n                return coords[mask, :], data[mask]\n        return coords, data\n\n    xs = [(s, list(zip(c, d)))\n          for n, (s, arr) in enumerate(zip(inputs, arrs))\n          for c, d in [filter_inds(arr.coords.T, arr.data, n)]]\n\n    # TODO: would using einsum's paths to optimize the order of merging help?\n    while len(xs) > 1:\n        xs.append(merge(xs.pop(), xs.pop()))\n\n    results = defaultdict(int)\n\n    for (s, lst) in xs:\n        coordMap = [s.index(c) for c in outputs]\n        for (c, d) in lst:\n            results[tuple(c[i] for i in coordMap)] += d\n\n    return sp.COO(np.array(list(results.keys())).T if results else\n                  np.empty((len(outputs), 0)),\n                  np.array(list(results.values())),\n                  [arrs[indMap[c][0][0]].shape[indMap[c][0][1]] for c in outputs])\n\n\ndef filter_none_kwargs(**kwargs):\n    \"\"\"\n    Filter out any keyword arguments that are None.\n\n    This is useful when specific optional keyword arguments might not be universally supported,\n    so that stripping them out when they are not set enables more uses to succeed.\n\n    Parameters\n    ----------\n    kwargs: dict\n        The keyword arguments to filter\n\n    Returns\n    -------\n    filtered_kwargs: dict\n        The input dictionary, but with all entries having value None removed\n    \"\"\"\n    return {key: value for key, value in kwargs.items() if value is not None}\n\n\nclass WeightedModelWrapper:\n    \"\"\"Helper class for assiging weights to models without this option.\n\n    Parameters\n    ----------\n    model_instance : estimator\n        Model that requires weights.\n\n    sample_type : str, default `weighted`\n        Method for adding weights to the model. `weighted` for linear regression models\n        where the weights can be incorporated in the matrix multiplication,\n        `sampled` for other models. `sampled` samples the training set according\n        to the normalized weights and creates a dataset larger than the original.\n\n    \"\"\"\n\n    def __init__(self, model_instance, sample_type=\"weighted\"):\n        self.model_instance = model_instance\n        if sample_type == \"weighted\":\n            self.data_transform = self._weighted_inputs\n        else:\n            warnings.warn(\"The model provided does not support sample weights. \"\n                          \"Manual weighted sampling may icrease the variance in the results.\", UserWarning)\n            self.data_transform = self._sampled_inputs\n\n    def fit(self, X, y, sample_weight=None):\n        \"\"\"Fit underlying model instance with weighted inputs.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features)\n            Training data.\n\n        y : array_like, shape (n_samples, n_outcomes)\n            Target values.\n\n        Returns\n        -------\n        self: an instance of the underlying estimator.\n        \"\"\"\n        if sample_weight is not None:\n            X, y = self.data_transform(X, y, sample_weight)\n        return self.model_instance.fit(X, y)\n\n    def predict(self, X):\n        \"\"\"Predict using the linear model.\n\n        Parameters\n        ----------\n        X : array_like or sparse matrix, shape (n_samples, n_features)\n            Samples.\n\n        Returns\n        -------\n        C : array, shape (n_samples, n_outcomes)\n            Returns predicted values.\n        \"\"\"\n        return self.model_instance.predict(X)\n\n    def _weighted_inputs(self, X, y, sample_weight):\n        X, y = check_X_y(X, y, y_numeric=True, multi_output=True)\n        normalized_weights = sample_weight * X.shape[0] / np.sum(sample_weight)\n        sqrt_weights = np.sqrt(normalized_weights)\n        weighted_X = sqrt_weights.reshape(-1, 1) * X\n        weighted_y = sqrt_weights.reshape(-1, 1) * y if y.ndim > 1 else sqrt_weights * y\n        return weighted_X, weighted_y\n\n    def _sampled_inputs(self, X, y, sample_weight):\n        # Normalize weights\n        normalized_weights = sample_weight / np.sum(sample_weight)\n        data_length = int(min(1 / np.min(normalized_weights[normalized_weights > 0]), 10) * X.shape[0])\n        data_indices = np.random.choice(X.shape[0], size=data_length, p=normalized_weights)\n        return X[data_indices], y[data_indices]\n\n\nclass MultiModelWrapper:\n    \"\"\"Helper class for training different models for each treatment.\n\n    Parameters\n    ----------\n    model_list : array_like, shape (n_T, )\n        List of models to be trained separately for each treatment group.\n    \"\"\"\n\n    def __init__(self, model_list=[]):\n        self.model_list = model_list\n        self.n_T = len(model_list)\n\n    def fit(self, Xt, y, sample_weight=None):\n        \"\"\"Fit underlying list of models with weighted inputs.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features + n_treatments)\n            Training data. The last n_T columns should be a one-hot encoding of the treatment assignment.\n\n        y : array_like, shape (n_samples, )\n            Target values.\n\n        Returns\n        -------\n        self: an instance of the class\n        \"\"\"\n        X = Xt[:, :-self.n_T]\n        t = Xt[:, -self.n_T:]\n        if sample_weight is None:\n            for i in range(self.n_T):\n                mask = (t[:, i] == 1)\n                self.model_list[i].fit(X[mask], y[mask])\n        else:\n            for i in range(self.n_T):\n                mask = (t[:, i] == 1)\n                self.model_list[i].fit(X[mask], y[mask], sample_weight[mask])\n        return self\n\n    def predict(self, Xt):\n        \"\"\"Predict using the linear model.\n\n        Parameters\n        ----------\n        X : array_like, shape (n_samples, n_features + n_treatments)\n            Samples. The last n_T columns should be a one-hot encoding of the treatment assignment.\n\n        Returns\n        -------\n        C : array, shape (n_samples, )\n            Returns predicted values.\n        \"\"\"\n        X = Xt[:, :-self.n_T]\n        t = Xt[:, -self.n_T:]\n        predictions = [self.model_list[np.nonzero(t[i])[0][0]].predict(X[[i]]) for i in range(len(X))]\n        return np.concatenate(predictions)\n\n\ndef _safe_norm_ppf(q, loc=0, scale=1):\n    if hasattr(loc, \"__len__\"):\n        prelim = loc.copy()\n        if np.any(scale > 0):\n            prelim[scale > 0] = scipy.stats.norm.ppf(q, loc=loc[scale > 0], scale=scale[scale > 0])\n    elif scale > 0:\n        prelim = scipy.stats.norm.ppf(q, loc=loc, scale=scale)\n    else:\n        prelim = loc\n    return prelim\n\n\nclass Summary:\n    # This class is mainly derived from statsmodels.iolib.summary.Summary\n    \"\"\"\n    Result summary.\n\n    Construction does not take any parameters. Tables and text can be added\n    with the `add_` methods.\n\n    Attributes\n    ----------\n    tables : list of table\n        Contains the list of SimpleTable instances, horizontally concatenated\n        tables are not saved separately.\n    extra_txt : str\n        extra lines that are added to the text output, used for warnings\n        and explanations.\n    \"\"\"\n\n    def __init__(self):\n        self.tables = []\n        self.extra_txt = None\n\n    def __str__(self):\n        return self.as_text()\n\n    def __repr__(self):\n        return str(type(self)) + '\\n\"\"\"\\n' + self.__str__() + '\\n\"\"\"'\n\n    def _repr_html_(self):\n        \"\"\"Display as HTML in IPython notebook.\"\"\"\n        return self.as_html()\n\n    def add_table(self, res, header, index, title):\n        table = SimpleTable(res, header, index, title)\n        self.tables.append(table)\n\n    def add_extra_txt(self, etext):\n        \"\"\"Add additional text that will be added at the end in text format.\n\n        Parameters\n        ----------\n        etext : list[str]\n            string with lines that are added to the text output.\n\n        \"\"\"\n        self.extra_txt = '\\n'.join(etext)\n\n    def as_text(self):\n        \"\"\"Return tables as string.\n\n        Returns\n        -------\n        txt : str\n            summary tables and extra text as one string\n\n        \"\"\"\n        txt = summary_return(self.tables, return_fmt='text')\n        if self.extra_txt is not None:\n            txt = txt + '\\n\\n' + self.extra_txt\n        return txt\n\n    def as_latex(self):\n        \"\"\"Return tables as string.\n\n        Returns\n        -------\n        latex : str\n            summary tables and extra text as string of Latex\n\n        Notes\n        -----\n        This currently merges tables with different number of columns.\n        It is recommended to use `as_latex_tabular` directly on the individual\n        tables.\n\n        \"\"\"\n        latex = summary_return(self.tables, return_fmt='latex')\n        if self.extra_txt is not None:\n            latex = latex + '\\n\\n' + self.extra_txt.replace('\\n', ' \\\\newline\\n ')\n        return latex\n\n    def as_csv(self):\n        \"\"\"Return tables as string.\n\n        Returns\n        -------\n        csv : str\n            concatenated summary tables in comma delimited format\n\n        \"\"\"\n        csv = summary_return(self.tables, return_fmt='csv')\n        if self.extra_txt is not None:\n            csv = csv + '\\n\\n' + self.extra_txt\n        return csv\n\n    def as_html(self):\n        \"\"\"Return tables as string.\n\n        Returns\n        -------\n        html : str\n            concatenated summary tables in HTML format\n\n        \"\"\"\n        html = summary_return(self.tables, return_fmt='html')\n        if self.extra_txt is not None:\n            html = html + '<br/><br/>' + self.extra_txt.replace('\\n', '<br/>')\n        return html\n\n\nclass SeparateModel:\n    \"\"\"\n    Splits the data based on the last feature and trains a separate model for each subsample.\n\n    At predict time, it uses the last feature to choose which model to use to predict.\n    \"\"\"\n\n    def __init__(self, *models):\n        self.models = [clone(model) for model in models]\n\n    def fit(self, XZ, T):\n        for (i, m) in enumerate(self.models):\n            inds = (XZ[:, -1] == i)\n            m.fit(XZ[inds, :-1], T[inds])\n        return self\n\n    def predict(self, XZ):\n        t_pred = np.zeros(XZ.shape[0])\n        for (i, m) in enumerate(self.models):\n            inds = (XZ[:, -1] == i)\n            if np.any(inds):\n                t_pred[inds] = m.predict(XZ[inds, :-1])\n        return t_pred\n\n    @property\n    def coef_(self):\n        return np.concatenate((model.coef_ for model in self.models))\n\n\ndef deprecated(message, category=FutureWarning):\n    \"\"\"\n    Enable decorating a method or class to providing a warning when it is used.\n\n    Parameters\n    ----------\n    message: str\n        The deprecation message to use\n    category:  :class:`type`, default :class:`FutureWarning`\n        The warning category to use\n    \"\"\"\n    def decorator(to_wrap):\n\n        # if we're decorating a class, just update the __init__ method,\n        # so that the result is still a class instead of a wrapper method\n        if isinstance(to_wrap, type):\n            old_init = to_wrap.__init__\n\n            @wraps(to_wrap.__init__)\n            def new_init(*args, **kwargs):\n                warn(message, category, stacklevel=2)\n                old_init(*args, **kwargs)\n\n            to_wrap.__init__ = new_init\n\n            return to_wrap\n        else:\n            @wraps(to_wrap)\n            def m(*args, **kwargs):\n                warn(message, category, stacklevel=2)\n                return to_wrap(*args, **kwargs)\n            return m\n    return decorator\n\n\ndef _deprecate_positional(message, bad_args, category=FutureWarning):\n    \"\"\"\n    Enable decorating a method to provide a warning when certain arguments are used positionally.\n\n    Parameters\n    ----------\n    message: str\n        The deprecation message to use\n    bad_args : list of str\n        The positional arguments that will be keyword-only in the future\n    category:  :class:`type`, default :class:`FutureWarning`\n        The warning category to use\n    \"\"\"\n    def decorator(to_wrap):\n        @wraps(to_wrap)\n        def m(*args, **kwargs):\n            # want to enforce that each bad_arg was either in kwargs,\n            # or else it was in neither and is just taking its default value\n            bound = signature(m).bind(*args, **kwargs)\n\n            wrong_args = False\n            for arg in bad_args:\n                if arg not in kwargs and arg in bound.arguments:\n                    wrong_args = True\n            if wrong_args:\n                warn(message, category, stacklevel=2)\n            return to_wrap(*args, **kwargs)\n        return m\n    return decorator\n\n\nclass MissingModule:\n    \"\"\"\n    Placeholder to stand in for a module that couldn't be imported, delaying ImportErrors until use.\n\n    Parameters\n    ----------\n    msg:str\n        The message to display when an attempt to access a module memeber is made\n    exn:ImportError\n        The original ImportError to pass as the source of the exception\n    \"\"\"\n\n    def __init__(self, msg, exn):\n        self.msg = msg\n        self.exn = exn\n\n    # Any access should throw\n    def __getattr__(self, _):\n        raise ImportError(self.msg) from self.exn\n\n    # As a convenience, also throw on calls to allow MissingModule to be used in lieu of specific imports\n    def __call__(self, *args, **kwargs):\n        raise ImportError(self.msg) from self.exn\n\n\ndef transpose_dictionary(d):\n    \"\"\"\n    Transpose a dictionary of dictionaries, bringing the keys from the second level to the top and vice versa.\n\n    Parameters\n    ----------\n    d: dict\n        The dictionary to transpose; the values of this dictionary should all themselves\n        be dictionaries\n\n    Returns\n    -------\n    output: dict\n        The output dictionary with first- and second-level keys swapped\n    \"\"\"\n    output = defaultdict(dict)\n    for key1, value in d.items():\n        for key2, val in value.items():\n            output[key2][key1] = val\n\n    # return plain dictionary so that erroneous accesses don't half work (see e.g. #708)\n    return dict(output)\n\n\ndef reshape_arrays_2dim(length, *args):\n    \"\"\"\n    Reshape the input arrays as two dimensional.\n\n    If any entry is None, will be reshaped as (n, 0).\n\n    Parameters\n    ----------\n    length: scalar\n        Number of samples\n    args: tuple of array_like\n        Inputs to be reshaped\n\n    Returns\n    -------\n    new_args: list of array\n        Output of reshaped arrays\n    \"\"\"\n    new_args = []\n    for arg in args:\n        if arg is None:\n            new_args.append(np.array([]).reshape(length, 0))\n        elif arg.ndim == 1:\n            new_args.append(arg.reshape((-1, 1)))\n        else:\n            new_args.append(arg)\n    return new_args\n\n\nclass _RegressionWrapper:\n    \"\"\"\n    A simple wrapper that makes a binary classifier behave like a regressor.\n\n    Essentially .fit, calls the fit method of the classifier and\n    .predict calls the .predict_proba method of the classifier\n    and returns the probability of label 1.\n\n    Parameters\n    ----------\n    clf : the classifier model\n    \"\"\"\n\n    def __init__(self, clf):\n        self._clf = clf\n\n    def fit(self, X, y, **kwargs):\n        \"\"\"\n        Fit the model.\n\n        Parameters\n        ----------\n        X : features\n        y : one-hot-encoding of binary label, with drop='first'\n        \"\"\"\n        if len(y.shape) > 1 and y.shape[1] > 1:\n            y = y @ np.arange(1, y.shape[1] + 1)\n        self._clf.fit(X, y, **kwargs)\n        return self\n\n    def predict(self, X):\n        \"\"\"\n        Predict the outcome.\n\n        Parameters\n        ----------\n        X : features\n        \"\"\"\n        return self._clf.predict_proba(X)[:, 1:]\n\n\nclass _TransformerWrapper:\n    \"\"\"Wrapper that takes a featurizer as input and adds jacobian calculation functionality.\"\"\"\n\n    def __init__(self, featurizer):\n        self.featurizer = featurizer\n\n    def fit(self, X):\n        return self.featurizer.fit(X)\n\n    def transform(self, X):\n        return self.featurizer.transform(X)\n\n    def fit_transform(self, X):\n        return self.featurizer.fit_transform(X)\n\n    def get_feature_names_out(self, feature_names):\n        return get_feature_names_or_default(self.featurizer, feature_names, prefix=\"feat(T)\")\n\n    def jac(self, X, epsilon=0.001):\n        if hasattr(self.featurizer, 'jac'):\n            return self.featurizer.jac(X)\n        elif (isinstance(self.featurizer, PolynomialFeatures)):\n            powers = self.featurizer.powers_\n            result = np.zeros(X.shape + (self.featurizer.n_output_features_,))\n            for i in range(X.shape[1]):\n                # d/dx_i of x_1^p_1 * x_2^p_2 * ... x_i^p_i * ... x_n^p_n\n                # = p_i * x_1^p_1 * x_2^p_2 * ... x_i^(p_i-1) * ... x_n^p_n\n                # store the coefficient in c, and the updated powers in p\n                c = powers[:, i]\n                p = powers.copy()\n                # decrement p[:, i], but only if it was more than 0 already\n                # (if it is 0 then c=0 so we'll correctly get 0 for a result regardless of the updated entries in p,\n                #  but float_power would return nan if X has a 0 and the exponent is -1)\n                p[p[:, i] > 0, i] -= 1\n                M = np.float_power(X[:, np.newaxis, :], p[np.newaxis, :, :])\n                result[:, i, :] = c[np.newaxis, :] * np.prod(M, axis=-1)\n            return result\n\n        else:\n            squeeze = []\n\n            n = X.shape[0]\n            d_t = X.shape[-1] if ndim(X) > 1 else 1\n            X_out = self.transform(X)\n            d_f_t = X_out.shape[-1] if ndim(X_out) > 1 else 1\n\n            jacob = np.zeros((n, d_t, d_f_t))\n\n            if ndim(X) == 1:\n                squeeze.append(1)\n                X = X[:, np.newaxis]\n            if ndim(X_out) == 1:\n                squeeze.append(2)\n\n            # for every dimension of the treatment add some epsilon and observe change in featurized treatment\n            for k in range(d_t):\n                eps_matrix = np.zeros(shape=X.shape)\n                eps_matrix[:, k] = epsilon\n\n                X_in_plus = X + eps_matrix\n                X_in_plus = X_in_plus.squeeze(axis=1) if 1 in squeeze else X_in_plus\n                X_out_plus = self.transform(X_in_plus)\n                X_out_plus = X_out_plus[:, np.newaxis] if 2 in squeeze else X_out_plus\n\n                X_in_minus = X - eps_matrix\n                X_in_minus = X_in_minus.squeeze(axis=1) if 1 in squeeze else X_in_minus\n                X_out_minus = self.transform(X_in_minus)\n                X_out_minus = X_out_minus[:, np.newaxis] if 2 in squeeze else X_out_minus\n\n                diff = X_out_plus - X_out_minus\n                deriv = diff / (2 * epsilon)\n\n                jacob[:, k, :] = deriv\n\n            return jacob.squeeze(axis=tuple(squeeze))\n\n\ndef jacify_featurizer(featurizer):\n    \"\"\"Convert a featurizer into a wrapper class that includes a function for calculating the jacobian.\"\"\"\n    return _TransformerWrapper(featurizer)\n\n\ndef strata_from_discrete_arrays(arrs):\n    \"\"\"\n    Combine multiple discrete arrays into a single array for stratification purposes.\n\n    For example, if arrs is\n    `[[0 1 2 0 1 2 0 1 2 0 1 2],\n    [0 1 0 1 0 1 0 1 0 1 0 1],\n    [0 0 0 0 0 0 1 1 1 1 1 1]]`\n    then output will be\n    `[0 8 4 6 2 10 1 9 5 7 3 11]`\n\n    Every distinct combination of these discrete arrays will have it's own label.\n    \"\"\"\n    if not arrs:\n        return None\n\n    curr_array = np.zeros(shape=np.ravel(arrs[0]).shape, dtype='int')\n\n    for arr in arrs:\n        enc = LabelEncoder()\n        temp = enc.fit_transform(np.ravel(arr))\n        curr_array = temp + curr_array * len(enc.classes_)\n\n    return curr_array\n\n\ndef one_hot_encoder(sparse=False, **kwargs):\n    \"\"\"\n    Create a :class:`~sklearn.preprocessing.OneHotEncoder`.\n\n    This handles the breaking name change from `sparse` to `sparse_output`\n    between sklearn versions 1.1 and 1.2.\n    \"\"\"\n    if parse(sklearn.__version__) < parse(\"1.2\"):\n        return OneHotEncoder(sparse=sparse, **kwargs)\n    else:\n        return OneHotEncoder(sparse_output=sparse, **kwargs)\n"
  },
  {
    "path": "econml/validate/__init__.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\"A suite of validation methods for CATE models.\"\"\"\n\nfrom .drtester import DRTester\nfrom .results import BLPEvaluationResults, CalibrationEvaluationResults, UpliftEvaluationResults, EvaluationResults\n\n__all__ = ['DRTester',\n           'BLPEvaluationResults', 'CalibrationEvaluationResults', 'UpliftEvaluationResults', 'EvaluationResults']\n"
  },
  {
    "path": "econml/validate/drtester.py",
    "content": "from typing import Tuple, Union, List\n\nimport numpy as np\nimport pandas as pd\nimport scipy.stats as st\nfrom sklearn.model_selection import check_cv\nfrom sklearn.model_selection import cross_val_predict, StratifiedKFold, KFold\nfrom statsmodels.api import OLS\nfrom statsmodels.tools import add_constant\n\nfrom econml.utilities import deprecated\n\nfrom .results import CalibrationEvaluationResults, BLPEvaluationResults, UpliftEvaluationResults, EvaluationResults\nfrom .utils import calculate_dr_outcomes, calc_uplift\n\n\nclass DRTester:\n    \"\"\"\n    Validation tests for CATE models.\n\n    Includes the best linear predictor (BLP) test as in Chernozhukov et al. (2022),\n    the calibration test in Dwivedi et al. (2020), and the QINI coefficient as in Radcliffe (2007).\n\n    **Best Linear Predictor (BLP)**\n\n    Runs ordinary least squares (OLS) of doubly robust (DR) outcomes on DR outcome predictions from the CATE model\n    (and a constant). If the CATE model captures true heterogeneity, then the OLS estimate on the CATE predictions\n    should be positive and significantly different than 0.\n\n    **Calibration**\n\n    First, units are binned based on out-of-sample defined quantiles of the CATE predictions (s(Z)). Within each bin\n    (k), the absolute difference between the mean CATE prediction and DR outcome is calculated, along with the\n    absolute difference in the mean CATE prediction and the overall ATE. These measures are then summed across bins,\n    weighted by a probability a unit is in each bin.\n\n    .. math::\n\n        \\\\mathrm{Cal}_G = \\\\sum_k \\\\pi(k) |{\\\\E[s(Z) | k] - \\\\E[Y^{DR} | k]}|\n\n        \\\\mathrm{Cal}_O = \\\\sum_k \\\\pi(k) |{\\\\E[s(Z) | k] - \\\\E[Y^{DR}]}|\n\n    The calibration r-squared is then defined as\n\n    .. math::\n\n        \\\\mathcal{R^2}_C = 1 - \\\\frac{\\\\mathrm{Cal}_G}{\\\\mathrm{Cal}_O}\n\n    The calibration r-squared metric is similar to the standard R-square score in that it can take any value\n    less than or equal to 1, with scores closer to 1 indicating a better calibrated CATE model.\n\n    **Uplift Modeling**\n\n    Units are ordered by predicted CATE values and a running measure of the average treatment effect in each cohort is\n    kept as we progress through ranks. The resulting TOC curve can then be plotted and its integral calculated and used\n    as a measure of true heterogeneity captured by the CATE model; this integral is referred to as the AUTOC (area\n    under TOC). The QINI curve is a variant of this curve that also incorporates treatment probability; its integral is\n    referred to as the QINI coefficient.\n\n    More formally, the TOC and QINI curves are given by the following functions:\n\n    .. math::\n\n        \\\\tau_{TOC}(q) = \\\\mathrm{Cov}(\n            Y^{DR}(g,p),\n            \\\\frac{\n                \\\\mathbb{1}\\\\{\\\\hat{\\\\tau}(Z) \\\\geq \\\\hat{\\\\mu}(q)\\\\}\n            }{\n                \\\\mathrm{Pr}(\\\\hat{\\\\tau}(Z) \\\\geq \\\\hat{\\\\mu}(q))\n            }\n        )\n\n        \\\\tau_{QINI}(q) = \\\\mathrm{Cov}(Y^{DR}(g,p), \\\\mathbb{1}\\\\{\\\\hat{\\\\tau}(Z) \\\\geq \\\\hat{\\\\mu}(q)\\\\})\n\n    Where :math:`q` is the desired quantile, :math:`\\\\hat{\\\\mu}` is the quantile function, and :math:`\\\\hat{\\\\tau}` is\n    the predicted CATE function.\n    :math:`Y^{DR}(g,p)` refers to the doubly robust outcome difference (relative to control) for the given observation.\n\n    The AUTOC and QINI coefficient are then given by:\n\n    .. math::\n\n        AUTOC = \\\\int_0^1 \\\\tau_{TOC}(q) dq\n\n        QINI = \\\\int_0^1 \\\\tau_{QINI}(q) dq\n\n    Parameters\n    ----------\n    model_regression: estimator\n        Nuisance model estimator used to fit the outcome to features. Must be able to implement `fit` and `predict`\n        methods\n\n    model_propensity: estimator\n        Nuisance model estimator used to fit the treatment assignment to features. Must be able to implement `fit`\n        method and either `predict` (in the case of binary treatment) or `predict_proba` methods (in the case of\n        multiple categorical treatments).\n\n    cate: estimator\n        Fitted conditional average treatment effect (CATE) estimator to be validated.\n\n    cv: int or list, default 5\n        Splitter used for cross-validation. Can be either an integer (corresponding to the number of desired folds)\n        or a list of indices corresponding to membership in each fold.\n\n    References\n    ----------\n    [Chernozhukov2022] V. Chernozhukov et al.\n    Generic Machine Learning Inference on Heterogeneous Treatment Effects in Randomized Experiments\n    arXiv preprint arXiv:1712.04802, 2022.\n    `<https://arxiv.org/abs/1712.04802>`_\n\n    [Dwivedi2020] R. Dwivedi et al.\n    Stable Discovery of Interpretable Subgroups via Calibration in Causal Studies\n    arXiv preprint \tarXiv:2008.10109, 2020.\n    `<https://arxiv.org/abs/2008.10109>`_\n\n    [Radcliffe2007] N. Radcliffe\n    Using control groups to target on predicted lift: Building and assessing uplift model.\n    Direct Marketing Analytics Journal (2007), pages 14–21.\n    \"\"\"\n\n    def __init__(\n        self,\n        *,\n        model_regression,\n        model_propensity,\n        cate,\n        cv: Union[int, List] = 5\n    ):\n        self.model_regression = model_regression\n        self.model_propensity = model_propensity\n        self.cate = cate\n        self.cv = cv\n\n    def get_cv_splitter(self, random_state: int = 123):\n        \"\"\"\n        Generate splitter object for cross-validation.\n\n        Checks if the cv object passed at initialization is a splitting mechanism or a number of folds and returns\n        appropriately modified object for use in downstream cross-validation.\n\n        Parameters\n        ----------\n        random_state: integer\n            seed for splitter, default is 123\n\n        Returns\n        -------\n        None, but adds attribute 'cv_splitter' containing the constructed splitter object.\n        \"\"\"\n        splitter = check_cv(self.cv, [0], classifier=True)\n        if splitter != self.cv and isinstance(splitter, (KFold, StratifiedKFold)):\n            splitter.shuffle = True\n            splitter.random_state = random_state\n        self.cv_splitter = splitter\n\n    def get_cv_splits(self, vars: np.array, T: np.array):\n        \"\"\"\n        Generate splits for cross-validation, given a set of variables and treatment vector.\n\n        Parameters\n        ----------\n        vars: (n x k) matrix or vector of length n\n            Features used in nuisance models\n        T: vector of length n_val\n            Treatment assignment vector. Control status must be minimum value. It is recommended to have\n            the control status be equal to 0, and all other treatments integers starting at 1.\n\n        Returns\n        -------\n        list of folds of the data, on which to run cross-validation\n        \"\"\"\n        if not hasattr(self, 'cv_splitter'):\n            self.get_cv_splitter()\n\n        all_vars = [var if np.ndim(var) == 2 else var.reshape(-1, 1) for var in vars if var is not None]\n        to_split = np.hstack(all_vars)\n        folds = self.cv_splitter.split(to_split, T)\n\n        return list(folds)\n\n    def fit_nuisance(\n        self,\n        Xval: np.array,\n        Dval: np.array,\n        yval: np.array,\n        Xtrain: np.array = None,\n        Dtrain: np.array = None,\n        ytrain: np.array = None,\n    ):\n        \"\"\"\n        Generate nuisance predictions and calculates doubly robust (DR) outcomes.\n\n        Uses either (1) cross-fitting in the\n        validation sample, or (2) fitting in the training sample and applying to the validation sample. If Xtrain,\n        Dtrain, and ytrain are all not None, then option (2) will be implemented, otherwise, option (1) will be\n        implemented. In order to use the `evaluate_cal` method then Xtrain, Dtrain, and ytrain must all be specified.\n\n        Parameters\n        ----------\n        Xval: (n_val x k) matrix or vector of length n\n            Features used in nuisance models for validation sample\n        Dval: vector of length n_val\n            Treatment assignment of validation sample. Control status must be minimum value. It is recommended to have\n            the control status be equal to 0, and all other treatments integers starting at 1.\n        yval: vector of length n_val\n            Outcomes for the validation sample\n        Xtrain: (n_train x k) matrix or vector of length n, optional\n            Features used in nuisance models for training sample\n        Dtrain: vector of length n_train, optional\n            Treatment assignment of training sample. Control status must be minimum value. It is recommended to have\n            the control status be equal to 0, and all other treatments integers starting at 1.\n        ytrain: vector of length n_train, optional\n            Outcomes for the training sample\n\n        Returns\n        -------\n        self, with added attributes for the validation treatments (Dval), treatment values (tmts),\n        number of treatments excluding control (n_treat), boolean flag for whether training data is provided\n        (fit_on_train), doubly robust outcome values for the validation set (dr_val), and the DR ATE value (ate_val).\n        If training data is provided, also adds attributes for the doubly robust outcomes for the training\n        set (dr_train) and the training treatments (Dtrain)\n        \"\"\"\n        self.Dval = Dval\n\n        # Unique treatments (ordered, includes control)\n        self.treatments = np.sort(np.unique(Dval))\n\n        # Number of treatments (excluding control)\n        self.n_treat = len(self.treatments) - 1\n\n        # Indicator for whether\n        self.fit_on_train = (Xtrain is not None) and (Dtrain is not None) and (ytrain is not None)\n\n        if self.fit_on_train:\n            # Get DR outcomes in training sample\n            reg_preds_train, prop_preds_train = self.fit_nuisance_cv(Xtrain, Dtrain, ytrain)\n            self.dr_train_ = calculate_dr_outcomes(Dtrain, ytrain, reg_preds_train, prop_preds_train)\n\n            # Get DR outcomes in validation sample\n            reg_preds_val, prop_preds_val = self.fit_nuisance_train(Xtrain, Dtrain, ytrain, Xval)\n            self.dr_val_ = calculate_dr_outcomes(Dval, yval, reg_preds_val, prop_preds_val)\n        else:\n            # Get DR outcomes in validation sample\n            reg_preds_val, prop_preds_val = self.fit_nuisance_cv(Xval, Dval, yval)\n            self.dr_val_ = calculate_dr_outcomes(Dval, yval, reg_preds_val, prop_preds_val)\n\n        # Calculate ATE in the validation sample\n        self.ate_val = self.dr_val_.mean(axis=0)\n\n        return self\n\n    def fit_nuisance_train(\n        self,\n        Xtrain: np.array,\n        Dtrain: np.array,\n        ytrain: np.array,\n        Xval: np.array\n    ) -> Tuple[np.array, np.array]:\n        \"\"\"\n        Fits nuisance models in training sample and applies to generate predictions in validation sample.\n\n        Parameters\n        ----------\n        Xtrain: (n_train x k) matrix\n            Training sample features used to predict both treatment status and outcomes\n        Dtrain: array of length n_train\n            Training sample treatment assignments. Should have integer values with the lowest-value corresponding to\n            the control treatment. It is recommended to have the control take value 0 and all other treatments be\n            integers starting at 1\n        ytrain: array of length n_train\n            Outcomes for training sample\n        Xval: (n_train x k) matrix\n            Validation sample features used to predict both treatment status and outcomes\n\n        Returns\n        -------\n        2 (n_val x n_treatment + 1) arrays corresponding to the predicted outcomes under treatment status and predicted\n        treatment probabilities, respectively. Both evaluated on validation set.\n        \"\"\"\n        # Fit propensity in treatment\n        model_propensity_fitted = self.model_propensity.fit(Xtrain, Dtrain)\n        # Predict propensity scores\n        prop_preds = model_propensity_fitted.predict_proba(Xval)\n\n        # Possible treatments (need to allow more than 2)\n        n = Xval.shape[0]\n        reg_preds = np.zeros((n, self.n_treat + 1))\n        for i in range(self.n_treat + 1):\n            model_regression_fitted = self.model_regression.fit(\n                Xtrain[Dtrain == self.treatments[i]], ytrain[Dtrain == self.treatments[i]])\n            reg_preds[:, i] = model_regression_fitted.predict(Xval)\n\n        return reg_preds, prop_preds\n\n    def fit_nuisance_cv(\n        self,\n        X: np.array,\n        D: np.array,\n        y: np.array\n    ) -> Tuple[np.array, np.array]:\n        \"\"\"\n        Generate nuisance function predictions using k-folds cross validation.\n\n        Parameters\n        ----------\n        X: (n x k) matrix\n            Features used to predict treatment/outcome\n        D: array of length n\n            Treatment assignments. Should have integer values with the lowest-value corresponding to the\n            control treatment. It is recommended to have the control take value 0 and all other treatments be integers\n            starting at 1\n        y: array of length n\n            Outcomes\n\n        Returns\n        -------\n        2 (n x n_treatment + 1) arrays corresponding to the predicted outcomes under treatment status and predicted\n        treatment probabilities, respectively.\n        \"\"\"\n        splits = self.get_cv_splits([X], D)\n        prop_preds = cross_val_predict(self.model_propensity, X, D, cv=splits, method='predict_proba')\n\n        # Predict outcomes\n        # T-learner logic\n        N = X.shape[0]\n        reg_preds = np.zeros((N, self.n_treat + 1))\n        for k in range(self.n_treat + 1):\n            for train, test in splits:\n                model_regression_fitted = self.model_regression.fit(X[train][D[train] == self.treatments[k]],\n                                                                    y[train][D[train] == self.treatments[k]])\n                reg_preds[test, k] = model_regression_fitted.predict(X[test])\n\n        return reg_preds, prop_preds\n\n    def get_cate_preds(\n        self,\n        Xval: np.array,\n        Xtrain: np.array = None\n    ):\n        \"\"\"\n        Generate predictions from fitted CATE model.\n\n        If Xtrain is None, then the predictions are generated using\n        k-folds cross-validation on the validation set. If Xtrain is specified, then the CATE is assumed to have\n        been fitted on the training sample (where the DR outcomes were generated using k-folds CV), and then applied\n        to the validation sample.\n\n        Parameters\n        ----------\n        Xval: (n_val x n_treatment) matrix\n            Validation set features to be used to predict (and potentially fit) DR outcomes in CATE model\n        Xtrain (n_train x n_treatment) matrix, optional\n            Training set features used to fit CATE model\n\n        Returns\n        -------\n        None, but adds attribute cate_preds_val_ for predicted CATE values on the validation set and, if training\n        data is provided, attribute cate_preds_train_ for predicted CATE values on the training set\n        \"\"\"\n        base = self.treatments[0]\n        vals = [self.cate.effect(X=Xval, T0=base, T1=t) for t in self.treatments[1:]]\n        self.cate_preds_val_ = np.stack(vals).T\n\n        if Xtrain is not None:\n            trains = [self.cate.effect(X=Xtrain, T0=base, T1=t) for t in self.treatments[1:]]\n            self.cate_preds_train_ = np.stack(trains).T\n\n    def evaluate_cal(\n        self,\n        Xval: np.array = None,\n        Xtrain: np.array = None,\n        n_groups: int = 4\n    ) -> CalibrationEvaluationResults:\n        \"\"\"\n        Implement calibration test as in [Dwivedi2020].\n\n        Parameters\n        ----------\n        Xval: (n_val x n_treatment) matrix, optional\n            Validation sample features for CATE model. If not specified, then `fit_cate` method must already have been\n            implemented\n        Xtrain: (n_train x n_treatment) matrix, optional\n            Training sample features for CATE model. If not specified, then `fit cate` method must already have been\n            implemented (with Xtrain specified)\n        n_groups: integer, default 4\n            Number of quantile-based groups used to calculate calibration score.\n\n        Returns\n        -------\n        CalibrationEvaluationResults object showing the results of the calibration test\n        \"\"\"\n        if not hasattr(self, 'dr_train_'):\n            raise Exception(\"Must fit nuisance models on training sample data to use calibration test\")\n\n        # if CATE is given explicitly or has not been fitted at all previously, fit it now\n        if (not hasattr(self, 'cate_preds_train_')) or (not hasattr(self, 'cate_preds_val_')):\n            if (Xval is None) or (Xtrain is None):\n                raise Exception('CATE predictions not yet calculated - must provide both Xval, Xtrain')\n            self.get_cate_preds(Xval, Xtrain)\n\n        cal_r_squared = np.zeros(self.n_treat)\n        plot_data_dict = dict()\n        for k in range(self.n_treat):\n            cuts = np.quantile(self.cate_preds_train_[:, k], np.linspace(0, 1, n_groups + 1))\n            probs = np.zeros(n_groups)\n            g_cate = np.zeros(n_groups)\n            se_g_cate = np.zeros(n_groups)\n            gate = np.zeros(n_groups)\n            se_gate = np.zeros(n_groups)\n            for i in range(n_groups):\n                # Assign units in validation set to groups\n                ind = (self.cate_preds_val_[:, k] >= cuts[i]) & (self.cate_preds_val_[:, k] <= cuts[i + 1])\n                # Proportion of validations set in group\n                probs[i] = np.mean(ind)\n                # Group average treatment effect (GATE) -- average of DR outcomes in group\n                gate[i] = np.mean(self.dr_val_[ind, k])\n                se_gate[i] = np.std(self.dr_val_[ind, k]) / np.sqrt(np.sum(ind))\n                # Average of CATE predictions in group\n                g_cate[i] = np.mean(self.cate_preds_val_[ind, k])\n                se_g_cate[i] = np.std(self.cate_preds_val_[ind, k]) / np.sqrt(np.sum(ind))\n\n            # Calculate group calibration score\n            cal_score_g = np.sum(abs(gate - g_cate) * probs)\n            # Calculate overall calibration score\n            cal_score_o = np.sum(abs(gate - self.ate_val[k]) * probs)\n            # Calculate R-square calibration score\n            cal_r_squared[k] = 1 - (cal_score_g / cal_score_o)\n\n            df_plot = pd.DataFrame({\n                'ind': np.array(range(n_groups)),\n                'gate': gate,\n                'se_gate': se_gate,\n                'g_cate': g_cate,\n                'se_g_cate': se_g_cate\n            })\n\n            plot_data_dict[self.treatments[k + 1]] = df_plot\n\n        self.cal_res = CalibrationEvaluationResults(\n            cal_r_squared=cal_r_squared,\n            plot_data_dict=plot_data_dict,\n            treatments=self.treatments\n        )\n\n        return self.cal_res\n\n    def evaluate_blp(\n        self,\n        Xval: np.array = None,\n        Xtrain: np.array = None\n    ) -> BLPEvaluationResults:\n        \"\"\"\n        Implement the best linear predictor (BLP) test as in [Chernozhukov2022].\n\n        `fit_nusiance` method must already have been called.\n\n        Parameters\n        ----------\n        Xval: (n_val x k) matrix, optional\n            Validation sample features for CATE model. If not specified, then `fit_cate` method must already have been\n            implemented\n        Xtrain: (n_train x k) matrix, optional\n            Training sample features for CATE model. If specified, then CATE is fitted on training sample and applied\n            to Xval. If specified, then Xtrain, Dtrain, Ytrain must have been specified in `fit_nuisance` method (and\n            vice-versa)\n\n        Returns\n        -------\n        BLPEvaluationResults object showing the results of the BLP test\n        \"\"\"\n        if not hasattr(self, 'dr_val_'):\n            raise Exception(\"Must fit nuisances before evaluating\")\n\n        # if CATE is given explicitly or has not been fitted at all previously, fit it now\n        if not hasattr(self, 'cate_preds_val_'):\n            if Xval is None:  # need at least Xval\n                raise Exception('CATE predictions not yet calculated - must provide Xval')\n            self.get_cate_preds(Xval, Xtrain)\n\n        if self.n_treat == 1:  # binary treatment\n            reg = OLS(self.dr_val_, add_constant(self.cate_preds_val_)).fit()\n            params = [reg.params[1]]\n            errs = [reg.bse[1]]\n            pvals = [reg.pvalues[1]]\n        else:  # categorical treatment\n            params = []\n            errs = []\n            pvals = []\n            for k in range(self.n_treat):  # run a separate regression for each\n                reg = OLS(self.dr_val_[:, k], add_constant(self.cate_preds_val_[:, k])).fit(cov_type='HC1')\n                params.append(reg.params[1])\n                errs.append(reg.bse[1])\n                pvals.append(reg.pvalues[1])\n\n        self.blp_res = BLPEvaluationResults(\n            params=params,\n            errs=errs,\n            pvals=pvals,\n            treatments=self.treatments\n        )\n\n        return self.blp_res\n\n    def evaluate_uplift(\n        self,\n        Xval: np.array = None,\n        Xtrain: np.array = None,\n        percentiles: np.array = np.linspace(5, 95, 50),\n        metric: str = 'qini',\n        n_bootstrap: int = 1000\n    ) -> UpliftEvaluationResults:\n        \"\"\"\n        Calculate uplift curves and coefficients for the given model.\n\n        Units are ordered by predicted CATE values and a running measure of the average treatment effect in each cohort\n        is kept as we progress through ranks.\n\n        The uplift coefficient is then the area under the resulting curve, with a value of 0 interpreted\n        as corresponding to a model with randomly assigned CATE coefficients. All calculations are performed on\n        validation dataset results, using the training set as input.\n\n        Parameters\n        ----------\n        Xval: (n_val x k) matrix, optional\n            Validation sample features for CATE model. If not specified, then `fit_cate` method must already have been\n            implemented\n        Xtrain: (n_train x k) matrix, optional\n            Training sample features for CATE model. If specified, then CATE is fitted on training sample and applied\n            to Xval. If specified, then Xtrain, Dtrain, Ytrain must have been specified in `fit_nuisance` method (and\n            vice-versa)\n        percentiles: one-dimensional array, default ``np.linspace(5, 95, 50)``\n            Array of percentiles over which the QINI curve should be constructed. Defaults to 5%-95% in intervals of\n            5%.\n        metric: string, default 'qini'\n            Which type of uplift curve to evaluate. Must be one of ['toc', 'qini']\n        n_bootstrap: integer, default 1000\n            Number of bootstrap samples to run when calculating uniform confidence bands.\n\n        Returns\n        -------\n        UpliftEvaluationResults object showing the fitted results\n        \"\"\"\n        if not hasattr(self, 'dr_val_'):\n            raise Exception(\"Must fit nuisances before evaluating\")\n\n        if (not hasattr(self, 'cate_preds_train_')) or (not hasattr(self, 'cate_preds_val_')):\n            if (Xval is None) or (Xtrain is None):\n                raise Exception('CATE predictions not yet calculated - must provide both Xval, Xtrain')\n            self.get_cate_preds(Xval, Xtrain)\n\n        curve_data_dict = dict()\n        if self.n_treat == 1:\n            coeff, err, curve_df = calc_uplift(\n                self.cate_preds_train_,\n                self.cate_preds_val_,\n                self.dr_val_,\n                percentiles,\n                metric,\n                n_bootstrap\n            )\n            coeffs = [coeff]\n            errs = [err]\n            curve_data_dict[self.treatments[1]] = curve_df\n        else:\n            coeffs = []\n            errs = []\n            for k in range(self.n_treat):\n                coeff, err, curve_df = calc_uplift(\n                    self.cate_preds_train_[:, k],\n                    self.cate_preds_val_[:, k],\n                    self.dr_val_[:, k],\n                    percentiles,\n                    metric,\n                    n_bootstrap\n                )\n                coeffs.append(coeff)\n                errs.append(err)\n                curve_data_dict[self.treatments[k + 1]] = curve_df\n\n        pvals = [st.norm.sf(abs(q / e)) for q, e in zip(coeffs, errs)]\n\n        self.uplift_res = UpliftEvaluationResults(\n            params=coeffs,\n            errs=errs,\n            pvals=pvals,\n            treatments=self.treatments,\n            curve_data_dict=curve_data_dict\n        )\n\n        return self.uplift_res\n\n    def evaluate_all(\n        self,\n        Xval: np.array = None,\n        Xtrain: np.array = None,\n        n_groups: int = 4,\n        n_bootstrap: int = 1000\n    ) -> EvaluationResults:\n        \"\"\"\n        Combine the best linear prediction, calibration, and uplift curve methods into a single summary.\n\n        Parameters\n        ----------\n        Xval: (n_cal x k) matrix, optional\n            Validation sample features for CATE model. If not specified, then `fit_cate` method must already have been\n            implemented\n        Xtrain: (n_train x k) matrix, optional\n            Training sample features for CATE model. If not specified, then `fit_cate` method must already have been\n            implemented\n        n_groups: integer, default 4\n            Number of quantile-based groups used to calculate calibration score.\n        n_bootstrap: integer, default 1000\n            Number of bootstrap samples to run when calculating uniform confidence bands for uplift curves.\n\n        Returns\n        -------\n        EvaluationResults object summarizing the results of all tests\n        \"\"\"\n        if (not hasattr(self, 'cate_preds_train_')) or (not hasattr(self, 'cate_preds_val_')):\n            if (Xval is None) or (Xtrain is None):\n                raise Exception('CATE predictions not yet calculated - must provide both Xval, Xtrain')\n            self.get_cate_preds(Xval, Xtrain)\n\n        blp_res = self.evaluate_blp()\n        cal_res = self.evaluate_cal(n_groups=n_groups)\n        qini_res = self.evaluate_uplift(metric='qini', n_bootstrap=n_bootstrap)\n        toc_res = self.evaluate_uplift(metric='toc', n_bootstrap=n_bootstrap)\n\n        self.res = EvaluationResults(\n            blp_res=blp_res,\n            cal_res=cal_res,\n            qini_res=qini_res,\n            toc_res=toc_res\n        )\n\n        return self.res\n\n\n@deprecated(\"DRtester has been renamed 'DRTester' and the old name has been deprecated and will be removed \"\n            \"in a future release. Please use 'DRTester' instead.\")\nclass DRtester(DRTester):\n    pass\n"
  },
  {
    "path": "econml/validate/results.py",
    "content": "import numpy as np\nimport pandas as pd\n\nfrom typing import List, Dict, Any\n\n\nclass CalibrationEvaluationResults:\n    \"\"\"\n    Results class for calibration test.\n\n    Parameters\n    ----------\n    cal_r_squared: list or numpy array of floats\n        Sequence of calibration R^2 values\n\n    plot_data_dict: dict\n        Dictionary mapping treatment levels to dataframes containing necessary\n        data for plotting calibration test GATE results\n\n    treatments: list or numpy array of floats\n        Sequence of treatment labels\n    \"\"\"\n\n    def __init__(\n        self,\n        cal_r_squared: np.array,\n        plot_data_dict: Dict[Any, pd.DataFrame],\n        treatments: np.array\n    ):\n        self.cal_r_squared = cal_r_squared\n        self.plot_data_dict = plot_data_dict\n        self.treatments = treatments\n\n    def summary(self) -> pd.DataFrame:\n        \"\"\"\n        Construct a dataframe summarizing the results of the calibration test.\n\n        Parameters\n        ----------\n        None\n\n        Returns\n        -------\n        pandas dataframe containing summary of calibration test results\n        \"\"\"\n        res = pd.DataFrame({\n            'treatment': self.treatments[1:],\n            'cal_r_squared': self.cal_r_squared,\n        }).round(3)\n        return res\n\n    def plot_cal(self, tmt: Any):\n        \"\"\"\n        Plot group average treatment effects (GATEs) and predicted GATEs by quantile-based group in validation sample.\n\n        Parameters\n        ----------\n        tmt: Any\n            Name of treatment to plot\n\n        Returns\n        -------\n        matplotlib plot with predicted GATE on x-axis and GATE (and 95% CI) on y-axis\n        \"\"\"\n        if tmt not in self.treatments[1:]:\n            raise ValueError(f'Invalid treatment; must be one of {self.treatments[1:]}')\n\n        df = self.plot_data_dict[tmt].copy()\n        rsq = round(self.cal_r_squared[np.where(self.treatments == tmt)[0][0] - 1], 3)\n        df['95_err'] = 1.96 * df['se_gate']\n        fig = df.plot(\n            kind='scatter',\n            x='g_cate',\n            y='gate',\n            yerr='95_err',\n            xlabel='Group Mean CATE',\n            ylabel='GATE',\n            title=f\"Treatment = {tmt}, Calibration R^2 = {rsq}\"\n        )\n\n        return fig\n\n\nclass BLPEvaluationResults:\n    \"\"\"\n    Results class for BLP test.\n\n    Parameters\n    ----------\n    params: list or numpy array of floats\n       Sequence of estimated coefficient values\n\n    errs: list or numpy array of floats\n       Sequence of estimated coefficient standard errors\n\n    pvals: list or numpy array of floats\n       Sequence of estimated coefficient p-values\n\n    treatments: list or numpy array of floats\n       Sequence of treatment labels\n    \"\"\"\n\n    def __init__(\n        self,\n        params: List[float],\n        errs: List[float],\n        pvals: List[float],\n        treatments: np.array\n    ):\n        self.params = params\n        self.errs = errs\n        self.pvals = pvals\n        self.treatments = treatments\n\n    def summary(self):\n        \"\"\"\n        Construct a dataframe summarizing the results of the BLP test.\n\n        Parameters\n        ----------\n        None\n\n        Returns\n        -------\n        pandas dataframe containing summary of BLP test results\n        \"\"\"\n        res = pd.DataFrame({\n            'treatment': self.treatments[1:],\n            'blp_est': self.params,\n            'blp_se': self.errs,\n            'blp_pval': self.pvals\n        }).round(3)\n        return res\n\n\nclass UpliftEvaluationResults:\n    \"\"\"\n    Results class for uplift curve-based tests.\n\n    Parameters\n    ----------\n    params: list or numpy array of floats\n       Sequence of estimated QINI coefficient values\n\n    errs: list or numpy array of floats\n       Sequence of estimated QINI coefficient standard errors\n\n    pvals: list or numpy array of floats\n       Sequence of estimated QINI coefficient p-values\n\n    treatments: list or numpy array of floats\n       Sequence of treatment labels\n\n    curve_data_dict: dict\n        Dictionary mapping treatment levels to dataframes containing\n        necessary data for plotting uplift curves\n    \"\"\"\n\n    def __init__(\n        self,\n        params: List[float],\n        errs: List[float],\n        pvals: List[float],\n        treatments: np.array,\n        curve_data_dict: Dict[Any, pd.DataFrame]\n    ):\n        self.params = params\n        self.errs = errs\n        self.pvals = pvals\n        self.treatments = treatments\n        self.curves = curve_data_dict\n\n    def summary(self):\n        \"\"\"\n        Construct a dataframe summarizing the results of the QINI test.\n\n        Parameters\n        ----------\n        None\n\n        Returns\n        -------\n        pandas dataframe containing summary of QINI test results\n        \"\"\"\n        res = pd.DataFrame({\n            'treatment': self.treatments[1:],\n            'est': self.params,\n            'se': self.errs,\n            'pval': self.pvals\n        }).round(3)\n        return res\n\n    def plot_uplift(self, tmt: Any, err_type: str = None):\n        \"\"\"\n        Plot uplift curves.\n\n        Parameters\n        ----------\n        tmt: any (sortable)\n            Name of treatment to plot.\n\n        err_type: str\n            Type of error to plot. Accepted values are normal (None), two-sided uniform confidence band ('ucb2'),\n            or 1-sided uniform confidence band ('ucb1').\n\n        Returns\n        -------\n        matplotlib plot with percentage treated on x-axis and uplift metric (and 95% CI) on y-axis\n        \"\"\"\n        if tmt not in self.treatments[1:]:\n            raise ValueError(f'Invalid treatment; must be one of {self.treatments[1:]}')\n\n        df = self.curves[tmt].copy()\n\n        if err_type is None:\n            df['95_err'] = 1.96 * df['err']\n        elif err_type == 'ucb2':\n            df['95_err'] = df['uniform_critical_value'] * df['err']\n        elif err_type == 'ucb1':\n            df['95_err'] = df['uniform_one_side_critical_value'] * df['err']\n        else:\n            raise ValueError(f\"Invalid error type {err_type!r}; must be one of [None, 'ucb2', 'ucb1']\")\n\n        res = self.summary()\n        coeff = round(res.loc[res['treatment'] == tmt]['est'].values[0], 3)\n        err = round(res.loc[res['treatment'] == tmt]['se'].values[0], 3)\n\n        if err_type == 'ucb1':\n            fig = df.plot(\n                kind='scatter',\n                x='Percentage treated',\n                y='value',\n                yerr=[[df['95_err'], np.zeros(len(df))]],\n                ylabel='Gain over Random',\n                title=f\"Treatment = {tmt}, Integral = {coeff} +/- {err}\"\n            )\n        else:\n            fig = df.plot(\n                kind='scatter',\n                x='Percentage treated',\n                y='value',\n                yerr='95_err',\n                ylabel='Gain over Random',\n                title=f\"Treatment = {tmt}, Integral = {coeff} +/- {err}\"\n            )\n\n        return fig\n\n\nclass EvaluationResults:\n    \"\"\"\n    Results class for combination of all tests.\n\n    Parameters\n    ----------\n    cal_res: CalibrationEvaluationResults object\n       Results object for calibration test\n\n    blp_res: BLPEvaluationResults object\n       Results object for BLP test\n\n    qini_res: UpliftEvaluationResults object\n       Results object for QINI test\n\n    toc_res: UpliftEvaluationResults object\n       Results object for TOC test\n    \"\"\"\n\n    def __init__(\n        self,\n        cal_res: CalibrationEvaluationResults,\n        blp_res: BLPEvaluationResults,\n        qini_res: UpliftEvaluationResults,\n        toc_res: UpliftEvaluationResults\n    ):\n        self.cal = cal_res\n        self.blp = blp_res\n        self.qini = qini_res\n        self.toc = toc_res\n\n    def summary(self):\n        \"\"\"\n        Construct a dataframe summarizing the results of all 3 tests.\n\n        Parameters\n        ----------\n        None\n\n        Returns\n        -------\n        pandas dataframe containing summary of all test results\n        \"\"\"\n        res = self.blp.summary().merge(\n            self.qini.summary().rename({'est': 'qini_est', 'se': 'qini_se', 'pval': 'qini_pval'}, axis=1),\n            on='treatment'\n        ).merge(\n            self.toc.summary().rename({'est': 'autoc_est', 'se': 'autoc_se', 'pval': 'autoc_pval'}, axis=1),\n            on='treatment'\n        ).merge(\n            self.cal.summary(),\n            on='treatment'\n        )\n        return res\n\n    def plot_cal(self, tmt: int):\n        \"\"\"\n        Plot group average treatment effects (GATEs) and predicted GATEs by quantile-based group in validation sample.\n\n        Parameters\n        ----------\n        tmt: integer\n            Treatment level to plot\n\n        Returns\n        -------\n        matplotlib plot with predicted GATE on x-axis and GATE (and 95% CI) on y-axis\n        \"\"\"\n        return self.cal.plot_cal(tmt)\n\n    def plot_qini(self, tmt: int, err_type: str = None):\n        \"\"\"\n        Plot QINI curves.\n\n        Parameters\n        ----------\n        tmt: integer\n            Treatment level to plot\n\n        err_type: str\n            Type of error to plot. Accepted values are normal (None), two-sided uniform confidence band ('ucb2'),\n            or 1-sided uniform confidence band ('ucb1').\n\n        Returns\n        -------\n        matplotlib plot with percentage treated on x-axis and QINI value (and 95% CI) on y-axis\n        \"\"\"\n        return self.qini.plot_uplift(tmt, err_type)\n\n    def plot_toc(self, tmt: int, err_type: str = None):\n        \"\"\"\n        Plot TOC curves.\n\n        Parameters\n        ----------\n        tmt: integer\n            Treatment level to plot\n\n        err_type: str\n            Type of error to plot. Accepted values are normal (None), two-sided uniform confidence band ('ucb2'),\n            or 1-sided uniform confidence band ('ucb1').\n\n        Returns\n        -------\n        matplotlib plot with percentage treated on x-axis and TOC value (and 95% CI) on y-axis\n        \"\"\"\n        return self.toc.plot_uplift(tmt, err_type)\n"
  },
  {
    "path": "econml/validate/sensitivity_analysis.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\nimport numpy as np\nfrom econml.utilities import _safe_norm_ppf, Summary\nfrom collections import namedtuple\n\nSensitivityParams = namedtuple('SensitivityParams', ['theta', 'sigma', 'nu', 'cov'])\n\ndef sensitivity_summary(theta, sigma, nu, cov, null_hypothesis=0, alpha=0.05, c_y=0.05, c_t=0.05, rho=1., decimals=3):\n    theta_lb, theta_ub = sensitivity_interval(\n        theta, sigma, nu, cov, alpha, c_y, c_t, rho, interval_type='theta')\n\n    ci_lb, ci_ub = sensitivity_interval(\n        theta, sigma, nu, cov, alpha, c_y, c_t, rho, interval_type='ci')\n\n    rv_theta = RV(theta, sigma, nu, cov, alpha, null_hypothesis=null_hypothesis, interval_type='theta')\n    rv_ci = RV(theta, sigma, nu, cov, alpha, null_hypothesis=null_hypothesis, interval_type='ci')\n\n\n    smry = Summary()\n    title = f'Sensitivity Analysis Summary for c_y={c_y}, c_t={c_t}, rho={rho}'\n    res = np.array([[ci_lb, theta_lb, theta, theta_ub, ci_ub]])\n    res = np.round(res, decimals)\n    headers = ['CI Lower', 'Theta Lower', 'Theta', 'Theta Upper', 'CI Upper']\n\n    smry.add_table(res, headers, [], title=title)\n\n    res_rv = [[rv_theta, rv_ci]]\n    res_rv = np.round(res_rv, decimals)\n    headers_rv = ['Robustness Value (Theta)', 'Robustness Value (CI)']\n    title_rv = f'Robustness Values for null_hypothesis={null_hypothesis}'\n    smry.add_table(res_rv, headers_rv, [], title=title_rv)\n\n    return smry\n\n\ndef sensitivity_interval(theta, sigma, nu, cov, alpha, c_y, c_t, rho, interval_type='ci'):\n    \"\"\"Calculate the sensitivity interval.\"\"\"\n    if interval_type not in ['theta', 'ci']:\n        raise ValueError(\n            f\"interval_type for sensitivity_interval must be 'theta' or 'ci'. Received {interval_type}\")\n\n    if not (c_y >= 0 and c_y < 1 and c_t >= 0 and c_t < 1):\n        raise ValueError(\n            \"Invalid input: c_y and c_t must be between 0 and 1.\")\n\n    if rho < -1 or rho > 1:\n        raise ValueError(\n            \"Invalid input: rho must be between -1 and 1.\")\n\n    if sigma < 0 or nu < 0:\n        raise ValueError(\n            \"Invalid input: sigma and nu must be non-negative. \"\n            \"Negative values may indicate issues with the underlying nuisance model estimations.\")\n\n    C = np.abs(rho) * np.sqrt(c_y) * np.sqrt(c_t/(1-c_t))/2\n    ests = np.array([theta, sigma, nu])\n\n    coefs_p = np.array([1, C*np.sqrt(nu/sigma), C*np.sqrt(sigma/nu)])\n    coefs_n = np.array([1, -C*np.sqrt(nu/sigma), -C*np.sqrt(sigma/nu)])\n\n    lb = ests @ coefs_n\n    ub = ests @ coefs_p\n\n    if interval_type == 'ci':\n        # One dimensional normal distribution:\n        sigma_p = coefs_p @ cov @ coefs_p\n        sigma_n = coefs_n @ cov @ coefs_n\n\n        lb = _safe_norm_ppf(alpha / 2, loc=lb, scale=np.sqrt(sigma_n))\n        ub = _safe_norm_ppf(1 - alpha / 2, loc=ub, scale=np.sqrt(sigma_p))\n\n    return (lb, ub)\n\n\ndef RV(theta, sigma, nu, cov, alpha, null_hypothesis=0, interval_type='ci'):\n    \"\"\"\n    Calculate the robustness value.\n\n    The robustness value is the degree of confounding of *both* the\n    treatment and the outcome that still produces an interval\n    that excludes zero.\n\n    When null_hypothesis is default of zero, we're looking for a value of r\n    such that the sensitivity bounds just touch zero.\n\n    Returns\n    -------\n    float\n        The robustness value - the level of confounding (between 0 and 1) that would make\n        the ATE reach the null_hypothesis. A higher value indicates\n        a more robust estimate.\n        Returns 0 if the original interval already includes the null_hypothesis.\n\n    Notes\n    -----\n    This function uses a binary search approach to find the value of r where the\n    sensitivity interval just touches zero.\n    \"\"\"\n    if interval_type not in ['theta', 'ci']:\n        raise ValueError(\n            f\"interval_type for sensitivity_interval must be 'theta' or 'ci'. Received {interval_type}\")\n\n    r = 0\n    r_up = 1\n    r_down = 0\n    lb, ub = sensitivity_interval(theta, sigma, nu, cov,\n                                  alpha, 0, 0, 1, interval_type=interval_type)\n    if lb < null_hypothesis and ub > null_hypothesis:\n        return 0\n\n    else:\n        if lb > null_hypothesis:\n            target_ind = 0\n            mult = 1\n            d = lb - null_hypothesis\n        else:\n            target_ind = 1\n            mult = -1\n            d = ub - null_hypothesis\n\n    while abs(d) > 1e-6 and r_up - r_down > 1e-10:\n        interval = sensitivity_interval(\n            theta, sigma, nu, cov, alpha, r, r, 1, interval_type=interval_type)\n        bound = interval[target_ind]\n        d = mult * (bound - null_hypothesis)\n        if d > 0:\n            r_down = r\n        else:\n            r_up = r\n\n        r = (r_down + r_up) / 2\n\n    return r\n\n\ndef dml_sensitivity_values(t_res, y_res):\n\n    t_res = t_res.reshape(-1, 1)\n    y_res = y_res.reshape(-1, 1)\n\n    theta = np.mean(y_res*t_res) / np.mean(t_res**2)  # Estimate the treatment effect\n    # Estimate the variance of the outcome residuals (after subtracting the treatment effect)\n    sigma2 = np.mean((y_res - theta*t_res)**2)\n    nu2 = 1/np.mean(t_res**2)  # Estimate the variance of the treatment\n\n    ls = np.concatenate([t_res**2, np.ones_like(t_res), t_res**2], axis=1)\n\n    G = np.diag(np.mean(ls, axis=0))  # G matrix, diagonal with means of ls\n    G_inv = np.linalg.inv(G)  # Inverse of G matrix, could just take reciprocals since it's diagonal\n\n    residuals = np.concatenate([y_res*t_res-theta*t_res*t_res,\n                                (y_res-theta*t_res) ** 2-sigma2, t_res**2*nu2-1], axis=1)  # Combine residuals\n    # Estimate the covariance matrix of the residuals\n    Ω = residuals.T @ residuals / len(residuals)\n    # Estimate the variance of the parameters\n    cov = G_inv @ Ω @ G_inv / len(residuals)\n\n    return SensitivityParams(\n        theta=theta,\n        sigma=sigma2,\n        nu=nu2,\n        cov=cov\n    )\n\n\ndef dr_sensitivity_values(Y, T, y_pred, t_pred):\n    n_treatments = T.shape[1]\n\n    # squeeze extra dimension if exists\n    y_pred = y_pred.squeeze(1) if np.ndim(y_pred) == 3 else y_pred\n\n    T_complete = np.hstack(((np.all(T == 0, axis=1) * 1).reshape(-1, 1), T))\n    Y = Y.squeeze()\n    alpha = np.zeros(shape=(T.shape[0], n_treatments))\n    T = np.argmax(T_complete, axis=1)  # Convert dummy encoding to a factor vector\n\n    # undo doubly robust correction for y pred\n    # i.e. reconstruct original y_pred\n    y_pred = y_pred.copy() # perform operations on copy to avoid modifying original\n    for t in np.arange(T_complete.shape[1]):\n        npp = (T_complete[:, t] == 1) / t_pred[:, t]\n        y_pred[:, t] = (y_pred[:, t] - npp * Y) / (1 - npp)\n\n    # one value of theta, sigma, nu for each non-control treatment\n    theta = np.zeros(n_treatments)\n    sigma = np.zeros(n_treatments)\n    nu = np.zeros(n_treatments)\n\n    # one theta, sigma, nu covariance matrix for each non-control treatment\n    cov = np.zeros((n_treatments, 3, 3))\n\n    # ATE, sigma^2, and nu^2\n    for i in range(n_treatments):\n        theta_score = y_pred[:, i+1] - y_pred[:, 0] + (Y-y_pred[:, i+1]) * (\n            T_complete[:, i+1] == 1)/t_pred[:, i+1] - (Y-y_pred[:, 0]) * ((T_complete[:,0] == 1)/t_pred[:, 0])\n        sigma_score = (Y-np.choose(T, y_pred.T))**2\n        # exclude rows with other treatments\n        sigma_keep = np.isin(T, [0, i+1])\n        sigma_score = np.where(sigma_keep, sigma_score, 0)\n        alpha[:,i] = (T_complete[:,i+1] == 1)/t_pred[:,i+1] - (T_complete[:,0] == 1)/t_pred[:,0]\n        nu_score = 2*(1/t_pred[:,i+1]+1/t_pred[:,0])-alpha[:,i]**2\n        theta[i] = np.mean(theta_score)\n        sigma[i] = np.mean(sigma_score)\n        nu[i] = np.mean(nu_score)\n        scores = np.stack([theta_score-theta[i], sigma_score-sigma[i], nu_score-nu[i]], axis=1)\n        cov[i,:,:] = (scores.T @ scores / len(scores)) / len(scores)\n\n    return SensitivityParams(\n        theta=theta,\n        sigma=sigma,\n        nu=nu,\n        cov=cov\n    )\n"
  },
  {
    "path": "econml/validate/utils.py",
    "content": "from typing import Tuple\n\nimport numpy as np\nimport pandas as pd\n\n\ndef calculate_dr_outcomes(\n    D: np.array,\n    y: np.array,\n    reg_preds: np.array,\n    prop_preds: np.array\n) -> np.array:\n    \"\"\"\n    Calculate doubly-robust (DR) outcomes using predictions from nuisance models.\n\n    Parameters\n    ----------\n    D: vector of length n\n        Treatment assignments. Should have integer values with the lowest-value corresponding to the\n        control treatment. It is recommended to have the control take value 0 and all other treatments be integers\n        starting at 1\n    y: vector of length n\n        Outcomes\n    reg_preds: (n x n_treat) matrix\n        Outcome predictions for each potential treatment\n    prop_preds: (n x n_treat) matrix\n        Propensity score predictions for each treatment\n\n    Returns\n    -------\n    Doubly robust outcome values\n    \"\"\"\n    # treat each treatment as a separate regression\n    # here, prop_preds should be a matrix\n    # with rows corresponding to units and columns corresponding to treatment statuses\n    dr_vec = []\n    d0_mask = np.where(D == 0, 1, 0)\n    y_dr_0 = reg_preds[:, 0] + (d0_mask / np.clip(prop_preds[:, 0], .01, np.inf)) * (y - reg_preds[:, 0])\n    for k in np.sort(np.unique(D)):  # pick a treatment status\n        if k > 0:  # make sure it is not control\n            dk_mask = np.where(D == k, 1, 0)\n            y_dr_k = reg_preds[:, k] + (dk_mask / np.clip(prop_preds[:, k], .01, np.inf)) * (y - reg_preds[:, k])\n            dr_k = y_dr_k - y_dr_0  # this is an n x 1 vector\n            dr_vec.append(dr_k)\n    dr = np.column_stack(dr_vec)  # this is an n x n_treatment matrix\n\n    return dr\n\n\ndef calc_uplift(\n    cate_preds_train: np.array,\n    cate_preds_val: np.array,\n    dr_val: np.array,\n    percentiles: np.array,\n    metric: str,\n    n_bootstrap: int = 1000\n) -> Tuple[float, float, pd.DataFrame]:\n    \"\"\"\n    Calculate uplift curve points, integral, and errors on both points and integral.\n\n    Also calculates appropriate critical value multipliers for confidence intervals (via multiplier bootstrap).\n    See documentation for \"drtester.evaluate_uplift\" method for more details.\n\n    Parameters\n    ----------\n    cate_preds_train: (n_train x n_treatment) matrix\n        Predicted CATE values for the training sample.\n    cate_preds_val: (n_val x n_treatment) matrix\n        Predicted CATE values for the validation sample.\n    dr_val: (n_val x n_treatment) matrix\n        Doubly robust outcome values for each treatment status in validation sample. Each value is relative to\n        control, e.g. for treatment k the value is Y(k) - Y(0), where 0 signifies no treatment.\n    percentiles: one-dimensional array\n        Array of percentiles over which the QINI curve should be constructed. Defaults to 5%-95% in intervals of 5%.\n    metric: string\n        String indicating whether to calculate TOC or QINI; should be one of ['toc', 'qini']\n    n_bootstrap: integer, default 1000\n        Number of bootstrap samples to run when calculating uniform confidence bands.\n\n    Returns\n    -------\n    Uplift coefficient and associated standard error, as well as associated curve.\n    \"\"\"\n    qs = np.percentile(cate_preds_train, percentiles)\n    toc, toc_std, group_prob = np.zeros(len(qs)), np.zeros(len(qs)), np.zeros(len(qs))\n    toc_psi = np.zeros((len(qs), dr_val.shape[0]))\n    n = len(dr_val)\n    ate = np.mean(dr_val)\n    for it in range(len(qs)):\n        inds = (qs[it] <= cate_preds_val)  # group with larger CATE prediction than the q-th quantile\n        group_prob = np.sum(inds) / n  # fraction of population in this group\n        if metric == 'qini':\n            toc[it] = group_prob * (\n                np.mean(dr_val[inds]) - ate)  # tau(q) = q * E[Y(1) - Y(0) | tau(X) >= q[it]] - E[Y(1) - Y(0)]\n            toc_psi[it, :] = np.squeeze(\n                (dr_val - ate) * (inds - group_prob) - toc[it])  # influence function for the tau(q)\n        elif metric == 'toc':\n            toc[it] = np.mean(dr_val[inds]) - ate  # tau(q) := E[Y(1) - Y(0) | tau(X) >= q[it]] - E[Y(1) - Y(0)]\n            toc_psi[it, :] = np.squeeze((dr_val - ate) * (inds / group_prob - 1) - toc[it])\n        else:\n            raise ValueError(f\"Unsupported metric {metric!r} - must be one of ['toc', 'qini']\")\n\n        toc_std[it] = np.sqrt(np.mean(toc_psi[it] ** 2) / n)  # standard error of tau(q)\n\n    w = np.random.normal(0, 1, size=(n, n_bootstrap))\n    mboot = (toc_psi / toc_std.reshape(-1, 1)) @ w / n\n\n    max_mboot = np.max(np.abs(mboot), axis=0)\n    uniform_critical_value = np.percentile(max_mboot, 95)\n\n    min_mboot = np.min(mboot, axis=0)\n    uniform_one_side_critical_value = np.abs(np.percentile(min_mboot, 5))\n\n    coeff_psi = np.sum(toc_psi[:-1] * np.diff(percentiles).reshape(-1, 1) / 100, 0)\n    coeff = np.sum(toc[:-1] * np.diff(percentiles) / 100)\n    coeff_stderr = np.sqrt(np.mean(coeff_psi ** 2) / n)\n\n    curve_df = pd.DataFrame({\n        'Percentage treated': 100 - percentiles,\n        'value': toc,\n        'err': toc_std,\n        'uniform_critical_value': uniform_critical_value,\n        'uniform_one_side_critical_value': uniform_one_side_critical_value\n    })\n\n    return coeff, coeff_stderr, curve_df\n"
  },
  {
    "path": "lkg-notebook.txt",
    "content": "Cython==0.29.37\nJinja2==3.1.6\nMarkupSafe==3.0.2\nPyYAML==6.0.2\nPygments==2.19.2\nSend2Trash==1.8.3\nanyio==4.10.0\nargon2-cffi==25.1.0\nargon2-cffi-bindings==25.1.0\narrow==1.3.0\nasttokens==3.0.0\nasync-lru==2.0.5\nattrs==25.3.0\nbabel==2.17.0\nbeautifulsoup4==4.13.5\nbleach==6.2.0\ncausal-learn==0.1.4.3\ncertifi==2025.8.3\ncffi==1.17.1\ncharset-normalizer==3.4.3\nclarabel==0.11.1\nclick==8.2.1\ncloudpickle==3.1.1\ncomm==0.2.3\ncontourpy==1.3.3\ncvxpy==1.7.2\ncycler==0.12.1\ndebugpy==1.8.16\ndecorator==5.2.1\ndefusedxml==0.7.1\ndowhy==0.12\nexecuting==2.2.1\nfastjsonschema==2.21.2\nfilelock==3.19.1\nfonttools==4.59.2\nfqdn==1.5.1\ngraphviz==0.21\nh11==0.16.0\nhttpcore==1.0.9\nhttpx==0.28.1\nidna==3.10\nipykernel==6.30.1\nipython==9.5.0\nipython_pygments_lexers==1.1.1\nipywidgets==8.1.7\nisoduration==20.11.0\njedi==0.19.2\njoblib==1.5.2\njson5==0.12.1\njsonpointer==3.0.0\njsonschema==4.25.1\njsonschema-specifications==2025.9.1\njupyter==1.1.1\njupyter-console==6.6.3\njupyter-events==0.12.0\njupyter-lsp==2.3.0\njupyter_client==8.6.3\njupyter_core==5.8.1\njupyter_server==2.17.0\njupyter_server_terminals==0.5.3\njupyterlab==4.4.7\njupyterlab_pygments==0.3.0\njupyterlab_server==2.27.3\njupyterlab_widgets==3.0.15\nkiwisolver==1.4.9\nlark==1.2.2\nlightgbm==4.6.0\nllvmlite==0.44.0\nmatplotlib==3.10.6\nmatplotlib-inline==0.1.7\nmistune==3.1.4\nmomentchi2==0.1.8\nmpmath==1.3.0\nmsgpack==1.1.1\nnbclient==0.10.2\nnbconvert==7.16.6\nnbformat==5.10.4\nnest-asyncio==1.6.0\nnetworkx==3.4.2\nnotebook==7.4.5\nnotebook_shim==0.2.4\nnumba==0.61.2\nnumpy==2.2.6\nnvidia-nccl-cu12==2.28.3\nosqp==1.0.4\npackaging==25.0\npandas==2.3.2\npandocfilters==1.5.1\nparso==0.8.5\npatsy==1.0.1\npexpect==4.9.0\npillow==11.3.0\nplatformdirs==4.4.0\nprometheus_client==0.22.1\nprompt_toolkit==3.0.52\nprotobuf==6.32.0\npsutil==7.0.0\nptyprocess==0.7.0\npure_eval==0.2.3\npycparser==2.22\npydot==4.0.1\npyparsing==3.2.3\npython-dateutil==2.9.0.post0\npython-json-logger==3.3.0\npytz==2025.2\npyzmq==27.0.2\nray==2.49.1\nreferencing==0.36.2\nrequests==2.32.5\nrfc3339-validator==0.1.4\nrfc3986-validator==0.1.1\nrfc3987-syntax==1.1.0\nrpds-py==0.27.1\nscikit-learn==1.6.1\nscipy==1.16.1\nscs==3.2.8\nseaborn==0.13.2\nsetuptools==80.9.0\nshap==0.48.0\nsix==1.17.0\nslicer==0.0.8\nsniffio==1.3.1\nsoupsieve==2.8\nsparse==0.17.0\nstack-data==0.6.3\nstatsmodels==0.14.5\nsympy==1.14.0\nterminado==0.18.1\nthreadpoolctl==3.6.0\ntinycss2==1.4.0\ntornado==6.5.2\ntqdm==4.67.1\ntraitlets==5.14.3\ntypes-python-dateutil==2.9.0.20250822\ntyping_extensions==4.15.0\ntzdata==2025.2\nuri-template==1.3.0\nurllib3==2.5.0\nwcwidth==0.2.13\nwebcolors==24.11.1\nwebencodings==0.5.1\nwebsocket-client==1.8.0\nwidgetsnbextension==4.0.14\nxgboost==3.0.5"
  },
  {
    "path": "lkg.txt",
    "content": "Cython==0.29.37\nJinja2==3.1.6\nMarkupSafe==3.0.2\nPyYAML==6.0.2; python_version<'3.13'\nargcomplete==3.6.2; platform_system=='Windows' and python_version<'3.10'\nattrs==25.3.0; python_version<'3.13'\ncausal-learn==0.1.4.3\ncertifi==2025.8.3; (platform_system=='Darwin') or (platform_system=='Linux' and python_version<'3.13') or (platform_system=='Windows' and python_version<'3.13')\ncffi==1.17.1\ncharset-normalizer==3.4.3; python_version<'3.13'\nclarabel==0.11.1\nclick==8.1.8; python_version<'3.10'\nclick==8.2.1; (platform_system=='Darwin' and (python_version=='3.10' or python_version=='3.11' or python_version=='3.12')) or (platform_system=='Linux' and (python_version=='3.10' or python_version=='3.11' or python_version=='3.12')) or (platform_system=='Windows' and (python_version=='3.10' or python_version=='3.11' or python_version=='3.12'))\ncloudpickle==3.1.1\ncolorama==0.4.6; platform_system=='Windows'\ncontourpy==1.3.0; python_version<'3.10'\ncontourpy==1.3.2; python_version=='3.10'\ncontourpy==1.3.3; python_version>='3.11'\ncvxpy==1.7.2\ncycler==0.12.1\ndowhy==0.12\nfilelock==3.19.1; python_version<'3.13'\nfonttools==4.59.2\ngraphviz==0.21\nidna==3.10; python_version<'3.13'\nimportlib_resources==6.5.2; python_version<'3.10'\njoblib==1.5.2\njsonschema==4.25.1; python_version<'3.13'\njsonschema-specifications==2025.9.1; python_version<'3.13'\nkiwisolver==1.4.7; python_version<'3.10'\nkiwisolver==1.4.9; python_version>='3.10'\nlightgbm==4.6.0\nllvmlite==0.43.0; python_version<'3.10'\nllvmlite==0.44.0; python_version>='3.10'\nmatplotlib==3.9.4; python_version<'3.10'\nmatplotlib==3.10.6; python_version>='3.10'\nmomentchi2==0.1.8\nmpmath==1.3.0\nmsgpack==1.1.1; python_version<'3.13'\nnetworkx==3.2.1; python_version<'3.10'\nnetworkx==3.4.2; python_version>='3.10'\nnumba==0.60.0; python_version<'3.10'\nnumba==0.61.2; python_version>='3.10'\nnumpy==2.0.2; python_version<'3.10'\nnumpy==2.2.6; python_version>='3.10'\nosqp==1.0.4\npackaging==25.0\npandas==2.3.2\npatsy==1.0.1\npillow==11.3.0\npipx==1.7.1; platform_system=='Windows' and python_version<'3.10'\nplatformdirs==4.4.0; platform_system=='Windows' and python_version<'3.10'\nprotobuf==6.32.0; python_version<'3.13'\npycparser==2.22\npydot==4.0.1\npyparsing==3.2.3\npython-dateutil==2.9.0.post0\npytz==2025.2\nray==2.49.1; python_version<'3.13'\nreferencing==0.36.2; python_version<'3.13'\nrequests==2.32.5; python_version<'3.13'\nrpds-py==0.27.1; python_version<'3.13'\nscikit-learn==1.6.1\nscipy==1.13.1; python_version<'3.10'\nscipy==1.15.3; python_version=='3.10'\nscipy==1.16.1; python_version>='3.11'\nscs==3.2.8\nsetuptools==80.9.0; python_version>='3.12'\nshap==0.48.0\nsix==1.17.0\nslicer==0.0.8\nsparse==0.15.5; python_version<'3.10'\nsparse==0.17.0; python_version>='3.10'\nstatsmodels==0.14.5\nsympy==1.14.0\nthreadpoolctl==3.6.0\ntomli==2.2.1; platform_system=='Windows' and python_version<'3.10'\ntqdm==4.67.1\ntyping_extensions==4.15.0\ntzdata==2025.2\nurllib3==2.5.0; python_version<'3.13'\nuserpath==1.9.2; platform_system=='Windows' and python_version<'3.10'\nzipp==3.23.0; python_version<'3.10'"
  },
  {
    "path": "monte_carlo_tests/monte_carlo_honestforest.py",
    "content": "import numpy as np\r\nimport matplotlib.pyplot as plt\r\nimport os\r\nimport time\r\nimport argparse\r\nimport warnings\r\nimport joblib\r\nfrom econml.grf import RegressionForest\r\n\r\n\r\ndef monte_carlo():\r\n    n = 5000\r\n    d = 5\r\n    x_grid = np.linspace(-1, 1, 1000)\r\n    X_test = np.hstack([x_grid.reshape(-1, 1), np.random.normal(size=(1000, d - 1))])\r\n    coverage = []\r\n    exp_dict = {'point': [], 'low': [], 'up': []}\r\n    for it in range(100):\r\n        print(it)\r\n        X = np.random.normal(0, 1, size=(n, d))\r\n        y = X[:, 0] + np.random.normal(size=(n,))\r\n        est = RegressionForest(n_estimators=1000, verbose=1)\r\n        est.fit(X, y)\r\n        point = est.predict(X_test)\r\n        low, up = est.predict_interval(X_test, alpha=0.05)\r\n        coverage.append((low <= x_grid) & (x_grid <= up))\r\n        exp_dict['point'].append(point)\r\n        exp_dict['low'].append(low)\r\n        exp_dict['up'].append(up)\r\n\r\n    if not os.path.exists('figures'):\r\n        os.makedirs('figures')\r\n    if not os.path.exists(os.path.join(\"figures\", 'honestforest')):\r\n        os.makedirs(os.path.join(\"figures\", 'honestforest'))\r\n\r\n    plt.figure()\r\n    plt.plot(x_grid, np.mean(coverage, axis=0))\r\n    plt.savefig('figures/honestforest/coverage.png')\r\n\r\n    plt.figure()\r\n    plt.plot(x_grid, np.sqrt(np.mean((np.array(exp_dict['point']) - x_grid)**2, axis=0)), label='RMSE')\r\n    plt.savefig('figures/honestforest/rmse.png')\r\n\r\n    plt.figure()\r\n    plt.plot(x_grid, np.mean(np.array(exp_dict['up']) - np.array(exp_dict['low']), axis=0), label='length')\r\n    plt.savefig('figures/honestforest/length.png')\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    parser = argparse.ArgumentParser(description='Monte Carlo Coverage Tests for the RegressionForest')\r\n    monte_carlo()\r\n"
  },
  {
    "path": "monte_carlo_tests/monte_carlo_statsmodels.py",
    "content": "import numpy as np\r\nfrom econml.dml import LinearDML\r\nfrom sklearn.linear_model import LinearRegression, MultiTaskLassoCV, MultiTaskLasso, Lasso\r\nfrom econml.inference import StatsModelsInference\r\nfrom econml.tests.test_statsmodels import _summarize\r\nfrom econml.sklearn_extensions.linear_model import WeightedLasso, WeightedMultiTaskLassoCV, WeightedMultiTaskLasso\r\nfrom sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\r\nfrom statsmodels.tools.tools import add_constant\r\nfrom econml.utilities import cross_product\r\nimport matplotlib.pyplot as plt\r\nimport os\r\nimport time\r\nimport argparse\r\nimport warnings\r\nimport joblib\r\nfrom sklearn.model_selection import GridSearchCV\r\nfrom sklearn.multioutput import MultiOutputRegressor\r\n\r\n\r\nclass GridSearchCVList:\r\n\r\n    def __init__(self, estimator_list, param_grid_list, scoring=None,\r\n                 n_jobs=None, iid='warn', refit=True, cv='warn', verbose=0, pre_dispatch='2*n_jobs',\r\n                 error_score='raise-deprecating', return_train_score=False):\r\n        self._gcv_list = [GridSearchCV(estimator, param_grid, scoring=scoring,\r\n                                       n_jobs=n_jobs, iid=iid, refit=refit, cv=cv, verbose=verbose,\r\n                                       pre_dispatch=pre_dispatch, error_score=error_score,\r\n                                       return_train_score=return_train_score)\r\n                          for estimator, param_grid in zip(estimator_list, param_grid_list)]\r\n        return\r\n\r\n    def fit(self, X, y, **fit_params):\r\n        self.best_ind_ = np.argmax([gcv.fit(X, y, **fit_params).best_score_ for gcv in self._gcv_list])\r\n        self.best_estimator_ = self._gcv_list[self.best_ind_].best_estimator_\r\n        self.best_score_ = self._gcv_list[self.best_ind_].best_score_\r\n        self.best_params_ = self._gcv_list[self.best_ind_].best_params_\r\n        return self\r\n\r\n    def predict(self, X):\r\n        return self.best_estimator_.predict(X)\r\n\r\n\r\ndef _coverage_profile(est, X_test, alpha, true_coef, true_effect):\r\n    cov = {}\r\n    d_t = true_coef.shape[1] // (X_test.shape[1] + 1)\r\n    d_y = true_coef.shape[0]\r\n    coef_interval = est.coef__interval(alpha=alpha)\r\n    intercept_interval = est.intercept__interval(alpha=alpha)\r\n    true_coef = true_coef.flatten()\r\n    est_coef = np.concatenate((est.intercept_[..., np.newaxis], est.coef_), axis=-1).flatten()\r\n    est_coef_lb = np.concatenate((intercept_interval[0][..., np.newaxis], coef_interval[0]), axis=-1).flatten()\r\n    est_coef_ub = np.concatenate((intercept_interval[1][..., np.newaxis], coef_interval[1]), axis=-1).flatten()\r\n    cov['coef'] = est_coef\r\n    cov['coef_lower'] = est_coef_lb\r\n    cov['coef_upper'] = est_coef_ub\r\n    cov['true_coef'] = true_coef\r\n    cov['coef_stderr'] = est.model_final.coef_stderr_.flatten()\r\n    cov['coef_sqerror'] = (est_coef - true_coef)**2\r\n    cov['coef_cov'] = ((true_coef >= est_coef_lb) & (true_coef <= est_coef_ub))\r\n    cov['coef_length'] = est_coef_ub - est_coef_lb\r\n    effect_interval = est.effect_interval(X_test, T0=np.zeros(\r\n        (X_test.shape[0], d_t)), T1=np.ones((X_test.shape[0], d_t)), alpha=alpha)\r\n    true_eff = true_effect(X_test, np.ones((X_test.shape[0], d_t))).reshape(effect_interval[0].shape)\r\n    est_effect = est.effect(X_test, T0=np.zeros((X_test.shape[0], d_t)), T1=np.ones((X_test.shape[0], d_t)))\r\n    cov['x_test'] = np.repeat(X_test, d_y, axis=0)\r\n    cov['effect'] = est_effect.flatten()\r\n    cov['effect_lower'] = effect_interval[0].flatten()\r\n    cov['effect_upper'] = effect_interval[1].flatten()\r\n    cov['true_effect'] = true_eff.flatten()\r\n    cov['effect_sqerror'] = ((est_effect - true_eff)**2).flatten()\r\n    cov['effect_stderr'] = est.model_final.prediction_stderr(\r\n        cross_product(add_constant(X_test), np.ones((X_test.shape[0], d_t)))).flatten()\r\n    cov['effect_cov'] = ((true_eff >= effect_interval[0]) & (true_eff <= effect_interval[1])).flatten()\r\n    cov['effect_length'] = (effect_interval[1] - effect_interval[0]).flatten()\r\n    return cov\r\n\r\n\r\ndef _append_coverage(key, coverage, est, X_test, alpha, true_coef, true_effect):\r\n    cov = _coverage_profile(est, X_test, alpha, true_coef, true_effect)\r\n    if key not in coverage:\r\n        coverage[key] = {}\r\n        for cov_key, value in cov.items():\r\n            coverage[key][cov_key] = [value]\r\n    else:\r\n        for cov_key, value in cov.items():\r\n            coverage[key][cov_key].append(value)\r\n\r\n\r\ndef _agg_coverage(coverage, qs=np.array([.005, .025, .1, .9, .975, .995])):\r\n    mean_coverage_est = {}\r\n    std_coverage_est = {}\r\n    q_coverage_est = {}\r\n    for key, cov_dict in coverage.items():\r\n        mean_coverage_est[key] = {}\r\n        std_coverage_est[key] = {}\r\n        q_coverage_est[key] = {}\r\n        for cov_key, cov_list in cov_dict.items():\r\n            mean_coverage_est[key][cov_key] = np.mean(cov_list, axis=0)\r\n            std_coverage_est[key][cov_key] = np.std(cov_list, axis=0)\r\n            q_coverage_est[key][cov_key] = np.percentile(cov_list, qs * 100, axis=0)\r\n    return mean_coverage_est, std_coverage_est, q_coverage_est\r\n\r\n\r\ndef plot_coverage(coverage, cov_key, n, n_exp, hetero_coef_list, d_list, d_x_list, p_list, t_list,\r\n                  cov_type_list, alpha_list, prefix=\"\", folder=\"\", print_matrix=False):\r\n    if not os.path.exists('figures'):\r\n        os.makedirs('figures')\r\n    if not os.path.exists(os.path.join(\"figures\", folder)):\r\n        os.makedirs(os.path.join(\"figures\", folder))\r\n    joblib.dump(coverage, os.path.join(\"figures\", folder, \"{}data.jbl\".format(prefix)))\r\n    for hetero_coef in hetero_coef_list:\r\n        for d in d_list:\r\n            for d_x in d_x_list:\r\n                if d_x > d:\r\n                    continue\r\n                for p in p_list:\r\n                    for d_t in t_list:\r\n                        for cov_type in cov_type_list:\r\n                            for alpha in alpha_list:\r\n                                key = \"n_{}_n_exp_{}_hetero_{}_d_{}_d_x_{}_p_{}_d_t_{}_cov_type_{}_alpha_{}\".format(\r\n                                    n, n_exp, hetero_coef, d, d_x, p, d_t, cov_type, alpha)\r\n                                if print_matrix:\r\n                                    print(coverage[key][cov_key])\r\n                                plt.figure()\r\n                                plt.title(\"{}{}_{}\".format(prefix, key, cov_key))\r\n                                plt.hist(coverage[key][cov_key].flatten())\r\n                                plt.savefig(os.path.join(\"figures\", folder, \"{}{}_{}.png\".format(prefix,\r\n                                                                                                 key,\r\n                                                                                                 cov_key)))\r\n                                plt.close()\r\n\r\n\r\ndef print_aggregate(mean_coverage, std_coverage, q_coverage, file_gen=lambda: None):\r\n    for key, cov in mean_coverage.items():\r\n        print(key, file=file_gen())\r\n        with np.printoptions(formatter={'float': '{:.2f}'.format}, suppress=True):\r\n            print(\"Mean Coef (True, RMSE) \\t (Coverage, Mean Length) \\t Mean StdErr (True, RMSE)\\t \"\r\n                  \"[Mean Lower (std), Mean Upper (std)]\\t (True Quantiles)\\r\\n{}\".format(\r\n                      \"\\r\\n\".join([\"{:.2f} ({:.2f}, {:.2f}) \\t ({:.2f}, {:.2f}) \\t {:.2f} ({:.2f}, {:.2f}) \"\r\n                                   \" \\t [{:.2f} ({:.2f}), {:.2f} ({:.2f})] \\t {}\".format(est,\r\n                                                                                         true,\r\n                                                                                         np.sqrt(\r\n                                                                                             sqerr),\r\n                                                                                         coverage,\r\n                                                                                         length,\r\n                                                                                         stderr,\r\n                                                                                         true_stderr,\r\n                                                                                         np.sqrt(\r\n                                                                                             std_stderr**2 +\r\n                                                                                             (stderr -\r\n                                                                                              true_stderr)**2),\r\n                                                                                         lower,\r\n                                                                                         std_lower,\r\n                                                                                         upper,\r\n                                                                                         std_upper,\r\n                                                                                         true_qs)\r\n                                   for (est, true, sqerr, coverage, length, stderr, std_stderr,\r\n                                        true_stderr, lower, std_lower, upper, std_upper, true_qs)\r\n                                   in zip(cov['coef'],\r\n                                          cov['true_coef'],\r\n                                          cov['coef_sqerror'],\r\n                                          cov['coef_cov'],\r\n                                          cov['coef_length'],\r\n                                          cov['coef_stderr'],\r\n                                          std_coverage[key]['coef_stderr'],\r\n                                          std_coverage[key]['coef'],\r\n                                          cov['coef_lower'],\r\n                                          std_coverage[key]['coef_lower'],\r\n                                          cov['coef_upper'],\r\n                                          std_coverage[key]['coef_upper'],\r\n                                          q_coverage[key]['coef'].T)])), file=file_gen())\r\n            print(\"Effect SqError: {}\".format(np.mean(cov['effect_sqerror'])), file=file_gen())\r\n\r\n            print(\"Point\\t Mean Coef (True, RMSE) \\t (Coverage, Mean Length)\\t Mean StdErr (True, RMSE)\\t \"\r\n                  \" [Mean Lower (std), Mean Upper (std)]\\t (True Quantiles)\\r\\n{}\".format(\r\n                      \"\\r\\n\".join([\"{}\\t {:.2f} ({:.2f}, {:.2f}) \\t ({:.2f}, {:.2f}) \\t {:.2f} ({:.2f}, {:.2f}) \\t \"\r\n                                   \"[{:.2f} ({:.2f}), {:.2f} ({:.2f})] \\t \"\r\n                                   \"{}\".format(','.join(x.astype(int).astype(str)),\r\n                                               est,\r\n                                               true,\r\n                                               np.sqrt(\r\n                                       sqerr),\r\n                                       coverage,\r\n                                       length,\r\n                                       stderr,\r\n                                       true_stderr,\r\n                                       np.sqrt(\r\n                                       std_stderr**2 + (stderr - true_stderr)**2),\r\n                                       lower,\r\n                                       std_lower,\r\n                                       upper,\r\n                                       std_upper,\r\n                                       true_qs)\r\n                                   for (x, est, true, sqerr, coverage, length, stderr, std_stderr,\r\n                                        true_stderr, lower, std_lower, upper, std_upper, true_qs)\r\n                                   in zip(cov['x_test'],\r\n                                          cov['effect'],\r\n                                          cov['true_effect'],\r\n                                          cov['effect_sqerror'],\r\n                                          cov['effect_cov'],\r\n                                          cov['effect_length'],\r\n                                          cov['effect_stderr'],\r\n                                          std_coverage[key]['effect_stderr'],\r\n                                          std_coverage[key]['effect'],\r\n                                          cov['effect_lower'],\r\n                                          std_coverage[key]['effect_lower'],\r\n                                          cov['effect_upper'],\r\n                                          std_coverage[key]['effect_upper'],\r\n                                          q_coverage[key]['effect'].T)])), file=file_gen())\r\n            print(\"Effect SqError: {}\".format(np.mean(cov['effect_sqerror'])), file=file_gen())\r\n\r\n\r\ndef run_all_mc(first_stage, folder, n_list, n_exp, hetero_coef_list, d_list,\r\n               d_x_list, p_list, t_list, cov_type_list, alpha_list):\r\n\r\n    if not os.path.exists(\"results\"):\r\n        os.makedirs('results')\r\n    results_filename = os.path.join(\"results\", \"{}.txt\".format(folder))\r\n\r\n    np.random.seed(123)\r\n    coverage_est = {}\r\n    coverage_lr = {}\r\n    n_tests = 0\r\n    n_failed_coef = 0\r\n    n_failed_effect = 0\r\n    cov_tol = .04\r\n    for n in n_list:\r\n        for hetero_coef in hetero_coef_list:\r\n            for d in d_list:\r\n                for d_x in d_x_list:\r\n                    if d_x > d:\r\n                        continue\r\n                    for p in p_list:\r\n                        for d_t in t_list:\r\n                            X_test = np.unique(np.random.binomial(1, .5, size=(20, d_x)), axis=0)\r\n                            t0 = time.time()\r\n                            for it in range(n_exp):\r\n                                X = np.random.binomial(1, .8, size=(n, d))\r\n                                T = np.hstack([np.random.binomial(1, .5 * X[:, 0] + .25,\r\n                                                                  size=(n,)).reshape(-1, 1) for _ in range(d_t)])\r\n                                true_coef = np.hstack([np.hstack([it + np.arange(p).reshape(-1, 1),\r\n                                                                  it + np.ones((p, 1)), np.zeros((p, d_x - 1))])\r\n                                                       for it in range(d_t)])\r\n\r\n                                def true_effect(x, t):\r\n                                    return cross_product(\r\n                                        np.hstack([np.ones((x.shape[0], 1)), x[:, :d_x]]), t) @ true_coef.T\r\n                                y = true_effect(X, T) + X[:, [0] * p] +\\\r\n                                    (hetero_coef * X[:, [0]] + 1) * np.random.normal(0, 1, size=(n, p))\r\n\r\n                                XT = np.hstack([X, T])\r\n                                X1, X2, y1, y2, X_final_first, X_final_sec, y_sum_first, y_sum_sec, \\\r\n                                    n_sum_first, n_sum_sec, var_first, var_sec = _summarize(XT, y)\r\n                                X = np.vstack([X1, X2])\r\n                                y = np.concatenate((y1, y2))\r\n                                X_final = np.vstack([X_final_first, X_final_sec])\r\n                                y_sum = np.concatenate((y_sum_first, y_sum_sec))\r\n                                n_sum = np.concatenate((n_sum_first, n_sum_sec))\r\n                                var_sum = np.concatenate((var_first, var_sec))\r\n                                first_half_sum = len(y_sum_first)\r\n                                first_half = len(y1)\r\n                                for cov_type in cov_type_list:\r\n                                    class SplitterSum:\r\n                                        def __init__(self):\r\n                                            return\r\n\r\n                                        def split(self, X, T):\r\n                                            return [(np.arange(0, first_half_sum),\r\n                                                     np.arange(first_half_sum, X.shape[0])),\r\n                                                    (np.arange(first_half_sum, X.shape[0]),\r\n                                                     np.arange(0, first_half_sum))]\r\n\r\n                                    est = LinearDML(model_y=first_stage(),\r\n                                                    model_t=first_stage(),\r\n                                                    cv=SplitterSum(),\r\n                                                    discrete_treatment=False)\r\n                                    est.fit(y_sum,\r\n                                            X_final[:, -d_t:],\r\n                                            X_final[:, :d_x],\r\n                                            X_final[:, d_x:-d_t],\r\n                                            freq_weight=n_sum,\r\n                                            sample_var=var_sum,\r\n                                            inference=StatsModelsInference(cov_type=cov_type))\r\n\r\n                                    class Splitter:\r\n                                        def __init__(self):\r\n                                            return\r\n\r\n                                        def split(self, X, T):\r\n                                            return [(np.arange(0, first_half), np.arange(first_half, X.shape[0])),\r\n                                                    (np.arange(first_half, X.shape[0]), np.arange(0, first_half))]\r\n\r\n                                    lr = LinearDML(model_y=first_stage(),\r\n                                                   model_t=first_stage(),\r\n                                                   cv=Splitter(),\r\n                                                   discrete_treatment=False)\r\n                                    lr.fit(y, X[:, -d_t:], X=X[:, :d_x], W=X[:, d_x:-d_t],\r\n                                           inference=StatsModelsInference(cov_type=cov_type))\r\n                                    for alpha in alpha_list:\r\n                                        key = (\"n_{}_n_exp_{}_hetero_{}_d_{}_d_x_\"\r\n                                               \"{}_p_{}_d_t_{}_cov_type_{}_alpha_{}\").format(\r\n                                            n, n_exp, hetero_coef, d, d_x, p, d_t, cov_type, alpha)\r\n                                        _append_coverage(key, coverage_est, est, X_test,\r\n                                                         alpha, true_coef, true_effect)\r\n                                        _append_coverage(key, coverage_lr, lr, X_test,\r\n                                                         alpha, true_coef, true_effect)\r\n                                        if it == n_exp - 1:\r\n                                            n_tests += 1\r\n                                            mean_coef_cov = np.mean(coverage_est[key]['coef_cov'])\r\n                                            mean_eff_cov = np.mean(coverage_est[key]['effect_cov'])\r\n                                            mean_coef_cov_lr = np.mean(coverage_lr[key]['coef_cov'])\r\n                                            mean_eff_cov_lr = np.mean(coverage_lr[key]['effect_cov'])\r\n                                            [print(\"{}. Time: {:.2f}, Mean Coef Cov: ({:.4f}, {:.4f}), \"\r\n                                                   \"Mean Effect Cov: ({:.4f}, {:.4f})\".format(key,\r\n                                                                                              time.time() - t0,\r\n                                                                                              mean_coef_cov,\r\n                                                                                              mean_coef_cov_lr,\r\n                                                                                              mean_eff_cov,\r\n                                                                                              mean_eff_cov_lr),\r\n                                                   file=f)\r\n                                             for f in [None, open(results_filename, \"a\")]]\r\n                                            coef_cov_dev = mean_coef_cov - (1 - alpha)\r\n                                            if np.abs(coef_cov_dev) >= cov_tol:\r\n                                                n_failed_coef += 1\r\n                                                [print(\"BAD coef coverage on \"\r\n                                                       \"average: deviation = {:.4f}\".format(coef_cov_dev), file=f)\r\n                                                 for f in [None, open(results_filename, \"a\")]]\r\n                                            eff_cov_dev = mean_eff_cov - (1 - alpha)\r\n                                            if np.abs(eff_cov_dev) >= cov_tol:\r\n                                                n_failed_effect += 1\r\n                                                [print(\"BAD effect coverage on \"\r\n                                                       \"average: deviation = {:.4f}\".format(eff_cov_dev), file=f)\r\n                                                 for f in [None, open(results_filename, \"a\")]]\r\n\r\n    [print(\"Finished {} Monte Carlo Tests. Failed Coef Coverage Tests: {}/{}.\"\r\n           \"Failed Effect Coverage Tests: {}/{}. (Coverage Tolerance={})\".format(n_tests,\r\n                                                                                 n_failed_coef,\r\n                                                                                 n_tests,\r\n                                                                                 n_failed_effect,\r\n                                                                                 n_tests,\r\n                                                                                 cov_tol),\r\n           file=f) for f in [None, open(results_filename, \"a\")]]\r\n\r\n    agg_coverage_est, std_coverage_est, q_coverage_est = _agg_coverage(coverage_est)\r\n    agg_coverage_lr, std_coverage_lr, q_coverage_lr = _agg_coverage(coverage_lr)\r\n\r\n    [print(\"\\nResults for: {}\\n--------------------------\\n\".format(folder), file=f)\r\n     for f in [None, open(results_filename, \"a\")]]\r\n\r\n    plot_coverage(agg_coverage_est, 'coef_cov', n, n_exp, hetero_coef_list, d_list, d_x_list,\r\n                  p_list, t_list, cov_type_list, alpha_list, prefix=\"sum_\", folder=folder)\r\n    plot_coverage(agg_coverage_lr, 'coef_cov', n, n_exp, hetero_coef_list, d_list, d_x_list,\r\n                  p_list, t_list, cov_type_list, alpha_list, prefix=\"orig_\", folder=folder)\r\n    plot_coverage(agg_coverage_est, 'effect_cov', n, n_exp, hetero_coef_list, d_list, d_x_list,\r\n                  p_list, t_list, cov_type_list, alpha_list, prefix=\"sum_\", folder=folder)\r\n    plot_coverage(agg_coverage_lr, 'effect_cov', n, n_exp, hetero_coef_list, d_list, d_x_list,\r\n                  p_list, t_list, cov_type_list, alpha_list, prefix=\"orig_\", folder=folder)\r\n\r\n    [print(\"Summarized Data\\n----------------\", file=f) for f in [None, open(results_filename, \"a\")]]\r\n    print_aggregate(agg_coverage_est, std_coverage_est, q_coverage_est)\r\n    print_aggregate(agg_coverage_est, std_coverage_est, q_coverage_est, lambda: open(results_filename, \"a\"))\r\n    [print(\"\\nUn-Summarized Data\\n-----------------\", file=f) for f in [None, open(results_filename, \"a\")]]\r\n    print_aggregate(agg_coverage_lr, std_coverage_lr, q_coverage_lr)\r\n    print_aggregate(agg_coverage_lr, std_coverage_lr, q_coverage_lr, lambda: open(results_filename, \"a\"))\r\n\r\n\r\ndef monte_carlo(first_stage=lambda: LinearRegression(), folder='lr'):\r\n    n_exp = 1000\r\n    n_list = [500]\r\n    hetero_coef_list = [0, 1]\r\n    d_list = [1, 10]\r\n    d_x_list = [1, 5]\r\n    p_list = [1, 5]\r\n    t_list = [1, 2]\r\n    cov_type_list = ['HC1']\r\n    alpha_list = [.01, .05, .2]\r\n    run_all_mc(first_stage, folder, n_list, n_exp, hetero_coef_list,\r\n               d_list, d_x_list, p_list, t_list, cov_type_list, alpha_list)\r\n\r\n\r\ndef monte_carlo_lasso(first_stage=lambda: WeightedLasso(alpha=0.01,\r\n                                                        fit_intercept=True,\r\n                                                        tol=1e-6, random_state=123), folder='lasso'):\r\n    n_exp = 1000\r\n    n_list = [500]\r\n    hetero_coef_list = [1]\r\n    d_list = [20]\r\n    d_x_list = [5]\r\n    p_list = [1, 2]\r\n    t_list = [1, 3]\r\n    cov_type_list = ['HC1']\r\n    alpha_list = [.01, .05, .2]\r\n    run_all_mc(first_stage, folder, n_list, n_exp, hetero_coef_list,\r\n               d_list, d_x_list, p_list, t_list, cov_type_list, alpha_list)\r\n\r\n\r\ndef monte_carlo_rf(first_stage=lambda: RandomForestRegressor(n_estimators=100,\r\n                                                             max_depth=3, min_samples_leaf=10), folder='rf'):\r\n    n_exp = 1000\r\n    n_list = [500, 5000]\r\n    hetero_coef_list = [1]\r\n    d_list = [20]\r\n    d_x_list = [5]\r\n    p_list = [1]\r\n    t_list = [2]\r\n    cov_type_list = ['HC1']\r\n    alpha_list = [.01, .05, .2]\r\n    run_all_mc(first_stage, folder, n_list, n_exp, hetero_coef_list,\r\n               d_list, d_x_list, p_list, t_list, cov_type_list, alpha_list)\r\n\r\n\r\ndef monte_carlo_gcv(folder='gcv'):\r\n    def first_stage():\r\n        return GridSearchCVList([LinearRegression(),\r\n                                 WeightedMultiTaskLasso(alpha=0.05, fit_intercept=True,\r\n                                                        tol=1e-6, random_state=123),\r\n                                 RandomForestRegressor(n_estimators=100, max_depth=3,\r\n                                                       min_samples_leaf=10, random_state=123),\r\n                                 MultiOutputRegressor(GradientBoostingRegressor(n_estimators=20,\r\n                                                                                max_depth=3,\r\n                                                                                min_samples_leaf=10,\r\n                                                                                random_state=123))],\r\n                                param_grid_list=[{},\r\n                                                 {},\r\n                                                 {},\r\n                                                 {}],\r\n                                cv=3,\r\n                                iid=True)\r\n    n_exp = 1000\r\n    n_list = [1000, 5000]\r\n    hetero_coef_list = [1]\r\n    d_list = [20]\r\n    d_x_list = [5]\r\n    p_list = [1]\r\n    t_list = [2]\r\n    cov_type_list = ['HC1']\r\n    alpha_list = [.01, .05, .2]\r\n    run_all_mc(first_stage, folder, n_list, n_exp, hetero_coef_list,\r\n               d_list, d_x_list, p_list, t_list, cov_type_list, alpha_list)\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    parser = argparse.ArgumentParser(description='Description of your program')\r\n    parser.add_argument('-e', '--exp', help='What experiment (default=all)', required=False, default='all')\r\n    args = vars(parser.parse_args())\r\n    if args['exp'] in ['lr', 'all']:\r\n        monte_carlo()\r\n    if args['exp'] in ['lasso', 'all']:\r\n        monte_carlo_lasso()\r\n    if args['exp'] in ['rf', 'all']:\r\n        monte_carlo_rf()\r\n    if args['exp'] in ['gcv', 'all']:\r\n        monte_carlo_gcv()\r\n"
  },
  {
    "path": "notebooks/AutomatedML/Automated Machine Learning For EconML.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Copyright (c) PyWhy contributors. All rights reserved.\\n\",\n    \"\\n\",\n    \"Licensed under the MIT License.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"![Impressions](https://PixelServer20190423114238.azurewebsites.net/api/impressions/MachineLearningNotebooks/how-to-use-azureml/automated-machine-learning/classification-bank-marketing-all-features/auto-ml-classification-bank-marketing.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Automated Machine Learning For EconML\\n\",\n    \"\\n\",\n    \"This is a version of the evaluation for running in the cloud, it has settings that leverage greater access to compute.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Imports\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"C:\\\\Users\\\\v-keacqu\\\\AppData\\\\Local\\\\Continuum\\\\miniconda3\\\\envs\\\\azure_automl\\\\lib\\\\site-packages\\\\sklearn\\\\externals\\\\joblib\\\\__init__.py:15: DeprecationWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+.\\n\",\n      \"  warnings.warn(msg, category=DeprecationWarning)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import logging\\n\",\n    \"# Main imports\\n\",\n    \"from econml.dml import DML, LinearDML,CausalForestDML, NonParamDML\\n\",\n    \"from matplotlib import pyplot as plt\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"#Import scikit-learn model AutoML wrapper\\n\",\n    \"from econml.automated_ml import addAutomatedML,setAutomatedMLWorkspace, EconAutoMLConfig\\n\",\n    \"# Imports for linear double machine learning evaluation\\n\",\n    \"# Helper imports\\n\",\n    \"import math\\n\",\n    \"import numpy as np\\n\",\n    \"from itertools import product\\n\",\n    \"from sklearn.linear_model import Lasso\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"from sklearn.model_selection import train_test_split\\n\",\n    \"import warnings\\n\",\n    \"warnings.filterwarnings(\\\"ignore\\\")\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## AutoML Setup\\n\",\n    \"\\n\",\n    \"To begin we will configure our AutoML instance and load environment variable necessary to leverage AutoML.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Workspace configuration has succeeded.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"setAutomatedMLWorkspace(workspace_name = \\\"<workspace_name>\\\",\\n\",\n    \"                        subscription_id=\\\"<subscription_id>\\\",\\n\",\n    \"                        resource_group=\\\"<resource_group>\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The first step for using AutoML with double machine learning is to specify the configuration object of your AutoML target, this `AutoMLConfig` object specifies the settings of the AutoML session that will be used to develop your model.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"\\n\",\n    \"automl_settings_reg = {\\n\",\n    \"    \\\"experiment_timeout_minutes\\\" : 1,\\n\",\n    \"    \\\"enable_early_stopping\\\" : True,\\n\",\n    \"    \\\"iteration_timeout_minutes\\\": 1,\\n\",\n    \"    \\\"max_cores_per_iteration\\\": -1,\\n\",\n    \"    \\\"n_cross_validations\\\": 2,\\n\",\n    \"    'preprocess': False,\\n\",\n    \"    \\\"featurization\\\": 'off',\\n\",\n    \"    \\\"verbosity\\\": logging.INFO,\\n\",\n    \"    \\\"primary_metric\\\": 'normalized_mean_absolute_error'\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"automl_settings_clf = {\\n\",\n    \"    \\\"experiment_timeout_minutes\\\" : 1,\\n\",\n    \"    \\\"enable_early_stopping\\\" : True,\\n\",\n    \"    \\\"iteration_timeout_minutes\\\": 1,\\n\",\n    \"    \\\"max_cores_per_iteration\\\": -1,\\n\",\n    \"    \\\"n_cross_validations\\\": 2,\\n\",\n    \"    'preprocess': False,\\n\",\n    \"    \\\"featurization\\\": 'off',\\n\",\n    \"    \\\"verbosity\\\": logging.INFO,\\n\",\n    \"    \\\"primary_metric\\\": 'AUC_weighted'\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"automl_config_reg = EconAutoMLConfig(task = 'regression',\\n\",\n    \"                                     debug_log = 'automl_errors.log',\\n\",\n    \"                                     enable_onnx_compatible_models=True,\\n\",\n    \"                                     model_explainability=True,\\n\",\n    \"                                     **automl_settings_reg)\\n\",\n    \"\\n\",\n    \"automl_config_clf = EconAutoMLConfig(task = 'classification',\\n\",\n    \"                                     debug_log = 'automl_errors.log',\\n\",\n    \"                                     enable_onnx_compatible_models=True,\\n\",\n    \"                                     model_explainability=True,\\n\",\n    \"                                     **automl_settings_clf)\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Grid Search Baseline\\n\",\n    \"\\n\",\n    \"In order to evaluate our model against a well performing Random Forest Classifier, we need to specify a class that completes grid search CV over the RandomForestRegressor class and chooses the best resulting model. Below is the class definition and as well as two funtions for instantiating our RandomForestRegressor wrapper.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"from sklearn.ensemble import GradientBoostingClassifier\\n\",\n    \"\\n\",\n    \"class GridSearchCVList:\\n\",\n    \"\\n\",\n    \"    def __init__(self, estimator_list, param_grid_list, scoring=None,\\n\",\n    \"                 n_jobs=None, iid='warn', refit=True, cv='warn', verbose=0, pre_dispatch='2*n_jobs',\\n\",\n    \"                 error_score='raise-deprecating', return_train_score=False):\\n\",\n    \"        self._gcv_list = [GridSearchCV(estimator, param_grid, scoring=scoring,\\n\",\n    \"                                       n_jobs=n_jobs, iid=iid, refit=refit, cv=cv, verbose=verbose,\\n\",\n    \"                                       pre_dispatch=pre_dispatch, error_score=error_score,\\n\",\n    \"                                       return_train_score=return_train_score)\\n\",\n    \"                          for estimator, param_grid in zip(estimator_list, param_grid_list)]\\n\",\n    \"        return\\n\",\n    \"\\n\",\n    \"    def fit(self, X, y, sample_weight = None, **fit_params):\\n\",\n    \"        self.best_ind_ = np.argmax([gcv.fit(X, y, sample_weight = sample_weight, **fit_params).best_score_\\n\",\n    \"                                    for gcv in self._gcv_list])\\n\",\n    \"        self.best_estimator_ = self._gcv_list[self.best_ind_].best_estimator_\\n\",\n    \"        self.best_score_ = self._gcv_list[self.best_ind_].best_score_\\n\",\n    \"        self.best_params_ = self._gcv_list[self.best_ind_].best_params_\\n\",\n    \"        return self\\n\",\n    \"\\n\",\n    \"    def predict(self, X):\\n\",\n    \"        return self.best_estimator_.predict(X)\\n\",\n    \"\\n\",\n    \"    def predict_proba(self, X):\\n\",\n    \"        return self.best_estimator_.predict_proba(X)\\n\",\n    \"\\n\",\n    \"def grid_search_reg():\\n\",\n    \"    return GridSearchCVList([RandomForestRegressor(n_estimators=100, random_state=123),\\n\",\n    \"                             GradientBoostingRegressor(random_state=123)],\\n\",\n    \"                             param_grid_list=[{'max_depth': [3, None],\\n\",\n    \"                                               'min_samples_leaf': [10, 50]},\\n\",\n    \"                                              {'n_estimators': [50, 100],\\n\",\n    \"                                               'max_depth': [3],\\n\",\n    \"                                               'min_samples_leaf': [10, 30]}],\\n\",\n    \"                             cv=3,\\n\",\n    \"                             iid=True,\\n\",\n    \"                             scoring='neg_mean_squared_error')\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def grid_search_clf():\\n\",\n    \"    return GridSearchCVList([RandomForestClassifier(n_estimators=100, random_state=123),\\n\",\n    \"                             GradientBoostingClassifier(random_state=123)],\\n\",\n    \"                             param_grid_list=[{'max_depth': [3, 5],\\n\",\n    \"                                               'min_samples_leaf': [10, 50]},\\n\",\n    \"                                              {'n_estimators': [50, 100],\\n\",\n    \"                                               'max_depth': [3],\\n\",\n    \"                                               'min_samples_leaf': [10, 30]}],\\n\",\n    \"                             cv=3,\\n\",\n    \"                             iid=True,\\n\",\n    \"                             scoring='neg_mean_squared_error')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### DGP \\n\",\n    \"The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T =& g(W \\\\cdot \\\\beta) + \\\\eta, & \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y =& T\\\\cdot \\\\theta + m(W\\\\cdot \\\\beta) + \\\\epsilon, &\\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim& \\\\text{Normal}(0,\\\\, I_{n_w})\\\\\\\\\\n\",\n    \"X \\\\sim& \\\\text{Uniform}(0,1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders, $m, g$ can be nonlinear, and $\\\\beta, \\\\gamma$ have high sparsity.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = \\\\exp(2\\\\cdot x_1)\\\\\\\\\\n\",\n    \"g(x) = sin^2(x)\\\\\\\\\\n\",\n    \"m(x;\\\\eta,\\\\gamma)=\\\\frac{1}{2\\\\pi}\\\\frac{sinh(\\\\gamma)}{cosh(\\\\gamma)-cos(x-\\\\eta)}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"Let’s keep it simple and set $\\\\eta = 0$ and $\\\\gamma = 1$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Structural Model for Estimation\\n\",\n    \"\\n\",\n    \"The model we are trying to estimate is as follows\\n\",\n    \"\\n\",\n    \"$$t_i = g(w_i\\\\cdot b) + \\\\eta$$\\n\",\n    \"$$y_i = t_i\\\\cdot \\\\theta + m(w_i\\\\cdot b) + \\\\epsilon$$\\n\",\n    \"\\n\",\n    \"For this example the true value of the causal parameter will be $\\\\theta = 0.5$\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Treatment effect function\\n\",\n    \"def te(x):\\n\",\n    \"    return np.sin(2*math.pi*x[0])/2+0.5\\n\",\n    \"def g(x):\\n\",\n    \"    return np.power(np.sin(x),2)\\n\",\n    \"def m(x,nu=0.,gamma=1.):\\n\",\n    \"    return 0.5/math.pi*(np.sinh(gamma))/(np.cosh(gamma)-np.cos(x-nu))\\n\",\n    \"#vectorized g and m for applying to dataset\\n\",\n    \"vg = np.vectorize(g)\\n\",\n    \"vm = np.vectorize(m)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 10000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 1\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(np.arange(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = np.array([te(x_i) for x_i in X])\\n\",\n    \"\\n\",\n    \"T = vg(np.dot(W[:, support_T], coefs_T))+ eta_sample(n)\\n\",\n    \"Y = TE * T + vm(np.dot(W[:, support_Y], coefs_Y))+ epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"Y_train, Y_val, T_train, T_val, X_train, X_val, W_train, W_val = train_test_split(Y, T, X, W, test_size=.2)\\n\",\n    \"# Generate test data\\n\",\n    \"X_test = np.array(list(product(np.arange(0, 1, 0.01), repeat=n_x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Train Estimators\\n\",\n    \"We train models in three different ways, and compare their performance.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Default Setting\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=RandomForestRegressor(),\\n\",\n    \"                model_t=RandomForestRegressor(),\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_rf_regressor = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=grid_search_reg(),\\n\",\n    \"                model_t=grid_search_reg(),\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_cv_regressor = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_31-16_34_42 has started.\\n\",\n      \"Experiment model_t_20_01_31-16_34_42 completed.\\n\",\n      \"Experiment model_y_20_01_31-16_36_44 has started.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedLinearDML = addAutomatedML(LinearDML)\\n\",\n    \"est = AutomatedLinearDML(model_y=automl_config_reg,\\n\",\n    \"                         model_t=automl_config_reg,\\n\",\n    \"                         random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.plot(X_test, te_pred_rf_regressor, label='DML Polynomial Features with RF Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Polynomial Features with Regularization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DML(model_y=RandomForestRegressor(),\\n\",\n    \"          model_t=RandomForestRegressor(),\\n\",\n    \"          model_final=Lasso(alpha=0.0001, fit_intercept=False),\\n\",\n    \"          featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"          random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_rf_regressor_2=est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DML(model_y=grid_search_reg(),\\n\",\n    \"          model_t=grid_search_reg(),\\n\",\n    \"          model_final=Lasso(alpha=0.0001, fit_intercept=False),\\n\",\n    \"          featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"          random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_cv_regressor_2 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_28-13_56_29 has started.\\n\",\n      \"Experiment model_t_20_01_28-13_56_29 completed.\\n\",\n      \"Experiment model_y_20_01_28-13_58_02 has started.\\n\",\n      \"Experiment model_y_20_01_28-13_58_02 completed.\\n\",\n      \"Experiment model_t_20_01_28-13_59_42 has started.\\n\",\n      \"Experiment model_t_20_01_28-13_59_42 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_01_18 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_01_18 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedDML = addAutomatedML(DML)\\n\",\n    \"est = AutomatedDML(model_y=automl_config_reg,\\n\",\n    \"                   model_t=automl_config_reg,\\n\",\n    \"                   model_final=Lasso(alpha=0.0001, fit_intercept=False),\\n\",\n    \"                   featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"                   random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor_2=est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred_rf_regressor_2, label='DML Polynomial Features with RF Regressor')\\n\",\n    \"#plt.plot(X_test, te_pred_cv_regressor_2, label='DML Polynomial Features with Grid Search Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor_2, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Random Forest Final Stage\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = CausalForestDML(model_y=RandomForestRegressor(),\\n\",\n    \"                model_t=RandomForestRegressor(),\\n\",\n    \"                discrete_treatment=False,\\n\",\n    \"                n_estimators=1000,\\n\",\n    \"                subsample_fr=.8,\\n\",\n    \"                min_samples_leaf=10,\\n\",\n    \"                min_impurity_decrease=0.001,\\n\",\n    \"                verbose=0, min_weight_fraction_leaf=.01)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_rf_regressor_3 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = CausalForestDML(model_y=grid_search_reg(),\\n\",\n    \"                      model_t=grid_search_reg(),\\n\",\n    \"                      discrete_treatment=False,\\n\",\n    \"                      n_estimators=1000,\\n\",\n    \"                      subsample_fr=.8,\\n\",\n    \"                      min_samples_leaf=10,\\n\",\n    \"                      min_impurity_decrease=0.001,\\n\",\n    \"                      verbose=0, min_weight_fraction_leaf=.01)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pcdred_cv_regressor_3 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_28-14_03_08 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_03_08 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_04_43 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_04_43 completed.\\n\",\n      \"Experiment model_t_20_01_28-14_06_20 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_06_20 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_07_56 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_07_56 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedForestDML = addAutomatedML(CausalForestDML)\\n\",\n    \"est = AutomatedForestDML(model_y=automl_config_reg,\\n\",\n    \"                         model_t=automl_config_reg,\\n\",\n    \"                         discrete_treatment=False,\\n\",\n    \"                         n_estimators=1000,\\n\",\n    \"                         subsample_fr=.8,\\n\",\n    \"                         min_samples_leaf=10,\\n\",\n    \"                         min_impurity_decrease=0.001,\\n\",\n    \"                         verbose=0, min_weight_fraction_leaf=.01)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor_3 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.plot(X_test, te_pred_rf_regressor_3, label='DML Polynomial Features with RF Regressor')\\n\",\n    \"#plt.plot(X_test, te_pred_cv_regressor_3, label='DML Polynomial Features with Grid Search Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor_3, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## AutoML Final Stage Parametric Estimator\\n\",\n    \"\\n\",\n    \"For correctness, all parametric double machine learning estimators (all estimators besides ``NonParamDMLEstimator``) must be trained on linear models. We can specify that using a the parameter ``linear_model_required``.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"automl_settings_reg = {\\n\",\n    \"    \\\"experiment_timeout_minutes\\\" : 10,\\n\",\n    \"    \\\"enable_early_stopping\\\" : True,\\n\",\n    \"    \\\"iteration_timeout_minutes\\\": 2,\\n\",\n    \"    \\\"max_cores_per_iteration\\\": -1,\\n\",\n    \"    \\\"n_cross_validations\\\": 2,\\n\",\n    \"    'preprocess': False,\\n\",\n    \"    \\\"featurization\\\": 'off',\\n\",\n    \"    \\\"verbosity\\\": logging.INFO,\\n\",\n    \"    \\\"primary_metric\\\": 'normalized_mean_absolute_error'\\n\",\n    \"}\\n\",\n    \"automl_config_final = EconAutoMLConfig(task = 'regression',\\n\",\n    \"                                       debug_log = 'automl_errors.log',\\n\",\n    \"                                       #For correctness, parametric DML must be linear models\\n\",\n    \"                                       linear_model_required = True,\\n\",\n    \"                                       **automl_settings_reg)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DML(model_y=RandomForestRegressor(),\\n\",\n    \"          model_t=RandomForestRegressor(),\\n\",\n    \"          model_final=RandomForestRegressor(),\\n\",\n    \"          featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"          random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_rf_regressor_4 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DML(model_y=grid_search_reg(),\\n\",\n    \"          model_t=grid_search_reg(),\\n\",\n    \"          model_final=grid_search_reg(),\\n\",\n    \"          featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"          random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_cv_regressor_4 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 53,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_28-15_50_01 has started.\\n\",\n      \"Experiment model_t_20_01_28-15_50_01 completed.\\n\",\n      \"Experiment model_y_20_01_28-15_51_44 has started.\\n\",\n      \"Experiment model_y_20_01_28-15_51_44 completed.\\n\",\n      \"Experiment model_t_20_01_28-15_53_26 has started.\\n\",\n      \"Experiment model_t_20_01_28-15_53_26 completed.\\n\",\n      \"Experiment model_y_20_01_28-15_55_30 has started.\\n\",\n      \"Experiment model_y_20_01_28-15_55_30 completed.\\n\",\n      \"Experiment model_final_20_01_28-15_57_16 has started.\\n\",\n      \"Experiment model_final_20_01_28-15_57_16 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedDML = addAutomatedML(DML)\\n\",\n    \"est = AutomatedDML(model_y=automl_config_reg,\\n\",\n    \"                   model_t=automl_config_reg,\\n\",\n    \"                   model_final=automl_config_final,\\n\",\n    \"                   featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"                   random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor_4 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred_rf_regressor_4, label='DML Polynomial Features with RF Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_cv_regressor_4, label='DML Polynomial Features with Grid Search Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor_4, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## With Nonlinear Models Allowed\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_28-14_48_12 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_48_12 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_50_04 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_50_04 completed.\\n\",\n      \"Experiment model_t_20_01_28-14_51_45 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_51_45 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_53_35 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_53_35 completed.\\n\",\n      \"Experiment model_final_20_01_28-14_55_18 has started.\\n\",\n      \"Experiment model_final_20_01_28-14_55_18 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedDML = addAutomatedML(DML)\\n\",\n    \"est = AutomatedDML(model_y=automl_config_reg,\\n\",\n    \"                   model_t=automl_config_reg,\\n\",\n    \"                   model_final=automl_config_reg,\\n\",\n    \"                   featurizer=PolynomialFeatures(degree=5),\\n\",\n    \"                   random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor_4 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAmkAAAFzCAYAAABl1J6yAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXxTVfr48c9NmqZLutGWtUApsnenULayC6io7MowCKPMiNs44gLuDso4+GPADXEYEVyBr2ARFR0WhbLKlIIIbdkLFEtX2iZp0zbJ/f1xm9AlXelGOe/Xqy+b5N6bkzTSp88553kkWZYRBEEQBEEQWhZVcw9AEARBEARBqEwEaYIgCIIgCC2QCNIEQRAEQRBaIBGkCYIgCIIgtEAiSBMEQRAEQWiBRJAmCIIgCILQAjk19wAamp+fnxwYGNjcwxAEQRAEQajRkSNHsmRZ9nf0WKsL0gIDA4mPj2/uYQiCIAiCINRIkqSLVT3WrNOdkiR9LElShiRJJ6p4fKQkSXmSJB0r/XqlqccoCIIgCILQHJo7k7YOeB/4tJpj9sqyPLFphiMIgiAIgtAyNGsmTZblOCCnOccgCIIgCILQEjV3Jq02BkuS9CvwO/CMLMsnm3tAgiAIVSkpKSE1NRWTydTcQxEEoQVxcXEhICAAjUZT63NaepCWAHSVZdkgSdKdwBagR8WDJEn6C/AXgC5dujTtCAVBEMpITU3Fw8ODwMBAJElq7uEIgtACyLJMdnY2qampdOvWrdbnteg6abIs58uybCj9fhugkSTJz8Fxq2VZjpJlOcrf3+EuVkEQhCZhMpnw9fUVAZogCHaSJOHr61vnDHuLDtIkSWovlf5LJ0nSQJTxZjfvqARBEKonAjRBECqqz78LzV2CYz1wEOglSVKqJEkPSZI0X5Kk+aWHTANOlK5Jexe4X5ZlubnGKwiCcDNQq9WEh4fTr18/wsLCWL58OVarFYDdu3cjSRJr1qyxH3/06FEkSWLZsmUAzJ07l02bNtXqOYKDg5k+fToFBQXVHq/T6W7wVdVPfHw8f/3rX6s9Zvfu3UycWLmIwO7du/Hy8iI8PJzw8HDGjh1brzEcO3aMbdu21evcxlL2fdm9ezcHDhywP1abnz+U/wzcfffd5ObmApCSkoKrq6v9fQsPD6e4uLjcubb3NiIigt69e/PMM8804KtrPZp1TZosyzNrePx9lBIdgiAIQi25urpy7NgxADIyMvjDH/5AXl4ef//73wEICQlh48aNPPTQQwBs2LCBsLCwej/HrFmz+PDDD1mwYEEDvoqGERUVRVRUVL3Pj4mJ4bvvvruhMRw7doz4+HjuvPPOWp8jyzKyLKNSNU4upez7snv3bnQ6HUOGDKnTNcp+BubMmcPKlSt58cUXAejevbv9sarY3tvCwkIiIiKYPHkyQ4cOrcerKc9isaBWq2/4Oi3heVr0dKcgCIJwY9q2bcvq1at5//33sU1EdOnSBZPJRHp6OrIs8+OPP3LHHXfU+zliYmI4e/YsAMuXLyc4OJjg4GDefvvtSsfOnj2bb775xn571qxZbN26lXXr1jFlyhQmTJhAjx49eO655+zHrF+/npCQEIKDg1m4cKH9fp1Ox8KFC+nfvz9jx47l8OHDjBw5kqCgILZu3QqUz5IdPnyYIUOGEBERwZAhQzh16lS9Xm9mZiZTp05lwIABDBgwgP3791d5/eLiYl555RU2btxIeHg4Gzdu5LXXXrNnLQGCg4NJSUkhJSWFPn368OijjxIZGcnly5fZvn07gwcPJjIykunTp2MwGABYtGgRffv2JTQ01GEWKiQkhNzcXGRZxtfXl08//dT+/u/cudP+vqSkpPDhhx+yYsUKwsPD2bt3LwBxcXEMGTKEoKCgWmXVBg8ezJUrV+r1ftqybrbzjUYjDz74IAMGDCAiIsL+eSkoKGDGjBmEhoZy3333ER0dbe8wpNPpeOWVV4iOjubgwYMcOXKEESNG0L9/f8aPH09aWhoA7777rv19u//++wHYs2ePPeMXERGBXq9HlmWeffZZgoOD7X/UgPJ5GjVqFH/4wx8ICQmp1+uti5a+u1MQBOGm9fdvT5L4e36DXrNvR09evbtfnc4JCgrCarWSkZFhv2/atGl89dVXREREEBkZiVarrdd4zGYzP/zwAxMmTODIkSOsXbuWX375BVmWiY6OZsSIEURERNiPnzdvHitWrODee+8lLy+PAwcO8Mknn/D5559z7Ngxjh49ilarpVevXjzxxBOo1WoWLlzIkSNH8PHxYdy4cWzZsoVJkyZhNBoZOXIkS5cuZfLkybz00kvs2LGDxMRE5syZwz333FNurL179yYuLg4nJyd27tzJCy+8wObNm6t9fXv37iU8PByA6dOn8+KLL/Lkk0/y1FNPMWzYMC5dusT48eNJSkqq8vqLFy8mPj6e999XJoZee+21Kp/v1KlTrF27lg8++ICsrCzeeOMNdu7cibu7O0uXLmX58uU8/vjjxMbGkpycjCRJ9mnGsoYOHcr+/fvp2rUrQUFB7N27lwceeIBDhw6xatUqe3ATGBjI/Pnz0el09mBvzZo1pKWlsW/fPpKTk7nnnnuYNm1alWO2WCzs2rXLnpkFOHfunP19Gzp0KCtXrqzy/GvXrnHmzBmGDx8OwJIlSxg9ejQff/wxubm5DBw4kLFjx7Jq1Sp8fHw4fvw4J06csF8flMAuODiYxYsXU1JSwogRI/jmm2/w9/dn48aNvPjii3z88cf885//5MKFC2i1Wvv7tmzZMlauXMnQoUMxGAy4uLjw9ddfc+zYMX799VeysrIYMGCAfXyHDx/mxIkTddqlWV8iSBOEJlRktpCWayLQz725hyLcYiou550xYwb33XcfycnJzJw5s9yapNooLCy0/5KMiYnhoYceYtWqVUyePBl3d+XzPWXKFPbu3VsuSBsxYgSPPfYYGRkZfP3110ydOhUnJ+VX0ZgxY/Dy8gKgb9++XLx4kezsbEaOHIlt5/6sWbOIi4tj0qRJODs7M2HCBEDJHGm1WjQaDSEhIaSkpFQac15eHnPmzOHMmTNIkkRJSUmNr9PRdOfOnTtJTEy0387Pz0ev19fr+hV17dqVQYMGAXDo0CESExPtU4DFxcUMHjwYT09PXFxcmDdvHnfddZfD9XQxMTHExcXRtWtXHnnkEVavXs2VK1do06ZNrdYHTpo0CZVKRd++fUlPT3d4jO0zkJKSQv/+/bn99tvtj9VmunPv3r2EhoZy6tQpFi1aRPv27QHYvn07W7dutWcbTSYTly5dYt++fTz55JOAkn0MDQ21X0utVjN16lRACXRPnDhhH4/FYqFDhw4AhIaGMmvWLCZNmsSkSZMAJYhcsGABs2bNYsqUKQQEBLBv3z5mzpyJWq2mXbt2jBgxgv/97394enoycODAJgnQQARpgtCkPjt4kWXbT3H05XG4Ojf+mgmhedU149VYzp8/j1qtpm3btiQlJQHQvn17NBoNO3bs4J133qlzkFZ2PZJNbfd1zZ49my+++IINGzbw8ccf2+8vm81Tq9WYzeZqr6nRaOw75lQqlf18lUqF2WyudPzLL7/MqFGjiI2NJSUlhZEjR9ZqvBVZrVYOHjyIq6trufufeOKJWl3fycnJvpEDKFeWwRbggvJ+3n777axfv77SNQ4fPsyuXbvYsGED77//Pj/99FO5x4cPH87KlSu5dOkSS5YsITY2lk2bNhETE1Or11j2Z1HVz8D2GcjLy2PixImsXLmyxk0aZdkC4NOnTzNs2DAmT55MeHg4siyzefNmevXqVe746j4LLi4u9vVhsizTr18/Dh48WOm477//nri4OLZu3crrr7/OyZMnWbRoEXfddRfbtm1j0KBB7Ny5s9rnKvszamxiTZogNKGzGQZMJVYy9UXNPRThFpGZmcn8+fN5/PHHK5UAWLx4MUuXLm2wxc/Dhw9ny5YtFBQUYDQaiY2NdRgUzJ07175erV+/6gPZ6Oho9uzZQ1ZWFhaLhfXr1zNixIh6jS8vL49OnToBsG7dunpdA2DcuHH2qUvAHqxWdX0PDw/0er39dmBgIAkJCQAkJCRw4cIFh88zaNAg9u/fb1/vV1BQwOnTpzEYDOTl5XHnnXfy9ttvO8xYde7cmaysLM6cOUNQUBDDhg1j2bJlDn8eFcdXV15eXrz77rssW7asXtnDnj178vzzz7N06VIAxo8fz3vvvWcPlI4ePQrAsGHD+L//+z8AEhMT+e233xxer1evXmRmZtqDtJKSEk6ePInVauXy5cuMGjWKt956i9zcXAwGA+fOnSMkJISFCxcSFRVFcnIyw4cPZ+PGjVgsFjIzM4mLi2PgwIF1fm03SgRpgtCEUq8VApBpEEGa0Hhs01D9+vVj7NixjBs3jldffbXScUOGDLFP+VT08MMPExAQQEBAAIMHD67V80ZGRjJ37lwGDhxIdHQ08+bNKzfVadOuXTv69OnDn/70pxqv2aFDB958801GjRpFWFgYkZGR3HvvvbUaT0XPPfcczz//PEOHDsVisdTrGqAsPo+Pjyc0NJS+ffvy4YcfVnv9UaNGkZiYaN84MHXqVHJycggPD2fVqlX07NnT4fP4+/uzbt06Zs6cSWhoKIMGDSI5ORm9Xs/EiRMJDQ1lxIgRrFixwuH50dHR9mvHxMRw5coVhg0bVum4u+++m9jY2HIbB+oqIiKCsLAwNmzYUK/z58+fT1xcHBcuXODll1+mpKSE0NBQgoODefnllwF49NFHyczMJDQ0lKVLlxIaGmqfHi/L2dmZTZs2sXDhQsLCwggPD+fAgQNYLBb++Mc/EhISQkREBE899RTe3t68/fbbBAcHExYWhqurK3fccQeTJ08mNDSUsLAwRo8ezVtvvWWfjm1KUmsrOxYVFSXbFkQKQksz8v/9TEp2Af+e3Z/x/Zr+f3ih8SUlJdGnT5/mHkaLVlBQQEhICAkJCQ5/yQqCIxaLhZKSElxcXDh37hxjxozh9OnTODs7N/fQas3Rvw+SJB2RZdlhnRixJk0QmojFKnMltzSTJqY7hVvUzp07efDBB1mwYIEI0IQ6KSgoYNSoUZSUlCDLMqtWrbqpArT6EEGaIDSRDL2JEouSuc4S053CLWrs2LFcunSpuYch3IQ8PDy41WbKxJo0QWgitvVoIII0QRAEoWYiSBOEJpJ6TeltqHVSielOQRAEoUYiSBNajZ+S07n7vX2YLdaaD24Gl3OUTFpwJy+yDMU1HC0IgiDc6kSQJrQahy9c47creeQV1r1OT1NIvVaAv4eWAB9XkUkTBEEQaiSCNKHVsAU+hqLKlcZbgtRrhQT4uOKn04o1aUKjUqvV9jppYWFhLF++3F7hfvfu3UiSxJo1a+zHHz16FEmS7G145s6dW2NTbdtzBAcHM336dAoKCqo9vjatiBpDfHx8jVXwyzZhr3i/l5eXvfn22LFj6zWGY8eOsW3btnqd21jKvi+7d+8u13GiNj9/m9jYWCRJIjk52X5fSkoKkiTZ65sBZGVlodFoePzxxwEqNZl3JDAwkJCQEHs9uIsXL9b69bUWIkgTWg1bgdiWHaS54e+hpaDYgrGFjlO4+dna9Zw8eZIdO3awbds2/v73v9sfDwkJYePGjfbbGzZsICwsrF7PceLECZydne0FXVuaqKgo3n333XqfHxMTw7Fjxzh27Bg7d+6s1zXqE6TJslyudVRDK/u+VAzS6mL9+vUMGzasUhHboKCgcj1Pv/rqqxq7Szjy888/c/z4cUaOHMkbb7xRrzFW5KhlWGO5kaLJIII0oRWxZ9JMLS/4sVhlfs+9nkkDscNTaBpt27Zl9erVvP/++/Y2O126dMFkMpGeno4sy/z444/ccccd9X6OmJgYe+ui5cuXExwcTHBwsL31U1mzZ8/mm2++sd+eNWsWW7duZd26dUyZMoUJEybQo0cPnnvuOfsx69evJyQkhODgYBYuXGi/X6fTsXDhQvr378/YsWM5fPgwI0eOJCgoiK1btwLls2SHDx9myJAhREREMGTIEE6dOlWv15uZmcnUqVMZMGAAAwYMYP/+/VVev7i4mFdeeYWNGzfaOw5UzCIFBweTkpJCSkoKffr04dFHHyUyMpLLly+zfft2Bg8eTGRkJNOnT8dgMACwaNEi+vbtS2hoKM8880ylMYaEhJCbm4ssy/j6+vLpp5/a3/+dO3fa35eUlBQ+/PBDVqxYUa7jQFxcHEOGDCEoKKjKrJrBYGD//v2sWbOmUpDm6upKnz597CUzNm7cyIwZM+r1fgMMHjyYK1eu2G9//vnnDBw4kPDwcB5++GF7MLRmzRp69uzJyJEj+fOf/2zP3M2dO5cFCxYwatQoFi5ciNFo5MEHH2TAgAFERETYP5MnT560Xzc0NJQzZ85gNBq56667CAsLIzg42P4Hzq5du4iIiCAkJIQHH3yQoiLl3/TAwEAWL17MsGHD+Oqrr+r9mkHUSRNakZY83Xk134TZKtPZxw0/nVJ8MctQRFffpmvUKzSDHxbBVcf9BeutfQjc8c86nRIUFITVaiUjI8N+37Rp0/jqq6+IiIggMjKyXEPtujCbzfzwww9MmDCBI0eOsHbtWn755RdkWSY6OpoRI0aUaw01b948VqxYwb333kteXh4HDhzgk08+4fPPP+fYsWMcPXoUrVZLr169eOKJJ1Cr1SxcuJAjR47g4+PDuHHj2LJlC5MmTcJoNDJy5EiWLl3K5MmTeemll9ixYweJiYnMmTOHe+65p9xYe/fuTVxcHE5OTuzcuZMXXniBzZs3V/v69u7dS3h4OADTp0/nxRdf5Mknn+Spp55i2LBhXLp0ifHjx5OUlFTl9RcvXkx8fLy93+drr71W5fOdOnWKtWvX8sEHH5CVlcUbb7zBzp07cXd3Z+nSpSxfvpzHH3+c2NhYkpOTkSSJ3NzcStcZOnQo+/fvp2vXrgQFBbF3714eeOABDh06xKpVq+zBU2BgIPPnz0en09mDvTVr1pCWlsa+fftITk7mnnvuYdq0aZWeY8uWLUyYMIGePXvSpk0bEhISiIyMtD9+//33s2HDBtq3b49araZjx478/vvv1b7fVfnxxx/tLcySkpLYuHEj+/fvR6PR8Oijj/LFF18wduxYXn/9dRISEvDw8GD06NHlMsSnT59m586dqNVqXnjhBUaPHs3HH39Mbm4uAwcOZOzYsXz44Yc8+eSTzJo1i+LiYiwWC9u2baNjx458//33gNKj1WQyMXfuXHbt2kXPnj154IEHWLVqFX/7298ApeH7vn376vVayxJBmtAqWKwyOcaWG6Sl5ijrdQJ8XPEtDdIy9WKHp9B0KrYAnDFjBvfddx/JycnMnDmzztNdtv6goGTSHnroIVatWsXkyZNxd1f++JgyZQp79+4tF6SNGDGCxx57jIyMDL7++mumTp2Kk5Pyq2jMmDH2LgR9+/bl4sWLZGdnM3LkSPz9/QEl8xYXF8ekSZNwdnZmwoQJgJI50mq1aDQaQkJCSElJqTTmvLw85syZw5kzZ5AkqVbNwGNiYspN24HSNSExMdF+Oz8/H71eX6/rV9S1a1cGDRoEwKFDh0hMTGTo0KEAFBcXM3jwYDw9PXFxcWHevHncddddDtfTxcTEEBcXR9euXXnkkUdYvXo1V65coU2bNrVaHzhp0iRUKhV9+/YlPT3d4THr16+3ByX3338/69evLxekTZgwgZdffpl27dpx33331fm9AKXvaXp6Om3btrVPd+7atYsjR44wYMAAQPkstm3blsOHDzNixAjatGkDKEH16dOn7deaPn06arUagO3bt7N161Z7RtNkMnHp0iUGDx7MkiVLSE1NZcqUKfTo0YOQkBCeeeYZFi5cyMSJE4mJieHXX3+lW7du9t6oc+bMYeXKlfb3o76vtyIRpAmtQraxCGvp76AWGaSVFrIN8HFFp1X+txNN1m8Bdcx4NZbz58+jVqtp27YtSUlJALRv3x6NRsOOHTt455136hyk2daklVXbXtCzZ8/miy++YMOGDXz88cf2+8tm89RqNWazudprajQaJEkCQKVS2c9XqVQO1x29/PLLjBo1itjYWFJSUhg5cmStxluR1Wrl4MGDuLq6lrv/iSeeqNX1nZycyq03M5lM9u9tAS4o7+ftt9/O+vXrK13j8OHD7Nq1iw0bNvD+++/z008/lXt8+PDhrFy5kkuXLrFkyRJiY2PZtGkTMTExtXqNZX8Wjn4G2dnZ/PTTT5w4cQJJkrBYLEiSxFtvvWU/xtnZmf79+/Ovf/2LkydP8u2339bqucv6+eefcXd3Z+7cubzyyissX74cWZaZM2cOb775ZrljY2Njq71Wxfd28+bN9OrVq9wxffr0ITo6mu+//57x48fz0UcfMXr0aI4cOcK2bdt4/vnnGTduXKUsbXXPdSPEmjShVShb0qIlLsi3BWkdvV1p4+6MJEGWKMMhNIHMzEzmz5/P448/bg9obBYvXszSpUvt2YUbNXz4cLZs2UJBQQFGo5HY2FiHQcHcuXPt69VqWkweHR3Nnj17yMrKwmKxsH79ekaMGFGv8eXl5dGpUycA1q1bV69rAIwbN84+dQnYg9Wqru/h4YFer7ffDgwMJCEhAYCEhAQuXLjg8HkGDRrE/v377ev9CgoKOH36NAaDgby8PO68807efvvtSsEyQOfOncnKyuLMmTMEBQUxbNgwli1b5vDnUXF8tbFp0yYeeOABLl68SEpKCpcvX6Zbt26Vpviefvppli5diq+vb52uX5arqytvv/02n376KTk5OYwZM4ZNmzbZp+9zcnK4ePEiAwcOZM+ePVy7dg2z2VztVPb48eN577337AHo0aNHAeUPmqCgIP76179yzz33cPz4cX7//Xfc3Nz44x//yDPPPENCQgK9e/cmJSXF/rP57LPP6v25rI4I0oRWoWyQ1hI3DqReK6CdpxYXjRontYo2bs4ikyY0GttUZL9+/Rg7dizjxo3j1VdfrXTckCFD7Ot8Knr44YcJCAggICCAwYMH1+p5IyMjmTt3LgMHDiQ6Opp58+aVm+q0adeuHX369OFPf/pTjdfs0KEDb775JqNGjSIsLIzIyEjuvffeWo2noueee47nn3+eoUOH3tCuu3fffZf4+HhCQ0Pp27evfWdrVdcfNWoUiYmJ9o0DU6dOJScnh/DwcFatWmWfMqvI39+fdevWMXPmTEJDQxk0aBDJycno9XomTpxoL02xYsUKh+dHR0fbrx0TE8OVK1cYNmxYpePuvvtuYmNjy20cqMn69euZPHlyufumTp3Kl19+We6+fv36MWfOHIfXeOONN+yfsYCAgGqfr0OHDsycOZOVK1fSt29f3njjDcaNG0doaCi33347aWlpdOrUiRdeeIHo6GjGjh1L37597dPnFb388suUlJQQGhpKcHCwvVzIxo0bCQ4OJjw8nOTkZB544AF+++03+2aCJUuW8NJLL+Hi4sLatWuZPn06ISEhqFQq5s+fX6v3ri6k2qanbxZRUVHyrdaAVYCv4i/z7KbjAPxpaCCv3l33rd6N6f7VBymxyGx+ZAgA41fE0dXXjdUPRDXzyISGlpSURJ8+fZp7GC1aQUEBISEhJCQkVPlLVBDqw2AwoNPpMJvNTJ48mQcffLBSMNmcHP37IEnSEVmWHf4yEJk0oVWwtVnyctW02OnOAJ/r61f8PURBW+HWtHPnTnr37s0TTzwhAjShwb322mv2IsvdunWrMlN8sxAbB4RWIVNfhE7rhL+HtsVtHDBbrKTlmcoFaX46Z45cMjbjqASheYwdO5ZLly419zCEVqqmLgY3G5FJE1qFTEMR/h5a3LVOGIpurMJzQ7uab8JSWiPNxk+nJUtfXOvdcIIgCMKtRwRpQquQqTfhr9PioXXCYGpZDdYv59jKb1wP0vw9tBSWWDAWt6yAUhAEQWg5RJAmtAqZelsmTd3ipjtTr10vZGtjbw0lynAIgiAIVRBBmtAq2II0nVaDsYVNd6ZeK0SSoIO3i/0+Pw/Rv1MQBEGongjShJueqcRCvsmMv4cWDxcn9C1sujP1WiHtPV3QOl0vGOpfmknLFJk0oYFlZ2cTHh5OeHg47du3p1OnTvbbxcVN04pswYIF9OvXj0WLFpGens7AgQOJiIioc1eDhIQEfvzxx0YapSC0fGJ3p3DTs2Wj/HVaCorNGIstyLJcqbp6c0m9VlBuqhPAz+N6k3VBaEi+vr72CvSvvfZaucbZNrIsI8syKlXD/50uyzIfffQR2dnZaDQaPv/8c0JCQlizZk2dr5WQkMCJEyfs/TkF4VYjMmnCTc+WjbJNd1qsMqYSaw1nNR2lRppbufvauCmtoTINosm60DTOnj1LcHAw8+fPJzIyksuXL+Pt7W1/fMOGDcybNw+A9PR0pkyZQlRUFAMHDuTQoUOVrmc2m1mwYAEDBw4kNDSUjz76CIC77roLo9HIgAEDWLZsGS+88AJbt261Z/J++OEHBg8eTGRkJPfddx9Go1KK5pdffmHw4MGEhYURHR2N0Whk8eLFfPHFF4SHh7Np06YmeJcEoWURmTThplc2SLMt0tcXleDq3DD9CG9EicVKWl5hpUyak1qFr7uzmO68BTjqsT1jBjz6KBQUwJ13Vn587lzlKysLpk0r/9ju3fUfS2JiImvXruXDDz902IDc5q9//SvPPfccgwYNIiUlhYkTJ3LixIlyx6xevZq2bdty+PBhioqKGDRoEOPGjWPr1q34+fnZs3ne3t6cOHGCt99+m4yMDP75z3+ya9cu3NzcWLJkCe+88w4LFizg/vvvZ/PmzURGRpKXl4eLiwuvvPKK/VxBuBWJIE246dl6YPp7aNG5KB9pY5EFPJpzVIqreSasMuVqpNn46UTXAaFpde/enQEDBtR43M6dOzl16pT99rVr1ygsLMTV9fofG9u3bycpKYkNGzYASnPxM2fO0LFjxyqve+DAARITExkyRGmPVlxczLBhw0hKSqJLly5ERkYCiE4EglBKBGnCTS9TX4QkQRt3Z3RaDdBymqxfdlB+w8bfQysyabeA6jJfbm7VP+7nd2OZs4rc3d3t36tUqnLFlE0mk/17WZY5fPgwzs7OVV5LlmU++ORedtwAACAASURBVOADxowZU+7+6jJ0siwzYcIEPvvss3L3JyQktJg1pILQkog1acJNL1NfRBs3ZzRqFe5aZYqzpdRKS3VQyNZGZNKE5qRSqfDx8eHMmTNYrVZiY2Ptj40dO5aVK1fab9umLssaP348H3zwgT0oO3XqFIWFhdU+55AhQ9izZw/nz58HwGg0cubMGfr168fFixdJSEgAID8/H4vFgoeHB3q9/oZfqyDcrESQJtz0bDXSADxsmbSWEqRdK0BVoUaajZ/OmSxDkWgNJTSbpUuXMmHCBMaMGUNAQID9/pUrV7J//35CQ0Pp27cv//nPfyqd+/DDD9OjRw97M+tHHnmk2iwaQLt27VizZg333XcfYWFhDBkyhNOnT6PValm/fj2PPPIIYWFhjBs3jqKiIkaPHs2vv/5KRESE2Dgg3JKk1vYLIioqSo6Pj2/uYQhNaPIH+9FpnfjsoWjOZxoY/a89rLgvjMkRATWf3MgWbDzGLxdy2L9odKXHVsed4x/bkvnttXF4uGiaYXRCY0hKSqJPnz7NPQxBEFogR/8+SJJ0RJblKEfHi0yacNPL1BfZi8PaNg60lCbrqdcK6eRgPRqUaQ11C5ThMFusWK2t6w9CQRCExiaCNOGmJsuy4+nOFrJxwFEhW5vrQVrrX5c24v/t5tODKc09DEEQhJuKCNKEm5q+yEyR2WoP0lw0KlQSGFvAmrRis5W0fJPDTQOAfcytfYdnkdnCldxCfk3Na+6hCIIg3FREkCbc1MoWsgWQJAmd1qlFbBxIyytElqHzLZ5Js2U1bYWGbwWtba2vIAg3rj7/LoggTbip2YO00oAHwMNFg74FTHemXqu6/AYodd1UUuvPpNkC5ss51ZdnaC1cXFzIzs4WgZogCHayLJOdnY2LS+Wd/tURxWyFFi9Db8JskenoXTkjVTGTBuCuVbeI6c7UagrZAqhVEm3cW3+tNFvAnK43UWS2oHVq/nZdjSkgIIDU1FQyMzObeyiCILQgLi4u5Urd1IYI0oQWb9Hm37iaZ2LbkzGVHnMUpLWU6c7Ua4WoVRIdvKr+y8lP50ymvnXv7rT9LGQZfs810c3PvYYzbm4ajYZu3bo19zAEQWgFxHSn0OIdT80l6Wo++aaSSo9lGorQqCW8XK/XGXPXOqFvAUHahSwjHb1dcFJX/b+Zv4fW3nu0tSq70/ZWWpcmCIJwo0SQJrRoGXoTWYZiZBmOXcqt9LitRlrZvn8eLk4tYrrzbIaB2/x11R7jr9OSdYusSYNbZ12aIAhCQxBBmtAkjEXmehUzTU673rcv4dK1So+XrZFmo9M6NXudNItV5kKWkdvaVh+k+ZVm0lrzIvOyWU2RSRMEQag9sSZNaHR5hSUMeXMXvjot9w3ozPSoANp61G6HS/LVfAA6ermQUEUmrWOFvpju2ubPpF25VkiR2VpjkOav01JstqIvMuPZSltD2QJmfw8tl6+JTJogCEJtiUya0OiS0vIxFlvQqCX+339PMeTNn3j4s3h+PpVRY3YtKU1Pe08XRvTy5+ila5WOzzRUzqR5aJ0wFNcvc9dQzmYqGcCaM2nOAK16ytNYZEatkujRVicyaYIgCHUggjSh0Z26qgQsX8wbxE9Pj+ChYd2IT7nGn9b+j3/Hna/23KS0fPp08CCiiw96k5nzWQb7YxarTLahqFyNNFAyabIMBSXN17/zbIYyzu41rEmzFbRtzbXSDEVmdFonOvu42WvHCYIgCDUTQZrQ6E6l6/Fy1dDOU0uQv47n7+zDwefHENLJi11J6VWeV2y2ci7TQO8OnkR28QEg4eL1Kc8cYzFWmcpr0kqbrDfnlOfZDAN+Ome83ZyrPc429tbcZF1vUoK0AB9XMvVFmJoxeBYEQbiZiCBNaHSnrurp1c6j3A5MZycVg7v7cjw1r8pf2ucyDZRYZHq39yDIzx0vV025zQOOaqSBsnEAaNauA+cyjTVm0eDWaA1lKCrBw8WJzm2UzgsimyYIglA7IkgTGpUsy5y+qqdXe49Kj/Xv6kOxxcqJK44bb9s2DfTt4IlKJRHRxbt8kGaoPkhrrkyaLMtK+Y0a1qMB+Lg5o1ZJt8R0p63zwmWxLk0QBKFWRJAmNKoruYXoi8wOg7SorsoUZvzFyqU1QNk04Oyksleoj+ziw5kMg72o7fW+neV3d9qCtIboOvDkhqP8eOJqnc7JMhSTV1hSqyBNaQ3l3LozaSYz7lqRSRMEQagrEaQJjep0urJpwFGQ5qvTEuTnTnxKjsNzk9Ly6dlOZ6/YH9nFp1xRW1uQZtshaWNbk3aj051Wq8zWX39ny9ErdTqvtpsGbPx02ladSdMXmdG5OOGv0+LspCI1R2TSBEEQakMEaUKjSi7d2dmzXeUgDSAq0IcjFyuX1rCd27u9p/12WGcvJOl6UdtMfRHuzmrcnMuX+2uo6U6T2YIsw29VTMdW5WymEqTVJpMGynRta8+keWidUKkkArxdRSZNEAShlkSQVkclFitbjl6pMvsjlHfqqp6OXi7lemuWFdW1DdcKSsqV1gBlIX2mvojeZTJwHi4aerXzsBe1dVQjDRpuutNYpGxouJJbSI6x9rsvz2UYcHdWV9tYvSw/nXOr3t1pW5MG0MnHVaxJEwRBqCURpNWRWpJY/F0iX/5yqbmHclM4dVVPTwdTnTb9A0vXpaWUX5dmawfVt4NnufsjuvjYi9pm6k0OgzT3BgrSCoqvn1+XbNq5TAPd2+rK7Watjn/pdGdrbA1lscoUFFvsU9ABolaaIAhCrTVrkCZJ0seSJGVIknSiisclSZLelSTprCRJxyVJimzqMVakUkkMu82PuDNZrfKXakMqsSh1zhytR7MJ8nOnjbtzpc0DSWnKzs6K50Z08UZvMnMu0+CwbyeA1kmFRi3dcJBW9vyqdqA6UpvG6mX5e2gptljJb+Z+o43B9h7aMmmd27iSYyxu9rZdgiAIN4PmzqStAyZU8/gdQI/Sr78Aq5pgTDUa1sOPLEORfb2V4NiFLKO9zllVJEmif1efStPHSVfzaeuhxbdCNwF7UdtL15QgTVc5SJMkqUGarBcUX6/f9ltq7YI0Q5GZtDwT3Wu5Hg1ad600W5DmUSaTBmKHpyAIQm00a4N1WZbjJEkKrOaQe4FPZSVldUiSJG9JkjrIspzWJAOsQkwPPwD2nsmkT4XpOOG6UzVsGrAZEOjDjsT0cpmx5DS9w/fWVtT24Lls8k1mh5k0qF+T9YICyMiA7GzIyoIcJysA/mpPtn3qw4vJUFwMRUUgSTBrFgwcCFeuwOefg4cHGOQiClN8IdsbvV65ryZebsp6vdyCkjqN92ZgtGfSlNfYubRWWuq1gmozrIIgCEIzB2m10Am4XOZ2aul95YI0SZL+gpJpo0uXLo0+qA5ervRoq2PvmSz+Mrx7oz/fzerUVT1qlVTjLsf+XdsAcORiDhOCO1BisXI2w0BMT79Kx9qK2v6UnAFULmRro9M6oXcQpOXlwW+/wcmT0K8fDBsGly5BVBRkZpY/9s/PakAFfdr4E78ziKU/y2i1Es7OIMsQHa0EaSkpsGiR7Sx3YBCPb4QOm2HKFDh4EJ59Frp1g8BA6N4dgoMhJAS0WuybKvILW1+QZiuDoquQSbssynAIgiDUqKUHaY5WXldaCCbL8mpgNUBUVFSTLBSL6eHP579cxFRiwUWjboqnvOkkX9XTzc8drVP1709wJ0+0TiriU64xIbgD5zONFFuslTYN2ER28WH3KSWiqjZIMyrTlSUlSrB0/LgSkNn87W9KkNauHUyapARQ7duDry/4+UGS0cD2n+CuGHf2PPs9n84byIie/pWea/BgMBpBr4e3tpxnw950VkyKZtAgZTWB2QxOThAXB19+CVYlQceBA8q5Z49ryd1/G3u6qujfETxbUXK24po0P50zLhqVmO4UBEGohZYepKUCncvcDgB+b6axlBPT04+P91/g8IUchjv4xS3AqfR8Qjt513ic1klNWIA3/yvdPGDbNFC2RlpZtnVpcL3bgCzD2bPw889K8LPjx0jc2hvgEdBowGSCoUNh/nwIDVUyWZ1LP1laLaxeXfl5zuxXymJEB7VBUimbBxwFaSoVuLkpX3rXHPpEFjNj2vXlnjExsHu38n1JCVy4oGTzQkOV+xKPOZO3ryd/3yex+DElwzZkCCxbBu7uNb59LZptXaBtTZokSQT4uIkyHIIgCLXQ0oO0rcDjkiRtAKKBvOZej2YT3a0NzmoVe89kiiDNAWORmcs5hUzv37nmg1FKcfwn7jyFxRaSrubjrFYR5O84QrEVtbWWqOyZtHvuge++Ux5v2xZ8u5hw7poNKFOmO3bU4zWUbhxo7+VCoK9brTYPnM000LNt1WutNBro2VP5snnxeRUfZ29nYvtg2hZ24sAB+O9/4YMPlMf/8Q/IyYHx45XMn6tr3V9LczEUKVO4tkwaKOvSRCZNEAShZs1dgmM9cBDoJUlSqiRJD0mSNF+SpPmlh2wDzgNngf8AjzbTUCtxc3YiKtCHvWeymnsoLVJ17aAcGRDog9kqc+xyLslpem5rq0OjrvzxvHIF1v1HQ96moVx+fywezkpLqBkzYOVKOH0arl6FGYsu4RlxudL5dVFQbMZJJaF1UhHcyavGWmnFZisXswvo3rZu6S+NWoWHh0z7vnm89hps3w7nzimbEwBOnYL33oNx46BNG7j3Xvj663q+qCZmW5PmXiZIC/BxE2vSBEEQaqG5d3fOrOFxGXisiYZTZzE9/Fn6YzIZ+Sbaetauuvytwrazs7ryG2XZpjCPXMwhKS2fYT3KbxrYs0dZnH/okHLbv7MLnYZcwVwcCK4we3b56+m0Tg3SccDNWY0kSYR08uK742lcMxbj4+7s8PhLOUYsVrnW7aDK8nLVkFdm40DZOriffKJk1eLi4IcfIDZWyRZOmaJM8372Gdx1l7KWrqWpuCYNlFpp+SYzeYUlVXaiEARBEFr+dGeLFtPDj6U/wr6zWUyJDGju4bQop9L1uGrUdC7dzVcTbzdnerbTsT0xnQx9EUFeXqxbB+HhypeLi1L64o03YOpUCOyuwVDUAa8q4iF3rRMFxRYsVhm1qnaV/ysqKDbbM0AhnbwApfNAVdPbtsbqt/nXvbSEZ4Ugjau/QeI3YDYByp7RO9Rwx0R4+04Jo0kD24s5fq49cx59HI2ThYmDz/HAHae5c3g6zq4aUDkIgLQ68O6ifLl4l48GG4HBZMbNWV3uZ3C9VloBXq5ejfr8giAINzMRpN2Avh088XV3Zu8ZEaRVdOqqnp7tdKjqECBFdmnD2q+MGH8L55l3OlJkgoULlSAtOhoSEsoera52V61tobqx2IynS/2yNbZMGkC/OgRpdZ3uBCWTVlhghF83QvwauPwLSGpwqrx7VQXYwsBQGY4+GstnR6fwRcI0YvdOxNc1mx2zJxHR4Xj1T6r1VIK1Nt2gfRh0CIX2oeDRvsGCt7J9O20C7LXSCunXUQRpgiAIVRFB2g1QqSSG9fBj75ksrFa5TgFJa3fqqp4xfdrW+nhZhi2Le5JxXItKW8IDf7Tyl4fUDBpUv+fXOavxxIDpykk81QYoLgBzIZQUQkkBmIuUJ63G0KxLRFjNcDARL+BpzzP4n9gHLo43Q3RKTuUpXSFuRy7WebwPFRwhOv+/EKuHNt1h/D8gbCa4tan2PAkIL/1aWmRm+48FbNzoTp+/fwHOFjZ87U5JicT0e424uMhgyoPcS+W/0k9C0rfXL+ruD91Hw6QPla2rN0BfZLbXSLPpLGqlCYIg1IoI0m5QTA9/vjn2O8lX9fTt2IoKXNXCmXQ9z246zrLpodxWZkdjlqGIbGNxjZ0Gjh6FjRuV3YsqFcz+o8SKPcfoGpXD2tdG124QpnxlavDqcUg7DlmnwZDOdP1V7ncpgc/q//r+YPvmv8p/ngDIvn67oskVjq+LMaiJkwYwavYi6DaiXsGRk9aJO+914s57AZSizp9shh9/hKde9uehh+CRRyCwb3jlk035kH5CeS/PbIfjGyHmafDvVfcXU4bBZMajQibN202Du7Na7PAUBEGogQjSblDZFlG3WpCWcOkaxy7n8uC6eLY8NpQ2pQvqr28aqPx+yLJSXuKtt5SaZm5uMGcO9OkDLzyjYWtJFr2qqI9mdy0FflkNp7bBtQvX73dvC237QOAwUot1fHLcxOzbB9CtSyA4u4PGVflyclWmEaXqA6EZ/z5IO08X3psZAcDa/Sms2HmauGdH4e1WfgrVKssMevMnpkR2YtGE3tWP34FlO86z9n/pJHcfVedzq7NtG/z0k7Lx4F//UmqvLV4ML75Y4UAXT+g6RPnqPhrej4JLh248SHOQSZMkic5t3ESQJgiCUAMRpN2gdp4u9Grnwd4zWTw84tZqEZVlUIq9Xs03Mf/zI3z+UDTOTip74/mK5TcuXFDKR/z2G3TsqARqf/4zeJfWu5UkiVV/7O94DZksw+XDcPB9SP5OCbB6jIOIWdfXU3m0tx+emZLDx0cPMqrTQLoF1a+OXabZlfauXuCqDLBXYAD5XOF4Ngz3LV+kNy23kIwSFzp37GA/vi7cdR6YStIoMltq7NBQF5IEY8YoX6mpSimPAQOUx65eVdb53XFHhSVovreBm6+yLq7/nBt6fmORGT9d5c0jAT6upIqCtoIgCNUSQVoDiOnhx6eHLlJYbMHV+dZpEZWpL8JD68Qbk4N5csMxXoz9jbemhXL6qp427s746ZwxmZTaZaGhEBAAnTrB00/DzJngXLGShSGDyIzvIL9ivWIZzv0MV+LBxQuGPgkD/gxenaocm21Xpq3ifX0Yisy4a6//PKvbPHB9Z2fdy2/A9f6deYUltPWo22do3f4LDOruW2WHBpuAAFi69Prtjz6Cl19WOhy88opS0kOlQonYOkcrmbQbpDeZ7c3Vy43Fx41D53OQZRmpkXeYCoIg3KxEkNYAYnr689G+CxxOyXHYNqi1yjIU4eeh5d7wTpzLMPDuT2fp0U5Hcrqe29p4snKlxJtvKr0qL1xQymj88EOFixgyIGkrnNwCF/eDXNrYsmLbVt/ucOcyZTG9tuZAyLaj0FGT9doqKDLj5nz9fxEvVw1dq+g8YA/S6lEjDZQSHKA0WW/rUfuae/mmEl77NpEHh3bjlbv71uk5n3sOunSBN9+E6dOVVlmvvgrTpqEEaae2gSETdPX/TBuKzPadtmUF+LhiKDKTW1BSZd05QRCEW50I0hrAwMA2ODup2Hs6s3UFabKsrP+6uB9S9kNmUrkdkU9lGZV29/925ylgqlcBmT9CytEprD3wEF/lQ8xtv/LaxLVo1x2tFHdhNUNGohKY+fWEmGeg32RlXdkNZldsQZqxnkGa1SpTUGIpVykfILiTF8cu5VY6/tTVfLzdNPZ1eXVVNpNWF7b1f3U9D5RM5gMPwKxZ8H//B6+/rvx32jSgyyBkGaTLv0CfiXW+NoAsyw5LcAB0bmOrlVYogjRBEIQqiCCtAbg6q+nX0ZOTv+c391CqJstwYjOk/Vq74/VpSmCmL+1n7+YLHcLKFUjNzMxWMk06LyQgwF1m684g3vzxeaK7n+DLx1cxss/J0nirnePn6XUn9JsEbfs2aGHVG53uNJktyDK4V5i+Du3kxfdlOg/kGIv5x7YkNh1JZXy/dvWeuvN2UwKVugZbyaXN6OsTpNmo1cr084wZkF/6EU68FsGf1vzEEtfjjO1Tv+uaSqxYrHKlQBeu10q7fK2AkABRK00QBMEREaQ1kE7erpyoobdjszEXwfdPw9HPQF3zrkZAWfvVdTB0HQqBw8C/d6Ug6pHF27mzRweuuIRw4QI8+ijMuNvEoZ5nWP7YbbTzerWRXlDNnJ1UaJ1UGIrrF6QZi5Tm6m4VAgxb54HjV/LI1Bex5PtE9CYzj47szhOje9R7vLZMWm5B3YKtpNJMWv4NBGk2ajX4KN25SM/RcrUwgNuf78/tP8E//wmRkXW7nt7WXN3hdOf1rgOCIAiCYyJIayCdvF3Znpje8ora5v8OG2cri+6HPwsjX7jhAqUAJRYrV8+78n9fd+cfvyrrmf7yF2jn5cIXL9Q/WGlIOq1TvTNptmnSipk02+aBv204yrWCEvp39eEfk0Nq3Ui+KvWd7myITJojo0bBqU//zar3innjf6/Tv7/EnDmwdm3tE562975inTRQXq+nixOXc0QZDkEQhKrc+G9rAYCO3q4Um61kG4ubeyjXXToE/x4Bmckw4zMY/VKDBGjp6fDAXCtXPxlG+iUt778PR46AUwsL+XUu9W+ybizNwJXdOABKcNG7vQdmq8ySycF89fDgGw7QADxLs011CbasVvmG1qTVxKV7FE8Neo/zuw/z4osQGHg9QDOZaj7fUXP1sm5rqyMprQUvERAEQWhmLezX6s2rg5eyIy8trxB/j8r9Fptc/FrY9ix4d4Y5W5XF+A0kIwO2bFLjOfA8H7+tY+rgKtabNTN3Z6d6bxwoKFamOx0FGJ89FI1GLdnXkTUEJ7UKndapTsFW6rVCjMUWvFw15BY2wh8HnaMB8MrdzxtvRNvv/u9/4cEHlSnQWbOqjvttmTRH050A/bv68MmBi5hKLNX2YRUEQbhViUxaA+norSyE/j23madvZBl2vgbf/Q2CRsKff26QAO2772DRIuX7kBDY8HMWPqOSCexYv+blTUHn4oT+Bqc73bSVgwd/D22DBmg2Xq6aOgVpSVeVLNTAbm0wlVgpMlsadkDuvuDbQylqW4avr1KM+IEHYMgQiI93fLq+hkxa/65tKLZYW+5aTkEQhGYmgrQG0qk0SLuSW4t5oMZiKYEtj8C+FRD1IPxhY72q35d18aLSJeDuu+Hbb8FoVO4v0RQB4KdrAVnDKnhonezTlnVly6S5OzddstnLVVOnDQDJaXokSSkBA40z5UmXaCVIs1rtd0VFwS+/wLp1yudj4EAHbaYosyatmkwaQPzFaw0+bEEQhNZABGkNxNtNg6tG3XyZtCI9fDkDfl0Po16Cu5aDqv5TSMXFynRWnz6wc6fSwunYMXB3Vx7PMrT8IM39BjYO2NZTuTVhBwkvV02ddncmX80n0NeddqVT7Q2xw7OSzoOg8Bpknyl3t0ql9FxNToYnnoBu3ZT7rdbrpfRqWpPm76El0NeN+BQRpAmCIDgigrQGIkkSHb1dmidIM2TAuolwfg/c/S6MePaGa45lZyuV6O+4A5KS4NlnQVNmZjNLX4SLRtWkQUxd3cjGgQLb7s4qAozGUOfpzrR8erf3qPfO0FrpMkj5bxUtory84J13YN485fZ//qPsDE1OLhOkVZFJA2XKM+HSNeQyRZIFQRAEhdg40IA6ervye14dpzstZjj4Hhz7Eqz1XFNUkK3UQrv/S+g1oX7XAPLylH6OCxZAhw5w4gR07uz42GxjMX46bYvuu+ihvZHdnaXTnQ7WpDWWugRpxiIzF3MKmBwRgHc9a6zVSh2brbu5wfHjEBYGI+73QtNBXW3D+AGBPmxOSOV8lpHu9ex7KgiC0FqJIK0BdfRyJflqRu1PyEiCLY/C7wkQGAO6eu6SVDnBwL9AQP/6nQ9s2aIUo01Ph2HDIDq66gANSvt2tuCpTlCyYKYSKyUWKxp13ZLGBcVmnFQSznU870Z4udU+SDudrkeWoXeHRs6k1bHZ+uzZMG4cPPkkbPzUH5d2Q4mfpqxjcyQqUFmXdiTlmgjSBEEQKhBBWgPq6O1Kpr6IIrOl2uwBFjPsfxv2LAWtB0xfp/SsbAZXryprijZtUrIfW7dW/Qu1rEx9kb1qfEtVtn9nxd2YNRUdNhZZcHNWN2mm0MtVQ5HZWquSFMml9dH6dvC0v85GCdKgzs3W27WDDRugoPN5/ru6Izk5VR8b5KfD201D/MUcZgyo5q8CQRCEW5AI0hrK5cOMzP4venUaxp+T0VbVNNreQ/OYEpjduQzc/Zp2rGWGYltz9uab8PTT5dedVSfLUExElxvbOdrYbMGLoUKQdjbDwF3v7mXzI0MI7uS4b6SxyNyk69HgeteB/MKSmoO0tHx0Wic6ebtiW83VaEGabV1aHZuttw3OYcTLvzNu3DAA3n9f+UMgJub6MSqVRP8uPmKHpyAIggMiSGso3z5JWEYiYRpgfw3HuvvD9E+UxuLNICNDWfCt1cIHH0CbNtCrV+3Pt1hlcowtf7rTtmC94rq0XUnpFJmtnMs0VBmkFRRbmnxTRNlpy7aeLtUem3RVT6/2HvZsoEcdC+HWSYdwUDvD5UN1CtIMRSV465T3sKgI3nsPzpxRpkKXLFHWrwH0D/RhV3IG2YYifFv4Z0oQBKEpiSCtoeRfIb/fHxl8ZBT/mBzCveEdqz7WyRXUzfPWf/WVsvbs4YfhjTdg8OC6X+NaQTFWuWWX34Dy051l7TubBVS/0N5YbK6ydERjsTdZryHYkmWZ5LR87g67/hnzctOQ1xgbBwA0LtAxAi79UvOxZRiKzLT1UIJNrVZpHbZoEbz9NmzbptRZGzwYoroqdd6OXLzGuH7tG3r0giAINy1RgqMhlJjAlIerX1eMuHLJoFLWmlX11QwBWk4O3H8/zJih1LT6wx/qf62boUYaXC+fUbbrQJHZwv9SlEVS1QVpBUWWSn07G5s9k1ZDsJWWZyLfZKZ3B89y5zZaJg2UdWlpx6Ck9iVmDKbyga5Op0x5/vSTUodv1Chlo0pogBcatcQRMeUpCIJQjgjSGoIhHQCNV3v8dM78ntfMraEq2LdPaeW0eTO8/jocOAB9+9b/ell6pU+kn67hWyM1JA8H051HL+ViKlGq51fX79JYbG7S8htArXdpJpe2g+pTprF7owdpPcaBpRjiltX6FEOR2WGNtFGjlDIdX3+tbDJw0ajpofMT69IEQRAqEEFaQzCUlt3Qtaejt2vztoZywNMT/P3h0CF46SVwusEEkS2T1tLXD7k7mO7cfzYLlQQ+NUwPnmpTugAAIABJREFUGovMzZdJqyHYSkpTdnb2asogrVsMhP8R9i2HiwdrdYreZMajiiljDw+4807l++++gx2vRhH3tQ8FRQ3cf1QQBOEmJoK0hmC4qvxX15aOXq6kNXeTdZQWTosXK9+HhsLRo9C//mXUyrEFaf4tPEjTOZju3H82i9AAbzr5uFa79stYbGnyTJpnrTNpejq3ccXD5fpW3EYP0gDu+Cd4d4HYv4Apv9pDi81WiszWWq3rGzAA+g8pJmtnH0aOsZKa2lADFgRBuLmJIK0hlE534tGeDqWtoapqcxOfksOKHaexWBunDY4sKwuzo6Nh1SrIzFTub8hyX1mGYpzVKjxdW/a+k+sbB5TsjN5Uwq+peQy9zRdvV2dyC6qe7iwoMjdpc3UAtUrCw6XmXZrJafn0bu9Z7j4vV02NGw5umNYDJq+GvFT4YWG1hxpr0RLKpl07+PZbiTbjj/PrETWhofDNNw0yYkEQhJuaCNIagiEDkMDNj07erhiLLeQXOm5HtGbfBd7ZdYa/f3uywfsVZmTAXXfBU0/BhAnw22/KNGdDyzIU4atzbtEtoUAJelw1agxFSvDyy/kcLFaZobf54eVWdVBjtcoUlFhwa+LdnVBzRsxUYuF8lrHcejRQdncWlxbCbVRdoiHmafj1Szi5pcrDamquXpG/h5bQsTnc89pJgoKotgCuIAjCrUIEaQ1Bf1UpSKt2oqO3KwBXqpjyPHY5Fw+tE58evMjKn8822BAsFhg+XNk5t3Kl0ubJr5Fq5N4MLaFsyjZZ338uC62TisguPni7Vr0mzWS2IMvg3gzN42sK0s5mGLBY5XI7O23nQSMWtC1rxEKlJMd3f4P83x0eYnvPPWqRSbPp39WHc8VXOXBAZu5c5b7YWKWHrCAIwq1IBGkNwZABOqW+ky1I+91BkJaebyItz8STY3swOaITy7afZsPhSw4vmXw1n3X7L2CtYVq0pESZ4lSr4V//gv/9T6mD1phJLiVIa9k7O210WicMpdOdB85mMyCwDS4aNd6lmTRH2UxbgNESM2lJacpasN4VM2lNGaSpNTDlIzAXQex8SNlf/uviAYpzLgEyOm0tW1gAUV19yDEWcznPiCQpn+1nnlHalH3wgfI5FwRBuJW07EVFNwvDVdC1BaCjt1K8M81BGY5jl3MBiOjiw5whgeQYi3kh9jd8dVpu76s0V0/8PZ93d53hx5PKZoTgTl5EBbZx+LQpKUrts9mz4bHHlKnOppClL6ZPhTVRLZVO64TBVEKG3sSpdD2TIjoB4O3qjMUqYygyl1uAD9h3GDZXJu1MhqHKx5Ov6nHRqOjq617pPGiiIA3A7zYYvwS+ewou7Kn0cBjwm9YV1fZecLIf+PUEFwefmR7jwCsAuN5sPT4lh+7+OjQapVzM3LnK5/vnn+Gjj5RuGYIgCLcCEaQ1BEMGtFUKj/m5a9GoJYdlOI5dzsVJJdGvoycatYoPZkXyh49+4fEvE3h9UjA7EtPZkZiOh4sTs6K78MUvlzifZXQYpG3ZAn/6E1it0L4Ji7TLsky2sQg/j5tkulPrhLHIwsFz2QAMvc0XUNZwgVLQtmKQZixWMmlN3bsTwNut+kxa8tV8erXzQF2hOby9W0FjdR1wJOpB6BQFhRXqm1nN/HriVxLiD3Gf1ghnd8GxLxxfwycQ5u8DrQfd/XX4uGmIT7nGfQO6AMqmgu+/V7LEzz8PCQnKTmXPm+NvBEEQhBsigrQbZbUquztLM2kqlUQHL1eH052/Xs6lTwdPe/Nsd60Ta+cOYNqqAzy36TieLk48NbYnc4cG4u6sZuP/LpPy/9k77zC5yrL/f55pO2V7ye4m2ZaQhBYCSegtIKCIFGmCioJIERG7vKL4Kr6CIiIqqC8vCj+QIgoiVWpooYQESICQXjZ1e5my05/fH8+cmdnd6WVbzue65kp2Zs6cZ+q5z12+3273sMfw++EHP4Df/U5Javz97zB7dvGfpsbAUIBASFKTzEB+guEoMbGzf4hlG7upsJk5YLpKw1TGZZ6aRmzj8WuZtLH/epRHyp1SylGDGVJKPt7t5OT96kdtV2lT78eYZdI0Gg9KePVHPXP4WXAep573CewVVvAOjHYr6PgQ/nYuPPsjOOP3CCFY0FTJh7uGy3sYDPD978Mxx6ieSz1A09HR2VvQg7R8GeqDcDDakwaq5DkySAuFJat3DPDZSLlNo9ph4YHLjuDFtR2cvmA65XFZnaZqO9t6PMPu//bb8PvfwzXXwM03K0/EsSSqkTZJMmllVhMuX4BlG3s4clZNNANVFQkyE2We3NGetPEpd6opzTC2EeXWbpefXreffRvLEm4H2QdpT63ezcptffzk9DwsKBKgTdRGJTisFeoST1kDHP1NWHYbzDsV5p1KW62D5Vt6EwapRx4Z85pdvlxl1/73f6GysqBL19HR0Zkw6IMD+RInZKsxvdLG7oHh5c5NXS5cviALmkYfURoqrHzh8JZhARpAa42dLZFM2ubN6rpjj4WPPlKZtLEO0AC6opZQkyNIKy0xsavfy87+oWipE2KZtETWUG7f+GXSUgVbm7pUr9o+00pH3VZmNSFEDkHaB7v421vb0g6oZIvLG0QIsJvTBLonXAf1B8Lj3wB3N601Djz+EF2Rk4FkfPSRspVatEiVP3V0dHSmInqQli9xQrYaMypt7Bn0EgyFo9dpQwMHJwjSktFa62BLl4drr5XMnauaqAH22y//ZefKZDFX13CUmKLCwUfvE9Mkie9JG4nWk2Yfp8EBSB2kzaobHaQZDIKyEhODWQZpewa8+EPhtEFRtjh9QUotJgyGNGPGphI4+05VDn3im7RUq+nokRnkkVxyCbzyCvh8Krt211369KeOjs7UQw/S8iXq2xnrE2qssBEKSzqdsQPf+9v7KbOamFXrGPkISamU5Wy5dzE33yy49FJYuLBgq86ZnmiQNjl60jSdrsYKK21xr32qYMjjG7/BgVTr2tzlxmo20FhuTbyt3ZzSRSEReyIZ3x19hbUyc3kTm6snpP4AOPHHsPZJDuh6GiCaQU7FUUepLNpxx8Fll6nMmo6Ojs5UQg/S8sWplTtjQZomwxHfl/Z+ez8LZlamzyxEePVV+NmlM/DvqeC/b3Hyv/8L1sTH5jGl2+XHaBBU2SdHkKbJaBw1u3ZYj1OJyYjdYkwY1Li1wYFx6ElLNQCwuctFW21p0s9Qpc2SVbkzHHcikUx8OVdcvmDGbgMAHHk1NB9F7WvX02zoZltP+iANlKPGM8/A3XfDWWep60K6R7uOjs4UQR8cyBdXJ5gdUBIrQc2Icx1YDAz5Q6zrcPK14zMfw3zrLaiqAOsZy9jvuDZgdLP4eNDt8lHtsGQcbI43pZE+v2Pm1Iy6rdJmTlju9PiDmAwCi3Hsz2FSZtK63cyfkVwkLFuT9W63j2CkFLyz0Jk0XxaZNACDET77J8SfjuZVyzWE3xTwZtztwgBmG5is6mK2Qt2+8Lm/YTSKqEPBrl1wwglqqObMMwv5jHR0dHTGHj1Iy5c4IVuNxkiQpg0PfLhrgFBYJhwaiMfphLVr4dBDleTA5VfAoTe72dKduj9nLJlMllAABzdVsLiliiVzp426rcJuSejf6faFsFuM4+JNGtM7G57h8wVDbO/1cObBMxJtFt02kYhyMvbEDbfs7C/sZ8zpDWZlCQUozbSLHuOxf9zNUCDEhRGtNEBNUAd9EPSqS9c6WPukymSXN0bvFgopiY6zzlK6aj//uXLj0NHR0ZmM6EFavrg6hw0NgJoorLCZo+XOVZGhgQVNybMga9fC2WdDVxds2QKlpVBZYaCp2j5KK2086XL5J00/GsA+08r459eOSnhbMv9Oty84Lv1oEJvSHDkAsK3HQ1jC7LrkPY1KYy2Y8b60IM1sFAXPpLl9wWjZPyuaDuW92TYeeXcnF5xwSvJAecMLcP850LdlWJDW1ASvvQbf/CbcdJOySXvgAVUW1dHR0ZlspK3nCCGaM7lur8U5OpMGqlFdC9Le297PjEob08oSH7QefVRlz7q7lThtadzwXluNg60Z9ueMBd3OyZVJS4Xy7xzdk+bxh8ZlshNiU5ojy5abtcnO2tGTnRoVNjODSfxIE9ExqIK0A6ZXjH9PWhyttQ5cviA97hRDENVt6t/eLaNuslqVftpf/qICth/9KKdl6Ojo6Iw7mTTdPJbhdXsncebq8cyotEWtod5v708ovREOw3XXwTnnwAEHKMubE08cfp/WWhWkFVrHKheklJPKXD0dlfbEPWluf+4BRiGoSGANtalLBeqzUmTSKu1m/KEwQ4HMOud3D3gxGQQLZlaws28o4+AuE1ze3LORrRFf0pTDAxVNqk+tb2vSu3zlK/DMi37cB79Ll9OHe+Kc6+jo6OhkRNIgTQgxVwhxJlAhhDgj7vJFYALMGU4AAkPgG0iYSVOCtkN0OX3s7B9KWOoUAtrb4fLLlebTzJmjd9Fa68AbCNPhHO0FOta4fEF8wfCUyaRV2FRP2sjgxO0LYh8HIVuNRFOam7vcNJRbUwY+2boO7Bn0Mq2shKZqO25/qGCWUuGwxOUPUpZjkNZSYwdga6peTJNFGbP3jc6kxeMs7WZZ+25WbOpnyRL42teUtZqOjo7OZCDVr+gBwNlAJXBe3PVO4IpiLmrSkEDIVmN6pY1+T4A3Nytj74ObqqK3rVoFNhvMnQv33AOmFO9CWySrsKXbTWOFrWBLz4Vu1+RyG0hHpV1ZMA0FQsOCMrcvxPRKc4oti0uiKc1NXa6UWTRtO1BBWiaflY5BL/UV1ug08o6+ISoLIK3iCYSQkuymO+OYWWXHIEhf5q9qTVjujGdDhxOAoWCQE09UU5+rVsE//wnTp+e0PB0dHZ0xI2kmTUr5LynlRcCZUsqL4i5XSSlfG8M1TlwSCNlqaE3TT6/ejdEgOHCGcoV+8EGlkH711ep+qQI0gNZalVVIp8A+FkSFbCeJb2c6otZQI0qeHv/4ZtJGBmlSSjZnE6QlKOEmYveAl8YKKzOqYpIxhcDlVcMLpSW5BboWk4GZVXa2pvvMV7WlzaStjwRp3lCIX/0KHn4YVq9WdlLLluW0PB0dHZ0xI5OetEuEENGGKiFElRDi/4q4pslDAiFbjemR7MTL6zuZW1+GxWDie9+Dz38eFi+G++7LbBfTK2xYTIaiTXi+uamH/3y4J6P7dk8yt4F0VCaxhnL7Q+MiZKtRPiJI63H7GfQGUw4NQPblzo4BL/XlsUxaoSY8R5mr50BLjT29oG11G3h6wDuY9C4bOtTAhTviInHeeUqDsLQUrrpK9YXq6OjoTFQy+RVdKKXs1/6QUvYJIRYVcU2TB63cmSJI8wbC7FtdzamnwgsvqAzarbeCOcMkg8EgaK62Z2STkwt/fmUTq3b0c/L+9RjTCNR2RcqddVOk3FkRUfcfOeHp8QXHxVxdQ8ukSSkRQrA5MjQwO4Gx+sjtgITabyNxegO4/SEayq1UOyxYzYaCZdKckUxarj1poIYHHnt/Z/Q1SEhVZMKzbys0HjTqZm8gFC2ZunwxaZIDD4Tly6G/HwwGGBpS/5ZMjY+1jo7OFCKTTJpBCBHtehdCVAHj17AzkXB1qAkzR+2om+rLStBinoWt5QwNKUmAP/wh8wBNo7WIMhwuX5B+TyBqAJ+KbqcPIaDaMbUyafHlwXBY4vaHsI/ndKfNTCAko1OaUWP1NL6vmml8JibrmkZaQ4UVIYSaRi5YJi1S7swzk+b0BulLVbrVZDiSlDw3d7nRhqLdvuH6cVVV0BbZ/PLLlUvB7t05L1dHR0enKGQSpN0GvCmE+G8hxE+AZcBvirusSYKrAxx1ytJmBCajAcvOmYR9Jg6bU8mrrypJgFxoq7UrMdMiyHBoB69X1nWmvW+3y0eV3YJpHOySikG03BkX1GiBkWOcdNIgLniMrGtzl4sSkyFalkxGqcWEQWRW7twT0UhriJi1z6iyF6EnLfcgrS0SkKY8OalqVf8mGR7Y0OmM/t/tTy7ye8YZaphg0SJVCtXR0dGZKKQ92kop7wYuAAZQk52fk1LeU+R1TQ6cHQnlN0IhpX+27r4FeN7Zh32mlWLII65prXXgC4bZPVh4GQ4t67F0XVfa+3a7fNRMkSwaxMzM43vStIP5eGfSID5Ic9NW60jrl2owiFH9bMnQMmnaFKjS9StQudOXf5DWkolWmrUCbNVJM2nrO5yYDCpL6PIl14477zx48001cX388cqsPRWdg95hllo6Ojo6xSLT0MEO9Eopfwvs0h0HIrg6RgnZDgyoM/ObboIlZzr5zrWBtL1e6dBkOIoxPOD2BTEaBB/sHKDL6Ut5326Xf8rIbwBYzQYsJsOwnjSPb/wzaSOnNDd3u9NOdsZvm02QNq1cvZ8zq2z0uv14UmScMkXLpGXt3RlHU7UNIdJopYEqeSYRtF3f4aK11kGl3Tyq3DmSgw5SFlLHHQff+Y5y/0jGDx5Zzff/uSrNM9DR0dHJn0xsoX4M/Dfw48hVVuCBYi5q0uDqGDY0sGEDHH44PPcc/OlPsPSxMq47fd+8d9NaG9NKKzRuX4ijZtcA8Or61Nm0bpdvyshvAAghRvl3apm08fLuhOEDAP5gmPZeD7PrUg8NxG+byEVhJHsGvVTZzVjNKhjVSqm7CpBN0wKifF7DEpOR6RW2DLTS2pKXOzuczK0vxWExpQ3SAKqr4Zln4PXXobYWpFQnXSPZ3uuhN5VllY6Ojk6ByCSTdi7wacANIKXcCZQXc1GTgnA4Yq4eC9LsduUb+OKLcOWVhdtVQ7mVkiLIcPiDYfyhMIe1VlNXVsLSNH1pyrdz6pQ7YbQ1lDuaSRv/IG1gKEB7r5tQWBY8k9Yx6KUhTvBW00rbUYDhAZcviNVswJxn72JbrSMDrbRWGNgBoeHP2RsIsa3Xw5xpZThKjCl70uIxmZRFG8Att8DBB6t+tXi6nL6Mrbd0dHR08iGTX1GfVL45EkAIYS/ukiYJQ70gQ0hHPQ89pPrQZsxQ/pvHHVfYXRkMoigTnu64Kbzj59bx2oZugqHEwlFD/hBuf2hKlTtB9aXFlztjPWnjq5MGakoz6tmZRiNNQzNZT8fuAS8N5bH3MqqVVoBMmjMPc/V4MtZKkyHobx929cZOF1LC3PoyHCWmaPCdDUuWQCAARx2lHAoAfMEQg94gXr8epOno6BSfTIK0R4UQd6A8PC8BngP+WoidCyE+JYRYJ4TYKIT4rwS3XyyE6BJCvB+5fLUQ+y0Izj14AjYu/NlpXHihUjIH8hoQSEVrbeG10rShAYfFxAnzpjEwlFyKQxOynSoaaRoVIzJpngmQSSsriU1pbs7AWD2e7DJpMQve+nIrJoMoiAyHy1uYIK21xkG/J0C/J0VpMV4rLQ5tsnNufSmlJaZhOmmZcuihqk9twQI1XHD99dA1qNaiZ9J0dHTGglQG6yYAKeWvgCeBx4EFwC+klLflu2MhhBG4AzgV2B+4UAixf4K7/l1KeXDkcle++y0U7ev7Oeavz/LwszP45S/hgguKu7/WWgfbe4cIFVCGI77/6pg5tRgNgpeTTHlG3QbKpli5c0RQE82kjePgQPyU5qYuF3VlJZRZMxPXixfCTYY/GKbb5aehPFbuNBoEDRXWgmTSXL5gXhppGlGj9VQlzyRaaes7XJiNgtZaRySTlttARGMjLF2q5HNuvBFef0s9jh6k6ejojAWp8j5vAwgh7pFSPiOl/LaU8ltSymcKtO/DgI1Sys1SSj/wEHBmgR67qLz+Oiw+azGb+1p48sE9XHstJBNFLxRtNQ78oXBBGrs1Yg3eRipsZhY1V/Hy+sR9aVPNXF2jymEZkUnLXz6iEGjB1uYuF7MzzKJp2wUjgrzJ6NA00iqGv5eFErQtVCZN00pLWfIsbQCTddTwwIYOJ221DsxGA44SEx5/KGedwZISuOsuWLkSps1SAaPHZSiKbqGOjo5OPKmCtBIhxBeAY4UQZ4y8FGDfM4DtcX/viFw3knOEEKuFEP8UQjQleiAhxOVCiBVCiBVdXen1vvLFZILGaidvf/UTfPqzYzNDoelGFbIvTdOO0g6ox8+r48Odg3Q6R2tAafIcUy1Iq7CZGQqE8EYyI1pwM549aRCb0lTyG5n1o8FoIdxEaEFafbl12PUzqgqjlaZ60vI3JWmqtqeX4TAYoLJlVLlzfYeLOfVlAJRG3stMhwcSIYQaIuhy+hjaVMfOP5/AE0/rxp86OjrFJVWQ9nVgCVAJnDficm4B9p0o9zTy1PQJoFVKeRDwAvD/Ej2QlPJOKeViKeXiurq6AiwtNUccAe/97lbmTe8AS+ZZjnyIKrAXsC9tpFTCknnqtXtlRMmzc9DLHUs3Mq2shLopJMEBsaBGa7Z3+4KYDALLOLsqVNjMbO1x0+8JpLWDGrkdDLe6GonmNtBYMdzBYGaljY5BL4EkwyOZ4vIF8tJI07CajTSWWzMbHogL0ob8Ibb3eZg7TQVp2uc7l+GBkXS7/JhqXBjLvJx9poFbblFSHTo6Otnx1Ord3PnqpvFexoQn1ZGoRkp5GXCdlPKiEZcvFWDfO4D4zNhMYFf8HaSUPVJKTWH1/4AJY+xu8OxJ6DZQLOrLS7CZjWxJJ+6ZBe4Rpb39G8uZVlbCy3F6aS5fkEvueYc+j5+7vrw4b1mFiUbUdSASpHn8IewWY3JT7zGi3GZmW6QXK1ONNG07SJ1Ji/p2JsikhSV5q+kXqtwJKoO8JVOttEi0FJvsVK+btpZchgdG0uX0Ya4couGLb/Cp00J8//vwpS8pk3YdHZ3M+dtb27j3zW3jvYwJT6ojriZee0WR9v0OMEcI0SaEsKCspx6Pv4MQojHuzzOAj4u0luwZIWRbbIQQtNTYC1ruHJlJE0KwZF4dr63vIhgKEwiF+fr977J2j5M7Pr+Qg2ZWFmzfE4Wof6cnlkkbTyFbjUpbrFyYTZA20lIqEXsGvFjNBsptw5/njErVqJ+PVpqUsmCDA6AGZral00qrboOAG9zq5GJ9h5rs1Mqd2qRursMD8WgDNAZLiNv+b4if/xz+9jd45JG8H1pHZ69iS7e7IN/JqU6qIK1PCPE80CaEeHTkJd8dSymDwNXAs6jg62Ep5UdCiBviet6uEUJ8JIRYBVwDXJzvfguGq2OYkO1Y0FbrKGy5M9J/5Yjrvzph3jQGvUHebe/nR//6gFfWd/GLsw7khH3HLms4lkTV/SMyDx5/aEIEadq6LCZDVGg2m+0GhpLLVuwZ9NJYYRuVLdT2k09fmi8YJhCSBcuktdbY6XX7U8uKjDBaX9/pxGI00BqZDo2VOwuTSdPwBsL8+MdqoOALX1DXOZ1JNtTR0Yni9gXZM+gtSHa7WLS3w9lnwxi0uack1S/pacBi4G6UVEbBkVI+DTw94rqfxP3/h8APi7HvvHF1jmkmDVRW4fk1HQRDYUwFKDu6fEHMRkGJKRakHT2nFpNB8L1/rKK918M1J+7DBYdNXavWaCYtEgS4fMFx9e3U0IKt1hp7Vt6vmWTSOga91JeP7i1sjOim5TPh6fQWdjpWG5hp7/Ewf2ZF4jtVxclwNB/Ohg4Xs+oc0e9IIcud3S5fdPJWk+FYuFDdtnYtHHuskuq47LK8d6WjM2XRKkKBkMQXDA07Bk0U7r4bXnhBfa/HoNU9KUmP9FJKr5TydeA4KeWL8RfgpbFb4gTE7wHf4JgHaW01DoJhWZAJPEhc2iu3mlnYUkV7r4dzFs7k2yfPLci+JiqVdtWTpjXae/xB7OMoZKuhBVuZOg1olJaYMBpEyiBNuQ1YR11vNRupKythZ3/ufY/aj+/MLLJ/qWitVdmwlH1pVS2AiA4PrO9wRkudEMsU5zPdqdHt8tNUrZ7bSDP6+npYtAguvxy+/nXw6/aeOjoJiRdmL8RATyHpjKhQ/fjH8P776sRrPEklZvsKgJRytxDinhE3ryzmoiY8rg717zhk0iCNuGcWqKzR6IDkGyfuw1eObuOX58wf9wb6YuOwGDEZRNQayu0LDSv/jhfRIC0LjTRQfYWpXAeklHQO+ob5dsYzozI/GY41uwYBOGB6kqxXlrRUR7TSUpX5TSVQPgN6t+D2BdnRN8TcabHgNpZJy+9g4AuGGBgK0FSlAkfvCEHbqip46in4/vfhj3+Ek0+O/eDr6OjE2NIV+z67vBOj5On3wxVXKKmdzk4wGmHWrPFeVeqetHgBsING3Da1j9zp0IK0Me5J00pU8X0x+eBO4rF47Jw6fnL6/lNukjMRQohhJusTLZOWzdBA/LYDQ4l/+Hrdfvyh8DDfznhmVOUnaLtm1yDVDkvCcmou2CxGGsqt6U9MqtugbwsbO10AIzJphelJ64kIOjdVqyAtkeuA0Qg33wz33w/Ll8NvfpPXLnV0piTxmbSJ0Je2Zw+ceCLceSdcfDHU1Iz3imKkOhqlUv/Zu5WBximTVu1Qpbled6GCtImRNRpvKmzmaE+ae4IMDhzUVMlZB0/n+HnZN0OU28xJ/S53a/IbFaPLnaC00p7/qINwWGLIohdOY83uQfZvLC9oBjYjo/WqFlj/XHSyU5PfACKSKvkHadpkZzRI8yfXk/v852H+fJgzR/09OAjlY6N7raMz4dnc7cZkEBF3lPEN0pYvVwMCfX3w0EPwuc+N63JGkSpVUimEOF0IcSbKXF1zGzgTKEwtY7Li1IK0hjHdbWmJCYvRQI+7MM0urgkiNzHeVNot0Z409wQZHCgtMXHbBYfk5PBQYTNHxXlHErOESlLurLLhD4WjAUk2BENh1nU42a+xLP2ds2BWnYONXa6UfqRUtYG7k627u7CYDNGBA1DZUoclN5P1eLTXpDlFJi2e+fPBaoX+ftWr9t3vQnD8kwY6OuOKlJLNXS7mRrLd413u/OUvwWyGN96YeAEapA7SlgHno9wF3mC428AbxV/aBMbVAcII9rHNiQohqHKY6XUVJkg6dhMsAAAgAElEQVRLVu7c26i0menz+AmHpRKzneSvyUjT+Hg0t4FEgwOgetIAduTQl7a5240/GGb/6YVNGS2YWUm/JzCsRDKKiNH6wK4NzK4rHTUR6ygx5p9Jc0bKnZGhiJE9aclwOODUU+HWW+FTn4Lu7ryWoaMzqenzBBj0Bpk/Q+V6xqPcGQjEvod//SusWAELFoz5MjIi6dFISnnRWC5kUuGKuA0Yxr5nq9pRQm+BMmkTRbh1vKmwm1m7xxnNjEyETFo+pBoc2DPgxWgQSe29olppfUMsbK7Kar/a0MD+jYVNtC9qUetYua0vuY9pRIYj2L2ZubNHTyQ7Skx5T5F1RTJp0yttGA2CoRQm9vGYzfD73yupjiuvhEMPhUcfhUMOyWs5OjqTEu1ka/7MCv6+YvuYC9p2dMD554PPB8uWQeUE12if+p3hxcDVOaaWUPHUOCz0Juk3yhaXnkkDlDXUwFAg2hsx2TNpWpAWDo8uD+4Z8FJXWpJUe03LpOUy4blm9yAWkyHridR0zK4rpdxq4t32vuR3imTSSj3bo2WUeEpL8i93djl9lJaYsJqN2MxGPBkGaRoXXwyvvqrO4n/wg7yWoqMzaYkGaeOQSVu+XLUevPMOfOMbatBnojO5j0bjxRhbQsVT7bCwvS9/CQ4pZaRJfhJ8SotMpd2MyxeM9nGVTvLXpMJmJizB5Q9SbjUPu23PoJf6JEMDAGVWM+VWU04Tnmt2DTKvvqzgU8EGg+CQ5ire3daf/E62KoKWcpqDnTRMG51tc1hMBRkcqC1VwztWszFtT1oiDjtMORRo7XUDA2C3q2ybzuTgjY3dbOv1cOEUFvkuJlu6XZgMgnkNkZ60MQrS7rpL6RfOmKH6zw4+eEx2mzdpf02FEKMCuUTX7VU4xzdIK0RPmi8YJhSWE0JuYrzRXAd29qt+rcn+mkRdBzyjS557Brw0JulH05hRZc86kyaljE52FoNFLVWs73SmFOkdsM6kRXSwb8PoNThKTFEbtFzpdvmiZWKbxZBxT9pI6uuhoUEFauefDyedpEowOpODu17fwn8//lHO7//ezpZuN83V9mhGOpeTJ48/yJ2vbiIQSj5hHY/XC7fcAkuWqP6zyRKgQWblzuUZXrd3ICU0HQYzFo7L7mscFpy+IL5gfj8Q2tmLXu6MBTW7IoFJIoHfyUSFPbk11J5Bb1L5DY0ZldlrpXUM+uh1+ws+NKCxsLkKKeH97cmzaZuCdcw2dUUdAeIpyOCAyx+dtrWZjRn3pCVDCLjoIlV6WbQI3norr4fTGSPaez34g2FWbE1RftdJyuYuN20RYXZHiSknkelHVu7gxqfXpvw9ANi5E4aG1JT10qXw9NNQXZ3TsseNVI4D04QQCwCbEGK+EOKgyOUYwD52S5xgCAGfuw8Wf2Vcdl8V0Urrc6cwnM4A7YClDw7ErKG0IM0+BcqdwCgZDrcviNMbpD5NJm1mlXIdSCl5MYI1uwcAihakLWiqwCDg3W2JD4zeQIj3XJU0yk5EePSPvhocyL8nLRqkWUw5lTtH8sUvqtKL2QzHHQd//nOsFKoz8QiHJe29qt3ktY3j7Lw9CQmHJVt7YkFaaYkxp3LnCx8rK4/+BNUCjaVL1bDOd76j/m5snBw9aCNJlUk7DbgdmAn8EWWyfgdwHXB98Zemk4iaSJDWk6egbSyTNgk/tQWm0qaVO6dIJi2Jybomv9GYJpM2s8qGyxdMWVociTbZuW9DYTXSNMqsZuY1lCcdHnh7Sy8bQ/UYCcFfTobXboXujdHb8x0c8AfDDAwF4jJphoIEaaBKLytXqrLnL34BTmdBHlanCHQ6ffiDqsT2+gZdSyVb9gx68QbCtNXFMmnZnjy5fUHe3NQDJK4WSAm//rX6PlVXwze/mf+6x5NUEhx3A3cLIc6XUj48hmvSSUF1wTJpEbkJPZMW7UmLljsneeCqBWn9I37AOiJuA+kyaZpY67YeTzTLmI41uwdpqbFTZi1eB/zC5kr+/f4uQmE5ajp16dpOnhNHc+MJDZjXPQkv/kxd6vaDuZ/kuM4gBtlN6NWPk062psLrDXClcRPHdTbA65Wc49muetxeT1OjrGyBA89O+/jV1fDkk7Bjh3ImCARg925o1nvTJxRaFu2w1mqWb+2lx+WjJgfB6b0VbbIzlknL/uTptQ3d+CO9aCODtMFBuOQSJXFz7rlKA62sOOeNY0YmR+jHhBDnA63x95dS3lisRekkp6a0MJk0vdwZo9KmXtO9JZOWridNU+vf1uthQVNmIkJrdhVvaEBjUUsV97/dzoZO56jhgFfWd7Fw9nTMx58Fx38XBnbA2qfg4yfgjd9zjAxzjBl4Kbd9lwP/ZQbWq8t52g0vZLDx9IOhOr1Ts8EQC8p++lNl0n7fffCZz+SyYp1ioNmTff7wZpZv7WXZph7OWDB9nFc1edgcCdJm1aoJ7NISU/R3KVNeWttBmdWUMNvf1QWvvKI8c7/9bdWdNNnJ5Gj0L8ALrAT0cZZxptqhztryFbTVNMH0wQEos5oQQk0+wuTvSbNbjJiNYtQPWNS3M9NMWiqF/zhcviBbezycs3BmDqvNnHhR2/ggbUu3my3dbi45ujV254qZcPgV6hL08493tvLjf3/ES987nhlJLLFS8cq6Li7/20oeuvwIDmmq5NpHVrN8Sy9Lv7ck+UaDu+APi2D1P2DJtVnt79JLVZPz6afDD38IN9wAJhM8uXoXhzRXRfXsdMaW7b0eDAI+dWAD5f828fqGLj1Iy4ItXW5sZiP15eo45sgykxYOS15a28WSedN4eV1ntO/25Zfh+ONh9mzYtAkqppBxZSbTnS1SynOklDdKKX+lXYq+Mp2EVNjMGEQBgjQ9kxbFYBBU2MwEQhKTQWApsM7XWCOEej4bOpx8sGOAPQNeAqEwHYNeKmxmbGkcFWwWI9PKStjWm5ke39rdEaeBIg0NaDRX26lxWFg5Ynjg5XWqiXjJ3CQC0yYLVnspPiy4Q2Yw27K+dAwJfFiorawAsw1TiZ3BoCn1djWzofUY+ODhrKcBZs1SAwWXXQY33QQnnwwfbvRy9QPvcf9b23J6/XTyp73XQ2OFDavZyFGza3l9Q3dWAzZ7O1u6XbTVOhCRFFepNbuetFU7+ul2+fjEvtOosJnpHQhy5ZVwwgnw97+r+0ylAA0yy6S9JYTYX0q5puir0UmL0SCotFvyNlnXxp5LJ3lpr1BU2S30ewLYLcboD8hkZmaVnRc+7oxOQQkBRiGYncxWaQQtNXbaezIL0taMUZAmhGBhSxXvtQ8fu1+6rotZdQ6aa5IPnWsZ41yHBzRLqGESHJkMDhx0Pjz+Ddj1LsxYlNU+bTa480445hhVunlhpZqg1Yzedcae9l5PNNN8zJxa/vPRHrZ0u5PblekMY0u3mwNmxKKobHvSXvy4E6NBsGReHb97bCcPXL8PPdvg2mtVD9pUJJMj9OHAe0KIjYAPEICUUo6PUJhOQQRtY5m0yV3aKxRaH9dUKf/ed+lhbOx00eX00eXy0eX00en0cdTsmoy2b6528HqGEgNrdg1SZTenLaMWgkUtVTy/piPasD3kD/HW5h4uOqIl5XZaxjhXGY5ul7KE0rKQdosK0qSUqYP6/c6Ap74Hqx/OOkjT+NKX4Oyz4X+eVYq3q96wET57XKyD93raez2ctJ8SMj92Ti0Ar2/s1oO0DPAHw2zvG+L0uPKww2LCGwgTDIUxZVDBeOHjDha1VLFsqYVltywECY8/rtoCpiqZHJHOKvoqdLKiugD+nW5fkBKTIaMvxt6ANuE52X07NcqsZg7J0iA9npYaO4+868MbCGE1pw7k1+weZP/p5WOSgdRM399t7+fk/et5c3M3/mCYE+al9tLVTkZyD9L8UUsoAKvFiJTKuSPl62OrhHmfgg/+Caf8Dxhzm34tLYU3NvXg3V7Ncw/M5dNr4N57Ydr4WAjvlbh9QbpdfpoimbSWGgdN1TZe29DNl45sHd/FTQK293kIhWV0shPiv5chKuypj0U7+jys3ePkuk/vi8UHlQ0+5l7wIaeffnhR1z3epD0iSSk3CSGOAOZKKe8VQtQAhXVQ1smKGoeFDZ2uvB5DN1cfjqaV5kjTr7W30BIpHbb3ehIalmsEQ2HW7XHypSNTZ7IKxUEzKzAZBO+293Hy/vUsXduF3WLk0LbUAWms3Jnb7FOX0xstdYIqdwIM+dMHsRz0OVjzb9j8Msw5Oaf97+jz0N7rwdbkYZ/PruPlp+dx8MHw4IOqYVqn+GieyVq5E+CYfep4ctWujDNBezNbuobLb4Aa2gLlM6w5pSTj4Zd6ca2eySe+W8/sOrj4pk28vCGNqGDQDyvvVn7buWKvhSOvyn37PEl7lBZC/Bg4GpgN3AtYgQeAY4q7NJ1kVDssBRkc0IcGYmh6YJPdt7NQRGU4elIHaVu63fiC4aL3o2lYzUYOmFHBym19SClZuq6To/eppcSUOlDKv9zpZ5+4klY0SAuESJuv3OdksFXB6r/nHKRp4p1HzKrhw5KtvPWTeZx/Ppx4Itx8M3z3uzk9rE4WaD2aw4O0Wh5c3s6qHf0saplkfkNjzNae0UGa9r10eVN/Lx95BP7rogakqKfGrIK5ylJzasHtrvXwyKWwZzUY8vhdr503sYM04FzgEOBdACnlTiHE2Pwi6ySkxmGhz+NPKOqZKS5fSA/S4tB60vQePUVLVNA2tQxHdGigcexGqhY2V/Lg8nbW7nGyo2+Iry2ZnXabfAcHul0+jpwV6+fTetMyGh4wWeCAz8L7D4LPCSXZq2u+uamHGoeFI2bV8ObmHvY7MMTKlUauvBKamrJ+OJ0c0IRsW+IGVI6aXYMQSmBVD9JSs7nbTbXDMkwg25Hmezk0pE5A/vQnKJnu4qobuqisnAOo32xfMDy6JUNKWHkP/OeHasr6ggdg39OK9ryKTSb5WZ9UM8YSQAix9/p2ThCqHBakhP48+tLcvqBuCRWH1pOmB66KSruZMqspemBKxppdg1hMBmbVjV0HxKKWKryBMH96eRMAS9L0owGUmAwYDSKnTJo/GKbfExhW7rTGlTsz4qDPQXBICexmiZSSNzb1cOTsmqiYdZ87QFkZ3H8/nH++ut9f/gJPPJH1w+tkSHuvhzKrKXpCB+q3eP6MCt0iKgO2xBmra5SlyHAHg3D00SpAO/vLbuo//wbnLonlrcsTeRR7euHvX4QnvwXNR8BVb07qAA0yC9IeFULcAVQIIS4BngP+Wtxl6aRCs4bKp+Tp9uvlzniigwN6uRNQchctNXa2ppHhWLN7kLn1pZjHsB9HGx54YvUu5tWXZSTsKoTAYTHmFKRp7h61ZbEMgD2SSfNm6t/ZdDhUNquSZ5Zs6XazZ9DLUbNrk3r3hsNw111wxhlwzTXgzU7EXScDNPmNkQMyx+xTy3vb+3F687Pqm+ps6R4dpCVqQ9Bk50wmuOIK+M9/YNZpGyl3GDm0NZatHOWs0rsZ/nQ0rH8WTvkFfPFRKGso4jMaG9L+skaEa58EHgcWAL+QUt5W7IXpJKemAK4DLr0nbRiaNZQ+OBCjpdpBe4pyp5RyTOygRjK90kZjhRUpYcm+dRlvpzSZsh8c6Haq71nCwYFMgzQhVDZt88vg3JPV/t+I9KMdObsmqXevwaBU17/1LfjDH+Dww+Hjj7PajU4a2ns9w0qdGsfMqSUUlry9uXccVjU5cPuC7Bn0jgrStDYEZyRI6+lRcjP//re6/Yor4OSTVe/pknnThp0MakHaoDcAPhc89AUIeOCrL8BRV08ZjZqMnoWU8hngR8BPgGV6T9r4UpBMmi+oC9nGUTHFJDgKQXONnR19QwQjZsYj6XT66HH7xzxIA1gYsYhKJ70Rj6MkO3Vzje4RQraQQ7kTYP75IMPw4SNZ7f/NTT00VlhprbGn9O4tKYHf/haeekqZsy9eDB15DLXpxAiFJTt6h6LyG/EsaqnCajbw+ka95JkMbWhgVpIgze0L8txzMH+++vzuiTuPUS4Dfk7ab/h3PZpJ8/jhsa9B11o4727llTuFSBukCSG+KoTYjbIW/hD4KPKvzjgR+6HOJ0gLTXqPykKiS3CMpqXaTjAso56fI1m1XSn/Hzhj7H1YTj+okYXNlVE/z0xwlJiinrXZoLkNTCuLy6RlMzigUTcXph+SVckzHJa8tVn1owkhMvLu/fSnYfVquOMOqFe6q3gyM4/QSULHoBd/KDxsslOjxGTksLYanl/Tweod/bpNVAK2RHyA2+pGlzvDAQP/7zdVfPKTUFUFb7+tMmga70d+Z+IHdyAWpNWvugM+fhxOvgFmn1jEZzE+ZJJJuxZYIKWcKaVsllI2SSmbi70wneRU2fPLpEkpcft1nbR46sutlFtNo9LxezOazdK2JH1pK9v7sBgN4xKkferARh696uiseuGytaDRSJRJs+WSSQNYcCHsXgVPfluVaNKwvtNJj9vPUbOVun1lht69DQ1w8cXq/6++Cq2tSsZAJzeik53ViX8fvnB4M11OH2fcvoxP3PoKf3hxQ8a2ansDmkbayNfPYjIQ2NLAK/+q5JvfhBUr4JBDhm/b5/YjBNTEff9ABWknGt5l/7V/UK0ER15d1OcwXmTyC7cZGCz2QnQyx2IyUFZiyjlI8/hDSKlPMsbjKDHx7vUnc/L+9eO9lAlDq6aV1pu4L23l1j4OnFGeXsx1guAoyW1woMvpw2ExDjOmz7onTWPxV+Cob8CKu+HPx0D7Wynv/sbGWD8agMEgqMrSu7e+HlpalLfhxRdDf3/aTXRGkEgjLZ5PHtDAOz86iZvOnk9daQm/eX49x/16KRfe+Ra+YG4CylOJLd1upldYo9+hYFAFZAD1C7q49NYN3Hab8qsdSa/HT4XNPEpuqsy1md+Z76DTMQ9O/53q+5yCZHKU/i9UH9pbKO9OAKSU3ynaqnTSUl2au8l6zLdTD9Li0RXDh9NQbsViMiTMCPiCIVbvHODLY+Q0UAhUT1oOgwMuP7Vlw8/icyp3grKFOuV/YO6p8NiVcPepcNQ1cMJ1YCoZdfc3NvXQWmMfNsGarXfvvHnwxhtwww1w003w4otKruOUU7Jb+t5Me68Ho0HQWJncn7bCbubCw5q58LBmdvYP8celG7n/7XY2dro4YHoRs81+DwxN3KGFcFiyc9sGDq22wsAO1qw1cfFV1Xy01sTGd/cwu6SfprotMBD5jAd9SkrD0wNDvSzcsZp5xh54afmwxzV/+CiDmHlw1k18y5x+wnuykslR+s/AMuADIHEHsc6YU+2w0JdjkKaVfHSdNJ1UGAyCpipbwnLnhzsH8AfDk0rA02HJrSet2+kbVuoEpbsmBHizLXdqtB4NX3sDnr0Olt0G656GunnD7hKW8LnNHTRW2ODvf4le/z/+XtgB/D3Na2+thGn7w7R9Mdftx89vaOCMMwRf/jJ8+KEepGVDe6+H6ZXWjMvrMyptXHhYM/e/3c72Xk9hg7TAEGxfDltfgy2vwc6VEJ648h8G4O9AyGXg1+dezfVLf0Spxcndp32Xxgf/xSMAG4HfJt7+bCCMgNdGZMqslVxv+T62UE3C7aYKmQRpYSnlNUVfiU5W1Dgs7OzPTQxJyyY49OlOnTS01DjYlkDQduW2PoCsGvfHm3ymO2fHWUKB0l2zmY3ZZ9LiKSmDM/4A+34GXvkV9GwadrMvEKJJepiOFXq6otfPDA/hC4ahpy/5Y0sJ7k54777YddYKDq1o4t0rSzAbg/CnME+sPhqbxcdJ+67I/XnsBXy7260UHf6Uec/qflLytMXJtP+UwGujs6Q5IcPQsxFCPhAGNYhy5NehetaELPdJKbnj5U30uyVP/+sbvLl6GmctaefP171Ffc2JwIn88eVNGIXgiuNnqY2MFrBVg70G7NWcc+96qiqruOviw0Y9/ubbXmVmKmuoPPnhox+wqcvFw1ccWbR9pCOTo/SLQoivAE8wvNyp96mNI9UOCx/sHMhp21gmTQ/SdFLTXG3nrc09SCmHiXiu2NpHS42durICHXzGgNISI4GQxBcMpfX6jKfL5ePwWaOzVnkHaRpzP6kuI7jn5U386j9reeeykyDudf7TYx/w1OrdvHdVBqkwVxd0fQyda9W/zg60gp2U8KuXvsKy9fP4ypKl3PL5B6gqTW0DFk9YStZ1OGmtsWMzT+3fkq0dnUxzWKEyc7kZI9DR2QkGK7VZbJeW2SdA23HQfCRYJ7Ya1luberil6y1+ftaBnOCbxtd/AJ//fDNCxGYPl69aTq/bzxULE9uB7xraTNuMxL8zFTbzcMeBArOx0zlKvHisyeSb9eXIvz+Lu04C+oTnOFLtKKHX7R918MwEj1/vSdPJjJYaOx5/iG6XPxqQSSlZua2P4+dlLiQ7EYipm2cepAVCoy2hNKxmI55cy50Z8MambubWl44KhKvtFvqHApl595bWqUvbcaNuEsDzn4Wf/QxuueUEnvr4BG6/Hc45J7OkzMYOJ6f+9lX++7D9ueTotiye2eTC6Q1wyU+f49ol+3JABj6x8dx2++uUWc387cLDi7S6icuKFfCZc6zUfbKO8xbNxHpE4vs5SlLbz/W6/VFt0JFU2MxprevyYVuPh+Pnju/vXCYF9lkR2Y3oBcjuk6pTcKodZgIhGVVqzgaXPjigkyGawnp73ITn1h4PPW4/iydRPxoktqBJR49rtNuAhs1izNwWKkv8wTArtvZFpTfiqY549/bl4d2rYbPBL38J77wDM2bAeeepIYNM0F6bPUl09KYK23uHABK6DaSjucaRdDp6quLxwPe/D4cfLhnoNXLSnBkpJ8BLLSZc3iQG6/4QvmA4ats3kgqbOWYLVWCG/CE6nb6c3vdCkkmQ9naG1+mMIVFRyyymvDS0njS93KmTjuaIrlH88MBk7EeD2Oc9G600TSMtUVnXZjZmr5OWIdv7PAwFQhw0c3TDeXVp/rZwIznkECUi+sgjytQaVOAWSvH0tCAxmdjxVEHL1CST30hFS7WdXf1eAklcO6Yazz6rXANuuQX2Pb6HuVct48ZvpHYFSdUr2hv5jFXbk2fSihWkRd/3mvHVzkwapAkhpgkhFgA2IcR8IcRBkcsxwPiGljpRo+XeHM6mYxIc+nSnTmqaqm0IMTJI66XcamLOtNIUW048csmkdTlHC9lqFKwnLQH92sEpQZknarKewwlaKkwm5ZsIsGMHHHssHHYYLF+e+P5akLhncKoHaSoTlsgSKh3NNXZCYcnOvqFCL2tCsno1WCzw4GNDDB3+Nl9aMoNya+IsmEap1YTbHyIcHu3UoCkYVKYI0jz+UFGC4G09mgDvxM2knQbcDswE/gjcEblcB1xf/KXppCLq35nDD3W03KlPd+qkocRkZHqFbVjfx4qtfSxsqcKQrh9qgqFJzmSTSdMsoeqSlDuHAsXJkGgG6lUJDk6F8O5Nx4wZcO+9ygP0iCPgyiuhd4QUVzRI2wsyaRU2c9SGKBu0A3yiCempgN8PN98cc7P41rdg1SpYHd6IyWjgK0e3pn0M7XuZSB6nL8XJCkC55t9ZhGxa1GViopY7pZR3SymPBS6VUh4bd/m0lPIfY7hGnQTk80Pt9gWxW4yT7iCrMz40V9ujZ5X9Hj8bOl0snmSlThg+OJApUUuostEHCZvZmLtOWhp6M8ik9SYwWU/Fb55bxwV3vpnRfYWA88+HtWvVgfeuu+CAA8AV52QVH6RNZb/K9t6hnA/ULZFSWTGb28eL559XZfJrr4XnnlPXmc3Q7/XyzxU7OHfRTKaVJxf/1Uj1vezzaCcryXvSoDhB2rYeD+VWU9Is3liRNpUipXxYCPFJ4ACITm8jpbyxmAvTSU0+Jutuf1AfGtDJmJYaOy983AHAe+3KU2jhZAzSLNmXO7udfuwWI/YEWWebxYgnkP3gTiZo5c5EDdNVjty++y+v68o6WCgvh1tvhS9/GV55BUojFe6PP44Faf5QmF63f5S34lShvcfNATn6004rK6HEZKC9Z+oMD2zcCN/5DjzxBMyaBf/+N5xxRuz2vyzbQjAc5orjZmX0eKl6RbVyZ1WK6U4oTpC2tccdDbLHk7RHaiHEH4FK4DjgbuAcILXhnE7RsZmNlJgMWZ9NA7h8IX1oQCdjmmvsdLv8uHxBVmzrxWgQHNxUOd7LyppcBweSacFZzUaG/EUqd3oCmAwi4ffUbDRQbs3OuzcQCrNuj5NAOEw4LLPOoi9YoC4Ab74JRx0FzYtaCC7uw1w5xO4B75QM0kJhyY6+IU6d35jT9gaDiGSip04m7f33YelSNRX8rW9ByYi3/dF3d3LK/g0ZBzilKXpFtXJnZZJSc7HLnQfmGJwXkkymO4+RUn4e6JFSXg8cjupT0xlHhBDUOHLz73T7gvrQgE7GtEQnPN2s2NrHAdPLE2aWJjq5Dg4kGhqASLmzSIMDfW4/VQ5LUg3EmtKSrIK0TV0u/KEwUpKTbE88Bx+sfEB3flDB7r8cT9/SfVm/LfuTxcnA7oEhgmGZV/N4c7V9UpU7nd4ANz39cfSz7ffD7bfDH/6gbj/nHNiyRZU5RwZo3kCILqePA6ZnLrLrSJNJK7Oakvoqa5m0QgvaBkNhdvYNjfvQAGQWpGljKV4hRAPgBVqLtiKdjKkuzc2/0+UL6kMDOhmj9eNs6nKzakc/C5snX6kTwGIyYDEacGXh39nt8lFbmrjUYrMYGAqEitKP1efxJ+3DgYjJehbf/Y92xgxi8j2g2Wxw/fVw0LffpO3QXgaXz+KKc6oJFqfyO67kI7+h0VyjgrTJ0re3dF0X//vqZt7a1MtDD8F++8E3vgH/+Y9yqRACakfL9wExOZbGyswNz1OWOz2BpEMDULwgbVe/VwXn4zw0AJkFac8IISqBW4D3ga3AI8VclE5maK4D2eL2BfVyp07GNEd+qJ79cA/eQJjFrZMzSAMlO5NVT5ordSYtFJYEQsUI0gIpG2ZQegcAACAASURBVJazDtJ2xYK0QpSGpJS4TU4uua6LGZe+zqmXdmAyQTgM//gHUyZga4+UKXOR39BoqVauHdqk8ESnvceNb1cFXzmrggsvVH2ITz8NTz6Z3olid7/K6UyvSD8woJGu3Jnqe1CsnjRNgFjTiRxP0gZpUsqfSin7IxOdbcB8KeUPi780nXTkU+6060GaToaUW81U2c08HxkemGxOA/Eo4czMSpTBUJi+JJZQALZINroYWml9bn9SAU/I/rv/0a4BTJE+tEJkHYYCSgm+tqyEptl+6g7qBlS25fzzVfbl3nsnf7DW3uvBZBBMzyIzNJLohOcE70uTErzeiCaigMFBwX33wXvvwamnZmYVtiuHTFrKcqfHT3WKjLLFZMBmNhY+SOuZGPIbkEGQJoSwCSF+KIT4s5RyCKgWQpw6BmvTSUO2Z9MaanBA70nTyZzmGgf+YJgZlTYasjhLnmiUlpgyHhzQvltJy50Rq5ti9KX1eQJUOVKXO/si3r3pkFKyZvcgCyLDHoPe/A9ompButd1CQ4WVPYMqg3LqqfCvf6nsy5e/rIK1e+6ZvMFae6+HmVW29B6pKdAy0RN1eEBKePFFOP54+NrXlKZbSeMAX7t9HV/8IhgyqbdF0DJpjTlk0hL3pAUSagXGUwzXgfZeDxaTgYYMJESKTSYv/19RXryaRf0uQJffmABUOyx4/KGsDxJuvSdNJ0taIweayWYFNZJUFjQj6U7h2wmqJw0ouMm6lJL+NGWeaoeFYFgyOJT+uWzvHcLpDXLkrBqgMKWheJHRxgprtBdJCDjrLHj3XXjsMRWs/fznKhCA2L+ThQ0dLlpr8yt5zaxSrh0TbXhASnjmGTjuODjpJNi8GQ4/PKa03+3Jvjy7a8BLjcOS0qtzJFazAaNBJC13JpPf0Ci3mYqQSXPTVGWbEFqimQRpcyKaaAEAKaUHFbTpjDPVOeglhcKSoUBI10nTyQptymky96NBtkGaOkglk5bQMmmF9u90+oIEwzJ1uTOqk5j+QPrRrgEAjppduCCtN06/qqHcNkrQVgg480wVrL3yihI5HRpSMh433gh9fXkvoegMeAKs73TmPSiTyLVjInDjjfDpT8PWrXDHHUr/7OJLQ3QMqs9URw52X7sHhmiszC77JITAYTGOakPwBkJ4/KGUAzRQnEzath7PhNBIg8yCNL8QwgpIACFEG1A8PxKdjNGCtGwmPDXrDX1wQCcb9qkvA+CwtsnbjwbKgibTcqcWACUrd2rZgkL3pPVHLKESCdlqVDsyN1n/aNcgRoNgYUsVRoPIKPuWDm2/WibN4w8x6B39uELAzIhgU3c3TJ8OP/oRNDUpja2tW/NeStF4t70PKQtzYtJUbYtmqMaL/n749a9h2TL19xe/qPoGN22Cq64CqzWW7bOaDdFgLRt293tprMi+f6+0xIRzxOenX3MbSJNJU0Fa4erpUkraez0Toh8NMgvSbgD+A8wUQvw/YCmgDw5MAGpyyKTFzNX1IE0nc06b38jjVx/Nvg2Z6x9NRBwWU8blyW5npNyZRMy2WD1pWikxVS9ONt/9j3YNsE9dKVazkXJrYUpD8UFafaT/KJ2HZ1OTGix4/3347GdV9mbWLGU9NRF5Z2svpgIJN7dUO8Ytk/bee3DZZSpA/sEP1KQmQEsLXHSRMkTX0PrmDm6qpNOZvd3XroGhrCY7NUqtozPcmXwPQAnaFlKCo9vlx+MPTQiNNEgTpAmlpLgKOA+4DPgXcJiU8sUxWJtOGqpz8PCLBWn64IBO5hgNgoNmTj6XgZE4shgc6Hb5sBgNlCU5obFZilPujB6cUmQQsvHu/WjXYFRctLxApaFetx+TQVBuNUWbxHcPDKXZSrFgAdx3n+qB+u1vYd48df0NN6hMT09P3ssrCCu29nHAjIqCCDfHu3YUmqVrO3l9Q3fC2849FxYuhPvvhy98QZWff/GL5I+lZfsOa60mEJJR78xMcPmCOL3BrCY7NRwlplEG61FLqAwGBwoZpLVH5DcmRblTqjD6SSlll5Ty31LKx6SUnWO0Np001ERKHtqkVSa4InV/vdypszdSGulJyyRD0O3yU1uaXPXfbilOuTOWQUg93Qnpg7Qup49Op4/9I0Fahc1ckOlOraFbCBGdgMu2h6mpCb75TVUSlRLefltlehoblar9v/+t1O7HA18wxPs7+jm0QIMyWumsGDIcP39yDbc+vw4p4Y03VBk5EHmLTzkFfvc72LUL/u//lCF6Krb1eCizmpjboNobsnlPc5ns1EhU7oyaq6eYcgb1mXb6goTChZlK0bKJzZOo3LlcCLGw6CvRyZoyqwmjQWQlw+HRy506ezH2EiNhCd5Aes/NbpcvpR9lsXrS+iI9aakyCFazEbvFmPYETRsaiA/SCpVJ0wYb6su1TFr2jeYaQsBTT8EHH8DVV8Prr6sp0R/9SN0eDo/tZOiHOwfwB8Msbi1MD6ZmraZlaQqFNxBiw6Yw7/yrgblz4eijVTD2wQfq9ssvh2uugcoMk+Dbej201jhyCrw1jbRcNOUcltHlzl5PTOYlFYV2HdjW41G9lFW5a+MVkqRBmhBCO4ofgwrU1gkh3hVCvCeEeHdslqeTCoNBUGXPTitNS7frmTSdvZFsTNZ73MktoaB40539Hj8GETOPTobSSUzd6qA5DRzQqIyiy62FC9K0DIfFZKC2tCRtT1omHHgg3Hor7NihFO4vu0xd/8or0NYG3/mOanwPF8fXPso7W9X4aaGmmQutleaLvO1PvORhx59PZMcLs5k5U3LPPbBnjypx5kJ7j5vmGns08O7MYnggr0xagp60/shxLZUUDRTedaC918P0ChslponREpTqSL0cWAicNUZr0cmBmiwFbbW6v55J09kb0fQB3b4gdUkGAjS6nf6UgxK2IpU7ez1+KmzmtAKqmbgOrNk9yMwqGxWR0qlqsi7MdGf8axOvlVYIzGY47bTY3zYbzJ+vhg1++1toaFCZtl/+EioqCrbbKCu29jKr1pFUIy9bKmxmKu3mnIcH/H5480149lklFnzSScrw3Fg7SNVJ7dj36eD+m47MyxkhGAqzo2+IT89vjH43Op3ZZdKEiGVWs6G0xIQzQSattMSExZS64FfoIG1bjzsvr9ZCk+pILQCklJvGaC06OZCt64DWk6YPDujsjaSyoIlHShnJpKUod5qKNTiQXmUd1He/05k607EmbmgAYk3WUsqkvXYZrzGuV6ihwlpU26MjjoAnnoDBQTWd+Mgjqjx6++3q9ttvVxITp5yiskimPM5Bw2HJim19nLJ/fWEWH6Gl2p5TkPbVr8JDD4HbrZ7Xsceq1wNgQ5eT8kVbATW4kU+QtnsgZipuNRuptJuzkuHY3T/EtLISzMYsLAoiaJ668Z/Lfk8gpQyNRnkRMmkn7VfY9z4fUn2U64QQ30l2o5Ty1nx3LoT4FPA7wAjcJaX85YjbS4B7gUVAD/A5KeXWfPc7lagutfBxnHlyOtx6uVNnLyaVmXM8g0NBAiGZstxpMAhKTIaCS3D0Z6CyDkorbe0eZ9LbXb4gW7rdfPaQGdHrym0m/KEw3kA4mgnMllBYRjwVY2tsrLDy9ubij2WWl8MFF6hLOByzLHr1VWXsfv31YLcr5fwzz1SDCdmyqctFvydQsH40jaZqO6t3DCS8bWgIVqxQjf/Llin9uFWrVK/etGnwpS+pAPTEE9VroLF+j5MSkwFfMMzOfi+LWnJf39ae4abi08pKshscGMhNIw2gtMQc7RXVPpd9Hn90QCYVuWTSvva3lRw1u4aLjmwddr3LF6Tb5Z8wQwOQOkgzAqUUyV1ACGEE7gBOBnYA7wghHpdSrom726VAn5RyHyHEBcCvgM8VYz2TlWp7dkbLbl8Qg4j10+jo7E1oGeSR4/4j6XJpQrapy102i7Hw5U53gBkZqLbXlKrvfrKs2Me7I/1oIzJpoPw7cw3SBoYCSMmwA2h9uZVBbxCPP1gQyYpMiPeUfPhh6OyEl15Sgc4bbyh9MFADB4ceqnTC5s+Hgw5S/86eDSUJ3l6tH+3QAgdpLTV2nl69h/Ubw6z72MDJJysB2V/9Sg1IhCIfo3nz4Mgjldm5zaacAZKxvtPJkbNreHldV7QnLFe0frnWWhWg1Jdb6UiTqY1n18AQ+0amQrNF85J2+YKxIM2d2hpNI9sgrdvl45kP97BiWx8XHNY8LPOnZYO1QY+JQKpv024p5Q1F3PdhwEYp5WYAIcRDwJlAfJB2JvDTyP//CdwuhBAyW4W9KUy1w8LAUIBAKJxRmtkV8e3Mp9ShozNZiQ0OpA6sejIM0uxmY1EGB+IDq2RUOyz4g2E8/sQ2bx/tVFmbA6bHmrbiD2i59A5BTJcxPtvXGCdoO6uuNKfHzZdp02JZNohNg/p8MGeOmnh8+ulYMHTttaqnzeVSxuJtbUr+46n1ISwD9VgDKlgJh5VBvNmsMlsjCYfB41HlyJ4e5azQ0wNHHQX19fDyy8q/9KN1+9Cxey7zfqV+p1euVKXZww6DH/5QZf+OOAJqazN7vm5fkO29Q5y/qImVW/vy7gnUTMXry9R7Oa3MysbOxPprI5FSsqt/iBPmTctp3/FtCFo/XJ8nQFsGvqnZBmnvblNBeJfTx3MfdXDaQY3R22IaaZMjk1bso/gMYHvc3zuAw5PdR0oZFEIMADVAZp+cvQDNw6/P42daWfofXbcvqA8N6Oy1ODIsd2rm6jUpyp0A1iJk0vo8/rR+hTBcKy1hkLZrkBqHhfryWKBZbs2/f6c3IhESn0lrmABB2ki0gMpqhQcfVP/3+eDjj+HDD2HffdV1XV2qXPrAA9rUaBvQxr8WK7ukVati05IWi7oYDHDXXXDeeWry9MQTR+//iSfgM59R//d44KBDQrzdtJXLT6vn7E+Usd9+6rYTTlCXbNnY6QJgTn0ZjZVWduWdSVMN85qpeH15CZ1OH+GwTGs03u8J4A2Ec5rshMRtCJlm0qxmIxaTIWP9v5XtfZiNgmllVu57a+uwIG2iaaRB6iDtE0Xed6J3fWSGLJP7IIS4HLgcoLm5Of+VTSJi/p2BDIO0kD40oLPXkmmQFvPtTFPuLHAmbcgfwhsIZ9STFm8N1ZRgGu2jXYPsP718WNa8EJpS8ZZQGlovUiEnPItBSQkcfLC6aLS1wbZtSgB2zWYvp978Nl9YMIfTT58OqEnSX/xCTVj6fOoipbK0AthnH7j5ZtULV1OjMmG1tep6gCVL1GTm7oEwR960joNOMnPkEbmVBeNZ16H6Eec1lNFYYcv7td/W4xlmhVRfbiUUlvS4/WknoXdF3CZyHVwYKY0TCIVx+oIZDdBAdq4D727r48AZFZy8fz03/2cdGzud7DNNvR/bej1U2c3Rk5mJQNIgTUrZW+R97wCa4v6eCexKcp8dEd22CmDUuqSUdwJ3AixevHivKoVWR3+ofUD6L77LF9SHBnT2WhyWWO9LKrqdPoRIrfoPkSCtgJm0TP0KIbUtnD8YZkOnk+Pmzhp2fSHkChIFaZr46Z4sXQcmEmYzbPf1Yqlz8cXP2mmKHJ0aG+G665Jv19QE3/9++sevL7NiMRnYXiAPT21ooLnazvRKW1S4OBc0U/EjZ9dEr9MysJ1Ob9ogbXe/et9zzaRFy50R1wHte1Cdxm1AI1ORZn8wzKodA3zpiBbOX9zEbc9v4G9vtfPTMw4AVE9a8wSxg9LIfla2cLwDzBFCtAkhLMAFwOMj7vM48OXI/88FXtL70YajWUNlKsPh9o1dY6+OzkTDZDRgNRvSZtK6XGp60ZSmz7PQgwOZWEJppLKFW9/hJBCSUacBjULIFSQKJG0WJdmQqX/nRGXF1j5sZuOo160QGAyC5mp71B8zX9Z3uthnWilGg2B6hZVulz/nSeMulw+PP0RrXIAyLQtB2915ZtKiGe7IQE9/xBIqk3InZB6krdk9iD8YZmFLFbWlJZw6v4FHVu7AE9nvtl73hDFW1xi3IE1KGQSuBp4FPgYellJ+JIS4QQhxRuRufwFqhBAb/397dx4d113lCfz7q71Ui3bJ8iLJe2xnsbyEhLAHQghkg8AkTSChmYE5E8ihge5m6TPNgR5IN9MHQrOEBNLQTDckpOkmwyTDmYSENAlZvGWxE9vxIlmWbEuqUpVU+/KbP169UpX0qurV+sqq7+ecHMtSSX7xU7mu7v3dewF8FsAXjLna5qX+NDulswtnnmfSqMW57RZdjQN6Bpk6alzuVF+cdGXS3IX3dx6aWNrZCQBeh/Lcr2agrS8Uh8tmzq7FUq3wOmqydcBIe0Z9GBnsqGjWlx5KkFa7TNrmfqV6oi41r/Tvf0zjLFZ/GauhJgJRWEyi4uG/Hkd+uVMrW1uM3iBtb6ZpYGdmJ+utlw1hLpbEwwcmEE+mcdofaaqmAaD4mbS6k1I+AuCRRe/77zlvRwF8sNHXdT7pcdvQ7bJl17+UEoons+3ORK3IZV+6gmYxZW9n6ReINpu5pnPS1BcnPWfSXDblwLRWkHZwIoA2mxlrF5VuLGYT3HZL1eVOretbUeOtA402H0vi0EQQn3rHxrr9GYNdbXj2+EzVw4QDkQTOBKPYmAnSVmbKjBOBCIZ1dEQuNpodPbEQoPRmAi49A20nZyPo9zpKbskoZPFZ0dmwuhJKX7nT67Dg6LnS39P7Rv1Y1eHMBqC7hjpxwQoPfvbsKN6wrhtpiabaNgAYW+6kGhBCYGSwA/vH/LoerzQOMJNGrUtrmfNiM6G4rqxArc+klfPiJITQXA0lpcRzJ3zYttKr2ZXndVQfpHVrBGkD7Y6yhp82m/1jfqQlsLtG+zq1DHW3IRxPZbuHK3U02zSgdNKqmTT1bFi5Rn1hmASwunMhQLFZTOhy2XBWx2qoiUAUK3XM9iukLZOVVc+kaXUQF9PutCIQ1hGkjfmzWTRAeQ59+LIhHJwI4tcHTgMAhngmjWptZLATx6ZCur5J2ThArU4pd5ZuHNCTSXNYzQjXsNzpL6PcCWivhds35sdrZ+Zw48hqzc/xOq26xxVoX2OBTJrXien5OGLJ2o4kaZQXTvphEsq/p/WiZmlO+asreR45q4zf2KSWOzOZtErPBI7OhDDQ7lyyJ7PPY8c5HYH3ZCBS8bYBQDmvl3sMoZwGGkAJ0uZiSaTThY+sT8xGMBmIYsdgR977bxxZBZfNjHufOg6guWakAQzSloWRNco33YHx2aKPS6TSiCfTzKRRS3PZzUU3DkTiKYTiKX2ZtDqUOz12i+4zUV0ambSf/XEUHrsF129fqfk5es/vFDIzn78SSqUGCnoOmjejPSd92LrSW9cfYtUMaTUjUAClMcRlM2NVJoPmsJrR7bJhosJy8+hMOLtpIFe/11Gy3JlOS5wJRKvaGwos7O8ElIyy07r03GMhXqcVUgJz0cLP64XzaPmbJNx2C27csQrheAoOqwl9JTpZG41B2jJw8ZoOCIGSJU/1CcAgjVqZciatcGA1ndk20Kuz3JlISSRS6Zpc22w4jg6dYwcAZVZa7giO6fkYHnn5DD6wc3XB57m3jJlSWgrtVFyRzeacnyXPI2fncNGq9tIPrMLC2avqAvvDZ+awsd+Td66tmoG2Y75wdmdnrn5v6f2d06EYEilZVbkTUP5uFhoHEro6nFW5684K2TuqdO5eMLB0VNWtlylLTwe72ppuGw+DtGXAbbdgc78H+8eKZ9Lms8vV2ThAratUuVMN0vSUO9UduLXKpvnDCc0sVSFdLjt8OeebHtxzCvFUGrdeVniodzmDPxeLJlIIx1Oa5c5qS25GSqcl/OFExd2Jerls+oYpl3L03Bw29edvdhhod1Z0Jm0umoAvFNcs8/V7HZiejyFVpIy4MCOtukxa7vNytkBJvRA98//2j/lxyZp2zSz1BSu8eOeWPly2rlvjM43FIG2ZGBnswIFTs0Vr8upPb8ykUStz2S0IF3mRVOeO6RrBkRmOW6vmAX9Y3yocVbfbhlA8hWgihVRa4p+fHcPl67qzE9S1VFPuLDYaIXc11PlmLppEKi11n4Gq1OJRE5WYmY9hej6ePY+mWtnuyE7+L4dWZ6eqz+tAWi7sstWiBuWVDrJVuXO6rn3heFn3olSQFomncHAiiB1Fzhv+6Lbd+Or1F5ZxxY3BIG2ZGFnTiUAkgRNFBiWq53AYpFErc9ktCMVTBX+gKSeTpnalReO1KXfq3dupUl/IfKE4njx8DqdnI/jI5UNFP8frsCIUT1VUoi0WpHkcVrjtlvOy3KmuAdPbTVgpvWvJilGbBjavyA/SBjqcmIsmyw4As0GaRldjv6f0GI6JTCat+jNpuZm0RHmZtLbiQdpL47NIpmVeZ+f5gkHaMjGS6VgpVvIMZcudDNKodanl/nCB7Jd6EF9v4wBQu0zabKi8F6fcJes/e3YU/V473rW1v+jntDuV53+xQ9aFlBoy2u+1n5eZtGw3YZ2DNKvZBJvFVFUm7Uhm/MaSTFp2DEd52bRRn/KDvdZS8T4dA20nAxHYLaayfrjQ4s47k1beDyulMmn7Mq+L9ezcrRcGacvE+l43PHZL0eaBbOMA10JRC2srcS5oai4Gt92iq7NMPZMWLtItqlc8Wd5SaWAh27f/1Cx+f2QKt1w6WLIztFTWoZiFnYra1zjQ7tTc33nk7Fw2Q9mMsnO56lzuBPSNgCnm8Nk5tDutS7oQFwbalhckj82E0eO2af7wru7vLDYrbSLT2VntgXu13JlMpRGMJsp6HqgL0Qt9T+8d9WNdr6vumdJ6YJC2TJhMAtsHO4pm0tQZNMykUStTv/8LvVAqg2z1/WOuBnK1yKTNRvTv7VSpLzr3PHkMJiFwy6WFGwZUpV7Qislm0gq8gK5oX7oa6plj03jfd/6Aux59rew/r1H82U0P1WWD9MgdNVGJo2eVpoHFQZE60LbcDs/RmXDBKfs9bjuEKF7unJyNVH0eDVjoug5EEpCyvOdBm80Mi0lofk9LKbFvzF/0PFozY5C2jIys6cBrZ4IFf6pfGMHB7k5qXaXOBU3P6dvbCSyUO2vR3Znd21nGT/vq5P/TsxG8e1t/dt1NMdlxBRUGaSax8DUWG2h34NxcFMnMebdDE0F88p/2Ip5K49jUfNl/XqP4SmQIa8ltt5bcHVuIlBKHz8wtKXUCyvkxkyi/3DnmCxecsm81m9DtKj7QdjIQrbqzE1COIcRT6WxAWM7zQAhRsCHm5EwYvlD8vDyPBjBIW1ZGBjuRlsBL4wHNj89zThpR9oeUQpk0vXs7gYVyZ6QGjQPZvZ1llnnUfYnqrKdS9IwrKEQ5K2TTXDcFKJm0tASm5mM45Qvjtn98Hm6HBVde0FezxeL14A/FYbeYsvezntxVZNLOzcUQjCaXNA0Ayl7WPo+jrHJnLJnCRKD4UvF+rx3n5rQzaclUGmeD1a2EUqkZ7vHMNoZyO20LBWn7Fi1VP98wSFtGtq8p3jwQiiVhMQnYLbzt1LrcJQaK6t3bCeQEaTXJpJW3VBpQjjl0uWxY3+vC5TpnPHmrDdKKZDjUstehiSBuu/95xBIp/PRPL8Wla7vgC8VL/pm/e+0s7sus52kkX0gZ0NuIQaauKs6kHT6jNA1sLDBiZaDDUdaculO+CKQsvgpJ2TqgHfidm4shLaufkQYsJA9O+ZXrLzerWWhI894xPzwOCzb0ujU+q/nx1XoZ6XTZsLbHVbB5IBRLwmW3NN1EZaJGKlbuTKbS8Ifj6C6z3FmLIE3d21nui9OXr9mCuz5wse7ntZ7p7IX4QtoroVQrvMqL9Wd+cQCnZyO4//bd2NTvyZbTxkpk0376zCi+/dgRSFl43mM9+Mucy1UNV848sHItdHZqBxwrO8obaDumdnZqbBtQKVsHtDNp6vm3gRpm0k75lO+Rcn5YAQoPad436sfIYGfB7G+zY5C2zIys6cD+U7Oa/8jNx1JsGqCWp2bJxjWWXPvCcUgJ9Ootd6pn0mqwZL3cpdKqG0ZWYfdwV+kHZjisZtgspoq7O4sFkepA21A8iX+4ZQS7Mtel7oU8WWSOIwAcm5pHKJ7CVIHyWr2ombRG8FSRSTtydg49bnvBHyLUgbZ6g9x9o7MwCWB9b+Egrc/jwEwopjlXTy2trqxhJm08k0mrRbnzldMBHD47h13naakTYJC27IwMdmBqLobTGodHQ7Ek2mxsGqDW1u60YmOfG3tGl2acp+eUQElvJs2ROToQrkWQForDYTXpXipdDa+jstVQpcqdnW1WvHtbP/7upktw1bYV2fer3YOjRYK0SDyV/Xfr2FTxYK7W/GUOT61GpZk0KSUOTQYLZtEApewYTaSzWdli0mmJf9t/Gm/a2Ft0y0Wf1w4poTlCZbKWmTTHwpk0m8VU9mvV4iAtmkjhMw8cQJ/Hjo+WGPDczBikLTPqsD6tc2mheJJNA0QAdq/twt5R/5KdhOoLkd4zaRazCTazqWblzkbM6QKUgbbBSHmBgrrfsqvImAohBH74kV24aefqvPe32Szo99pxski588R0CGoC6MR0Y4M0pYxb//EbQOmNF1rUgOOV00FcsaGn4OPUA/x6xnA8e3wGp2cjS+7VYv0edaCtRpAWiMJtt2THulQjt9zZ2WYt+1iO12lBMJrMZhHvevQ1vH5uHv/zg5eUtWqt2TBIW2Y2r/DAYTXhwKmlQdp8LMlyJxGA3cOdmIsms2d8VOp6IL1z0gDAYTXVaARHeXs7q1HJ/k51v2WXq7Il5EPdrqKZtNwRHccbOK4jmUojEGlcJk3deBHSOQB5YjaCD97zRzz84gT+/N2b8d/etr7gY9UD/HpWcz20dxwehwVXldhQ0V9k68BEjWakATlnReOpis4HtjutSKUl5mNJPHVkCj955iQ+dsUw3ryxtybXZxQGacuM1WzCxas68poH0mmJe586hpfHAzVplSY63+0aUs5KvXDSl/f+csudgHIuLVKDcqdSSmxMNsdbQZC2c6WaQAAAHFxJREFUsN+ysmsc7m4rmkk7NjUPIYC1Pa6GZtJmI5U1bFTKVaK7ONeekz5c990/4MR0CPd9ZBfuePuGohmm7GqoEh2ec9EEHnllEtdesrJkeV3dOqA1K20yEM0O0a1WbgKh0iANUIbzfv6XL2Jjnxt/efUFNbk2IzFIW4ZGBjvwykQQsWQK54JR3PaPz+Prj7yGd27px5eu2WL05REZbnWnEyu8DrxwMv9c2nQoBpvZBK9Df8bZaTXXaARHeatwqtHutJbd3bmwEqryTNrUXKzgeaxjUyGs7nRiy4AHxxsYpPkrmE9XjVIbL1QP7jmFW+57Fm67Bf9+xxvxzhIZL0AZbmwzm7JLzwt59OUziCbS+MCO4qVOQPmBxSSgOSttMhDJrqOqlivnDFolAbMapH3+ly/CH47j2zdvb8j5znpjkLYMjQx2IJ5M454nj+Pqu/8DL5z04Rvvvwg/uHXHeV2bJ6oVIQR2DXfihRO+vE646bk4ut3lzcty2iw1OpPWuDEQlZQ7q91vOZwZw1FoqO3xqXms73VjbY8LY76wZjdhPahDhLsbVu4svvECUIbMfvnfXsbIYCd+fcebsKHAXLTFTCaBFe2lZ6U9tG8c63pc2DHYUfJrmk0CvR77knLn0bNzmJ6PY3VnbTJpFrMJDqsSkpQ7fgNYmP/32pk5fPZdm7FtZXtNrstoDNKWIbV54FuPHcEKrwO/+fSbcculg5yPRpRj93AXzgSjeZ3QMyH9K6FUTqup6nJnKi0xG0mUta+wGmp3ZzmH130hdV1PZdeoDkzVOpeWTkscnwphfa8b63rcSKUlxnyN2VCQHX3S8HJn4SAtGEkikZK49pKVaC/ze2Kg3VG0cWB0JoTnT/jwgZ2rdb8mKANtFzJpsWQKd/7iALpdNnxo95qyrq8YNYCtJJPW4VQ+59K1XfjEW9bV7JqMxlPky1C/14Hrt69Ev9eBz121CXbL+Z/yJao1dbbYnpN+rO5UAojp+Rh6yw3SbNWXO4PqUukGBQrtTivSUjm87tHZmadm0rorLneqs9KWBl+TwSgiiZSSScvM7DqRCdrqLZshbHAmba5IkKZmOQvtSC1mZYcTz5/wFfz4v+47DSGA9+9Ypftr9nkceXMFv/l/D+PVySB+fNsu9Hlqd87Zbbdger6yBppN/W58+h0b8OE3DGVXpS0HzKQtU3ffPIIvXbOFARpRAZtXeOCxW/KaB5RyZ7mZtOobByodZFupSvZ3+kIxOKym7ADfcnkcVvS4bZqZtGPnlG7O9b0urOtRgrTj043p8PRXsI6rGroyaZnzguWcjVQNtCtrnBaPlwGUjOWv9o3jTRt6ylrllLu/86kjU/jRH07gI5cN4cotpc/JlcOVzaSVfy8sZhM+d9Xm7EDl5YJBGhG1JLNJYMdQJ/ZkmgeklBWVOx1Wc9UjOBodKHidyotheUFa9XPchrpdmlsH1PEb63rd6Gizoctla1iHpy8Uh9tuadgPtHrOpKmDhr0VZtKSaak5fPa5Ez6M+0vPRlusz+OALxTHmUAUn8t0Tn75vbVvQlODNJ6dXsAgjYha1u7hThw+O4fZcDx7DqicGWlAbbo7/Q0uuakv/uUMtPWH4+gq8+9msaHuNs3GgWNT8/A6LNm/+3U9roZtHWjk6BMgt7uz8PeMGjxXMiS22EDbh/aOw2O34KqtK5Z8rBh1DMcn/9deBMIJ3H3zSF06Jz1qJo1BWhaDNCJqWepuyb2jfkyHyts2oKrFmbTzodw5E6q++3S424XJQHRJ5vHYuRDW97mzB9kbOSut1NL4WnNYTTCJUuVO5WOVnEkrNNA2FEvi0Vcm8d6LB8ouWasDbV88NYu/uHoztq70ln1deqiZtEY9D84HDNKIqGVtX9MBq1nghZN+TGfO3HSXm0krMMzWH4rjmWPTur5Gw8udDjWTpj9I89dgCbnaPHBqUefm8en5vCaBdb1uTM3FMFfmLLdK+MPF95HWmhACrhJL1tX74qngTJq67Dw3k5ZKS/zwqeMIx1NllzqBhSDtzRt78KdXrC378/XKBmkNzGw2OwZpRNSyHFYzLlrVjj0nfZjJzMsqfwSHGbFkeslB7R/8/hj+5L7n8rZ/FOIPJ2A1i4atbVPHOpQz0LYWQZo6Ky23w3MumsDZYCwvSFubaR5oRDat0Zk0QCl5lgrS7BZTRSVFr9OCNps5O9D2xVOzuPH7T+M7jx/F2zf3YudQZ9lf84IVHnzl2q24++YRmOrYOdnlssJpNXN9YQ4GaUTU0nYPd+Gl8UA281BJkAZgSQlP7Rr92m8O5Q3M1aLu7WzULEO3zQKT0F/ujCVTmIslqw5mFgbaLgRfxzNnz9ZnRm/kvt2IIM0famwmDVCCtFLdnZU0DQBKpm5lhxOHzwbxxV+9jBu+/zQmA1HcffN23H/77oq+x0wmgduvWFv3M5Mff9M6/PwTl3GmZw4GaUTU0nYNdyGeSuPxV89BCJQ9UFY935N7Li2aSOGV0wEMd7dh39gs/vdLk0W/hj/UuEG2gPKi63Ho3zowG840NlTZONDeZkW705rX4Znb2aka7G6DEKh780A0kUIonmpYw4aqdLkzWdF5NNVAuwNPvz6DB/ecwsevWIvffe6tuH77qqYPfrpcNmxfU3oLQithTpGIWppa/nnuxAy62mywmMv72VUtSeWeS3tpPIBESuKL12zB3Y8dxd8++hqu2tpfsHzla+BKKFW706r7TJq6OqkWZcHhRR2ex6bmYTGJ7Hk1ALBbzFjd6ax7Jk0NPhv9d68rk1bBeTTV+y4egMNqxuev2ozNK/StlKLmxEwaEbW0LpcNG/rcSMvymwYA7XLn3lHlHNru4S781fu24PRsBD/+w4mCX2PWoCBNbybtTGZvY4+nsm0DuRbPSjt2LoTB7jZYFwXH63rcOD5V34G22eCzwQfVXXZz0UxaIFJ5uRMA/tPuQdz30V0M0JYBBmlE1PLUFVHlnkcDFoK0SF6Q5sO6Hhe6XDa8cX0P3rW1H99/4nWcm4tqfg1/ONHwjjav05Id9VDKoYkgAGBTf/Uv+sPdbTjtjyCeVBaoH5ua11z/pI7hKHWerxqNHn2ictktCBWZkxaMJKoqd9LywSCNiFre7mGl5FnuSigAaLPllzullNg76s/rovvSNVsQT6Xx9789suTzpZTK4fUmzqQdmghiTZezJoHDULcLaQmM+8NIptIYnQlrBmnre10Ix1N5i71rbSGT1ti/e0+pM2nRZEWDbGn5YZBGRC1vIZNW/ou1IxOkhTOZtOPTIfjDCewaXgjS1va4cNvlw3hw7ykcnAjkff58LIlkWjZ1kHZwIoBtA+01+XOHe5SzZ6MzYYz7I4in0nmdnaq1PUrgVs8dntlMmgGNA6FYUjNLKKXMlDt5ZJwYpBERYXWnEx+7YhjvuXCg7M/NnknLZNL2ZnaBLp5H9ekrN6LDacVXHj6IPSd9OBuMIp2W2cPrjRpkq/I69DUOzEUTODkTxrYaTZkfys5KC2l2dqrWZQK343Xs8FQzaR0NLi267BYk0xKxTMk3VzieQiotmUkjAOzuJCKCEAJ/fe22ij538Zm0vaN+dLRZsa4nP/Bod1rxF1dfgC/+6mXcdM8fAQA2iwm9mRJro0tuXqcVsWQa0USq6NDUVyfnAADbVtUmSOt22eC2WzA6E0YipQQpWpm0FV4HHFZTXTs8/aE42p3Wsjt6q7WwvzO55O9eHTDMM2kEMEgjIqrK4jlpe0Z92DHYqTmZ/ZZLB/HG9d04Ph3CuD+CcV8Yp/xhrOt14eLVjZ0P1e5cWA1VLEhTy7PbVtam3CmEMm7j5EwIkXgKPW4bOjRKvSaTwNo6d3j6womGB8fAwvqjUCy5pFlFXXpfTXcnLR8M0oiIqpA7J80fiuPYVAjv31F4P+JQtytb8jOSGgQEown0ZXYzajk4EUSP24a+GozfUA13u3BoMoj5aFKz1Kla1+NacoavlpSGjcYHQ7mZtMXUc4IsdxLAM2lERFVRuzujiRT2ZfZ07qpgP2KjqZm0Us0DByeC2LqyvabT6oe623DKF8bRc9rjN1Trel04lTOuo9Z8NdhHWgl3NpO2dAyHek6QjQMEMEgjIqqK1WyCxSQQSaSwZ9QPi0k0vHRZCT1BWiyZwtGzczVrGlANd7uQTCtdjFrn0VRre1xIpSXGfOGCj6mG34AhwoAyzBaA5tYBnkmjXAzSiIiq5LSaEY6nsHfUj22r2rPn1JqZunZIPQOl5ejZeSTTElsHahuk5a6AWt9XLJOWGcNRh3NpUkrDM2ksd1IpDNKIiKrksJkRjCTx4qnZ86LUCejLpC00DdQ4k9azkD1b31M4SFubeVw9OjzD8RRiybQxQZqjcJCmBs2eKnZ30vLB7wIioio5rWbsG/MjlkwvmY/WrLy6grQgXDYzhmvc6NDnscNhNSEtgVWdzoKPa3da0eO2VTUrLZ2Wmp226oy0Rg+yBfK7OxcLRhNw2y0NHwtCzYlBGhFRlZxWMw6fVeaJnS9BmtVsQpvNXHSg7cGJILYMeDWDnGoIIbKBn7nE11Z3eOoxMRvBy6cDeG1yDq9OBvHamSDG/RHcf/tuvGVTb95j1W0DXUacSbMVy6QlsqVoIn4nEBFVSV0NtbrTif4i4yyaTbHVUKm0xKuTQXxwZ+FxItW488qN0BP6re1x4fFXzxXMiKn+z0uT+PTP9yEtASGU5oStK72YDETxxOFzS4I0IzNpZpOA02rWzKQpK6F4Ho0UDNKIiKrUlpmVdr6cR1MVC9JGZ0IIx1M1G2K72DUX6VvBdcWGHjy4ZxzffeJ13HnlRs3HjPvD+MKvXsJFqzvwlWu3YvMKD9oy2aoP3fNH7BubXfI52UyaAUEaoJQ857VGcEQTbBqgLBa9iYiqpHZz7swsaj9feB3W7MiHxQ5OBAEAW2vcNFCu6y5ZiRu2r8S3HjuCPxydXvLxVFrisw+8CCmBf7h5BCODndkADQB2DHXi0EQA0UR+QOQLKf/fRpQ7AaUxoFDjADNppGKQRkRUJXV/587B8yuT5nVaESgwguPgRBBWs8Cmfk+DryqfEAJff/9F2NDrxp2/2I/JQCTv499/4nU8f9KHr16/DYM5oz1UOwY7kEhJvHI6f3OBPxSH2SQM66J02YuVO1nkIgWDNCKiKrntFnjsFmxeYWxAU652p7Vg48DBiQA29nlgsxj/MtFms+AHt+5ELJHCHf+8L7uYfe+oH99+/Ciu374SN46s0vzcHZkS9N5Rf977fWFlJVStmyL0ctkKZNJY7qQcxj/7iIjOc3e8fQPu/9jukp2KzcbrtGgGaVJKHJoI1nw+WjU29Llx1wcuxr6xWXzjkdcwF03gMw/sx0C7A1+74cKCa6t63HYMdrVlV3aplL2dxpQ6ASWwX5xJS6cl5mMsd9IC5lSJiKo02N2mWWprdqs6nJiLJfH7I1N4a07349lgDDOheFMFaQBw7SUrsXfUj/ufPoEXTvowMRvFg5+8rGTmacdgB54+NgMpZTaY84XihnR2qlwaQdpcNAkpuRKKFjCTRkTUom69bAgXrPDgzx44gDOBaPb92U0Dq+rT2VmNL12zBdvXdODl0wHc+Y6N2DlUullj51AnpuZiGPcvnGfzh+OGNQ0AytaBxeVOtYmDc9JIxSCNiKhFOaxmfPdPdiCaSOHOn+9HMnPW6+BEEEIAW2q8s7MWbBYT7v3oTvyPGy/EHW9fr+tzRjINHbklT18oYWgmzW1fGqRl93Yyk0YZDNKIiFrYhj43vn7jRXj+pA/feuwIACWTNtztyi4CbzZ9Hgc+/IYh3auTLljhQZvNjH2Z5gEppZJJcxkXDLlsFkQT6WxgDCxk0ljuJFVzPgOJiKhhbhhZhWePz+B7TxzD7uEuHJwI4pI1HUZfVs1YzCZcvLo9O9Q2GE0ilZaGNg647MrYllA8hXanEmyqTRzs7iQVM2lERISvXLcNF6zw4DMPHMC4P9J0TQPV2jnUiVcng4jEU/CHjN02ACCbpcxtHghmZtZxThqpDAnShBBdQoj/J4Q4mvlVcwKkECIlhDiQ+e/hRl8nEVGrcFjN+N6HdyCeVMpv9VoHZZQdg51IpiVeGp+FL2zc3k6V27F0yXq2cYDlTsowKpP2BQCPSyk3Ang883stESnl9sx/1zXu8oiIWs/6Xje+edMlWNvjwvZlVO4EFpoH9o75FzJphpY7lwZpgUgCJgG4bcykkcKo74TrAbwt8/ZPATwJ4C8NuhYiIsp478UDeO/F+pafn0+6XDas7XFh3+gset327PuMol3uTMDjMG4LAjUfozJp/VLKSQDI/NpX4HEOIcQeIcSzQogbCn0xIcQnMo/bMzU1VY/rJSKi89yOwU7sH/PDFzK+3OmyaQRp0STPo1Geun03CCEeA7BC40NfLuPLDEopJ4QQ6wD8TgjxspTy2OIHSSnvBXAvAOzatUtWdMFERLSs7RjqwL/uG8eBU7OwmU1w2cyGXYs7W+5MZd8XjHBvJ+WrW5AmpXxnoY8JIc4KIQaklJNCiAEA5wp8jYnMr8eFEE8CGAGwJEgjIiIqZUfmXNpTR6bQ6bIW3PfZCNnGgejC7tRAJMEZaZTHqHLnwwBuy7x9G4BfL36AEKJTCGHPvN0D4AoAhxp2hUREtKxs6vcoi83jKUNnpAH5c9JUwSgzaZTPqCDtLgDvEkIcBfCuzO8hhNglhPhR5jFbAOwRQrwI4AkAd0kpGaQREVFFzCaBS9Yoo0W63cYGaXaLGVazyB/BEeGZNMpnyHeDlHIGwJUa798D4D9n3n4GwEUNvjQiIlrGdg524unXZwzPpAHKGI7QohEcLHdSLm4cICKiljEypJxLM3L8hip3yXo8mUYkkWK5k/IwSCMiopaxY00nzCaBfq/D6EtRgrSoEqTNcdsAaWDxm4iIWkZ7mxUP/dfLsa7XbfSlKOXOuBKkBaPc20lL8buBiIhairoiymguuwWBiJJBU3/lmTTKxXInERGRAdx2c7ZxIJgJ0ngmjXIxSCMiIjKAO6e7M8gzaaSBQRoREZEBXDmNAwFm0kgDgzQiIiIDuDONA1JKBCNKsMYzaZSLQRoREZEBXHYL0hKIJFIIRhOwmgUcVr4s0wJ+NxARERnAZc8sWY8lEYgoezuNXPpOzYdBGhERkQE8mSAtFEshyJVQpIFBGhERkQGymbRoEsFoEh4GabQIgzQiIiIDuOxmAEq5MxhJwOvgfHnKxyCNiIjIAO5suTMTpDGTRoswSCMiIjKAWu4MxZMIRnkmjZZikEZERGQAtXFgLppEMJLkIFtagkEaERGRAdRM2sx8HPFUGl4nz6RRPgZpREREBmizmSEEMDEbAcCVULQUgzQiIiIDCCHgslkwEVCCNJ5Jo8UYpBERERnEZTdjMhAFAHZ30hIM0oiIiAzitltyyp08k0b5GKQREREZxG23IBxPAWC5k5ZikEZERGQQtcMTYLmTlmKQRkREZJDcIM3DcictwiCNiIjIIOpqKIfVBLvFbPDVULNhkEZERGQQNUjjeTTSwiCNiIjIIGq5k4NsSQuDNCIiIoO47UqJk00DpIVBGhERkUEWMmlsGqClGKQREREZhGfSqBgGaURERAZRgzSWO0kLgzQiIiKDsHGAimGQRkREZBAXy51UBIM0IiIigyyUO9k4QEsxSCMiIjLIul4Xbr1sEG/Z1Gv0pVATYuhORERkEKvZhL+54SKjL4OaFDNpRERERE2IQRoRERFRE2KQRkRERNSEGKQRERERNSEGaURERERNiEEaERERURNikEZERETUhBikERERETUhBmlERERETYhBGhEREVETYpBGRERE1IQYpBERERE1IQZpRERERE1ISCmNvoaaEkJMARhtwB/VA2C6AX8OlYf3pXnx3jQn3pfmxXvTnGp9X4aklL1aH1h2QVqjCCH2SCl3GX0dlI/3pXnx3jQn3pfmxXvTnBp5X1juJCIiImpCDNKIiIiImhCDtMrda/QFkCbel+bFe9OceF+aF+9Nc2rYfeGZNCIiIqImxEwaERERURNikFaCEOJqIcRhIcTrQogvaHzcLoR4IPPx54QQw42/ytaj4758VghxSAjxkhDicSHEkBHX2YpK3Zucx90khJBCCHavNYCe+yKE+FDmeXNQCPEvjb7GVqTj37JBIcQTQoj9mX/PrjHiOluNEOJ+IcQ5IcQrBT4uhBDfydy3l4QQO+pxHQzSihBCmAF8D8B7AGwFcIsQYuuih30cgF9KuQHAtwD8bWOvsvXovC/7AeySUl4M4CEAf9fYq2xNOu8NhBAeAHcCeK6xV9ia9NwXIcRGAF8EcIWUchuAzzT8QluMzufLXwF4UEo5AuBmAN9v7FW2rJ8AuLrIx98DYGPmv08A+EE9LoJBWnGXAnhdSnlcShkH8AsA1y96zPUAfpp5+yEAVwohRAOvsRWVvC9SyieklOHMb58FsLrB19iq9DxnAOBrUALnaCMvroXpuS//BcD3pJR+AJBSnmvwNbYiPfdFAvBm3m4HMNHA62tZUsqnAPiKPOR6AP8kFc8C6BBCDNT6OhikFbcKwKmc349n3qf5GCllEkAAQHdDrq516bkvuT4O4NG6XhGpSt4bIcQIgDVSyt808sJanJ7nzCYAm4QQTwshnhVCFMsiUG3ouS9fAXCrEGIcwCMAPt2YS6MSyn0dqoil1l9wmdHKiC1uh9XzGKot3X/nQohbAewC8Na6XhGpit4bIYQJyrGA2xt1QQRA33PGAqV08zYomef/EEJcKKWcrfO1tTI99+UWAD+RUv69EOJyAD/L3Jd0/S+PimjIaz8zacWNA1iT8/vVWJpqzj5GCGGBko4uliKl6um5LxBCvBPAlwFcJ6WMNejaWl2pe+MBcCGAJ4UQJwFcBuBhNg/Und5/y34tpUxIKU8AOAwlaKP60XNfPg7gQQCQUv4RgAPK7kgylq7XoWoxSCvuBQAbhRBrhRA2KIc2H170mIcB3JZ5+yYAv5McPldvJe9LpqT2QygBGs/WNE7ReyOlDEgpe6SUw1LKYSjnBa+TUu4x5nJbhp5/y/4dwNsBQAjRA6X8ebyhV9l69NyXMQBXAoAQYguUIG2qoVdJWh4G8NFMl+dlAAJSysla/yEsdxYhpUwKIT4F4LcAzADul1IeFEJ8FcAeKeXDAH4MJf38OpQM2s3GXXFr0HlfvgnADeCXmT6OMSnldYZddIvQeW+owXTel98CuEoIcQhACsCfSylnjLvq5U/nffkcgPuEEH8GpZx2OxMB9SeE+DmU0n9P5jzgXwOwAoCU8h4o5wOvAfA6gDCAj9XlOniviYiIiJoPy51ERERETYhBGhEREVETYpBGRERE1IQYpBERERE1IQZpRERERE2IQRoRERFRE2KQRkRERNSEGKQRERUhhNgthHhJCOEQQriEEAeFEBcafV1EtPxxmC0RUQlCiL+Bso7HCWBcSvkNgy+JiFoAgzQiohIyexVfABAF8EYpZcrgSyKiFsByJxFRaV1QdsF6oGTUiIjqjpk0IqIShBAPA/gFgLUABqSUnzL4koioBViMvgAiomYmhPgogKSU8l+EEGYAzwgh3iGl/J3R10ZEyxszaURERERNiGfSiIiIiJoQgzQiIiKiJsQgjYiIiKgJMUgjIiIiakIM0oiIiIiaEIM0IiIioibEII2IiIioCTFIIyIiImpC/x9OlVb0+Akk5QAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred_rf_regressor_4, label='DML Polynomial Features with RF Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor_4, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## AutoML Final Stage Nonparametric Estimator\\n\",\n    \"\\n\",\n    \"For correctness, all nonparametric double machine learning estimators (all estimators besides ``NonParamDMLEstimator``) must be trained on models that enable sample weights. We can specify that using a the parameter ``sample_weights_required``.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"automl_config_final = EconAutoMLConfig(task = 'regression',\\n\",\n    \"                                       debug_log = 'automl_errors.log',\\n\",\n    \"                                       enable_onnx_compatible_models=True,\\n\",\n    \"                                       model_explainability=True,\\n\",\n    \"                                       #For correctness, parametric DML must have sample weight\\n\",\n    \"                                       sample_weights_required = True,\\n\",\n    \"                                       **automl_settings_reg)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = NonParamDML(model_y=RandomForestRegressor(),\\n\",\n    \"                  model_t=RandomForestRegressor(),\\n\",\n    \"                  model_final=RandomForestRegressor(),\\n\",\n    \"                  random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_rf_regressor_6 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = NonParamDML(model_y=grid_search_reg(),\\n\",\n    \"                  model_t=grid_search_reg(),\\n\",\n    \"                  model_final=grid_search_reg(),\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_cv_regressor_6 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_28-14_36_01 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_36_01 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_37_57 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_37_57 completed.\\n\",\n      \"Experiment model_t_20_01_28-14_39_43 has started.\\n\",\n      \"Experiment model_t_20_01_28-14_39_43 completed.\\n\",\n      \"Experiment model_y_20_01_28-14_41_26 has started.\\n\",\n      \"Experiment model_y_20_01_28-14_41_26 completed.\\n\",\n      \"Experiment model_final_20_01_28-14_43_03 has started.\\n\",\n      \"Experiment model_final_20_01_28-14_43_03 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"AutomatedNonParamDML = addAutomatedML(NonParamDML)\\n\",\n    \"est = AutomatedNonParamDML(model_y=automl_config_reg,\\n\",\n    \"                           model_t=automl_config_reg,\\n\",\n    \"                           model_final=automl_config_final,\\n\",\n    \"                           random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred_aml_regressor_6 = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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sHPnTt599122bduGLMsMGzaMsWPHurXymTdvHq+88go33HADVVVVfP/997z33nt88MEH7N69m127duHv78+AAQN48MEH0Wq1zJ8/n507dxIeHs6kSZNYs2YN06ZNo7a2lnHjxrFw4UJuvPFGnnrqKdatW8eBAweYM2cOU6dOddvrlVdeycaNG/Hz8yMvL48nn3zSrSG7JzZt2kRGRgYAM2fO5M9//jMPP/wwf/jDHxg9ejQnTpxg8uTJHDx40Ov6CxYsYMeOHWr/zueee87r9Q4dOsS7777Lm2++SVlZGc8//zx5eXkEBwezcOFCFi1axAMPPEBubi4FBQVIkkRlZWWTdUaNGsWWLVuIj48nMTGRTZs2cfvtt7N161aWLFmiCquEhATuueceQkJCVCG4bNkyiouL2bx5MwUFBUydOpWbbrqpyTXWrFlDTk4OV1xxBREREeTn55OZmamO33LLLaxcuZLY2Fi0Wi29evXi9On25fx9+eWXatu3gwcPsmrVKrZs2YJOp+O+++7jww8/ZOLEifzlL38hPz+f0NBQrrrqKjfL8uHDh8nLy0Or1fLkk09y1VVX8c4771BZWUlWVhYTJ05k6dKlPPzww9x6661YLBbsdjuff/45vXr1UpvSV1VVYTKZmDt3LuvXr+eKK67g9ttvZ8mSJfz+978HICAggM2bN7frXn0BIeAEgkuYGmf8W9/IIPgZKozCAteRNI4xvPnmm5k1axYFBQXMnj27zS40V79VUCxwv/3tb1myZAk33ngjwcHBAEyfPp1Nmza5CbixY8dy//33U1payr///W9mzJiBn5/ydTBhwgS1O0NSUhLHjx+nvLyccePG4SrFdOutt7Jx40amTZuGXq8nJycHUCxO/v7+6HQ6UlNTKSwsbLLnqqoq5syZw5EjR5AkSW063hzZ2dlurkBQukkcOFBfu726upqampp2rd+Y+Ph4hg8fDsDWrVs5cOAAo0aNAsBisTBixAjCwsIICAhg3rx5XHfddR7j97Kzs9m4cSPx8fHce++9vPXWW5w6dYqIiIhWxSNOmzYNjUZDUlISJSUlHuesWLFCFSy33HILK1ascBNwOTk5PP3008TExDBr1qw2PwtQ+siWlJQQHR2tulDXr1/Pzp07GTp0KKB8FqOjo9m+fTtjx44lIiICUAT34cOH1bVmzpyJVqsF4Ouvv2bt2rWqJdRkMnHixAlGjBjBCy+8QFFREdOnT6d///6kpqby6KOPMn/+fKZMmUJ2djY//fQT/fr1U3vNzpkzh8WLF6vPo7336ysIAScQXMKoAs5pdau4GF2obbSUdRTHjh1Dq9USHR3NwYMHAYiNjUWn07Fu3Tpee+21Ngs4VwxcQ1qbiHLbbbfx4YcfsnLlSt555x31eEMroFarxWazNbumTqfDWSwAjUajnq/RaDzGOT399NOMHz+e3NxcCgsLGTduXKv22xiHw8EPP/xAYGCg2/EHH3ywVev7+fm5xbeZTCb13y7xC8rzvPrqq1mxYkWTNbZv38769etZuXIlb7zxBt98843b+JgxY1i8eDEnTpzghRdeIDc3l9WrV5Odnd2qe2z4Xnh6D8rLy/nmm2/Yt28fkiRht9uRJImXXnpJnaPX6xk8eDB/+9vf2L9/P//9739bde2GfPvttwQHBzN37lyeeeYZFi1ahCzLzJkzhxdffNFtbm5ubrNrNX62n3zyCQMGDHCbM3DgQIYNG8Znn33G5MmTefvtt7nqqqvYuXMnn3/+OU888QSTJk1qYt1t7loXIyIGTuCznK6s44l/78FsuzgDVH8NXDXg4p0C7pywwHUIZ8+e5Z577uGBBx5QxY6LBQsWsHDhQtUqcb6MGTOGNWvWYDQaqa2tJTc316NgmDt3rhof11Jg+7Bhw/juu+8oKyvDbrezYsUKxo4d2679VVVV0bu30jhn+fLl7VoDYNKkSao7FFCFrLf1Q0NDqampUV8nJCSQn58PQH5+Pr/88ovH6wwfPpwtW7ao8YVGo5HDhw9jMBioqqri2muv5dVXX20ipAH69OlDWVkZR44cITExkdGjR/Pyyy97fD8a7681rF69mttvv53jx49TWFjIyZMn6devXxO34R//+EcWLlxIZGRkm9ZvSGBgIK+++irvv/8+FRUVTJgwgdWrV6shARUVFRw/fpysrCy+++47zp07h81ma9Y9PnnyZP7+97+r4nTXrl2A8stOYmIiDz30EFOnTmXPnj2cPn2aoKAg/ud//odHH32U/Px8rrzySgoLC9X35p///Ge7P5e+iBBwAp9lxfYTrNh+kp9LDZ29FZ/FYFbcS7HdAtBpJdGN4QLicm8mJyczceJEJk2axLPPPttk3siRI9W4osbcfffdxMXFERcXx4gRI1p13czMTObOnUtWVhbDhg1j3rx5bu5TFzExMQwcOJA77rijxTV79uzJiy++yPjx40lPTyczM5MbbrihVftpzGOPPcYTTzzBqFGjzis78PXXX2fHjh2kpaWRlJSkZuB6W3/8+PEcOHBATWKYMWMGFRUVZGRksGTJEtUN15gePXqwfPlyZs+eTVpaGsOHD6egoICamhqmTJmiltd45ZVXPJ4/bNgwde3s7GxOnTrF6NGjm8y7/vrryc3NdUtiaIkVK1Zw4403uh2bMWMG//rXv9yOJScnM2fOHI9rPP/88+pnLC4urtnr9ezZk9mzZ7N48WKSkpJ4/vnnmTRpEmlpaVx99dUUFxfTu3dvnnzySYYNG8bEiRNJSkpSXfKNefrpp7FaraSlpZGSkqKWPFm1ahUpKSlkZGRQUFDA7bffzt69e9XEhhdeeIGnnnqKgIAA3n33XWbOnElqaioajYZ77rnH47UuRqRLqe7TkCFDZFfQqMD3yXl1IwVnavjk3pEMjg/v7O34JP/ZfYqHV+4m75Gx/Ob/tjJ+QDQLb0rr7G2dNwcPHmTgwIGdvY0ujdFoJDU1lfz8fK9fsAJBezAYDISEhGCz2bjxxhu58847mwhNQVM8/b8lSdJOWZaHeJovLHACn+RkhZGCM4q7wSRql7Ublws1LMCPiGC9SGK4RMjLy+PKK6/kwQcfFOJNcMF57rnn1ALT/fr182phFpwfIolB4JOsO1CfkVVnEQKuvbjaaIW4BJxwoV4STJw4kRMnTnT2NgQXKS11dxBcGIQFTuCTrDtQQpBeCfoW3QPaT43JhkaCQJ2WiGC96IcqEAgEPoIQcAKfo8poZXthBVcnxQBCwJ0PBrONEH8/JEkiMlgvkhgEAoHARxACTuBzfHuoFLtDZmp6L0DEwJ0PNSYboQE6AMKD9VTVWbHaO673o0AgEAguDELACXyOdQdK6BHqT1Y/pdK3iIFrPwazldAAJRQ2MlgPQKWx7ZXrBQKBQPDrIgScwKcw2+x8d/gsEwdGE6RXhIdwobYflwsVFAscIBIZLgDl5eVkZGSQkZFBbGwsvXv3Vl9bLL/O833kkUdITk7m8ccfp6SkhKysLAYNGtTmbg/5+fl8+eWXHbRLgUDQXkQWqsCn2HqsAoPZxsSBMWg1Eno/jRBw50GNyUaEU7hFCAF3wYiMjFQr8z/33HNuTcpdyLKMLMtoNBf+92hZlnn77bcpLy9Hp9PxwQcfkJqayrJly9q8Vn5+Pvv27VP7nQoEgq6BsMAJfIq8AyUE6rSMujwKULInTcKF2m4MpnoLXGSw0ndRCLiO4+effyYlJYV77rmHzMxMTp48Sffu3dXxlStXMm/ePABKSkqYPn06Q4YMISsri61btzZZz2az8cgjj5CVlUVaWhpvv/02ANdddx21tbUMHTqUl19+mSeffJK1a9eqFsAvvviCESNGkJmZyaxZs6itrQVg27ZtjBgxgvT0dIYNG0ZtbS0LFizgww8/JCMjg9WrV/8KT0kgELQGYYET+AyyLAQ69kQAACAASURBVJN3sITs/lEE6JQSIoE6LSarCLpvLzVmmxoDFx6sJDNU1Jo7c0sdgqd+5jffDPfdB0YjXHtt0/G5c5U/ZWVw003uYxs2tH8vBw4c4N1332Xp0qUem727eOihh3jssccYPnw4hYWFTJkyhX379rnNeeutt4iOjmb79u2YzWaGDx/OpEmTWLt2LVFRUaoVsHv37uzbt49XX32V0tJS/vrXv7J+/XqCgoJ44YUXeO2113jkkUe45ZZb+OSTT8jMzKSqqoqAgACeeeYZ9VyBQNB1EAJO4DPsP11NcZWJR66u71kYqNcKF+p5YGiYhRrkcqGKJIaO5LLLLmPo0KEtzsvLy+PQoUPq63PnzlFXV0dgYKB67Ouvv+bgwYOsXLkSUBq5HzlyhF69enld9/vvv+fAgQOMHDkSAIvFwujRozl48CB9+/YlMzMTQHRoEAi6OELACXyGrw+UoJHgqiuj1WMBOiHg2ovN7qDOalddqDqthrAAv4vSAtecxSwoqPnxqKjzs7g1Jjg4WP23RqOhYT9qk8mk/luWZbZv345er/e6lizLvPnmm0yYMMHteHOWPVmWycnJ4Z///Kfb8fz8fCRJavV9CASCzkXEwAl8hnUHShgcH05kiL96LFCnEXXg2omrD6pLwAFEhvhTIcqI/GpoNBrCw8M5cuQIDoeD3NxcdWzixIksXrxYfe1yhzZk8uTJvPnmm6pgO3ToEHV1dc1ec+TIkXz33XccO3YMgNraWo4cOUJycjLHjx8nPz8fgOrqaux2O6GhodTU1Jz3vQoEgguLEHACn6DonJGDxdVMHBjjdjxQrxV14NpJTYM+qC6UfqgXnwWuK7Nw4UJycnKYMGECcXFx6vHFixezZcsW0tLSSEpK4v/+7/+anHv33XfTv39/tXH4vffe26z1DSAmJoZly5Yxa9Ys0tPTGTlyJIcPH8bf358VK1Zw7733kp6ezqRJkzCbzVx11VX89NNPDBo0SCQxCARdCKmh+f5iZ8iQIfKOHTs6exuCdvDhtuP8OXcf6/84lst6hKjHf7v8R85Um/jsoexO3J1vcrC4mmte28SSWzO5JrUnAPPe20HROSNf/n5MJ+/u/Dh48CADBw7s7G0IBAJBq/H0/5YkSTtlWR7iab6wwAl8grIapbRFfESQ2/EAkcTQblwuVFcSAyjdGM4ZRRkRgUAg6OoIASfwCYwWG3o/DX5a94+sqAPXfgyeXKgheipqLVxKlnmBQCDwRYSAE/gERoudYL22yfFAkYXabmo8JDFEBOmx2mV1TCAQCARdEyHgBD5BrcWm9j5tiKgD135qTEq2aWijJAaAcxdBNwZhRRQIBL5Ce/6/EgJO4BPUWewEebDABTg7MYgv67ajulD9mwq4ch8XcAEBAZSXl4vPhUAg6PLIskx5eTkBAQFtOk8U8hX4BLVeBFygs6WW2eZQ22sJWofBbEMj4fZcLxYLXFxcHEVFRZw9e7aztyIQCAQtEhAQ4FZGqDUIASfwCeq8uVB1Gue4/ZIRcAeLqwkN8CMuPKjlyc1Q42xk37D6/sVigdPpdPTr16+ztyEQCAQdhnChCnyCWrMXC5zz2KUUB/f7lbv56xcF572OwWxzKyEC9QKuwscFnEAgEFzsdKqAkyTpHUmSSiVJ2udl/FZJkvY4/3wvSVJ6g7FCSZL2SpK0W5IkUZ33IqfOaifIv6kFzmV1u5QEXFWdleIqU8sTW6DGZHWLfwPFnervp/F5F6pAIBBc7HS2BW45kNPM+C/AWFmW04C/AG81Gh8vy3KGtyrFgouHWrONIA8uUlXAXUK14IwWG2WG8293ZTDb3GrAAUiSRGSw3uddqAKBQHCx06kCTpbljUBFM+Pfy7J8zvlyK9C2CD/BRUOdxU6Qv/ckhkupob3J6uBszQUQcCabWwkRF+HBemGBEwgEgi5OZ1vg2sJvgS8avJaBryVJ2ilJ0l3eTpIk6S5JknZIkrRDZKT5JrIsO+vAiRg4m92Bxe7AaLFTe57FdmvMtiYuVFDi4IQFTiAQCLo2PiHgJEkajyLg5jc4PEqW5UzgGuB+SZI8dt+WZfktWZaHyLI8pEePHr/CbgUXGrPNgUPGSxbqpeVCbShUz9eN6s0CFxGsF0kMAoFA0MXp8gJOkqQ04G3gBlmWy13HZVk+7fy7FMgFsjpnh4KOxugUZ94K+cKlY4G7kALOVUakMRHChSoQCARdni4t4CRJ6gv8G7hNluXDDY4HS5IU6vo3MAnwmMkq8H2MFsVVGOyllRaA2er4VffUWTS0NJ5PHJzN7qDOaifEX9dkLDJYT43Zhtl2aYhigUAg8EU6tZCvJEkrgHFAlCRJRcCzgA5AluWlwDNAJPCms9iozZlxGgPkOo/5Af+SZfnLX/0GBL8KLgtcYDOdGC5FC9xZQ/utZLVmZZ3GWaigJDEAVBqtxIRdGsWRBQKBwNfoVAEny/LsFsbnAfM8HD8GpDc9Q3Ax4hJwwc1koV4qAs54gSxwNeamjexdRLq6MRgsxIS1rTefQCAQCH4durQLVSAAMDqzLQN1TcWGv199K61LAZPlwsTAGZzPNNRDDFx4kOjGIBAIBF0dIeAEXZ7mLHAajYS/n+aSqQPn5kI9HwucSRFwnlyokSFOAWcUAk4gEAi6KkLACbo8tc4kBk9ZqKDExl1qLtSYMP/zs8C5BJzHLFR/ACouQLcHgUAgEHQMQsAJujx1ahkRzyGbgTrtJeNCdQnVvhFB5xkD53SherDAdQvUIUlQYbS2e32BQCAQdCxCwAm6PLXN1IEDp4C7RCxwLqHaNyKYMoMZWZbbtY7LAhca0LSMiFYjER6kp6JWWOAEAoGgqyIEnKDLU6e6UD1b4AJ02ksuBq5PRCAmq0NNRmgrBmcWqicXKohuDAKBQNDVEQLOBzFabNgd7bO8+CJGix0/jYTez/PH9VKKgXNZ4OLCgwAoa6YW3NubjnHr21s9jhlMNiTJu1UzIkgIOIFAIOjKCAHnY9gdMlcv2sjS74529lZ+NYwWu1ehAYoL1XSpdGKw2gnUaYkOVRINmouD+/5oOd8fLfdonax2ttFyFsNugrDACQQCQddGCDgf42BxNacq6zh61tDZW/nVMFpsXt2noLhQL5kkBoudQL2WHk4B11wm6okKI7IMx8uNTcYMZpvHGnAuwoP1VNSKJAaBQCDoqggB52NsPVYOKG2OLhVqLXaCPNSAcxGov3Ri4IwWxQIXFdK8BU6WZYrOKcLtl7LaJuMGk81jAoOLyGA954wWHJeQq14gEAh8CSHgfIytxyqArlMl32S1M+qv37D+YEmHXaOuRReq5pKJgTNZFQtcRLAejeTdAnfWYFbdyoXlHgSc2eaxiK+LiGA9dodMtenS+UVBIBAIfIlO7YUqaBt2h8y2XxQL3LkuUiW/pNrEqco6dp+sZMLAmA65Rq3ZxijHTlh4GzgaCbWA7kT0efOSEXCKO1mLViMREezv1QJ3sqLebVrowQJXY7bRPdC7BS4iuL6dVndnay2BQCAQdB2EgPMhDhZXU2OyERXSdQLMXfsoqTZ12DXqrHbS7PvBbICs39UPGEph32oSYo9SZ+kY8djVqLPaCdAp1sgeod67MZysqAMgPEjHMU8CzmQlLjzQ63UaCrjEHue7a4FAIBBcaISA8yFc8W9XJ8WyYvsJrHYHOm3nesFdlsAz1R1X9LXWbCOacujWG3JerB+oLoZ9q+lhPYXZ1gOHQ0aj8ZxVebFQZ3WolrOoEH2LFrhRl0ex/ZeKJuMGU/NJDA0FnEAgEAi6HiIGzofYeqychMggknqFAV0jkeGcM1OxpKoDLXAWOxH2Mgjr7T4QGgu6IKIspwAw2S5+N2qd04UKLgucZ4F18pyRHqH+DOwZRmmNmdpGBX8NZpvHNlouujlFYlVd53/GBAKBQNAUIeB8BCX+rYIRl0US4YxJ6gpxcK49lNS0T8DJstxiO6hai51w21kI6+U+IEkQkUiE6SSAz5QS+bnUQOZf1rHhUGmbz3XVgQPoEaLEwHl6ficqjPQJD6RfVDDgnolqd8gYLXZC/L3HwHUPEgJOIBAIujJCwPkIrvi34YmRhDu/XLuCe8u1h0qjtV2lPP60eg/3fZjf7Jw6i40w61kI7dl0MKIf3eqcAs5HEhn+nV9ERa2FP63e0+b30FUHDhQLnMXuoNrUtJ3WyYo6+kQEkRCpCLiGmaiu9lvNZaGG+Puh1UhdwsorEAgEgqYIAecjuOLfhvWLJNwZn3SuCwi4cw2+4EvbGAdXabSwdvdpCs7UeJ1jtTsIsVfhJ1ubulABIhIJritCg6PZbgxlBnOXqGkmyzKf7immf3QIlUYLT63Z26aG9HWWeguct1pwVruD4qo6+kYEkRCltNxqmIla4ywN0lwMnCRJdA/UUVnX+Z8xgUAgEDRFCDgfYeuxcvpFBRPbLUANMD/XBawjDUXkmTZmon6+94xiQWrGTWe02OkpOYPwG7tQASIS0Tqs9MRzyyiAapOV0Qu/4ZP8ojbtz8Xib3/m5a8OtevcxuwpquJEhZHfZSfyyNUD+HzvGdbsPtWqc2VZVlyoDSxw0LQW3OnKOhwy9AkPIkjvR2xYAL+U1ZcVaY0FDqBbkE5Y4AQCgaCLIgScD+CKfxueGAHUxyd1hRi4CqNFdem2tZTIml2KcKmqs3q1QhktNmJUAefZAgcQrynx6kItq1GK2v5Y2DQbsyVqzTYWf/szH+042eZzPfHpntPotBKTk2O5a0wiQxPCeeY/+zlVWdfiuWabA4eMKuC8WeBcJUTiIpQyIQlRQfxSVt96zeB0uTaXxADQPVAnYuAEAoGgiyIEnA/QMP4NwN9PS7Be2yVi4CqNFgb2VLJi2yLgis4Z2V5YQWSwHptD9iq+WmOBA0iQSrwmMbhixPafrm71/lx8vrcYo8VOaY35vMWMw6G4T8f070G3IB1ajcTfZmbgcMg8+tFPLbp4XRbGQF3zFriTzhZafSMU92m/qGAKG/RDrXFZ4JpxoQJ0D9ILC5xAIBB0UYSA8wF+OFof/+YiPFjfJWLgKmqtxEcGEaDTtEnA/Wf3aQBuHtoHgOq6poH4AEaznVipAoekhZDophNCe+HQ+hMvnfEqAl3C63BJDRab9zg5T6zeWYSrtNzPpYbmJ7fAzhPnKK4ycX16vRDtGxnE01OS+OFYOe9+X9js+UanQHWVEekeqIjAphY4I34aiZ7dFAtcv6hgKmotVDnFWFsscCIGTiAQCLomQsD5AA3j31xEBOup6GQXqizLnDNaCA/SExsW0OpivrIss2bXKYbEh5PsrGnnzbpltNjoKVVgDYwGjYd+qBoNtrB4EqQS7zFwzrWtdpnDJd4TJhpzotzItl8quGlwHAA/l7b+XE98+tNp/P00TExy7xoxa2gfJg6MZuGXBRw9610kugSqqxODRiMRFaJvYoE7UWGkV/dAtE7l6cpE/cWZiVpjclngvJcRAREDJxAIBF0ZIeC6OHaHzPZfKlT3qYvwIH2nJzFUm2zYHTIRwXqiwwJaXcz3QHE1R0oNTBvUWy0Y661putFiJ5ZyrCEeSog4sYf3I74ZF2pDcXigDW7U1flFSBI8NKE/ej/NeVng7A6Zz/ae4aoro5u4LiVJ4tnrk7HYHGw8fNbrGnWqBa7+/KiQpv1QT56rU92ngFoLzpWJajArz6OlJIbugXpqTDZs9rZZLQUCgUDQ8QgB18U5cLqaGrNNTWBwEdEFXKiVTgugywLX2mK+/9l9Gj+NxHWpPQkLcAo4rxY4JQbOEeIh/s2JFJHoFHCe13CJQ72fhv2nq1q1R4dD5pOdRYy+PIq48CAu6xHCkfMQcNuOlVNmMDMlzfN9xIQp1lWDh5puLuoaxcCB524MRRVG+kTU9zntGxmEJNUX8zWYbEgSBOs9WDQb4EqW8VRnTiAQCASdixBwXRxX/bfGFrjuQbpOF3CuJIrwYB2x3QI4U2VqsaaZ3SHzn92nGDcgmvBgPWEttGyqNVuJlSqQwrxb4LRRlxEoWdDUlngcr66zoddqSO3drdWJDFt/KedUZZ3qPr08OuS8LHD/3XOaIL2Wq670EMeHIi79/TRqiQ9PuCxwgfr6H9vGFrhas43yWgtx4fUWOH8/Lb27B6rFfGvMNkL8/ZCk5vvGugRcZRfIdhYIBAKBO0LAdXG2HisnMSpYtdC4iAjSU2O2tTko/0JyroEFLjrUH7PN4TUZwcW2Y+WUVJuZNkixRKkuVC8CzmasJFgyo+nmoYSIE7+oywAIrD7ucbyqzkpYoB/JvcI4WFzdqoK+q3cUEervx+TkWAD6R4dQdK4Oo6Xt1iir3cEX+85wdVKMWgLEE6EBfmqGqCdcSQyBunrXZ49Qf8pr64sUN85AddEvKtjNAtdcEV8XrvemUpQSEQgEgi6HEHBdGFf827BG1jdA7cbQmdYRVyP7iGC9mmDRUjHf3F2nCPH3Y+JAJZDflQlZ5UX4aWqUbFVdRJzXNaVIRcAFG094HK82WQkL1JHcK4xai92trZQnakxWPt9XzJT0XmrCwOXRIQAcO9v8uZ7Y/HMZlUarV/epixB/v2ZdqGoZkQYisEeIP1a7rFowXTXg+jQScAmRioCTZRmD2dZi/BsoZUQANXtVIBAIBF2Hlv8XF3Qa5bVmasw2knqGNhlr2I0hupF17tfCZYHrHqRXLYQl1SYGxDbdLygC5It9Z8hJiVWFkU6rIViv9ZrE4Fd7RpnX3buAo1scVvwIrfUi4OqshAXoSO7VDVDqwSX2CPG63Bd7z2CyOlT3KSe2MfyX//Ko3wl0GzaAl/vzhv1gKU8GGBh/agcUe3db3us4SVCxFtZ7FnqXn67mUb9SemzfBk4L2ugSA4/6nUFe/wME64k+WcmjfmVcsW87HK4XejdVVhJjK6Puy+/JKSnBanfA+u+a3Xe81Y8ArhSlRAQCgaALIgRcF8ZV7sEVJ9aQ7l2goX1FrQWtRiIsQGnXBM1b4NYfLMVgtnHjIHd3aFigzqsLVW9UBJzUjAsVjZbTUgzdTZ67JVTXWekepKd/TAh+Gon9p6vdarE1ZvXOIhJ7BJPZt7ty4LM/ElGyl7u1WjQ/A0ebjx1riAyMtcuMl0D7Q/PnzXDIUAds8TwvSYYBWhm/HfXjl8vQTyuj3SWBBCkOmSQt+P3ovkaqDElaGe12ietccYperqNsXCZctnO15gHO1Q5qza0KBAKB4FekUwWcJEnvAFOAUlmWUzyMS8BrwLWAEZgry3K+c2wO8JRz6vOyLL/36+z616O+XlfTt6neAteJLlSjlfAgPZIkqV0Bmislsmb3KWLC/JskZIQFeG/ZFGQqwYGEJiS22b2c1vSkj9lzr9Nqk42+kcH4+2npHxPabCZqYVkt2wsreCxngBLkbyiFkr0w4Rlytg/m8ugQ/nHbkGb30pANh0q5490fWX7HUMYN8JzA4OLe93dwssLIl78f43H8zW+O8PLXhzn8/DXo/ZToh2OlNUxctJHXbsnghoze3P3ejxSdq2uyxvGyWsa/vIH/d1MaS787ypU9w1j8m0zvm7FZkF/sTbLmuM/FwO0tqqJfj+AWO00IBAKBL9PZMXDLgZxmxq8B+jv/3AUsAZAkKQJ4FhgGZAHPSpIU3qE77QTqK+Y3tcBFOOOTOtMCd662vg9qgE5LeJDOaykRWZb5sbCC8QOi1QKzLroF6ry6UINMJZyTuoOfvtm9lPj1IspyCjxkwVbVWQlzxnwl9wrjwOlqr9myn+QrnRemD3K6T49tUP5OHM/l0W0vJeKKmUuP697i3FB/v+azUK12/DSSKt4AeoQolk9XJurJijq3DFQXceGB+GkkCstrMZhbkcTgp0eKHki6XyFVPpSFWmYwc8PizVz72iZ2nTjX2dsRCASCDqNTf0WVZXmjJEkJzUy5AXhfVr5tt0qS1F2SpJ7AOGCdLMsVAJIkrUMRgis6dse/LjVOUeOp5ZErwLwzkxgqjBY1mQKUWmZnqjx3YyitMVNptHKlh/ixsEA/TlV6Fn6hllLKNVE0TeNwp0zfmwCzSbGYhdZ3OpBlmeo6q5pRmdIrjNU7iyipNrt1tgAlaeSTnUWM7t+jfuzot1h0Mfx8Lh2KT7H/ey1/kxyUl2m45hrIzoZffoE//hFMJrDbwd9f+XP//VBsqENbF8jf/6YjNhZiYpQ/sbHQpw9oGySlhgS0IOAsDrcacK5np9dqKDNYkGWZExVGRl0e1eRcnVZDn4ggCsuMGEy21lmnYtMYWLyGlT4k4CqNVhwyFFfVMXPpDzwy6QruGXMZGk3r3d4CgUDgC3R1H0NvoGFgU5HzmLfjTZAk6S4U6x19+/btmF12EDXN9KzU+2kI9fejorbz3FuVRguJUfXJADFhAZR6scAVnFHaUA2IDWsyFhag42Cd5zZV3axnKfbzXgPORYV/HNQAFcfcBFyd1Y7NIatxhMm9XYkMVU0E3JofznI0P5Skvldy111w9USZmSe/5VT3qSSnaoG+QF8e/Q/4+UF8vCLg7HY4cgQCAhRBZrEoYq6qCk4b6gizRPDss00FxMcfw003wb598M9/wlFLJOWVlZjNMv7+TefXWW1NypBIktJO62yNmfJaC3VWu1sR34YkRAbxc6mBWou9VVmo9Eyn+65/OjOBm3G3diFctfL+Oj2Nbw+V8tKXh9h8pIxFN2c0eb8FAoHAl+nqAs7Tr81yM8ebHpTlt4C3AIYMGdJyAbAuRLVqgfPcs7J7sK5TY+Aqaq0Mjq/fW2xYAAeLPRfKPXRGOe7ZAufdhRphL6MgIL3FvVQG9nFu6hjEj1CPu2LrXBa4gT3DkCT46Xg1A7vF0KuXIrgGDoRjx6KBaJYBUVFwWcxZ0BbTNzuNf/0L6rQGnvp6J4vmDODmUbFonJ7Myy+HvXs97+udxSZShvix1QSlpVBSovw5fRpGOLe5fz+8+ipYLD2BnnRbIZORAR98oKxtsymCsc5i91hHLirUnzKDmZMVSg24Ph5cqAAJUcFsPFIGeI6rbEJP5blHGQpQQlW7Pq5uFTFhAfx99iDG9O/Bs2v3c81rG3n/zmGkxnXr5B0KBALBhaGzY+Baogjo0+B1HHC6meMXFc0lMYASB9dZMXCyLFPpbGTvIiZMERKeemcWnKkhJszfzeXqIixQR42zr6obZgMhsoFafY8W92MM7IUdjSLgGuAqLBzqr2PvXvi/N/2oXjOc+dMSufNOZY5eD1dNthE+/iB3LTxBeTmcPQvzr10NgPaKccyeDbOnBeLfw0CJuUYVby1RXFlHr26B+PsrLtMhQ+C66+B3v4PeTpvxrFlgNML/+6iIqKn53HmXHX9/xdUK8Je/KELuq7d6U7U/hvJy92v0cHZjOHlOqQHXN9KzgEuMClafcZiXXwrciEnGgUTvusOtu9kugKvQcqBeiyRJ3Dy0D58+NJo6q51P8j0nuQgEAoEv0tUF3FrgdklhOFAly3Ix8BUwSZKkcGfywiTnsYsKg9lGsF7bJOjfRXiwvtMscDVmGzZnI3sXMd0CcMg06c0JcOhMjUf3KdRbx5oUsa0pBsAYENP4lCb46/05TbSbgHM46q2Y/9/vI0hLg0ceAUdVMFGZxTz4YP35ydOPEZZ1jKfmRRHhajt77FuIvBy6K673QL3Skurns61LZDDb7JTWmOnZvWXXnVYLl10OwQOL+dMzZr77DkKdxsq0NEhOhqM/RPLTe0n06AETJtTna0SFuFvg4sK9uFCdTe2h5Ub2AOiDKQuIJ956tOW5XQS13ViDWMHLeoQQFx5ESQtFpgUCgcCX6OwyIitQEhKiJEkqQsks1QHIsrwU+BylhMjPKGVE7nCOVUiS9BfgR+dSC1wJDRcTNSarV/cpKBa4o60UExcaVx/W7g0tcKH1xXwbxhvZ7A6OlBo8BtcDaoZotclKt6AG91t9CgBTYMsCLlCv5QQxxJ49zlefwiefwNdfw5I1iii85TYrd83xZ8IE+O/RIl768hCjx8cAOmx2B6t+PEl2/6j6DgY2MxRuhoxb3a7Tvw09UUucCR29unsWVI0J8fcsZGfMcP5ZvJ2ak6GMCkzBaARXK9O8pfH8YvVnV6iVqBA9QXrPP9YJkQ0EXCtLbJSHDGBA3Y84HLJPJAK4XKhBjVzNPbsFUNxMiRuBQCDwNTo7C3V2C+MycL+XsXeAdzpiX12FGpPNYwKDi+5BerWd1YWmpNrEy18dYsENKR7jrlyu24jgBjFwDdppNYxaKyyvxWJzMCDGcweDhg3tG/rFqVYscJbglpMYTJX+PP/lY+zcN5yztdCtG0ydCiXlihiaOlUiwakfk+uciQzFVYy8LIrvDp+luMrEs9cn1S94cjtYjXDZeLfrXB4dwpaj5dgdslfLqIvTVYpLs3erBZzyXteYPb+nJruNvgPreHZO/bG6Oqgu9efc3gEs2wgRib15OxZuvhnCGhk8e3UPRO+nwWJztM4CB9SEJzGw7CuqK0oIi2q+Fl9XwNUvtrGAiwkL4OfSss7YkkAgEHQIXd2FeknTkoCLCNZhMNsw2+wX/NrfFpTy8c4idp+s9Dhe6eyP2TAGLjrMWcy3kauqPgPVs4Dz1tDeUaVY4GzBnoVDVRWccHXPsvqx7sccsvt+z9qPqikthfffB79QxQrWsJtFci9F2Rw4rSRW/GvbCXqE+jNhYANL37FvQdJCQrbbNS+PDsFic1DkbBrfHKcrFQHXs5XZj6732ls/1DqrXW1B5iIwEF794By978sjfPxBZJOe3/0OVjgL6ths9a5WrUYi3mlhbE0zewBzlFJfu+5kfqvmdzaqC9WDBa60xnN8pkAgEPgiQsB1YWpMVkKacaHWN7S/8Fa4U07x4YqraozLAtdQwEUF+6PVSE0E3KEzNWg1ktoQvjGugPrG3RjslUVUyCH4Bwa7HT98GB58EOLi4PHHlWP9Lrdz88Ov8MnNt3H9QrkmuAAAIABJREFU8EPondtyJTGENRDCUSH+xIT5s/90Nacr6/j2UCk3D4lDp23w43D0W4gbCgHuZqzLoxUReqSkZTeqS8C13oXqtMB5E3AWexPLknI/evxCzYRlHePxZYX88APccosy9vbbkJEBy5Yp1jpXHFxzrvmGyLGpANhP72nV/Ob4aMdJ/vlD4Xmv0xwuF2rjenmx3QKwO2SP8ZkCgUDgiwgB14WpMbdggevAbgynnBmNJ7wIOFfyRMOsUo1GIjrUv0kx34IzNSREBjWxHrkIC6yPgWuIo+oUZ+RINaZrwwYlg3PAAPjHP+DGG5UCuqBYXM74O7sdNEhkqDZZCdZr8dO6f9STe3Vj/+kqVv14Ehm4ZWiDGoHGCji9q4n7FFBFaGsSGU5VmogM1nu978aoFjgvxXzrrPYmwgRQ25gBxEcGMXy44kIGpWCwLMO8eUoW7JHPErBVBxDs37o9BXePpkiOwq/k/AXcB1uP89r6I167YFwIjBY7eq2myfvdml69AoFA4EsIAdcJHDhdTdYLeWr7I2/UmGxulqPGhHdgP9SiypYFnKuRfUM8FfM9dKaGK71koEJDF2rjLNTTnHJEqqLlq69g50547jnFdfr++zB4sDI1QKelSO6BLGmgoj5rsqpBF4aGJPcK4+dSAyt/PEF2/x71yQsAv3wHyHDZVR73Gh3q3yoLXHFVXasyUF2EtCDgjBY7AV7qwLloXANu2jT46Sf49lul6PDGjyPRbxzZagtc9yAd+x0JBFXsb+1teOV0ZR1lBguF5S27n9tLnaVpsWNoEJ/pjEvsTGRZ5t0tv6iJQAKBQNAehIDrBArOVFNaY+aXstpm57WUhepyX3ZEIkNLFriKWivhQTql4XsDYsL8OdMg26/WbONEhdFr/BtAsN4PjeTuQrXZYOXGLOb+4332b1NEyRNPwPHj8OyzimWpIYE6LRZ02EJ6u1vg6qxu8W8uknuF4ZChpNrMb7Iadeg4+i34d4NenrsPXB4d0ioL3GlnDbjW4u+nRa/VeHSh2h0yFpuDIF1TQR/q74e/sz+qmxB1Ikkwbhzk5sLRoxL//kDZU1kZ3HknHDzofU/dA3XscyQQbDgOZs/dMlqD2WZX3Zc7CjsuYdxo8Wyl7Ol8H7pCJurPpQb+978H+HxfcWdvRSAQ+DBCwHUCrmD95vqYWu0OTFZHs+Uewp0ZoBVtsMCVG8zsO1XV7Byb3aG6mrxa4Grdi/i6iA0LcIuBO1yifOl76sDgQqOR1G4Mdju89x5ceaWDuR+9gkOSCA1WPqZhYUqPUU+4vrRNofFNXKieitYm91J8jEryQnT9gCwrAq5fNmg9P/v+0SEcLTW06Ao8XWlqdfybC6UfalNBbnLFdumb/sgq7bSU+MOWEib69VNi4gB27IBVq5QaczNnQkFB0/ndAnXslxOQkOHMvjbdS0MaivodhR3XZL7O6jlOMDxIh95P47aPzqLI+ctR45hPgUAgaAtCwHUCLgtLZTP/gRua6YPqot4C13oB9/r6I/zm/7Y2Kz5KaszYHTJ9I4KoqLVQ46HN1blGjexdxHQLoNpkU7MBD51xCTjvLlRQEhmq6qxcey3MnQvdQqysmTWbW+e9zphxLWcOutxmxpC+bgKuqs7m0QIXFx7I5dEh/HZ0P/fkhYpjUHXCY/ybi8ujQzCYbc3GU1WbrBjMtlaXEHER4u/nMQvVqGZXev489Aj1p1f3gCaxX82Rk6NYNJ98UnFPJycrHSLsDZKa/bQajusuV16caX8cnCspJjTAjx3HO84C563dmCRJxIYFdIkYOFcGc5OQAYFAIGgDQsB1Aq5g/cZlMxpS38jeuwtVp9UQGuDXpiSGY2W1VJtszcbfudynIy+LBOBkRdO4oXNGC+FBTffWsJgvKAkMQXqt1+4AAFu3QohOR3WdlXnz4KOPYEfuDm648nPOEEGgB7dhY1yJAjVBfaHunJKIgMuF2vR8SZLIe2Qsd49JdB84+o3yd2JzAq7lTFS1hEgbYuDAKeA8xMCZvGRXurg2NZYbB8W16Vqg9Hx9/nk4elTJ7DUYlK4QACan1jEHRlOjDYfi9gu44kplsZzkWI6ere2wFnDeXKigxMF1BReqsMAJBIILQVdvZn9Rolrgmin/Ud/Ivvm3KDxI36wrtjGusiC/lNUSHeZZXJyqVOaMuCySlT+e5ESFkaRe7hY0pZG9Bxdqg2K+CVHBFJyp5oqYUI9V/I8dg0cfVWKzsm7rReCIM8y8wzm4R2ltWyxHtCpj0vWlXR3kLAX86R8gMPz/Z++94+Sq6/3/52f6zO7OzPZNdje7SehJCAQICgHFggo/1HsVBCt2r937vXYQxIsN7F0UxIaiV7GgUUSR3hJIAiShJNmS3WQ326b3z++PM2fanpk5MzuzLef5eMxjs2fOmTk7OXPO+7zL68WHwkOsGWuEPzVrbjdrrwbuU6yzWtZorQ7kTKKOBTj3OG2f1kolRFQaHRbNHrhiArUq7zp3bUXvU0h7O3z961nNuL17YcsWuOIKcDvsHGAtG0Z3VP36o+nhgYs2ruQ324bZNjDFS08q77BRKeF4suh3ZoXHwWOD2rqG88mQmoHTyGwbGBgY6MUI4BYA9cQ9HS4eePl1lFBBmUSd1KkDl0zJTClrYCLEmWtaNddTM3DPW6Nm4PL74LSM7FU6c8R8pZTsPeTnZevyJw6CQfjCF+D668FiUTJA+ztnOODL+Tv8SgB3SLZolsQKUdc53LQeWtbCwP1I4DyiuGbMsKeCQ/15/5X1qdKgrdGGx2ktOcgwks44VVpCbbJbNMt8xfTNao36Z5tMsGkTfPjD4Fmxid9eeCEbeq9VLMYsRRoRS6BKqmxe3YLVLHh0YLI+AVwsmTkGC+nyKCVUKeWs4Zv5RM3AlcrAGxgYGJTDCOAWADU4mynRA6P2nTXZS8s9tLisusVJD/sixJNKimX/RPEJ2IPTYVobbHS6HXic1lmDDKqRvXYAly2hjvujTIXisyZQL74Y/vpXeMMb4Etfgu5u+Phvzew8nHNB840QNTcSxElDkb6vXBxWpRtg2twCH1RcA3yhOGdc83eufOlJvH3L6rKvoRchhOKJWqaEajEpwwWV0OiwEBiffVyoPYV6NeXmyrHHwtat8Kc/wZveaeaaH/03e9b186u370Z0n1Lx66mSKg6rmQ3dnroNMoTiieIlVLeDWCLFVChOi0b/5nyRCeCKCDYbGBgY6MHogVsA9Eyhqn1QujJwOvuJcjNpAyUCuOGpMN3pnrVVLS4GCgI4dWhCa4ih0W7BZTNzaCaaZ6G1ezf4FOcqrroK7r0Xfv5zJXgD8Lis+SUl30ECNqU8qSfrpK6jBjqQ7THS0oGbK8d2NrL3sL/oMMjIdJguj6OsX2ohxYYYwnFlWbESaj0QQvGTfc83n+HEl2znxLa9iENKGTVZoXvb6HQkI+Vxen8Lu4ZnMn19tSQcSxUd9FAndEcXUAsuGE1kvq9GBs7AwGAuGAHcApDNwOkZYigdwLVU0AOnZtLWtDew/0hxMdWD0+FM6W9Vi2tWCXUqXbLNNbJXUaf9Dvsj7D3kRyZM3PajZjZuhGuuUdY580w4++z87dwOC5F4Kuvr6hth2tqB02rW7J8rRM1MhXOCAjUgLCWGXC3ruz3MhOOaAx4AIzOVS4hAugdOY4ghHFMmcfWUk2tNm9dC/IwRrjr/O3BoJ3fcARs2wD336H+NkZxj6rS+ZmLJFLvKyNlUQziWKBrkdqUDyIWUElFbGNwOixHAGRjMgVRK8r5fbOehfRMLvSsLhhHALQCZHrgSvWtqCbVRRwYuGEvqymYMTYURQpkuHZgIamaPpJQcnMpebHtbXAxPhUimsuuqGTivRgkVFFP7wzMR7vhnirGbz+W6L5q5+GL42MeK79ssNwbfCFOWNt0ZJ7vFhBDkfQ7qBVJLRmSubOxRbLseH9Zuis8NWCqhyW4hlsgJZNOEYsrnUu8eOC28ThvxlCDVuQFGd2KxQCgE554L73oXTJWphvojcfzRRCYDdnqfMlBS6zKqlJJQEbsxyNppLeQkqiohctJKN75IvK62YgYGyxlfJM7tu0b5596xhd6VBcMI4BYAn84MnM1iwm4pfcFW+9D0GNoPT4ZY4XZwbEcToVhSU0rkSCBGNJHKlFD7Wl3EkzKvsV4tAbUUCeC63A62/6WN33z2GCyY2boVfvEL6OjQXB3IBlkz4Tgk4+A/xISpDZdOz04hBE6red5KqMd3NWG3mNgxNDuAS6Ykh2YiZUV1tVBlYwrLqFkh3/kP4DxpuZhQ60lw+AnOe0GSJ59UJohvvBFOPBFuu6349mrAtCId0LY22lnT1lBzR4ZoIoWUxT+j9iZF7PjwAmrBqf1v61Z6iCdlXsbYwMBAP2qVasxX2pJyOWMEcPNMJJ4klkhhM5sU54GU9h24r4wPqopaxtTTBzc0FaK3xUV/WwOApielWuLJLaECDOasq2Vkr5JIKGK+sneE5rOe47+/v5+XvazsrmXcEnyROAQOA5Ix0appHVUMp9WsXUKtQwBnNZtY3+3RDODG/VESKVldCdWu7YeaEfJdkAxcOrj2nAjxEEw8S0MDXHcdPPII9PTAoUPFt88eU9mA9vT+ZrYNTpEqcvxXQ7iM1IrZJOhosi9wBi6M3WJiTbvyHTTEfA0MqkMN4BbyhmyhMaZQ5xn1oOtudrL/SBB/JK5ZigxEE7oMxzNuDDr64IYmw2w5to3+ViUoO3AkyObVLXnrqBIiuUMMAIOTQZ6fFvbVMrL3++GjH4XRUXjl/ziQ7iDuc/awoX9j2f2CbJDlC8dBKBIih2WL7gwcKH1wuQFcPTNwoJRRf/nwAPFkKs/NYWQmPwiuBLVkXqgFN18yIlqox+d444n0ANzwIjAp+3kq8OB/mDFPJeGLcOvOC3FYorzypH9ktj8rmeJxexL3L60Z4b3PJVN8KplEfskC/Vvgsl/OeT9DOj6jLo9jQXvghiZDdDc7sy0DkXhGO9HAwEA/apvRYnBXWSjKBnBCiFVSysFyywz0oWaFeltc7D8SZCasHcApRvbl42s1C1YugIvEkxzyRehtdtHtdWIxCQ5oTKKqIr49XiVwW5GepMyVEik0sr/rLnjrWxVbpv/3/6CjMXtBKuWBmosn7ZYwE45D4iAAI6kWXA79AYvTZi7ogUtgEtBQp7Ljxl4PN96X4unD/oy3KlTvwgBKDxzMzsCF40nsFpOugY5a402XUEdsqzn1RVdCIL/nRD1KpYTv/vLd/HvXWt70om18411/pLkpzJODU+wcnuHNJ/dlhOYi4Ti/f+wgFzlHaXt6q1I2N88t0A7HypeZu9wOnhkrLv9Sb4anwvQ2u3J6Po1BBgODalDPkUdzCVVPBu42YJOOZQY6UDMrvekM13QoTp+Gnq4/ktAXwOn0Q1XLWL0tTixmE70tLu0AbipMo92SsZ+ymE10e50M5kxbqiK+sZii1H/99bB2rTKVePbZsG1A0T4ziaxrQTmyJdQEhJUM3GDCS7MODTiVwh44XySO22mtm2irOsiwc3hGM4CrdgoVZvfAhWPaJu3zgVpCnY7E4dz/KbqeAP7+Urj2Wrj22tO465nT+NnP4A8tj/Pg1ASXX/jizLpuKfn2U//A6drGpdM7YXoQWufmJpEtoRY/Zro8Du555sic3mcuDE+FOLnHkzneDTstA4PqUK+lgWiCQDSRaT85mij6FwshjgNOBDxCiFfmPOUGjJx/lah33L3p0mQxQ3t/JE5bY0PZ11OzI5PB0hcCVQpEfd/+VhcHNKREVAmR3KCnr9WlZOD8h+DH5/PlmbTP6P+28/Pvb+Vdm//BVy78XxruDcO9cIqEx+xxTELg+Kq+L1U7yjbOf5iBKFicjCec9FQQtDisJiLxrPH9TDhet/IpKJ+Lx2llx9A0l21elVk+Mh2hyW7JXKQroVgPXLiEx2e9UcvbegZlbDb47Gfhoovg9a+HF70IXvYZWNGRH8wKIdjU18y9I01cCjC5f84BnJ5J3RUeB4FoIp3hrt+xoUUgmmAqFKen2ZVtGTDstAwMqsKf89057IvQ2K4vWbCcKHV1XQf8J+AFLs5Z7gfeXc+dWs5kM3DpAK5I6TMQ0dcDZzWbcDssZUuoQ+neNvV9+9saeGj/5CxboVwRX5XeFhdbnzgEQw8jpwb4yjOfYMupT/OSdW3s+uF3aXWHgP8vu0FK8ocHB+hvdfHC40uMnuYggD8/OMCJLU2c3t8CKzYSvL24KKsWDqs5r3fMF45XFUTpRQjBxl4vjxcMMoxMh6vKvkFOD1zhEEM8uSATqKB8rk6rueixesVtu3j5uhVsObYts+z002H7dsXn9keHpljj8RAIQGPOOfaM/mZueMqr3A5OPge8ZE77GdYxqas6hRyaicx7AKf2l/Y0OzP9o8YQg4FBdeSeIw/7Iqw1ArgsUsrfA78XQmyRUt47j/u0rFHvuNXhgGI9MHpLqKDPjWF4MoTNYqKjSSlv9rc2KFIigSgdTdmE6sHpMGf05w82rGpxMRmMMbp3H++79ef8fs9FXNAyxEs+2ouWm6oZ2B3ZyYoTO6DAB7UU33zsH7ykq4PTLzgZgPDvt1bUv+a0mvOkUXyRRKYUXC9O6fHw7X+NE4olMqW7kbRtVDWo1mmzZERiCxfAgZLp1crAHfZF+PmDg/jCibwADpRg7Y1vlHzuyggnO/ro64OvfhXe8hbl+dP6Wvg8HhIWF5bJfXPex3JTqEDGDeKQL8Kxnfr6M2uFqgHX0+zMl80xMDComNyb9aN1ElWPjMhbhRBe9RchRLMQ4oY67tOyRk379uT0wBWSSkkCMX0ZOFD64Mpl4AYnQ/Q0OzNN8BkpkZwyqi8Sxx9JZPZNZVWLi+iIlzPf9Qb+/MzLaX3Rbs65oLgVF8CXXnvyLBP7crgdlswFTRVlraTvy2mbPYVazxIqwMZeLykJTxz0ZZaNTlfnwgBKGdhsEgSi+cdFaAFLqKBM8mqV+59Iuyk8UcRVYSIYI5ZI0d9tYcMGuPxyZeAlFIL13W7sFjNHrN1QgwBOj9RK1k5r/k/4w5kMnAur2YTLZjaGGAwMqiQQSWQ8sA8fpYMMegK4TVLKTI1ISjkFnFa/XVreqJORHqeVBptZ86IYiCWQMjuRWI6WhvIB3NBUKFM+BbJSIjmDDIUSIiqP3enh0C+ej0gmuOvTV9B4xj5aG2tvBu52WjMlpUhcEWV1VdCYOmuIoc4lVICT04MMqh5cJJ5kIhirSkIElLKslh9qOJ6sqJxca7wuKzMaNxuqHda+tCROIepAx/rjbdx5J1x5Jdx8M2zeDPueMbOxx8tzyY6aBHBq8F4q6O9wKxnohZASGZoM4bCaaEt/d9wOq9EDZ2BQJf5InI4mB412i5GBK7WOECIzYieEaAbmt3lkGeGPxGm0WzCZBF6XTbOEotcHVaXZZWOq7BBDmN6WbFCRkRI5ohHAFQQfZ59uo+HYQzz67nNZn5491hLxnSseZ/aCFoxVbt6upQNX7wxce5Odbq+THWlLrYyEyBy0vRrts/1QI/EkTuvC6W57nTamw7NvEnIzb0+O+GY9PzKtnFi7vU7MZsUPd+tWGBuDW26BE1Y0sSfWDlMDkJxbP5geGRG7xUxrg23BMnA9za5Mz6kn54bFwMCgMvwRZfK0w203ArgSfB14QAhxlRDiM8B9wFfqu1vLF6UvSwkq3E7tvqJAJoDTF3y0NFhL9sD5InFmwvG8DJwqJTKQ47CQUcxvdrJ9uyIHAfDCLRZeeNk/aLePMd2wOvOetcbtsGYCWj2SEIXk6sBF4kmiiVRdXBgKOaXXmxPAKSeSakuooATuhRm4UCxZ0WdRa4r1wO06OMM56d43rTLq6MzsgPb882HnTvjMZxSR4AdGTyISM4FveE77qNetosvjWJAT/vB0KK89we20GD1wBgZV4o8qfeJdbkddS6iplFy0mfKyAZyU8ibgUmAGZQL1dVLKn9R5v5YtufIFXqeVGY2shlqK0puB87pshOPFDe0LJURU+lsVMWGVg9NhbBYTt//WzllnwQ9+ANPp4vmZjeMAjDtWZ96z1ridlkxPUDUZOKfVTDwpiSdTmSymHjuyuXJyj4ehyTATgeicXBhUmhwWTScGx0L2wLmUHrhc8/Uxf4TDvigvOK6dLrcjU07NZWRasY5qKcjYdnWBxQJOYeMXv3wv59y0lcFdcwzg4glsZhMWc+nT2gqPYwEzcDkBnFFCNTCoGnXQr9Nd3xuyrU8e4vmfv1OzRWSh0VuTcQGTUsqvASNCiFXlNjDQJtfj1Ouy1qSE2lLGjWEoLcK7qiCA62ttYGAimLkoD45HCP7zZN72NqEI8m4Db3p8ZYNdMbscsfYq71mHAE4poSaUAQYdE4WFqJmXSDyZ+VznIwO3sTcr6DsyHUaIrFxFNTTaLZo6cAsl5AtKCTWWSOXp7D2ZHtzY0O1hfbdHO4CbUQY6iokpd7Va6Dl/G09PrOW0V53GnXdWv496J3U73Q4OzYTLrldL/JE402kNOBW30wjgDAyqJRBVkiEdbjtjvmjezWUtGZoMEYwlGfMvvkGJsgGcEOIK4CrgivQiBzB348KjFF84JwNXpCzlqzADp7oxFCujZjJwzfkB3Oq2BoJpKREp4f++sJqRB7r56Efhb3+D9vbsums5yCHZzGhUaQKvRw+c22ElmZIEY0lC0cpLqOpEUjierKuRfSEbuj2YBDw+NM3IdJj2Rjs2S/X9ao0Oa14AJ6VUhhgWMAOnCkbn9sGpAdtJK91s6Paw/0hwVuA5Oh0u2Q/oddmIHxvgoXe/nA63j/PPh+uuU2y5KiWkM8hd4XEwFYoXzVjXA7U9ITcD53FqD4YYGBiUR83AdbkdxJIppur0XVKTCYux3UHPVea1wAVAEEBKeRDFjWHOCCFeLoTYK4R4VgjxCY3nvyaEeDz9eFoIMZ3zXDLnuT/WYn/mA3+ONpnbObsspa4DlfTAqXZa2gfY0FSIJocFjyv/9frSk6gDEyGEgKaNQ7zyvwf48peV8lYuK+MDPJPq5qkR3ywj+1qR6w8ZqnKIASAaT2VKsfWeQgVosFs4tqOJHcPTjM5ULyGi0mjPL6HGk5JkSi6sDpyGG8MTB2dY09ZAk8PKhh43UsKTBVm4kelIRnut+OsKevqTPHTVx3jNa+Df/64ygNMZ5Hal92c+++CGJ7MSIipuhzKskkrVJ3NgYLBckVISSA8x5Ipz1wN1MG6pBnBRqUQYEkAI4Sqzvi6EEGbgO8ArgJOAy4QQJ+WuI6X8iJTyFCnlKcC3gN/lPB1Wn5NS5lp9LWp8kay0hVZZCrI2SvozcGk7raIl1NCs7BsoGTj/jl5uukkSiSdJrR7kxRdovIaUeIP7eFZ2s2N4Js/IvpbkiptWVUJNrxvOKaHWewpVZWOvh53DMxycCs+p/w3SQww5OnBhnc359UQN/gsDuPXdyoC6+jO3jJpIphjzR+guIWqsZo9nnL00hnbz61/DrbeCyQQHD8KBA9l1E8mU9ouk0VtCXQgtuKEcEV8Vt9OKlIpskIGBgX4i8RSJlKTJYaUzLQ102F+f77OaTFiM2XI9AdzvhBDfQfFEfSvwd+DGGrz3ZuBZKeU+KWUM+BXwqhLrXwbcUoP3XTBSKUkgmt8DB7Mje38kjtkkdF+w1XJmMaujoal8CRGARAKuu9rF5NaTuetvtqISIsoODmNOhHhWdrP/SDBz0a01GUP7nACuoUIdOFACHp86xFBnJwaVjb1eJoMx9k8E5yQhAkoGLhJPEU8HLHosouqN15kOtNIlVGVgI8L6biUZ39HkoNNtz5tEPeyPkpKwokRAqx5LE/ZumNqPkElc6XuNyy+HM86Ae+6B+587wvqr/8ZEoHgfit4Sar3v2LUYngrjtCoSJirunIyzgYGBftSBgkZHNgM3VqeM+pIsoQohLABSyi8Bfwb+CGwErpVSfr0G790NDOX8PpxeprUvfcBq4J85ix1CiEeFEA8KIV5dg/2pOxmB3nSgomaHCvW11Nq+3iyXWt7S6oGTUs7KwE1OwiteAd/5tqDn3CFe8N5nstOTzRoX2/G9AOyjB6BuAZwnLwOXNiavYoghHE/OawkVYGNa0FfKuUmIQNbQPpjOxFZTTq413oIMnJppUzNvoPQC5mbg9GjiNTksmAQcsnRDMga+g5nnvv1taGmBF70IfvhD5a5blWnRIqRzUrcrvT+H5rOEOqVIiOR+p9VjczFeGAwMFjOqTqbbYclYQR6aqc+QQXgRB3Cl0hMPAacJIX4ipbwc+GuN31srOinWDHIp8FspZW7X8Sop5YgQYg3wTyHELinlc7PeRIh3Ae8CWLVqYYdn/QVZIa2+InW9xgoyTxazCY/TypRGADfujxJNpFiV7ncLBODMM2FwEG68Ee5mlMHpaOkM3BElgAt6joFJaK6DBhxkPxdfJJEtoVZQNnTY8gM4u8U0b9Ibx3c1YbeYiCZScw/gVEP7SCIjEQMsqIxIdohBOVZV0d7cAG59t4c794wRiCrHrxrAlSopm0wCj9PKEGnbtcl94FW+p8cfDw89BJdeCjd/uY2mTeuYvLz4STQSS9KVLqeUotFuoclhmfcMXKFFXeZ4N8R8DQwqIlepwWYx0dpgq1sJNZi+FmkNHC40pUqodiHEG4BzhBCvLHzU4L2Hgd6c33uAkSLrXkpB+VRKOZL+uQ+4CzhVa0Mp5Q+llKdLKU9vzx2rXADUrFAmA1e0hKrfB1WlpcGmOeas9t6oGbjGRnjnO+Ff/1I8KftaGzhwJMjB6TAmkc1O5DG+B1xteFq7Mu9VD3JLqMFYApulvKZXLhkZkZgyhTofE6gqVrOJdSuVcuLKKo3sVVQLNbUXcjH0wDmtZmxmUzYDNzxDf6srL8O5oduDlPBUOrhTe8xKlVBByejuT3UqvxRYanm9cPvtsPnSzL7TAAAgAElEQVSicSIDrRyZKh7shOIJ3VPLihbc/EmJqC4MuWSOd0NKxMCgIlSh80a78h3qcDvqVkINqz1wizADV+rq+D7ghYAXuLjg8doavPcjwLFCiNVCCBtKkDZrmlQIcTzQDDyQs6xZCGFP/7sNOBt4qgb7VFcK9d0yJcNZGbi47gEGlc39Lfxr79isHiFVA+6+P7u5/35l2cc+BmedpfxblRJ5fGiaLrcDq1bANL4X2o/PCAHXQ8QXsp/LTDhOOJakocKSYW4JdT5stApR9eBKTV3qQc3AZQI4HR6f9UYIgceVFZ7edXCGdTnZN1ACOPU5UEqoTQ5L2Wyyx2VlIOYBs13TE9VshlMvHqTrzfeRtMSJRJQMciHhmH6xY0ULbn4ycKoTSmEGLrdlwMDAQD+FYvedbnvdWiKWZA8c0CqlfCfwKSnlmwoeb57rG0spE8D7gb8Bu4FbpZRPCiGuKcjwXQb8SuZrbZwIPCqE2AH8C/iilHLRB3CFfVlqIKTVA1epTMc7z11DNJHi5vsP5C0fGA8xeeeJXPlRBz/4weztVCmRh/dPave/Salk4NqPzwgB10PEF5RScKPdgi8SJxit3DrKmVdCrfwznCtvfn4/n3jFCRmz8mpRs6/qXaaagVvIEiooJf/pUJypYIyD0+FMwKbS4XbQ0ZQdZBiZjuiayG122ZiKJKBlNUxom9pPBmOYbEpm9UMfgtNPhwceyF+nErHjFR7HvPXAqe0JszJwxhCDgUFVqD1w6s1hPe20sj1wxe0qF4pSAZwq3Pvuer25lPIvUsrjpJRrpZTXppd9Rkr5x5x1rpZSfqJgu/ullBuklBvTP39cr32sJf5o/l1Dg82MxSRm98BF4xX1wAEc09HIS0/s5OYHBjLN74EAfOtTHfgfXcMHPgA/1viUVrc1ABBNpLQvtoHDEJmB9hPoSwdw9RDxVVENvsPxRMUZJ0feFOr8Z+BWtzXwnhesnbPEivp/719EGTjICk8/MaIEaIUBnLpMzcCNzpQW8c28rtOqaBi2rNXMwAFMBJWTsy+S4CMfAbcbzjsPfvUr5XkpJaG4/gCuy+NkzB/NTPrWk+Gp2SK+oJTKhSAzMW1gYKCPrFVitoR6JFCf7/NSzcBNCSHuAFYLIX5X+JivHVxOqM3K6p23EELTTquaHjiA97xwLTPhOL96ZIjJSTj3XNi33c3JFz/HN785W5wXlAZzi0kJOEpNoNJ+PCetdGMxCda2N1S8b3ppcigG30oGrtIATjmcVSut+eyBqyVNmSEG5bjI9MAtcADncdqYDsczAZra85fL+m4Pz40HCEYTjEyHdQ10eF02RQKnZTVM7YfU7JOwqrLuC8c54QR48EHYvBkuuww+/3llQlVK/VnKLrdDSS7Pgz1OMS9ik0nQZLcYGTgDgwpRz40NduX73um2IyUcKSEzVC2hRdwDVyrNcyFwOnATiuCuwRzRMqlX3RhUVIXpSnvgADatambz6hZ+fM8+3rC5j3XrTERO3sl5Ly9+V2Ixm+htUUztu70aGs2ZAO4E+poa2Hn1+RWXNish4w8pK7PRArCZTZiEcjH3hePzJiFSa9QMnFpCzU7kzm9JuBCvy8pTIzM8cXCG3hanZi+kOsiwbWCKqVBcVwDX7LISjCVJeFdjSUTAPwqerKJQMiUzPr9qw39bG9xxB7z97XD99fDqSyrLUuaK+c51argcw1NhXDZzRnA7F7fTagRwBgYVEogoFRp1yK0rrQV32Bedcw9yIaGlOIUqpYxIKe8FzpVS3pn7IF+PzUAnvkgCu8WE3ZK9yHgL/BBzFaar4SznCQwOwe27RrjxJykiK4Zn3fkXovbBaWfg9oDdA43KlGA9gzdQS6jKFGqlGTghFPHjUFrId75LqLXCZTMjxOwhBoeten/VWtDsUm42njjo0yyfAmzoUZbf8dRhoLQGnIoqUeJvSA+lF5RRp0OxjLVWrsWY3Q4/+xk8+ih42pJICZaUvuNTnbaeDzstLQ04FbfDMLQ3MKgUf0GSo17i3LGEcj122cxEE6l59U/WQykh338DSClHhRA/KXh6Wz13armiTJfmBxVely0vNauVpdPLz38OH3uHl+QDG/jB3c8xMh0mJWeb2BfS36qURDV74NITqNTBOksLt0MJ4MKxJK4K+wBBKTNOBKMkU3LeXBhqjRAizw81Ek9iEkqGcSHxumyEYkkGJ0N5+m+5dLodtDfZMwGc3hIqwJRdO4DLFaguzFYJAWvWKKP+vgfXcvW7OhkpJkaUw3zaaWlJiKi4nRZDB87AoEJUrUmVjBtDjbXg1PYV9Xyx2LLlpa4IuQ0uJxc8Nz9X82WGL5yYFVR4nNa8KVRfgdSIHqRU+oDe9CY4+2zBdd+I8/ThADffPwBAT0vpi+jz1rTS1+qa1WQNZCZQ5wu304IvklAycFVMXTqs5kxWZamWUEFpcA9EsyVUl02/M0e9yM1orl+pHcCBUkZVJzxX6ihnqM4eR0ztYLbBZL4e90Q6gHPZzEUb/sOxFLYOHyMDFp73PHjyyfJ/i91i4tA8aMGpGbhi+7EYe2sMDBYzvoJkSGuDDbNJ1DyjHoor5xu1LDu9yL6rpQK4Yq4I5Z4zKELhQQfpAC5UfQYumYT3vx8+/Wl4/eth61Z43dkr6PY6ufmBA0D5DNzL13fx74+eN7sBPDgBoSPQfoKufakFHqeVQDSBP5LAZa88gHNazZlx8qVaQgVFCy4jI6LTIqreeF35or3FyM3OdXrKOyOorzsVSUJzf9EMXH9rQ+b7UUgolsC5dpzv3DJDPA5btsC99xZ/TyEEK73OktZctWAmHMcXSRQN4IwSqoFB5RSWUE0mQUeTveZ2Wmr/m9pysdhutkoFcF4hxEVCiFehGNmrLgyvAoqfvQ2K4tPQd/O6rPgjCZIpJSZWsy56e+CCQbj7bvjoR5V+ILtdcQV4xzmrSaYkZpOo3lz9SHaAYb5Qs2Z6jckLcdpyMnBLOYDLycBVom9WT1RD+26vs6SUjBrctTfZ8/o9i76uK0fQumUNTO7Pe17NwPW3uYqWMELp3pSNp8D990NHB7z85TA+Xvx9V7W4GJgMlt2/uTCcdkIpXkI1hhgMDColEJ096NfpdtSthLpSDeAW2SBDqTTPfcAl6X/fj+LAQM7vBhXij8Tp8WqrsfvCcZobbLPcGooxPa0Ea263Imja2Jj//OvO6OWbdz5Do8NSkR1VHuN7lJ/tx1W3fRXkZs2qGZhwpIcYCl9rqdHoyJbWwrHkgtpoqaiB1vru2fIhuagB3EqdNw6ZHrhQTAng9t+t9AWkS8aTASWA62tt4K9PHCKVkphM+eVk9UTrsplZvQLuuw/uuQdKuef1t7rYNjCFlLJu5em9h/wArG1v1Hze40xP4CZT1X9PDQyOMvyROE32/PN7p9vOvvHa3pCpmqqqHeBiK6EWvUJKKd80nztyNKDVA5drEq4EcMoBUkrId2gIXvEK2LABbrlldvAGSvDzpdecnAlmqmJ8L1gbwN1T/WtUiDsvgKuuhJp5rSXeA3cwnb0JxZM4FkMGLn2sliqfgnIi7Wiy01Nm+lmlwWbGahaK1lvrGoiHFAHpJsV7dyoUo8lhocVlQ0oIxmbrJOYGcKDIjPzHfyjP/fnP8MgjcPXV+bM4/W0NBKIJJoIx2hrLl3qrYefwDC6bmWM6tAM4NSPviyTq5jFsYLDcCEQSGctBlU63gweem6jp+6iZ/cVaQl2aY3pLFM0p1HRZajoUAxpyMnDawcfu3XD++TAzA9/8Zun3O39d19x2eHyPkn0zzV9mILfE3FBVBi67r0t1ChXyS6iRWLKqgY5a0+11ctVFJ3HRxpUl1xNC8KO3nJ4ZTiiHImhtU6xqWlYrCyeeywRwE8EYrQ22zP+nT0PoWj3RamUqt26F73wHRkbge9/LClqr09cDE8G6BXA7hqdZv9KD2aSd4cu10zICOAOD8iRTkmAsqVlC9UUSSsWiRje86o1hZ5MDIRZfAGfk7OeJaCJJNJGa1QPnUft/0geGOmWnlYF76CGlOTseV/reXvSiOu/0+NPz2v8G2c8DqnMeyL2AV6ultxhoKhhiWGgXBlACrbeevVpXsHNyj7es/mAueXZakDfIMBmM0tJgy2RUtXrGwmm1dK3P6Vvfgk99Cn70I7jkEoik22RU/cMDR0K697MS4skUT434OLmneMYy8zcZgwwGBroIRLWvkZ3u2ms7qhWsRruFJruFmdDi8kMtG8AJIWZFElrLDEpTLLOm9mmpAVwgoujbFN6xx2LKxcfrVfp7TjmlzjscmQH/yLxKiEB+2bOhminU9AW8SeMzXEo0OiwEY0mSKalMWC6CAK6eNLtsSg+cpxdMlrwAbiIQo6XBnvnu+DWkRMIxxW1EKwMnBFx7LXz96/D73yvtB+GwMlhgEnBgoj6DDHsP+YkmUpzc6y26TuENnIGBQWnUNqPCFpmuOgRwuTeGhZqtiwE9gdjDwCYdywz2/AWGHtR8yhKO8wnLEM/f1w7BpszylbEkn7AMsObxv8O4h3MOjLHaEoY77svb3gb87mMr6G7z07UvANqe37UjmO4laJvnAC6nB85ZhXWUKrexlCdQIXt3GYwliMRTi2KIoZ54XVYGJ0NgtoC3ryADF2NjjzdbQtU4iYbiCWxmU8lBgA99SOmNe+ghcDhACBM9zS4OTNQnA7dzWPGM3agnA2eI+RoY6KLYoF+nW6kMHK6hv7GagWuwmxelZmPRK6QQogNYATiFEBvIive6Af21kaOJwfvh4Rs0n3JLyeXmFNb9JjiQzQw5gMvNSSyDJhgWnJ1UTLl5SLkQffvBtzEV9nDleV/jNICpuv8VWRo7ofu0eXxDpaHdbBIkU7K6DNwyCeCyhvYJQlXYii01vC4rO4bT5YmWNZkATkrFB7Wl0Vay3Ki37+UNb1AeAHv2QEuqmYGJQG3+iAJ2Dk/jdVlZVaKUnO3rW1wXBgODxUqmhFoQwHWoGbgauqsE0wGcw2JOi+4vru9pOTP7twE9wHdzlvuBK+u5U0uW8/9XeWhw/zNHeOOPH+LWy5/P5tUtmeUCOP2qv3HJqb185qKTeOuPHiQcS/J//3U211wDV98Or341JD/5CczL+xoOKH1WboeFqVB8TlOohb2GS43G9Ih8IJJQeuCWeQau2WXLClqrUiK3XEYimeK7pnGOe7aRFeNObrCOc/wDTbA3Pyh63cgMLxExuOUm7TcQJjj7w9B7BqColFx2GTw7sI6uSx+ui5TIjuEZNnR7Sr5uroyQgYFBebJi9/k36W6HJS3kXtsSqtNqxmQSeFxWRubBuaUSSsmI3ATcJIS4REp56zzu07LEV8JhIddOKxBJ4HHY+PCHlSnTyy+HG27gqAjeVDxOazqAq84LVX2NpUyjI5uZicRTi8KJoZ54XFaiiZSSSTvxIhh6CGaGSCVSrBQBPLEgloCVlcKHM+QHc/4ghTsWxkYSit19j+8FV0smgBNC8Q7e8kLBvpvO4I5LEpz/wtodM+FYkqcP+3nxCWtLrue0mrGYxKIrzRgYLFb8RQb9hBB0uu0ZG79akCso73Fal5SQr8ptQohLgP7c9aWUn6/XTi1HMo2XGoGF15U9MPyRBE//9gT2/Bs+8hG4/vp5VfFYFKifUTUZuOXWA3ck3c+x3EuozTlivs7V58C7/w3AEwOTvOZ7D3DThWdw3vEdvPbKrbzxpFV8+sKT8ra/6iePcNgX4fb3nKP9BjdfBIfzDVLXrYNv/XKKt17i4tUXuvjjH+AlL6nN3/PU6AzJlCw5gQrpjLPTsNMyMNCLGsBpVVk63A7GfLXrgcttzVB74Oop/F0pekKD3wOvQwnekjkPgwpQm5SLZeByZUTWrA/zuc/BV75y9AVvkG3srioDlymhLu0ATj1OxgPKyWj5T6GmBa0L7nAng8rvrWmNtCaHRbPhv6zdWOd6GNsNqfxT1/M2Oul6wwN0dMf50peU0mot2DGUHmAoMYGq4i7yNxkYGMymWA8cKJOoh2top5WbgfM6rSRScm7i+DVGzxWyT0q5vu57sszxR+IIAY0aQYnXZeWpgTB3362s958XBPjUBQuwk4sEj9OKxSSwWSqPXpdNCTWdgVPvJpd7D5wnT9A6y2RQ+ftVkVu304o/qjWFmizd99i5XnF4mNwPbcdkFve2OLE2RXn7Fwd5/4uPQQhIJLJiv9Wyc3iaTrc9o01VisU43WZgsFjxR+KYTULznNjptnNoJlKzLFkonswkEtRrynQ4TkMJp6T5RM8V8kEhxEnlVzMohS+t71bo4QhgSzh55LsbuPBCSchvpmmRHBwLhcdl1by70oPqxLCUXRgge3c57j9KMnANyslxqiADpxrZtzYoPW/FslXhcpO6neuUn4efyFtst5hZ6XUyFvPj8UAoBC9+saIZNxd2Ds9wck/57BtglFANDCrAH1GM7LUCtE63g2giVbOMdiiayOuBg8VlaK8ngDsTeEwI8aQQYrsQ4jEhxPZ679hywxeJa5b1RkfhV1etJXyoke//OIHZGS9rZL/ceec5a/jqJRur2lbtgVvqGTjVRmwsXQ5Y7hk4tQdOHeZRmQzEcFrNmQC2WLATzrlT1qT9BGUStaAPDhRLLVULzmyG9nal//Szn62upDoTjrPvSLCk/lsubofVmEI1MNCJKnavRcaNoUZl1LwhhkUouq0nUnh13ffiKMAXTswKzA4cUJqmpw9bab/4YTadcxJsX9oWULVgdVsDq9saqtpWLbV1NJUvXS1mzCZBo91y1PTAZcoTs3rgYnkeoU0OKwMawrtldeCsDmg9VjOA62t1cfuuUQDsdvjVr+Cd74Srr1Y8h7/yFWVqVS9PHFT63yrLwBk9cAYGetDyQlZRA7hDMxGO62zSXKcSFBvD/BLqTHjx2GmVzcBJKZ8D2oGz0/+eBhZPCLpE8Gtk4G68ESYn4YrvjOHsm2B4StGYqbZ8aAAndLn5v/86i7OPaV3oXZkzjXZLtoS6zDNwDqsZp9U8qwduIhijtTEbwCklVI0euJgOrbzOdbNKqKBk4KZD8cx7Wyzw4x/DBz8IX/ua4qNaCTuGpwHKTqCquJ2WRXVXb2CwmAlE40XbjGptpxWKJXAVVHUW03dVjxfqFcBVwBXpRQ7gl/XcqeWIL5LI9GWlFNtGrr4atm+H0zcrdZqhSSWzcLSXUOfKaX3Ni2bMey40OiwcCShBRTUTuUuNZpd1Vg/cZDCWKa9CtoQqc2qbUsp0CVVHADc9ABFf3uL+dLY311LLZFL64L74RUWLsRJ2Ds3Q1+rCm7PfpXA7rMQSKSLxxTPdZmCwWFF74LToUO20ahbAZTP76vd5SQVwwGuBC4AggJTyIIqdlkEF+CNxmhxW7r8fNm5UyqcmE/T3ZzXLhqaUC8hSl8AwqA2NdgvJlBKoLPcMHIDHZdOYQo1lJERAubmJJyXRRCqzLJpQ7OfKlpk708P0Y0/lLe5vVVwdBgpM7YWAj38cjj9e6YX74Q8hrEOIfefwNBt1lk8h+/03BhkMDMoTiBYP4BxWM16XlYPTc3dMkFISjiUzlo6qzWNhm8dCoieAi0rldlcCCCEMH9Qq8IXjHNnr4aUvhUgkX9/Nm5ZQUEuoRgbOAPKPg+XeAwdKBq5cD1zW/D27nqrLVDbI7UoHcAVl1N4WF0LAgSPFTe0ffhje8x648ELw+4u/xbg/yshMRHf5FAw7LQODSvBHEiXbjNav9GR0GOdCLJkikZKZ6ocQYtFJ/ugJ4H4nhPgO4BFCvBX4O3BjfXdreZFKScaeaOFX/9vHmjVwzz2walX2eW96uiUbwBkZOIN8q5ijIYDzuqxM5WTgwrEk4XiSlsb8EirkZ6vC6dJj2RKquxscnlmDDA6rmRVux6wMXC5nngk//SncfTecfz5MTWmvtzPd/6ZHwDezW+mL0Ywh5mtgUBIpZaaaVYxNq7zsOeQjGJ3b9ymscWPoXWoBnJTyS8CfgT8CG4FrpZRzVElaniRTUjN1+8e/JDn8+9PoWRvj3/+Grq7859U78OF0D1yxEWmDo4u8AO4oKKF6Xba8k+NEWsS3sIQK5E1thmPKv53l+gSFUMqoWlIibQ3sLxHAAbzxjfCb3yh9q+edB2Njs9fZMTyDScC6lfq7TIwSqoGBPqKJFPGkLHmNPLWvmZSEHUPTc3ovNbOfe2PoXmoBHICU8q/Ap4HPAPcJIYweOA2uuG0XF33r3rwGa4ATNsRpOmWQK74zTkvL7O1cNjNWs8AfTWC3mKpyIDBYfqhlApvFhFlDAHq5oZZQ1e/PZFrEt6Uha1w/pxIqpCdRn8pOEqXpa23QlCcp5D/+A/74R9i/Hx5/fPbzO4enOa6zqaKhE6OEamCgj1I+qCqbepsB2D5YJE2uk8x5JSeAW3IlVCHEO4QQo8DTwBPAk+mfBgVs7PEyGYyx74hyJ/+b3yjK7tjjtLz0SbratA86pbauej0a5VMDBXVU/mjIvoHSC5pISfzp0sdEJoDLZuA8ztkZOK075aJ0roOYX5lGzaG/1cVkMKbr5PyylylDSOefr/yuDjZIKdMODPr730A7KK2U+549wk8fOFD19gYGSwHVB7XUddLjsnJMRyPbB+eWgQtnzivZ67bXtcQCOODjwEYpZY+UcpWUsldKuarsVjoQQrxcCLFXCPGsEOITGs9fLoQYF0I8nn68I+e5twghnkk/3lKL/Zkrp/cr6bVHD0zy+c/DJZfAN76RvWsoNZygXphK+jkaHFWoGThdgckyQO0FVa1qJgOzAzj1xO3X6IHT1SeoTqIWlFH7WhUpkUEdWTiAZuUmn9/9Dk44AfbsUXpYJ4Mx3QK+Klpl4Ur52QMDfPWOp6ve3sBgKaB+78u1GW1a5WX74NSsalglhNKtGQ0FGbilNoW6D/CVXatChBBm4DvAK4CTgMuKeK7+Wkp5Svrxo/S2LSjadGcCm4GrhBDNtd7HSlnb3kCzy8ZXP2/n059WemY++tHsnbW7hL2TqjFjiPgaqDTalePlaMnAqXpv6iDDpEYGLputyu2Bq6CE2nEiIGYFcKrzR7k+uEKOPRaiUTj3XPjDncq2lWbgHFYzdotpThm4kZkw06E40YShJWewfNGTDAFFC3Q6FM9Uw6pBq4TqTetQplLVB4a1RE8A9wmUvrfvCCG+qj5q8N6bgWellPuklDHgV8CrdG77MuAOKeWklHIKuAN4eQ32aU5IKYjfezIP39bJu98NN9+sqLrrOei86eDOkBAxUFGDecdREsCpGThVzHciGMNqFnlZaYfVhNUs8hr+Kyqh2hqgZc0sKZFVLWktuApP+Bs2KJOpDgd87G0tRA96OaajsaLXgLn31oxMK8KlqvCzgcFyRL2Wlkt0bFql5HO2DVTfBxfSKKG6nVakJNPmsdDoCeC+D9wHPI7S/6Y+5ko3MJTz+3B6WSGvEULsFEL8VgjRW+G288roKAw+0kbTGfv47JcjGa039WJTSqBXNcptshs9cAYKTUddCTVtaJ/OwE2lXRhyXTWEEDQ5rNWXUCE9yJB/CnPazHS5HXluDHo57jhFGsjekGDs1jM5fLDymzDVYaIaookkR9KeuWM1UqA3MFiM+HVcSwHWtjfidlh4bA6DDGoJ1VVQQoVsm8dCoyeAS0kpPyilvEFK+WP1UYP31hqrK8xL/gnol1KeDPwDuLmCbZUVhXiXEOJRIcSj4+PjVe+sHrq74bd/99N83m6250T++nrgjAycQT6ZIYajJoDLN7SfKBDxVVH8UDVkRPRmKjvXw+Q+iOVn2/paXSW14ErR1wfn/r9drLtoiP7+yrcv/Jsq4dBMNmhTvXMNDJYj6hBDuR44k0lw6qpmtg9UP8igdWO42Oy09ARwdwoh3iaEaBdCuNVHDd57GOjN+b0HGMldQUo5IaVUz0g3AKfp3TbnNX4opTxdSnl6e3t7DXa7NC881Y3TZuKRA9kAzheOY7OYSpbCvMYUqkEBapngaOmBU9sI1ABuMhjNM7JXKcxWaZU6StK5DpAwtjtv8eq2Bg5UGcABHEn6eMnFMwgBu3bBbbfp39YzhwycWj4FGDMCOINljN4SKihl1KfH/FV/r7RaMxabob2eAO4twGeB7WTLp7WQEXkEOFYIsVoIYQMuRRELziCEWJHz6ysB9Yz7N+B8IURzenjh/PSyBcdmMXFKr5dHByYzy3yRRNnpUjX7YAwxGKg0HmUZOIvZRJPDkjfEkKsBp9LksGRO5KDcKVeklde5TvlZ0AfX19rAkUAsrzyrl2giychMmFVpX9WrroLXvhZ+/nN9289FIHQkRzzcyMAZLGcC0QROqxmruXzosqnPi5TweJVyIqFYEiHAYZkdwE2HF0evqZ4Abk1aOiTzANbO9Y2llAng/SiB127gVinlk0KIa4QQr0yv9kEhxJNCiB3AB4HL09tOAp9DCQIfAa5JL1sUnNHfwpMjWSsPfyRetmavHhiGjIiBitoPebT0wIFyI6P2wE0UGNmruB3WvInNcCxZWZbS2we2xll9cFlT+8r74IanwkiZHYb46U/hBS+AN78ZfvCD8tsX/k2VMDqTtuCzW4wMnMGyxh+J605ynNLrRYjqBX1D6WDRlHNjmJE6WkIZuId0LqsYKeVfpJTHSSnXSimvTS/7jJTyj+l/f1JKuU5KuVFKeZ6Uck/OtjdKKY9JP26qxf7UitP7W0imJI+lI39fJFG2ty0zxGAEcAZpGuxKUHK0TKGCIiUyHY4TS6TwRxIZaZFc3I7ZJdSKglyTCTpOKqoFV00AN5i2wetLB4GNjXD77XDBBfCe98D115fe3u204IskqtKtOjgdobXBRnez08jAGSxr9FxLVZocVo7vbKp6EjUUn31e8aSnUH99QyO33lrVy9aUogGcEKJDCLERcAohNgghTk4/tgCu+dvFpcemVV5MAh45oCQFy5nvQlYDq1ymzuDowR/mOsgAACAASURBVGJWyvEnrjh6nOu8LhtToXimjNqi2QM3u4RacZm5a71SQs0JmPrblNNaNX1wqgBwb0v21OhwKEK/l1wCf/sbJErMKHicVpIpSTBWuY7b6EyYFV4H7U12xgNGAGewfAlEEpnhLj2cuqqZxwenq9JtC8dmn1fsFjP+e07gTz9uZevWil+y5pT6JC4E3oYyIPDdnOV+4Mp67tRSp8lh5YQud6YPzheOs8LjKLnNhm4PV1x4Ii84vv6DFgZLh9ved/ZC78K84nVaGZgIMpHWM9MqoTY5rIRiSeLJFFazqfISKih9cI/eCDPD4FXmoVw2Cx1Ndg5UIf45OBnCZTPT3pjfs2ezwS9/qYj9WiwQCEBDA4iCdr1cO61yE3aFjEyH6W9toNFh4bmxQMX7brD0mQzGODARzOifLVf0JENyOa2vmVseHuSZsQDHdzVV9F6hWAKXNf+7KCWYow5OOX+CH/2otaLXqwdFM3BSypuklOcAb5dSnpPzuEBK+Zt53MclyebVLTw2OE08qZSCyum7mU2Cd5yzpiITbAOD5YZqaJ/JwBWREYHsRFoolqi8T7CIpdYxHY3cuWeMB56bqOjlBiZCrGpx5WnWqZjN4HIpnqkveQm8+92QLEi0qS4t1UzMjU5HWOl10tHkYDwQnZN9kMHS5Cf37eeyHz647P/vA1H9JVRQqmFQXR9cKJbElW5jSSQUnVeTCTZe9ixnvvFARud1ISn7SUgpbxVCvAxYBzhyln++nju21Dm9v5mf3H+A3aM+fJE4bqcRmBkYlMPjsuGLxDO9XJpDDM5stqqlwUY4nsoMAemm40Tl596/gCX7HtedGubrdz7D9368jdFTu3nVKd3oGHij7fBOTnI74LnidVKHhBdvWsPnv9dP8PAhfvKl3VitygV31bSPLaY9yvZB/ZmCYCzJxvhjnJE6QsDSRzwpmQ7Fadb43AyWL5OhGNFEimAsWXEGdynhjyQq+vtWtzXQ7LKyfWCKyzZXZuEeTvfWxmLw+tfDtm2wcyd4GxaPoX3ZT0II8V3AC5wL3AS8Bniwzvu15Dm9TzG2v/+5CSLxlKHvZmCgg2aX0iS8P13G1MrAZQ3tlWApHEvQ5Z4tN1IShwfajoPtNyuPNN3AdQA2KvKc+SJACPhZ8XUEcG0HNL34I3zyj1cT2LuNX7/2rTgsUdYDP7ehmAJWQIO63eMQbFjFx/ki44GoEcAdZQSjSkrXH6m8BL+UCEQSFV1LhRBsWtXMtiozcI1mB696FWzdCl/7GjQ1KZOoudqLC4me/+ktUsqThRA7pJRXCiG+DPxfvXdsqdPlcdDb4uSfe8YAQx7EwEAP6jDPviNBhMgqn+eifpfUcqMyhVrF9+stf4KpA0Wf/tfeMW64ex92q5kPv/hYNvZ6NdebCsZ4x08f5R3nrOYV61dorpPLJ94G7p/u531XXsh7n36CG6/fx6GZMO/75WN84EXH8MLjO3T/CdsHp7j29t18f8Me2p6+FRtxxnxRjuusrN/HYGkTyEhWJVjhWeCdqROplCQQS1Sslbqpr5k794wp1nwV3Nj4ZiQ7vn8co3vhhhvgHe9QlrudVnaP+ivah3qh55NQVSIjQoguYALor9seLSPO6GvhDzsUgwgjA2dgUB5VTue5sQBep1VTnDe3hAoQqWYKFaCpS3kU4bxV0LsxwHt+vo23/TPGo1ecqdnj9uyBSbZJPx9Yewas0hd8vfcKaDkGNm/ugFUd2IMxtskQ+10n8cJVq3X/CbtHB9gmU1j7mxFP/5oVYoLxwOLIDhjMH4FIVnN0uRKIJZCy8mTIqek+uMeGpnjRCZ26t3v6T2uYeKaBW26B170uu9wzB9HtWqOnDe+vQggvcD2Kof0BjAycLlQ9OMhedAwMDIqTzcAFNMunkNVKzA4xVDGFqpNjOhp5+5bVTARjGa23QlQJEVVHTi+XXgpr1kAqBd+4zkIqZKtYiHd0OoLZJGjqOgaAHjHOmM+QEjnaCKb9gKv1010KBHR4imuxsceL2SQq9kVtPe9p3nj1QF7wBortZSCaIJFMVfR69aBsACelvFpKOZ2ePF0NbJBSfrL+u7b0OaM/O9JtCPQaGJSnOZ2Bi8RTtGrYaEH+xKaUkrCG4GYt2dij3ME/PqR9ARiYDGES0O11VvX6Tz8N111nYvrXW/jNXROZmz49jMyE6XI7MLf0AbDWMmGI+R6FqCXUan0/lwIZH9Qyig6FNNgtHNfZxK6DM2XX3bcP3vY2CIclMUuEDWfM/i55nGoLx8IHy2UDOCGEUwjxSSHE96WUYaBFCPGKedi3Jc/a9saM9YYh0GtgUB6vM5t1K5aBa7RZEEIpoUbiKaSsr1/scZ2NOKwmdgxpXwCGJkOs8DixWarTFTjhBLjjDpBhO49/dxM3/0W/hMnIdFjRmGxaCcLMMbZJw07rKCRbQl34oKJeBKJKcFpNMmRVizPPM1iLXbvg7LPhD3+Ap59NkUxJzfOK2uahWv4tJHrOODeiDFBtSf8+AhgSIjowmQSn9ylZOCMDZ2BQniaHBbXtTcuFAZTvVaNdsZ4Kx5XpO1cd7cYsZhMbuj3sGC6SgZsIZjxQq+Wss+Bfd4FJmnjvZR62bdO33eiMogGH2QKeHlZbjhgZuKOQYHRxBXAz4TiHZmrbi6lmvCodYgBY4XGW3J8HH1S8i00muOce6FubPq9oBHDqTeZi6IPTE8Adm9Z8iwNIKUMoAZ2BDrYc04bdYiqaTTAwMMhiMonM5KmWBpyK6ocaSvf+1DMDB0oZ9YmDM8Q1+l4GJ0MZD9S5cPomEx/71ihJW5TdB0pnC0CZyhudjrDCm5bn9K5iJWOM+Y0hhqOJVI4F22IZYvjU73bxhh/VVm1MzTJWo+jQ5XHgjyY0P58774QXvxhaWuC+++Ckk8h8nloBnNrCsVQCuJgQwgFIACHEamDhc4dLhDc9v59//s8LaVjG2jwGBrXEmz5BlrrpcTut+MIJwukTrbPODiYbe71EEyn2HsqXDwhGExwJxFhVgwAO4AP/2cWqd97DgGM/AIODxdedCMaIJVOs9KR777x9tCcOGxm4owx1gAEWRwYunkzx76fHeW48WNMyoz8zxFB5O5JqZXnYN/vmprMTNm+Ge++F/n5lWThzYzj7vOJZYgHcNcBWoEcIcTPwL8AYYtCJ2SSqbm42MDgaUftGSwVwTQ4L/kh8XkqoAKf0ag8yqJOpcy2hqnS6Hbx8Qye3PjrM//0+yTHHwM+KiAOrPT0r1fNLcx/uxATRSIhIPKm90TwxEYgyETACyflAFfGFxZGB2zE0nRmq0DM4oBf1b6tGqLjLrQRwozll1AcfVLxN16+Hf/4TunIUhUKx4ucV9fy0GAK4kp+EUESPdgAXA2ehlE4/KqUcm4d9MzAwOApRS6glM3AOKwenw5kTbb1LqD3NTlobbOwYmuaNz+vLLB9QJURaKpMQKcWbnt/H7btGCbSMcs45Pbz5zTAxAR/+cP56ozNKAKdmF/AqVkErhTKJ2lujoLIaPvzrx7GZTfz48jMWbB+OFtRgCRZHBu7uZ45gEpCSSgB3zrHtNXndQDSBSeSUNVMp+NMHYXqg7LYb4yl+YZ3imK2NyPvsfPkvr+ETv7mcn7/ret5w1r9n9YT1heP8wupj3d1ueCQ/49ci4RfWCVY96IJjvgvtx9Xk76uGkgGclFIKIf4spTwN+MM87ZOBgcFRjJ4MnNtpYfdoPKeEWt8ATgjBxl7vrEGGoRpn4ADOXN3CcZ2N/HbnAf78527e+EbBRz4CY2Nw7bWgagmrdj6ZDH86gOsVY4wHFjaA23PIn8l6GNSXxRbA3fvMOCf3eJkMxniiphk4xQc1I6Y9+Rw89jNoOx5cLSW3tQmJVSSIRWP8z5/fzVf//houO/NfXHzaXZCc/ZnJRByrSGCRCShIZpsAhymJTMZALqwWnJ5c5MNCiE1Syu113xsDA4OjnubMEENxf1O3w5pfQq1zAAfKIMO/9o4RiGYNtQcmg3ic1oy0QC0QQvCm5/Vx5R+eZO+RGW691ct73wtf+AKcdx689KXKeiPTYRxWUybgxatkBnvEkQUV8w3FEoz7o8bk/TyhTqB6nNYF14GbCcd5fGia9593DM8dCbKjiHZiNfgLfVAPpkOSi38CnSeV3NYE/Ndn/0Hs9k08cVcLH/gAfP3r52Eynae5/n07R3nfL7fz9/88V9OW7gNfuJOz+tq4vuOEKv+a2lC0B04IoX77tqAEcXuFENuFEI8JIYxgzsDAoC70NjtptFvKlFAt+KOJTPahXk4MuWzs9SAl7MzJwg1OhmuafVN59andNNjM/OyBAcxm+P734e9/zwZvkJUQyWQkmrqQJis9YpzxCvrPkinJ3588RKoCAeFSqH2BwejCZ4OOBtTvwAqPY8EzcA88N0FKwpZj29nQ7WF4KsxUsDaDDP5IPP+m4OA2sDZA+/G6trdPtfPk3c187nPwjW8okiHFUAdDip1X3E4r06GF74ErNcTwcPrnq4HjgQtQeuFem/5pYGBgUHNef2Yf//jvF5QUxnU7rUgJR9KBSr1LqJB1ZMgV9B2cCNZsAjWXJoeV/9zUw592jjAZjCFENnjbtg1e+Uo4MBLLTqACmMzg6VFKqBrTdsX43fZh3vWzbdz1dG1am9W+wFB0YQcpjhZUeY0VHseCZ+DueWacBpuZU1d5ObnbA9RukEHJwOUEcCPbYcVG5bgvQSId0550apyzP/4oV1yRbUMoRriEjAiks52LYIihVAAnAKSUz2k95mn/DAwMjjJsFhNdntL9U6qziVoqdNVZRgSgucFGX6srUxZKJFMMT4Xpq1Ov2Zue30cskeI3jw7lLd+/H7ZuhX99ZR2Nyca850RzH/3miYoycLc8rGiVPF7EaSKXWCKFlKUzdao3bDCWKLuuwdxRs0VdHieBaKJmmdTcaVK93PvsEZ6/thWr2cS6GgdwgWhOCTUZh9Gd0L2p5DaDg7BpE9x+ezrAtU/peq/MFGqR84rXtTgM7UsFcO1CiP8u9pi3PTQwMDAoQL0TV9XV56OECkoWTh1kGJ2JkEjJupRQAY7rbOK0vmZue3wkb/lrXwt//FOKyJSTWz9zHLt35zzpXUV3BYb2ew752D6o/D07izhNqMQSKc7+0j/52YOlp/4GJoOAMoUYiS+84fdyRw2yVnocSJmvC1ct/kic13zvfm6+/4DubQYnQgxMhDJTpx6nlf5WF7uGa5WBi2clRA4/CcloyQBu1y54/vOVIK6xURHznQlnxb9LEY4lEAIcVu0QyeO0Mh1eeDncUgGcGWgEmoo8DAwMDBYEVQ39sD+CzWLCbJofc5iNvV5GZyIc9kWyGnB1KKGqXLBhBbtHfew/Esxbvu6MCF2vf4BUwsTZZ8OePeknvH20yGlm/Poumrc8NIjNbOIlJ3awa3imZMbsyZEZxv1RHjlQOouhllChNsGEQWkCkQRmk6CtSRn6qUUf3HPjQRIpybNjAd3b3PPsOABbjm3LLFvf7alxBi4dwI2k2/BXagdwd90FW7YopdJ77lFsslS5HT0WX6FYEpfVnO0vLcDjXPwZuFEp5TVSys9qPeZtDw0MDAwKyC2hzscEqsopvUpZaMfQdCZQqVcGDuDl6xV10b8+MZq3fHQmgq3Txw9unebSS2Ht2vQT6UlUi+9g2dcOx5L87rGDvGJDFy84rp2JYIyREhe3bQNK4PbMYX/RdUAZYlDjaWOQof4E01PRanBTkwAuHbgdmAiWWTPLvc8codvrZE1bVhPx5B4PB6fDTNZgkMEXSWR9UA9uA2cLNPfPWu+pp+BlL4Pubrj/ftiwQVm+It0vOqongIsnS7q7eF02IvHUggtml+2BMzAwMFhsqBerw77IvJVPAdat9GAxCXYMTzM4GcJqFpkLQz3o9jo5pdfLX3blB3CqC8NpG+x897tgtcLhw/CTO5SMhCt0sGwv1O27RvFHEly2eRUb0gMau0qUUR9Ll1r3HQmSLPLaiWSKg1Nh1rQrvXlBY5Ch7gSiSRrtlsxNTS3cGJ4bVwK43GxqKZIpyX3PHmHLMW15Wav1NeqDiyaSxBKpzN/IwceU8qlGhuzEE+GLX1SssVatyi5XM3C6ArhoouSNoVoBWOhBhlIB3IvnbS8MDAwMKkA9gSZScl4mUFUcVjMnrGji8aFpBieD9Da76l6+vWBDF08c9GWGAwBGZlQbreywx9e+Bm/9n7V87I5rWCHHmSrjQ3nLw4OsaW/gzNUtnNDVlA5MtS+0UkoeHZjEbjERS6QyAsaFjEwrfYEnrnADRgl1PghE4zTYzbXNwKUDuMlgTFepcOfwNL5IIq98CjkBXJn+ynIEMj6oFogFYXw3dJ+WeT6ZhE9+EnbvVmK6j3xEMafPpStTQg2Xfb9QLFkygFssfqhFAzgp5eR87oiBgYGBXnLlBOazhArKIMPOoRkOHAnNi9vBK9avAPLLqCPTYbwua96U3LXXwnv/S3Ld/R/ib7e9juEjxQcZ9h7ys21gitdvXoUQIhOYFms4H5mJcNgX5RXpku4zRXqj1AGGE1cobdJGCbX+BNMZOHVCsxZSIs+NB7GnZXwGdWTh7nnmCELA2cfkB3Buh5X/v717j4+7rhL//3rPPXPJ/d606S0ttKVQKFdBFkRFRPAGXpZFFBZXV/biZRe+ut51dd319tNVUcDbKgqyKyriLoggKJdyaWkLvdKmae7Xmcz98v798ZnPZJLMTCZpZpKQ83w88uhk5jMzn+TTJqfn/T7nrKn3nHAGzgxKvU4b9Ow0JiCk97+FQkZhzxe+AL8sMC/KZbdS47YXlYELx5MF/2NYXWHHoiCwwH+/ixlmL4QQi4rdasksnZZzCRWMQoZANMELvX7aS1jAYFpZ62ZrWxX37e7N3NczGpm2dGu1wje+qfj85V/m6RfO4dq3VjA0lPs1f/qkUbzw5tPbMvedsqKaXV2jOQsZnknvf7t6+0oADvTn3gdnLrltSmfgzHYMonTGowk8ThuV6f/U+E8wA5dIpjg6FOS8dXXARFBeyKMHBtnSWpWz+faWFVUnXInaHzD+M1LvdU5MYFhxOv39cPHFRuD2ta/BzTcXfp3mqoqiixg8BfbAnb++nkOfv4zTV9UU/TWUggRwQoglqbLC+AFbaLNxKZy20tgvpnVpCxiyvW5LCzuPjdI1YgRI3WMRVlRP75WnFPz9mx7mi2/+J8b8ufephWNJ7nmmi0u3NE/6hbu1rQp/JJFz39PTR0eosFs5c00tzZUuDvblzsB1Dodw2CysrTf2wM22j5iYvfFMEcP87IE7NhImntRcdFIjMPM+uPFogmc6R7hgyvKpaeuKKrrHIpmm23PRk71loPsZqFpJ53Aj550Hu3bBPffA3/3dzK/TUuUqbg9crHAGzmJReStUy0kCOCHEkmRuaHaXOQO3rsGLJ/3DvXwBnLF0eX86C9c9Gs5bPGGvW831W37CP337GHV1EI0a0xtMv3m+B38kwTvPXjXpeVvbjP1Ku3Isdz3bOcLWtirsVgsdTd78S6hDQVbVujPVgiEJ4ErOrEJ12S3YLOqE98CZFahbVlTRVOnkyGDhDNzjh4ZIpPS0/W+m+Shk6B41gq6WqgqjArV1G42NcOqp8NBD8MY3Fvc6zVUueouYUhKOFS5iWCwkgBNCLEnmPrhyFjEAWC2KU9LBTnudZ4aj58fqeg+bWiq57/kegtEEY+E4rdV5ArjadupUgDG/sez5qU8ZDU1/9CPj8Z8+2cnaeqN4IduGJh8Om2XahvNwLMmebj9ntBvLResbvRzsH89Z5Xp0KER7rRuP07gmwWW0hHqwP8D2zz6Qt8CjVMwlVKUUPpfthDNwZgHDunov7bWeGTNwfzwwQIXdmvn7MdWWFcZy+u4TWEbtGQtTVWHHk/Tz00fOYNh3Li4X/OIXcPbZxb9Oa5WL4WBsxvYfwRmKGBaLBQ3glFKXKqX2KaUOKqWmrV6npz7sVUrtUko9qJRqz3osqZR6Lv1xb3nPXAix0MxK1HIHcACnr6rBblWsrC1dC5GpLjulmWc6R3mm0wjMWnMsoQJQY/yY1KPGxISPfMRoanrttfD+f4yy48gI70gXL2SzWy1saqlk15RftLu6RkmkdOYXdEejj3A8yfHRydV8Wms6h0OsqnPjsBrZoOVUxPDYwSEGx6N59weWgtY6k4EDY4buCWfgBsap9zqpcttpr3PP2AvuiZeGOXNNLU5b7n+HPpedtSdYyNA9GqbZ5+Kf/t7PO++5nf/4zeVzep3mdNZ6pn1w4ViSCnt5t2bMxYIFcEopK/BN4HXAJuAdSqlNUw57Ftiutd4K3A38W9ZjYa31aemPK8py0kKIRWOhllAB/uYv1vGz955blhmsptedYlSj3vHYEYD8/efSzXytY8YM1ZoaY3bq9dfDt77qZPhX23jdyW05n3pqWxW7j49N6vNmjtratmoiAwdwcGDyMurgeIxQLEl7rRulFB6nbVkVMezpNgKUkWD5WkuE40lSmsyStZGBO9EALsi6BiOzvLreQ38gmnf8VCSe5ED/eGZwfT6ntJ3YRIbOvhgv/tcpfOl7q3nf9u/xqS9Wz+l1iukFp7UmJEuoMzoLOKi1Pqy1jgF3AldmH6C1fkhrbeZvHwdy/9QRQiw7C7WECkbwWO4KtHUNXjY2+fj9i/1AgQxctbG3rSI0MY3B4YBvfitF66v3EzvaSGhkerUgwClt1QRjSV4anAjOnj46wtp6T6bgocMM4KYUMnSmqxXN0WIeh3VZFTHs7fEDzNh/bz6Z319POgNX6bKf0BKq1sb4rHXpa2xWWXfmWRbe1xsgmdJsbq0s+LqnrKiiZyzCQGD2hQydnfDHL2/l2HPVfOWaH/DNa7+DzVv4/fLJ9ILz5+8FF02kSGlwOyWAK2QFcCzr8670fflcD/w263OXUmqHUupxpVSRWxiFEC8XC7mEulAuS2fhlIKmyjwBnKeBuHJSGemedPdD+/qxn36AOx8YZsMGo4r24MHJT80UMqSXUbXWPNs5ksm+AdR4HNR7HdOWCidGixnZG7fTVtTg8JeDeDLF/l4joB0NlS8DN57pj2b8GzjRDJzZuHddepLG6vQezyODuQO4Pd1G0Lplpgxc+vHdc8jCpVSSZErzvs938w9bP4tqO2PmJ+XRXDlzBi6czhovRGZ/thYygMtVg5uz7l0pdQ2wHfhS1t2rtNbbgXcCX1VKrcvz3BvTgd6OgYGBEz1nIcQisZBLqAvlslOMatQmnwu7Nc+Pb6UIVLTSlOrL/DICuPvpYzT6nLzhLKNa8Hvfg82b4Qc/mHjqugYvboc1E8AdHQoxFIxN26C+vnF6JerRoRBKkdkX6HHaGF8mo7QODYwTS6YAGA2XLwNnjirzOo1/Cye6B+7QgJFFNZdQzWzq0Tz74PZ0j1HpstFWU3gv6OYVVSg1u0rUX/0KEglIucK0vPuPvOGCbgj25x1gXwyzX16hPXChdIFDObdHzNVCBnBdwMqsz9uA7qkHKaUuAT4KXKG1zuRftdbd6T8PA38AtuV6E631rVrr7Vrr7Q0NDfN39kKIBTXRB275BHAdTT46Gr0zFk9EPW20qYHMklV/IMJD+wZ40+krsKUDv7e8BS64AK67Dj70IeOXpdWi2NJaxa50Jao5wP709sl7jjoafRzsG5/U9LdzOERLpSuzmd3jsC6bNiJ705koh9XCSDkzcJkl1IkM3InM58xUoKYzcJUuO7UeB0fyVKLu6fazqbVyxp5oXqeNNfWeaQUyucTjcNNNcMUVxn8yukcjKAVrovuNA1bMPQMH0FpdUTADZ/6dXQo/VxYygHsK6FBKrVFKOYC3A5OqSZVS24DvYARv/Vn31yilnOnb9cArgL1lO3MhxIIzG5eWu5HvQvvOX53BF96yteAxqepVtKlBBsaNX1T/8+xxkinNVWdM/J+5thZ++1vjl+WXvwyXXgoDA8aG8z3dfhLJFM90juBz2uho9E16/Y4mL4Fogj7/xJ6mo0PBTMYGjGzHcmkjsrfbj9Nm4eTWSkYXYA+cN7MHzsZ4LJGzxUsxDvWP47RZWJHVoqa9zp0zA5dIpnihx8/m1sLLp6atK6pmXELt64NLLoFvfMP4T8Vf//XE3N/mwF6w2KF5yyy+oumaq1yZxsC5mIU3UsRQgNY6AXwA+B3wAvBzrfUepdSnlVJmVemXAC9w15R2IScDO5RSO4GHgC9orSWAE2IZMUcHLaclVIC1Dd5MhiQfa207NWqc4eEhtNbctaOLbauqMxWkJrsdvv51uP12+POf4bnnjH1w0USKA/3jPH10hNNWVWO1TM6wZCpRs5ZRO4dDtNdO9MXzOKzz2kZkrkFJOezt8XNSs496j6OsVajBKQGcz2VHaxif497DQwPjrG3wYsm63qvrcveCOzwYJJpIzVjAYFpT76XXHyGeXmqe6skn4fTT4amn4Mc/hn//d2M8XE+6ia9veBc0bQabcw5f2YSWKlfhJdR0ALcUMnAL+l9XrfV9wH1T7vt41u1L8jzvT8AppT07IcRitqHJx4rqimlBiYCKhrUAhAdeYmdXAwf6x/n8m/L/yHz3u+H1r4fGRnhpsJrYgJc/HRpiX1+A125unna8+T0/0B/g/I56xqMJBsdjkzJw81nEsL8vwOVff5T7/+EC1s4QvJab1po93X4uO6WFWCLFi73l6wM3NQNnVmYHIonMHtHZODQQzBSyEByC0BCnVfSzy3+EWG8LDutEUHN0Xy/r1HG2uVthYObmxavpZp06jv/YHuo804Mw+7iTmspm7vtxD6duiUF6y3qibx9neoew9DwHp1w1669pqubKCgbHY0QTyZy968Lx9LL0EsjsL/4zFEKIHFqrK3js5osX+jQWJW+zUdOVGj7KXTtacNktXH5qS8HnNBqjL+k76KbnjlfyL3t6sJ9vydlhv8Hr4F1m6AAAIABJREFUpKrCnilk6ExnaNqzAjiv0zZvbUR2dY0RS6Y4OhRadAFc91iEsXCcTa2VHB0MLmgbkcnzUGfXZDoST3JsJMSbtq2ARBS+dirEArwLeJcD+Pbk418NvNqJ0QCsCFcCVzqB70/cF467+O8XL+edp9zNNmDX1QrLwxoenjjmQ+aNBNB25qy+plzMXnD9/igrc4zCW0pLqBLACSHEy4w1PY0hNXyEe/tXcenm5qIzMmeeqTj5tcd54f4VOI66qbp++rgwpRQdjd5MLzizB1z2EqrbYSUST5FM6WlLsLPVNWIEiP4THBNVCmYBw6aWSsZCRjPjfNmd+RaMJlBqItjIzsDN1pGhIFpj9IAb64JYAM66kZfcW/jy/+7nvReuZUvWfrev/f4A8YTmw6/ZUNTr7+8b5//7/QE+cPF6Njb52H/Ey9UfOYed+6rZ/I63c+rGsZx7uj573ws0+1zccNFJ0PHaWX9dUzVnNfMtFMDJEqoQQojyc9cSxoW/9xCB2HlctX3lzM9Js1rhr/7Oz1cqehj57WlceK6NO+6AN71p8nEdTV5+u7sXrfVED7gpGTiAUCyRyQzNVdeIsem8mIzenU92ct66+knnUkp7u/0oBSc1+3gh3cx3NBSnqbL0AcB4NIHXYctUgZq9EefSzPdwdguR0ReNOze9kaqGM/nV/f/HaZ5NbDllDWAsG9/2i//l8lNb4ZQidzM1BvjVA4/wmoZt7HyhlRtuMPZg/vrXcOrrX53zKVprfnrX77h600o4efOsv6ZcJqYx5C5kMKtQpY2IEEKI8lOKQXszLXqAFdUVnLu2blZPP7WtGveGPm748gE6OuDw4enHrG/0MRqKMxSMcXQ4RLXbTlXFRKBm/gIMzkMvODMDN1NmKRJPcvM9z3PnU50n/J7F2tszxpo6Dx6njRq3Ma2iXM18xyOJzPIpnFgG7lB6OXxtvRdG09+/6lXUuO34XLZJlahdI2H8kcSkjNxMzEke3/6Sh7e9DbZsgWefNfZe5uOPJAjGkrTmGxs3By3pCtt8rUQm+sAt/gycBHBCCPEyFHC1slIN8NYz2iZVFRbj9FU1OGwW3nB+NY89Bh/8oHH/H/4AR44Yt82RWgf6xjk2HKJ9ynKU2ZssOA+FDJkM3AyBibnEOpeRTXO1t8fPyelKzBq3EcCWax9cMJbIzEGFiQDOP5cAbmCcFdUVxtLhaCdYbOBrQSk1rRLVbAdSbAUqQHU6uK9rD/LhD8PDD8OqVYWfY2bJWqvnL4DzOm34nPmb+YZjSSwKnLbFHx4t/hyhEEKIWYt629jkf4q/6f4o/GR22YRmYM/GFLbnFep5I/iLJ6y858NfZmjcx7fefRtvPvsRvmsfpO1+H38zHDL22P1kIiNz3niU79pHafjV7XACS6gprflksJ+g3cULwU8UPNbMPA2MlyeAGwvHOTYc5u1nGpFIVTqAK1cvuPFoclIGztznOJdmvocGgpkZqIx2QmUrWI3Xbq9zT+rhtqfbj9Wi2Njsy/VSk2gNP/whxGIWqt122rcO85k3thZ1TmYLkZZ8c3/nqFAvuFAsiTtrWXoxkwBOCCFehtZd8HbiD76AN9wL+fuW5jU15LIDv//7D3DNHf/CX/7nTVyzYwM3XfRpLOM9VMVjNLic4J/oC1cRS9KigljGoxCb+3JUIpliDUOss/bQN7oTOCfvsWaGrpgM3NcfPIDVovjbi9bP+dzMPW+bMxm4ci+hxjNzUMHIGtmtatZLqFprDg2M87bV6b2So8eguj3zeHudm/t39xJPprBbLezpHmN9gxfXDD0YR0fhb/4GfvYzo1F0zascDAeLD26Pj6YzcPO4hApGAJcvAxeKJZdEAQNIACeEEC9LlZteBZteNa+vuRr4wz/D5z4Hn/70a7nn0IVsft9T9Mf9/NtFW7k6q1jicNcoV3zjMb53yXYu2dQ05/d85vAQt3z3v3nI+SEs4ZGCxwZmEcD9amc3iZQ+oQAuU4E6JYAr1zitYDRJg2+ip5pSKj0PdXbv3+uPEIolJxpEj3bCuosyj7fXeUikNN2jYdrrPOzp9nN+R33B1/zjH+Gaa6C7Gz7/efinf4K33epgKFh8drRnLIzNoiZ9jfOhpcrFvjz9+sKxxJLY/wayB04IIcQs2GzwiU8Yv6A3vcJPX8wIYlbVTN4DlyliOME9cF0jYYa1sVTniM0UwBmBy1AwNuPkhv5AlKNDQaKJuRdZ7O3xU+910ugzlvgqHFacNksZl1AnFzGAsQ9uthm4Q/1mBarX6AEX6IHqiQ1qq+uM9jBHhkL0ByL0B6IFR2gdPQoXX2xUmT72GNxyi1HdXDvLSRU9oxGaKl0n3IZmquaqCgbGozmnQgRjSSqWyHQXCeCEEELM2nnnwQ0fDKAUxAa93PTOGnbtmnh8oo3IiVWhdo2ECCg3KSw4YqMFjzUDl2RKFywkiMSTjIXjpDS8NDh9zmex9qaHuWerdtvLVsQwHk1kvs8mI4CbXQYuM8S+0WP0gEND1UQ2dXW6JUvnUJA93ZOXjbP19hp/trcb47CefRbOOmvi8Tqvg6FZLKF2j4Vpnef9b2Bk4LQ2gvipwrGkZOCEEEK8vHU0GUtu1oiLziOK7duN5dVEAtxmFeoJTmPoGgnT6HMTsvqoiBcehp7d6LdQIUP2Emv2PNfZiCVSHOgPsKllciBT43aUZQ+c1ppgjgCu0mWffQZuYByfy0aD1wljx4w7szJwDT4nFXYrR4ZC05aNAeJx+OQnjcDtT38y7nvb28A3pcah1uNgJDRzdtTUPRqhZZ73v0FWL7jR6ZtDQ7HpWc3FSgI4IYQQc9LRaPyGPun0CHv2KN78ZvjYx4zs3JEDZgB34hm4tpoKwrYq3MniMnBQeB9cn39iA/uBvrkFcAf7x4kndc4MXDkCuGgiRSKl52cJdWCcdQ1eo/IyqwecSSlFe52bo0NBdh8fo73Onal4ff55OPts+NSn4Oqr4aST8r9PjdtBMqWLOr9UStM7Fpn3ClQgExTm6gUXkiVUIYQQL3crqitw2S2017mpr4c774Sf/9xo/PtfP7bgslvmZQ9cW00FEXs13qS/4LHFBnDm0plFwcGBuQVwe7pz90KrrnCUZQl16iB701yKGA71B1nbkB6DNtoJygqVKyYd017n5shQiD3d/szX/NnPwumnw/HjcM898KMfQW1t/vep8xpFHsUUMgwFY8SSqXmvQIWJcVq5KlHDcVlCFUII8TJnsSg+/JqN/OU5Ey0nrroK9u6Fj38cPA4bLz7n4A9/mNvrJ5IpesYitNW4iTurqSZALDF947kpEInjSwc0gwWWUM0M3Na26sw819na2+Onwm7NbPA31XjsZalCDeYN4GaXgRuPJuj1RyZXoGb1gDOtrvNwZDBI53AoU8DgcBiVpnv2TB+1lkutx6gmLaaViNmnzVzunE+VLhtuhzV/Bm4JjNECCeCEEEKcgBsuWMtFGxsn3dfYCB4PeJw2Hv5ZAxddBNdfD8PDs3vtXn+EZErTVlNBwllLtRovOA81EEnQXOWiwm6dMQNnsyjOWlPLS4NBEjmqEWeyt9vPSS2+aRWS1W4HY+EYWhe3z6uQ//jffdz6yKGcj5nfh+lLqHYC0QTJIveZHegz2mmsz27iWz19REJ7nYfouJ3BX59K/84GAD7yEbjjDqgv3FEko9ZtZuBmDuC6001853MKg0kpZfSC8+fYAxeVNiJCCCGWObfDysUfOMg//zP84AewcSPceiski9wWZ47QaqtxoytqqSXAeIEpA4Fo3NiM73POuAeu0eeko9FLLJni2MjsOh1rrdnb459WwADGOK14UhM8werbzqEQ33zoIPfu7M75uNm0eHoRg/F5oUA3294pzYiNJr6TA7hEAp65v5bu715I8IVWrGEj6zjbYQW16SXUkaICuPkfo5WtpcqVCRJNWmtCsoQqhBBiufM4bcRUjC98AZ55BjZtgve+F+6+u7jnTwRwFeCuxaniBIP5K1EDkQQ+l516r2PGKtSGShcdTUYRhpmFKlbXSJhAJDGtgAGMPXBQXJBSyPcePUxK596nBRP99TzOycHGxED74pZx93b7qXTZWFFdAYkYBLonBXCPPWbsc/uPT3pxNPnZ8rdP8PFb5rbEWOcpPgPXMxbGabNk5svOty2tVew+PjapoCWaSKH1RA/DxU4COCGEECXhcdoYT1ehbt0Kf/gD/OpX8Na3Go8/8ICxAT6frpEQShmzMK0eY50uPDaY93gjgCsuA9fkc7IuvXF/toUMZi+0XBm46sw81LnvgxsOxvj5jmM4rBYGx2M5mw2b31efa/oSKlD0Prg96V52SinwHwedmtQD7vhx8Pvh5z/XtL3zKbZvm3t2ymW34nZYi9oD1z0WobW6omQzSd959iqSWvNfjx/N3Gf2LFwqGbilEWYKIYRYcjwO66ReW0rB5Zcbt+NxuO46GBmBf/gHY9RS1ZTm/l0jYZp8Lpw2KzafEcDF/QN53y8QibPCOkoVQ4wHhqB7eoAFUOffy2lN9fiGrfyF7ziRI+PQXXwWrufFI5xmPc4mmqF7ch5kRdjPFnWYRJcbLNW5X0BZoXHTtEIB0w//fIRIPMWNr1zLrY8cpt8fZWXt5EkX5hJqrjYiUFwAl0xpXuz1886z0kUoo52MhKv5wncupKEDPvxhoyjliivA5VL013fkbOA7GzVuR1HZyZ7RcEkKGEztdR4u3tjIT57s5G8vXo/TZiWUzmrKLFQhhBDLmsdpyzuJwW43xnF99KPGrMxvf9u4/f73gyv9e9vsAQfgqDQCuERwKO/7BSNRPrjvr3GmQrwf4Nbcx/0UYL/x8X2AI/mPzeXdwLvtwO3TH9sM/NoJ3D/Di1zySTj/H6fdHY4l+eGfj/Kqkxo5f309tz5ymJ6xyLQALpiniKEyk4GbOQP40mCQSDzF5tZKwmH4+td8fOHWnYxFq3j/+41jlJq4HicyN9ZU7DSGnrEIr1hfZHXEHF33itX81W1P8ptdPbz59DbCkoETQgghjAxcoc30a9bAT35iVDPecgt86EOwfTu88pXG410jYba31wDgqjQqXVPjuZdQo4kklYkRnLYQ+9rfwb8daOXf33oqNel9V6aBQJSb79nFdeet4YKOen76ZCd/PDDIN96xDUsRMzdjiRQ3/fRZLjm5kau2r5z2+Fg4zgd//hx/efYqLj6pKfeL/O6j8NIjOQO4u5/pYjgY470Xrsvs/zJbamTLVKE65p6BMwsYBl+speNKOH78dF7f8Ts+f+fFbD29NHvPaj0OhsYLB3CJZIo+f4TWEmbgAM5fX8+6Bg93PHaEN21bkSk8kQBOCCHEsmZk4GYOJLZtg/vvN2Znbttm3PeZz6TY9+cGLn+/EYC5q43WFYRzZ+DGIwkalDGpIbTifB7cV0NX4/nUtE1el+08OsyDKTvXdJwJGxtJjR7lvj276Wm5yNjIP4OdR4b5XQLeum07bJweoLmTKR6808pWzwYu3tiR+0UO/C88fzekkmCZCBaSKc33/niY01ZWc+bqmkyQlquQYTzd7mJqGxNfkRm4SASe2hfAYbWwebWL9nb46fv+nQsqbofT9xZ87omo9ThmnH7RF4iS0tBSogpUk1KK685bzb/8cg/PdI5m9hpW2JdGaCRFDEIIIUrC47QRT+qcm/BzMYO3VAp+/VvN4G9P4UvXr+Mb34CUtZaUVljCIzmfG4gkaEwHcO7aVgAGxqcHPn1+o7ihyWdkd9anG9gWW4n61BGjmd0Z6czgVHarBZ/Txmi4QJZp5dkQ9UP/C5Pu/t2eXo4OhXjvK9eilMLnsuN12nI2nA1Gc8/sNDNw/jwZuGAQvvpVWLcO7vxmDR1NXs5/hYVHH4ULWn+fswfcfKp1O2YsYjD3TZZyD5zpzae34XPa+MGfjmSWUKdW9i5WEsAJIYQoCXMpKjTLeagWC3z1R6M0Xv0Ebas0N90Ea9fb+MXBy7FFZw7gKhvaABgMTA8U+tNtIxorjakAZiuRYofa7zgywroGD7VTlmazVXtmmIe68mzjz2OPZ+7SWvOdhw+xus7NazY3Z+5vrnLlzcD5cgRwLrsVh9WCf0oGrqcHPvEJY9n6H/8RNm7UqLWdmUpapcjbxHc+1XodhOPJTLCUS/dY6Zr4TuVx2rhq+0rue76HlwaDwNJZQpUATgghREmYGaK5zEM9PhqmYs0g994f4+GHjV5k9bVD2GOj7N1rLLdmC0TiNGAEcDWNRgCXqxdcX3oKgzkVoNbjoNbjKCqAS6U0O44Mc+bqAgM/KWIeas1q8DZB5xOZu554aZidXWPccMHaScuiLVUuevy5A7hcGTjIPU7rc5+Dz3zGGDz/6KNw5/9EiTX1TVSVJhPg7y55ADfRCy5/m5fuMmbgAK49t52k1tzx2BEAGaUlhBBieTM32AdnmYGDrB5wVRW88pVw333Q1DiCKzbCZz5jBHQXXGAMUA+FjCXDRjVKwlmNq8JNpcuWsxdcvz9Kg885qWBhfaO3qADuQP84/kiC7TMFcO4ZMnBKGVm4YxMB3HcfOUydx8Fbz2ibdGhzpYveHEUMxhJq7kyRWzl58neVnHeeUekLcPPNsH+/0YfvFa+APekChk3puaZGD7hkyQO4mnTgXGgZtWc0jM9ly+znK7XV9R4u2tjI8XTg6LZLBk4IIcQyZgYYc8nAdY2Eaa504bBN/JoK2SpxJ8b41rfgy1+G7m649lpobobvfqWCBjVGymNUq+Zr5tsfiNBYOTmzs77Ry4H+8Rnnl5r7385cnXv/m6nG7WC0UAYOjABu9CgEetFa89ihQd5waiuuKcFDS5WL/kCU+JR5rePRJF7nRICjtZFZe8974M+fPY8Hv9PO4CAE0lv72tpgfVYXkL3pZsQntRhLyIx2Gn9WTa+snU913pkDuO6xCK1VpV8+zXbdeaszt5dKHzgJ4IQQQpREZgm1yLmc2bJ7wJki9mo8KT/V1cY+rgMHjOkOb34zaGuSRjVCwrWCz34WbGM19PtzZ+Aafc5J93U0ehkLxxmcob3FjiPDNPicrJrSk22qGredkZkmMaw6x/iz83H6A1Ei8RRr05MhsjVXVaA104LR8Wgcj8NKX5/xeSIBb3kL3HUXtG8f5pUffJ59++Cyy3K//d5uP6tq3Zm+cZkArtR74DzG975gBm4sTEt1eZZPTRd0GC1FLAqctqURGi2NhV4hhBBLjrkZfG5LqOFpe81ijmoqx/2Zzy0WuPBC4+NrDwzR8MgYO4fewsc/DlqfSkV9iFs6jQBv+3Zj5bIvEOHMNZMzaOsb05Wo/QEapgR32XYcHeHM1TUzjneqcjvwR+IkU3pam4+M5q1gc8GxJzjqNhrftddND+DMfWA96dFSqRQ89RTs/9Ua9hxq5b9tcPSo0Rj5N7+Bk0+GD91zjMOD4wWHze/t8U8eBTZ2DFBQ1Zb3OfPBLP4ovIQa4ZQVeaZYlIhSiv932ck88EJ/ycZ3zbelEWYKIYRYcrzpDFwxveCyJZIpesYi0zJwCWctTmIQC017TiAco1GNcu4ZIY4fh9e/rxuLL8SXvgRnnQVPPGE0+x3steKIeCc9t6PRWEY8VGAfXM9YON1YuPD+NzAycFqDP1wgC2dzwIozoPNxjgwZ1Y/tOTJ7zekArncswh13QEsLnHMO9P+pnfrWOB/7mJF9AyNI9XhyFzFkG48mODIUnDwWa7QTfC1gyx/AzodKlw2bReUN4CLxJEPBGCvKnIEDeNXJTfzrm08p+/vO1YIGcEqpS5VS+5RSB5VSN+d43KmU+ln68SeUUquzHrslff8+pdRry3neQgghZuZ2zG0JtdcfIZnS0wK4ZEU6eApNb+YbD43iVHHwNtPSApddHaL+6ic42pXkBz8wgpt+fxT/k2v5xDvWcNJJ8N73wm23Qd8RJx6HjQMFArgdR4z2JTNVoMLERv2Clahg7IPr3UV3/zBWi2JFTQWJBDz3HHz3u3DjjXDFhT6ivZXGsmILvPrVcPsdKdpu+j9u+mIPN95oZN+y+Vz2ggHciz1+tIZNUwO46tLufwMj01Xjyd8Lzux511LmPXBL0YItoSqlrMA3gVcDXcBTSql7tdbZLaCvB0a01uuVUm8Hvgi8TSm1CXg7xti5VuABpdQGrfXs8/RCCCFKwptpIzK7H83Hho1qwLaayRkpXWEsfUb9AzinBBvWUHozmNeYjtDgNTJJKUeUa681Xqc/EMW37SjXXFLPkV0+fvYzuPVWaGpSnP0xoxL1u9+FaBQ2bICNG2HlSmOpdseRYdwOKyebm/4LqE6PwCq0Dy6ZhGPqL9i3fyf9lgOsqK5j13MWLrgAwumi05oaOPdc2G210jsW4YbL4dJLYSSY4FMvFm4jMh5N5F3C3ZupQM0O4I5O9KcrsTpP/nmomRYiC5CBW2oWcg/cWcBBrfVhAKXUncCVQHYAdyXwyfTtu4FvKGNx+krgTq11FHhJKXUw/Xp/LtO5CyGEmIHLbsGiZp+B6xoxlkinZuAsnjoAIv4Bpi702UIDxg2fEcDVp/ey9QeimUHw/f4I9rogf/t3KTa3GhMfDh6E48fhN4NeHt4/wIH/gR07sr4GF1x1FQyeMcK2VdV88QsWlIKGBqioAKfTaI67fbtx/AMPwJ5ON8EXm7n7TgtP1xiB4IUXGlMQXv966OuDl16CaPRC4ELeeMl9tL/dTUeHkRU86yw480xjWoJSiov+PTapF5w5Ysvryh/AmcdVVUxvxbG320+N206zWY2bTMDYcTiltAUMppoC0xjMdi7rGrw5HxcTFjKAWwEcy/q8C5ga/meO0VonlFJjQF36/senPHdF6U5VCCHEbCml8Dhssy5i6BoJZ3rAZbN5jQAu6h+Y9hxnJH3flAxcdvVmf/p2Y3qMlsViZNo2bID9D3u5++kunns4TnjMzv79ZD5q6pN8r9fPTRd38NXPQGfn5Pf+y7+EH//YuH3FFRAOe4Ez+MIvjftuuMEI4CrSX86WLfCGN6Tfe/d7GXP08ETd56ishK98Zfr3w+gFlyOAy5OBMytL/eF47gCux8/m1qqJzfqBnrL0gDPVeh280O3P+di+vgBVFfZplcJiuoUM4HKVeUxtwpPvmGKea7yAUjcCNwKsWlWev5xCCCEMbqd1Dhm46T3gAGxeo8dbIjB9D1xFLH1fOoAzA4DBrGkMff4IVovKTAPIZlaiHhoY54z2GlpajKAL4OH9w9x6u7H/7ehRY4lzaMgYCB+NgjcrWfTQQxBJxHnH7X/iA5es4doLVlFfbzxmsRhtT7JF77ER3rmDvtr8e75aqlw88dJw5nPz+1loCRXIuQ8ukUzxYm9gUt+zcvWAMxVaQt3XG2Bjs2/JVIIupIUsYugCsv+2tAHd+Y5RStmAKmC4yOcCoLW+VWu9XWu9vaGhYZ5OXQghRDE8DtusG/nm6gEH4Ko0Btong4PTHvPFB4krB7iMyQK1HgdKTc7A9aV7wFly7AszK1EP9k8far/jiFFkcNoqo7VFRcVEY9zNm6G9feLYs8+GV55no6IpiKM2TFubsQybT1/VaVSrICfbe/Me01zlos8fIZUy8hQzZeDMCQaByPQ9eIcGgsQSqcktRDI94NqnHV8KtR4HY+H4tObEWmv29wbY2DTzPkOxsAHcU0CHUmqNUsqBUZRw75Rj7gXelb79VuD32miVfS/w9nSV6hqgA3iyTOcthBCiSB6njdAsixi6RsLTChgAvBUu/LjRwekZuKrEMEF7HWbzM5vVQp3HMWkean8gkndpbkVNBU6bJedIraeODLOppTJvwDSVUoqqCvvMVajAfucmANZHduc9pqXKRSKlGUzPD505gMufgdvbMwbkqECFkveAM5m94KaOG+sZixCIJtjQLAFcMRYsgNNaJ4APAL8DXgB+rrXeo5T6tFLqivRhtwF16SKFDwI3p5+7B/g5RsHD/cDfSgWqEEIsPm6HNRNwFCORTNHrn94DDoy9XcPahwoPT7o/nkxRq0cIOyevstR7J4/T6vdHp43RMlktinUNXl7sDUwaqRVPpnju2CjbZxifNVW1285ooT5waXsjDQzqSupHnst7THN6L6C5D25iCTX3yKfK9L63QHT6++/t9uO0WVhbn9U0eKwTvM1gL0/lZ75mvvt6jeznSRLAFWVBJzFore8D7pty38ezbkeAq/I893PA50p6gkIIIU6I12mjLxCZ+cC0nrHcPeDAqLo8gpfmyMik+8fTg+yjro2T7p86D7U/ECkYiJ3cUskvnunirM8/yPnr6zl/fT0+l41IPFVU/7dsRc1DBY4Oh9ljOYkLu57Ie0z2NIatbcYcVACfM/ew98IZOD8nNfuwWbPyN2XqAWcyA7ihYBSYCNb29RkB3IZGCeCKIaO0hBBClIzbaSM4WPwCSdeI0QdsZa4lVKeNYe2jLTY5gAtEEjSoMYbcjZPub/A6eWnQmHIQTSQZCcVpypOBA/j4GzZx1poaHj04xMP7B/jvZ49nHtvePrsMXI3bTvfozIHr0aEgx7ynwPBtMD4A3ul7tbOnMcDMGbh8AZzWmj3dfl63pXnyE0Y7jakQZVIoA9dS5aLKnTswFZNJACeEEKJkPI7ZVaEeGjD2oOXaA+ewWRhTlThjk2vWAsFxVqlxBj1TArh0Bk5rncnEFWpPUVVh521nruJtZ64ildLs7fHz6MFBFORdes3/Wg725mmVke3ocIixttMhcBscewJOvnzaMbVuBw6rJTOlYDyawGmzTM6iZXHarDhsFvyR6XvMRkPxyQUMqSSMdcHmN83iqzsxZgA3kiOA2yAFDEWTAE4IIUTJzLaI4cEX+lhZW8HKPG01QtZKKuKjk+6LjBoVnMo3ObPU4HMSTaQIRBP0+Y0ArlAGLpvFotiyoootK6qKPvdsNUXsgQtGEwwEoljbtkGnA375frj/lunnAjzsCON82gIvOnl+yuqnAAATpklEQVRfKMZ1tiR8JX/rkT/YwlQ8Y4UXJ1qm+KJxHnXGaXzMBY+ngz+dglSibC1EYGLUWHYrkUQyxcGBcc7vqC/beSx1EsAJIYQoGY/DSjCWQGs9Y28vfyTOYweHeNd57XmPDduqccSjxkB7h5GlS4z2AGCrapl0bINvopnvQHofXkOZGsTWeByEYkmiiSROW+6lzs7h9MSJhhq49F+h6+m8r7dvXz8o+IvVjex/aYhhHaN1dUve43ft6aW6ws45q9PTKxJJfr+7l1qvgxXr6pnUTtXmgJNeP/svco7sVgtVFfZJS6hHhkLEEilpITILEsAJIYQoGY/ThtYQjiczw+3zeejFfmLJFJdO3aOVJeqohjgQHs4EcMmAMQfVUT05oKnPmsYw2wzciTInIIyG4jRV5g7gjg4Z+/NW13lgxQ1w5g15X++enz7Lzq5RHn7TRdz6/afosUZ43ZsuyHv8fx5/lBq3g3PedBYA/3LXTv4ncZz7r3slahGMqaqdMtB+f7qAYaNUoBZtIfvACSGEeJlzOyfmcs7k/t29NPicbFuZv2Ag5kg/FppoJaICxhKqq7Z10rENWdMY+gP5pzCUgrlMOLXXWbYjQ0YGblXd9P1+U7VUuegZi6C1ZjyayDsH1eRz2TKNfJ/tHOGup7t4zyvWLJoZo1MDuBd7A1jUxEQMMTMJ4IQQQpSMN10pGZphHmo4luQP+wZ47eamnJMSTEmXGcBNNPO1hPpJaYW3dsoS6pQMXIM39xSGUqhJV1IWauZ7dChErceRmV1aSHOVi1gixUgoTjCWmLGpcKXLTiCSIJXSfPLePTT6nNz0qo7ZfRElNC0D1xtgdZ0Hlz13tlJMJwGcEEKIkjGXTWcap/XIgQHC8SSv25J/XxeAdqf7sWUFcI7wAMNU4nBMzq5VVdixWxUDgSj9gSiNleUbkF6dycAVCuCCrKqdOfsG2b3gwoxHEnnnoJqMDFyCu54+xs6uMW657KSiJ0mUQ6178jzUfX0BWT6dJQnghBBClIzHDOBmyMD9bncv1W47Z60p3DBXVRib8glP9IJzRgYYVtXTjrVYVGYaQ78/QqOvPPvfwJjEADBSYAn16FCI1UUsn8LkaQzj0eSMwZjPZYzy+rf797G9vYY3nraiyDMvj1qvg5FgDK01kXiSI0NBaSEySxLACSGEKBmz2WyhDFwskeKBF/q45OQm7Hl6m5msXiPA01kD7d2xIUatuQO/Bp+TgfHyZ+Bm2gMXTSTpHguzqs6T8/GpsqcxBKOJzNJ0Pj6XjWgixXAoxiev2DxjBXC51XkcJFIafyTBwf5xtJYChtmSAE4IIUTJmEt9hZr5Pn54CH8kwaWb81efZl6vwsWYdpMMThQx+BJDBGy5A7h6r5Pu0TDDwRhNZczAVTisOG2WvEuoXSNhtKboDFy914nVougaCROOJ4tYQjUygO88a9Wce9mVUvY0hhd7pQJ1LiSAE0IIUTJmoFGoiOH+Pb24Hdaimrh6nTZGtI9EYMC4I5WiMjlC0JH7uQ1eJ4cGjHYd5czAgZGFy1fEYLYQaS8ygLNaFE0+Z2ZSxUxLqNvbazh3bR0fes3GgsctlJqsAG5/XwCHzUJ7kfsBhWHx7GgUQgjxsuNxFF5CTaY0/7unj4tOaiyqAtHnsjGCj0aziCE8gp0EEef0GaJgLKEmUxqApjIHcNVue949cEfTLUTai1xCBaMS9VB/cQHcqSur+emN5xT92uVWNyUD19HozTsaTOQm3y0hhBAlk6lCzbOE+kznCIPj0aKWT8EI4Ia1b6IP3LjRxDdWkScDlzV5oZxFDGAEcGMFAjiPwzqrvnQtVRUcSWfuZlpCXewmllCj7O8NyASGOZAATgghRMk4bBYcVgvBPPNQ79/di8Nq4aKTGnM+PpXXaWcUL5awGcAZTXwT7qacx08K4BbZEmp7nWdWxQXNVS7SycQZG/kudmYAd3gwSK8/wgbZ/zZrEsAJIYQoKbfTmjMDp7Xm/t29XNBRX3SPMjMDZ4saA+1T6TFa2pM7ADQDOGMKQ7mXUB0Fl1BX189uz5dZiQozL6Eudm6HDZfdwuOHjUBcChhmTwI4IYQQJeVx2HL2gdvT7ef4aJjXFph9OpVRxODFlgxBPEx0pBsA5cv9GuY81HqvA2uZpjCYqt12RkNGr7NsyZTm2EiIVbXF738DIwNn8swwV3YpqPM4eb7LCMRlCXX2JIATQghRUh6nlVCOIoYHXujDouCSk3Mvf+ZS6bIzQvqXfWiYxFgvQe3E7c3dKsPMwJVriH22GredREpPWz7uHg0TT+qiW4iYsjNwviW+hArGMmpKG19L9tcmiiMBnBBCiJJyO2w5h9k/2znKhiZfZj9UMTxOq1HEABAeJhXopV9X5w1oPA4rFXYrjb7yLp/CxDitkeDkfXCdw8UPsc9mTmOApV/EABOtRDY2+RZdo+GlQAI4IYQQJeV12ghNyUJprdnVNcrWttk1mbVZLYSt6eeEhlDj/fRTk2lcO5VSilesr+fsNXVzOvcTkW8ag1lJunoWLUQAGn1OzDjHM8MkhqXArMCV/W9zs/RDeCGEEIua22FlcDw66b6ukTAjoThb26bPMJ1JzFkNCSA0jDXUx4BuZGWBJcXvvWv7rN9jPkzMQ52SgRsK4bBZaJ7lsq7daqHB62Q0FMdpW/oBXK0EcCdEMnBCCCFKyuu0TWvk+9wxY/P6aStnH8DFnTXGjdAQjvAAAwWWUBeSWUDxjd8f5NEDg5lihiNDQVbVurHMoaiipcr1ssi+wUQAJ0Ps50YCOCGEECVltBGZvIS6q2sUh80yp+yLdqUDOP9x7InxdACXewl1Ia2p9/Cx15/M4cEg19z2BK/72h+5++kuDg8E5zw2qrW6gsqKxfe1zsWWFVU0V7rY1Fq50KeyJC2+/7IIIYR4WfE4bdP6wO3sGmNTSyX2OYxPcldUEFQePP0vANDP4szAAdxwwVquOaede3d2c9sfX+LDd+0E4IKO3KO/ZvLBV29gcDx3c+Cl5sINDTz+/1610KexZC3Ov/FCCCFeNjwOG9FEikQyhc1qIZnS7D4+xlVntM3p9bxOG2PKh6d/LwAjqqaoOaoLxWW3cvX2lVx1RhuPHhzkF093ccVprXN6rY4mHx3Fd10RL2MSwAkhhCgpd2agfZKqCgsH+8cJxZKcOof9b2CMkRrRPlpHDxiv68g9B3WxUUpxQUfDnLNvQmSTPXBCCCFKyhz7ZDbz3Znuvj+XClQwx2l5M59HXUsjgBNiPkkAJ4QQoqTc6QDO3Ae3q2sUn9PG2vrZ9UEz+Zw2BpLGc5NYSLrK3+NNiIUmAZwQQoiS8qbbXpiVqDuPjXFKW9Wc2mgA+Fz2zDSGUUsN3oriJzkI8XIhAZwQQoiScqcHrwdjCaKJJC/2+ue8fAoTe+AAhhdxBaoQpbQgAZxSqlYp9X9KqQPpP2tyHHOaUurPSqk9SqldSqm3ZT32faXUS0qp59Ifp5X3KxBCCFEsjxnARZO80BMgntScOssRWtm8TltmoL3RQuTl0RdNiNlYqAzczcCDWusO4MH051OFgGu11puBS4GvKqWy/8v2Ea31aemP50p/ykIIIebCnBwQiiXYZRYwzLECFYwihpF0EUNvsipTJCHEcrJQAdyVwA/St38AvHHqAVrr/VrrA+nb3UA/ILXXQgixxHjSAdZ4NMFzx0ap9zpprZrdHNBsPtdEBq47WUmlLKGKZWihArgmrXUPQPrPxkIHK6XOAhzAoay7P5deWv2KUspZ4Lk3KqV2KKV2DAwMzMe5CyGEmAUzgAtFk+zqGuPUtiqUmlsBA4DXOVHE0L9Ix2gJUWolC+CUUg8opXbn+Lhylq/TAvwIeLfWOpW++xbgJOBMoBb453zP11rfqrXerrXe3tAgCTwhhCg3d3pKQn8gwqGB8RMqYAAjA3dYt7Cr6Y08lNomRQxiWSrZ33qt9SX5HlNK9SmlWrTWPekArT/PcZXAb4CPaa0fz3rtnvTNqFLqDuDD83jqQggh5pHFonA7rDx+eBit4dSVcy9gAKMKNYGNH9V/kK6jXZKBE8vSQi2h3gu8K337XcAvpx6glHIA/w38UGt915THWtJ/Koz9c7tLerZCCCFOiNthY3f3GDD3CQwms6q1eywMIBk4sSwtVAD3BeDVSqkDwKvTn6OU2q6U+l76mKuBVwLX5WgX8l9KqeeB54F64LPlPX0hhBCz4XFa0RpW1lZQ6zmxxrtWi8LrtNEzGgEkgBPL04L8rddaDwGvynH/DuCG9O0fAz/O8/yLS3qCQggh5pWZNTvR7JvJ67RlZeBkCVUsPzKJQQghRMmZveBOm6cAzueyEYkbdW3SRkQsRxLACSGEKDmzlcjWE5jAkM2bFbRJBk4sRxLACSGEKDmPw4ZFwZYV8xTApQNCm0XhssuvMrH8SN5ZCCFEyZ3RXgNqIhN3oirTWTefy3ZCTYGFWKokgBNCCFFy7zl/De9hzby9npmBk+VTsVxJ3lkIIcSSY+6BkxYiYrmSAE4IIcSS45MATixzEsAJIYRYcmQJVSx3EsAJIYRYciQDJ5Y7CeCEEEIsOWbmzTdPVa1CLDUSwAkhhFhyZAlVLHcSwAkhhFhyZAlVLHcSwAkhhFhyJgI4ycCJ5UkCOCGEEEvO6joP157bzoUbGxb6VIRYEJJ7FkIIseTYrBY+feWWhT4NIRaMZOCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYCeCEEEIIIZYYpbVe6HMoG6XUAHC0xG9TDwyW+D3E3Mi1WZzkuixecm0WJ7kui9d8X5t2rXVDrgeWVQBXDkqpHVrr7Qt9HmI6uTaLk1yXxUuuzeIk12XxKue1kSVUIYQQQoglRgI4IYQQQoglRgK4+XfrQp+AyEuuzeIk12XxkmuzOMl1WbzKdm1kD5wQQgghxBIjGTghhBBCiCVGArg5UkpdqpTap5Q6qJS6OcfjTqXUz9KPP6GUWl3+s1x+irguH1RK7VVK7VJKPaiUal+I81yOZro2Wce9VSmllVJSZVcGxVwXpdTV6X83e5RSPyn3OS5XRfw8W6WUekgp9Wz6Z9plC3Gey41S6nalVL9Saneex5VS6uvp67ZLKXV6Kc5DArg5UEpZgW8CrwM2Ae9QSm2actj1wIjWej3wFeCL5T3L5afI6/IssF1rvRW4G/i38p7l8lTktUEp5QP+DniivGe4PBVzXZRSHcAtwCu01puBfyj7iS5DRf6b+Rjwc631NuDtwH+W9yyXre8DlxZ4/HVAR/rjRuBbpTgJCeDm5izgoNb6sNY6BtwJXDnlmCuBH6Rv3w28SimlyniOy9GM10Vr/ZDWOpT+9HGgrcznuFwV828G4DMYQXWknCe3jBVzXf4a+KbWegRAa91f5nNcroq5NhqoTN+uArrLeH7Lltb6EWC4wCFXAj/UhseBaqVUy3yfhwRwc7MCOJb1eVf6vpzHaK0TwBhQV5azW76KuS7Zrgd+W9IzEqYZr41SahuwUmv963Ke2DJXzL+ZDcAGpdRjSqnHlVKFMg9i/hRzbT4JXKOU6gLuA24qz6mJGcz2d9Gc2Ob7BZeJXJm0qeW8xRwj5lfR33Ol1DXAduDCkp6RMBW8NkopC8ZWg+vKdUICKO7fjA1jKegvMDLWf1RKbdFaj5b43Ja7Yq7NO4Dva63/Qyl1LvCj9LVJlf70RAFl+f0vGbi56QJWZn3exvTUdeYYpZQNI71dKOUqTlwx1wWl1CXAR4ErtNbRMp3bcjfTtfEBW4A/KKWOAOcA90ohQ8kV+7Psl1rruNb6JWAfRkAnSquYa3M98HMArfWfARfGLE6xsIr6XXSiJICbm6eADqXUGqWUA2Pz6L1TjrkXeFf69luB32tpuldqM16X9DLddzCCN9nLUz4Fr43WekxrXa+1Xq21Xo2xP/EKrfWOhTndZaOYn2X/A1wEoJSqx1hSPVzWs1yeirk2ncCrAJRSJ2MEcANlPUuRy73Atelq1HOAMa11z3y/iSyhzoHWOqGU+gDwO8AK3K613qOU+jSwQ2t9L3AbRjr7IEbm7e0Ld8bLQ5HX5UuAF7grXVPSqbW+YsFOepko8tqIMivyuvwOeI1Sai+QBD6itR5auLNeHoq8Nh8CvquU+keMJbrrJFFQekqpn2JsKahP7z/8BGAH0Fp/G2M/4mXAQSAEvLsk5yHXWgghhBBiaZElVCGEEEKIJUYCOCGEEEKIJUYCOCGEEEKIJUYCOCGEEEKIJUYCOCGEEEKIJUYCOCGEEEKIJUYCOCGEEEKIJUYCOCGEmAOl1JlKqV1KKZdSyqOU2qOU2rLQ5yWEWB6kka8QQsyRUuqzGOOLKoAurfW/LvApCSGWCQnghBBijtIzKp8CIsB5WuvkAp+SEGKZkCVUIYSYu1qM2bo+jEycEEKUhWTghBBijpRS9wJ3AmuAFq31Bxb4lIQQy4RtoU9ACCGWIqXUtUBCa/0TpZQV+JNS6mKt9e8X+tyEEC9/koETQgghhFhiZA+cEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQSIwGcEEIIIcQS8/8DV+OnLHF/ftgAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred_cv_regressor_6, label='DML Polynomial Features with Grid Search Regressor')\\n\",\n    \"plt.plot(X_test, te_pred_aml_regressor_6, label='DML Polynomial Features with AML Regressor')\\n\",\n    \"expected_te = np.array([te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.ylim(-0.5, 1.5)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Automated ML for Metalearners\\n\",\n    \"\\n\",\n    \"### DGP\\n\",\n    \"\\n\",\n    \"We use the Response Surface B from [Hill (2011)](https://www.tandfonline.com/doi/pdf/10.1198/jcgs.2010.08162) to generate sythetic outcome surfaces from real-world covariates and treatment assignments (Infant Health Development Program data). Since the original data was part of a randomized trial, a subset of the treated infants (those with non-white mothers) has been removed from the data in order to mimic the observational data setting. For more details, see [Hill (2011)](https://www.tandfonline.com/doi/pdf/10.1198/jcgs.2010.08162).\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"$\\n\",\n    \"Y(0) = e^{(X+W)\\\\beta} + \\\\epsilon_0, \\\\;\\\\epsilon_0 \\\\sim N(0, 1)\\\\\\\\\\n\",\n    \"Y(1) = X\\\\beta - \\\\omega + \\\\epsilon_1, \\\\;\\\\epsilon_1 \\\\sim N(0, 1)\\\\\\\\\\n\",\n    \"$\\n\",\n    \"\\n\",\n    \"where $X$ is a covariate matrix, $W$ is a constant matrix with entries equal to $0.5$ and $w$ is a constant calculated such that the CATT equals $4$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 60,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.metalearners import TLearner, SLearner, DomainAdaptationLearner\\n\",\n    \"from econml.data.dgps import ihdp_surface_B\\n\",\n    \"Y, T, X, expected_te = ihdp_surface_B()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate T learner\\n\",\n    \"T_learner_rf = TLearner(grid_search_reg())\\n\",\n    \"# Train T_learner\\n\",\n    \"T_learner_rf.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"T_te_rf = T_learner_rf.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment models_20_01_27-12_04_27 has started.\\n\",\n      \"Experiment models_20_01_27-12_04_27 completed.\\n\",\n      \"Experiment models_20_01_27-12_06_04 has started.\\n\",\n      \"Experiment models_20_01_27-12_06_04 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Instantiate T learner\\n\",\n    \"AutomatedTLearner =  addAutomatedML(TLearner)\\n\",\n    \"T_learner_aml = AutomatedTLearner(models = automl_config_reg)\\n\",\n    \"# Train T_learner\\n\",\n    \"T_learner_aml.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"T_te_aml = T_learner_aml.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"plt.violinplot([np.abs(T_te_rf - expected_te),\\n\",\n    \"                np.abs(T_te_aml - expected_te)\\n\",\n    \"               ], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks([1, 2], ['Grid Search', 'AutoML'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# S Learner\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate S learner\\n\",\n    \"overall_model = grid_search_reg()\\n\",\n    \"S_learner_rf = SLearner(overall_model)\\n\",\n    \"# Train S_learner\\n\",\n    \"S_learner_rf.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"S_te_rf = S_learner_rf.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment overall_model_20_01_27-12_16_18 has started.\\n\",\n      \"Experiment overall_model_20_01_27-12_16_18 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Instantiate S learner\\n\",\n    \"AutomatedSLearner =  addAutomatedML(SLearner)\\n\",\n    \"S_learner_aml = AutomatedSLearner(overall_model= automl_config_reg)\\n\",\n    \"# Train S_learner\\n\",\n    \"S_learner_aml.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"S_te_aml = S_learner_aml.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"plt.violinplot([np.abs(S_te_rf - expected_te),\\n\",\n    \"                np.abs(S_te_aml - expected_te)\\n\",\n    \"               ], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks([1, 2], ['Grid Search', 'AutoML'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Domain Adaptation Learner\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"models = grid_search_reg()\\n\",\n    \"final_models = grid_search_reg()\\n\",\n    \"DA_learner_rf = DomainAdaptationLearner(models=models, final_models=final_models)\\n\",\n    \"# Train DA_learner\\n\",\n    \"DA_learner_rf.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"DA_rf_te = DA_learner_rf.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 57,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment models_20_01_27-13_19_40 has started.\\n\",\n      \"Experiment models_20_01_27-13_19_40 completed.\\n\",\n      \"Experiment models_20_01_27-13_21_20 has started.\\n\",\n      \"Experiment models_20_01_27-13_21_20 completed.\\n\",\n      \"Experiment final_models_20_01_27-13_23_01 has started.\\n\",\n      \"Experiment final_models_20_01_27-13_23_01 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"models = automl_config_reg\\n\",\n    \"final_models = automl_config_reg\\n\",\n    \"AutomatedDomainAdaptationLearner =  addAutomatedML(DomainAdaptationLearner)\\n\",\n    \"DA_learner_aml = AutomatedDomainAdaptationLearner(models=models, final_models=final_models)\\n\",\n    \"# Train X_learner\\n\",\n    \"DA_learner_aml.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"DA_te_aml = DA_learner_aml.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 61,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"plt.violinplot([np.abs(DA_rf_te - expected_te),\\n\",\n    \"                np.abs(DA_te_aml - expected_te)\\n\",\n    \"               ], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks([1, 2], ['Grid Search', 'AutoML'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 71,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_t_20_01_27-17_24_47 has started.\\n\",\n      \"Experiment model_t_20_01_27-17_24_47 completed.\\n\",\n      \"Experiment model_y_20_01_27-17_27_27 has started.\\n\",\n      \"Experiment model_y_20_01_27-17_27_27 completed.\\n\",\n      \"Experiment model_t_20_01_27-17_29_51 has started.\\n\",\n      \"Experiment model_t_20_01_27-17_29_51 completed.\\n\",\n      \"Experiment model_y_20_01_27-17_32_20 has started.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING - Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', OSError(\\\"(10054, 'WSAECONNRESET')\\\",))': /azureml/ExperimentRun/dcid.AutoML_ddd4742b-4d4c-46bc-b036-e42e9a60b9a1_2/outputs/scoring_file_v_1_0_0.py?sv=2019-02-02&sr=b&sig=Z%2FSYw75Z5M38OuM6L4l3run1WpF%2BB6tr5%2FIdiJkJumM%3D&st=2020-01-27T22%3A24%3A24Z&se=2020-01-28T22%3A34%3A24Z&sp=rcw&comp=block&blockid=TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQXdNREF3TURBd01EQSUzRA%3D%3D&timeout=30\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Experiment model_y_20_01_27-17_32_20 completed.\\n\",\n      \"Experiment model_final_20_01_27-17_34_55 has started.\\n\",\n      \"Experiment model_final_20_01_27-17_34_55 completed.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"Y, T, X, _ = ihdp_surface_B()\\n\",\n    \"est = AutomatedNonParamDML(model_y=automl_config_reg,\\n\",\n    \"                           model_t=automl_config_clf,\\n\",\n    \"                           model_final=automl_config_reg, featurizer=None,\\n\",\n    \"                           discrete_treatment=True)\\n\",\n    \"est.fit(Y, T, X=X)\\n\",\n    \"_ = est.effect(X)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"authors\": [\n   {\n    \"name\": \"anumamah\"\n   }\n  ],\n  \"category\": \"tutorial\",\n  \"compute\": [\n   \"AML\"\n  ],\n  \"datasets\": [\n   \"Bankmarketing\"\n  ],\n  \"deployment\": [\n   \"ACI\"\n  ],\n  \"exclude_from_index\": false,\n  \"framework\": [\n   \"None\"\n  ],\n  \"friendly_name\": \"Automated ML run with basic edition features.\",\n  \"index_order\": 5,\n  \"kernelspec\": {\n   \"display_name\": \"Python (azure_automl)\",\n   \"language\": \"python\",\n   \"name\": \"azure_automl\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.7\"\n  },\n  \"tags\": [\n   \"featurization\",\n   \"explainability\",\n   \"remote_run\",\n   \"AutomatedML\"\n  ],\n  \"task\": \"Classification\"\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/CATE validation.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    },\n    \"pycharm\": {\n     \"name\": \"#%%\\n\"\n    },\n    \"scrolled\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"import scipy.stats as st\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"from econml.metalearners import TLearner\\n\",\n    \"from econml.dml import DML\\n\",\n    \"\\n\",\n    \"from econml.validate.drtester import DRTester\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    },\n    \"pycharm\": {\n     \"name\": \"#%% md\\n\"\n    }\n   },\n   \"source\": [\n    \"## Generate Data\\n\",\n    \"\\n\",\n    \"Setting with 5 continuous covariates, 2 categorical treatments (and a control), and a continous outcome. Treatment assignment is based on the covariates and random noise. The outcome is based on covariates, treatment, and random noise. For the second treatment, the effect is conditional on the second covariate (X[:, 1]).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"N = 20000  # number of units\\n\",\n    \"K = 5  # number of covariates\\n\",\n    \"num_treatments = 2 # number of treatments (excluding control)\\n\",\n    \"\\n\",\n    \"# Generate random Xs\\n\",\n    \"X_mu = np.zeros(5)  # Means of Xs\\n\",\n    \"# Random covariance matrix of Xs\\n\",\n    \"X_sig = np.diag(np.random.rand(5))\\n\",\n    \"X = st.multivariate_normal(X_mu, X_sig).rvs(N)\\n\",\n    \"\\n\",\n    \"# Effect of Xs on outcome\\n\",\n    \"X_beta = np.random.uniform(0, 5, K)\\n\",\n    \"# Effect of treatment on outcomes\\n\",\n    \"D_beta = np.array([0, 1, 2])\\n\",\n    \"# Effect of treatment on outcome conditional on X1\\n\",\n    \"DX1_beta = np.array([0, 0, 3])\\n\",\n    \"\\n\",\n    \"# Generate treatments based on X and random noise\\n\",\n    \"beta_treat = np.random.uniform(-1, 1, (num_treatments + 1, K))\\n\",\n    \"D1 = np.zeros((N, num_treatments + 1))\\n\",\n    \"for k in range(num_treatments + 1):\\n\",\n    \"    D1[:, k] = X @ beta_treat[k, :] + np.random.gumbel(0, 1, N)\\n\",\n    \"D = np.array([np.where(D1[i, :] == np.max(D1[i, :]))[0][0] for i in range(N)])\\n\",\n    \"D_dum = pd.get_dummies(D)\\n\",\n    \"\\n\",\n    \"# Generate Y (based on X, D, and random noise)\\n\",\n    \"Y_sig = 1  # Variance of random outcome noise\\n\",\n    \"Y = X @ X_beta + (D_dum @ D_beta) + X[:, 1] * (D_dum @ DX1_beta) + np.random.normal(0, Y_sig, N)\\n\",\n    \"Y = Y.to_numpy()\\n\",\n    \"\\n\",\n    \"# Split into training/validation samples\\n\",\n    \"train_prop = .5\\n\",\n    \"train_N = np.ceil(train_prop * N)\\n\",\n    \"ind = np.array(range(N))\\n\",\n    \"train_ind = np.random.choice(N, int(train_N), replace=False)\\n\",\n    \"val_ind = ind[~np.isin(ind, train_ind)]\\n\",\n    \"\\n\",\n    \"Xtrain, Dtrain, Ytrain = X[train_ind], D[train_ind], Y[train_ind]\\n\",\n    \"Xval, Dval, Yval = X[val_ind], D[val_ind], Y[val_ind]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    },\n    \"pycharm\": {\n     \"name\": \"#%% md\\n\"\n    }\n   },\n   \"source\": [\n    \"## Validation\\n\",\n    \"We use a simple (un-tuned) random forest classifier to predict treatment and an un-tuned gradient boosted regressor to predict outcomes. In the true data, there is heterogeneity by the second covariate (X[:, 1]) for the second treatment (D = 2) but not for the first (D = 1). Therefore, we should see a more significant blp_est, more significant qini coefficient, and higher calibration r-squared for the second treatment. We can also plot the calibration for each treatment. There should be a strong positive relationship for treatment 2 but a flat relationship for treatment 1.\\n\",\n    \"\\n\",\n    \"We test two CATE models: a double machine learning (DML) estimator and a simple T-learner.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"model_regression = GradientBoostingRegressor(random_state=0)\\n\",\n    \"model_propensity = RandomForestClassifier(random_state=0)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"The final model has a nonzero intercept for at least one outcome; it will be subtracted, but consider fitting a model without an intercept if possible.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.DML at 0x7f7b4836cd00>\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est_t = TLearner(models=model_regression)\\n\",\n    \"est_dm = DML(model_y=model_regression, model_t=model_propensity, model_final=model_regression, discrete_treatment=True)\\n\",\n    \"\\n\",\n    \"est_t.fit(Ytrain, Dtrain, X=Xtrain)\\n\",\n    \"est_dm.fit(Ytrain, Dtrain, X=Xtrain)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### DML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>treatment</th>\\n\",\n       \"      <th>blp_est</th>\\n\",\n       \"      <th>blp_se</th>\\n\",\n       \"      <th>blp_pval</th>\\n\",\n       \"      <th>qini_est</th>\\n\",\n       \"      <th>qini_se</th>\\n\",\n       \"      <th>qini_pval</th>\\n\",\n       \"      <th>autoc_est</th>\\n\",\n       \"      <th>autoc_se</th>\\n\",\n       \"      <th>autoc_pval</th>\\n\",\n       \"      <th>cal_r_squared</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.044</td>\\n\",\n       \"      <td>0.238</td>\\n\",\n       \"      <td>0.854</td>\\n\",\n       \"      <td>-0.009</td>\\n\",\n       \"      <td>0.023</td>\\n\",\n       \"      <td>0.352</td>\\n\",\n       \"      <td>-0.011</td>\\n\",\n       \"      <td>0.054</td>\\n\",\n       \"      <td>0.42</td>\\n\",\n       \"      <td>-9.922</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>1.032</td>\\n\",\n       \"      <td>0.062</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.373</td>\\n\",\n       \"      <td>0.024</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.049</td>\\n\",\n       \"      <td>0.058</td>\\n\",\n       \"      <td>0.00</td>\\n\",\n       \"      <td>-0.090</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   treatment  blp_est  blp_se  blp_pval  qini_est  qini_se  qini_pval  \\\\\\n\",\n       \"0          1    0.044   0.238     0.854    -0.009    0.023      0.352   \\n\",\n       \"1          2    1.032   0.062     0.000     0.373    0.024      0.000   \\n\",\n       \"\\n\",\n       \"   autoc_est  autoc_se  autoc_pval  cal_r_squared  \\n\",\n       \"0     -0.011     0.054        0.42         -9.922  \\n\",\n       \"1      1.049     0.058        0.00         -0.090  \"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Initialize DRTester and fit/predict nuisance models\\n\",\n    \"dml_tester = DRTester(\\n\",\n    \"    model_regression=model_regression,\\n\",\n    \"    model_propensity=model_propensity,\\n\",\n    \"    cate=est_dm\\n\",\n    \").fit_nuisance(Xval, Dval, Yval, Xtrain, Dtrain, Ytrain)\\n\",\n    \"\\n\",\n    \"res_dml = dml_tester.evaluate_all(Xval, Xtrain)\\n\",\n    \"res_dml.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Calibration R^2 = -9.922'}, xlabel='Group Mean CATE', ylabel='GATE'>\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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JSUZSeZf//qXQ/tnn31mJBkfH58CH3/GjBlGknnjjTcK7JeRkWFatWplgoKCcr024HrM3MDlKlSooNtvv92h7aOPPlKdOnVUv359hxmJDh062O+w6tixoyQpMTFRY8aM0VdffeUwzSv9cbfCLbfcUqg6OnXq5PCfYFxcnCSpc+fODv1y2g8ePKg6depo9erVyszMVJ8+fRxq9fPzU8uWLZWQkOCwv81mU9euXR3a4uPj7f/dFtW2bdsK1S82NvaqHqekLFmyRBMnTtS3337rcCoyv/+oC+Pee+91WO/Ro4f69u2rhIQEh23x8fG5ZjIk173WLvf555+rTZs2ioqKcmjv16+fPvnkE23evFl33HGHvb1bt24O/XJO5f3yyy9q0qTJFR/vz33i4uL0/vvvy8vL9b/eT506pU6dOskYo8WLFxdqpmX69OlKTU29Yr+wsLACt2dnZzvcfWez2eTp6amQkBDde++9mj9/vv7yl7/ob3/7m3799Vc9/PDD8vT0VFZWVoF11qtXTy1atNDLL7+smjVrql27dtq1a5cGDhwoT0/PAvf95JNP9Pjjj6t79+4aNGhQvv2MMerfv7++/PJLLVu2LNdrA65HuIHLRURE5Go7evSo9u7d63Cq4HI5t/QePHhQt912m2rWrKk33nhDMTEx8vPz09atW/X444/r999/L3QdISEhDus+Pj4Ftl+8eNFeqyT95S9/yfO4f/5lFxAQkOsPtK+vr/14RVW/fv1C9SvKqYurdf3110v63ymQK1m+fLl69Oihv/3tb3rmmWdUuXJleXl5adq0afbTP0VRuXJlh3UvLy+Fhobq5MmTDu15vSZd+Vq73MmTJ/N8vMjISPv2y/35mpac0yOFffz58+crLi5OqampWrx4saZPn65evXrpk08+KUr5+Tp9+rTatWun3377TZ9//rmqVatWqP2qV69e6NNSBRk/frz9WilJio6O1oEDByRJ06ZNkzFGjz32mAYOHCgPDw/df//9qlSpklavXp3ndUOXW7Jkifr166cePXpI+uN3wtChQ7Vu3bp8b3lfvXq17rnnHrVr104LFy7M99SwMUYDBgzQ22+/rXnz5unOO+8ssBa4BuEGLpfXD3lYWJj8/f3z/UOW81/bypUrdeHCBS1fvlzR0dH27UlJScVSa0G1LF261KGGkpZfEPyzOXPmlOjFyZLUunVreXt7a+XKlRo4cOAV+7/99tuKjY3V4sWLHV4fORddF1VKSoqqVKliX8/MzNTJkydz/THL6zVZXK+10NBQHTlyJFf74cOHJV15hsJZcXFx9ouIW7duraysLM2cOVNLly5V9+7dXfIYp0+fVtu2bZWcnKzPPvvMPrtUGG3atNEXX3xxxX59+/bN86LxHA8//LD9Il/J8RqZwMBALViwQJMmTdKhQ4cUGRmpsLAw1apVS82aNbviLFZ4eLhWrVqlY8eOKSUlRdHR0fL399fUqVPzfA5Xr16tu+66Sy1bttSyZcvs/yD9WU6wmTNnjmbNmqX77rvvCs8CXIVwgxLRpUsXPf/88woNDS3wNErOH6HLf3EZYzRjxoxcfX19fYv833VBOnToIC8vL+3bt09//etfXXJMZ/8bl0r3aanKlStrwIABmjZtmubPn5/nBcH79u3ThQsXFB8fL5vNJh8fH4eQkZKSUqi7pQqycOFCNWzY0L7+3nvvKTMzU61atbrivsX1WmvTpo1WrFihw4cP22drpD9mWAICAgp1qulqTJgwQcuWLdPo0aN1zz33XPWdcjnBZv/+/Vq7dq0aNGjg1P6uOi0VGRnp8HzmpUKFCqpQoYIk6YMPPtBPP/2kl156qdC1hoeH2y8KnjRpki5cuKAnnnjCoc+aNWt011136dZbb9XKlSvzvJBZ+uO19NBDD2nOnDmaPn26HnjggULXgatHuEGJePLJJ7Vs2TK1aNFCQ4cOVXx8vLKzs3Xw4EGtWbNGTz31lG655Ra1a9dOPj4+6tWrl4YPH66LFy9q2rRpud4pVJLq1q2r5cuXa9q0aWrYsKE8PDzs/8FejZiYGI0fP17PPvus9u/frzvuuEMVKlTQ0aNHtXXrVgUGBjpMjxdG+fLlFR0drffff19t2rRRSEiIwsLCCnynYFeMJceuXbu0a9cuSX+EirS0NPu7qtauXdvh7i+bzaaWLVte8d2UX3vtNe3fv1/9+vXT6tWrdffdd6tSpUo6ceKE1q5dqzlz5ujdd99VfHy8/Vbsxx57TN27d9ehQ4f0r3/9SxEREVf1jq3Lly+Xl5eX2rVrZ79bql69evbTCwUprtfamDFj9NFHH6l169YaPXq0QkJCtHDhQn388ceaMGGCgoODizzewqhQoYJGjhyp4cOHa9GiRVc1W/D777/b3wJh4sSJyszM1JYtW+zbK1asqBtuuKHAY9SsWbPIj19Yy5Yt0+HDhxUXF6eLFy9q/fr1euONNzRw4MBcp4GqV68uSdq7d6+9LSfQ3nDDDTpz5ow++eQTzZo1S88//7xuvvlme7+NGzfqrrvuUuXKlTVq1Khcs3y1a9dWUFCQJGnw4MGaNWuWHnzwQdWtW9fhefP19XU6JMJJbruUGWVefndL3XTTTXn2P3/+vHnuuedMzZo1jY+PjwkODjZ169Y1Q4cONSkpKfZ+H374oalXr57x8/MzVapUMc8884z55JNPjCSTkJBg73fq1CnTvXt3c9111xmbzWZyXs45d9e8/PLLDo+fc3fKkiVLHNrzezO0lStXmtatW5ugoCDj6+troqOjTffu3c26desKfA6M+d/dPJdbt26dadCggfH19b2qu0OKIqeevJbL7/RJTU01kkzPnj0LddzMzEwzb948c/vtt5uQkBDj5eVlKlasaDp27GgWLVrkcDfNiy++aGJiYoyvr6+Ji4szM2bMyPN5cuZuqR07dpiuXbuacuXKmfLly5tevXrlevO06Oho07lz5zzrv9rXmjG575Yyxpjvv//edO3a1QQHBxsfHx9Tr169XHe15fd6zGu8ecnvdWvMH+8eff3115sbb7zRZGZmFnicguTUkt9Skq/hgqxYscLUr1/fBAYGGn9/f9OoUSMza9asPN9wLzo6Otedb9OnTzdxcXEmICDAlCtXztx22215vrt2QT9Hf37NREdH59uvtL0hpBXZjCnElV4ArgmrVq1Sly5d9O2336pu3bruLgcAioR3KAZgl5CQoJ49exJsAJRpzNwAAABLYeYGAABYCuEGAABYCuEGAABYCuEGAABYyjX3Jn7Z2dk6fPiwypcvn+9ngQAAgNLFGKPU1FRFRkZe8Z23r7lwc/jwYT6RFQCAMurQoUOqWrVqgX2uuXBTvnx5SX88OTlvkw0AAEq3c+fOKSoqyv53vCDXXLjJORUVFBREuAEAoIwpzCUlXFAMAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXDjImmXMhUz4mPFjPhYaZcy3V0OAADXLMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFLeGmw0bNqhr166KjIyUzWbTypUrC73vV199JS8vL9WvX7/Y6gMAAGWPW8PNhQsXVK9ePU2ePNmp/c6ePas+ffqoTZs2xVQZAAAoq7zc+eAdO3ZUx44dnd7vkUceUe/eveXp6enUbA8AALC+MnfNzZw5c7Rv3z6NGTOmUP3T09N17tw5hwUAAFhXmQo3P//8s0aMGKGFCxfKy6twk04vvPCCgoOD7UtUVFQxVwkAANypzISbrKws9e7dW+PGjVONGjUKvd/IkSN19uxZ+3Lo0KFirBIAALibW6+5cUZqaqq2b9+uxMREPfHEE5Kk7OxsGWPk5eWlNWvW6Pbbb8+1n6+vr3x9fUu6XAAA4CZlJtwEBQXp+++/d2ibOnWqPv/8cy1dulSxsbFuqgwAAJQmbg0358+f1969e+3rycnJSkpKUkhIiK6//nqNHDlSv/32m+bPny8PDw/VqVPHYf/w8HD5+fnlagcAANcut4ab7du3q3Xr1vb1YcOGSZL69u2ruXPn6siRIzp48KC7ygMAAGWQzRhj3F1ESTp37pyCg4N19uxZBQUFuey4aZcyVXv0aknSrvEdFOBTZs74AQBQ6jnz97vM3C0FAABQGIQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKYQbAABgKW4NNxs2bFDXrl0VGRkpm82mlStXFth/+fLlateunSpWrKigoCA1bdpUq1evLpliAQBAmeDWcHPhwgXVq1dPkydPLlT/DRs2qF27dlq1apV27Nih1q1bq2vXrkpMTCzmSgEAQFnh5c4H79ixozp27Fjo/hMnTnRYf/755/X+++/rww8/VIMGDVxcHQAAKIvcGm6uVnZ2tlJTUxUSEpJvn/T0dKWnp9vXz507VxKlAQAANynTFxS/+uqrunDhgnr06JFvnxdeeEHBwcH2JSoqqgQrBAAAJa3Mhpt33nlHY8eO1eLFixUeHp5vv5EjR+rs2bP25dChQyVYJQAAKGll8rTU4sWL1b9/fy1ZskRt27YtsK+vr698fX1LqDIAAOBuZW7m5p133lG/fv20aNEide7c2d3lAACAUsatMzfnz5/X3r177evJyclKSkpSSEiIrr/+eo0cOVK//fab5s+fL+mPYNOnTx+98cYbatKkiVJSUiRJ/v7+Cg4OdssYAABA6eLWmZvt27erQYMG9tu4hw0bpgYNGmj06NGSpCNHjujgwYP2/tOnT1dmZqYef/xxRURE2JchQ4a4pX4AAFD6uHXmplWrVjLG5Lt97ty5Duvr168v3oIAAECZV+auuQEAACgI4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYohdIuZSpmxMeKGfGx0i5lurscAChTCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSnAo3EyZM0O+//25f37Bhg9LT0+3rqampeuyxx1xXHQAAgJOcCjcjR45Uamqqfb1Lly767bff7OtpaWmaPn2666oDAABwklPhxhhT4DoAAIC7cc0NAACwFMINAABwidLyob9ezu4wc+ZMlStXTpKUmZmp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0AcAJaJDhw6matWq5vz583luz87Otn8tyUybNs1069bNBAQEmNGjRxtjjJk6daqpVq2a8fb2NjVq1DDz58+375OcnGwkmcTERHvb6dOnjSSTkJBgjDEmISHBSDIfffSRiY+PN76+vqZx48bmu+++K7D26OhoM2LECOPr62sOHjxob3/ooYfMoEGDTHBwsMPnt505c8Y89NBDpmLFiqZ8+fKmdevWJikpyb597969plu3biY8PNwEBgaaRo0ambVr1+Z6zP/85z/mgQceMOXKlTNRUVFm+vTpBdbZsWNHU6VKlTyf4z9/5tz69etNlSpVzKVLl0xkZKTDZ/XkyHm+/rxvTn2vv/56gfUAMIbTUoBFnTx5UmvWrNHjjz+e7yyHzWZzWB8zZozuvPNOff/993rwwQe1YsUKDRkyRE899ZR27typRx55RA888IASEhKcrueZZ57RK6+8om3btik8PFzdunVTRkZGgftUqlRJHTp00Lx58yRJaWlpWrx4sR588EGHfsYYde7cWSkpKVq1apV27Nihm2++WW3atNGpU6ckSefPn1enTp20bt06JSYmqkOHDuratasOHjzocKxXX31VjRo1UmJioh577DE9+uijuWZfcpw6dUqffvppvs/xdddd57A+a9Ys9erVS97e3urVq5dmzZpV4PgBFJG70xWA4rFlyxYjySxfvtyhPTQ01AQGBprAwEAzfPhwe7sk8+STTzr0bdasmXnooYcc2v72t7+ZTp06GWOcm7l599137X1Onjxp/P39zeLFi/OtP2eWYuXKleaGG24w2dnZZt68eaZBgwbGGOMwc/PZZ5+ZoKAgc/HiRYdj3HDDDQXOvNSuXdu8+eabDo9533332dezs7NNeHh4vp9s//XXX+f5HOfl7NmzJiAgwD6blJiYaAICAszZs2cd+l1p5sbHx8f+/ctZcp5rAH9g5gawuD/PzmzdulVJSUm66aablJ6e7rCtUaNGDuu7d+9W8+bNHdqaN2+u3bt3O11H06ZN7V+HhISoZs2ahTpO586ddf78eW3YsEGzZ8/ONWsjSTt27ND58+cVGhqqcuXK2Zfk5GTt27dPknThwgUNHz5ctWvX1nXXXady5crpxx9/zDVzEx8fb//aZrOpcuXKOnbsWJ61GWPs/a5k0aJFqlatmurVqydJql+/vqpVq5bnBdMFeeaZZ5SUlOSw3HLLLU4dA7A6LigGLKp69eqy2Wy5TqlUq1ZNkuTv759rn7xOrfz5D7cxxt7m4eFhb8txpVNNBR07L15eXrr//vs1ZswYff3111qxYkWuPtnZ2YqIiND69etzbcs5NfTMM89o9erVeuWVV1S9enX5+/ure/fuunTpkkP/P19EbbPZlJ2dnWdtN954o2w2m3bv3q277rqrwHHMnj1bP/zwg7y8/vdrNzs7W7NmzdLDDz9c4L6XCwsLU/Xq1QvdH7gWMXMDWFRoaKjatWunyZMn68KFC0U6RlxcnDZu3OjQtmnTJsXFxUmSKlasKEk6cuSIfXtSUlKex9qyZYv969OnT2vPnj2qVatWoep48MEH9cUXX+jOO+9UhQoVcm2/+eablZKSIi8vL1WvXt1hCQsLkyR9+eWX6tevn+6++27VrVtXlStX1oEDBwr1+PkJCQlRhw4dNGXKlDyf4zNnzkiSvv/+e23fvl3r1693mHHZsGGDtm3bpp07d15VHQAcMXMDWNjUqVPVvHlzNWrUSGPHjlV8fLw8PDy0bds2/fjjj2rYsGGB+z/zzDPq0aOH/eLcDz/8UMuXL9e6desk/TH706RJE7344ouKiYnRiRMn9Nxzz+V5rPHjxys0NFSVKlXSs88+q7CwsCvOduSIi4vTiRMnFBAQkOf2tm3bqmnTprrrrrv00ksvqWbNmjp8+LBWrVqlu+66S40aNVL16tW1fPlyde3aVTabTf/85z/znZFxxtSpU9WsWTM1btxY48ePV3x8vDIzM7V27VpNmzZNu3fv1qxZs9S4cWO1aNEi1/5NmzbVrFmz9Prrrxfq8VJTU5WSkuLQFhAQYL9tHIC4oBiwusOHD5snnnjCxMbGGm9vb1OuXDnTuHFj8/LLL5sLFy7Y+0kyK1asyLV/QbeCG2PMrl27TJMmTYy/v7+pX7++WbNmTZ4XFH/44YfmpptuMj4+PuYvf/mLw23aebnSbc9/vhX83LlzZtCgQSYyMtJ4e3ubqKgoc++999pvI09OTjatW7c2/v7+JioqykyePNm0bNnSDBkypMDHrFevnhkzZkyBtR4+fNg8/vjj9gt+q1SpYrp162YSEhJMenq6CQ0NNRMmTMhz31dffdWEhYWZ9PR0Y8yVLyiWlGt55JFHCqwPuNbYjLnsZDkAuNj69evVunVrnT59Otet0QBQHLjmBgAAWArhBgAAWAqnpQAAgKUwcwMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACzl/wD9EgBF2tp8rAAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_cal(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Calibration R^2 = -0.09'}, xlabel='Group Mean CATE', ylabel='GATE'>\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAioAAAHFCAYAAADcytJ5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3o0lEQVR4nO3deVyVZf7/8fdREEQBBURFCdwzFTXNRFMzt9yXaZyccrTMNrM002wZt/lNOjY1zWQ6ZWq2mFoujWmWFkil5hKW5ZY7jeIuICiKXL8/+nLGI+tB4Fzo6/l4nMfD+zrXfZ/PubyAN9d93xyHMcYIAADAQmU8XQAAAEBuCCoAAMBaBBUAAGAtggoAALAWQQUAAFiLoAIAAKxFUAEAANYiqAAAAGsRVAAAgLUIKnByOBwFesTGxpZIPQsWLNBrr71WIq91rdLS0jRp0qQSG5srHT16VC+++KKio6MVEhKigIAAtWjRQm+99ZYuX758TcfOzMzUe++9p86dOyskJETe3t4KDQ1Vr169tGLFCmVmZrp9zMjISA0dOtS5ffDgQTkcDr3zzjvOtkmTJsnhcOjkyZPXVH9B5TXXHA6HJk2aVCJ1XOmdd95x+brz8vJS9erVde+99+qXX37Jd//vvvtOkyZN0pIlS3Ltc/nyZb366qu6++67VbNmTfn5+alhw4YaP368zp49W4Tv5trt379fAwYMUKVKlVSxYkV16dJF33//fYH3//7779W5c2dVrFhRlSpV0oABA7R///5s/Y4ePaqhQ4cqNDRUvr6+ioqK0pw5c4ryrcBdBvg/GzZscHn06NHDlC9fPlt7UlJSidTTs2dPExERUSKvda1OnDhhJJmJEyeW+GuvWLHChIeHmxdeeMGsXLnSfPHFF2b06NGmTJky5oEHHij0cc+fP2+6detmHA6HGTRokFm8eLGJi4szS5YsMcOHDzc+Pj5m+fLlbh83IiLCDBkyxLl94cIFs2HDBnP8+HFn28SJE40kc+LEiULX74685tqGDRtMQkJCidRxpXnz5hlJZt68eWbDhg0mJibG/L//9/9M+fLlTWhoqDl9+nSu+65fv974+/sbPz8/43A4zOzZs3Psl5KSYvz9/c3DDz9sPvroIxMTE2NeeeUVU7lyZXPLLbeYtLS04np7bjl+/LgJCwszjRo1MkuWLDErV640d9xxh/H39ze7du3Kd/+dO3caf39/065dO7Ny5UqzZMkS06hRIxMWFuYy786ePWtq165tatasaebNm2dWr15thgwZYiSZV155pTjfIvJAUEGuhgwZYipUqJBvv9TU1GJ5fYJKwZw+fdpcvHgxW/uIESOMJHP48OFCHfexxx4zksz8+fNzfH7Pnj3mhx9+cPu4VweVnFxrUHH3B6yNcy0rqGzevNmlffLkyUaSmTt3bo77bdq0yQQEBJi2bdua48ePm4ceesg4HA4zb968bH0zMjLMyZMns7V/9NFHRpJ57733iuS9XKuxY8cab29vc/DgQWdbUlKSCQkJMQMHDsx3/9///vcmJCTE5ZesgwcPGm9vbzNu3Dhn29SpU40ks2XLFpf9u3btaipUqGDOnDlz7W8GbuPUD9xy5513qnHjxoqLi1ObNm3k5+enBx98UJKUnJysZ555RrVq1VK5cuVUo0YNjRo1SqmpqS7HeOONN9S+fXuFhoaqQoUKatKkiaZPn65Lly65vM7KlSt16NAhl+Vv6X+nCl5++WX97W9/U2RkpMqXL68777xTe/bs0aVLlzR+/HiFhYUpMDBQ/fv31/Hjx7O9l0WLFik6OloVKlRQxYoV1a1bN8XHx7v0GTp0qCpWrKi9e/eqR48eqlixosLDwzVmzBilp6c766lSpYokafLkyc5arzy9UZwqV64sb2/vbO2tWrWSJP36669uHzMxMVFvv/22unXrpj/96U859qlXr56ioqIkSRcuXNCYMWPUrFkzBQYGKigoSNHR0frkk0/yfa2cTv1kSUhI0IABAxQQEKDAwEDdf//9OnHihEufyMhI9erVS0uXLlXz5s3l6+uryZMnS7r2uSblfOrnp59+Ut++fVW5cmX5+vqqWbNmmj9/vkuf2NhYORwOffjhh3rhhRcUFhamgIAAde7cWbt37853XHLTsmVLSdKxY8eyPbd161Z17dpVnTp10tq1a1WlShXNnj1bEyZM0LBhw/T++++79C9btqyCg4OzHSdr7iQkJBS6zqK0bNky3XXXXYqIiHC2BQQEaMCAAVqxYoUyMjJy3TcjI0Offvqpfve73ykgIMDZHhERoY4dO2rZsmXOtm+//VZVq1ZVixYtXI7Rq1cvpaamavXq1UX4rlBQXp4uAKXP0aNHdf/992vcuHF66aWXVKZMGaWlpalDhw769ddf9fzzzysqKko///yzJkyYoO3bt2vt2rXOb/779u3TH//4R2eg+eGHH/TXv/5Vu3bt0ty5cyVJM2fO1MMPP6x9+/a5fCO50htvvKGoqCi98cYbOnv2rMaMGaPevXvr9ttvl7e3t+bOnatDhw7pmWee0UMPPaT//Oc/zn1feuklvfjii3rggQf04osv6uLFi3r55ZfVrl07bdq0Sbfccouz76VLl9SnTx8NGzZMY8aMUVxcnP7yl78oMDBQEyZMUPXq1bV69WrdfffdGjZsmB566CFJcoaX3OT1zfVKZcuWdfnBWVBfffWVvLy8VL9+fbf3jYmJ0aVLl9SvX78C9U9PT9fp06f1zDPPqEaNGrp48aLWrl2rAQMGaN68ebmGnfz0799fAwcO1KOPPqqff/5Zf/7zn7Vjxw599913LuHs+++/186dO/Xiiy+qVq1aqlChgqSim2tX2r17t9q0aaPQ0FD961//UnBwsN5//30NHTpUx44d07hx41z6P//882rbtq3efvttJScn69lnn1Xv3r21c+dOlS1b1u0xOXDggCRl+3/dtm2bunbtqj/+8Y96/fXXVabM/34PnTRpkmrWrKmHHnpIZcuW1aBBg/J8ja+++kqS1KhRo3zruXz5sowx+fYrU6aMS00Fdf78ee3bt0/9+/fP9lxUVJTOnz+v/fv35zrP9+3bp/PnzztD9dX7r1mzRhcuXJCvr68uXrwoHx+fbP2y2n788Ufde++9br8HXCNPL+nAXjmd+unQoYORZL788kuX9qlTp5oyZcpkW6b++OOPjSSzatWqHF/j8uXL5tKlS+bdd981ZcuWdTnvntty/IEDB4wk07RpU3P58mVn+2uvvWYkmT59+rj0HzVqlJHkXPY9fPiw8fLyMiNHjnTpl5KSYqpVq+aylJx1fnrx4sUufXv06GEaNGjg3C7MqR9JBXrktGSfn88//9yUKVPGjB492u19jTFm2rRpRpJZvXp1ofbPyMgwly5dMsOGDTPNmzd3ee7qUz9Z/59Xvs+sUz9X1//BBx8YSeb99993OV7ZsmXN7t2786ypMHPNGJPt//Xee+81Pj4+2U6pde/e3fj5+ZmzZ88aY4yJiYkxkkyPHj1c+i1evNhIMhs2bMiz3qxTPxs3bjSXLl0yKSkpZvXq1aZatWqmffv25tKlS3nuX1i//vqrqVq1qmnZsqXL11dusr4n5PfI73Rfbv773/8aSWbq1KnZnluwYIGRZNavX5/r/t9++62RZD788MNsz7300ktGkjly5Igx5rfvFWXKlDGHDh1y6Td48GAjyTz88MOFeg+4NqyowG2VK1fWXXfd5dL26aefqnHjxmrWrJnLSkG3bt2cdwp1795dkhQfH6+JEyfq22+/1enTp12Os2fPHt1+++0FqqNHjx4uv6E1bNhQktSzZ0+Xflnthw8fVuPGjfX5558rIyNDf/rTn1xq9fX1VYcOHRQTE+Oyv8PhUO/evV3aoqKinL91FtbmzZsL1K9WrVpuHff777/XwIED1bp1a02dOrUwpRXKRx99pNdee00//PCDy+k+X1/fQh/zvvvuc9keOHCghgwZopiYGJfnoqKicvyNuqjm2pW++uorderUSeHh4S7tQ4cO1WeffaYNGzbo7rvvdrb36dPHpV/Wb/aHDh1S69at8329q/s0bNhQn3zyiby8iv7b9+nTp9WjRw8ZY7Ro0aICrYC8+eabSklJybdfSEhIns9nZma63EXmcDhcVpzyWlUsyIpjQfZ/+OGHNWvWLN13333697//rWrVqmnhwoVatGiRJBVqRQjXjqACt1WvXj1b27Fjx7R3794cr5WQ5LzN9PDhw2rXrp0aNGigf/7zn4qMjJSvr682bdqkESNG6Pz58wWuIygoyGW7XLlyebZfuHDBWask3XbbbTke9+pvRn5+ftl+2Pr4+DiPV1jNmjUrUD93Tg/Ex8erS5cuqlevnlatWpXjMnZB3HTTTZL+d5ohP0uXLtXAgQP1+9//XmPHjlW1atXk5eWlWbNmOU+xFEa1atVctr28vBQcHKxTp065tOc0J4tyrl3p1KlTOb5eWFiY8/krXX0NSNb/SUFf/91331XDhg2VkpKiRYsW6c0339SgQYP02WefFab8XJ05c0ZdunTRf//7X3311VeqXbt2gfarW7dugU/95GXKlCnOa4uk364hOXjwoCpXriyHw5FtXCU5w+fVX/NXyhr/3PZ3OByqVKmSpN9C4LJly/TII4+ocePGkqTw8HC98sorGjlypGrUqJH3m0SxIKjAbTn9ZhISEqLy5cvn+kMp67ep5cuXKzU1VUuXLnW5MG7btm3FUmtetXz88ccuNZS03ELd1ebNm1egC3Pj4+PVuXNnRURE6IsvvlBgYGCha+vYsaO8vb21fPly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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_cal(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Integral = -0.009 +/- 0.023'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_qini(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 0.373 +/- 0.024'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 9,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_qini(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Integral = -0.011 +/- 0.054'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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VKkiunfvLvbu3atTjLyazLBkQljYxCREZBF2796N3r1747ffftOrq8FSPHr0CA0aNED//v01rtqh8uXUqVNo27YtLly4YJWfVTI/JkNEpNX06dNx+/ZtbN682dyhlCg1NRXz589Hly5dUK1aNdy8eRNLly7FlStXcObMGTRu3NjcIRKRBWMyRERW7+HDhxgxYgROnz6NBw8ewNHREe3atcO8efN0nouKiKSLyRARERFJGu9NRkRERJLGZIiIiIgkjckQERERSRonXSxBQUEB/vrrL1SqVMksNywkIiIi/Qkh8PjxY9SsWbPEyVeZDJXgr7/+Uk1xT0RERNYlJSUFtWvXLrYOk6ESFN6bJiUlBS4uLmaOhoiIiHSRkZEBd3d31Xm8OEyGSlDYNebi4sJkiIiIyMroMsSFA6iJiIhI0pgMERERkaQxGSIiIiJJYzJEREREksZkiIiIiCSNyRARERFJGpMhIiIikjQmQ0RERCRpTIaIiIhI0pgMERERkaQxGSIiIiJJYzJEREREksZkiIiIiCSNyRARERFJGpMhK5eZkwfPmbvgOXMXMnPyzB0OERGR1WEyRERERJLGZIiIiIgkjckQERERSRqTISIiIpI0JkNEREQkaUyGiIiISNKYDBEREZGkMRkiIiIiSWMyRERERJLGZIiIiIgkjckQERERSRqTISIiIpI0JkNEREQkaUyGiIiISNKsLhmKjIyEl5cX7O3t4e/vj9jYWJ2WO3bsGGxsbNC8eXPjBkhERERWxaqSoaioKISEhOCjjz7C+fPn0bFjR7z66qtITk4udrn09HSMGDECXbt2NVGkREREZC2sKhlasmQJgoODMWbMGPj6+iIiIgLu7u5YsWJFscu9/fbbGD58OAICAkwUKREREVkLq0mGcnJycPbsWQQGBqqVBwYGIi4ursjl1q5dixs3bmDu3Lk6vU92djYyMjLUHkRERFR+WU0ydP/+feTn58PV1VWt3NXVFampqVqXuXbtGmbOnIlNmzbBxsZGp/cJDw+HQqFQPdzd3cscOxEREVkuq0mGCslkMrXnQgiNMgDIz8/H8OHDMW/ePDRo0EDn9c+aNQvp6emqR0pKSpljJiIiIsulW3OJBVAqlahYsaJGK1BaWppGaxEAPH78GGfOnMH58+cxadIkAEBBQQGEELCxscGvv/6Kl19+WWM5uVwOuVxu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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_toc(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 1.049 +/- 0.058'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_toc(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can also plot error bars with uniform confidence bands (UCB), either two-sided (ucb2) or 1-sided (ucb1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 0.373 +/- 0.024'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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9ttvY9asWYiNjcXVq1dx9OhRrFu3DgDw0ksvwcnJCUOGDEFSUhLS0tJw8OBBvPXWW/jjjz+0Lp+npycOHTqEmzdvIicnBwDg7e2NxMREJCcn4/z583j99deRlZWl8p7Gjh2LmTNnYv/+/fj9998xfvx41KpVS1mb0bJlS7z00ksYM2YM4uPjkZaWhuPHj+PDDz9EQkJCueXZu3cvsrKy8M8//5R5XN++fREYGIihQ4di165dSE9PR3JyMubNm4cTJ04o30d8fDxOnTqF06dPY9SoUWq1Vpre/9tvv41ffvkFkydPxqlTp3D58mVs374db775JgDAx8cHzzzzDF599VX8+uuvSElJwcSJEyusbSOSOoYbohrkvffew/z58xEVFQVfX1/0798fP/74I7y8vMo9791338X06dMxf/58+Pr6YsSIEcoROXZ2djh06BCaNm2K5557Dr6+vhg/fjwePnyoU03OwoULkZ6ejubNmyubs95991106tQJ/fv3R69eveDi4oKhQ4eqnLd06VIEBgbi2WefRd++fREUFARfX1/Y2Ngoj1m/fj3GjBmD6dOnw8fHB4MHD8avv/6qrO3R5JNPPkFiYiLc3d3V+iQ9SSaTISEhAT169MD48ePRsmVL/Pe//0V6erpyRNmyZctQr149dOvWDYMGDUL//v3RqVOnCt9/+/btcfDgQVy+fBndu3eHn58f3n33Xbi6uqq8N3d3d/Ts2RPPPfecckg6UU0mE082ThMRmbkHDx6gcePG+OSTTzBhwgRjF4eIjIB9bojIrKWmpuLChQvo3Lkz7t69i4ULFwIAhgwZYuSSEZGxMNwQkdn7+OOPcfHiRVhbW8Pf3x9JSUlwcnIydrGIyEjYLEVERESSwg7FREREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKf8HfbPh3Llg0bkAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_qini(tmt=2, err_type='ucb2')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 1.049 +/- 0.058'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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1H7kyBF07txZ5TUhISFlzv/hhx/Qvn172Nio3nVULpfDyclJ6UFERETmy6DTUuHh4di0aRO2bNmCa9euYcaMGUhJScHEiRMBPBl1GTVqlHT+xIkTkZycjPDwcFy7dg1btmzB5s2bMWvWLEPdAhERERkZg1bhGTZsGP7++28sWrQIqampaNWqFQ4dOgQfHx8AQGpqqlLNGz8/Pxw6dAgzZszA559/Di8vL3z22Wd44YUXDHULREREZGQMWufGEFjnhoiIyPSYRJ0bIiIiIl1gcENERERmhcENERERmRUGN0RERGRWGNwQERGRWTHoUnBDUCwO4x5TREREpkPxe1udRd4WF9w8ePAAALjHFBERkQl68OABnJ2dKzzH4urcFBcX488//0StWrUq3KCTdCs7Oxve3t64c+cO6w0ZAX4exoefiXHh52F4Qgg8ePAAXl5eqFGj4qwaixu5qVGjBho0aGDobtD/cL8v48LPw/jwMzEu/DwMq7IRGwUmFBMREZFZYXBDREREZoXBDRmEXC7H/PnzIZfLDd0VAj8PY8TPxLjw8zAtFpdQTEREROaNIzdERERkVhjcEBERkVlhcENERERmhcENERERmRUGN6QzERER6NChA2rVqoV69eph0KBBSEhIUDpHCIEFCxbAy8sL9vb26N69O3799VcD9diyREREQCaTYfr06VIbPw/9u3v3Ll555RW4urrCwcEBbdu2xcWLF6Xj/Ez0p7CwEO+99x78/Pxgb2+PRo0aYdGiRSguLpbO4edhGhjckM7ExcVh8uTJOHv2LI4cOYLCwkL06tULDx8+lM5Zvnw5Vq5ciTVr1uD8+fPw8PDAc889J+0BRrpx/vx5bNiwAYGBgUrt/Dz0659//kGXLl1gY2OD7777Dr/99hs+/vhj1K5dWzqHn4n+LFu2DOvXr8eaNWtw7do1LF++HB999BFWr14tncPPw0QIIj1JT08XAERcXJwQQoji4mLh4eEhli5dKp2Tl5cnnJ2dxfr16w3VTbP34MED0bRpU3HkyBERGhoq3nzzTSEEPw9DeOutt8TTTz9d7nF+JvrVt29fMW7cOKW2IUOGiFdeeUUIwc/DlHDkhvQmKysLAODi4gIASEpKQlpaGnr16iWdI5fLERoaijNnzhikj5Zg8uTJ6Nu3L5599lmldn4e+rd//360b98eQ4cORb169RAU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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_toc(tmt=2, err_type='ucb1')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### T-Learner\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"jupyter\": {\n     \"outputs_hidden\": false\n    },\n    \"pycharm\": {\n     \"name\": \"#%%\\n\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>treatment</th>\\n\",\n       \"      <th>blp_est</th>\\n\",\n       \"      <th>blp_se</th>\\n\",\n       \"      <th>blp_pval</th>\\n\",\n       \"      <th>qini_est</th>\\n\",\n       \"      <th>qini_se</th>\\n\",\n       \"      <th>qini_pval</th>\\n\",\n       \"      <th>autoc_est</th>\\n\",\n       \"      <th>autoc_se</th>\\n\",\n       \"      <th>autoc_pval</th>\\n\",\n       \"      <th>cal_r_squared</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>-0.185</td>\\n\",\n       \"      <td>0.111</td>\\n\",\n       \"      <td>0.096</td>\\n\",\n       \"      <td>-0.044</td>\\n\",\n       \"      <td>0.022</td>\\n\",\n       \"      <td>0.023</td>\\n\",\n       \"      <td>-0.083</td>\\n\",\n       \"      <td>0.057</td>\\n\",\n       \"      <td>0.071</td>\\n\",\n       \"      <td>-2.747</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>0.716</td>\\n\",\n       \"      <td>0.060</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.371</td>\\n\",\n       \"      <td>0.025</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.028</td>\\n\",\n       \"      <td>0.059</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.626</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   treatment  blp_est  blp_se  blp_pval  qini_est  qini_se  qini_pval  \\\\\\n\",\n       \"0          1   -0.185   0.111     0.096    -0.044    0.022      0.023   \\n\",\n       \"1          2    0.716   0.060     0.000     0.371    0.025      0.000   \\n\",\n       \"\\n\",\n       \"   autoc_est  autoc_se  autoc_pval  cal_r_squared  \\n\",\n       \"0     -0.083     0.057       0.071         -2.747  \\n\",\n       \"1      1.028     0.059       0.000          0.626  \"\n      ]\n     },\n     \"execution_count\": 14,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Initialize DRTester and fit/predict nuisance models\\n\",\n    \"t_tester = DRTester(\\n\",\n    \"    model_regression=model_regression,\\n\",\n    \"    model_propensity=model_propensity,\\n\",\n    \"    cate=est_t\\n\",\n    \").fit_nuisance(Xval, Dval, Yval, Xtrain, Dtrain, Ytrain)\\n\",\n    \"\\n\",\n    \"res_t = t_tester.evaluate_all(Xval, Xtrain)\\n\",\n    \"res_t.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Calibration R^2 = -2.747'}, xlabel='Group Mean CATE', ylabel='GATE'>\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9QElEQVR4nO3deVxWZf7/8ffNLhoooCiKgJlLFmY45jJumZoLZptpU+5N21RqaZp91WwmzcqxMq1J3ErLXNtMs0JpsVwGmkrLXWwUFRdAUBS4fn/04x5vuUFuthuOr+fjcT8eneu+zrk/5/J0eHOdc25sxhgjAAAAi/BwdwEAAABliXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXADAAAshXCDYrPZbMV6bdy4sULqWbp0qWbNmlUhn1VaWVlZmjJlSoWNzaUWL16sgQMHqmnTpvLw8FBkZGSZbDcvL0/vvPOObrnlFoWEhMjb21t16tRR37599fHHHysvL8/lbUZGRmro0KH25QMHDshms2nhwoX2tilTpshmsyk1NbUM9uLyijrWbDabpkyZUiF1XGzhwoUO/995eXmpXr16GjhwoHbv3n3Z9X/44QdNmTJFK1euLLRPbm6uZs6cqVtvvVUNGjSQv7+/mjdvrvHjx+v06dNluDelM2/ePPXv31+RkZGqVq2aGjdurIcfflhHjhwp1vpFnc+aNWtW6Ho7duyQr6+vbDabtm3b5vBely5ditxuSkpKqfYZRfNydwGoOjZv3uyw/Pzzzys+Pl5fffWVQ/u1115bIfUsXbpUP//8s0aNGlUhn1caWVlZeu655yT9cdKraO+8845SUlLUpk0b5eXl6cKFC6Xe5rlz59S/f399/vnnGjhwoObOnau6devq+PHjWrdune6++24tW7ZMt912W6k+p169etq8ebOuvvrqUtdcUkUda5s3b1aDBg0qvqj/b8GCBWrWrJnOnTunb7/9Vv/4xz8UHx+vX3/9VbVq1XK6zubNm9WzZ0/l5ubq7Nmz+te//qWRI0cW6Hf27FlNmTJFgwYN0siRIxUSEqJ///vf+vvf/66PP/5Y27ZtU7Vq1cp7Fy9r8uTJ6tq1q1544QXVr19fv/32m55//nl9+OGHSkxMVGhoaJHrX3puk/4If6NGjdLtt9/udJ3c3FwNHz5cISEhOnz4cIH358yZo/T0dIe2rKws3XrrrYqJiVHdunVd2EO4zAAlNGTIEFO9evXL9svMzCyXz+/Tp4+JiIgol22XtePHjxtJZvLkyW75/NzcXPt/l9W4Pfzww0aSWbRokdP3d+3aZX788UeXtxsREWGGDBlSZJ/JkycbSeb48eMub98YY7KyslzqXxmPtQULFhhJZuvWrQ7tzz33nJFk5s+f73S9LVu2mICAANOhQwdz7NgxM3LkSGOz2cyCBQsK9M3JyTGpqakF2pcvX24kmXfeeadM9qW0jh49WqBt69atRpJ5/vnnS7TNoUOHGpvNZnbv3u30/ZdeesnUr1/fvPrqq07/HZxZuHChkWTmzZtXoppQfFyWQpnq0qWLrrvuOiUkJKh9+/by9/fX8OHDJUnp6el66qmnFBUVJR8fH9WvX1+jRo1SZmamwzbeeOMNderUSXXq1FH16tV1/fXXa8aMGQ6zDV26dNGnn36qgwcPOkz1Sv+7jPHSSy/pxRdftE9Vd+nSRbt27dKFCxc0fvx4hYWFKTAwULfffruOHTtWYF+WLVumdu3aqXr16qpRo4Z69uypxMREhz5Dhw5VjRo1tGfPHvXu3Vs1atRQeHi4nnzySWVnZ9vrqV27tiTpueees9d68aWX8ubhUbb/q6ekpGjevHnq2bOnBg8e7LTPNddco+joaEl/zPI8+eSTuuGGGxQYGKigoCC1a9dOH3744WU/y9llqXyHDh3SHXfcoYCAAAUGBuq+++7T8ePHHfpERkaqb9++WrVqlVq1aiU/Pz/7LFppjzXJ+WWpn3/+Wbfddptq1aolPz8/3XDDDVq0aJFDn40bN8pms+m9997TxIkTFRYWpoCAAN1yyy367bffLjsuhWndurUk6ejRowXe2759u3r06KFu3brpiy++UO3atfX2229r0qRJGjFihN59912H/p6engoODi6wnTZt2kj6Y/wrgzp16hRoi4mJkaenZ4lqzMjI0PLly9W5c2c1bty4wPu7d+/WpEmTNGfOHAUEBBR7u3FxcapRo4buuecel2uCa7gshTJ35MgR3XfffRo3bpxeeOEFeXh4KCsrS507d9bvv/+uZ555RtHR0frll180adIk/fTTT/riiy/sPzD27t2re++91x6CfvzxR/3jH//Qr7/+qvnz50v6Y8r3r3/9q/bu3avVq1c7reONN95QdHS03njjDZ0+fVpPPvmkYmNjddNNN8nb21vz58/XwYMH9dRTT2nkyJH66KOP7Ou+8MILevbZZzVs2DA9++yzOn/+vF566SV17NhRW7Zscbj0duHCBfXr108jRozQk08+qYSEBD3//PMKDAzUpEmTVK9ePa1bt0633nqrRowYYZ/+zw88hcnJySnWeHt6ejr8sK0I8fHxunDhgvr371+s/tnZ2Tp58qSeeuop1a9fX+fPn9cXX3yhO+64QwsWLCg0IF3O7bffrgEDBuihhx7SL7/8ov/7v//Tjh079MMPP8jb29ve79///rd27typZ599VlFRUapevbqksjvWLvbbb7+pffv2qlOnjl577TUFBwfr3Xff1dChQ3X06FGNGzfOof8zzzyjDh06aN68eUpPT9fTTz+t2NhY7dy5U56eni6Pyf79+yVJTZo0cWhPSkpSjx49dO+99+r11193CLxTpkxRgwYNNHLkSHl6emrQoEFFfkb+pegWLVpctp7c3FwZYy7bz8PDo0xD+KZNm5Sbm1usGi/1/vvvKzMz0+mlOmOMRo4cqb59+6pfv35OQ7czu3fv1tdff62RI0eqRo0aLtcEF7l76ghVl7PLUp07dzaSzJdffunQPm3aNOPh4VFg6nbFihVGklm7dq3Tz8jNzTUXLlwwixcvNp6enubkyZP29wq7VLB//34jybRs2dLhcsysWbOMJNOvXz+H/qNGjTKSTFpamjHGmOTkZOPl5WUee+wxh34ZGRmmbt26ZsCAAQ5jIMl88MEHDn179+5tmjZtal8uyWUpScV6ObucUJSyuMQyffp0I8msW7euROvn5OSYCxcumBEjRphWrVo5vHfpZan8f8+L9zP/stTo0aMd1l2yZImRZN59912H7Xl6eprffvutyJpKcqwZYwr8uw4cOND4+vqa5ORkh369evUy/v7+5vTp08YYY+Lj440k07t3b4d+H3zwgZFkNm/eXGS9+Zelvv/+e3PhwgWTkZFh1q1bZ+rWrWs6depkLly4UOT6JfX777+b0NBQ07p1a4f/vwqTf0643OtylyJdkZ6ebpo3b27Cw8NNRkaGy+vfdNNNpmbNmubs2bMF3nv99ddNrVq1TEpKijGm8MuDl3r66aeL9e+KssHMDcpcrVq1dPPNNzu0ffLJJ7ruuut0ww03OMxI9OzZ0/6EVa9evSRJ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6tVLO3bsUMOGDZ2uM2DAAB09elRxcXFq3Lixjh07ppycnAquHAAAVFZuDTczZ87UiBEjNHLkSEnSrFmztH79es2dO1fTpk0r0H/dunXatGmT9u3bp6CgIElSZGRkRZYMAAAqObddljp//ry2b9+uHj16OLT36NFD3333ndN1PvroI7Vu3VozZsxQ/fr11aRJEz311FM6e/ZsRZQMAACqALfN3KSmpio3N1ehoaEO7aGhoUpJSXG6zr59+/TNN9/Iz89Pq1evVmpqqh555BGdPHmy0PtusrOzlZ2dbV9OT08vu50AAACVjttvKLbZbA7LxpgCbfny8vJks9m0ZMkStWnTRr1799bMmTO1cOHCQmdvpk2bpsDAQPsrPDy8zPcBAABUHm4LNyEhIfL09CwwS3Ps2LECszn56tWrp/r16yswMNDe1rx5cxlj9PvvvztdZ8KECUpLS7O/Dh06VHY7AQAAKh23hRsfHx/FxMRow4YNDu0bNmxQ+/btna7ToUMHHT58WGfOnLG37dq1Sx4eHmrQoIHTdXx9fRUQEODwAgAA1uXWy1JjxozRvHnzNH/+fO3cuVOjR49WcnKyHnroIUl/zLoMHjzY3v/ee+9VcHCwhg0bph07dighIUFjx47V8OHDVa1aNXftBmBp/j5eOjC9jw5M7yN/H7c+YAkAxeLWM9U999yjEydOaOrUqTpy5Iiuu+46rV27VhEREZKkI0eOKDk52d6/Ro0a2rBhgx577DG1bt1awcHBGjBggP7+97+7axcAAEAlYzPGGHcXUZHS09MVGBiotLQ0LlEBuCJknc/RtZPWS5J2TO3JDByqJFd+frv9aSkAAICyRLgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWQrgBAACWwjc5AYDF5f8JDeBKwcwNAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFC93F1DRjDGSpPT0dDdXAgAAiiv/53b+z/GiXHHhJiMjQ5IUHh7u5koAAICrMjIyFBgYWGQfmylOBLKQvLw8HT58WFdddZVsNpvS09MVHh6uQ4cOKSAgwN3luR3j4YjxcMR4OGI8HDEejhgPR6UdD2OMMjIyFBYW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fCdPntS6desKHeOaNWs6LMfFxWnQoEHy9vbWoEGDFBcXV+T+Ayghd6crAOXj+++/N5LMqlWrHNqDg4NN9erVTfXq1c24cePs7ZLMqFGjHPq2b9/ePPDAAw5td999t+ndu7cxxrWZm/fff9/e58SJE6ZatWpm2bJlhdafP0uxZs0ac/XVV5u8vDyzaNEi06pVK2OMcZi5+fLLL01AQIA5d+6cwzauvvrqImderr32WvP66687fOZ9991nX87LyzN16tRx+te+jTHmhx9+cDrGzqSlpRl/f3/7bFJiYqLx9/c3aWlpDv0uN3Pj4+Nj//fLf+WPNYA/MHMDWNylszNbtmxRUlKSWrRooezsbIf3Wrdu7bC8c+dOdejQwaGtQ4cO2rlzp8t1tGvXzv7fQUFBatq0abG206dPH505c0YJCQmaP39+gVkbSdq+fbvOnDmj4OBg1ahRw/7av3+/9u7dK0nKzMzUuHHjdO2116pmzZqqUaOGfv311wIzN9HR0fb/ttlsqlu3ro4dO+a0NmOMvd/lLF26VI0aNVLLli0lSTfccIMaNWrk9IbpoowdO1ZJSUkOr5tuusmlbQBWxw3FgEU1btxYNputwCWVRo0aSZKqVatWYB1nl1Yu/cFtjLG3eXh42NvyXe5SU1HbdsbLy0v333+/Jk+erB9++EGrV68u0CcvL0/16tXTxo0bC7yXf2lo7NixWr9+vV5++WU1btxY1apV01133aXz58879L/0Jmqbzaa8vDyntV1zzTWy2WzauXOn+vfvX+R+zJ8/X7/88ou8vP532s3Ly1NcXJz++te/FrnuxUJCQtS4ceNi9weuRMzcABYVHBys7t27a/bs2crMzCzRNpo3b65vvvnGoe27775T8+bNJUm1a9eWJB05csT+flJSktNtff/99/b/PnXqlHbt2qVmzZoVq47hw4dr06ZNuu2221SrVq0C7994441KSUmRl5eXGjdu7PAKCQmRJH399dcaOnSobr/9dl1//fWqW7euDhw4UKzPL0xQUJB69uypN954w+kYnz59WpL0008/adu2bdq4caPDjEtCQoK2bt2qn3/+uVR1AHDEzA1gYXPmzFGHDh3UunVrTZkyRdHR0fLw8NDWrVv166+/KiYmpsj1x44dqwEDBthvzv3444+1atUqffHFF5L+mP1p27atpk+frsjISKWmpurZZ591uq2pU6cqODhYoaGhmjhxokJCQi4725GvefPmSk1Nlb+/v9P3b7nlFrVr1079+/fXiy++qKZNm+rw4cNau3at+vfvr9atW6tx48ZatWqVYmNjZbPZ9H//93+Fzsi4Ys6cOWrfvr3atGmjqVOnKjo6Wjk5OdqwYYPmzp2rnTt3Ki4uTm3atFGnTp0KrN+uXTvFxcXpn//8Z7E+LyMjQykpKQ5t/v7+9sfGAYgbigGrO3z4sPnb3/5moqKijLe3t6lRo4Zp06aNeemll0xmZqa9nySzevXqAusX9Si4Mcbs2LHDtG3b1lSrVs3ccMMN5vPPP3d6Q/HHH39sWrRoYXx8fMyf/vQnh8e0nbncY8+XPgqenp5uHnvsMRMWFma8vb1NeHi4+ctf/mJ/jHz//v2ma9euplq1aiY8PNzMnj3bdO7c2TzxxBNFfmbLli3N5MmTi6z18OHD5tFHH7Xf8Fu/fn3Tr18/Ex8fb7Kzs01wcLCZMWOG03VfeeUVExISYrKzs40xl7+hWFKB14MPPlhkfcCVxmbMRRfLAaCMbdy4UV27dtWpU6cKPBoNAOWBe24AAIClEG4AAIClcFkKAABYCjM3AADAUgg3AADAUgg3AADAUgg3AADAUgg3AADAUgg3AADAUgg3AADAUgg3AADAUgg3AADAUv4fHU1rP8DvvWsAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_cal(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Calibration R^2 = 0.626'}, xlabel='Group Mean CATE', ylabel='GATE'>\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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yKFDh3TPPfdo7NixmjZtmry8vJSVlaUOHTroP//5jyZOnKjY2Fh98803mjRpknbs2KGPP/5YLpdLkrR371797ne/U0xMjHx9ffXll1/qmWee0a5du9yHKWbNmqXf//732rt3r5YtW1ZoHf/85z8VGxurf/7znzp58qTGjBmjPn366JZbbpGPj4/mzZunH3/8UX/84x81dOhQvfvuu+51p02bpieffFL333+/nnzySZ09e1bPPvus2rVrp02bNnkc3jp37pz69u2rIUOGaMyYMVq3bp2efvpphYSEaNKkSapdu7ZWrVql2267TUOGDHEPsV9smDonJ6dEz3elSpXcz11pfPLJJ/L29ta1115b6nWTkpJ07tw59evXr0T9s7Ozdfz4cf3xj39U3bp1dfbsWX388cf69a9/rYSEhAJD6SV1xx13qH///nr44Yf1zTff6E9/+pN27typL774Qj4+Pu5+27Zt07fffqsnn3xSMTExCgwMlFR277Xz7d69W23atFGNGjX0j3/8Q2FhYXr11Vc1ePBgHT58WGPHjvXoP3HiRLVt21Zz5sxRenq6xo0bpz59+ujbb79VpUqVSv2cpKSkSFKB1zU5OVndunXT7373O7344ovy8vrfaYdTpkxRRESEhg4dqkqVKmngwIHF7iP/cO8NN9xw0Xpyc3NljLloPy8vL4+aLrR3716dPn1asbGxBZbFxsYqMTFRZ86cUeXKlQtdf+vWrcrMzFTDhg01bNgwLV68WJmZmYqNjdVTTz2lXr16FVtfTk6OPv30U4/HnJOTow0bNqhnz556/vnn9fe//13/+c9/FBUVpUceeURjxoy5pP+buAxOJyXYpagRFUlm9erVHu3x8fHGy8urwLe/t956y0gyK1asKHQfubm55ty5c2bhwoWmUqVK5vjx4+5lRQ3H538Db9q0qcnNzXW3v/DCC0aS6du3r0f/UaNGGUnu4eT9+/cbb29vM2LECI9+GRkZplatWqZ///4ez4Ek88Ybb3j07dmzp2nUqJF7/lIO/aiQb/GFTYUN2V/Mhx9+aLy8vMxjjz1W6nWNMWb69OlGklm1atUlrZ+Tk2POnTtnhgwZYpo3b+6xrDQjKhfW/9prrxlJ5tVXX/XYXqVKlczu3buLrelS3mvGFBxRGTBggPHz8ytwSK1Hjx4mICDAnDx50hjzvxGVnj17evR74403jCSzYcOGYuvNH1HZuHGjOXfunMnIyDCrVq0ytWrVMu3btzfnzp0rdv1L9Z///MfUrFnTtGzZ0uP/V1GKGpG6cLrYCOPnn39uJJnXX3+9wLJp06YZSebgwYNFrv/6668bSe7DXu+++655//33TceOHY3L5broe/mJJ54wkjxGAQ8dOuTeZkREhFmwYIFZvXq1efjhh40kM3HixOKfHJQ5RlRQItWqVVOnTp082t5//301adJEzZo18xgp6N69u/tKoR49ekiStm/frsmTJ+vzzz/X8ePHPbbz3Xff6ZZbbilRHT179vT4hta4cWNJKvDNKb99//79atKkiT788EPl5OTovvvu86i1cuXK6tChg5KSkjzWd7lc6tOnj0dbbGxskVcIlNTmzZtL1C8mJqZU2922bZv69++v1q1bKz4+/lJKuyRvvvmmXnjhBX355ZfKzMx0txf1Dbgk7r77bo/5/v37a9CgQUpKSvJYFhsbW+jIUVm91873ySefqHPnzoqMjPRoHzx4sFauXKkNGzbotttuc7f37dvXo1/+iMGPP/6o1q1bX3R/F/Zp3Lix3nnnHXl7l/2f7OPHj6tnz54yxmjJkiXFjoDke+mll5SRkXHRfuHh4SWqobgRiuKW5V+B5uvrq5UrVyooKEiS1LFjRzVs2FBPP/20unfvXui6c+bM0TPPPKMxY8Z4nByev8309HR9+OGH7teiU6dOSk1N1fPPP68JEyaoSpUqJXpsuHwEFZRI7dq1C7QdPnxYe/bs8RiOP1/+Zab79+9Xu3bt1KhRI/39739XdHS0KleurE2bNmn48OE6ffp0iesIDQ31mPf19S22/cyZM+5aJenmm28udLsX/nEOCAgo8GHr5+fn3t6latasWYn6lebwwPbt29W1a1c1bNhQK1askJ+f3yXVds0110j632GGi1m6dKn69++vu+66S48//rhq1aolb29vzZ49+5KvOpKkWrVqecx7e3srLCxMx44d82gv7D1Zlu+18x07dqzQ/dWpU8e9/HxhYWEe8/mvSUn3v3DhQjVu3FgZGRlasmSJXnrpJQ0cOFArV668lPKLdOLECXXt2lX//e9/9cknn6hevXolWq9BgwYlPvRTnPzn6cLnT/o5QLlcLlWtWvWi67dp08YdUqSf//926NBBy5cvL3S9hIQEPfTQQ/r973+vZ5991mNZtWrV5HK5FBQUVCAw9ujRQ8uXL9fOnTvVqlWrYh8byg5BBSVS2Lea8PBw+fv7F/mhlP9tavny5crMzNTSpUsVFRXlXp6cnHxFai2ulrfeesujhvJWVKi7UEJCgsd9R4qyfft2denSRVFRUfroo48UEhJyybV17NhRPj4+Wr58uR5++OGL9n/11VcVExOjJUuWeLw/srOzL7kGSUpNTVXdunXd8zk5OTp27FiBD//C3pNX6r0WFhamQ4cOFWg/ePCgpJKPHJRU48aN1bJlS0k/vy65ubmaM2eO3nrrLd15551lso8TJ06oS5cuSklJ0erVqws9T6QonTt31tq1ay/ab9CgQR73yrlQ/fr15e/vrx07dhRYtmPHDjVo0KDY0bniajbGFBqUEhISNHToUA0aNEj/+te/CryP/P391bBhQ6Wmpha6TeniAQxli6CCS9a7d29NmzZNYWFhxR6qyP9DcP43fWOMXnnllQJ9/fz8Lvlbb3G6d+8ub29v7d27V7/5zW/KZJul/ZYsle2hn+TkZHXp0kURERFKTEws8v4aJVWrVi0NHTpUs2fPdt+j5UJ79+51n6zocrnk6+vr8Yc+NTX1sm+I9dprr6lFixbu+TfeeEM5OTklulfNlXqvde7cWcuWLdPBgwfdoyjSzyMfAQEBJTqcczlmzJiht99+W5MmTdKvf/3ry/6gzA8pP/zwgxITE9W8efNSrV9Wh368vb3Vp08fLV26VDNmzHCPiuzfv19JSUl67LHHil2/du3aiouL0+eff6709HQFBwdL+vkeR2vXri3wusyfP19Dhw7VPffcozlz5hR5WOk3v/mN4uPjtX79erVp08bdvmLFClWpUqVEJxyj7BBUcMlGjRqlt99+W+3bt9djjz2m2NhY5eXlaf/+/froo480ZswY3XLLLeratat8fX01cOBAjR07VmfOnNHs2bN14sSJAtu88cYbtXTpUs2ePVstWrSQl5eX+5vl5YiOjtbUqVP1xBNP6IcfftBtt92matWq6fDhw9q0aZMCAwPdN28rqaCgIEVFRemdd95R586dFRoaqvDwcEVHRxe5Tlk8Funnq1C6dOkiSXrmmWf0/fffe9yFs379+h5XILlcLnXo0OGid9F9/vnn9cMPP2jw4MH68MMPdccdd6hmzZo6evSoEhMTlZCQoMWLFys2Nla9e/fW0qVL9cgjj+jOO+/UgQMH9PTTT6t27doluotqUZYuXSpvb2917drVfdVP06ZN1b9//4uue6Xea5MnT9b777+vjh07atKkSQoNDdVrr72mDz74QDNmzLiskaySqFatmiZMmKCxY8dq0aJFuueeey55W6dPn1b37t21fft2vfDCC8rJydHGjRvdy6tXr37RG/E1atTokvd/oaeeeko333yzevfurfHjx7tv+BYeHq4xY8Z49PX29laHDh20evVqd9tzzz2njh07qnv37ho3bpxcLpf++te/6ujRo3r66afd/d58800NGTJEzZo100MPPaRNmzZ5bLt58+bugPvHP/5Rr732mu666y49/fTTioiI0FtvvaV3331Xzz33XLneEA/iqh94Ku4+KoU5deqUefLJJ02jRo2Mr6+vCQkJMTfeeKN57LHHTGpqqrvfe++9Z5o2bWoqV65s6tatax5//HGzcuVKI8kkJSW5+x0/ftzceeedpmrVqsblchW4j8qzzz7rsf/8qyzefPNNj/ai7kexfPly07FjRxMcHGz8/PxMVFSUufPOO83HH39c7HNgzP+uSjnfxx9/bJo3b278/PzK9T4q+Y+vqOn8q2kyMjKMJDNgwIASbTsnJ8csWLDAdOrUyYSGhhpvb29TvXp106NHD7No0SKPq0KmT59uoqOjjZ+fn2ncuLF55ZVXCn2eSnPVz9atW02fPn1MlSpVTFBQkBk4cGCBe+Lk30elMJf7XjOm6Puo9OnTx4SEhBhfX1/TtGnTAldnFfV+LOzxFqao960xP9+35pprrjENGzY0OTk5xW6nOEXdAyh/cuJeQFu2bDGdO3c2AQEB7vsg7dmzp0A/SaZDhw4F2j/99FPToUMHExAQYAICAkynTp3M559/7tEn/2q+oqaUlBSP/vv37zcDBgww1apVM76+viY2NrbIG+7hynIZU4IzogBctVasWKHevXvryy+/1I033uh0OQBQKpwRBPzCJSUlacCAAYQUAFclRlQAAIC1GFEBAADWIqgAAABrEVQAAIC1CCoAAMBaV/UN3/Ly8nTw4EEFBQXxs9sAAFwljDHKyMhQnTp1Lnqn5as6qBw8eLDAr5kCAICrw4EDBxQREVFsn6s6qOT/LsSBAwfcv/EAAADslp6ersjISI9fvS7KVR1U8g/3BAcHE1QAALjKlOS0DU6mBQAA1iKoAAAAaxFU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1p8/erB8+XJTv359k5eXZxYsWGCaN29ujDEeIyqrV682wcHB5syZMx7bqF+/frEjItdff7158cUXPfZ5zz33uOfz8vJMjRo1zOzZswtd/4svvij0OS5MWlqaCQgIcI/ybN++3QQEBJi0tDSPfhcbUfH19XW/fvlT/nMN4GeMqABXkQtHTTZt2qTk5GTdcMMNys7O9ljWsmVLj/lvv/1Wbdu29Whr27atvv3221LXERcX5/53aGioGjVqVKLt9OrVS6dOndK6des0b968AqMpkrR161adOnVKYWFhqlKlintKSUnR3r17JUmZmZkaO3asrr/+elWtWlVVqlTRrl27CoyoxMbGuv/tcrlUq1Yt/fTTT4XWZv7/h+QvfI4Ls2jRItWrV09NmzaVJDVr1kz16tUr9GTh4jz++ONKTk72mG655ZZSbQP4peNkWuAq0KBBA7lcrgKHLerVqydJ8vf3L7BOYYcvLvwQNsa427y8vNxt+S52OKe4bRfG29tb9957ryZPnqwvvvhCy5YtK9AnLy9PtWvX1po1awosyz/88vjjj+vDDz/Uc889pwYNGsjf31933nmnzp4969H/whOIXS6X8vLyCq2tYcOGcrlc+vbbb9WvX79iH8e8efP0zTffyNv7f39C8/LyNHfuXP3+978vdt3zhYeHq0GDBiXuD1REjKgAV4GwsDB17dpVM2fOVGZm5iVto3Hjxvrss8882tavX6/GjRtLkqpXry5JOnTokHt5cnJyodvauHGj+98nTpzQd999p+uuu65EdTzwwANau3atbr/9dlWrVq3A8ptuukmpqany9vZWgwYNPKbw8HBJ0qeffqrBgwfrjjvu0I033qhatWpp3759Jdp/UUJDQ9W9e3f985//LPQ5PnnypCRpx44d2rJli9asWeMxErJu3Tpt3rxZX3/99WXVAcATIyrAVWLWrFlq27atWrZsqSlTpig2NlZeXl7avHmzdu3apRYtWhS7/uOPP67+/fu7T0x97733tHTpUn388ceSfh6Vad26taZPn67o6GgdPXpUTz75ZKHbmjp1qsLCwlSzZk098cQTCg8Pv+goRL7GjRvr6NGjCggIKHR5ly5dFBcXp379+ukvf/mLGjVqpIMHD2rFihXq16+fWrZsqQYNGmjp0qXq06ePXC6X/vSnPxU5UlIas2bNUps2bdSqVStNnTpVsbGxysnJUWJiombPnq1vv/1Wc+fOVatWrdS+ffsC68fFxWnu3Ln629/+VqL9ZWRkKDU11aMtICDAfSkzAHEyLXA1OXjwoHn00UdNTEyM8fHxMVWqVDGtWrUyzz77rMnMzHT3k2SWLVtWYP3iLk82xpidO3ea1q1bG39/f9OsWTPz0UcfFXoy7XvvvWduuOEG4+vra26++WaPS4cLc7FLcS+8PDk9Pd2MGDHC1KlTx/j4+JjIyEhz9913uy9tTklJMR07djT+/v4mMjLSzJw503To0MGMHDmy2H02bdrUTJ48udhaDx48aIYPH+4+2bVu3bqmb9++JikpyWRnZ5uwsDAzY8aMQtf961//asLDw012drYx5uIn00oqMD300EPF1gdUNC5jzjsgDQDFWLNmjTp27KgTJ04UuFwXAK4EzlEBAADWIqgAAABrcegHAABYixEVAABgLYIKAACwFkEFAABYi6ACAACsRVABAADWIqgAAABrEVQAAIC1CCoAAMBaBBUAAGCt/wPQEpTSTMLrgQAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_cal(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Integral = -0.044 +/- 0.022'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_qini(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 0.371 +/- 0.025'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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EwA8PT1RWlqKkydPymqvLl26hLt379YYN5GYsUMxkZFo0KAB5syZg1mzZuHrr7/GtWvXkJqais8//xxff/11tcdZWlri3Xffxbx587BlyxZcu3YNf/zxBzZs2AAAePXVV2Fvb48RI0YgKSkJ6enpOHz4MN555x38/fffKsfn5uaGI0eO4NatW8jNzQUAeHh4ICEhAcnJybhw4QLefPNNZGdny72miRMnYu7cuUhMTMS5c+cwefJkmJiYyGoz2rZti1dffRVBQUGIi4tDeno6Tpw4gQ8//BDx8fFK4zlw4ACys7Px33//VbvfwIED4evri5EjR2Lv3r3IyMhAcnIyFi1ahJMnT8peR1xcHNLS0nD69GmMGzdOodaqqtf/7rvv4vfff8f06dORlpaGK1euYNeuXXj77bcBAO3atcOQIUPw+uuv488//0RKSgqmTp1aY20bkdgxuSEyIu+//z6WLFmCyMhIeHp6YvDgwfjll1/g7u6u9LjFixdj9uzZWLJkCTw9PTF27FjZiBxra2scOXIELVu2xIsvvghPT09MnjwZDx8+VKsmJyIiAhkZGWjdurWsOWvx4sXo1q0bBg8ejH79+sHR0REjR46UO27VqlXw9fXF888/j4EDB6J3797w9PSEpaWlbJ9NmzYhKCgIs2fPRrt27TB8+HD8+eefstqeqnzyySdISEiAi4uLQp+kJ0kkEsTHx6NPnz6YPHky2rZti1deeQUZGRmyEWWrV6/GU089hV69euGFF17A4MGD0a1btxpff5cuXXD48GFcuXIFfn5+8PLywuLFi+Hk5CT32lxcXNC3b1+8+OKLsiHpRMZMIjzZOE1EZOAePHiA5s2b45NPPsGUKVN0HQ4R6QD73BCRQUtNTcXFixfRvXt35OfnIyIiAgAwYsQIHUdGRLrC5IaIDN7HH3+MS5cuwcLCAt7e3khKSoK9vb2uwyIiHWGzFBEREYkKOxQTERGRqDC5ISIiIlFhckNERESiwuSGiIiIRIXJDREREYkKkxsiIiISFSY3REREJCpMboiIiEhUmNwQERGRqPwfFuSvMgRa4HkAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_qini(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 0.373 +/- 0.024'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_qini(tmt=2, err_type='ucb1')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 1, Integral = -0.083 +/- 0.057'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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lTUW0TJ07NgxKBQKVRACgJYtW0KhUCA2NrbI7fLz8xEaGopp06ahTp06Wr1WVlYW0tPT1W5ERERUdllEGEpJSYG7u3uh5e7u7khJSSlyu8WLF8PGxgYTJkzQ+rXCwsJU45IUCgW8vb1LVTMRERFZBpOGoblz50ImkxV7O336NABAJpMV2l4IoXE5AJw5cwZffPEF1q9fX+Q6msycORNpaWmqW3JycuneHBEREVkEk44ZGj9+PAYOHFjsOr6+vjh//jz++eefQo/dvXsXHh4eGrc7cuQIUlNTUaVKFdWyvLw8TJkyBeHh4UhMTNS4nVwuh1wu1/5NmBjH8BAREb0ck4YhpVIJpVJZ4nqBgYFIS0vDyZMn0bx5cwDAiRMnkJaWhlatWmncJjQ0FJ06dVJb1rVrV4SGhmL48OEvXzwRERGVCRZxNllAQAC6deuG0aNHY82aNQCAMWPGoEePHmpnktWqVQthYWHo27cv3Nzc4ObmpvY8tra28PT0LPbsMyIiIpIWixhADQCbN29GvXr10KVLF3Tp0gX169fHxo0b1daJj49HWlqaiSokIiIiS2QRLUMA4Orqik2bNhW7jhCi2MeLGidERERE0mUxLUNEREREhsAwRERERJLGMERERESSxjBEREREksYwRERERJLGMERERESSxjBEREREksYwRERERJLGMERERESSxjBEREREksYwRERERJLGMERERESSxjBEREREksYwRERERJLGMERERESSxjBEREREksYwRERERJLGMERERESSxjBEREREkmZj6gKoaI52NkhcFGzqMoiIiMo0tgwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaQxDBEREZGkMQwRERGRpDEMERERkaTZmLoAqXK0s0HiomBTl0FERCR5FtMy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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_toc(1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 1.028 +/- 0.059'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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ERERWRQmN0RERGRRmNwQERGRRWFyQ0RERBaFyQ0RERFZFCY3REREZFGY3BAREZFFYXJDREREFoXJDREREVkUJjdERERkUZjcEBERkUVhckNEREQWhckNERERWRQmN0RERGRRmNwQERGRRWFyQ0RERBaFyQ0RERFZFCY3REREZFGY3BAREZFFMWlyExUVhYCAADg5OcHJyQnBwcHYu3dvudckJCQgKCgIdnZ2aNy4MVavXm2kaImIiKgqMGly07BhQyxYsADnzp3DuXPn8Pzzz6N///74448/1J6fnJyMsLAwdOvWDYmJifjwww8xceJExMTEGDlyIiIiMlfWpnzyl19+Wen+/PnzERUVhdOnT6NVq1Yq569evRqNGjXCsmXLAAD+/v44d+4cFi9ejFdeecUYIRMREZGZM5uam6KiInz//ffIyclBcHCw2nNOnTqF3r17K7X16dMH586dQ0FBgdpr8vLykJ2drXQjIiIiy2Xy5ObSpUtwdHSEXC7H2LFj8dNPP6Fly5Zqz01PT4ebm5tSm5ubGwoLC5GZman2msjISDg7O0s3Ly8vvb8GIiIiMh8mT278/PyQlJSE06dP47333sOIESNw+fLlMs+XyWRK94UQatsVZs6ciaysLOl2584d/QVPREREZsekNTcAYGtri6ZNmwIAOnTogLNnz+Krr77CN998o3Kuu7s70tPTldoyMjJgbW2NevXqqX18uVwOuVyu/8B1kJtfiJaz9wEALs/rAwdbk7/9REREFsfkPTelCSGQl5en9lhwcDAOHDig1LZ//3506NABNjY2xgiPiIiIzJxJk5sPP/wQx44dQ0pKCi5duoRZs2bhyJEjeOONNwA8HVIaPny4dP7YsWNx+/ZtRERE4MqVK9iwYQPWr1+PqVOnmuolEBERkZkx6bjI33//jWHDhiEtLQ3Ozs4ICAjAL7/8gl69egEA0tLSkJqaKp3v6+uLuLg4TJ48GV9//TU8PT2xfPlyTgMnIiIiiUmTm/Xr15d7fNOmTSptoaGhuHDhgoEiIiIioqrO7GpuiIiIiCqDyQ0RERFZFCY3REREZFGY3BAREZFFYXJjZnLzC+EzYw98ZuxBbn6hqcMhIiKqcpjcEBERkUVhckNEREQWhckNERERWRQmN0RERGRRmNwQERGRRWFyQ0RERBaFyQ0RERFZFCY3REREZFGY3BAR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\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_t.plot_toc(2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<Axes: title={'center': 'Treatment = 2, Integral = 1.049 +/- 0.058'}, xlabel='Percentage treated', ylabel='Gain over Random'>\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTEUlEQVR4nO3deViUVfsH8O/IMqAIiiiLIuBGiKIImWiKRWpiLlnmq+aSWpmYKS6pLS69hpolqYmv5oZL6Ruk5r4B7rlBmruGQgSRmaAi+/n94Y/nZWCAmWF2vp/rmutyzvM8w/3MINycc59zZEIIASIiIiIzUcvQARARERFpE5MbIiIiMitMboiIiMisMLkhIiIis8LkhoiIiMwKkxsiIiIyK0xuiIiIyKwwuSEiIiKzwuSGiIiIzAqTG1JKJpOp9IiPj9dLPFu2bEFkZKRevlZ15eTkYM6cOXp7b0pLT0/Hxx9/jKCgIDg5OcHe3h4BAQFYtWoVioqKNH7d7t27o02bNhpde/LkScyZMwcPHjzQ+Ovrm6enJ0aNGqXXr3n8+HGMHTsWAQEBkMvlkMlkuHPnjlqvcejQIQQFBaF27dpwcnLCqFGjkJmZWeU1Jf+f7927V+745s2b4e/vDxsbGzg5OWHo0KFITU1VKy5NLV26FA0aNEBhYaFG12vyfpT2/fffo3379rCxsYGbmxsmTZqER48eKZwTHx9f4c/H06dPK5wrhMDq1asREBAAe3t7NGjQAMHBwdi9e7dG90cVY3JDSp06dUrhERoaCltb23LtHTp00Es8ppbczJ071yDJzfnz5xEdHY2QkBBER0cjJiYGwcHBeO+99/D222/rPR7gaXIzd+5ck0puDOHw4cM4dOgQmjZtis6dO6t9fUJCAnr37g1nZ2fs2LEDX3/9NQ4dOoSQkBDk5eUpvebRo0d4++234ebmpvT4smXL8OabbyIwMBA7duzAwoULER8fj65du+Kff/5RO0Z1xcTEoH///rC0tFT7Wk3ej9I2b96MIUOG4Nlnn8XevXsxe/ZsrF+/HgMHDlR6/ueff17u52PZPwhmz56Nd955Bx07dkRMTAzWr18PuVyOV155BbGxsWrfI1VCEKlg5MiRok6dOlWe9/jxY518/T59+ggPDw+dvLa2/fXXXwKAmD17tt6/9v3790V+fn659rCwMAFApKSkaPS6wcHBwtfXV6Nrv/jiCwFAJCcna3R9dRUWForc3Fy1rvHw8BAjR47UTUAVKCoqkv6tyXv27LPPitatW4uCggKp7cSJEwKAWLFihdJrwsLChL+/v/j4448FAPHXX39Jx3Jzc4WDg4Po27evwjUnT54UAMSsWbNUjq1EcnKyACDi4uKqPDcjI0PUqlVL7Nq1S+2vI4Rm70eJwsJC4erqKnr27KnQvnnzZgFA7NmzR2qLi4sTAMR///vfKmNq3LixeP755xXanjx5IhwcHES/fv1UuS1SEXtuSGMlQxVHjx5F586dUbt2bYwePRoAkJ2djalTp8LLywvW1tZo3LgxJk2ahMePHyu8xjfffINu3bqhUaNGqFOnDtq2bYtFixahoKBA4evs3r0bd+/eVejyBYA7d+5AJpPhiy++wMKFC+Hp6QlbW1t0794dN27cQEFBAWbMmAE3Nzc4ODjg1VdfVdotvXXrVgQFBaFOnTqws7NDr169kJiYqHDOqFGjYGdnh1u3biE0NBR2dnZwd3fHlClTpL8E79y5g4YNGwIA5s6dK8WqryGO+vXrw8rKqlx7x44dAQC///671r6WTCbDhAkTsHHjRvj4+KB27dpo164ddu3aJZ0zZ84cTJs2DQDg5eWldDhTlfceAFavXo1WrVpBLpejdevW2LJlC0aNGgVPT0/pnJLvh0WLFuHf//43vLy8IJfLERcXh9zcXEyZMgXt27eHg4MDHB0dERQUhB07dmjtPamOWrU0/3GclpaGs2fPYvjw4Qq9HJ07d0arVq3w448/lrvm2LFjWLVqFb799ltYWFiUO/7rr78iKysLoaGhCu1BQUFwdHRETEyMxvGq4scff4SdnR1eeuklta/V5P0o7fTp00hPT8dbb72l0D5o0CDY2dlVeX1FrKys4ODgoNBmY2MjPUh7mNxQtaSnp+PNN9/E0KFDsWfPHowfPx45OTkIDg7Ghg0bMHHiROzduxcffvgh1q9fj379+kGU2oj+9u3bGDp0KDZu3Ihdu3ZhzJgx+OKLL/Duu+9K56xYsQJdunSBi4uLQpdvad988w1OnDiBb775Bt9++y2uXbuGvn37YsyYMfjrr7+wdu1aLFq0CIcOHcLYsWMVrv38888xZMgQtG7dGtu2bcPGjRvx8OFDdO3aFVeuXFE4t6CgAP369UNISAh27NiB0aNHY8mSJVi4cCEAwNXVFfv27QMAjBkzRor1k08+qfR9LCwsVOlR+r1Tx5EjR2BpaYlWrVppdH1Fdu/ejeXLl2PevHmIiYmBo6MjXn31Vfz2228AgLFjx+L9998HAMTGxpYbzlT1vV+1ahXeeecd+Pn5ITY2Fh9//HGlQ39Lly7FkSNHsHjxYuzduxfPPPMM8vLycP/+fUydOhXbt2/Hd999h+effx4DBw5EdHS0RvdfVFSk0udWXFys0eur6tdffwUA+Pn5lTvm5+cnHS/x5MkTjBkzBpMmTapwaDk/Px8AIJfLyx2Ty+W4efMmcnNzqxt6hWJiYvDKK68o/fpVUff9UPV6KysrPPPMM0qvDwsLg6WlJezt7dGrVy8cP3683DkffPAB9u3bhzVr1uCff/5Beno6wsPDkZWVhYkTJ6p8f6QCQ3cdkWlQNiwVHBwsAIjDhw8rtEdERIhatWqJs2fPKrT/8MMP5bp0SysqKhIFBQUiOjpaWFhYiPv370vHKhqWKunmbteunUK3fmRkpABQrqt30qRJAoDIysoSQgiRkpIiLC0txfvvv69w3sOHD4WLi4t44403FN4DAGLbtm0K54aGhgpvb2/puSbDUgBUeqxbt07l1yyxf/9+UatWLTF58mS1ry2hbFgKgHB2dhbZ2dlSW8lQQkREhNRW0RCLqu99UVGRcHFxEc8995zCeXfv3hVWVlYK3xcl3w/NmzdXOjxXWmFhoSgoKBBjxowR/v7+CsdUHZYq+T9Q1UPdIS51h6VKhktOnTpV7tg777wjrK2tFdqmTJkimjVrJnJycoQQQsyePbvcsNTff/8tatWqJcaMGaNw7a1bt6T7+uOPPyqNq+T/dMmj5NpDhw4ptBcWFipcd+/ePWFpaSliYmJUuv+y1H0/ypo/f74AINLT08sd69mzp2jVqpX0/MKFC+KDDz4QP/74ozh69KhYu3at8PHxERYWFmLfvn3lrl+5cqWQy+XSe+jo6CgOHjyowV1SZdSv0iIqpX79+njxxRcV2nbt2oU2bdqgffv2CrMcevXqJQ1J9O7dGwCQmJiI2bNn48SJE7h//77C69y4cQPPPfecSnGEhoYqdOv7+PgAAPr06aNwXkl7SkoK2rRpg/3796OwsBAjRoxQiNXGxgbBwcGIi4tTuF4mk6Fv374KbX5+fjhy5IhKcVbk7NmzKp3n5eWl1uteuHABb7zxBjp16oSIiAhNQqvUCy+8gLp160rPnZ2d0ahRI9y9e7fKa1V9769fv46MjAxpeKtE06ZN0aVLFyQnJ5d77X79+ikdnvvvf/+LyMhI/PLLLwpDpJoOCfznP//Bw4cPqzzPyclJo9dXV8lwbWXtZ86cQWRkJPbt2wdbW9sKX8vR0RHDhg1DdHQ0nn32WQwaNAi///473nnnHVhYWKCoqKjKobTRo0djw4YN5drLDjUFBwcr9MLt2LED1tbWePnll6W2sjOmLCwsKrzfEqq8H9W93t/fH/7+/tLzrl274tVXX0Xbtm0xffp09OrVSzq2bt06fPDBB5gwYQJ69+6N/Px8REdHo3///oiNjVU4l6qHyQ1Vi6ura7m2P//8E7du3VL6ywWANN00JSUFXbt2hbe3N77++mt4enrCxsYGZ86cQVhYGJ48eaJyHI6OjgrPra2tK20v6U7/888/AQDPPvus0tct+8O7du3a5X4RyuXyanfPt2/fXqXzlNVGVCQxMRE9evRAy5YtsWfPHo2696vSoEGDcm1yuVylz07V9/7vv/8G8DRxKsvZ2VlpcqPs+zI2NhZvvPEGBg0ahGnTpsHFxQWWlpaIiorC2rVrq4xXmRYtWqg0VFidehpVlHwOJe9Vaffv31f4fzB69GgMHDgQgYGB0gy2ku/f7OxsyOVyKWGNioqCEALjx4/HuHHjUKtWLQwfPhzOzs7Yv3+/0s+/tDlz5mDChAnS8/T0dPTr1w8rV65EQECA1F46QQaAH374Ab1790bt2rWltrI/T9atW1dhLZs670dV15f9vlPl+nr16uGVV17BypUr8eTJE9ja2uKff/5BWFgYxo4di8WLF0vn9u7dG927d8e4ceOUfi+TZpjcULUo+8vGyckJtra2Ff7CKPkrdvv27Xj8+DFiY2Ph4eEhHU9KStJJrJXF8sMPPyjEoG8VJYJlVfYDvbTExES89NJL8PDwwIEDB8oVMRoDVd/7kl80JclQaRkZGUqvUfZ9uWnTJnh5eWHr1q0Kx1WZFlyRkJAQJCQkVHneyJEjsX79eo2/TlVKphxfunSpXAHwpUuXFKYkX758GZcvX8Z///vfcq/TvHlztGvXTvo/WKdOHWzcuBFLly5Famoq3Nzc4OTkhGeeeQadO3eucoq2p6dnuYJvAPD29kZgYKDSa7KysnD48OFy71fZ3s3KejHVeT+Uadu2rXRu69atpfbCwkJcu3YNQ4YMqfR6AFLSW/K9dv36dTx58kRpMh8YGIiEhAQ8evQIdnZ2Vb42VY3JDWndK6+8gs8//xwNGjSo9AdQyX/60j0K4v8XuSpL1d4AdfXq1QuWlpa4ffs2XnvtNa28Zsn9qBOvNoelkpKS8NJLL6FJkyY4ePAg6tevr3IculDR+6Hqe+/t7Q0XFxds27YN4eHhUntKSgpOnjxZ4RotZclkMlhbWyskNhkZGdWaLWUsw1KNGzdGx44dsWnTJkydOlXq4Tt9+jSuX7+OSZMmSeeWHWoFgPXr12PDhg3Yvn07GjduXO54/fr1pe+jnTt34vr161IRvbb99NNPkMlkeOWVVxTaK0qGlFHn/VDmueeeg6urK9avX4/BgwdL7T/88AMePXpU4Vo3Jf755x/s2rVLWgAQgPR9evr0aYwcOVI6VwiB06dPo379+qhTp47K90iVY3JDWjdp0iTExMSgW7dumDx5Mvz8/FBcXIyUlBQcOHAAU6ZMwXPPPYcePXrA2toaQ4YMwfTp05Gbm4uoqCili4O1bdsWsbGxiIqKQkBAAGrVqqXWD7uKeHp6Yt68efjoo4/w22+/4eWXX0b9+vXx559/4syZM6hTpw7mzp2r1mvWrVsXHh4e2LFjB0JCQuDo6AgnJyeFv2DL0sa9AE//OiypZ5g/fz5u3ryJmzdvSsebN28uTVUHnv7CL1vvoG0lfwV//fXXGDlyJKysrODt7a3ye1+rVi3MnTsX7777Ll5//XWMHj0aDx48wNy5c+Hq6qrykE/JQmnjx4/H66+/jtTUVHz22WdwdXVVeI/U4e3trdF1yvz1119SL9ClS5cAAHv37kXDhg3RsGFDBAcHS+daWloiODgYhw8fltoWLlyIHj16YNCgQRg/fjwyMzMxY8YMtGnTRmFKc/fu3ct97ZLPv0uXLgqJWExMDP744w/4+PggNzcX8fHx+PrrrzFu3Dj0799fa/de2g8//IAePXqUG6pSl6rvx927d9G8eXOMHDkSa9asAfB0+HfRokUYPnw43n33XQwZMgQ3b97E9OnT0aNHD4VaoKFDh6Jp06YIDAyEk5MTbt68iS+//BJ//vmnQu9T06ZNMXDgQKxatQpyuRyhoaHIy8vDhg0bcOLECXz22Wcq1wKRCgxazkwmo6LZUhUt7Pbo0SPx8ccfC29vb2FtbS0cHBxE27ZtxeTJk0VGRoZ03k8//STatWsnbGxsROPGjcW0adPE3r17yy30df/+ffH666+LevXqCZlMJkq+dUtmx3zxxRcKX7+ihbXWrVsnAJSbybV9+3bxwgsvCHt7eyGXy4WHh4d4/fXXxaFDhyp9D4T430yT0g4dOiT8/f2lWRH6WhCu5P4qepSebfXw4UMBQPzrX/+q8nUrmi0VFhZW7lxlM41mzpwp3NzcRK1atcp9tqq890IIsWrVKtGiRQthbW0tWrVqJdauXSv69++vMNOpou+HEgsWLBCenp5CLpcLHx8fsXr1aqWfnyEW8Sv5nlX2CA4OVjhXWZsQQhw4cEB06tRJ2NjYCEdHRzFixAjx559/Vvm1lc2WEkKIH3/8UbRv317UqVNH2NraisDAQLFmzRpRXFys0T1WtYjfo0ePhI2NjUazApVR5f0oiUnZ571lyxbh5+cnrK2thYuLi5g4caJ4+PChwjkRERGiffv2wsHBQVhYWIiGDRuKV199VZw5c6bc6z158kR88cUXws/PT9StW1c4OjqKTp06iU2bNmn8npJyMiE0XDiDiEzanj178Morr+CXX36ReldMyYMHD9CqVSsMGDAAq1atMnQ4pAXbtm3DsGHD8Oeff1ZZtEtUGSY3RDXUtGnTkJaWhi1bthg6lCplZGRg/vz5eOGFF9CgQQPcvXsXS5YswbVr13Du3Dn4+voaOkQiMiJMbojI6P3zzz8YMWIEzp49i/v376N27dro1KkT5s6dq/JaSERUczC5ISIiIrPCvaWIiIjIrDC5ISIiIrPC5IaIiIjMSo1bxK+4uBh//PEH6tatywWTiIiITIQQAg8fPoSbm1uVi3fWuOTmjz/+gLu7u6HDICIiIg2kpqaiSZMmlZ5T45KbkiW9U1NTYW9vb+BoiIiISBXZ2dlwd3dXaWuOGpfclAxF2dvbM7khIiIyMaqUlLCgmIiIiMwKkxsiIiIyK0xuiIiIyKwwuSEiIiKzwuSGiIiIzAqTGyIiIjIrTG6IiIjIrDC5ISIiIrPC5IaIiIjMCpMbIiIiMitMboiIiMisGDS5iYqKgp+fn7TPU1BQEPbu3Vvh+fHx8ZDJZOUe165d02PUREREZMwMunFmkyZNsGDBArRo0QIAsGHDBvTv3x+JiYnw9fWt8Lrr168rbHrZsGFDncdKREREpsGgyU3fvn0Vns+fPx9RUVE4ffp0pclNo0aNUK9ePR1HR0RERKbIaGpuioqK8P333+Px48cICgqq9Fx/f3+4uroiJCQEcXFxeoqwcjn5hfCcsRueM3YjJ7/Q0OEQERHVWAbtuQGAS5cuISgoCLm5ubCzs8OPP/6I1q1bKz3X1dUVq1atQkBAAPLy8rBx40aEhIQgPj4e3bp1U3pNXl4e8vLypOfZ2dk6uQ8iIiIyDgZPbry9vZGUlIQHDx4gJiYGI0eOREJCgtIEx9vbG97e3tLzoKAgpKamYvHixRUmNxEREZg7d67O4iciIiLjYvBhKWtra7Ro0QKBgYGIiIhAu3bt8PXXX6t8fadOnXDz5s0Kj8+cORNZWVnSIzU1VRthExERkZEyeM9NWUIIhWGkqiQmJsLV1bXC43K5HHK5XBuhERERkQkwaHIza9Ys9O7dG+7u7nj48CG+//57xMfHY9++fQCe9rqkpaUhOjoaABAZGQlPT0/4+voiPz8fmzZtQkxMDGJiYgx5G0RERGREDJrc/Pnnnxg+fDjS09Ph4OAAPz8/7Nu3Dz169AAApKenIyUlRTo/Pz8fU6dORVpaGmxtbeHr64vdu3cjNDTUULdARERERkYmhBCGDkKfsrOz4eDggKysLIWFAKsrJ78QrT/dDwC4Mq8Xalsb3YgfERGRyVLn97fBC4qJiIiItInJDREREZkVJjdERERkVpjcEBERkVlhckNERERmhckNERERmRUmN0RERGRWmNwQERGRWWFyQ0RERGaFyQ0RERGZFSY3REREZFaY3BAREZFZYXKjRzn5hfCcsRueM3YjJ7/Q0OEQERGZJSY3REREZFaY3BAREZFZYXJDREREZoXJDREREZkVJjdERERkVpjcEBERkVlhckNERERmhckNERERmRUmN0RERGRWmNwQERGRWWFyQ0RERGaFyQ0RERGZFSY3REREZFaY3BAREZFZYXJDREREZoXJDREREZkVJjdERERkVpjcEBERkVlhckNERERmhckNERERmRUmN0RERGRWmNwYmZz8QnjO2A3PGbuRk19o6HCIiIhMDpMbIiIiMitMboiIiMisMLkhIiIis2LQ5CYqKgp+fn6wt7eHvb09goKCsHfv3kqvSUhIQEBAAGxsbNCsWTOsXLlST9ESERGRKTBoctOkSRMsWLAA586dw7lz5/Diiy+if//+uHz5stLzk5OTERoaiq5duyIxMRGzZs3CxIkTERMTo+fIiYiIyFhZGvKL9+3bV+H5/PnzERUVhdOnT8PX17fc+StXrkTTpk0RGRkJAPDx8cG5c+ewePFivPbaa/oImYiIiIyc0dTcFBUV4fvvv8fjx48RFBSk9JxTp06hZ8+eCm29evXCuXPnUFBQoPSavLw8ZGdnKzyIiIjIfBk8ubl06RLs7Owgl8sxbtw4/Pjjj2jdurXSczMyMuDs7KzQ5uzsjMLCQty7d0/pNREREXBwcJAe7u7uWr8HIiIiMh4GT268vb2RlJSE06dP47333sPIkSNx5cqVCs+XyWQKz4UQSttLzJw5E1lZWdIjNTVVe8ETERGR0TFozQ0AWFtbo0WLFgCAwMBAnD17Fl9//TX+85//lDvXxcUFGRkZCm2ZmZmwtLREgwYNlL6+XC6HXC7XfuBERERklAzec1OWEAJ5eXlKjwUFBeHgwYMKbQcOHEBgYCCsrKz0ER4REREZOYMmN7NmzcKxY8dw584dXLp0CR999BHi4+MxbNgwAE+HlEaMGCGdP27cONy9exfh4eG4evUq1q5dizVr1mDq1KmGugUiIiIyMgYdlvrzzz8xfPhwpKenw8HBAX5+fti3bx969OgBAEhPT0dKSop0vpeXF/bs2YPJkyfjm2++gZubG5YuXcpp4ERERCQxaHKzZs2aSo+vX7++XFtwcDAuXLigo4iIiIjI1BldzQ0RERFRdTC5ISIiIrPC5IaIiIjMCpMbIiIiMitMboiIiMisMLkhIiIis8LkhoiIiMwKkxsiIiIyK0xuiIiIyKwwuSEiIiKzwuTGROXkF8Jzxm54ztiNnPxCQ4dDRERkNJjcEBERkVlhckNERERmhckNERERmRUmNzpw516OoUMgIiKqsZjcaMGDnHy8veG89Dx06TGMWHMGWTkFBoyKiIioZmJyowUTv0vCqdv3FNpO3LqH979LNFBERERENReTm2r67a9HOHrzLxSXaS8SAkdv/oXke48NEhcREVFNxeSmmu7er7y+5s7fTG6IiIj0iclNNXk41q70uGeDOnqKhIiIiAAmN9XWrKEdurVsWO6NtJDJ0K1lQ3g5MbkhIiLSJyY3WrBsiD+CmjsptHVp4YRlQ/wrvEYf08W5RQMREdVETG60wKG2FVaPDJCe75nYFdFjOsKhtpXUxuniRERE+sHkRgc8ncrX4XC6OBERkX4wudEDThcnIiLSHyY3esDp4kRERPrD5EYPOF2ciIhIf5jc6AGnixMREekPkxs90WS6OBEREamPyY2eqDJdnIiIiKqPyY2BKJsuTkRERNXH5KaG4yrGRERkbpjcEBERkVlhcmPE9LH/FBERkblhcmNEuP8UERFR9TG5MSLcf4qIiKj6mNwYCe4/RUREpB0GTW4iIiLw7LPPom7dumjUqBEGDBiA69evV3pNfHw8ZDJZuce1a9f0FLVucP8pIiIi7TBocpOQkICwsDCcPn0aBw8eRGFhIXr27InHj6v+RX79+nWkp6dLj5YtW+ohYt0x5v2nOF2ciIhMiaUhv/i+ffsUnq9btw6NGjXC+fPn0a1bt0qvbdSoEerVq6fD6PSrZP+p42WGpixkMnRp4cT9p4iIiFRkVDU3WVlZAABHR8cqz/X394erqytCQkIQFxdX4Xl5eXnIzs5WeBgr7j9FRERUfUaT3AghEB4ejueffx5t2rSp8DxXV1esWrUKMTExiI2Nhbe3N0JCQnD06FGl50dERMDBwUF6uLu76+oWqo37TxEREVWfQYelSpswYQIuXryI48ePV3qet7c3vL29pedBQUFITU3F4sWLlQ5lzZw5E+Hh4dLz7Oxso05wSuP+U0REROozip6b999/Hzt37kRcXByaNGmi9vWdOnXCzZs3lR6Ty+Wwt7dXeBAREZH5MmjPjRAC77//Pn788UfEx8fDy8tLo9dJTEyEq6urlqMjIiIiU2TQ5CYsLAxbtmzBjh07ULduXWRkZAAAHBwcYGtrC+DpsFJaWhqio6MBAJGRkfD09ISvry/y8/OxadMmxMTEICYmxmD3QURERMbDoMlNVFQUAKB79+4K7evWrcOoUaMAAOnp6UhJSZGO5efnY+rUqUhLS4OtrS18fX2xe/duhIaG6itsIiIiMmIGH5aqyvr16xWeT58+HdOnT9dRRKSpnPxCtP50PwDgyrxeqG1tNLXqRERUw2j0Gyg3NxcXL15EZmYmiosVd0Pq16+fVgIjIiIi0oTayc2+ffswYsQI3Lt3r9wxmUyGoqIirQRGREREpAm1p4JPmDABgwYNQnp6OoqLixUeTGyIiIjI0NRObjIzMxEeHg5nZ2ddxEMauHOv8h3FiYiIahK1k5vXX38d8fHxOgiFVPUgJx9vbzgvPQ9degwj1pxBVk6BAaMiIiIyDmrX3CxfvhyDBg3CsWPH0LZtW1hZKe57NHHiRK0FR8pN/C4Jp24r1jyduHUP73+XiOgxHQ0UFRERkXFQO7nZsmUL9u/fD1tbW8THx0Mmk0nHZDIZkxsd++2vRzh6869y7UVC4OjNv5B87zG8nOoYIDIiIiLjoHZy8/HHH2PevHmYMWMGatUyiq2papS79yuvr7nzN5MbIiKq2dTOTvLz8zF48GAmNgbi4Vj5TuGeDZjYEBFRzaZ2hjJy5Ehs3bpVF7GQCpo1tEO3lg3LfXAWMhm6tWzIXhsiIqrx1B6WKioqwqJFi7B//374+fmVKyj+6quvtBYcKbdsiD/Gb76AE6WKiru0cMKyIf4VXnPnXg5au9nrI7xKcZsGIiLSNbV/s1y6dAn+/k9/if76668Kx0oXF5PuONS2wuqRAVKSsGdi13KJy4OcfIRtTpSehy49hm4tG2LZEH841FZMSImIiMyJ2slNXFycLuKgavB0Kl+Hw+niRERUU1WrKvj3339HWlqatmIhLSmZLl5cpr30dHEiIiJzpXZyU1xcjHnz5sHBwQEeHh5o2rQp6tWrh88++6zcDuFkGKpMFyciIjJXag9LffTRR1izZg0WLFiALl26QAiBEydOYM6cOcjNzcX8+fN1ESepgdPFiYioJlM7udmwYQO+/fZb9OvXT2pr164dGjdujPHjxzO5MQIl08WPlxmaspDJ0KWFE6eLExGRWVN7WOr+/ft45plnyrU/88wzuH//vlaCoupbNsQfQc2dFNpUmS5ORERk6tRObtq1a4fly5eXa1++fDnatWunlaCo+kqmi5fYM7Erosd0VJgGzt3FiYjIHKk9LLVo0SL06dMHhw4dQlBQEGQyGU6ePInU1FTs2bNHFzGSFnC6OBER1RRq99wEBwfjxo0bePXVV/HgwQPcv38fAwcOxPXr19G1a1ddxEg6YMzTxXPyC+E5Yzc8Z+xGTn6hweIgIiLTpNHa925ubiwcNnGa7i5uLNs4EBERVUSl5ObixYsqv6Cfn5/GwZD+qDpdnNs4EBGRqVEpuWnfvj1kMhmEEAr7RwkhACjuKVVUVKTlEEkXVJ0ubqx1OdyAk4iIKqJSzU1ycjJ+++03JCcnIyYmBl5eXlixYgWSkpKQlJSEFStWoHnz5oiJidF1vKRFVU0XN+a6HCIiooqo9Oeuh4eH9O9BgwZh6dKlCA0Nldr8/Pzg7u6OTz75BAMGDNB6kKQbVe0urmldDhERkSGpPVvq0qVL8PLyKtfu5eWFK1euaCUoMoyy08W5jQMREZkitZMbHx8f/Pvf/0Zubq7UlpeXh3//+9/w8fHRanBkWCV1OWW/SSxkMnRr2ZC9NkREZJTUrsJcuXIl+vbtC3d3d2lF4l9++QUymQy7du3SeoBkWMuG+GP85gs4UaqoWJVtHDhdnIiIDEXt5KZjx45ITk7Gpk2bcO3aNQghMHjwYAwdOhR16vAveXNTVV0OwOniRERkXDSaP1u7dm2888472o6FTIApbePA6eJERDWTRj/tb9y4gfj4eGRmZqK4WHGi8KeffqqVwMg0lEwXL6v0dHHW5hARkT6pndysXr0a7733HpycnODi4qKwgJ9MJmNyU8NwujgRERkbtZObf//735g/fz4+/PBDXcRDJobTxYmIyNioPRX8n3/+waBBg3QRC5kgThcnIiJjo3ZyM2jQIBw4cEAXsZCJqmobByIiIn1Se1iqRYsW+OSTT3D69Gm0bdsWVlaKU30nTpyoteDINKgyXZyIiEhf1E5uVq1aBTs7OyQkJCAhIUHhmEwmUyu5iYiIQGxsLK5duwZbW1t07twZCxcuhLe3d6XXJSQkIDw8HJcvX4abmxumT5+OcePGqXsrpCPKposrw8X+iIhIF9RObpKTk7X2xRMSEhAWFoZnn30WhYWF+Oijj9CzZ09cuXKlwgUBk5OTERoairfffhubNm3CiRMnMH78eDRs2BCvvfaa1mIj7TPGxf64Fg4Rkfkx6E/yffv2KTxft24dGjVqhPPnz6Nbt25Kr1m5ciWaNm2KyMhIAE/3ujp37hwWL15s9MlNbWtL3FnQx9BhGIyxLvZHRETmRaPk5vfff8fOnTuRkpKC/Px8hWNfffWVxsFkZWUBABwdHSs859SpU+jZs6dCW69evbBmzRoUFBSUqwHKy8tDXl6e9Dw7O1vj+PTBXBMgLvZHRET6onZyc/jwYfTr1w9eXl64fv062rRpgzt37kAIgQ4dOmgciBAC4eHheP7559GmTZsKz8vIyICzs7NCm7OzMwoLC3Hv3j24uroqHIuIiMDcuXM1jou0g4v9ERGRvqg9FXzmzJmYMmUKfv31V9jY2CAmJgapqakIDg6u1vo3EyZMwMWLF/Hdd99VeW7pVZGBp4mRsvaSeLOysqRHamqqxjGS5rjYHxER6Yvayc3Vq1cxcuRIAIClpSWePHkCOzs7zJs3DwsXLtQoiPfffx87d+5EXFwcmjRpUum5Li4uyMjIUGjLzMyEpaUlGjRoUO58uVwOe3t7hQfpn6kv9peTXwjPGbvhOWM3cvILDR0OERFVQu3kpk6dOlINi5ubG27fvi0du3fvXkWXKSWEwIQJExAbG4sjR47Ay8urymuCgoJw8OBBhbYDBw4gMDCwXL0NGRcu9kdERPqgds1Np06dcOLECbRu3Rp9+vTBlClTcOnSJcTGxqJTp05qvVZYWBi2bNmCHTt2oG7dulKPjIODA2xtbQE8HVZKS0tDdHQ0AGDcuHFYvnw5wsPD8fbbb+PUqVNYs2aNSsNZumSuhcDapMlif1wLh4iI1KV2cvPVV1/h0aNHAIA5c+bg0aNH2Lp1K1q0aIElS5ao9VpRUVEAgO7duyu0r1u3DqNGjQIApKenIyUlRTrm5eWFPXv2YPLkyfjmm2/g5uaGpUuXGv00cCpP2WJ/xrgWDhERmRa1k5tmzZpJ/65duzZWrFih8RcvKQSuzPr168u1BQcH48KFCxp/XTJemqyFw94dIiIqTe2am4rExsbCz89PWy9HNVDJWjjFZdpLr4UDPO3deXvDeel46NJjGLHmDLJyCvQYLRERGSu1kpvVq1dj0KBBGDp0KH7++WcAwJEjR+Dv748333wTQUFBOgmSagZV1sIBKu/dISIiUjm5Wbx4McLCwpCcnIwdO3bgxRdfxOeff4433ngDAwYMQEpKCv7zn//oMlYyc6qshaNq7w4REdVcKtfcrFmzBitXrsTo0aMRHx+PF198EUeOHMGtW7dQr149HYZIypjj7KyStXCOl0leLGQydGnhBC+nOoi7nlnpa3ClYyIiUrnn5u7du3jppZcAPJ3dZGVlhfnz5zOxIa2qai0cY17pmAv9EREZB5WTm9zcXNjY2EjPra2t0bBhQ50ERTVXyVo4JfZM7IroMR2laeCarnR8517l9TxERGQ+1JoK/u2338LOzg4AUFhYiPXr18PJSfGv7IkTJ2ovOqrxlK2Fs2yIP8ZvvoATpYqKy650zPVyiIhqLpWTm6ZNm2L16tXScxcXF2zcuFHhHJlMxuTGiJhjXQ6g2krHmqyXQ0RE5kHl5ObOnTs6DINIc2V7d0pmVJVVekYVi46JiMyX1hbxIzIWqq6XYwgsOiYi0j0mN2R2jHlGFRER6Z7ae0uReTHHuhxV1stRhntUERGZB/bckFmqar0cgHtUERGZK7WSm8LCQmzYsAEZGRm6ioeMUEnvzp0FfVDb2jQ6+6paLwfgHlVEROZKreTG0tIS7733HvLy8nQVD5FOVDSjintUERGZH7WHpZ577jkkJSXpIBQi/eGMKiIi86X2GMP48eMRHh6O1NRUBAQEoE4dxeJMPz8/rQVHpCvVmVHFwmMiIuOmdnIzePBgAIrbLMhkMgghIJPJUFRUpL3oyGSY2qwrdWZUcSsHIiLTonZyk5ycrIs4iPROlT2qAG7lQERkatRObjw8PHQRB5HeqbJHlbFu5ZCTXyjFfWVeL5OZxUZEpA8arXOzceNGdOnSBW5ubrh79y4AIDIyEjt27NBqcET6pGwHcmMuPCYiIuXUTm6ioqIQHh6O0NBQPHjwQKqxqVevHiIjI7UdH5FBcSsHIiLTo3Zys2zZMqxevRofffQRLCwspPbAwEBcunRJq8ERGVpJ4XHZ/ygWMhm6tWzI3cWJiIyQ2slNcnIy/P39y7XL5XI8fswueqqcKa52rMpWDkREZDzUTm68vLyULuK3d+9etG7dWhsxERkVVbZyICIi46H2n87Tpk1DWFgYcnNzIYTAmTNn8N133yEiIgLffvutLmIkMirKCo/L4kJ/RESGo3Zy89Zbb6GwsBDTp09HTk4Ohg4disaNG+Prr7/Gv/71L13ESGT0jHWhP04ZJ6KaSKOp4G+//Tbu3r2LzMxMZGRkIDU1FWPGjNF2bEQmgzuMExEZD7WTm7lz5+L27dsAACcnJzRq1EjrQRGZEu4wTkRkXNRObmJiYtCqVSt06tQJy5cvx19/lV+9lagm4UJ/RETGRe3k5uLFi7h48SJefPFFfPXVV2jcuDFCQ0OxZcsW5ORU/kOeSBWmNl1c04X+7tzj/xciIl3QqObG19cXn3/+OX777TfExcXBy8sLkyZNgouLi7bjI1LKmBIgVRf6e5CTj7c3nJeOhy49hhFrziArp0CP0RIRmT+NkpvS6tSpA1tbW1hbW6OggD+kqWZSZaE/Fh0TEemHRslNcnIy5s+fj9atWyMwMBAXLlzAnDlzkJGRoe34iExCVQv9GXPRcU5+ITxn7IbnjN3IyS80WBxERNqidn9+UFAQzpw5g7Zt2+Ktt96S1rkhov8pu9CfKkXH3KeKiEg71E5uXnjhBXz77bfw9fXVRTxEWlNSl2MMqlN0zJWOiYjUo/aw1Oeffy4lNkIICCG0HhSRuWHRMRGR/mhUcxMdHY22bdvC1tYWtra28PPzw8aNG9V+naNHj6Jv375wc3ODTCbD9u3bKz0/Pj4eMpms3OPatWua3AaRXrHomIhIP9RObr766iu89957CA0NxbZt27B161a8/PLLGDduHJYsWaLWaz1+/Bjt2rXD8uXL1bru+vXrSE9Plx4tW7ZU63oiQ9BV0THXyyEiUqR2zc2yZcsQFRWFESNGSG39+/eHr68v5syZg8mTJ6v8Wr1790bv3r3VDQGNGjVCvXr11L6OyJhoWnRsiE06uQEnEZkStXtu0tPT0blz53LtnTt3Rnp6ulaCqoq/vz9cXV0REhKCuLi4Ss/Ny8tDdna2woPIGKladMyhKyKiyqmd3LRo0QLbtm0r175161adDw+5urpi1apViImJQWxsLLy9vRESEoKjR49WeE1ERAQcHBykh7u7u05jJNNiaisdG/N6OURExkLtn+Zz587F4MGDcfToUXTp0gUymQzHjx/H4cOHlSY92uTt7Q1vb2/peVBQEFJTU7F48WJ069ZN6TUzZ85EeHi49Dw7O5sJDhmtZUP8MX7zBZwo1TNTuuiY6+UQEVVN7Z6b1157DT///DOcnJywfft2xMbGwsnJCWfOnMGrr76qixgr1alTJ9y8ebPC43K5HPb29goPImNVVdGxpuvlEBHVJBr1wwcEBGDTpk3ajkUjiYmJcHV1NXQYRDpRtui4ZOjqeJmhKQuZDF1aOLHXhogIGiY32vLo0SPcunVLep6cnIykpCQ4OjqiadOmmDlzJtLS0hAdHQ0AiIyMhKenJ3x9fZGfn49NmzYhJiYGMTExhroFqiGMabXjqoauKsLVjomopjBocnPu3Dm88MIL0vOS2piRI0di/fr1SE9PR0pKinQ8Pz8fU6dORVpaGmxtbeHr64vdu3cjNDRU77ETGUrJ0FXJ1Ow9E7sqTVr0PWWc08WJyFgY9KdP9+7dK92+Yf369QrPp0+fjunTp+s4KiLTUnboqkRlU8ajx3TUR2hERAah0fYLRGTcOGWciGoyJjdEZkiVKeNEROZK7WGpx48fY8GCBTh8+DAyMzNRXKz4t+Fvv/2mteCISDOaThln0TERmQO1k5uxY8ciISEBw4cPh6urK2QymS7iIqJqUHXKuCH2qSIi0jW1k5u9e/di9+7d6NKliy7iISItUWXKuL6Ljjmjioj0Qe2am/r168PR0VEXsRCRFlW12jGLjonIXKmd3Hz22Wf49NNPkZNTecEiERmXslPGWXRMROZK7T7hL7/8Erdv34azszM8PT1hZaU4Ln/hwgWtBUdkSoxpFWNVcJ8qIjJXaic3AwYM0EEYRKRvmu5TxRlVRGTs1E5uZs+erYs4iMgAVCk65owqIjI1XMSPqAarqugYqHxGFRGRMVKp58bR0RE3btyAk5MT6tevX+naNvfv39dacETmxtjrcsoWHZfMqCqr9IyqioavqoNTxomoOlT6ibFkyRLUrVsXABAZGanLeIjIiKgyo0oXyQ0RUXWolNyMHDlS6b+JyLxxRhURmaJq9fU+efIEBQUFCm329pxFQVQdxjR0pemMKiIiQ1K7oPjx48eYMGECGjVqBDs7O9SvX1/hQUTmZdkQfwQ1d1JoKzujqqw793S/yGdOfiE8Z+yG54zdyMkv1PnXIyLToXZyM336dBw5cgQrVqyAXC7Ht99+i7lz58LNzQ3R0dG6iJGIDEiVGVUPcvLx9obz0vPQpccwYs0ZZOUo9uwSEemD2sNSP/30E6Kjo9G9e3eMHj0aXbt2RYsWLeDh4YHNmzdj2LBhuoiTiEox5NBV2RlVgP434CQiqozaPTf379+Hl5cXgKf1NSVTv59//nkcPXpUu9ERkdHjBpxEZGzUTm6aNWuGO3fuAABat26Nbdu2AXjao1OvXj1txkZEJoAbcBKRsVE7uXnrrbfwyy+/AABmzpwp1d5MnjwZ06ZN03qARGTcjHm6OIuOiWomtWtuJk+eLP37hRdewLVr13Du3Dk0b94c7dq102pwRGT8uAEnERmbau8t1bRpUwwcOJCJDVENpsp0cc6oIiJ9Ubnn5smTJzh8+DBeeeUVAE+HpPLy8qTjFhYW+Oyzz2BjY6P9KIlII/qaVVUyXbxkP6g9E7uW65XhjCoi0heVk5vo6Gjs2rVLSm6WL18OX19f2NraAgCuXbsGNzc3hWErIqqZjGUDTiKqmVQeltq8eTNGjx6t0LZlyxbExcUhLi4OX3zxhTRzioioNGOeUcWiYyLzo3Jyc+PGDbRq1Up6bmNjg1q1/nd5x44dceXKFe1GR0RmwZhnVBGR+VE5ucnKyoKl5f9Gsf766y94enpKz4uLixVqcIiISpTMqCr7A8dCJkO3lg0rHZLSxz5VVWHvDpFpUTm5adKkCX799dcKj1+8eBFNmjTRSlBEpD8lRcd3FvRBbWu1V4dQmaobcHJWFRFVl8rJTWhoKD799FPk5uaWO/bkyRPMnTsXffoYZq8bIjJ+qmzACVQ+q4qISBUq/5k2a9YsbNu2Dd7e3pgwYQJatWoFmUyGa9euYfny5SgsLMSsWbN0GSsRmRFlG3BqOquKCwISUWkqJzfOzs44efIk3nvvPcyYMQNCCACATCZDjx49sGLFCjg7O+ssUCIyf6rMqvJyqoMHOfkI2/y/npzQpcfQrWVDLBviX64nSJ9y8gultX6uzOul02E+IqqYWv/zvLy8sG/fPty/fx+3bt0CALRo0QKOjo46CY6IahZVZ1VxQUAiqoxGf1Y4OjqiY0f+ACGqKfS10rEq+1RxQUAiqkq195YiItKmqmZVGfOCgKrgtHIi3WNyQ0RGpapZVZouCGgM6+UQkX4wuSEio1Z2VpWqCwJyvRyimsugyc3Ro0fRt29fuLm5QSaTYfv27VVek5CQgICAANjY2KBZs2ZYuXKl7gMlIqOiyoKAXC+HqOYyaHLz+PFjtGvXDsuXL1fp/OTkZISGhqJr165ITEzErFmzMHHiRMTExOg4UiIyJlUNXZUUHReXua500bExY10OUfUYdBGG3r17o3fv3iqfv3LlSjRt2hSRkZEAAB8fH5w7dw6LFy/Ga6+9pqMoicjYlR26UnW9HCIyTya1wtSpU6fQs2dPhbZevXphzZo1KCgogJWV4RbvIqrp9DVdXBXVKTrmSsdEps+kCoozMjLKrYLs7OyMwsJC3Lt3T+k1eXl5yM7OVngQkXnTZdGxscy64tAVUcVMKrkBnm73UFrpbSCUiYiIgIODg/Rwd3fXeYxEZHjaKjrmrCsi02NSyY2LiwsyMjIU2jIzM2FpaYkGDRoovWbmzJnIysqSHqmpqfoIlYgMTFtFx5x1RWR6TKrmJigoCD/99JNC24EDBxAYGFhhvY1cLodcLtdHeERkxDQpOhb/n+iUxa0eiIybQXtuHj16hKSkJCQlJQF4OtU7KSkJKSkpAJ72uowYMUI6f9y4cbh79y7Cw8Nx9epVrF27FmvWrMHUqVMNET4Rqamk6PjOgj4G3zFblaLj6mz1YCy1OUQ1kUGTm3PnzsHf3x/+/k/HwMPDw+Hv749PP/0UAJCeni4lOsDTXcn37NmD+Ph4tG/fHp999hmWLl3KaeBEpDZVio7VmXXF2hwi42HQP526d+8uFQQrs379+nJtwcHBuHDhgg6jIqKaYtkQf4zffAEnStXUlC46VmWX8hKV1eZEj+mo9Otz6jmRbphUQTERkTZVVXQMqDbrStXiZH337nC6ONVUTG6IiP5f2aJjQLUESNXaHM68ItIPJjdERGpQlgCpUptj6vtdEZkSJjdEZHSMaVaVKlQpTtZ05hVnXRGpj8kNEZEWVFWbo+rMK0PMumJtDpkbJjdERFpQVW2OqvtdsS6HqPqY3BCRSTL2oStltTlV9e5oWpfDoSsiRUxuiIj0pKreHVXrcrhgIFHlmNwQERlI2d4dVetyDDF0xbocMiVMboiIjIQqdTmcUk5UNSY3RGS2jL0uR5mq6nKqs5knUU3B5IaIyIhUVZejzmaeRDUVkxsiIiNWti5H1SnlhsC6HDIWTG6IiEyMKpt5lsXp4lSTMLkhIjIxqmzmaazTxVXp3WEPEFWXaVTYERHpSEnRcXXPMSRlCwZWNl08ekxHfYVGZBDsuSEiMjOcLk41HZMbIiIzU53p4qzNIXPA5IaIyMyoM13cWGtziKqDyQ0RkZYYy6KB6kwX5y7kZI6Y3BARmSFVpoubem0OZ1VRRThbiohIj/Q186pkunjrT/cDeDpdvLWbvcI5qtTmKFsU8M69nHKvRWRM2HNDRFQDKJsurmptDutyyNQwuSEiqqFUrc1hXQ6ZGiY3RERGRp+FyVXV5mhal8Mp5WRITG6IiGqwqrZyUHXNHE2GrlRJgKqbJLHouGZickNERJKytTmq1uWoMnSlSgLE+h7SBiY3REQmSF9DV6rU5ag6dKVKAsT6HtIGJjdERFSpqupyVBm6UiUBMtS6Oxy6Mj9MboiIqFJV1eWoMnSlSgJUnT2xiEpjckNERGopW5ejytCVKgmQOntilcXZWVQakxsiIqq2qoauVEmA1NkTi4XHVBkmN0REVG1VDV0Bqu13pco5AAuPqXJMboiISOuUbfegSgKkyjmGKDxm0bFp4caZRERmSl+bdGpKWQKkyjmabvhJNQd7boiIyKRoWnjMouOag8kNERGZFFULj1l0XHMZPLlZsWIFvLy8YGNjg4CAABw7dqzCc+Pj4yGTyco9rl27pseIiYjMiz436tQWVQqP9V10zLoc42HQ5Gbr1q2YNGkSPvroIyQmJqJr167o3bs3UlJSKr3u+vXrSE9Plx4tW7bUU8RERGQMqio85m7mNZtBk5uvvvoKY8aMwdixY+Hj44PIyEi4u7sjKiqq0usaNWoEFxcX6WFhYaGniImIyBiVLTzW5W7mZPwMltzk5+fj/Pnz6Nmzp0J7z549cfLkyUqv9ff3h6urK0JCQhAXF6fLMImIyARpczdzMj0GG1y9d+8eioqK4OzsrNDu7OyMjIwMpde4urpi1apVCAgIQF5eHjZu3IiQkBDEx8ejW7duSq/Jy8tDXl6e9Dw7O1t7N0FEVEMY+7TyskqKjo+XGZqykMnQpYWTwm7mZZUeutLFlPKc/EK0/nQ/AODKvF4mU+dkSgz+jspkMoXnQohybSW8vb3h7e0tPQ8KCkJqaioWL15cYXITERGBuXPnai9gIiIyCcuG+GP85gs4UapnRt3dzJUlN3fu5aC1m712gyWtMtiwlJOTEywsLMr10mRmZpbrzalMp06dcPPmzQqPz5w5E1lZWdIjNTVV45iJiEj3tDV7Sxu7mQOsyzFFBkturK2tERAQgIMHDyq0Hzx4EJ07d1b5dRITE+Hq6lrhcblcDnt7e4UHERFpn7FPKddkN3OAdTmmyKDffeHh4Rg+fDgCAwMRFBSEVatWISUlBePGjQPwtNclLS0N0dHRAIDIyEh4enrC19cX+fn52LRpE2JiYhATE2PI2yAiIhUZW+1OVUNXrMsxTQZ9twYPHoy///4b8+bNQ3p6Otq0aYM9e/bAw8MDAJCenq6w5k1+fj6mTp2KtLQ02NrawtfXF7t370ZoaKihboGIiExYydBVSSKxZ2JXhXoa1uWYJoOnguPHj8f48eOVHlu/fr3C8+nTp2P69Ol6iIqIiGqiskNX6tTlhG3+3zBV6NJj6NayIZYN8VfY0Zz0w+DbLxAREWlCHzU+rMsxTUxuiIiIKlHVPlaabvVQXdzLqmJMboiIiCpR1ZRyVbd6UHqMe1npBJMbIiIiNWhalwNwzRx9YXJDRERUDarW5QCszdEXJjdERGS29LWwYFV1OYDhanNqIiY3RERE1VRVXQ6geW0O63LUx+SGiIhIy8rW5QCG2cuqps6oYnJDREQ1mr6Grrhmjv4wuSEiItITY10zx9wwuSEiItITXa2Zw7ocRUxuiIiIDKQ6e1lxvZyKMbkhIiKqAutyTAuTGyIiIiPCupzqY3JDRERkRPRdl2OO08V117dGRERUg5QMXWlbdepywjb/b5gqdOkxdGvZEMuG+CssLmiO2HNDRERkQliXUzUmN0RERCaGdTmVY3JDRERkYnRVl2MuWHNDRESkR7qozdG0LkcdOfmFaP3pfgDAlXm9dDolvrrYc0NERGRmVK3LKctcVjpmckNERGSGqqrLAcx3pWMmN0RERGaoqrocwHxnVBnvgBkREVENpY+6nJIZVWWVnlFV0fCVsWPPDRERUQ1kzjOqmNwQERHVQNWZUWXsWzkwuSEiIjJB1d2pXJ0ZVZoUHhty5hWTGyIiohpKlRlVgGqFx8Y084rJDRERUQ2lyowqVbdyMKaZV5wtRUREZKbUnXVVdkYVoFrhsfj/RKcsQ828Ys8NERERVUiVwmNjm3nF5IaIiIgqpErhsS72sqoOJjdERERUqaoKjzXdy0pXmNwQERFRpVQpPFZ15pU+MLkhIiIitSgrPFYlAdIXzpYiIiKqwbS5j5Uu9sTSBHtuiIiIyKwwuSEiIiKzYvDkZsWKFfDy8oKNjQ0CAgJw7NixSs9PSEhAQEAAbGxs0KxZM6xcuVJPkRIREZEpMGhys3XrVkyaNAkfffQREhMT0bVrV/Tu3RspKSlKz09OTkZoaCi6du2KxMREzJo1CxMnTkRMTIyeIyciIqpZqrtRpz7JhBDCUF/8ueeeQ4cOHRAVFSW1+fj4YMCAAYiIiCh3/ocffoidO3fi6tWrUtu4cePwyy+/4NSpUyp9zezsbDg4OCArKwv29vbVvwkiIiLSOXV+fxus5yY/Px/nz59Hz549Fdp79uyJkydPKr3m1KlT5c7v1asXzp07h4IC5buO5uXlITs7W+FBRERE5stgyc29e/dQVFQEZ2dnhXZnZ2dkZGQovSYjI0Pp+YWFhbh3757SayIiIuDg4CA93N3dtXMDREREZJQMXlAsk8kUngshyrVVdb6y9hIzZ85EVlaW9EhNTa1mxERERGTMDFYR5OTkBAsLi3K9NJmZmeV6Z0q4uLgoPd/S0hINGjRQeo1cLodcLtdO0ERERGT0DNZzY21tjYCAABw8eFCh/eDBg+jcubPSa4KCgsqdf+DAAQQGBsLKSv/LOxMREZHxMeiwVHh4OL799lusXbsWV69exeTJk5GSkoJx48YBeDqkNGLECOn8cePG4e7duwgPD8fVq1exdu1arFmzBlOnTjXULRAREZGRMehE9cGDB+Pvv//GvHnzkJ6ejjZt2mDPnj3w8PAAAKSnpyuseePl5YU9e/Zg8uTJ+Oabb+Dm5oalS5fitddeM9QtEBERkZEx6Do3hsB1boiIiEyPSaxzQ0RERKQLTG6IiIjIrDC5ISIiIrPC5IaIiIjMCpMbIiIiMitMboiIiMisGHSdG0MomfnO3cGJiIhMR8nvbVVWsKlxyc3Dhw8BgLuDExERmaCHDx/CwcGh0nNq3CJ+xcXF+OOPP1C3bt1Kdx8n3crOzoa7uztSU1O5mKIR4OdhfPiZGBd+HoYnhMDDhw/h5uaGWrUqr6qpcT03tWrVQpMmTQwdBv0/e3t7/qAwIvw8jA8/E+PCz8OwquqxKcGCYiIiIjIrTG6IiIjIrDC5IYOQy+WYPXs25HK5oUMh8PMwRvxMjAs/D9NS4wqKiYiIyLyx54aIiIjMCpMbIiIiMitMboiIiMisMLkhIiIis8LkhnQmIiICzz77LOrWrYtGjRphwIABuH79usI5QgjMmTMHbm5usLW1Rffu3XH58mUDRVyzREREQCaTYdKkSVIbPw/9S0tLw5tvvokGDRqgdu3aaN++Pc6fPy8d52eiP4WFhfj444/h5eUFW1tbNGvWDPPmzUNxcbF0Dj8P08DkhnQmISEBYWFhOH36NA4ePIjCwkL07NkTjx8/ls5ZtGgRvvrqKyxfvhxnz56Fi4sLevToIe0BRrpx9uxZrFq1Cn5+fgrt/Dz0659//kGXLl1gZWWFvXv34sqVK/jyyy9Rr1496Rx+JvqzcOFCrFy5EsuXL8fVq1exaNEifPHFF1i2bJl0Dj8PEyGI9CQzM1MAEAkJCUIIIYqLi4WLi4tYsGCBdE5ubq5wcHAQK1euNFSYZu/hw4eiZcuW4uDBgyI4OFh88MEHQgh+Hobw4Ycfiueff77C4/xM9KtPnz5i9OjRCm0DBw4Ub775phCCn4cpYc8N6U1WVhYAwNHREQCQnJyMjIwM9OzZUzpHLpcjODgYJ0+eNEiMNUFYWBj69OmDl156SaGdn4f+7dy5E4GBgRg0aBAaNWoEf39/rF69WjrOz0S/nn/+eRw+fBg3btwAAPzyyy84fvw4QkNDAfDzMCU1buNMMgwhBMLDw/H888+jTZs2AICMjAwAgLOzs8K5zs7OuHv3rt5jrAm+//57XLhwAWfPni13jJ+H/v3222+IiopCeHg4Zs2ahTNnzmDixImQy+UYMWIEPxM9+/DDD5GVlYVnnnkGFhYWKCoqwvz58zFkyBAA/D9iSpjckF5MmDABFy9exPHjx8sdk8lkCs+FEOXaqPpSU1PxwQcf4MCBA7CxsanwPH4e+lNcXIzAwEB8/vnnAAB/f39cvnwZUVFRGDFihHQePxP92Lp1KzZt2oQtW7bA19cXSUlJmDRpEtzc3DBy5EjpPH4exo/DUqRz77//Pnbu3Im4uDg0adJEandxcQHwv7+GSmRmZpb7y4iq7/z588jMzERAQAAsLS1haWmJhIQELF26FJaWltJ7zs9Df1xdXdG6dWuFNh8fH6SkpADg/xF9mzZtGmbMmIF//etfaNu2LYYPH47JkycjIiICAD8PU8LkhnRGCIEJEyYgNjYWR44cgZeXl8JxLy8vuLi44ODBg1Jbfn4+EhIS0LlzZ32Ha/ZCQkJw6dIlJCUlSY/AwEAMGzYMSUlJaNasGT8PPevSpUu55RFu3LgBDw8PAPw/om85OTmoVUvx16KFhYU0FZyfhwkxZDUzmbf33ntPODg4iPj4eJGeni49cnJypHMWLFggHBwcRGxsrLh06ZIYMmSIcHV1FdnZ2QaMvOYoPVtKCH4e+nbmzBlhaWkp5s+fL27evCk2b94sateuLTZt2iSdw89Ef0aOHCkaN24sdu3aJZKTk0VsbKxwcnIS06dPl87h52EamNyQzgBQ+li3bp10TnFxsZg9e7ZwcXERcrlcdOvWTVy6dMlwQdcwZZMbfh7699NPP4k2bdoIuVwunnnmGbFq1SqF4/xM9Cc7O1t88MEHomnTpsLGxkY0a9ZMfPTRRyIvL086h5+HaZAJIYQhe46IiIiItIk1N0RERGRWmNwQERGRWWFyQ0RERGaFyQ0RERGZFSY3REREZFaY3BAREZFZYXJDREREZoXJDRGRmfH09ERkZKShwyAyGCY3RGZk1KhRkMlkkMlksLKyQrNmzTB16lQ8fvzY0KFVydh+IctkMmzfvl1vX8/Y7p/IlFkaOgAi0q6XX34Z69atQ0FBAY4dO4axY8fi8ePHiIqKUvu1hBAoKiqCpSV/VChTUFAAKysrQ4dBRGWw54bIzMjlcri4uMDd3R1Dhw7FsGHDpB4IIQQWLVqEZs2awdbWFu3atcMPP/wgXRsfHw+ZTIb9+/cjMDAQcrkcx44dQ3FxMRYuXIgWLVpALpejadOmmD9/vnRdWloaBg8ejPr166NBgwbo378/7ty5Ix0fNWoUBgwYgMWLF8PV1RUNGjRAWFgYCgoKAADdu3fH3bt3MXnyZKnnCQD+/vtvDBkyBE2aNEHt2rXRtm1bfPfddwr3+/DhQwwbNgx16tSBq6srlixZgu7du2PSpEnSOfn5+Zg+fToaN26MOnXq4LnnnkN8fHyF76GnpycA4NVXX4VMJpOez5kzB+3bt8fatWvRrFkzyOVyCCGQlZWFd955B40aNYK9vT1efPFF/PLLL9Lr3b59G/3794ezszPs7Ozw7LPP4tChQ9Lxiu4fAE6ePIlu3brB1tYW7u7umDhxokJPXGZmJvr27QtbW1t4eXlh8+bNFd4XUU3B5IbIzNna2kpJxMcff4x169YhKioKly9fxuTJk/Hmm28iISFB4Zrp06cjIiICV69ehZ+fH2bOnImFCxfik08+wZUrV7BlyxY4OzsDAHJycvDCCy/Azs4OR48exfHjx2FnZ4eXX34Z+fn50mvGxcXh9u3biIuLw4YNG7B+/XqsX78eABAbG4smTZpg3rx5SE9PR3p6OgAgNzcXAQEB2LVrF3799Ve88847GD58OH7++WfpdcPDw3HixAns3LkTBw8exLFjx3DhwgWF+3nrrbdw4sQJfP/997h48SIGDRqEl19+GTdv3lT6np09exYAsG7dOqSnp0vPAeDWrVvYtm0bYmJikJSUBADo06cPMjIysGfPHpw/fx4dOnRASEgI7t+/DwB49OgRQkNDcejQISQmJqJXr17o27cvUlJSKr3/S5cuoVevXhg4cCAuXryIrVu34vjx45gwYYIUz6hRo3Dnzh0cOXIEP/zwA1asWIHMzMyqvi2IzJtBt+0kIq0aOXKk6N+/v/T8559/Fg0aNBBvvPGGePTokbCxsREnT55UuGbMmDFiyJAhQggh4uLiBACxfft26Xh2draQy+Vi9erVSr/mmjVrhLe3tyguLpba8vLyhK2trdi/f78Ul4eHhygsLJTOGTRokBg8eLD03MPDQyxZsqTKewwNDRVTpkyRYrOyshL//e9/peMPHjwQtWvXlnY7v3XrlpDJZCItLU3hdUJCQsTMmTMr/DoAxI8//qjQNnv2bGFlZSUyMzOltsOHDwt7e3uRm5urcG7z5s3Ff/7znwpfv3Xr1mLZsmXSc2X3P3z4cPHOO+8otB07dkzUqlVLPHnyRFy/fl0AEKdPn5aOX716VQBQ6b0kMlccSCcyM7t27YKdnR0KCwtRUFCA/v37Y9myZbhy5Qpyc3PRo0cPhfPz8/Ph7++v0BYYGCj9++rVq8jLy0NISIjSr3f+/HncunULdevWVWjPzc3F7du3pee+vr6wsLCQnru6uuLSpUuV3ktRUREWLFiArVu3Ii0tDXl5ecjLy0OdOnUAAL/99hsKCgrQsWNH6RoHBwd4e3tLzy9cuAAhBFq1aqXw2nl5eWjQoEGlX18ZDw8PNGzYUHp+/vx5PHr0qNxrPXnyRLr/x48fY+7cudi1axf++OMPFBYW4smTJ1LPTUVK3tvSQ01CCBQXFyM5ORk3btyApaWlwuf1zDPPoF69emrfF5E5YXJDZGZeeOEFREVFwcrKCm5ublLBa3JyMgBg9+7daNy4scI1crlc4XlJ8gA8HdaqTHFxMQICApTWepROAsoW3spkMhQXF1f62l9++SWWLFmCyMhItG3bFnXq1MGkSZOk4S4hhPRapZW0l8RnYWGB8+fPKyRXAGBnZ1fp11em9HtT8vqurq5Ka3hKkoxp06Zh//79WLx4MVq0aAFbW1u8/vrrCsN2yhQXF+Pdd9/FxIkTyx1r2rQprl+/DqD8/RPVdExuiMxMnTp10KJFi3LtrVu3hlwuR0pKCoKDg1V+vZYtW8LW1haHDx/G2LFjyx3v0KEDtm7dKhXTasra2hpFRUUKbceOHUP//v3x5ptvAnj6y/7mzZvw8fEBADRv3hxWVlY4c+YM3N3dAQDZ2dm4efOmdI/+/v4oKipCZmYmunbtqnI8VlZW5eJRpkOHDsjIyIClpaVUeFzWsWPHMGrUKLz66qsAntbglC64ruj+O3TogMuXLyv9PAHAx8cHhYWFOHfunNR7df36dTx48KDKuInMGQuKiWqIunXrYurUqZg8eTI2bNiA27dvIzExEd988w02bNhQ4XU2Njb48MMPMX36dERHR+P27ds4ffo01qxZAwAYNmwYnJyc0L9/fxw7dgzJyclISEjABx98gN9//13l+Dw9PXH06FGkpaXh3r17AIAWLVrg4MGDOHnyJK5evYp3330XGRkZCvc0cuRITJs2DXFxcbh8+TJGjx6NWrVqSb0ZrVq1wrBhwzBixAjExsYiOTkZZ8+excKFC7Fnz55K4zl8+DAyMjLwzz//VHjeSy+9hKCgIAwYMAD79+/HnTt3cPLkSXz88cc4d+6cdB+xsbFISkrCL7/8gqFDh5brtVJ2/x9++CFOnTqFsLAwJCUl4ebNm9i5cyfef/99AIC3tzdefvllvP322/j5559x/vx5jB07tsreNiJzx+SGqAb57LPP8OmnnyIiIgI+Pj7o1asXfvrpJ3h5eVV63SeffIIpU6bg008/hY+PDwYPHizNyKlduzaOHj2Kpk2bYuDAgfDx8cHo0aPx5MkTtXpy5s2bhzt37qB58+bScNYnn3yCDh06oFevXujevTtcXFwwYMAAheu++uorBAUF4ZVXXsFLL72ELl26wMfHBzY2NtI569atw4gRIzBlyhR4e3ujX79++Pnnn6XeHmW+/PJLHDx4EO7u7uVqkkqTyWTYs2cPunXrhtGjR6NVq1b417/+hTt37kgzypYsWYL69eujc+fO6Nu3L3r16oUOHTpUef9+fn5ISEjAzZs30bVrV/j7++OTTz6Bq6urwr25u7sjODgYAwcOlKakE9VkMlF6cJqIyMQ9fvwYjRs3xpdffokxY8YYOhwiMgDW3BCRSUtMTMS1a9fQsWNHZGVlYd68eQCA/v37GzgyIjIUJjdEZPIWL16M69evw9raGgEBATh27BicnJwMHRYRGQiHpYiIiMissKCYiIiIzAqTGyIiIjIrTG6IiIjIrDC5ISIiIrPC5IaIiIjMCpMbIiIiMitMboiIiMisMLkhIiIis8LkhoiIiMzK/wFb/Mmb8T7mAgAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 640x480 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"res_dml.plot_toc(tmt=2, err_type='ucb2')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.16\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/Causal Forest and Orthogonal Random Forest Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Orthogonal Random Forest and Causal Forest: Use Cases and Examples\\n\",\n    \"\\n\",\n    \"Causal Forests and Generalized Random Forests are a flexible method for estimating treatment effect heterogeneity with Random Forests. Orthogonal Random Forest (ORF) combines orthogonalization, a technique that effectively removes the confounding effect in two-stage estimation, with generalized random forests. Due to the orthogonalization aspect of this method, the ORF performs especially well in the presence of high-dimensional confounders. For more details, see [this paper](https://arxiv.org/abs/1806.03467) or the [EconML docummentation](https://www.pywhy.org/EconML/).\\n\",\n    \"\\n\",\n    \"The EconML SDK implements the following OrthoForest variants:\\n\",\n    \"\\n\",\n    \"* DMLOrthoForest: suitable for continuous or discrete treatments\\n\",\n    \"\\n\",\n    \"* DROrthoForest: suitable for discrete treatments\\n\",\n    \"\\n\",\n    \"* CausalForest: suitable for both discrete and continuous treatments\\n\",\n    \"\\n\",\n    \"In this notebook, we show the performance of the ORF on synthetic and observational data. \\n\",\n    \"\\n\",\n    \"## Notebook Contents\\n\",\n    \"\\n\",\n    \"1. [Example Usage with Continuous Treatment Synthetic Data](#1.-Example-Usage-with-Continuous-Treatment-Synthetic-Data)\\n\",\n    \"2. [Example Usage with Binary Treatment Synthetic Data](#2.-Example-Usage-with-Binary-Treatment-Synthetic-Data)\\n\",\n    \"3. [Example Usage with Multiple Treatment Synthetic Data](#3.-Example-Usage-with-Multiple-Treatment-Synthetic-Data)\\n\",\n    \"4. [Example Usage with Real Continuous Treatment Observational Data](#4.-Example-Usage-with-Real-Continuous-Treatment-Observational-Data)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Main imports\\n\",\n    \"from econml.orf import DMLOrthoForest, DROrthoForest\\n\",\n    \"from econml.dml import CausalForestDML\\n\",\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCVWrapper, WeightedLasso\\n\",\n    \"\\n\",\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"from itertools import product\\n\",\n    \"from sklearn.linear_model import Lasso, LogisticRegression\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 1. Example Usage with Continuous Treatment Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.1 DGP \\n\",\n    \"We use the data generating process (DGP) from [here](https://arxiv.org/abs/1806.03467). The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T =& \\\\langle W, \\\\beta\\\\rangle + \\\\eta, & \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y =& T\\\\cdot \\\\theta(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, &\\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim& \\\\text{Normal}(0,\\\\, I_{n_w})\\\\\\\\\\n\",\n    \"X \\\\sim& \\\\text{Uniform}(0,1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders and $\\\\beta, \\\\gamma$ have high sparsity.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = \\\\exp(2\\\\cdot x_1).\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Treatment effect function\\n\",\n    \"def exp_te(x):\\n\",\n    \"    return np.exp(2*x[0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 1000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 1\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(range(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = np.array([exp_te(x_i) for x_i in X])\\n\",\n    \"T = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"Y = TE * T + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"# ORF parameters and test data\\n\",\n    \"subsample_ratio = 0.3\\n\",\n    \"lambda_reg = np.sqrt(np.log(n_w) / (10 * subsample_ratio * n))\\n\",\n    \"X_test = np.array(list(product(np.arange(0, 1, 0.01), repeat=n_x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.2. Train Estimator\\n\",\n    \"\\n\",\n    \"**Note:** The models in the final stage of the estimation (``model_T_final``, ``model_Y_final``) need to support sample weighting. \\n\",\n    \"\\n\",\n    \"If the models of choice do not support sample weights (e.g. ``sklearn.linear_model.LassoCV``), the ``econml`` packages provides a convenient wrapper for these models ``WeightedModelWrapper`` in order to allow sample weights.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DMLOrthoForest(\\n\",\n    \"    n_trees=1000, min_leaf_size=5,\\n\",\n    \"    max_depth=50, subsample_ratio=subsample_ratio,\\n\",\n    \"    model_T=Lasso(alpha=lambda_reg),\\n\",\n    \"    model_Y=Lasso(alpha=lambda_reg),\\n\",\n    \"    model_T_final=WeightedLasso(alpha=lambda_reg),\\n\",\n    \"    model_Y_final=WeightedLasso(alpha=lambda_reg),\\n\",\n    \"    global_residualization=False,\\n\",\n    \"    random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To use the built-in confidence intervals constructed via Bootstrap of Little Bags, we can specify `inference=\\\"blb\\\"` at `fit` time or leave the default `inference='auto'` which will automatically use the Bootstrap of Little Bags.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   21.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 176 tasks      | elapsed:   22.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 816 tasks      | elapsed:   25.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:   26.5s finished\\n\",\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    0.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 368 tasks      | elapsed:    1.7s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 984 tasks      | elapsed:    4.7s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:    4.7s finished\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.orf._ortho_forest.DMLOrthoForest at 0x1a7d2b58a58>\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W, inference=\\\"blb\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   21.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   23.9s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate treatment effects\\n\",\n    \"treatment_effects = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  18 tasks      | elapsed:    3.3s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:    7.6s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate default (95%) confidence intervals for the test data\\n\",\n    \"te_lower, te_upper = est.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    3.4s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:    7.4s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res = est.effect_inference(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.161</td>\\n\",\n       \"      <td>0.183</td>\\n\",\n       \"      <td>6.339</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.802</td>\\n\",\n       \"      <td>1.520</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>1.171</td>\\n\",\n       \"      <td>0.177</td>\\n\",\n       \"      <td>6.628</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.825</td>\\n\",\n       \"      <td>1.518</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1.182</td>\\n\",\n       \"      <td>0.171</td>\\n\",\n       \"      <td>6.925</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.847</td>\\n\",\n       \"      <td>1.516</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>1.192</td>\\n\",\n       \"      <td>0.165</td>\\n\",\n       \"      <td>7.228</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.869</td>\\n\",\n       \"      <td>1.515</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>1.202</td>\\n\",\n       \"      <td>0.160</td>\\n\",\n       \"      <td>7.533</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.890</td>\\n\",\n       \"      <td>1.515</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X                                                           \\n\",\n       \"0           1.161   0.183  6.339     0.0     0.802     1.520\\n\",\n       \"1           1.171   0.177  6.628     0.0     0.825     1.518\\n\",\n       \"2           1.182   0.171  6.925     0.0     0.847     1.516\\n\",\n       \"3           1.192   0.165  7.228     0.0     0.869     1.515\\n\",\n       \"4           1.202   0.160  7.533     0.0     0.890     1.515\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"res.summary_frame().head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th> <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>3.179</td>      <td>0.287</td>    <td>11.06</td>   <td>0.0</td>      <td>2.616</td>         <td>3.742</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>1.715</td>        <td>1.187</td>           <td>6.276</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.739</td>         <td>1.079</td>          <td>6.525</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Note: The stderr_mean is a conservative upper bound.\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x1a7b5af2f98>\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"res.population_summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Similarly we can estimate effects and get confidence intervals and inference results using a `CausalForest`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = CausalForestDML(model_t=Lasso(alpha=lambda_reg),\\n\",\n    \"                       model_y=Lasso(alpha=lambda_reg),\\n\",\n    \"                       n_estimators=4000, min_samples_leaf=5,\\n\",\n    \"                       max_depth=50,\\n\",\n    \"                       verbose=0, random_state=123)\\n\",\n    \"est2.tune(Y, T, X=X, W=W)\\n\",\n    \"est2.fit(Y, T, X=X, W=W)\\n\",\n    \"treatment_effects2 = est2.effect(X_test)\\n\",\n    \"te_lower2, te_upper2 = est2.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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enQayv30qA/cAPlDG4XkdyKEEEIIMTbIfdvoNNjfy5gI3EZaXV0dp556KjNmzGDatGlcdtllhMNhAF5//XVycnKoqqpi9uzZXHXVVb2ve/DBBykqKqKqqoqqqirOPffcYbWjurqaRx99tPf7pUuX8v3vf39Y59zmwQcfpKGhISnnEkIIIYQQYhu5l04OCdx2Q2vNl7/8Zb74xS+yYcMG1q9fj9fr5YYbbug95pBDDmHlypWsWLGCZ599lnfeead331lnncXKlStZuXIlDz300LDasuMf2+LFi7ntttuGdc5tJHATQgghhBDJJvfSySOB2268+uqr2O12zj//fADMZjO33HILDzzwAH6/f7tjHQ4HVVVV1NfXJ3z+1tZWTjvtNJYsWcKSJUt6/1DfeOON3qcLe+21Fx6Ph+uuu4633nqLqqoqbrnlFl5//XVOOukkAG688Ua+8Y1vcMghhzBp0iSeeuoprrnmGhYsWMDxxx9PJBIB4Gc/+xlLlixh/vz5XHTRRWitefLJJ1m6dCnnnHMOVVVVBAIBli1bxmGHHcY+++zDcccdR2NjYzJ+nEIIIYQQYg8i99LJu5eWwG03PvvsM/bZZ5/ttmVnZ1NZWcnGjRu3297Z2cmGDRs49NBDe7c9/vjjvX80f/nLX3Y6/2WXXcYVV1zBRx99xD//+U8uuOACAH73u99x5513snLlSt566y0cDge//vWve59IXHHFFTuda9OmTbz66qs888wzfO1rX+OII47g008/xeFw8N///heASy65hI8++ohVq1YRCAR49tlnOf3001m8eDGPPPIIK1euxGKxcOmll/Lkk0+ybNkyvvnNb273VEQIsefyBCMj3QQhhBBjyHi/l/73M//h1C99mb332YeH/vZwSu+lR/1yAH399D+fsbqhO6nnnFuWzU9Onjesc7z11lssWrSIDRs2cPnllzNhwoTefWeddRZ33HHHLl/78ssvs3r16t7vu7u78Xq9HHTQQVx55ZWcc845fPnLX6aiomK37TjhhBOwWq0sWLCAWCzG8ccfD8CCBQuorq4G4LXXXuPmm2/G7/fT0dHBvHnzOPnkk7c7z7p161i1ahXHHHMMALFYjNLS0oR/HkKI8andG6Kmw89elXkj3RQhhBBDIPfSAxvKvfS0mbM58tgT0DqeFgqpu5ceU4HbSJg7dy5PPvnkdtu6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PHkybW1t2x3/4IMPUlRURFVVFfPmzeP000/H7+//hu1///sfixcvZu7cuey111784Ac/6G3/7373uyH/XIQQo0dNu5/qNt+QX//acxm8+l8HJ54ewO5IYsOEEELs8cbTvfT++y7mhuuuAeBXN/2M2279w5B/LoM15lZVfXl1v1PlhuzouSUD7l+1ahV//vOf+fDDD7HZbBx//PGcdNJJTJ8+HYArrriCq666arvX/P73v+e5556jurqau+++m9///vfcdNNN/PCHP8Rk2nWs/Mgjj7B48WI6OjqYNm0a5513HjabbZfHn3XWWdxxxx0AnH322Tz++OOcf/75O7X/kksu4b///S+zZ88mFott94cshBj7GtwB1jcPvfpja5OJ236ezZxFYb564dCDPyGEEKOf3Et/bij30p2+IH+5774B33OqpGsdtzFrzZo17LfffjidTiwWC4cddhhPPTVw5qfVasXv9+P3+7FarWzatIna2loOP/zwhK7p9XrJzMzEbDYndHw0GsXn85GXt/OiuDfffDM33HADs2fPBsBsNvOd73wnofMKIUa/lu4gaxq7h/z6WAxuvj6HaASu+3U35jH3OE8IIcRoNp7upQ1DYzaZueCibyd03mSTwG035s+fz1tvvUV7ezt+v5/nnnuO2tra3v133HEHCxcu5Jvf/CadnZ0AXH/99Zx77rn86le/4pJLLuGGG27gpptu2u21zjnnHBYuXMisWbP40Y9+tNs/tscff5yqqirKy8vp6Ojg5JNP3umYVatWsc8++wzyXQshxoKmriCf1ncNq8JVOKhwZBp87wYPZZWx5DVOCCGEYHzdS8dGsqQkErjt1pw5c7j22ms59thjOf7446mqqur9I/jOd77Dpk2bWLlyJaWlpb1zx6qqqnj//fd57bXX2Lx5M6WlpWitOeuss/ja175Gc3P/Q9SPPPIIn3zyCTU1Nfzud79j69atA7btrLPOYuXKlTQ1NbFgwQJ++9vfJvfNCyFGrQZ3gM8ahhe0ATgyNT+9vYvjvhhMTsOEEEKIPsbTvfRIruEGErgl5Fvf+hbLli3jzTffJC8vj5kzZwJQUlKC2WzGZDJx4YUX8uGHH273Oq01N910Ez/60Y/46U9/ys0338yFF17IbbfdNuD1ioqK2Hvvvfnggw8Sap9SipNPPpk333xzp33z5s1j2bJlCb5T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K7dyF22uY0iEXRJhj3hQKNJivoujBtYiIlKEMeanQHuRhz5jrf3BxHM+A2SBb53jdcq2IqUSjDEsaoqy7ciZh5S0p8KkotoCICJSTpVsB/Bt4Aag2RhzAPistfbrlfp65eA6hf5oybBHcqJY09VCERGZCmvtzed63BjzPgrtcm6y1p51pUk5V6RUyoLGKN0Do/QOvdw6xwkZlrXGaxiViMjsVMlTJd9Zqdcuh1AIEmGP1EuFWsQl6s+6CUgREakjxphbgU8C11trh2sdTzlcOC/Fhl3HyeULteWCxqi2DoiIVMCcqVQCL0Q64pOKFIq1RNglpOWOIiJSXV8BAuBhU1jbv8Fa+6HahjQ9Ed9hWWucbUcG8N0Qi5uitQ5JRGRWmpWFmzEQC1zSUY90xCcd1cEhIiJSe9baZbWOoRJeWjLZnorg6uh/EZGKmFWFm+cYLl6QJh311DNGRESkilZ3pAhc5V4RkUqZVYWb64RoSQS1DkNERGTO0coWEZHK0qUxERERERGROqfCTUREREREpM6pcBMREREREalzKtxERERERETqnAo3ERERERGROqfCTUREREREpM6pcBMREREREalzKtxERERERETqnAo3ERERERGROqfCTUREREREpM6pcBMREREREalzxlpb6xhOMcb0AHun+TLNwLEyhDPbaFyK07icSWNSnMaluFLHZZG1tqXcwcxWyo8VpXEpTuNSnMalOI1LcWXNkXVVuJWDMWajtXZdreOoNxqX4jQuZ9KYFKdxKU7jMnPo36o4jUtxGpfiNC7FaVyKK/e4aKmkiIiIiIhInVPhJiIiIiIiUudmY+F2T60DqFMal+I0LmfSmBSncSlO4zJz6N+qOI1LcRqX4jQuxWlciivruMy6PW4iIiIiIiKzzWyccRMREREREZlVZmzhZoy51RizzRizwxjz6SKPB8aY70w8/ktjzOIahFlVkxiTf2+Med4Ys8kY84gxZlEt4qy2843Lac97mzHGGmPmxKlIkxkXY8w7Jn5mthhj/r7aMdbCJP4fLTTGPGqMeXri/9LttYizmowx9xpjuo0xm8/yuDHGfHlizDYZYy6rdozyMuXH4pQji1OOLE45sjjlyDNVNUdaa2fcH8ABdgJdgA88C1z4quf8AfC1idt3A9+pddx1MCY3AtGJ278/28dksuMy8bwEsB7YAKyrddz1MC7AcuBpoGHifmut466TcbkH+P2J2xcCe2oddxXG5TrgMmDzWR6/HfgRYICrgF/WOua5+kf5cVrjohypHDmVnxflSOXIl77nquXImTrjdiWww1q7y1o7DtwH3PWq59wF/J+J2/8A3GSMMVWMsdrOOybW2kettcMTdzcA86scYy1M5mcF4D8DnwdGqxlcDU1mXP4N8FVrbS+Atba7yjHWwmTGxQLJidsp4FAV46sJa+164MQ5nnIX8He2YAOQNsbMq0508irKj8UpRxanHFmccmRxypFFVDNHztTCrRPYf9r9AxMfK/oca20W6AOaqhJdbUxmTE73AQrV/2x33nGZmLJeYK39f9UMrMYm8/OyAlhhjHnSGLPBGHNr1aKrncmMy58B7zHGHAAeBD5SndDq2lR//0jlKD8WpxxZnHJkccqRxSlHlqZsOdItSzgyoxhj3gOsA66vdSy1ZowJAV8E3lfjUOqRS2EpyA0UrjyvN8ZcZK09Wcug6sA7gW9Ya79gjLka+KYxZo21Nl/rwERk+pQjX6YceU7KkcUpR1bQTJ1xOwgsOO3+/ImPFX2OMcalMF17vCrR1cZkxgRjzM3AZ4A7rbVjVYqtls43LglgDfCYMWYPhbXHD8yBzdeT+Xk5ADxgrc1Ya3cD2ykkqdlsMuPyAeC7ANbaXwBhoLkq0dWvSf3+kapQfixOObI45cjilCOLU44sTdly5Ewt3J4ClhtjlhhjfAqbqx941XMeAH534vbbgZ/ZiR2Cs9R5x8QYcynwNxQS0lxYiw3nGRdrbZ+1ttlau9hau5jCvoY7rbUbaxNu1Uzm/9D3KVxJxBjTTGFZyK4qxlgLkxmXfcBNAMaYVRSSUk9Vo6w/DwDvnTg56yqgz1p7uNZBzVHKj8UpRxanHFmccmRxypGlKVuOnJFLJa21WWPMh4GHKJxwc6+1dosx5s+BjdbaB4CvU5ie3UFhw+DdtYu48iY5Jn8FxIH7J/ah77PW3lmzoKtgkuMy50xyXB4CbjHGPA/kgD+y1s7qq/KTHJePA//LGPMxCpuw3zfb3/QaY75N4Q1K88S+hc8CHoC19msU9jHcDuwAhoH31yZSUX4sTjmyOOXI4pQji1OOLK6aOdLM8rEUERERERGZ8WbqUkkREREREZE5Q4WbiIiIiIhInVPhJiIiIiIiUudUuImIiIiIiNQ5FW4iIiIiIiJ1ToWbiIiIiIhInVPhJiIiIiIiUudUuInUgDHmCmPMJmNM2BgTM8ZsMcasqXVcIiIitaYcKVKcGnCL1Igx5i+AMBABDlhr/2uNQxIREakLypEiZ1LhJlIjxhgfeAoYBV5rrc3VOCQREZG6oBwpciYtlRSpnSYgDiQoXFUUERGRAuVIkVfRjJtIjRhjHgDuA5YA86y1H65xSCIiInVBOVLkTG6tAxCZi4wx7wUy1tq/N8Y4wM+NMa+31v6s1rGJiIjUknKkSHGacRMREREREalz2uMmIiIiIiJS51S4iYiIiIiI1DkVbiIiIiIiInVOhZuIiIiIiEidU+EmIiIiIiJS51S4iYiIiIiI1DkVbiIiIiIiInVOhZuIiIiIiEid+/8dhGWyxXGD5QAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title(\\\"ContinuousOrthoForest\\\")\\n\",\n    \"plt.plot(X_test, treatment_effects, label='ORF estimate')\\n\",\n    \"expected_te = np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.fill_between(X_test[:, 0], te_lower, te_upper, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title(\\\"CausalForest\\\")\\n\",\n    \"plt.plot(X_test, treatment_effects2, label='ORF estimate')\\n\",\n    \"expected_te = np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.fill_between(X_test[:, 0], te_lower2, te_upper2, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 2. Example Usage with Binary Treatment Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.1. DGP \\n\",\n    \"We use the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T \\\\sim & \\\\text{Bernoulli}\\\\left(f(W)\\\\right), &\\\\; f(W)=\\\\sigma(\\\\langle W, \\\\beta\\\\rangle + \\\\eta), \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y = & T\\\\cdot \\\\theta(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, & \\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim & \\\\text{Normal}(0,\\\\, I_{n_w}) & \\\\\\\\\\n\",\n    \"X \\\\sim & \\\\text{Uniform}(0,\\\\, 1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders, $\\\\beta, \\\\gamma$ have high sparsity and $\\\\sigma$ is the sigmoid function.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = \\\\exp( 2\\\\cdot x_1 ).\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants\\n\",\n    \"np.random.seed(1234)\\n\",\n    \"n = 1000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 1\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(range(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = np.array([exp_te(x_i) for x_i in X])\\n\",\n    \"# Define treatment\\n\",\n    \"log_odds = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"T_sigmoid = 1/(1 + np.exp(-log_odds))\\n\",\n    \"T = np.array([np.random.binomial(1, p) for p in T_sigmoid])\\n\",\n    \"# Define the outcome\\n\",\n    \"Y = TE * T + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"# ORF parameters and test data\\n\",\n    \"subsample_ratio = 0.4\\n\",\n    \"X_test = np.array(list(product(np.arange(0, 1, 0.01), repeat=n_x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.2. Train Estimator \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DROrthoForest(\\n\",\n    \"    n_trees=200, min_leaf_size=10,\\n\",\n    \"    max_depth=30, subsample_ratio=subsample_ratio,\\n\",\n    \"    propensity_model = LogisticRegression(C=1/(X.shape[0]*lambda_reg), penalty='l1', solver='saga'),\\n\",\n    \"    model_Y = Lasso(alpha=lambda_reg),\\n\",\n    \"    propensity_model_final=LogisticRegression(C=1/(X.shape[0]*lambda_reg), penalty='l1', solver='saga'),\\n\",\n    \"    model_Y_final=WeightedLasso(alpha=lambda_reg)\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   26.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 176 tasks      | elapsed:   27.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 200 out of 200 | elapsed:   27.8s finished\\n\",\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    0.2s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 185 out of 200 | elapsed:    1.0s remaining:    0.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 200 out of 200 | elapsed:    1.0s finished\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.orf._ortho_forest.DROrthoForest at 0x1a7b974ee48>\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   37.4s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   41.0s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate treatment effects for the default treatment points T0=0 and T1=1\\n\",\n    \"treatment_effects = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    1.8s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:    3.5s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate default (95%) confidence intervals for the default treatment points T0=0 and T1=1\\n\",\n    \"te_lower, te_upper = est.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = CausalForestDML(model_y=Lasso(alpha=lambda_reg),\\n\",\n    \"                       model_t=LogisticRegression(C=1/(X.shape[0]*lambda_reg)),\\n\",\n    \"                       n_estimators=200, min_samples_leaf=5,\\n\",\n    \"                       max_depth=50, max_samples=subsample_ratio/2,\\n\",\n    \"                       discrete_treatment=True,\\n\",\n    \"                       random_state=123)\\n\",\n    \"est2.fit(Y, T, X=X, W=W, cache_values=True)\\n\",\n    \"treatment_effects2 = est2.effect(X_test)\\n\",\n    \"te_lower2, te_upper2 = est2.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Population summary of CATE predictions on Training Data\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th>  <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>3.088</td>      <td>0.157</td>    <td>19.677</td>   <td>0.0</td>      <td>2.78</td>          <td>3.396</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>1.757</td>        <td>0.846</td>           <td>6.962</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.764</td>         <td>0.774</td>          <td>6.951</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Doubly Robust ATE on Training Data Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>   <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ATE</th>      <td>3.158</td>      <td>0.082</td> <td>38.551</td>   <td>0.0</td>    <td>2.997</td>    <td>3.318</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Doubly Robust ATT(T=0) on Training Data Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>   <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ATT</th>       <td>3.1</td>       <td>0.096</td> <td>32.322</td>   <td>0.0</td>    <td>2.912</td>    <td>3.288</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Doubly Robust ATT(T=1) on Training Data Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>   <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ATT</th>      <td>3.218</td>      <td>0.134</td> <td>23.965</td>   <td>0.0</td>    <td>2.955</td>    <td>3.481</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Note: The stderr_mean is a conservative upper bound.\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"               Uncertainty of Mean Point Estimate               \\n\",\n       \"================================================================\\n\",\n       \"mean_point stderr_mean zstat  pvalue ci_mean_lower ci_mean_upper\\n\",\n       \"----------------------------------------------------------------\\n\",\n       \"     3.088       0.157 19.677    0.0          2.78         3.396\\n\",\n       \"      Distribution of Point Estimate     \\n\",\n       \"=========================================\\n\",\n       \"std_point pct_point_lower pct_point_upper\\n\",\n       \"-----------------------------------------\\n\",\n       \"    1.757           0.846           6.962\\n\",\n       \"     Total Variance of Point Estimate     \\n\",\n       \"==========================================\\n\",\n       \"stderr_point ci_point_lower ci_point_upper\\n\",\n       \"------------------------------------------\\n\",\n       \"       1.764          0.774          6.951\\n\",\n       \"        Doubly Robust ATE on Training Data Results       \\n\",\n       \"=========================================================\\n\",\n       \"    point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"ATE          3.158  0.082 38.551    0.0    2.997    3.318\\n\",\n       \"     Doubly Robust ATT(T=0) on Training Data Results     \\n\",\n       \"=========================================================\\n\",\n       \"    point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"ATT            3.1  0.096 32.322    0.0    2.912    3.288\\n\",\n       \"     Doubly Robust ATT(T=1) on Training Data Results     \\n\",\n       \"=========================================================\\n\",\n       \"    point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"ATT          3.218  0.134 23.965    0.0    2.955    3.481\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"\\n\",\n       \"Note: The stderr_mean is a conservative upper bound.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est2.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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7ddY9gxMCxcu5N577+3XOXeRwCSEEKI3JD4KIcTgksStG++88w5Wq5WLLroIAKPRyB//+EceeughfD5fm2OTk5MpKSmhoqKix+evq6vj1FNPZdGiRSxatGh3UHv//fd334mcP38+brebG264gQ8//JCSkhL++Mc/8t5773HiiScCcPPNN3PBBRdwyCGHMG7cOJ5//nmuu+465syZw3HHHUc4HAbglltuYdGiRcyePZulS5eitea5555j+fLlnHvuuZSUlOD3+1mxYgWHHXYYCxYs4Nhjj6WqqmogvpxCCCFGCYmPEh+FEN/QOvHXkMStG2vXrmXBggVtHktNTaW4uJgtW7a0ebypqYnNmzdz6KGH7n7s6aef3h1gHn744Xbnv/zyy7nyyiv54osv+Pe//833v/99AO68807+/Oc/s2rVKj788EOSk5P57W9/u/vu5ZVXXtnuXFu3buWdd97hxRdf5LzzzuPwww9n9erVJCcn88orrwDw4x//mC+++II1a9bg9/t5+eWXOe2001i4cCGPP/44q1atwmQycdlll/Hcc8+xYsUKLr744jZ3UIUQe69AODrUQxDDhMRHiY9CiDit4dRT4f77E3udYb8dQGu/emkt6ypdA3rOmQWp/PKkWf06x4cffsi8efPYvHkzV1xxBXl5ebufO/PMM/nTn/7U6Wvfeust1q1bt/tzl8uFx+PhoIMO4qqrruLcc8/lu9/9LoWFhd2O4/jjj8dsNjNnzhyi0SjHHXccAHPmzGHHjh0AvPvuu9xxxx34fD4aGxuZNWsWJ510UpvzbNy4kTVr1nD00UcDEI1Gyc/P7/HXQwgxOkVjmq11HmYVpA31UMQeJD52TeKjEGIgRWOaZl+IJl+IUETz/FNmXnghmYMPiwLGhF13RCVuQ2HmzJk899xzbR5zuVyUlpYyefJkli1bxiGHHMLLL7/M9u3b2X///TnjjDMoKSnp0fljsRifffYZVqu1zeM33HADJ5xwAq+++ioHHXQQb7zxRrfnSkpKAsBgMGA2m3d3tjIYDEQiEQKBAJdeeinLly+nqKiIm2++ucOWxVprZs2axaefftqj9yCE2Dtsr/cSCMeGehhimJD4KITYm/hCEercQeo9QZz+MLGWcFhXbeD2XzqYtyjEeRdpJHFr0d87f31x5JFHcsMNN/Doo49y/vnnE41Gufrqq7nwwgux2Wxtjp0wYQI33HADv/vd73jyySd7dP5jjjmG++67j2uvvRaAVatWUVJSwtatW5kzZw5z5szhiy++YMOGDRQVFeF2u/v8XnYFoezsbDweD8899xynnXYaACkpKbvPPW3aNOrq6vj000854IADCIfDbNq0iVmzBv/rL4QYHvyhKKWNXtKSLUM9FNEBiY8SH4UQiVHnDrK1zoMnEGn3nNbwx1+mEosqrv61C4MhJaFjkTVu3VBK8cILL/Dss88yZcoUpk6ditVq5bbbbuvw+EsuuYQPPvhgd+lFd+69916WL1/O3LlzmTlzJg888AAAd999N7Nnz2bu3LmYzWaOP/545s6di9FoZN68efzxj3/s9XtJT09nyZIlzJ49m2OPPZZFixbtfu7CCy/kkksuoaSkhGg0ynPPPcf111/PvHnzKCkp4ZNPPun19YQQo8fmWvfuu4tCgMRHiY9CjH4NniCrK5o7TNoANq42sfxjC9+70k1+UeLXgCs9GC1QemjhwoV6+fLlbR5bv349M2bMGKIRia7I90aIvUOjN8SXO5sAyLBbWDAuo9/nVEqt0Fov7PeJRiil1DTg6VYPTQR+obW+u6PjJT6OLPK9EWLka/aFWFnaTDTWda60eZ2JSdMjGAxQUpxOtiOp39fuLEaOqFJJIYQQg0trzaaavpegiY5prTcCJQBKKSNQAbwwlGMSQggR5w6EWVXWedKmNWzdYGLyjAhTZnY8G5cIUiophBCiU+VN/k5LRMSAORLYqrXeOdQDEUKIvV2TN8SXpc1Eop3PtL38TDKXnp7J2pXmQRyZzLgJIYToRDgaY1u9d6iHsTc4C+hZxw4hhBAJU97kY1NN12u6K0uNPPh7B/MPCDGzJDx4g0MSNyGEEJ3YXu8lHJGOJImklLIA3wZ+2sFzS4GlAMXFxYM8MiGE2HtordlY46a80d/lcbEY3PnzVAxGuOpXTlyBMKFWcbKiyU+mzYLBoBIyTknchBBCtOMNRihv8g31MPYGxwNfaq1r9nxCa/0g8CDEm5MM9sCEEGJvUd7k7zJpC0dj7Kj38vTDyaxeYWHK6eu45b2dBDu4ubnh18dhNSRmLzdJ3IQQQrSzudYj7f8Hx9lImaQQQgypssaOb1QGw1H+/tF2Vlc4icQ0rqpxZMw2MuXgBvJSs8lNScJq+SZJG5dpw2xMXAuRhCZuSqkrge8DGlgNXKS1DiTymgOpoaGBI488EoDq6mqMRiM5OTkALFu2DIslcRvRbtiwgbPOOgulFM899xyvvPIKf/nLX9hnn314/PHHe3Wuu+++m6VLl7bbEFUIITrS4AlS7w4O9TBGPaWUHTga+MFQj6UvJEYKIUaDOncQX6j9HmyRWIwHPtjGmkonR07PZdqYFCaf4cCRpFBqaofnKilOx5igMklIYOKmlBoL/ASYqbX2K6WeIb4A+5FEXXOgZWVlsWrVKgBuvvlmHA4H11xzze7nI5EIJlNivoT/+c9/OO200/j5z38OwP33389bb71FYWFhr8919913c95550lQEkJ0a1edv0g8rbUXyBrqcfSVxEghxGhQ2sFsm9aaRz/dyeoKJ+fvP47K98fhKo6SUjy0NzUTXSppApKVUmHABlQm+HoJd+GFF2K1Wlm5ciUHHXQQqampbYLV7Nmzefnllxk/fjyPPfYY9957L6FQiP3224/7778fo7FtzeuKFSu46qqr8Hg8ZGdn88gjj7By5UruvvtujEYjb7/9NtOmTWPbtm0cf/zxXHzxxSxdupTLLruMNWvWEA6Hufnmmzn55JOJRqNcf/31vP766xgMBpYsWYLWmsrKSg4//HCys7N59913h+LLJoQYIcqb/PiC7e88CtETEiOFECOJOxCmyRtq9/i/v6zgk60NnDyvgCxvAb+518ExpwQ47NhRmrhprSuUUncCpYAfeFNr/WairjeYysvL+eSTTzAajdx8880dHrN+/XqefvppPv74Y8xmM5deeimPP/44559//u5jwuEwl112Gf/973/Jycnh6aef5sYbb+Shhx7ikksuaRPsXn/9dd59912ys7P52c9+xhFHHMFDDz1Ec3Mz++67L0cddRSPPvooO3bsYNWqVZhMJhobG8nMzOQPf/jD7tcKIURnQpEYW+s8Qz0MMcJJjBRCjBQdzbZ9srWe19dWs3hqDkdMKuCHp6WSWxDlhzcMfTVKIkslM4CTgQlAM/CsUuo8rfVjexzXq3bHixe3f+yMM+DSS8Hng299q/3zF14Y/1NfD6ed1va5997r9pLtnH766e3uCu7p7bffZsWKFSxatAgAv99Pbm5um2M2btzImjVrOProowGIRqPk5+d3e/0333yTF198kTvvvBOAQCBAaWkpb731Fpdccsnu0pTMzMxevzchxN5r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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title(\\\"DROrthoForest\\\")\\n\",\n    \"plt.plot(X_test, treatment_effects, label='ORF estimate')\\n\",\n    \"expected_te = np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.fill_between(X_test[:, 0], te_lower, te_upper, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title(\\\"CausalForest\\\")\\n\",\n    \"plt.plot(X_test, treatment_effects2, label='ORF estimate')\\n\",\n    \"expected_te = np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.fill_between(X_test[:, 0], te_lower2, te_upper2, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 3. Example Usage with Multiple Treatment Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3.1. DGP \\n\",\n    \"We use the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"Y = & \\\\sum_{t=1}^{n_{\\\\text{treatments}}} 1\\\\{T=t\\\\}\\\\cdot \\\\theta_{T}(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, \\\\; \\\\epsilon \\\\sim \\\\text{Unif}(-1, 1), \\\\\\\\\\n\",\n    \"\\\\text{Pr}[T=t \\\\mid W] \\\\propto & \\\\exp\\\\{\\\\langle W, \\\\beta_t \\\\rangle\\\\}, \\\\;\\\\;\\\\;\\\\; \\\\forall t\\\\in \\\\{0, 1, \\\\ldots, n_{\\\\text{treatments}}\\\\} \\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders, $\\\\beta_t, \\\\gamma$ are sparse.\\n\",\n    \"\\n\",\n    \"For this particular example DGP we used $n_{\\\\text{treatments}}=3$ and \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta_1(x) = & \\\\exp( 2 x_1 ),\\\\\\\\\\n\",\n    \"\\\\theta_2(x) = &  3 \\\\cdot \\\\sigma(100\\\\cdot (x_1 - .5)),\\\\\\\\\\n\",\n    \"\\\\theta_3(x) = & -2 \\\\cdot \\\\sigma(100\\\\cdot (x_1 - .25)),\\n\",\n    \"\\\\end{align}\\n\",\n    \"where $\\\\sigma$ is the sigmoid function.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def get_test_train_data(n, n_w, support_size, n_x, te_func, n_treatments):\\n\",\n    \"    # Outcome support\\n\",\n    \"    support_Y = np.random.choice(range(n_w), size=support_size, replace=False)\\n\",\n    \"    coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"    def epsilon_sample(n):\\n\",\n    \"        return np.random.uniform(-1, 1, size=n)\\n\",\n    \"    # Treatment support\\n\",\n    \"    support_T = support_Y\\n\",\n    \"    coefs_T = np.random.uniform(0, 1, size=(support_size, n_treatments))\\n\",\n    \"    def eta_sample(n):\\n\",\n    \"        return np.random.uniform(-1, 1, size=n)\\n\",\n    \"    # Generate controls, covariates, treatments and outcomes\\n\",\n    \"    W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"    X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"    # Heterogeneous treatment effects\\n\",\n    \"    TE = np.array([te_func(x_i, n_treatments) for x_i in X])\\n\",\n    \"    log_odds = np.dot(W[:, support_T], coefs_T)\\n\",\n    \"    T_sigmoid = np.exp(log_odds)\\n\",\n    \"    T_sigmoid = T_sigmoid/np.sum(T_sigmoid, axis=1, keepdims=True)\\n\",\n    \"    T = np.array([np.random.choice(n_treatments, p=p) for p in T_sigmoid])\\n\",\n    \"    TE = np.concatenate((np.zeros((n,1)), TE), axis=1)\\n\",\n    \"    Y = TE[np.arange(n), T] + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"    X_test = np.array(list(product(np.arange(0, 1, 0.01), repeat=n_x)))\\n\",\n    \"\\n\",\n    \"    return (Y, T, X, W), (X_test, np.array([te_func(x, n_treatments) for x in X_test]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import scipy.special\\n\",\n    \"def te_func(x, n_treatments):\\n\",\n    \"    return [np.exp(2*x[0]), 3*scipy.special.expit(100*(x[0] - .5)) - 1, -2*scipy.special.expit(100*(x[0] - .25))]\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"(Y, T, X, W), (X_test, te_test) = get_test_train_data(2000, 3, 3, 1, te_func, 4)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DROrthoForest(n_trees=500, model_Y = WeightedLasso(alpha=lambda_reg))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   31.2s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 112 tasks      | elapsed:   32.9s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 272 tasks      | elapsed:   35.5s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 500 out of 500 | elapsed:   39.5s finished\\n\",\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    0.3s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 208 tasks      | elapsed:    3.4s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 500 out of 500 | elapsed:    7.9s finished\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.orf._ortho_forest.DROrthoForest at 0x1a7bac95828>\"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   20.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:   22.8s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate marginal treatment effects\\n\",\n    \"treatment_effects = est.const_marginal_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    2.7s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:    5.1s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate default (95%) marginal confidence intervals for the test data\\n\",\n    \"te_lower, te_upper = est.const_marginal_effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    2.5s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:    4.9s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res = est.const_marginal_effect_inference(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th>T</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"3\\\" valign=\\\"top\\\">0</th>\\n\",\n       \"      <th>T0_1</th>\\n\",\n       \"      <td>1.013</td>\\n\",\n       \"      <td>0.159</td>\\n\",\n       \"      <td>6.360</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.701</td>\\n\",\n       \"      <td>1.325</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_2</th>\\n\",\n       \"      <td>-0.989</td>\\n\",\n       \"      <td>0.149</td>\\n\",\n       \"      <td>-6.636</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.281</td>\\n\",\n       \"      <td>-0.697</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_3</th>\\n\",\n       \"      <td>0.034</td>\\n\",\n       \"      <td>0.226</td>\\n\",\n       \"      <td>0.152</td>\\n\",\n       \"      <td>0.879</td>\\n\",\n       \"      <td>-0.408</td>\\n\",\n       \"      <td>0.477</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">1</th>\\n\",\n       \"      <th>T0_1</th>\\n\",\n       \"      <td>1.018</td>\\n\",\n       \"      <td>0.160</td>\\n\",\n       \"      <td>6.379</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.705</td>\\n\",\n       \"      <td>1.331</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_2</th>\\n\",\n       \"      <td>-0.987</td>\\n\",\n       \"      <td>0.147</td>\\n\",\n       \"      <td>-6.717</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.276</td>\\n\",\n       \"      <td>-0.699</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">98</th>\\n\",\n       \"      <th>T0_2</th>\\n\",\n       \"      <td>1.967</td>\\n\",\n       \"      <td>0.210</td>\\n\",\n       \"      <td>9.345</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.554</td>\\n\",\n       \"      <td>2.379</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_3</th>\\n\",\n       \"      <td>-2.021</td>\\n\",\n       \"      <td>0.163</td>\\n\",\n       \"      <td>-12.414</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-2.340</td>\\n\",\n       \"      <td>-1.702</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"3\\\" valign=\\\"top\\\">99</th>\\n\",\n       \"      <th>T0_1</th>\\n\",\n       \"      <td>6.867</td>\\n\",\n       \"      <td>0.244</td>\\n\",\n       \"      <td>28.194</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>6.390</td>\\n\",\n       \"      <td>7.344</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_2</th>\\n\",\n       \"      <td>1.966</td>\\n\",\n       \"      <td>0.212</td>\\n\",\n       \"      <td>9.276</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.551</td>\\n\",\n       \"      <td>2.382</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T0_3</th>\\n\",\n       \"      <td>-2.017</td>\\n\",\n       \"      <td>0.163</td>\\n\",\n       \"      <td>-12.352</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-2.337</td>\\n\",\n       \"      <td>-1.697</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>300 rows × 6 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"         point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X  T                                                               \\n\",\n       \"0  T0_1           1.013   0.159   6.360   0.000     0.701     1.325\\n\",\n       \"   T0_2          -0.989   0.149  -6.636   0.000    -1.281    -0.697\\n\",\n       \"   T0_3           0.034   0.226   0.152   0.879    -0.408     0.477\\n\",\n       \"1  T0_1           1.018   0.160   6.379   0.000     0.705     1.331\\n\",\n       \"   T0_2          -0.987   0.147  -6.717   0.000    -1.276    -0.699\\n\",\n       \"...                 ...     ...     ...     ...       ...       ...\\n\",\n       \"98 T0_2           1.967   0.210   9.345   0.000     1.554     2.379\\n\",\n       \"   T0_3          -2.021   0.163 -12.414   0.000    -2.340    -1.702\\n\",\n       \"99 T0_1           6.867   0.244  28.194   0.000     6.390     7.344\\n\",\n       \"   T0_2           1.966   0.212   9.276   0.000     1.551     2.382\\n\",\n       \"   T0_3          -2.017   0.163 -12.352   0.000    -2.337    -1.697\\n\",\n       \"\\n\",\n       \"[300 rows x 6 columns]\"\n      ]\n     },\n     \"execution_count\": 29,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"res.summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = CausalForestDML(model_y=Lasso(alpha=lambda_reg),\\n\",\n    \"                       model_t=LogisticRegression(C=1/(X.shape[0]*lambda_reg)),\\n\",\n    \"                       n_estimators=4000, min_samples_leaf=5,\\n\",\n    \"                       max_depth=50, max_samples=subsample_ratio/2,\\n\",\n    \"                       discrete_treatment=True,\\n\",\n    \"                       random_state=123)\\n\",\n    \"est2.fit(Y, T, X=X, W=W)\\n\",\n    \"treatment_effects2 = est2.const_marginal_effect(X_test)\\n\",\n    \"te_lower2, te_upper2 = est2.const_marginal_effect_interval(X_test, alpha=.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title(\\\"DROrthoForest\\\")\\n\",\n    \"y = treatment_effects\\n\",\n    \"colors = ['b', 'r', 'g']\\n\",\n    \"for it in range(y.shape[1]):\\n\",\n    \"    plt.plot(X_test[:, 0], te_test[:, it], '--', label='True effect T={}'.format(it), color=colors[it])\\n\",\n    \"    plt.fill_between(X_test[:, 0], te_lower[:, it], te_upper[:, it], alpha=0.3, color='C{}'.format(it))\\n\",\n    \"    plt.plot(X_test, y[:, it], label='ORF estimate T={}'.format(it), color='C{}'.format(it))\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title(\\\"CausalForest\\\")\\n\",\n    \"y = treatment_effects2\\n\",\n    \"colors = ['b', 'r', 'g']\\n\",\n    \"for it in range(y.shape[1]):\\n\",\n    \"    plt.plot(X_test[:, 0], te_test[:, it], '--', label='True effect T={}'.format(it), color=colors[it])\\n\",\n    \"    plt.fill_between(X_test[:, 0], te_lower2[:, it], te_upper2[:, it], alpha=0.3, color='C{}'.format(it))\\n\",\n    \"    plt.plot(X_test, y[:, it], label='ORF estimate T={}'.format(it), color='C{}'.format(it))\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 4. Example Usage with Real Continuous Treatment Observational Data\\n\",\n    \"\\n\",\n    \"We applied our technique to Dominick’s dataset, a popular historical dataset of store-level orange juice prices and sales provided by University of Chicago Booth School of Business. \\n\",\n    \"\\n\",\n    \"The dataset is comprised of a large number of covariates $W$, but researchers might only be interested in learning the elasticity of demand as a function of a few variables $x$ such\\n\",\n    \"as income or education. \\n\",\n    \"\\n\",\n    \"We applied the `DMLOrthoForest` to estimate orange juice price elasticity\\n\",\n    \"as a function of income, and our results, unveil the natural phenomenon that lower income consumers are more price-sensitive.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4.1. Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# A few more imports\\n\",\n    \"import os\\n\",\n    \"import pandas as pd\\n\",\n    \"import urllib.request\\n\",\n    \"from sklearn.preprocessing import StandardScaler\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>store</th>\\n\",\n       \"      <th>brand</th>\\n\",\n       \"      <th>week</th>\\n\",\n       \"      <th>logmove</th>\\n\",\n       \"      <th>feat</th>\\n\",\n       \"      <th>price</th>\\n\",\n       \"      <th>AGE60</th>\\n\",\n       \"      <th>EDUC</th>\\n\",\n       \"      <th>ETHNIC</th>\\n\",\n       \"      <th>INCOME</th>\\n\",\n       \"      <th>HHLARGE</th>\\n\",\n       \"      <th>WORKWOM</th>\\n\",\n       \"      <th>HVAL150</th>\\n\",\n       \"      <th>SSTRDIST</th>\\n\",\n       \"      <th>SSTRVOL</th>\\n\",\n       \"      <th>CPDIST5</th>\\n\",\n       \"      <th>CPWVOL5</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>40</td>\\n\",\n       \"      <td>9.018695</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>46</td>\\n\",\n       \"      <td>8.723231</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>47</td>\\n\",\n       \"      <td>8.253228</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>48</td>\\n\",\n       \"      <td>8.987197</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>50</td>\\n\",\n       \"      <td>9.093357</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   store      brand  week   logmove  feat  price     AGE60      EDUC   ETHNIC  \\\\\\n\",\n       \"0      2  tropicana    40  9.018695     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"1      2  tropicana    46  8.723231     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"2      2  tropicana    47  8.253228     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"3      2  tropicana    48  8.987197     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"4      2  tropicana    50  9.093357     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"\\n\",\n       \"      INCOME   HHLARGE   WORKWOM   HVAL150  SSTRDIST   SSTRVOL  CPDIST5  \\\\\\n\",\n       \"0  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"1  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"2  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"3  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"4  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"\\n\",\n       \"    CPWVOL5  \\n\",\n       \"0  0.376927  \\n\",\n       \"1  0.376927  \\n\",\n       \"2  0.376927  \\n\",\n       \"3  0.376927  \\n\",\n       \"4  0.376927  \"\n      ]\n     },\n     \"execution_count\": 33,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Import the data\\n\",\n    \"file_name = \\\"oj_large.csv\\\"\\n\",\n    \"\\n\",\n    \"if not os.path.isfile(file_name):\\n\",\n    \"    print(\\\"Downloading file (this might take a few seconds)...\\\")\\n\",\n    \"    urllib.request.urlretrieve(\\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/OrangeJuice/oj_large.csv\\\",\\n\",\n    \"                               file_name)\\n\",\n    \"oj_data = pd.read_csv(file_name)\\n\",\n    \"oj_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Prepare data\\n\",\n    \"Y = oj_data['logmove'].values\\n\",\n    \"T = np.log(oj_data[\\\"price\\\"]).values\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"W1 = scaler.fit_transform(oj_data[[c for c in oj_data.columns\\n\",\n    \"                                   if c not in ['price', 'logmove', 'brand', 'week', 'store']]].values)\\n\",\n    \"W2 = pd.get_dummies(oj_data[['brand']]).values\\n\",\n    \"W = np.concatenate([W1, W2], axis=1)\\n\",\n    \"X = oj_data[['INCOME']].values\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define some parameters\\n\",\n    \"n_trees = 1000\\n\",\n    \"min_leaf_size = 50\\n\",\n    \"max_depth = 20\\n\",\n    \"subsample_ratio = 0.04\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DMLOrthoForest(\\n\",\n    \"        n_trees=n_trees, min_leaf_size=min_leaf_size, max_depth=max_depth,\\n\",\n    \"        subsample_ratio=subsample_ratio,\\n\",\n    \"        model_T=Lasso(alpha=0.1),\\n\",\n    \"        model_Y=Lasso(alpha=0.1),\\n\",\n    \"        model_T_final=WeightedLassoCVWrapper(cv=3),\\n\",\n    \"        model_Y_final=WeightedLassoCVWrapper(cv=3)\\n\",\n    \"       )\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   20.3s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 152 tasks      | elapsed:   21.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:   22.5s finished\\n\",\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    0.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 888 tasks      | elapsed:    1.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:    2.1s finished\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.orf._ortho_forest.DMLOrthoForest at 0x1a7cdd37588>\"\n      ]\n     },\n     \"execution_count\": 37,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"min_income = 10.0\\n\",\n    \"max_income = 11.1\\n\",\n    \"delta = (max_income - min_income) / 100\\n\",\n    \"X_test = np.arange(min_income, max_income + delta - 0.001, delta).reshape(-1, 1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   23.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 101 out of 101 | elapsed:   35.2s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate marginal treatment effects\\n\",\n    \"treatment_effects = est.const_marginal_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    6.1s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 101 out of 101 | elapsed:   21.3s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Calculate default (95%) marginal confidence intervals for the test data\\n\",\n    \"te_upper, te_lower = est.const_marginal_effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = CausalForestDML(model_y=WeightedLassoCVWrapper(cv=3),\\n\",\n    \"                       model_t=WeightedLassoCVWrapper(cv=3),\\n\",\n    \"                       n_estimators=n_trees, min_samples_leaf=min_leaf_size, max_depth=max_depth,\\n\",\n    \"                       max_samples=subsample_ratio/2,\\n\",\n    \"                       random_state=123)\\n\",\n    \"est2.fit(Y, T, X=X, W=W)\\n\",\n    \"treatment_effects2 = est2.effect(X_test)\\n\",\n    \"te_lower2, te_upper2 = est2.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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7HT1/Xy8Jg83T2A9ZXi1CA9nu4ylxMzeiHe19M5Cl0VEREqPzguKi84LRCZPCeChDK+PQQdeU4+ngc+OawVmx+BVKXfjVT3LBJjZX/E6Dv9but27iIhIvum8oEjovEAkO9QEVEREREREpESoBlBERERERKREKAEUEREREREpESNNKDrlzZgxwy1evLjQxRARkRxbv359q3NuZqHLMVUoPoqIlI7RYuS0TAAXL17Mww9rkC0RkenOzLYXugxTieKjiEjpGC1GqgmoiIiIiIhIiVACKCIiIiIiUiKUAIqIiIiIiJSIadkHUEQkV+LxOLt27SIajRa6KCWlrKyMBQsWEAwGC10UEREZgeJj4Yw3RioBFBEZh127dlFdXc3ixYsxs0IXpyQ452hra2PXrl0sWbKk0MUREZERKD4WxkRipJqAioiMQzQapbGxUcEtj8yMxsZGXVUWESliio+FMZEYqQRQRGScFNzyT++5iEjx07G6MMb7visBFBGZYnbt2sVrX/tali9fztKlS/nQhz5ELBYD4K9//SvnnHPOIa/561//Sm1tLWvXrj1wu+OOOwCoqqqaUDm+8Y1vEIlEDtw/++yz6ezsHHX5a6+9lhtuuAGA66+/nj179kxouyIiIiNRfMyMEkARkSnEOccb3vAGXve617Fp0yaeffZZent7ueKKKw772lNPPZUNGzYcuJ155pmTKsvwAHfrrbdSV1c36vLvec97uPDCCwElgCIikl2Kj5lTAigiMoXceeedlJWVcfHFFwPg9/v5+te/zg9/+MODgs1E9Pb2csYZZ3D88cdzzDHHcMsttwDQ19fHq1/9ao499lhWr17NTTfdxLe+9S327NnDS1/6Ul760pcCsHjxYlpbWwG44YYbWLNmDcceeywXXHABAJ///Oe5+uqr+eUvf8nDDz/Meeedx9q1a/nDH/7A6173ugPluP3223n9618/qX0REZHSoviYOY0CKiLTxtbWPqLxJAGf4ffZgTbxKedwzrs6mHSOVAr8PiPoN4J+H0G/D58BBob3Wr/PDqzHZ4bPwFcEfRuefPJJTjjhhIMeq6mpoampieeee27M1/7tb39j7dq1B+7/6le/YunSpQful5WVcfPNN1NTU0Nraysnn3wyr3nNa/jTn/7EvHnz+MMf/gBAV1cXtbW1/Pd//zd33XUXM2bMOKSMV155Jffd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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot Orange Juice elasticity as a function of income\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(X_test.flatten(), treatment_effects, label=\\\"OJ Elasticity\\\")\\n\",\n    \"plt.fill_between(X_test.flatten(), te_lower, te_upper, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.xlabel(r'$\\\\log$(Income)')\\n\",\n    \"plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.title(\\\"Orange Juice Elasticity vs Income: DMLOrthoForest\\\")\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.plot(X_test.flatten(), treatment_effects2, label=\\\"OJ Elasticity\\\")\\n\",\n    \"plt.fill_between(X_test.flatten(), te_lower2, te_upper2, label=\\\"95% BLB CI\\\", alpha=0.3)\\n\",\n    \"plt.xlabel(r'$\\\\log$(Income)')\\n\",\n    \"plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.title(\\\"Orange Juice Elasticity vs Income: CausalForest\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.9.13 64-bit (microsoft store)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.13\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"d2603944574c6ce6e242666bf20bfb1bc23ccfec8e562036b69397ff157ca866\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Causal Model Selection with the RScorer.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Model Selection for Causal Effect Model with the RScorer\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"## Ignore warnings\\n\",\n    \"import warnings\\n\",\n    \"warnings.filterwarnings('ignore')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Main imports\\n\",\n    \"from econml.dml import DML, LinearDML, SparseLinearDML, NonParamDML\\n\",\n    \"from econml.metalearners import XLearner, TLearner, SLearner, DomainAdaptationLearner\\n\",\n    \"from econml.dr import DRLearner\\n\",\n    \"\\n\",\n    \"import numpy as np\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"from sklearn.linear_model import LassoCV\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from sklearn.model_selection import train_test_split\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Example Usage with Single Binary Treatment Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1. DGP \\n\",\n    \"We use the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T \\\\sim & \\\\text{Bernoulli}\\\\left(f(W)\\\\right), &\\\\; f(W)=\\\\sigma(\\\\langle W, \\\\beta\\\\rangle + \\\\eta), \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y = & T\\\\cdot \\\\theta(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, & \\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim & \\\\text{Normal}(0,\\\\, I_{n_w}) & \\\\\\\\\\n\",\n    \"X \\\\sim & \\\\text{Uniform}(0,\\\\, 1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders, $\\\\beta, \\\\gamma$ have high sparsity and $\\\\sigma$ is the sigmoid function.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = 1\\\\{x_0 > .5\\\\}\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Treatment effect function\\n\",\n    \"def exp_te(x):\\n\",\n    \"    return x[:, 0] > 0.5\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 5000\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 10\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(range(n_x), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = exp_te(X)\\n\",\n    \"# Define treatment\\n\",\n    \"log_odds = np.dot(X[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"T_sigmoid = 1/(1 + np.exp(-log_odds))\\n\",\n    \"T = np.array([np.random.binomial(1, p) for p in T_sigmoid])\\n\",\n    \"# Define the outcome\\n\",\n    \"Y = TE * T + np.dot(X[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"# get testing data\\n\",\n    \"X_test = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"X_test[:, 0] = np.linspace(0, 1, n)\\n\",\n    \"expected_te_test = exp_te(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def reg():\\n\",\n    \"    return RandomForestRegressor(min_samples_leaf=10)\\n\",\n    \"def clf():\\n\",\n    \"    return RandomForestClassifier(min_samples_leaf=10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_train, X_val, T_train, T_val, Y_train, Y_val = train_test_split(X, T, Y, test_size=.4)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"models = [('ldml', LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True, cv=3)),\\n\",\n    \"          ('sldml', SparseLinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True,\\n\",\n    \"                                    featurizer=PolynomialFeatures(degree=2, include_bias=False),\\n\",\n    \"                                    cv=3)),\\n\",\n    \"          ('xlearner', XLearner(models=reg(), cate_models=reg(), propensity_model=clf())),\\n\",\n    \"          ('dalearner', DomainAdaptationLearner(models=reg(), final_models=reg(), propensity_model=clf())),\\n\",\n    \"          ('slearner', SLearner(overall_model=reg())),\\n\",\n    \"          ('tlearner', TLearner(models=reg())),\\n\",\n    \"          ('drlearner', DRLearner(model_propensity=clf(), model_regression=reg(),\\n\",\n    \"                                  model_final=reg(), cv=3)),\\n\",\n    \"          ('rlearner', NonParamDML(model_y=reg(), model_t=clf(), model_final=reg(),\\n\",\n    \"                                   discrete_treatment=True, cv=3)),\\n\",\n    \"          ('dml3dlasso', DML(model_y=reg(), model_t=clf(), model_final=LassoCV(), discrete_treatment=True,\\n\",\n    \"                             featurizer=PolynomialFeatures(degree=3),\\n\",\n    \"                             cv=3))\\n\",\n    \"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done   4 out of   9 | elapsed:   35.0s remaining:   43.8s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done   9 out of   9 | elapsed:   54.0s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from joblib import Parallel, delayed\\n\",\n    \"\\n\",\n    \"def fit_model(name, model):\\n\",\n    \"    return name, model.fit(Y_train, T_train, X=X_train)\\n\",\n    \"\\n\",\n    \"models = Parallel(n_jobs=-1, verbose=1)(delayed(fit_model)(name, mdl) for name, mdl in models)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.score.rscorer.RScorer at 0x23a3270da90>\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.score import RScorer\\n\",\n    \"\\n\",\n    \"scorer = RScorer(model_y=reg(), model_t=clf(),\\n\",\n    \"                 discrete_treatment=True, cv=3,\\n\",\n    \"                 mc_iters=3, mc_agg='median')\\n\",\n    \"scorer.fit(Y_val, T_val, X=X_val)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rscore = [scorer.score(mdl) for _, mdl in models]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"expected_te_val = exp_te(X_val)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rootpehe = [np.sqrt(np.mean((expected_te_val.flatten() - mdl.effect(X_val).flatten())**2)) for _, mdl in models]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXQElEQVR4nO3dfZBdd33f8feHtd0uT90MXoK9NrGSauSIGLCzGBcynlIebLkMMi4JdsJ4BtoIz2Ae2sGN3WaaZDod0zGdpp4aK2pwGA8JTgFbozaORVpmSDtg0MrCNrbRRChQS3LqBSJTsAZL9rd/3CP76uqsdPfh7JPer5k72nN+v3Pv97cX9uPz9DupKiRJGvSipS5AkrQ8GRCSpFYGhCSplQEhSWplQEiSWp221AUspDPPPLPOO++8pS5DklaMnTt3fr+qxtvaVlVAnHfeeUxNTS11GZK0YiT53kxtHmKSJLUyICRJrQwISVIrA0KS1MqAkCS1WlVXMS2Urbv2c8v23Rw4eIizx0a54bJ1XHnhxFKXJUmLyoAYsHXXfm66+2EOHX4WgP0HD3HT3Q8DGBKSTikeYhpwy/bdz4fDUYcOP8st23cvUUWStDQMiAEHDh6a1XpJWq0MiAFnj422rv97o6cvciWStLRO+XMQgyek33L+OH/6jcc5/NyxT9r7yTNH2Lprv+chJJ0yTuk9iKMnpPcfPETROyH9xZ37OeO0438th58tz0NIOqWc0nsQM52QnonnISSdSk7pPYjZ/sGf6fyEJK1Gp3RAzPQHf2z0dEZPHzlm3ejpI9xw2brFKEuSloVTOiBuuGxdaxD87rtew81XXcDE2CgBJsZGufmqCzxBLemUckqfgzj6B3+maTUMBEmnslM6IKAXAgaBJB2v00NMSS5PsjvJniQ3trSfn+RrSX6a5OMDbXckeTLJt7qscTXYums/b/7El1lz45/x5k98ma279i91SZJWgc4CIskIcBuwAVgPXJNk/UC3HwIfAT7Z8hafAS7vqr7Vou1ejpvuftiQkDRvXe5BXAzsqaq9VfUMcBewsb9DVT1ZVTuAw4MbV9Vf0gsQnYCTC0rqSpcBMQE83re8r1m3oJJsSjKVZGp6enqh337Zc3JBSV3pMiDSsq5a1s1LVW2pqsmqmhwfH1/ot1/2ZrqXw5v6JM1XlwGxDzi3b/kc4ECHn3dKmuleDm/qkzRfXV7mugNYm2QNsB+4Gvj1Dj/vlHSyezkkaa46C4iqOpLkemA7MALcUVWPJLmuad+c5FXAFPBy4LkkHwPWV9WPknwO+IfAmUn2Ab9TVZ/uqt6VzHs5JHWh0xvlqupe4N6BdZv7fv4beoee2ra9psvaJEkndkrPxSRJmpkBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJatVpQCS5PMnuJHuS3NjSfn6SryX5aZKPz2ZbSVK3OguIJCPAbcAGYD1wTZL1A91+CHwE+OQctpUkdajLPYiLgT1VtbeqngHuAjb2d6iqJ6tqB3B4tttKkrrVZUBMAI/3Le9r1i3otkk2JZlKMjU9PT2nQiVJx+syINKyrhZ626raUlWTVTU5Pj4+dHGSpBPrMiD2Aef2LZ8DHFiEbSVJC6DLgNgBrE2yJskZwNXAtkXYVpK0AE7r6o2r6kiS64HtwAhwR1U9kuS6pn1zklcBU8DLgeeSfAxYX1U/atu2q1olScdL1bCnBZa/ycnJmpqaWuoyJGnFSLKzqibb2ryTWpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSq87upJbmY+uu/dyyfTcHDh7i7LFRbrhsHVdeOOxkwJIWggGhZWfrrv3cdPfDHDr8LAD7Dx7iprsfBjguJAwSqTseYtKyc8v23c+Hw1GHDj/LLdt3H7PuaJDsP3iI4oUg2bpr/yJWK61eBoSWnQMHDw21ftggkTQ3BoSWnbPHRodaP2yQSJobA0LLzg2XrWP09JFj1o2ePsINl607Zt2wQSJpbgwILTtXXjjBzVddwMTYKAEmxka5+aoLjjv5PGyQSJobr2LSsnTlhRMnvRrpaLtXMUndMCC0og0TJJLmxkNMkqRWnQZEksuT7E6yJ8mNLe1JcmvT/lCSi/raPprkW0keaZ5VLUlaRJ0FRJIR4DZgA7AeuCbJ+oFuG4C1zWsTcHuz7S8BvwlcDLwOeGeStV3VKkk6Xpd7EBcDe6pqb1U9A9wFbBzosxG4s3ruB8aSnAX8InB/VT1dVUeArwDv7rBWSdKALgNiAni8b3lfs26YPt8CLk3yiiQvBq4Azm37kCSbkkwlmZqenl6w4iXpVNdlQKRlXQ3Tp6oeA/498BfAfcCDwJG2D6mqLVU1WVWT4+Pj86lXktSny4DYx7H/1X8OcGDYPlX16aq6qKouBX4I/FWHtUqSBnQZEDuAtUnWJDkDuBrYNtBnG3BtczXTJcBTVfUEQJJXNv++GrgK+FyHtUqSBnR2o1xVHUlyPbAdGAHuqKpHklzXtG8G7qV3fmEP8DTw/r63+GKSVwCHgQ9V1d92Vask6XipGjwtsHJNTk7W1NTUUpchSStGkp1VNdnW5p3UkqRWBoQkqZWT9Ukd8pnZWskMCKkjR5+ZffSxqEefmQ0YEloRPMQkdcRnZmulMyCkjvjMbK10BoTUEZ+ZrZXOgJA64jOztdJ5klrqyMmeme0VTlruDAipQzM9M9srnLQSeIhJWgJe4aSVwICQloBXOGklMCCkJeAVTloJhg6IJD+X5G3Nz6NJXtZdWdLq5hVOWgmGCogkvwl8AfiDZtU5wNaOapJWvSsvnODmqy5gYmyUABNjo9x81QWeoNayMuxVTB8CLga+DlBVf3X0iW+S5mamK5yk5WLYQ0w/rapnji4kOQ1YPU8akiQdZ9iA+EqSfwWMJnk78Hngv3VXliRpqQ0bEL8FTAMPAx+k9yzp3z7ZRkkuT7I7yZ4kN7a0J8mtTftDSS7qa/vnSR5J8q0kn0vyd4esVZK0AE56DiLJi4CHquqXgP8y7BsnGQFuA94O7AN2JNlWVY/2ddsArG1ebwRuB96YZAL4CLC+qg4l+a/A1cBnhv18SdL8nHQPoqqeAx5M8upZvvfFwJ6q2tucv7gL2DjQZyNwZ/XcD4wlOatpO43eIa3TgBcDB2b5+ZKkeRj2KqazgEeSfAP4ydGVVfWuE2wzATzet7yP3l7CyfpMVNVUkk8C/wc4BHypqr7U9iFJNgGbAF796tlmmCRpJsMGxO/N4b3Tsm7wyqfWPkl+ht7exRrgIPD5JO+rqs8e17lqC7AFYHJy0iurJGmBDHWSuqq+AnwbeFnzeqxZdyL7gHP7ls/h+MNEM/V5G/DXVTVdVYeBu4E3DVOrJGlhDHsn9a8B3wB+Ffg14OtJ3nOSzXYAa5OsSXIGvZPM2wb6bAOuba5mugR4qqqeoHdo6ZIkL04S4K3AY0OPSpI0b8MeYvrXwBuq6kmAJOPA/6A3/UarqjqS5HpgOzAC3FFVjyS5rmnfTO9y2SuAPcDTwPubtq8n+QLwAHAE2EVzGEmStDhSdfLD9kkerqoL+pZfBDzYv245mJycrKmpqaUuQ5JWjCQ7q2qyrW3YPYj7kmwHPtcsvxf484UoTpK0PA0VEFV1Q5KrgF+hd+XRlqq6p9PKJElLaqiASLIGuLeq7m6WR5OcV1Xf7bI4SdLSGXYups8Dz/UtP9uskyStUsMGxGn90303P5/RTUmSpOVg2ICYTvL8tBpJNgLf76YkSdJyMOxVTNcBf5zkP9M7Sf04cG1nVUmSltywVzF9h96dzS+ld+/E/+u2LEnSUht2qo2PJnk5vZlc/2OSB5K8o9vSJElLadhzEB+oqh8B7wBeSW9KjE90VpUkackNGxBHp+W+AvijqnqQ9qm6JUmrxEkDoplN9fvNVBtXANuTvIxj74uQJK0yJz1JXVWVZAz4Z8Deqno6yStoZl6VJK1Ow17m+jVgpKoOAlTVD4AfdFWUJGnpDRsQbwE+mOR79K5kCr2di9d2VpkkaUkNGxAbOq1CkrTsDHuj3Pe6LkSStLwMe5mrJOkU02lAJLk8ye4ke5Lc2NKeJLc27Q8luahZvy7JN/teP0rysS5rlSQda9hzELOWZAS4DXg7sA/YkWRbVT3a120DsLZ5vRG4HXhjVe0GXt/3PvsBn2AnSYuoyz2Ii4E9VbW3eX7EXcDGgT4bgTur535gLMlZA33eCnzH8yCStLi6DIgJetOCH7WvWTfbPlcDn1vw6iRJJ9RlQLTN1VSz6ZPkDOBdnODxpkk2JZlKMjU9PT2nQiVJx+syIPYB5/YtnwMcmGWfDcADVfV/Z/qQqtpSVZNVNTk+Pj7PkiVJR3UZEDuAtUnWNHsCVwPbBvpsA65trma6BHiqqp7oa78GDy9J0pLo7CqmqjqS5HpgOzAC3FFVjyS5rmnfDNxLb4bYPcDT9E0AmOTF9K6A+mBXNUqSZtZZQABU1b30QqB/3ea+nwv40AzbPg28osv6JEkz805qSVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAkteo0IJJcnmR3kj1JbmxpT5Jbm/aHklzU1zaW5AtJvp3ksST/oMtaJUnH6iwgkowAtwEbgPXANUnWD3TbAKxtXpuA2/va/hNwX1WdD7wOeKyrWiVJx+tyD+JiYE9V7a2qZ4C7gI0DfTYCd1bP/cBYkrOSvBy4FPg0QFU9U1UHO6xVkjSgy4CYAB7vW97XrBumz88D08AfJdmV5A+TvKTtQ5JsSjKVZGp6enrhqpekU1yXAZGWdTVkn9OAi4Dbq+pC4CfAcecwAKpqS1VNVtXk+Pj4fOqVJPXpMiD2Aef2LZ8DHBiyzz5gX1V9vVn/BXqBIUlaJF0GxA5gbZI1Sc4Arga2DfTZBlzbXM10CfBUVT1RVX8DPJ5kXdPvrcCjHdYqSRpwWldvXFVHklwPbAdGgDuq6pEk1zXtm4F7gSuAPcDTwPv73uLDwB834bJ3oE2S1LFUDZ4WWLkmJydrampqqcuQpBUjyc6qmmxr805qSVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktSq04BIcnmS3Un2JLmxpT1Jbm3aH0pyUV/bd5M8nOSbSXyOqCQtstO6euMkI8BtwNuBfcCOJNuq6tG+bhuAtc3rjcDtzb9HvaWqvt9VjZKkmXW5B3ExsKeq9lbVM8BdwMaBPhuBO6vnfmAsyVkd1iRJGlKXATEBPN63vK9ZN2yfAr6UZGeSTTN9SJJNSaaSTE1PTy9A2ZIk6DYg0rKuZtHnzVV1Eb3DUB9Kcmnbh1TVlqqarKrJ8fHxuVcrSTpGlwGxDzi3b/kc4MCwfarq6L9PAvfQO2QlSVokXQbEDmBtkjVJzgCuBrYN9NkGXNtczXQJ8FRVPZHkJUleBpDkJcA7gG91WKskaUBnVzFV1ZEk1wPbgRHgjqp6JMl1Tftm4F7gCmAP8DTw/mbznwXuSXK0xj+pqvu6qlWSdLxUDZ4WWLkmJydraspbJiRpWEl2VtVkW5t3UkuSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWnU23bckqVtbd+3nlu27OXDwEGePjXLDZeu48sLBJzvPnQEhSSvQ1l37uenuhzl0+FkA9h88xE13PwywYCHhISZJWoFu2b77+XA46tDhZ7ll++4F+wwDQpJWoAMHD81q/VwYEJK0Ap09Njqr9XPRaUAkuTzJ7iR7ktzY0p4ktzbtDyW5aKB9JMmuJP+9yzolaaW54bJ1jJ4+csy60dNHuOGydQv2GZ0FRJIR4DZgA7AeuCbJ+oFuG4C1zWsTcPtA+0eBx7qqUZJWqisvnODmqy5gYmyUABNjo9x81QUr5iqmi4E9VbUXIMldwEbg0b4+G4E7q6qA+5OMJTmrqp5Icg7wj4F/B/yLDuuUpBXpygsnFjQQBnV5iGkCeLxveV+zbtg+vw/8S+C5E31Ikk1JppJMTU9Pz6tgSdILugyItKyrYfokeSfwZFXtPNmHVNWWqpqsqsnx8fG51ClJatFlQOwDzu1bPgc4MGSfNwPvSvJd4C7gHyX5bHelSpIGdRkQO4C1SdYkOQO4Gtg20GcbcG1zNdMlwFNV9URV3VRV51TVec12X66q93VYqyRpQGcnqavqSJLrge3ACHBHVT2S5LqmfTNwL3AFsAd4Gnh/V/VIkmYnvQuIVock08D3lrqOPmcC31/qIhbQahrPahoLrK7xOJbF9XNV1XoCd1UFxHKTZKqqJpe6joWymsazmsYCq2s8jmX5cKoNSVIrA0KS1MqA6NaWpS5gga2m8aymscDqGo9jWSY8ByFJauUehCSplQEhSWplQMzREM+6OD/J15L8NMnHB9q+m+ThJN9MMrV4VbcbYiy/0Tyv46EkX03yumG3XQrzHM9K+242NuP4ZjNp5a8Mu+1im+dYltX3AsP/fpO8IcmzSd4z222XXFX5muWL3p3h3wF+HjgDeBBYP9DnlcAb6E1X/vGBtu8CZy71OGYxljcBP9P8vAH4+rDbrqTxrNDv5qW8cC7xtcC3l+N3M5+xLLfvZTa/36bfl+nNGvGe5fjdnOjlHsTcPP+si6p6ht6Eghv7O1TVk1W1Azi8FAXOwjBj+WpV/W2zeD+9SRWH2nYJzGc8y80wY/lxNX91gJfwwozJy+27mc9YlqNhf78fBr4IPDmHbZecATE3wzzr4kQK+FKSnUk2LWhlszfbsfxT4M/nuO1imM94YAV+N0neneTbwJ8BH5jNtotoPmOB5fW9wBDjSTIBvBvYPNttl4sunyi3mg3zrIsTeXNVHUjySuAvkny7qv5ygWqbraHHkuQt9P6gHj02PN/fQxfmMx5Ygd9NVd0D3JPkUuDfAm8bdttFNJ+xwPL6XmC48fw+8FtV9WxyTPfl9t3MyD2IuRnmWRczqqoDzb9PAvfQ2+VcKkONJclrgT8ENlbVD2az7SKbz3hW5HdzVPMH8xeSnDnbbRfBfMay3L4XGG48k8BdzXNt3gN8KsmVQ267PCz1SZCV+KK357UXWMMLJ5leM0Pf36XvJDW9Y6sv6/v5q8Dly3kswKvpTcn+prn+HlbIeFbid/P3eeHE7kXAfnr/hbqsvpt5jmVZfS/Djmeg/2d44ST1svpuTvTyENMc1BDPukjyKmAKeDnwXJKPAevpTf97T7PLeRrwJ1V13xIMg6bWYZ7b8W+AV9D7LyCAI9V7zGvrtksykMZ8xgP8LCvvu/kn9B66dRg4BLy3en+FltV3M5+xJFlW3wsMPZ5ZbbsYdc+WU21Iklp5DkKS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAWUZLP9M/qKS1nBoQ0R+nx/0NatfwftzQLSc5L8liSTwEPAM8m+Q9JHkjyP5OMN/1+Icl9zeRy/yvJ+X1vc2nzHIq9A88IuCHJjuaZCL+3yEOTjmNASLO3Drizqi5slh+oqouArwC/06zbAny4qn4Z+Djwqb7tz6I3QeA7gU8AJHkHsJbeHEOvB365mbBOWjJOtSHN3veq6v7m5+eAP21+/ixwd5KX0nso0ef7ZvH8O33bb62q54BHm2kkAN7RvHY1yy+lFxhLOWOpTnEGhDR7PzlBW9HbMz9YVa+foc9P+35O3783V9UfzL88aWF4iEmanxfRm8oZ4NeB/11VPwL+OsmvwvMns1830xs0tgMfaPY+SDLRPPtAWjLuQUjz8xPgNUl2Ak8B723W/wZwe5LfBk6n91jJB2d6k6r6UpJfBL7WHJb6MfA+jn1UpbSonM1VmockP66qly51HVIXPMQkSWrlHoQkqZV7EJKkVgaEJKmVASFJamVASJJaGRCSpFb/H72QskVsg2ZXAAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.scatter(rootpehe, rscore)\\n\",\n    \"plt.xlabel('rpehe')\\n\",\n    \"plt.ylabel('rscore')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA8MAAAOjCAYAAACfgdZsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydZ3hc1dGA31GX5d67ZRv3ijGmGttgjOkkdAjEoTiEkhBKML2FhCR81NBLHIfemwvGYOMO7r13uclNsorVz/fj3pW2a6t2Jc37PHq0e+fcc2fLnT1zzpwZMcagKIqiKIqiKIqiKPWJhFgroCiKoiiKoiiKoig1jTrDiqIoiqIoiqIoSr1DnWFFURRFURRFURSl3qHOsKIoiqIoiqIoilLvUGdYURRFURRFURRFqXeoM6woiqIoiqIoiqLUO9QZDhIR2S4io33IRopIVoj9ZoqIEZGk8DRUFEWJLCLymIi860fu0y4G0PcsEbkpdO0URVECR22OoijOqDNcC3FynPPtv+0iMsGtzekiMl9EckXksIjME5ETY6WzN8TiHyJyyP77p4iIn/Znich6ESkUkZki0sVJlioir4nIfvv1fiMiHbz0McJ+7/4ahJ6zRKTIfq8PisjnItIu+Ffs0a9fB8NuM05Eyu1rHxWR5SJygS0bKSIVTt8Dx98pTnrf5Nafy4SN22tz/H0TxGu4RkR2iEiBiHwpIs19tGstIh+IyB77OzlPRE5ya3OHiGyzX+diETndSz/NReSAiMwNVEel7lDdvSgiTUXkHRHZJyJ5IrJRRO6Lpc7e8GfLvLRtLiJf2PfYDhG5xke7R23bNtrp2L0istp+L7aJyL1B6Ohue1Y4bE84SIATv3abAvv6u0XkWRFJtGXbReSYm936t5PeHvZBnCZs3F6b81/7IF7DTPvzWy8BTASJSIrd1tn++rWLPmz8bwPRUanbuH038kRkg4j8zq3NxWKNGY7a9vIHEcmMkcpeEWvs9o6t4z4RuctP23Yi8rV9vxj31yIiV4g17i0UkVluspb2/XVIRHJEZIGInBaEns42Z5+ITBSRhsG+Xi/9TpRqxqNijRVL7Wvn2K/RMc7za8vEy0S1u430Z08DfA1/tt+TXPuzTPXT9g37u1ohIuPcZL8VkSX2dyFLLJ8gyUneR0R+tK+zWUR+FaiO1aHOcO2mqTGmIXAZ8LCInA0gIo2Bb4GXgOZAB+BxoDiSF3cMTMJgPHAJMAgYCFwA/N7HtVoCnwMPY72mxcBHTk3+BJxi99MeyMF6/c59JAMvAD+HoOvt9nt9HNAQeCaEPkJlgX3tpsDbwMdS5XTuMcY0dPtbEGT/t7udf2EgJ4lIP+B14DqgDVAIvOKjeUNgEXAC1uf3X2Cy48fEHgA+jfVdbmK/zi+8fMf+AawL5sUpdQ5/9+Jz9rE+WN+ji4Atkby4hBm9E4Atc+dloATrHrsWeNW+95z77I517+x1vxxwPdAMGAvcLiJXBaGus+15BfhQRJoGcX64DLKvfxZwDXCzk+xCN7t1e5B9L/BiO/cEeO4HwDKgBfAg8KmItKrmnHuBbLdjfu2ijbuN/2+AOio1TLi2wa0vEZHqxuh77PujMfBn4E0R6WWffxwwCbgbyxZ2xbqHK2pYx+p4DOgBdAFGAX8RkbE+2lYA04BLfcgPA89jjSXcyQduAFph2cN/AN8E+ZldaL/fg4HjgfuDODdcPrKv3QqYC3wuUrl4FI4tcxCSPRWRc4AJWDY6E+iG5W/4YgVwK7DUi6wBcCfQEjjJ7vMe+zpJwFdYvk1zLP/hXRHpGYie1aHOcBiISLo9q3NERNYCJ7rJt4s1M79SrBnut0WkjYhMFWsmb4aINAtXD2PMYmAN1g0K0NM+/oExptwYc8wYM90Ys9JJt5tFZJ2tx1oRGWIf7yPW6kuOiKwRkYuczpkoIq+KyBQRKQBGiUh7EflMrNW6bSLyxyBU/y3wf8aYLGPMbuD/gHE+2v4aWGOM+cQYU4RlQAeJSG9b3hX4zhiz35Z/CPRz6+NuYDqwPggdXTDG5ABfUvVeIyKnisgie7ZqkYic6iRrL9ZM5mF7Jutm+/hY4AHgSnsWbkUA164A3gHSsQxOrLkW+MYYM9sYk481uP+1iDRyb2iM2WqMedYYs9f+Tr4BpAC97CaZWJ/vEmOMwfoRbwm0dvQh1kxof+A/UX1V9RgRuU+sVTjHSsNZPtpdJ9Yq5SERedBN9piIfCIi79r9rBKRniJyv4hki8guERkTrq7e7kUsG/y+MeaIMabCGLPeGPOpk279ROR7+37cLyIP2MdTReR5sVYc9tiPU23ZSLFmqe8TkX3Af0QkQUQmiMgW+z1wnqCqjupsWSUikoE18HvYGJNvjJkLfI01AeXMv4H7sJxm5/fon8aYpcaYMmPMBqzBRMCrIU79VAD/AzKwBq6ISBMRmWTb/h0i8pBjYGy/Pw/Zx7Ptdk3s7mbb/3PEKZKlmuuvB+Zg3f8xxR58DQEetX9bPwNW4XuAjoh0BX4D/N35eAB2UQkBEelu3+OOcU17sVZGR/pof4M9HjoiIt+Ja9TZC7bNOirWqtVwJ9ljIvKpbeuOAuPs8dOTYq1C5onIdLEmwBznnCzWyl6OWNEWI51ks0TkKRGZhzW5HNDvvLGYguUMDrQPDwa2GWN+sOV5xpjPjDE77WslisgDtg3Ls19bJ1vmb0zjoaOI9HayqxtE5IpA9La5HnjSttnrgDfxMQ60x3evYE0geZPPMMZ8DHg4gsaYImPMBtuWCVCO5RQHared+9oHfIfrOPAiscbMOfZ71MdJ5nVcLSLjscZRf5EAo/KMMaVYk2ZtsSbjYs1vgbeNMWuMMUeAJ/E9jscY87Ix5gegyIvsVWPMHGNMie0TvEfV71VvrIWu52xb+SMwD8/fwpBQZzg8HgW623/nYH0p3LkUOBvLQb0QmIrlBLXEev+DcR69IiInYw0SNtuHNgLlIvJfETlX3BxuEbkcawB2PdaM4kXAIbFWTr/BchhbA3cA74k902hzDfAU0AiYb7dfgbX6fBZwp1gzRYgVqp3jR/V+9rkOVuDpwHpta4wpwFrxcbR/GzjN/tFrgGVgpjq95i5Ys4JP+NGnWkSkBdZgdrP9vDkwGXgRyzA9izWz7zBSHwBZWDfxZcDfROQsY8w04G/Ys33GmEEBXDsJuAlrhnNTOK8jUGzj7RGubOP+mWzBGoxXO1MnIoOxBn2O7+xUIFFEThJrNfgGYDmwz26fiLVCdjtgQnktin/s+/x24ERjTCMsm7bdS7u+wKtYP0Ltsb73Hd2aXYjlPDXDWkH7DsvedcC6B1+PgL4u96LNQuApEfmdiPRwa98ImIG1stAea2X5B1v8IHAy1uBmEDAMeMjp9LZYg6YuWDPSf8SKahlh93UE6/vpuNZK8RHOTPW2zJmeQLkxZqPTMRc7advzEnsw7BMREWA41sRpUNj33++AUmCHffglrBWnbljvw/V2G7AGQ+OwVnq6Ya2AOsLuzrD/NzUBRrLY37nhWN+lqCMir4iIryiXfsBWY0ye0zF/v11gvVcPAMeque5gXO0iQGuxJm62ichzYk2QKH6wf4vuwxq/NMCaQJ1ojJnl3lZELsH6bH6Nteo2B+t328EiLLvQHHgf+ERE0pzkFwOfYkVPvGcfuwbrXmiN9Xk6Vrc6YI0X/mr3dw/wmbhGFVyHZWMaUXWv+UWsyaeLsMaVju/OUqC3/Z0ZJZ4hvXcBVwPnYY0DbwAKAxjTuOt4APjefm9a232+Inb0ilhbqVbiBXts2p7Ax4FhY+tShDWp+JYxxj1aI5A+OgLnUjUO7In1nbkT6zs0BWvVOcXfuNqe/HoP+KcJMCpPrEnacUCWMeZgsLoHi4h0tseBnX008TaOb+P2fQmVM6j6vfK2hVKI1ASpMUb/gvjDGhyOth9vBcY6ycZjfUGd217r9Pwz4FWn53cAX9qPM7EG+UkB6OBom4P142qwQgXFqU0fYCKWI1aGdeO3sWXfAX/y0u9wLOcjwenYB8Bj9uOJwCQn2UnATrc+7gf+E+B7WQ70dnrew34t4qXt28DTbsfmAePsx41tXY39epcBzZ3afgVc6fQ6/hrEZz4LawY01+5/OdDZll0H/OLWfgGWsepkv8ZGTrK/Y/0ogzUh8W411x5nv54c4CDWYN/x/RuJFTaU4/aX4aa3sywf1++otzZPBvi+/ADc4nZsNzCymvMaY62k3O90TLAGJKX26z2I5ZQ55H/Gvnfs92RuJO9r/TNgOYfZwGgg2U1W+V0FHgE+dJJlYE2CjHZq+72T/EL7e5doP29k30dNnb6DNwWoo8970Zan29+jJfZ3aTNwri27Gljmo98twHlOz88BttuPR9qvL81Jvg44y+l5O/t6gdhvv7bM7fhwYJ/bsZuBWfbjhlgTY13t59sdn4OXvh7HGqikBvhej6PK9pRi/dZcYcsSsbbd9HVq/3snvX4AbnWS9XK8PwT4W2e3OYo10bAFy4FIcHqd+bjarZu96O38V0HVd9Rbmy0Bvi/XAQvdjj2Fbde9tP8VMM3pu5Tlo503u9gW6Is1kdQVa1X99Ujc7/XhD2vcswpY6fy9x8nmYE3E3ugkS8CyMV189HkEK3wfLFs3200+C3jI6fmtTp//fcD/3Np/B/zW6dwnAnxtI6n6/S/GGmvc6dbmZOBjLIe1CGvs09CWbQAu9tKvzzGNNx2BK4E5bu1fx4qcqO41dMK6z51t69nYttfPeUn2eZk+5Ddh2yIf8jSs34PfBvFd2o5lc/Lsa/9A1W/Yw8DHbt+h3fZnFMi42u941P6eldifdTbwI3CCLRuHH1uGd1tZiNMYykebmwN8X7bg6gcl+/tsnNrNxctvnpP8d1j+S0unfrcCf7Efj7Hfk+8C/Qz9/enKcHi0B3Y5Pfc2i7ff6fExL8/D2YDf0j7/HqybLtkhMMasM8aMM8Z0xJo5aY+1lwIsA+RtH117YJexwkgc7MBazXHg/Hq7AO3tWaMcexX4Aay9bYGQjzUAcNAYyDf2N7+ato72jtn5V7EMXAuswfnn2CvDInIhlkPqb19edfzRGNMEKwSpGVUrYe3x/Nwd71l74LBxXUFwfz8rEZHhUpW8wHn1ZqExpqkxpqUx5mRjzAwn2R5b5vxX4KZ3pQxrX7a31+Z8/sPVvBcOqvtMvL3GdKxZ0oXGGOeQwZuwZqb7Yc2k/wb41l7pb4+1Evege39K5DDGbMaa2X4MyBaRD8V7QiEXu2d/3w65tXG3cweNMeVOzyF02+frXsRYYat/M8acgGULPsZayWmOb7sHnvfxDvuYgwPGCml20AVrT7vD7q3DGowGYvuCuW+qa/s41uB6m78LisjtWCu35xtjgskdsdC2G82wHAtHiGhLrPvU/T1z2DZv72cSPt4fO3TQYfuGO4mGGGOaGWO6G2MecvttusTNbr3prreb7dvp7bU5/XWv7s2wCfjzs1dx/4k18e0TX3bRGLPPGLPWWCH/27AGgpcFqKdihdz2B17y873vArzgdC8fxpqc7QAgIneLFUKda8ubYH3/HezCk31OjwupsnVdgMvdxkynY02m+evPF3vs73ZjrJXcM52FxpiFxpgrjDGtsO7dM6j6HfU3DvQ1pvGmYxfgJLfXdC3WRE515Nv/3ceBPscQkcBYIdMfABNEZFAQp15irKipkVhhu47vgct7ZtupXVSNA6sbV1ciItc62cKpTqKPbTvV2hhzpjFmiZOsOlt2iZstvNXHa/NlT/3hbRwPYXyGdrTG01gT2QehMjz8EuB8rPvrbqzf95Aq+LijznB47MUyKA58hRFEDWPFzv8f1qyfty84xtpvNZGqcIJdWKHd7uwBOolrQoTOWDNcld05Pd6FtSfF+QZqZIw5L0D112CFJDoYhO8QPpe29iCju1P7QVgz84ftH72XgGFi7dU5CxgqVra7fVgzmXeKyFcB6lmJMWYV1grFy3bY4R6sHwNnHO/ZHqC5uO6hdX4/XZx+Y+2VcCQviFqYUARx/0y6AalYYfoe2OE9X2K9fvdEaYOw9h9vtAd+07Dur1OxQlbbAWvtz+8FrM92n4SfxE1xwhjzvjHmdKzvtMFKMuKOi92zwxBrfO+Sl3vRXX4UaytCBtaqmi+7B573cWdc9525T9DtwvqhdrZ9acba51Qd1dkyZzYCSW4h38528izgj062rRNWgr3KDNoicgN2ghNjTEgDB2PlBLgVuE5EjseK3CjF8z1zvH5v72cZ1iSJx2SnMaafk+2bE4qONcgarH2Sznbd129XD6yV8Dn25/M50M7+vDKhWrvojsF7uKDihh0W/DxWJMZj4ntP/y7g9273croxZr49MXMfcAXQzHYkcnH9DLxN3vtiF9bklfO1MowxzgmfgunPOsEa89wHDLAdCW9tFmF9/wIZB/oa03jTcRfwk9tramiM+UMAeh/B+j0JdBwYaZIJIf+KMeYnrDG1I3mjy3tm/x51omoc6G9c7T4OfM/JFp4brG4xwNs4fr8xxn2CPCDEyqfzJlZCr1XOMmPMSmPMCGNMC2PMOVif3S8h6u2COsPh8TFwv4g0s/cQ+J39jTJPY23CTxMrmcHdtk6IlRThaqwQW4C3gHtE5ASxOE6sPbU/AwV2P8liJXa4ECsZlTd+AY6KlVgmXayEDP0l8BJOk4C7RKSDvQJ1N5aB8cYXQH8RuVSs/TqPACttRx+sfT3Xi5XUJRlr4LbHnlV6GGvv3WD772usm+139vuTKV7S9Pvhv1h7Py7C2hvS094XkyQiV2KFtX1rjNmFta/67/bnMhC4kap9RfuBTAk/G2OseA+40F7RzsDaC/q5cV0JByozeX+KtSp4vdssKVif3/ki0s3+Tjr22a/GWuHPpOrzewQrDH6w02qjEiYi0ktEzrQH50VYn5W39/dT4AKxcgKkYH3usfoOO9+LiMjDInKiWHu10rCyzOdghQR+C7QVkTvFSpjVSKrK2HwAPCQirewJtEcAf2XPXsPam9zFvm4rEbk4QJ2rs2WVGGvV/XPgCRHJEKsUyMVY+7HBcob7U3Vv7MFyqF629boWa0LgbGPMVvf+xUrq8lggStuDm7eAR+z77mOs96CR/T7cRdV79gHwZxHpajsljvwIZVghmxXERxLAoDHW/u3lwKO2Xf8VVpTCZ16ar8YaFA+2/27CsvuDgV3V2UWxkrd1tm1iJ6zf+aAncespLwBLjDE3Ye2Bfc1Hu9ewxnGOPa5NxNqHD9aWDsd3NklEHsEzKiAY3sX6zTzHHi+l2Z+xe86FoDHGlGAlIX0EKnO23Cwire3nvbHspPM48EkR6WF/vwaKtc/T55jGx6W/tdtfZ48bk20b3MdHe3cmYdneZraON+N7HIhtMx2le1LFaf+24z3FikJJsN/fZFt2suM3yx6v3ocVqfKzLR8pIsFMRDwPnC3WPv+PscYvZ9nXuxsrdH0+1Y+r91NLbaHNJOBGEekr1h7wh/D/+Tl+mwVItj8jR+LFM7HGlZcaYzycXPs7miYiDUTkHqxFEp/XCobaOgiPFx7HCnfYhrU5/n/+mweOWDVzfRlvb0zG2styM1Z4wknAz2JlfV6I9aN8N4Ax5hOsPU7v222/xNpfW4JlLM/Fmvl/BesH2mv2ZXtAdCF21kL7nLewwogqw3796Pw6VmjYKlu/yTgl1hErdO5a+1oHsJKRPWW/zpMA5xIh92AN4Ddh/XCdh7VXC2NlUdzn+MMaeBQYYw7b53bC+hwDWdVx/Oi8iJXh9RBW6PHdWKGifwEuMFWJDa7GcuT2YA2CHzXGfG/LPrH/HxIRb2nmA6G9eNaX85nV1Af/dju/MvxGPMMWKzHGrAFuwTJe2VgDh1udznX+Dp+K9T6NoSqLrHPfk7B+HGZh7RN8EWu2fr0xptjt88sFSu3HSuRIxRpsH8QKQ2qNte3BBftzvw3LfuzFuh8jEqoUgM1w16XyXnQcwkqWcxDrnjsbKzQ4356kORvLZu3DshWj7PP+ilXiaCWWPVpqH/PFC1iTatNFJA/LxjrXh620XV509mvLxMrw6hwedyvWXuhsLCfzD/ZngDHmkNu9UQ4csVdyHa+rBbDI6Z5z/l3phLVfOVCeB84Ta2LvDqxB3las/V/vY2W7x/7/P6w9rtuwbPMdts6F9mufJ1ZY5clBXN+Zb9zs1hdBnn+KF9t5IgT0+3sVMBTr83sauMz+XF2+w8bK4u38+RwGKuzn5VRvF4dg7dcswBpYryYCSTfrOmJNTI3F+n0Ca6JmiLd70hjzBVYEzIdiZYRejTUGAms/71SsCI0dWN/jYMKY3a+1C2sy6wGsccourJJbXsfiYlUe8bDBfngH6CzW1rAcrPHcKvv7OA1rDPJPu+2zWE7cdKzf3LeB9ADGNO6vKQ/r+3sVls3dh/V+OrLxXyuu277ceRQrXHsH8BPwLzsyzPEeuI9BjlEVXr0e16R019nPX8UKCz+GtfCBrc/L9mvajTVGPN9UlSDqhHWvBYR9v0/CGgduwNra9RLWb8+FWCubJQGMq98G+tq28MtAr++GT1sWBF7tqViTcfniI4GW/Vn9E5iJ9RnuwPpMsc93/w5Px/pcTgXesB87kio+jOU/THHSw/m38DqsMUc21kTw2Sa4bT8+EeN1e6ai1B9E5CGsPYFhZ7hVFEWpDYi1GvWJMaba0kaKoih1GRF5C8sefhdrXZSaR51hRVEURVEURVEUpd6hYdKKoiiKoiiKoihKvUOdYUVRFEVRFEVRFKXeoc6woiiKoiiKoiiKUu9QZ1hRFEVRFEVRFEWpdyTFWoGapGXLliYzMzPWaiiKEmcsWbLkoDGmVaz1iBRq6xRF8YbaOkVR6gPB2Lp65QxnZmayePHiWKuhKEqcISI7Yq1DJFFbpyiKN9TWKYpSHwjG1mmYtKIoiqIoiqIoilLvUGdYURRFURRFURRFqXeoM6woiqIoiqIoiqLUO+rVnmFvlJaWkpWVRVFRUaxVqZOkpaXRsWNHkpOTY62KotRr1NZFF7V1ihIfqK2LLmrrlLpGvXeGs7KyaNSoEZmZmYhIrNWpUxhjOHToEFlZWXTt2jXW6ihKvUZtXfRQW6co8YPauuihtk6pi9T7MOmioiJatGihBjMKiAgtWrTQ2VlFiQPU1kUPtXWKEj+orYseauuUuki9d4YBNZhRRN9bRYkf9H6MHvreKkr8oPdj9ND3VqlrqDMcBzRs2NDr8XHjxvHpp58G3M/27dvp379/pNRSFEWJOiNHjvRaJ3TixIncfvvtQfWVmZnJwYMHI6WaoihKRNDxmaLEL+oMK4qiKIqiKEqcY4yhoqIirD7KysoipI2i1A3i0hkWkXdEJFtEVvuQjxSRXBFZbv89UtM6RgNjDLfffjt9+/bl/PPPJzs7u1KWmZnJAw88wCmnnMLQoUNZunQp55xzDt27d+e1116LodaKEj9kTpjMHR8si7Uaig8KCgo4//zzGTRoEP379+ejjz5ykf/nP/+hZ8+ejBgxgnnz5lUeHzduHH/4wx8YNWoU3bp146effuKGG26gT58+jBs3roZfhaKER05hCZkTJjNpwfZYq6JEgUWLFjFw4ECKioooKCigX79+5OfnV8rLy8u59957OfHEExk4cCCvv/46APn5+Zx11lkMGTKEAQMG8NVXXwHWqnKfPn249dZbGTJkCHPmzKFPnz7cfPPN9OvXjzFjxnDs2DEAtmzZwtixYznhhBMYPnw469evBywbetdddzFq1Cjuu+++Gn5HFCUwMidM5vb3l9b4dePSGQYmAmOraTPHGDPY/nuiBnSKOl988QUbNmxg1apVvPnmm8yfP99F3qlTJxYsWMDw4cMrQ6gXLlzII4/UibkARYkI36zYE2sVFB9MmzaN9u3bs2LFClavXs3YsVVmfu/evTz66KPMmzeP77//nrVr17qce+TIEX788Ueee+45LrzwQv785z+zZs0aVq1axfLly2v4lShK6OzJsZIPvf/zzoDar91zlIVbD0VTJSWCnHjiiVx00UU89NBD/OUvf+E3v/mNy3a4t99+myZNmrBo0SIWLVrEm2++ybZt20hLS+OLL75g6dKlzJw5k7vvvhtjDAAbNmzg+uuvZ9myZXTp0oVNmzZx2223sWbNGpo2bcpnn30GwPjx43nppZdYsmQJzzzzDLfeemvldTdu3MiMGTP4v//7v5p9QxQlCL5dubfGrxmXpZWMMbNFJLOmr/v4N2tYu+doRPvs274xj17YL6C2s2fP5uqrryYxMZH27dtz5plnusgvuugiAAYMGEB+fj6NGjWiUaNGpKWlkZOTE1G9FUWpu8TK1g0YMIB77rmH++67jwsuuIDhw4dXyn7++WdGjhxJq1atALjyyivZuHFjpfzCCy9ERBgwYABt2rRhwIABAPTr14/t27czePDgiL4eRYkXzntxDgDbnz4/xprUPmJl6x555BFOPPFE0tLSePHFF9m1a1elbPr06axcubIyJ0xubi6bNm2iY8eOPPDAA8yePZuEhAR2797N/v37AejSpQsnn3xyZR9du3attHknnHAC27dvJz8/n/nz53P55ZdXtisuLq58fPnll5OYmBj261eUukZcOsMBcoqIrAD2APcYY9bEWqFI4C9LX2pqKgAJCQmVjx3PdQ+IoijxTs+ePVmyZAlTpkzh/vvvZ8yYMS5ytX+KotQFDh8+TH5+PqWlpR5liIwxvPTSS5xzzjkuxydOnMiBAwdYsmQJycnJZGZmVp6bkZHh0tbZBiYmJnLs2DEqKipo2rSpz0gZ9z4URbGorc7wUqCLMSZfRM4DvgR6eGsoIuOB8QCdO3f222mgK7jR4owzzuD111/n+uuvJzs7m5kzZ3LNNdfEVCdFqS3kHiuNtQq1hljZuj179tC8efPKsMGJEydWyk466ST+9Kc/cejQIRo3bswnn3zCoEGDYqKnooTC3E0HWbU7lz+M7B5rVRSbWNm68ePH8+STT7Jt2zbuu+8+7rnnnkrZOeecw6uvvsqZZ55JcnIyGzdupEOHDuTm5tK6dWuSk5OZOXMmO3bsCOqajRs3pmvXrnzyySdcfvnlGGNYuXKl2lElYN6cvZURvVrRs02jWKtSo8TrnmG/GGOOGmPy7cdTgGQRaemj7RvGmKHGmKGO8Lt45Ve/+hU9evRgwIAB/OEPf2DEiBGxVklRagXfrtzDoMenVz6ftnpfDLVRfLFq1SqGDRvG4MGDeeqpp3jooYcqZe3ateOxxx7jlFNOYfTo0QwZMiSGmipK8Pzm7Z/5x7T1sVZDiTGTJk0iKSmJa665hgkTJrBo0SJ+/PHHSvlNN91E3759GTJkCP379+f3v/89ZWVlXHvttSxevJihQ4fy3nvv0bt376Cv/d577/H2228zaNAg+vXrV5mES6kf3DhxETf917NUYaA8NWUdF740N4Ia1Q7EsTk/3rD3DH9rjPEozCYibYH9xhgjIsOAT7FWiv2+mKFDhxr3epbr1q2jT58+kVNc8UDfYyXa3P/5Kj74pSoZzVUnduLpSwcGfL6ILDHGDI2GbrFAbV1s0Pe4fpM5YTJQ/d7eNXtyOf/FufRu24hpd54RsX4DQW2dEgn0PY5PwrUVkbQ1sb5+MLYuLsOkReQDYCTQUkSygEeBZABjzGvAZcAfRKQMOAZcVZ0jrChKXcb19s8r1j2kiqIoiqLUXopKy5m76SCj+7aJtSp1mrgMkzbGXG2MaWeMSTbGdDTGvG2Mec12hDHG/NsY088YM8gYc7IxZn51fSqKUjfILy6jvML/3Ne8zQdrSBtFUZTgEHwnilMUJbKUlFXw6qwtlJRVxFqVoPnblHXcNGkxS3ceiWi/U1bt5aEvV0W0z9pMXDrDiqIo3iguK6f/o99x18fLyZwwme/W6N5gRVHqFp8tyeKN2VtirYai1An+M28b/5i2nv/O3x5rVYJmx6FCIPIJQm99bynvLnStcx6pANv/LdzBla8viEhfNUVchkkrilL3mLRgOwfzS7jr7J4h91Fsz+x+tXwPAG/N2cqEz1ZypFAzSSuKEr/M3XSQ37z9M1P/NLzatnd/sgKA8WdoVmpFCZd8e9tUYUl5jDWpOyzYcoicwhLOHdDOQ/bwl6tjoFF46Mqwoig1wiNfreHFHzYF3H77wQLemrPVbxtBvDrCGoSoKEo84YhiWbT9cIw1UZT6hWPB01cZ+6wjhdwwcRGFJdHPNTJj7X525xwL+rzC4nJenrm52i1i0WbHoQKMMVz95kL+8N7SmOoSSdQZVhQlLrnqjYX8dfI6jhZVObvuUTy/6MBSUZRahDFg0HyfilJTOO43hy+87WABP6zbXyn/x7QN/Lg+m+/X7vdydmS5adJizn1+tlfZxv15HMwv5sf1+zlcUOIi+7/pG/jXdxv4bGlWxHWat/kg+3KLqm23encuI/41i7fnbou4DrFGneEYc+jQIQYPHszgwYNp27YtHTp0qHxeUlJSfQdhsH79egYPHszxxx/Pli1bePHFF+nTpw/XXntt0H09//zzFBYWRkFLpS5ztKiUr1fs8SorsEObDuYVVx57YUZgK8viawo4zhCRd0QkW0S8xhWJyEgRyRWR5fbfIzWtY6RQW6cortQWO6UEh9q6+MIxiZ6QYN1vo56ZxY0B1uLNnDCZR75aTWFJmcvEvDPLd+VQYa/YrsrKZdP+PL99Hi3yvgI95rnZnPjUDG6YuJgbJi5ykTlCvf/y6UoO5hd7Oz1gJi3Y7vL82rd+5rwX53gsNriz/VABQMSTeVXH1gP5TFm1N6rX0D3DMaZFixYsX74cgMcee4yGDRtyzz33VMrLyspISorOx/Tll19y8cUX8/jjjwPwyiuvMHXqVLp27Rp0X88//zy/+c1vaNCgQaTVVOowf/lkJdPW7KN320b0bNPIReYoj3TF6wtY9OBoSssN78yrczOSE4F/A5P8tJljjLmgZtSJHmrrFMUVrQhZN1FbF1+Ee5dNWrCDb1bs4UhhqUf92/lbDnLNmz/z4Hl9uPmMblz477lA6HVyHSbB4XhWHnd6vDeniJYNU/32czC/uLJNUWk5acmJAJz+jx/JOuIZpu2+Eu2PH9ZlexxbsuMI7Zqk0b5pesD9BMqZ//cTEN3ax+oMxyHjxo2jefPmLFu2jCFDhtCoUSMXY9q/f3++/fZbMjMzeffdd3nxxRcpKSnhpJNO4pVXXiExMdGlvyVLlnDXXXeRn59Py5YtmThxIsuWLeP5558nMTGR2bNn06tXL7Zu3cpFF13EDTfcwPjx47njjjtYtWoVZWVlPPbYY1x88cWUl5dz33338d133yEi3HzzzRhj2LNnD6NGjaJly5bMnDkzFm+bUku4/LX5PHphP/p3aMKeXMsouye2cN67czC/hNP/MTOkfTbxjjFmtohkxlqPWKG2TqkvOC8C1+XSSiLyDnABkG2M6e9Ffi1wn/00H/iDMWaFLdsO5AHlQJkxZmiNKF0DqK2LHdXtGQ4EX0k6HY7lhmpWg91Zt/cofdo19ikPd55s6F9n8O0dp7P9UAG3v7+MqX8aTp92jb06woHi0KnYS4mqS1+dT2KCsOVv51Xbz/JdOSQnCv3aNwlZl0ijznCcsnHjRmbMmEFiYiKPPfaY1zbr1q3jo48+Yt68eSQnJ3Prrbfy3nvvcf3111e2KS0t5Y477uCrr76iVatWfPTRRzz44IO888473HLLLS7GeNq0acycOZOWLVvywAMPcOaZZ/LOO++Qk5PDsGHDGD16NJMmTWLbtm0sW7aMpKQkDh8+TPPmzXn22Wcrz1UUdyavrApxWbT9CE98u5aPf38KK7NyXdpt2p/Hou1HONutwHxddISD4BQRWQHsAe4xxqyJtUKRRG2dogTPur1HOVJYwqnd4+57OBH/0S7bgBHGmCMici7wBnCSk3yUMaZOFopXWxcbqvYM19wklDHG7zaIc1+YE/JK508bsxnQsXpHcnN2Pn+dvA6ANXv8O9+RINDkXpe8PA+I7kpvsKgz7MbIkZ7HrrgCbr0VCgvhPC+THuPGWX8HD8Jll7nKZs0KTY/LL7/cYybQnR9++IElS5Zw4oknAnDs2DFat27t0mbDhg2sXr2as88+G4Dy8nLatfNMhe7O9OnT+frrr3nmmWcAKCoqYufOncyYMYNbbrmlMsSnefPmQb82pW5TVFpOcmICiQlVPwS3ve+WddCHzTz7OSuxhLszHCx1aN1lKdDFGJMvIucBXwI9vDUUkfHAeIDOnTtX27HaOgu1dUqk2XW4kE7NvYeWBhMavWj7YU7M9P69O/eFOUB8DSih+mgXY8x8p6cLgY7R1kltnUW9tXURWBn2xpYD+Xy62HtCqyOFpTTPSPF7/ubsPNKSE+nYzNNW+LMTz0zfyO1neh0GeODYXxzIS/d1xQ9/2UlGapJXeUlZhctYLxx+3nooIv2EgjrDcUpGRkbl46SkJCoqqsISioqsrG/GGH7729/y97//3Wc/xhj69evHggXBFcA2xvDZZ5/Rq1cvj+Oa9EPxR++Hp3H+gHa8fO2QgM8xxjB/S51cDAgLY8xRp8dTROQVEWnpbeXEGPMG1ioLQ4cOrTWbEdXWKXWN4f+c6ddJDTSb9OWvLYg7ZzfC3AhMdXpugOkiYoDXbZtWZ1BbFxscd1t1r/BPHy7n4sEd/Lb5eNEurjixE2BNSJV4CRkGKwFo84wUPlq0k9OOa+nV4R39rDX5H6173NnOBPvxFpeVk5pkTdxM+HwVAC9cNdijXc+HpjKkc9NQVXThyjcWRqSfUNBs0m7MmuX5d+utlqxBA+/yceMsecuWnrJIkJmZydKl1sra0qVL2bbNSiJ01lln8emnn5KdbW1mP3z4MDt27HA5t1evXhw4cKDSaJaWlrJmTfVRlueccw4vvfRS5ezUsmXLABgzZgyvvfYaZWVlldcEaNSoEXl5we2ZUOouk0PI/LfjUFXWynB/l+vK77qItBV7lCIiw7BsdkSmT9XWWaitU0LllVmbyZww2ad82uq9flc76rIDUh0iMgrLGb7P6fBpxpghwLnAbSJyho9zx4vIYhFZfODAgWqvpbbOor7aOsfr9XW7OR8++9mf+PuUdT77+stnK/lq+W6MMS6O8P6jRS624Omp6yksKeO+z1Zx9ZuWk3fL/5aE/BqOueVVCZZgTU2vh6YBrivU3vYKAyzdmROqWnGDOsO1gEsvvZTDhw8zePBgXn31VXr27AlA3759+etf/8qYMWMYOHAgZ599Nnv3ujohKSkpfPrpp9x3330MGjSIwYMHM3/+fG+XceHhhx+mtLSUgQMH0r9/fx5++GEAbrrpJjp37szAgQMZNGgQ77//PgDjx4/n3HPPZdSoURF+9Uptx1EiyRn3lZFas4wZYUTkA2AB0EtEskTkRhG5RURusZtcBqy29wy/CFxl6nAKWrV1Sm3in9M2+JXf8u7SytUOb2PROnwr+0VEBgJvARcbYypnC4wxe+z/2cAXwDBv5xtj3jDGDDXGDG3VqlVNqBxx1NbVHI6trIHsGd6Unc/rs7f6bfOnD5ezYIvrJNem/fkuz48UllRe93C+lal52pp9AWpcxU8brcmefC/jqEiwePthv/Ipq6p0/sunK8O+3uZs18mV0vIK/jNvG6Xlro72yzM3s2SHf90iiYZJxxG+Eiqkp6czffp0r7Irr7ySK6+80m+/gwcPZvZszyLf7tfbvn27yzVff/11j3OSkpJ49tlnefbZZ12O33HHHdxxxx1+9VDqNs9+v5EXf/CsA3ziUzO8tq9wSrbw61fm09cpuUN9WS8xxlxdjfzfWMlo6hRq65T6TF3OJl0dItIZ+By4zhiz0el4BpBgjMmzH48BnoiRmhFDbV3s2HmokMOFJdVmkw5lSspXreDKPp06DaX/QM7JKyrlslcX8OyVg6rNzPznj1bw549WeBy/7LWqUHtvk3N7Ipy89Itlu12eT1qwgye/Xct3bhMF//rOmmh86erjI3p9X+jKsKIoEeGN2Vu8HncvmwRWRunx/3Mter92b+X22AisFNffwaaiKEqsCCDa5RGgBfCKiCwXEccPQRtgrh0F8wsw2RgzrcZfgFJnOONfM7nk5XmVkWiLtx9hndM4ozo27As8RNwz2s2ENQrJKyrjH9PW+23z89bDbNifx7PTN3qVhxt4snp3bsD5DUIlr8gqWbVwq/dV4Ds+WBbV6zvQlWFFUULisa/X0LFZOjcN7wYEv9oxw0vhdgffr90flm71eCueoihxTLBDy2iFR0aLAKJdbgJu8nJ8KzAoWnop9ReHUzhtzT6vocrfrNjj9bxznvdceXfqNaBrhsOrs7wvMNQUF7w0l/vP7R3UOUeLvNdjduD+vjiyXccaXRlWFCUkJs7fXlnDDiLrgO7LLQrr/H7to1tPT1GU+GPpziN8u9L7wDZUjDHkHvM/wNt6IN+v3KPPIFziJ76pU2XFFaVGcA67DSWhZ7j8vC3w/a7DnpoRcI1eB5kTJvPjBmtBobTC8Pep6zzs1Jo9ga+C+yJYn37gY95D/33x7sKdQV4hOqgzTP1NYlET6Htbf3D3hVdm5YTeV5iOdc82jcLroI6i92P00Pc29vz6lfnc/n74YXUlZRUM/+eP/LBuP6/P3sqgx6ez81AhZeXes6mWBTCQnbRwh8exQLJJHz1Wu1aG4wW9H6NHvL+38zYf5PdOmZsP5EVj9bH6e/f9ny1Hz1f5JQfZecXVhkR744NfrP5nbzzA6z9t5emprn28PXdbUP15+1TD+ag/XrSLzAmTXaJbXonxarcv6r0znJaWxqFDh+L+5q6NGGM4dOgQaWlpsVZFqQHcB3YX/Xsem/bHpiyDRkl7orYueqitq1vsP1rErsPHePTrNZUrTGf8ayaXvlp9xl5vvPjDpspBpfPtt/1gQbiqKl5QWxc9aoOtO1RQEmsVACupKAQ2WfZGNRmsAyHSUTHgmsslWF6388g88uXqSKkTNer9nuGOHTuSlZVFILXqlOBJS0ujY8eOsVZDiSLbDhbQtWWGVwc01B+lnEL/YYnVot6wB2rroovaurrPiqxcr8er87kcg2J3jpVayQVLyytYs+cogzs19WhTVBZefdH6iNq66KK2DgIJIHbc3zVFXjUZrqvj86VZHsd87acOqt9lu3n2ysFh9xNN6r0znJycTNeuXWOthqLUGr5ducclFHHUM7N44arBXh3QUCfmJ87fHtqJNvW5dIkv1NYpdZHyCkNJWQXpKYmxViVg3O3TM99t4PXZW5n6p+H0aeea72DWBnXogkVtnRIIBcVl7PZROmhztv88AEt35gR1rcwJk4NqHwvu+2xVRPsLdh90LKn3YdKKogTHKzM993z86cPlceV+ajZpRakfPPD5Kvo8Ep0KPFlHPAfK7nvgfBHM4NeR6OaeTzzrgDrz0JeratUAU1FiQaDh8X/8YBl7fSTrHP3sT37PdQ9rjkVEfrzvAth+qDDWKgSMOsOKogRFgg+rEUgymJoifjRRFCWafLR4V0T723mokO2HqvbylnpJmhVuQh73bNIO01ld9td3F+5k+a4jYV1bUeoy/5m3zSWTtD9W7va+7SEUsqOSpEupKep9mLSiKMHhKwTZmy8c7YLtvogjv1xRlFrEGf+aWW0bY4zPzNLRR42bonijosLw+DdrY62GUgtRZ1hRlKDw5WjG0xBN9wwrSt1n6c7or5J6syUfLtrlEiZZk5N+2UeL6Png1Bq7nqLUFm7/YGnQ52jG8dixJcj67NFEnWFFUQLiSEEJ5zw/myOF3jNEewuT/tuUddFWyyvXn9olJtdVFCVwcgpLSE5MICM1tKHI/RFI+PL50iySExO4cFB7r/JVXkIpv1i2O+zrOuNsOzdWU47uD+8FP+BXlPrAlFWBhUcr8cFZ/+d/X3ZNonuGFaUe8dmSLO76eLnH8fd/3sl9n670ed7RolKOf/J7svOKKS33PpN62EsZpdW7Q69RFw6tG8VvDURFiQc2Z+fx9NT1MV0ZGfzE94wIICw5mtz18Qru+GBZ9Q2dcJ/2yzp8jJnrswM6t7p3e8xzs4PSRVEUJd4Z/MR0joRZ/3nHoejVZVdnWFHqEXd/soLPl3quajzwxSq/iWgCHegpilI7uObNn3ntpy0cyPef+KWwpIxLXp7Hur3Rmdg6mB/aAGlVVi7lTo68s1O/Zk/kEuMEwk2TFvO7iYsCamuM4VCIr1lRFKU2klNYyswN4Y0jvWX3jxTqDCuKUi3xlClaURTvbNyfR+6x0oDaOkr0VLe/ftH2IyzflROzLQ/eWLT9MBf+e67PWqDnvziX1RHMFBtJXvtpC9e/80vl84LiMvKLAvvMFEWJHOFmhVeCY/bG+K2Zrs6woiheWb07l+KycgAS1BdWlLhnzHOzufL1BUGdE8o81+GCEkrKQsumPH7SYh76Mry9vrsDWCHY56N+aCQIZ27QfSX8hL9+z9KdOeEppChKSPyoUW81xpfL98RaBZ+oM6woigc/bTzABS/N5eEvVwOanVlRagvr9/lPwOQgnJ3CQ578nj8Guc/WwfS1+3l34c4wru6dYLc+F5eVk50XmsOcEMFImaLSWJVoUhRl0oIdsVZBCZDZm6K3sqzOsKIoHvzWDuNbsSuXt+Zs5esVkc2eqihKfBCqWzdtTXxlbv3JbaBUnW9823vLGPbUD9FTSFEURYkYr/+0tfpGIaLOsKIolew8VOjyPOdYCX+dvI7v1uyPkUaKosSSeKzD6W1h9uUfN7s835t7jCtfX0BuYSmXvDyPzAmTXeQz1oVu0/ZGMQRbURRFqVnUGVaUOkzusVL+M29bwAPa0c+51n3L1gQTilInqQknt7zC8MO6/RG/ViDdPfLVGn7edpivV+5h+a6ciF5fURRFqTuoM6wodZgHv1jF49+s5ZdthwNqH2pSHEVR4pvCkjLemrOVigpXT7K6TPHhZJJ/Z+42bvzvYqaurj6kesWuHKYF0M4X8bd+rSiKotQG1BlWlFrKnpxjZE6YzKos3yVEcgqtkh0l5b6d3IVbD/mUxWGEpKIoIfD3Kev56+R1TF9rOZyOW/uCF+cE1Y8/e+FMaXkFT9nlmLKPVh9WfPHL87jl3SUux4wxZE6YzJuzq98r5mv1WVP/KYqiKP5QZ1hRaimOAubv/xJeNsSr3ljo8tx95UhRlNrPUbuWrXv24j3V7H91dzLd7YUvvlxWlXRvy4ECD3mpnwk6Bw5T9NSUdZz7whx+XG/t89Wy54qiKEqkUGdYUWopjnJH3hZEVmXl8tXyqsHoj+uzuWHiosrnF/97LgXFZV77ve39pZFVVFGUWk+w4dJlTpNq/1voOWG3aHtgWzccrNt7lL98ujKoc0AdZ0WpD6ze7TtCTlGqIynWCiiKEhoJ9iDPmzN84b/nAnD6cS0B+M+87S7yFVm59Hv0O64e1snj3ED29ymKUruJ9haISGRc9uXHetPd18sJpkZ6vo8JQkVR4psFWwLbvqEo3tCVYUWppThWPCr8jGpzjpX47eODX3ZFUiVFUWoJgWR4XrT9MOP+syig9sYYrn1rITPXZ3O0qJQXf9hUjQIBq+qEZfRyCv3btVCoqDBc+NLciPcbbabHWb1nRYkFGgGihIM6w4pSS6kMk/bT5mBe5AeNiqLA2Odn88EvO2OtRlT5dsWeattMnLeNzAmTOXqsjHmbD3HLu0vIL/K+wvrez+HlN/A34A13pXvamn1sO+i5tzne8RaCHktE5B0RyRaR1T7kIiIvishmEVkpIkOcZGNFZIMtm1BzWiuKUp9RZ1hRait+wqQVRYku6/flcf/nq2KtRkTIzqs+pNnXnuGXZ20BrJrm/li75ygPfuHVPwqaYPYv+2rqfrywpDwMjRQnJgJj/cjPBXrYf+OBVwFEJBF42Zb3Ba4Wkb5R1VRRFAV1hhWl1rB05xHe/7lqJcoxlisqKydzwmT+O397TPRSFKV28djXazjqtHo77Kkfon7NnzYeCLsPh80LNyRy/9Eij53EGmUZGYwxswF/2dEuBiYZi4VAUxFpBwwDNhtjthpjSoAP7baKEhCmXKgoTaCiNKFykcD5mPNfuPLKa5Z5yqItN2VVcq+6R1teXpW8tSbl0UQTaClKLeHXr8wH4JqTOgOQIK77516euZnfnpoZE90URak9TAxw4sx9BfbjxdXnGCguqyA7rzgUtSoxxvCPaRu4dEgHr/JpXpL8+U6g5cqKXTlc/PK8sPRTwqID4PxFyrKPeTt+Ug3qpdRijh5JZNcLYzClllvT/vc/ktz0GEcXdSPnp94e7Tve8T2JDUrImdeTowuO85B3vnsqJFVwZGYf8pZ0dRUmVNDl3qkAHJren4JVrolIE1JL6XTndAAOfjuYwg3tXOSJjY7R8dYfAcj+/ASKtrV2kSe3yKP9TbMB2P/hSRTvbu4iT2l3hHbXW+PBff87jdIDjV3kaV0O0OaqXwDY+/YIynIbuMjTe+yj9a+tmu67Xz2TimOpLvKMflm0vGAFALteGAPliS7yhsdvp8WYNVAh7Hr2XNxpfNJmmo3cQEVxElkvnOMhbzp8A01O3Ux5Xhq7Xz3LQ97srDU0Hrqd0oMN2fvOCOs9aZ1L+99FL6eDOsOKUktxXx0xwENfruLCge19tqkP/P6MbrFWIWBE5B3gAiDbGNPfi1yAF4DzgEJgnDFGa18pNY4xJuDSRpeE6WzuO1rEaz9tcSkP58x8b5ljfewXKXc6/sO6/Uxfs99ru5+3aTbaGsLbr5Lxc9yzA5HxWCHWdO7cOXKaKbWWo4cTMaVJZPTLIrlVHolp1raNtE6HaDpynUd7SbYiY9K7HiAh1csWjwTrq5d+3H4SG/neRpLRay/JLfJd+06sqqGe0W83Ke1yXLtOqYrKaThwF2ldXG1PQlqVPg2P30F6D1eblZhRNdnYeOg2yo+luMiTGh+rkp+8hYpiV1cvuVlVboQmp212WQkGSG5Z9XqanbEBY1xvzZTWR60HYry+t6n2601IqvAqT+toBY4kpJZ5P7/DEcB6nQ55YoPo5r9RZ1hRaimV2aRtu2sMvLtwJ+8urAqljkR5k9pGalKt2v0xEfg3MMmH3Hl/3UlY++t0tUSJC/KLywLOWWDc/Bp/pzn6dLdf/ib3Knx06LxP+cb/LvZ5/seLs/xopESQLMB5Ka0jsAdI8XHcA2PMG8AbAEOHDtWsGUolDXrsp0GvqsiR1A45pHbI8dk+rdNh0jr5jupPzzxEeqbvibL07gdI7+57C0iDHt4n3xxk9PafDb5hP/9JDBsO9G+3Gg32n+Sx8Qnb/cuHbfMpkwRoctJW3/KkCr/yhNQyv/LEBqV+5ZGkVo0aFUWp4qUfNwOwYKvDUOuYAODXQzrGWoWACWN/naKERKAZnTdn5zFl1d7K596SVvV/9Dsnefi6VYe/msGrdudGXwElEnwNXG9nlT4ZyDXG7AUWAT1EpKuIpABX2W0VpVrSGxjSu+8nISO8LRpK/URXhhWllrL1gGsZEF8rI/WJhfefRdsmabFWI5L42l+313vz+sM3K/bw+dIs/vO7YbFWpVYw+dmu7M3KdPEu0jodptmo9QCMHQtHjlTJlu8qI71bZ5qebtUL/u7p3uTk93Dps0GvfbQ8azemAi46O5W9e091kWf020PjE7ZTUZzIYze2JfdYi0rZ+KkNyWvfiUaDdrF/P+ydZJ170kwoLU9l755TaTx0Gxl991Kak87Br4/nYGICJ30Fe3dZbZucspkGPbIpOdCQQ1MHerzmpmdsID3zEMV7m3D4+34e8mZnriOt4xGKdjbnyCzPfYUtzllNSpujHNvSipx5PTzkLS9YQXLzAgrWt+XoL57bM1pdspSkxkXkr+5A3tIuHvLWly8iMb2UvOWdyV/pOYnX9pqFSFIFR3/pSsF6tzkwgXbXzWfOpoMe58USEfkAGAm0FJEs4FEgGcAY8xowBWvbx2asrR+/s2VlInI78B2QCLxjjFlT4y9AqZW07lBG68sC28ahKO7EpTOs++iU+k7mhMncM6Ynt5/pOQArLa+oTJ7lTEU9qbH03JWD+PNHVnKHSwa358vlVWFEdcwRBt1H55M7PlgWaxXiltW7c/n9/5bwnytPZ/2qFIYPh9QG5SSkuZYPEqe9a02buq7uJhwoRZKr2qdklJNQ5rq3TpLKK89p0gwSjnjKrQeQZwpJcLo9GzU1ZNv9JyRU7ZNr3hyKywwJh0uRJGsPiIglT0pKoHlzSzeo2psnCcZln13l9RNNNXJ7j4kPOQm2PLHCu1zs/pOqk5d7v3418sp2KZ7yeM0HYYy5uhq5AW7zIZuC5SwriqLUGHHpDKP76BSFZ6ZvrHSGdx0urDze48Gp9GzT0KN9ffCFn7ykP43TkiufP3/V8S7OcB3E1/46D3QfXXxy7VsLWbDlEFv/fn5E+tt/tIiT/vYDH44/mZO7tfDa5t8/bmZ3zjE+nJrPo7c1Z8ECw+hbdvKVn3vlww9dn2dOWOTyfNQdm5jttTxSKpIAkz4q5ox/LfIih4SUctpc4Sr7v5tO4tq3LH1ataJSPvXp89mbW8Ipf69qn9TkGG2uWES7JmlMvf8sD92SWxR49O9MSpujfuVpHY+Q5kde3b7BBsdl0+C4bJ/yjN77/O4NbNh/Nw37e08WBta+v+r2/ilKfWb3tmSyXj6LFmNX+t3DqyjeiEtn2BgzW0Qy/TSp3EcHLBSRpiLSzt53oih+qaiA5cuhxC05XefO0L49HDsGK1Z4nte1K7RpAwUFsGqVp/y446BlSzh6FNau9ZT37Gmtehw5Ahs2eMr79IEmTeDgQSje3RSAjyYX0KVFBr96eRnJrRJJSCmnvCCFVUuTgKYu55d3thzmsvxUynPTPfpPaZuLJBrKjqZRnue5gprSLhdJMJTlplOen+opb5+DCJTmpFNR4CYXQ2p7a89e6eEGVLhlNySxgtS2VgbC0kMZVBQlu56eVEFKG0tecrAhxi37oSSXk9I6j+tO7sKUnwor35+FC6F5QTv2FeaR0srKgLh3L7SrO7tqvwZuF5EPsSb8ctXO1S7mbY5sluJftllbzP+3cIdPZ9iBlXW5OdPW7MM08Nu0WrZk53s9HolJuFP/Hlid4zhdDFUUJcZUlAnl+WmYck2FpARPXDrDAaD76JSQ+eILuOwyz+P/+hfccw9kZcEpp3jKX30VbrnFcmS9yd99F669FpYtg5EjPeVffQUXXQTz5sGFF3rKf/wRRo2CGTNg37unAXDVuw7pabS9fi6p7XIp3NSGw9957o9rdOtcaFRC4dr2HJnZ10Pe4dYZJDUqJn9lJ3Ln9fSQd7rzOyS1jLwlmRxd5Ln/rfNfJgNw9Ofu5C933f8myWV0vstKppMzryeFa13rgyZkFNHpdmvAe2RWH45tbuMi797dUHaZFR13+Pv+FO90HeSntMnlpme3APDI3Q3Yt8R6f055F2AIqZ0O0faahQB88AHcdZeH+nFJqPvrFCUQlu20NgEfzC8moRpn+JVZmykqreCusz1tA8DunGNejzsIJ2x3j1PW6Pd/3kl6ig5oFUUJBp0qU0KntjrDuo9OCZlLL4VNm2DzZtfjvXpZ/9u3h6lTPc/ra/uX3bt7lw+0/dMBA7zLhwyx/g8b5v/8M84wtL7cM2QvubmVMCu92wFaX/6Lh7woNZ8EIL3nPpc6cQ4S0609Zxn9dpPaPsdD7tgf2HDQTtIyfSdlaTRku2e5AKm6/ZqctIWG/dxC/pzq7jU5bSONjnfNaPvWrScybpr1uNmIdfznmtMpKSvn5klWYXhJKePOswYA8OKL1uq7M797f33l41/9yqfqcUc4++uU2smqrFwapSWR2TIjvI4MHC4ooXlGiofI4ZiaIAaI/5xmhatcdWIn7v3US2hMDfHAF17Cbmy8ZbRWFEVRlHCorc6w7qNTwuK446w/b2RkWJlVfdGkiX958+b+5a1b+5evOLSP9G6+97wkNS4iqbHv+sHJTY+R3NT3Kk5ys0KSmxX6lrcoILlFgU95Sqt8aOU9ZBIgpXUetM7zKXeESzszcqTw9XGncdG/55HaPtd+fxL549yq96FHm0YAnHqqx+mkzsqpfNy1q89LK0rMufDfcwHY/nR4e4gnr9rL5FV7+fHuEXRr5ZpDwD10ubyiIuA6ipe+Oj+k+uT1IWeBoijxSXFZefWNFMUHtTUWyVedOkWpltmz4cYbXcuIxIJ5mw8y+Inp5BeXuRz/w3v1MzH6wI5NY62CotQ6dhz2PbGV2v4Iba5ZQON2RQGHMQfrCB/MD62uZyjOc3Wh2oqi1E8aN4EGfXaT2Cj4iTxFiUtn2N5HtwDoJSJZInKjiNwiIrfYTaYAW7H20b0J3BojVZVayIYN8M47UOh7DFkjPDN9AzmFpWzY53sVtb6RnpwY0nmZLcLMDqQocYYxhvd/3kleke+SO75wOL6J6aWkdTpManqF/xMiwINf+g5vjiTuk4eKoijtOpbT6qLlpLbLjbUqSi0kLsOkdR+dUh/QsEJPfn7wLErKgh+4f37raez0s0KmKLWNRduP8MAXq3jgi1XMvncUnUOY8Ck7mkbRruYU9E2ElOCd6mCYs8l3ngFv6PZfRVEiRefmOiGuhE5crgwrSjSJpRNqjHGpGezg86VZrMrSGc3Gacm0bOhZ1qk6mmekMLhT08grpChRJveYdyf1WGnVHrjpa33XqPWeOtKiJLsxh749ntwDyb4bxQidDIwMt47sHmsVFCXm7Nqcws7nzqFwc+tYq6LUQtQZVuotsViZ+HRJFsP/OZN5m11XUe76eEVlYh3Fky1/Oy/WKihKxPl25R4GPT6dlVk50blAHXQ4f94a2brNtZ2mDeJvokNRaprycjAlSWA05EQJHnWGlXpHSoqVEToWzvBXy62k59e+9TMVujQSMIkJ+gOnxA/ZR6uStMxcnx1yP3Pt0OI1ezwzrAeMl1ujoMQzs2q8mZvfvP1zSOe99/POCGtSu7liaKfqGylKXSfO7JtSu1BnWKl3jBsHOTnQrl3NX9s58+pKDYtWlFrJM9M3VD7+3UTPmuA1ybPTN3LGP2e6HDtc4LAzdW8SadVutZvONG3gWWdaUeovgXnFVwztGGU9lEhz3oC2UetbnWFFCYLdOcfYnB1a9ueC4jLWe8kc7bxCXVoe/ayvsWaQ7u1VFJ6eup4DeaGVJXJm1e5cj+Rx4uYE16VkVZF4zxRFqd/EU8KttGR1xQIhNSm0aiOBoJ+AUu+YMQOuvDK0OsOnPf0jo5+d7VVWWl7B36asI6ewhD05xzz2Bc/eeMDreb9+ZX7l40e/XhO8UrWMIZ2bxloFRYk5r/20hR9CCLEOJhowrdMh2v52Ds07aO1NRVHqLo2bVdBw0E6SmtS+WuT/uHRgrFWoFTx0fp+o9R2XpZUUJZps2QIffwzPPx9+X8t35XDJy/P45JZT2JNzjDdmb+VIQQnTVu8jr7iMH+8ewXMzNrE/t4gz+1Sf5fD9erAfLiGIZarbRx2H0c1ASpQorzAUlJTROC22SYiitZ83Ia2M1LZH+WjZUS4a1D46F1EURYkxbTtU0GJsVa3zgR2b+N2KdlK3FjWhVkB0b9Uw1irUClqEUGkkUHRlWFHCYO4ma7V31oZsyiusEW1ZhSGvuAyAuz9ZwTcr9vDL9sM8PXV9zPSMJ5pnBL7H7Z5zenHvOb2jqI1Sn3nwi1UMfGw6ZbVoe0IwEc+lOenkLetMeaFmHFYUpX4w9U/Dq51gPDGzec0oYzOmb5uI93n+gKrEN/eM6Rnx/usT6gwr9Q5vRtIYU+nMRpJgVkHrK4M6Nom1Cko95fOluwEoj3GqZXcz8ebsrfz2nV8qn4eqXml2Yw5PH0B5flqd2jesKIrizLqVSez4x/kUbm5N15YZAUWU+atSsf3p87l91HER0W10nzY8dH5fn/JQbPNdZ/fkuSsHVz7/w8jjuOrE0DPLf//nM0I+ty6gzrBSb3E2QA99uZruD0wJua/yCqsPpXqc3/cGKYl8dfvpsVNGUeKQp6asc3n+wg+bgjpfHV9FUeoz7kkEvbeJHs6JQo/v3NSrTW7dKJUHzwttH+wtI7qTklTlwiUmCOcO8F8iZclDo5nyx+G8eu0QfntKFxdZjzaNSE+OXoKqeEedYaXekZEBHTtCgtO3P9zalRv2HaXQS21PxZN+7atWguOt9qmixCP59raLQKm8r4x6xYqi1H2OFJZUPhaBl68ZUvl82p3Da1yfm07vWm2bl64+npvP6EYnO7P1r4/vUCnz5jwHk0DqnH6eYdktGqbSt31jzh3QjvvOrdp+dt9Y3YoWsjMsIpcHckxR4o3rroNdu6B19fmsADhcUMIut9IlDnKPlXoc+2LZ7srH+49qFldnju/clBE9W8VajaBRe6dEk2AmhUKdP9KJJ8WB2jOlrvGiU/SMIHRu0YBz+7flqhM70aV5RrXnv3fTSR7Hgk3e+fszulU+HhjA9i+xPd7Gaclsf/p8fjWkyhk+MbM5zTNS6NOuceWxC6tJguhcLur164bSKM13juSUxCr37w8ju1era10nnJXh+wM8pii1jke+Ws33a/cDcMrff2D4P2e6yEvLK/h8aRZvztkG+B6gZh2pfWn+I0VLL5n/OjRNj4EmEUHtXR0mWEcxkBC8SHO0qJRtBwsCaqth0ko1qD1T6hSl5VVG3GH/Xv3NCTx96UAPezjnL6Nc2gGcdlxLjz6vGBrkHlyn/rq0yOD3I7r5bkv1dnrpw2cz9U+uq9pJfvY5d23p6vT76170R8KFoJ1hETlXRF4COojIi05/E4HgYrkUJQZ8+y2cdx7k5PhuM2nBDm6etBiA4jLPTLNvztnKXR+viJKG8ctdZweesbBlw6qs0Y6i8rVtcUrtXR0nxPGAvxWDsvKKqCTjO/OZnxj1zKygzknreoD2N88kuXlgTrRSt5k6dSpAJ9SeKXWMxIxiGp24laQmhX7N+gUD21WGJTsmNdc9MdZr2y4tql9R/qdTjeDfnOS6D9fbpKm/fbnOiwXeXkMgCVk/+8Mp/O/GYdW2qw7n0On7z637YdShrAzvARYDRcASp7+vgXMip5qiRIedO2HqVCgp8ZRlTpgcUB85ha7h0bM2HIiEanFPw9TAS5M7t/3nZYNcZM87ZUGMc9Te1WWiMDtz3INTGfPcTx7HKyoMRaWh5xU4mF8MBOe/J6SUk9y8EEmqPaWjlOjRvn17gELUnil1jKTGRTQ/cx0prfL9tvu3017icAJ8RvRsxfNXDuYKpwzOnZo34LEL+/Kbkztb3Xvpv3lGCid0aea1z25O9Ya9nduqUfV1dk/o0pzhPVrZffh+gQ7Jyd28l5hq4bSYMbJXgHsKI4zzgkq0CXxka2OMWQGsEJEvgAJjTDmAiCQC0auIrCg1hK/9wc5sPaArLdXx8rVDOOlvP7gccxjgiwa15/kZG7lrTK+aVywI1N65sv1gATsOF9bKfd/+iHTE2BYv9mH0sz+x1UeYswi8M3cbXVtmcHoPz3A9Z/KKvC/g7c7x3JJReiiDws1taDggKwCtlbrOoEGDAA4BZxIleyYiY4EXgETgLWPM027ye4Fr7adJQB+glTHmsIhsB/KAcqDMGDM0EjopdR9TAaYsEUmq8HACq7Pvodj//97gffV13GnVJ86qvG7wl6VZRgoH8orD/s1KSBCm/mm4yz5jR59j+rbh0iEd+cunK8O7SC0inD3D0wHnDYDpwIzw1FGU6FPd/kD3/cHemLFuf4S0qV30btcooHYjeraiTeM0PrnlFD695RQPeUKCMOveUVxUTUKIOELtHTDymVku9W/rK6HsGfblCINlk574di2/m7iIr5bv8dvPA1+s8nr8tKd/dNLPouRAI3Jm9aG8IKXWbVFQokpU7JntVL8MnAv0Ba4WEZcCq8aYfxljBhtjBmPtU/7JGHPYqckoW66OsBIwJfuasOu5sRRta+lhnR32OhQH8t0bT+L8ge0Y2asVJ2Z6X9H1xZVDO9EkPdllnCMCJoAkFb5+Yz675VT+/usBJCeGXwyoT7vGZHiJ9nvuysF+azBHgzWP+w9MSYnA6/VHOL2nGWMq4xHsxw38tFeUuCJYw/jx4l3RUSTOcM5e6M6p3Vsy975Rlc///usBNM/wHcpyYmZzhmY2D8j4xzlq72oBJWUVvDxzc9DhyNH4ehpjmLMp+O0T5RUa0qxEnWjZs2HAZmPMVmNMCfAhcLGf9lcDH0TguopSifvYzvHcfc9tIEPA03u05OVrhjDxd8P45JZTvbYZf0Y3l73DDjJbZrDi0TF0at6AZvY46aoTO1VOTHobg94zxsrLkpToXbvOLRpw9bDOAWgeOWoi11ZGahLHtW7ocqxxWnL0L2wTdJi0EwUiMsQYsxRARE4A6m/qXKXW0KwZ9O4NiUHWF68vISPdWmWwbu9Rn/KOzawxU6tGqVw9rDNj+rYhO6+Yc1+YA1glBSb4SLhQizMYqr2rBbz38w7+9d0GKioMd5zVo/oTAvg6FhSXccFLc/m/KwYxpLO1MhBIyY2vlu/hka9WV3+BGqIOTEgpkSNa9qwD4DxrnAV41qyxrtkAGAvc7nTYANNFxACvG2PeiIBOSr2gypi7jzMcps/XYme4pvGB86qv/9swNYktfzuPBIFDBSUs25lDiwzPnQl/GHkcOYWl3HyG/0zUNcHXt5/G0h1HQgrnnjfhTFZl5bB0Zw5vzN4a0Dn/u3EYP289zJ0fLQesCMKaIhxn+E7gExFxxHS1A64MWyNFiTLXXGP9BcLyXTlR1aU28fSvB1Q+nnTDMHq1tUKmWzRMpYVTGaWvbz/d49x+7a3V5tF9YpOIIQLcidq7uKewxFoRLqxmZXja6r0es9C+WJGVw7aDBfxz2no+HO8Z8u+LnMKSSn2CIRJlm1Zk5VoPTFVf6gorTtxJdOyZty+vr6/ehcA8txDp04wxe0SkNfC9iKw3xsz2uIjIeGA8QOfONbtKptQ+HCG/17itqDp8Zsfk5oy7RnC0qJTebQPbDhaqHg+c14fLT+hEZkvPbNWJCcJDF/T1OB4Koa49OG7YgR2bMrBjUzbtzwvq/DtH96BD03Q6NE1n6c4cr23O6t2aH9ZnA/Dm9daOiHZN0rnk+A6VznBNErIzbIxZJCK9gV5YBnC9Maa0mtMUpVZx3Vs/x1qFuOEqpx+SM4JMoHRc60asf3IsaX7KCsQzau/qFre8uxSAlKTQdgoF6rCWRaHEUkgITF65N9ZaKHFCFO1ZFlbpJgcdsTLye+Mq3EKkjTF77P/ZdtLCYYCHM2yvGL8BMHTo0Di5yZR4JTFBWP/kWI99p+52PNAJ0nBJTkygb3vf29HiDXen+pLB7Rnbvy0rsnJ5ddYWAJITpbLW8/ggV7V9ZY12iWaK8iJxyHuG7RCX+4A/GWNWAZkickHENFOUEJi1IZsbJi6iwscgdE/OMSa9X8bw4ZCbW31/ecVaevHakzrzwc0nh91PbXWEQe1dnaWOD6PTj9tPx9tmkNxMs98rVUTRni0CeohIVxFJwXJ4v/Zy/SbACOArp2MZItLI8RgYA8TPPgMlrklsWEST0zaS5MPWpSUn1mjYbTzxz8sGMuWPwwNuX9279PxVxzO2fzuXWsS+ajVHimh/cuGESf8Hqz6dI24sC/gE+DZcpRQlVMb9ZxEARWXlNEjx/Hqf+vSPlK7sxp65fSiz/dzf/29xTaoY97Rq6LqPZdypmfRoE52woVqE2rsIUF5hKK8wIa/IVkfuseoXt5xnm0vKA0hWVdMOcwR/9ROSKyC5OHIdKnWFqNgzY0yZiNwOfIdVWukdY8waEbnFlr9mN/0VMN0Y4+y5tAG+sPd7JgHvG2OmhaOPUn9IalxE09M3cfPwwEsbOQhmz/D1p3Rh0oIdQV8jHB67sC/HtQ59DDa6Txu/iU7dCeUnLymMbM+B5JKJ9qp9OCOS7saYfwKlAMaYY0TfeVeUgPAXxnis1HUA/N2a+lkmyRcTzu3tNTNidfx6SAf6d6g9oT9BovYuAtz030X0fGiqx/GFWw/x08bgMy+Dq3PrSNThb3DzxbLdIV3HHwfzi/njB8soLKmKJKnctxsALuWSIuh8lxxoRM6cnpQXBj4QUuoFUbNnxpgpxpiexpjuxpin7GOvOTnCGGMmGmOucjtvqzFmkP3Xz3GuogSCKRfK8lNJSwjc1lXtGQ6cJy7uz/anzw9OuTAZd1rXauvPeyNyA5Sqnj5xK5X51K/6M7KX721zvx7SwevxJy7pH/DV7z2nF5N81HWOFOE4wyUiko79PRKR7oBOQSvxTx0PjQyXtORErjixU/UN3Xj2isF8e0fgoTi1DLV3EWDmBu8O71VvLKyx+sXb/NT79UoAI4rnvt/I1yv28NnSKkc7VKd715HCkM7zRumBhuTO70HFsZorUaHUCtSeKXWKkn1N2P3yaLauDLxCWFc7gVVdj54Ot5KAY9KgW8sMTsxs7iK79qQuTPydq6PqvDe7d1vvCyQdmqYzsGMTv9fNbGF9PhcNau+SpDUahBMm/SgwDegkIu8BpwHjIqGUooSLc+mTng9O5ZqTOvPYRf1c2ogQdD1Spd6i9q6+4jSOKC2voKw8urNpL/24OYK91fFRnhIqas+UukkQJu+/Nwxj+c4cr1vq6gLBlrL01bqFHWJ9/sB2fs/PSEmkoKQ86JBp9+tedkJHPl2SxXNXDebnrYfp1DwSJdD9E/TKsIicZj+cDfway4B+AAw1xsyKmGaKEiFKyiuYOH975fPEjGJOPNGqM7xg66HYKRaH9KtFGQ5rgpqwdyIyVkQ2iMhmEZngRT5SRHJFZLn990gkrhtJikrLOeOfM5m3+WCNX9vbpPdrP20Jqn0gCMJv3vqZPo9MY9shTUil1D7mzZvneKjjN6VOEoxT07JhKqP7tomaLrHmd6dmApCRGp6z37RBCisfG8OfR/f0227xQ2ez9olzPI5/NP5knr9yMEsfPtvlePsm6QCkp7gmV33m8kFsf/p8Gqclc3YNfT6hhEm/aP9fYIw5ZIyZbIz51hhT86MgRamGwwUlHscy+uzll1+gSRNdNwmEUGvV1RGiau9EJBF4GTgX6AtcLSLeigzOMcYMtv+eiMS1I8nWAwXsPFzIk9+uDah9uGFbkebCl+Yyu5o9ywbDz9uskqi/bDvst62ixCN//OMfHQ91/KbUSRKik5uxVnLHWT3Y/vT5AVfycCSpSvQy6GucllxtNu70lESvq+wndWvBJcd38Eji9a/LB/LS1cfTMw4StIYyXVAqIv8BOorIi+5CY8wfvZyjKDEhr8h7dtnMCZMBmPi7E2tSnVpFzzYN2bg/v86GEAVItO3dMGCzMWYrgIh8CFwMBOZV1lJW7c5lYMemsVajkk3Z+dz32UoW3H9WSOevtJNl7T5yLJJqRY76PaGl2CQnJwNkAhU6flPqEqce15LPgT5t/e9DVXwz8XfDWLU712OlNpIsvP8sjtrj8kZpyVw4qH3UrhUMoYxyLwBGA2dipeZXlLjDsfDkLat0wdr25P7cjbbXLAx6T0V94qvbTmfV7lzaN02PtSqxJNr2rgOwy+l5FnCSl3aniMgKYA9wjzFmTRR0qTEiuTAcbFeh3vL+MtSv2m05w/7Cs2NBg9576XTcfiRZcyMo8O2339KqVatcrLGfjt+UOsPpg9P5ceQ6Tjq+e6xVqbU0y0jhjJ6+M0NHgrZN0mjbJC2q1wiFUJzhe40x94lIZ2PMfyOukaJEiHOem+11v0F5YQql2U0wBrYHm1m2FrDm8XPo9+h3XmXNGiRzpNB3LVZnRyE9JZFhXZv7bFtPiLa98+Zhuft3S4Euxph8ETkP+BLo4dGRyHhgPEDnzp0jrGZgrN+Xx+GCkqBqGtY0cRahHVUkwSAp6ggrFv/6178AjgAf6/hNqUs0a1lOk5O2kplZv5zh34/oRs8wahArFqFE158nIsnAVdW2VJQYsmF/Hv+e6SUzq9Ng+Kkp62pOoThg2SNjYq1CbSPa9i4LcK5j1RFr9bcSY8xRY0y+/XgKkCwiHkUHjTFvGGOGGmOGtmoV3dldf/wtgHsq3gMyyisM93++is3Z+ZXHamOyveJ9jTn8Qx+tM6wAMGXKFLAm4HT8ptQpiouF0sMZFNS99Q2/3H9uHy49oWOs1aj1hOIMTwMOAgNF5KjTX56IHI2wfooSEntzizyO/eXTFS7PBSgpq6ghjWqOQBe+vr79NI9jT/96YGSVqf1E294tAnqISFcRScEapH7t3EBE2oodzy8iw7Dsdlx5Zs7ObUUNL70aY8gpLOGZ7zZErM9N2Xl88MtObntvacT6jAWlhxqRt7gbFcX1et+/YjN27FiAQej4Talj7NiQwp43R/LLwjifaVXikqCdYWPMvcaYJsBkY0xjp79Gxhity6LEBaOf/cnj2MeLs2KgSWwZ5Keo+cCOTVn80Gje/u1QAAZ3akr/Dpp8wplo2ztjTBlwO/AdsA4rfHGNiNwiIrfYzS4DVtt7hl8ErjLxlo45xjz29RrvUSDAzZMW8/3a/TWsUZyg35JaS6Mwy6F4ww6TXo6O35Q6hsPU+cvtoCi+CKXOcG8AY8zFIpLqJjs5Uoopijsb9uXx08YDLN15hIP5xSH3k9i4iLQuByGh7o8Uv7j1NE7p1sKnvGXD1Mr9nXX/3QiemrB3xpgpxpiexpjuxpin7GOvGWNesx//2xjTzxgzyBhzsjFmfiSuG02yjhQGXD5pfgRqEx8r9b0v9vu1+7l50uJq+9ibW8TG/Xlh66IokeCN64dGvM/169cDOn5T6h6myhtWlKAJJUz6fafHC9xkr4Shi6L45ZznZ/Pbd37h16/M55KX54XcT0avfbS56mcS6mhiGedScAkJwhvXn8B1J3dh9r2jvLZ3ZNTWxUavqL0LkpVZuZz+j5m8+/NOn22cZ++veevngPotLivnnk9WsP+o5xaISLHQy77gkvK6t5VCiX9O7tacN647IaJ9XnPNNc5P1Z4pdQhr/BLv+SiU+CQUZ1h8PPb2XFGiQpZTPc8FWw6ROWEyu3PitMZnDfLab4Z41AVulJbMk5f0p3OLBl7P6de+MecPaMe/LhtUEyrWNtTeBcnWA1bSqcXbD4fVT0WF4bs1+yonaWaszebTJVk8/o1rValgpnCKSstZ5Ecvbx/oP6ZFbi9ybDAgOtFVm0lNCmWo5onbhKfaM6Xuod9iJQRCsbDGx2NvzxUlbIpKy1m313tuj6LSch78YhUAv2wLLKdQ/sqO7H59JBXF0SssHg792ge3dat326q0+mP7twv6esmJCbx87RB6tdX0/F5QexckVZEG4fUzcf52fv+/JXyxbDen/+NHbns//GRWD36xmp+3+XHSvSwrbNhXe/MKNey/my73TSG5qU4U1maG92jF0ofPDrsfcf1+qz1T6gwt25XR/JxV9O6lX2MleELJ0NBRRF7Emn9xPMZ+3iFimimKzYTPVvLl8j0exzftz+PW95ay1a4VXFAcWNhzRVEyZTkZxOsUYrCrACN6tWL9Pt3rGCXU3gWJ467yNyT5cvlu+rVvTEKC6z2YOWEyACseHcM+Oxz6QF6xSyQIwObs0L7va31MqjlwtwgbdA+xEkH+PLonz83Y6FX27R2nc8FLcyufuzmuLrW7B3VqyopdOUFfPysrC6CTiLyE2jOlDtGkRTmNBu+kY6c+sVZFqYWE4gzf6/TYPStJ9VlKFCVIlvv40T/7udkuz7ceqBsF5pITg3OG7zyrJ6//tDVK2tR76p29Kywpo7CknJYNU6tvHCJvz91GZssMrju5i1f5K7OqMkPvP+qaLM8YGP3sbJfnineKsppRsKojTUesJ7FBaazVqXUkJQhlFZH7gv1hZHefznBQmfxD/NL/61//Yty4cYVYtqte2DOlfnCs0KqrfvQoNGwVa22U2kbQzrAx5r/RUESp3xzML6ZhahJpyZ6hy96OeSOvKNjBXnyOogNxhlMSEyoT+6SnJLL4odFsOxj4ZMBpx/nOMK1UUR/t3YUvzWXLgQK2P31+wOc4L2IFelcdzAssI/w787a5PD9SWBLgFUKnrjjYZUcyyF/ZmSanbgbUGQ6WSNfMjnVyn9/+9reMGzfuUH20a0rdZuemVPb9dzhLryyn/bmx1kapbUS+kJ2ihMDQv85gWNfmfPz7Uzxkga6UfrKkbtQRTkyofsSUnpJIybGqLLctG6YGvJK39W/nxXxQpsQvW8KMsKgMkw7Dkdh6oICuLTO8yhZudd3ze6igGG+Ld0eLSrnu7V+Cuq7eF4ozHZqls+tw7PZb+7qD6shcjaJEjMrKSmrDlRBQZ1iJKaXlFZTaK5y/bDvMgbxiWjWKXngmQFLTQtJ77IvbOsMpAewZDsfgu+/TVJRIEuh309/d9/3a/QT6NT3l7z96Pf7jumyXfZVlAZRIcpR8qjMDqvg0cbWG3m0bx8QZdo/KqDPfR0WJMnqrKKEQcr5+ETktkGOK4o8rXl9A30e+q3x+7gtzmLUhm4oI7tNyp0HP/bT+9RISkuOzfmg3HytizvzprB4ANEr1Pp+18P6zmHHXGRHVqz6j9i4KVLNyHK4JMG6eYN9HvvOZld6BOh1KJAgkuicYIh22r/ZMqXPoxJ8SBuEUr3spwGOK4sFXy3czeeVelu3McTl+ML+Ycf9ZxMT522OiV7xz+nEtXf43Tk/22q5tkzSOa62lkiJInbZ3xhh+/7/FXOiUzbasvCKkSSnH6mq8jU1KAloZtqgre4ZJNEhKab2vM3z32T15/KJ+sVYjaKI4N1On7ZlS/3BMfuqEphIKQYdJi8gpwKlAKxG5y0nUGIjPwq1KjZJXVEpqUqLfcN8/fbjcbx/ztxzkhtO7Rlgzi7ylXciZ14MOv59JQkpg5ZhqkhtO78rrsz2zQ/dr35j/3TgMY2BPrtYNrQnqi73buD+f79bsdzl23INTOW9AW1659gSP9keLShGgUVoyuw4X8sDnq2pI0+jyyZIsducc47wBwdfrjkca9ttNw367Y61GzLlpeDfSUxJJShQe/GJ12P1lpCRSUGL9dnRtmRFw8sJgx+k+9wyHOLexYMECgDYAddmeKfWP1h1LaXnhMvr0HRhrVZRaSCgrwylAQyxHupHT31HgssipptQ2isvKWZWVy4DHpvO7icElrnFnxrps9uUWRUgzVypKE6kojO6+5GBxrPQCtGmc5rVNn3aNERESEoR0O8N23/aNa0S/eky9sHe+suZOWbXP6/GBj01nwGPTAbjr4+UsdYvwAKpdGo7HtcolO47w0o+bmbba++tWaje+krIFS4LT8tOXt57G9D9XvyXlksHtQ75epFa7SkpKwBr31Wl7ptQ/GjUrJ6PvHtrVjXlMpYYJpbTST8BPIjLRGLMjCjoBICJjgRewZivfMsY87SYfCXwFOOpufG6MeSJa+ijV8/CXq/l4sZXRed7mQz7bPf7NmoD6O1xQQtsmafUi7OXsvm2Yu/mg3zaJTm9Ei4apfPaHU+jTTp3haFJT9q5OEeD9uje3iHfmbqu+YYis35sX8rkv/LApgprEjqIdLchb3pnmZ6/WOsMQ9AyMr6+yczdNGiTTpIH37SoOHAmxqkvi1jA1ifziMp/y8we0Y/KqvR774QNlxIgRAHuBS9WeKXWJwvwEinY258gRaKt1hpUgCSebdKqIvAFkOvdjjDkzXKVEJBF4GTgbyAIWicjXxpi1bk3nGGMuCPd6SmRYsSs3oHb/mbc9qH5XZgXWb13HfVLghC7NY6NI/SRq9i4eiOge2QD7+jTKpdC8bTWob5TmNKBwfXuajVpHfa4z7LCdwXzNe7RuyOMX92P62v0esurKhl06pEPlxHAwfPfnM9iSne9TfsuI7kxetTfofr0QzfFbyAsZ1Z2rKL7I2pzC/g9OYeUNFbQdHWttlNpGOM7wJ8BrwFtApDdeDgM2G2O2AojIh8DFgLszrNRxAimHUtd56lf9efCL1Uh9WCKPX6Jp7+oWlY5HPAZCK/WZYCZ9/u+KQbRrku5V1iQ9uXLPsDvbnz6fJTsOh+QMd2iaToem3q8J0LtdI87t35Y/je7B2OfnBN2/E1GxZ+EsZARxrqJ44Li3dZSkhEI42aTLjDGvGmN+McYscfxFSK8OwC6n51n2MXdOEZEVIjJVRLymihSR8SKyWEQWHzhwIELqKYEwcV74IZBn/HNmBDRxJbllPhn9spA4rTMMMLxH1R5iR0ZfLQ8cU6Jp72JOJB3XOpeRWakz+Nob786Jmc3o1dZ3Nv67x/SqpgfvxjrcCc3kxARe/c0J9G4b9vaYaNmzyoUMY0wJ4FjIiPa5Sn1Hf2+UMAjHGf5GRG4VkXYi0tzxFyG9vP1iuH/VlwJdjDGDsEoCfOmtI2PMG8aYocaYoa1a6UaCmuSxb9ZWJsEyxnD6P37ksyBCI79duYc9UUii1aB7Ni0vWIEkxc+qs/vA6383nlT52FHdJkFXhmNJNO2dokQHHSC6EMjbkZGSyCe3nEpqku/kyqnJ1Q2d4v6Nj5Y9C2chI9BzFcWFkrKKytJ5umighEI4YdK/tf/f63TMAN3C6NNBFtDJ6XlHYI9zA2PMUafHU0TkFRFpaYzxn4VIqVEKS6xkIGUVhqwjx7jvs5UBn/vKrC3RUivuaNfEM4P070d0w5iq1YxEtfKxJJr2LuaEs4orPlbBpq7ex4IthxjcqSnpKVq1JRZIcjmJDYsgjqNgapIhnZvGWoV4IVr2LJiFjHwROQ9rIaNHgOdaFxEZD4wH6Ny5c8jKKnWD81+cw6rlKUBnLTSshETIzrAxJjpFYC0WAT1EpCuwG7gKuMa5gYi0BfYbY4yIDMNa5fadwliJOt5sUFGp6+prPAzJjv7SlZw5vej4x+kkJMfP6rA795/bB4BtBwt4/Ju1XHK8TpLHiijbu7jm0yVZXDqkQ8AhnsVlVffU1W8upGFqEvPvP5Ojx+pvAqdY0bDfHhr221N9wzrCyF6tmLXB93aoRmn+sz4HSlItn5iMoj0LeSEjkHOdznsDeANg6NCh8TCsUGLIpux8klsm0+rSRQzoPzTW6ii1kJDDpEWkgYg8ZGckRER6iEhEMjsbY8qA24HvgHXAx8aYNSJyi4jcYje7DFgtIiuAF4GrTHUpHpWo4u3dd6xq7jhUYLeJ/UdkKgRTFpuVqr7tGnP9KV08jqcl+9ana8sMtj99PoM7NY2iZoo/omnv4p17PlnBd2s8M+oGSn5xGee9MIfT/xH5/f9K/aZjM9dkU09e3N9ru0guFn1522mk+rHXtYEo2rPKhQwRScFayPja7dptxZ5Zc1vIqPZcRfFFYoNSGhyXTcuW1bdVFHfCCZP+D7AEONV+noWVofDbcJUCa8YQmOJ27DWnx/8G/h2JaymRwV8SntHPzgaq9r/GlujP6iclCGVeXuyUPw0HYNKCqhKPDVISadPYM0xaiSuiau/inaNF4a3qZh05FiFNlGA4tqUVeUszaXHBchLT697K/Nz7rEpAmRMmA57OcSTp1aYRB/KLGdypKTM3ZHtt0699ZOu+R3HuOCr2zBhTJiKOhYxE4B3HQoYtfw1rIeMPIlIGHKNqIcPrueHoo9QfyguTKd7TjMOHUYdYCZpwnOHuxpgrReRqAGPMMcdsn1I/2Xm4MNYqBEU0v62BZi0FmHnPSACeuXwQy3YeiZJGSpiovVNqHWV56Rzb2hpTHk6uzPinW6sMth4oiGr5ue/+fIZf+arHxpCS5P99DlW7KLyqqNmzcBYyvJ2rKIFQeqAxBz47kTV3wIgRsdZGqW2E4wyXiEg69jZQEekOFEdEK6VWsXDrIQqKy0hOSKAIzz24e3Pr/qrQwI5NWJmVW/k8mAl9x6rwZSd05LITOkZYMyVC1Fl7d7ighDs+WBZrNZRoEBeRONHhNydXJU76+vbTyS8q89nWV5K3SOK8HznYFd0f7vY/eo/Cx1hn7ZmiKEqwhOMMPwpMAzqJyHvAacC4SCilxD9fLd9Nk/RkRvZqzVVvLASgWQPP5CQ/rs/m2e831rR6fklpnUvDwTtAIjfEuHN0D26YuLjyubfB0I2ne+YseeGqwRHTQYkqddbevfjDJrYdLIi1GkoUqa0hDIkJQrmPvTXnD2hf+bhhahINU8MZzvjmw/EnU1IW3USL3Vs19Ho8igvdddaeKfWTOjzvp9QA4WST/l5ElgInY/3W/knLGtV9vlq+m6SEBP704XIAtj99fqUsMcEzRCzeHGGA9G4HSe8W2a9qmo+alI9d2JfHvlnLN7efzoCOTSqPv3T18SQnJjC2f9uI6qFEB7V3Sq0mghN/saBpg2QKS8pdnFJ/OSoiycndWngcq6nJhWjtGVZ7ptRVdPOSEgrhTqV2wEp0kAScISIYYz4PXy0lXnE4wbUZY7CmESVyhrN3O9fEKY4VjXGndWXcaZ4rwhcOau9xTIl76q2927Q/z7dQBx9xS0JqGUnN82utM+z4anVoms64UzO599PA69S79FPNd7Rvu8as3XvUfyMnOjdvENb14oR6a88URVGcCdkZFpF3gIHAGqjcKGoANab1ltox4Dq6sDs5s3vT+Z4pkBi+zqP7tKZ5Rkrl89evO4FOzRr4zDiq1D7qu717c842Hjy/b6zVUIIko+8eMvrGX53hP4zszquztlQ+/+sl/Xnoy9VB9dEgJTJh0W9dP5TjOzflhL/OAOCuMb2qPSezRYZfua8V3VCd5Ej71vXdnil1j5Q2ubS5egEDB54Sa1WUWkg4vyYnG2N0dFRPMMbw5pytXo/Xd9zfglO6t6BxWjJ9I1xmQ4kpddbeBXoPf7lsd5Q1UeoLTdNd80v85uQuPPzV6oDDgp+/cnDE6q6P7tvG5bm33A51kDprz5T6SWJaGYmdD9O0aaw1UWoj4dRbWCAiakzrCXM3H+RvU9Z7HP/blHUx0CZMTO2IYVPiinpv7+78aHmsVVCCpHBjG/a9dzLlRdFJLhUqga6QOjLtVxjo4FRD+JLjOwR1PV9OtnPOi8cu7Mt7N50UVL+R4MTMZjV+TdSeKXWM8vxUCta2J1sD8pQQCMcZ/i+WQd0gIitFZJWIhLahR4k5uw4X8uePlvvMmllc6v34m3O2RVOtuOKKod7LHunaeL2gzto7/f7WXcrz0yjOagEVof/UN0oL3JH+52UD/coHdGjiV+5Mg5RE/u+KQYAVvXBq95YBn+tOIMm2xp3WldOOC/0aznRt6T+M2plPbjnVp6xFw5Sg+wuQOmvPlPpJycGGHPzmeDZsiLUmSm0kHGf4HeA6YCxwIXCB/V+phTzwxSq+WLabBVsPhdxHXY+YHtCxaeXj3m0bVT5OTNCV5npA1OydiIy1B6WbRWSCF7mIyIu2fKWIDInEdSPFL9sOx1oFxQeRsMm3jOgecNsrhnbi9etO8Cm/YGA7AEb1al1tX5cc34Em6Z7l+qpj/ZNjXZ5ntmhAspdKB9GkRcNUv/KTuzUPqJ8TM5vz3xuGcc851e9jDhIdvymKotiEEzu10xjzdcQ0UeKCz5ZkATCiZ6vKYz9vPcRNkxb7OqWSQwUlUdMrkqS0P0LjYVuCzrB67bDOPGwneZl04zDe/3kn+UVl/N5tsFjXJwXqKVGxdyKSCLwMnA1kAYtE5GtjzFqnZucCPey/k4BX7f8x55KX58VaBcUvjom60IzSmb2rd1qDYWDHpi6hyf4QIMGOp64IwqimJbuWuZt176iAz40k5/Zvy9TV+1yOiQjT/3wGHZqm0+/R7wLqx/m32J0GKd5L+gWAjt8URVFswnGG14vI+8A3QLHjoKbmr918vWIPX6/Y4zJgeXtu3QqFTs88RHpm8CvgCU4rwK0bpXHn6J5e2zUOIqxQqTVEy94NAzYbY7YCiMiHwMWAszN8MTDJWJmuFopIUxFpZ4zZG+a1AaiogIpSz5UzSTBIosEYMGXe5ct35fiV+z0/0SAJBlMBpjwUeQWSAKZCMOWe0RnVypMqEAFTLpiKmpcnJFtbT0xZgtcJtEjJLWU85YHw3BWDeffnHaGdHCCTbhgGWCo6vwxD1d7iClvQv0Njju8Ukz22QfPqb04gc8Jkj+M92zTy0jp45k84MxxnWMdvStQ5UlBChTHVRkpEklpS1kyJM8IZtadjGdExTsc0NX8doc/D06gwhuKyCto0rjlDVhOYsgRMWQKSWhaS4XQOkXYm0BUPpVYSLXvXAdjl9DwLz1Vfb206ABFxhjGw69lzPQ43HraFZqPWY0qS2PX8OR7yJqdvoOlpmynPS2P3q2d5yJuduZbGJ26j7FBD9rw9wkPefOxKGg3aRcn+JuybdLqHvOVFS8nos5eiXS3I/vBkD3mryxbRoHs2x7a05sDnQz3kba5ZQFqnwxSsa8+hbwd7yNuNm0NKm6Pkr+zE4ekDPOTtx88kuVkhRxd3JWdWHw95x9u/JzGjhNz5Pcid38ND3unP05CUco7M6k3e4m5uUkOX+6YAcPj7fuSv7OwilZRSOv95OgAHJw+icL1rXfLEhsfoeNuPABz44gSObXVdwU1qnk+Hm38itV0OKW1zkBDrDDdpEHyYcrCc4Wfl0zH/6Mh4/u0dw6OuTyDEw4C7fdP06hv5RsdvAfDEN2tp3Tg1qK0CShXHP/k9oGMjJf4Jxxl+yxjjEiMnIqeFqY8SA4pKy5mz6aDLsWOl5ZWP9x8tdj+lVpP7Szdy5/Si871Tgg6Vnvqn4bRvEtYgRKmdRMveeRtWu38pA2mDiIwHxgN07tzZ4wR/GjQd6ZkVPrVtriVOrPAu73AEgITUUu/yjtZe4oSMYu/ydjkAJDYq8ipPaZUHQHLTQq/y5Ob51v8WeV7lSU0KrX5a53qVJzYssvRon+NVnpBubftI63TIq1ySLRuZ1vUAklLmKU+0VmbTj8smsaFvG9qg1z6Smhe4nptQtaqb0Xc3KfZnUalbcpV9zhiwi9TOrpEuCWmlla+t2ZlrSUjz1C/eeP26ofz7x02syHJ+rdZXP9StJz/c7TkJowA6fguId+ZZUXHx6Aw/8c1a3pm3TR1Nm9R2ubS9fi6DBnlOrCpKdYTjDL8EuCdy8XZMiXOe/HZt9Y3qMZ2ap1cmfOnTTmsH11OiZe+ygE5OzzsCe0JogzHmDeANgKFDhwbuPoihyUmeNcQrxUkVfuUJqeV+5YnppX7lSQ2L/cubHPMrT25e6Fee0iqflFb5vuVtjpLS5qhPeWr7XFLb5/qUp3U8QlrHIz7l6V0Okd7F97aM9G4HSO92wKe8QY9swHe9kIze+3zKANI6+dbNHy3tTMY1xdl923DacS3o+0jVXtrKleEQ++zeqmH4itVNdPxWy3E46opFQmoZqe1yaRSZXQhKPSNoZ1hETgFOBVqJyF1OosZAyBtYlJph4dZDXPXGQqb+aXilY7fjUGGMtaphghxZzfnLmdHRQ4l7asDeLQJ6iEhXYDdwFXCNW5uvgdvt/cQnAbmR2i+sKO68fM0QTuzajOYNfDvDvzq+A18s2x3xa4tTEIRgJZyC4BJoBUrzjJp19uOBBQsWALQB0PFb3cAYU3mf1GfKjqZxbGsr9u2Dtm1jrY1S2wil3kAK0BDLkW7k9HcUuCxyqinRYJqd3XLBltBLKNUdXAdYG/461kc7pR4TVXtnjCkDbge+A9YBHxtj1ojILSJyi91sCrAV2Ay8Cdwa7nUVxRtLHz6b8we2o3WjNJISfQ8PEkIcfAd7WtWe4eCvNaZvG6/H7zjzOBqnJbH04bOD77SWU1JSAta4T8dvdYT6Xr1i6U4r8qX0UEMOfzeQrb6DhBTFJ0GvDBtjfgJ+EpGJxpjopplUwqaiwvDfBdu5elhnj5ITDhaGUVu4LpGapBPjiis1Ye+MMVOwHF7nY685PTbAbdG4tqI442219MKB7fnXdxtcjtXUQlQopZUAVj42hnQfv3d3j+nF3WMiXrc3aL678wwap9ds5YERI0aAlXjvUh2/1Q0qjCEh1HTxNURxWXlY46vMCZMZ3qMl/7vRs6JgflH850NQ4p9wLHGhiPwL6AekOQ4aYzSmNI74ZuUeHv9mLfuOFnH/uZ4ZUQHKKurX1GJa58Nw+oaQy40o9ZI6a+/q+8qC4p/OLRp4HPP3nXE2q7eN6s7LM7cEdJ7HNQK8njcap0U/C3a49PJRlaCGqLP2rL5RG4Zvf/5oOa9ce0JYfbgneXVQC16+UgsIJUzawXvAeqAr8DiwHWv/mxJHFBRbWUdf/2krN/13ERPnbwcsA7LrcCFFTlmj6wvjfp1B09M2+13dOLe/bjpRXKiz9k4HE0o4fHfnGS7PHd+n0X3acEKX8GoCO2q7mzibsakDezTrrD2rL1Qll4uve8MbM9b6TgAYLvFmG5TaSTjOcAtjzNtAqTHmJ2PMDYBnMUgl4uzLLSJzwmS+WJZVeWz2xgOs3u2Z8dT5N3vGOleDNPyfM+n98LSo6RmvNE5swAktO7isNsy4y7UEx6BOTWtWKSXeqbP2bsn20LINKwr4XuEUgSbpKR7HAkWoGvDXhtWvWkadtWfxTlFpOTmFJWH349hCUN99wXr+8pUIEY4zXGr/3ysi54vI8VglP5Qosynbqr/52ZKqbJ7Xv/MLF7w0F4DCkjKe/HYtx0rKfUYC1/p57TCY/XlTPr93sMux41q7luA4TktyKK7UWXu3YX9erFVQ6iDGwAldmvHm9UO9Ti4+cF5vXrnWdyWfMf3akpFq7eQa3qNltNSsr9RZexbvXPLyPAY/8X3Y/UjlRFE9dwftl5/a4Qjtb5rF8cfHVh2ldhKOM/xXEWkC3A3cA7wF/DkiWil+cdi+uZsPctt7Sz3kb87exttzt/HOvG01luikNuEYYHlj41/P5ZvbT2e0j0ykSr1F7Z2iYJVe8of7T87ZfduQmmQNNZzH7ePP6M55A9p57SM1KYERPVvROC2ZOX8ZxVO/GhCOyjHj+M5NY62CL9SexYj1+yIz+egoQzZ7o+8a5XtyjpE5YTJTVtV8Jb635lSldS4pr/DZbtP+PDInTGbFrpywrpeQUk5yiwLS08PqRqmnhOwMG2O+NcbkGmNWG2NGGWNOMMZ8HUnlFO84zwNO9mLkyiosw1NeYVzqNioW/ds38SlLSUpgQEffcqV+ovZOqWv079A4pPN6tW0YtX2K3iZvOzVvQEpSOPP2seODm09m+SPxV8JJ7Vntx3Gv3PKu54IIWFVCTn36RwA+W1K1pe5oUSmXvjqfHYcKoqrf36asC6jdj+ut7XvuY9nyCsOjX61m3mbvibMcOGxRaU46R3/pyp49ISir1HtC/oURkZ4i8oOIrLafDxSRhyKnmhIuxuAzHrq+BdY0Sa/KLupIflLdqnmT9GQevqBvNNVSaglq75SaJCkhepOYGSneS5x8ddtpAZ2T7Kf+cHXUt0iltOREmjbwLFcVa6Jpz0RkrIhsEJHNIjLBi/xaEVlp/80XkUFOsu0iskpElovI4kjoEyr7jxbF8vLVUt299NVy717h9DX7WbLjCC/M2BQRPQ7lF1NYUkZZeQX5xZErc7R81xH+u2AH1771s992jmiTssMNOTKzLzt3RkwFpR4RznTrm8D92HtPjDErgasioZTin/V7jwbUrrS8wue6cH2rzRZKPccVj47hxtO7RkEbpRai9k6pMbxNVt5/bu+I9P3ns3sCeEQNtWjo22lb88RYlj58Ns9cPoguLTIY0tl3luh2Taw4xX7tQ1t5VmqEqNgzEUkEXgbOBfoCV4uI+4zyNmCEMWYg8CTwhpt8lDFmsDFmaLj6hMM1by6M5eVd2Jydx8NfrqbCKZNc9VF/VW3znJzUqizUkeGEv87gon/P4y+fraT/o9/51ibIvc2BNq/vW6aVyBCOM9zAGPOL27H65WHFiL9PXe9XnlNo5cb498zN3PvpSq9tnpuxMeJ6xTM9W1dlPB07Fp59tkrmXhpEUbyg9k6JKb8f0b3aNjcPD3zyzj3UubpyQc0zUrjsBCvH0rUndfbZbkDHJnxz++n88aweAeviINEeqWvCrKgTLXs2DNhsjNlqjCkBPgQudm5gjJlvjHGksF9InCbu2p1zLOJ9/u4/7m95YNz038X8b+EOdhwu9Covrybd+i/bDlc+jkbirc3Z+Xy+dLffNmVBpoQPtLX6wkokCMcZPigi3bG/iyJyGVDzu/QVD/KKSqtvVEd4+tcDeOj8Ph7HJ90wjLeuH1pZL7hjM2u1IjUpgZNPhj//GTo0tY75Kg2iKE6ovVPimtSkBB48v/ptHQ6nNynB9ec/mMjs6hznAR2bVDq2wZCcmMDMe0by72qSdClhEy171gHY5fQ8yz7mixuBqU7PDTBdRJaIyPgI6BMzCorLWOcWxTdzg+9kV8FyrLS88nEgpZp2Hipk1obskEoyfbtyD8t2RrcEn9YLVmJJ8LGjVdyGFd7SW0R2Y4W+XBsRrRSvLNhyiJO6Nvfb5srXF9SQNvHBVcOsFYq/TnZN1nBGz1YAZB0pZOrqfQAsfmg0yYkJHDgABw/CD3ePqHZGVVFs1N4pUefKoZ34aLHlS3z2h1OZ8NlKNmXnR+Vagzs15Zx+bflh3X4W7zhCerL3vcQ1TdeWGbFWoT4QLXvmbQbE64+siIzCcoZPdzp8mjFmj4i0Br4XkfXGmNlezh0PjAfo3Nl3lEIsueXdJczZdJCNfz2X5ERhy4HwE1Y5HMZQVq1HPDMTY2BsP2uBIJiRz+3vLwNg+9PnA3DVGwtYvP0Im/92XsB9vDF7K7eNOs6nvLwCKioMCX4m0X5Yt5+z+rhW+igp852pWlECJaSVYXtfyB+MMaOBVkBvY8zpxpgdEdVOqWT2xgNc/eZCXpu9xUP28eKqidiftx3mZ6eQmPrOcNspvmhwe1o2TKVJejIvvQT9+lnJTfyVWVIUUHun1BxPXNKv8vEJXZrx/V0jIn4Nx4BaBP4wsjuTbhzGl7edFnSip77tqvYEn9KtRUR1VKJOtOxZFtDJ6XlHwCOTk4gMxCrndLEx5pDjuDFmj/0/G/gCK+zaA2PMG8aYocaYoa1atYqA2pHHEZpcYQxvz93G6Gd/CvjcxdsPs/1gATdOXETmhMke8r98uiJofRwLr9PW7LOf+3eHf/XKPHo/PNWrbOHWw37Dnr9fux938b++2+D3eu/M28b17/gPI1+xK4c99kTAzPXZ3P7+Um5738qmndb5EB1uncEQDSpRQiBoZ1hEkowx5cAJAMaYAmNMZAqnKT5xZDb85zRPgxJoCvu6zJy/jPJ6vHurhmx/+nxO6OJ/RV1RvKH2TqlJarIUnuNaDVKSGNypadDnf3zLKfx070gA3r/5JLb93fcqkSOiqU3jtKCvo0SOsrLKbcHRsmeLgB4i0lVEUrCScrmUbBKRzsDnwHXGmI1OxzNEpJHjMTAGWB1B3YLCn6+481Ahx0qsMOXyCsOaPbl++1oWZA3dy15bwMhnZvGDXXbIgfgIcfamanVRb1sPFDDNjprzxrKdORSVVlDqVCP46jcCSyr2j2n+89r4Yu7mgxT4yUj975mbOfXpH1m75yi/m7iIb1dWRfZLUgVJjYpJib/k7UotIJSVYcfUzTIR+VpErhORXzv+IqlcfeaSl+fxhtMqcFKi70FSYn2rV+GFTs0bxFoFpW6i9k6pM7xw1eCI9dUwNYkuLayQZhHxu4/4ztE9mXnPSA2BjjHDhlUutEbFnhljyoDbge+AdcDHxpg1InKLiNxiN3sEaAG84lZCqQ0wV0RWYNndycaYaeHq5I+35mwlc8LkoPernvGvmdz430UAPD9jI+e/OJe1ewKr8uFMTmEJxhhyj5Uy+tmfWL/Pfx/B6Pnx4iy/8rV7j3LLu0s8jmcfLXJZjf5yWVVirAVbD/HU5LXV6ujLEjgmEACufWshvR6a6pEQ1t/ijsO/91YjufRwA3Lm9iDL/8tWFK+Ek0CrOXAIOBO4ALjQ/q9EgOW7cvjblCojkeBnoFFdMpP6xi0BZF1VlCBRe6dEnCl/HO7y3GHKI5lM5j+/O7Hy8cWDq3IZuWeTjiaJCaKOcHwRNXtmjJlijOlpjOlujHnKPvaaMeY1+/FNxphmdvmkyhJKdgbqQfZfP8e50cQ910gwzN9yiLyiUl76cTMA+/Nc6xI7313eRmi7Dhcy+InvGfnMLOZsOsDm7Hxe/MF77d/qxniRHAEu3uGaKMs9HPrNOdv8nr8nt8hnDeTT/vFj5eN5mw9R7GW/b+4xKwGsPxPoTVR2JIPceT3Z4728sqL4JRRnuLWI3IUVvrLK/r/G/h+zkJa6QO6xUjInTGbG2v0eMn+ZOQ/mF0dTrZiTkRJcYpcJEarHqSiovVOiSF+3WrzVDWrfuO6EoK8xqldr12vo5GnEOKGL73rL8Uh2djZYK7BqzyLAwfzqsziDd+dt1xGrTNKOQ4V8uczy4EJZXQbYfqiQzAmTWbDlUPWN3fU4XMgt/1vCwfxiNu3P47Mlrkur93++yue5G/d7Rtif9vSPXlpaHC4I7P1SlJomlOxBiUBDgsgaqATGJtuwvPpTVXj09oMFHCooCdlI1jYapCRS6BRKA9aAcdF219nKs3q35u4xvUK6xsUXQ5cuIauo1C/U3ilxw3GtG/qUndm7tU+ZM1rCJDJMu3N4ZXm+2kJ5eTlYiyDevkj19ouxevdRmjZIpnF6Mk3SkwM+z/leWp2VS0piAqcdZ9XIrm7KKetIVUboGeusBZDth7zXEa6OS1+dD8Dbc7dxSvcWTFqwPeBzf/P2z+w4VMjCbYfIKQyuLGco49KnJq8NqARcsPgOzlaU6gnFGd5rjHki4pooXhn5zKxYq1CjjOnbhi+XW7OkD1/Qlye/XUuLjFSPdi9fO4S0EEuBnHCC9acoAaD2Tol75t43ilaNPO1ky4aexxzUZLKuukjvto2rbxRntGvXjn379u01xjwea13iiQv/Pbfy8SvXDuG8Ae28ttuwL48OzaomQKasqkrg9H/fW7nAHOWHnPF2p/3l05UhauubGev288O6/Tzy1ZqAz8krshJWBesI+8Pftr4352zz6wwHMiNz63tLfco08EUJhVCcYf2qKVHj8Yv7VzrD7Zr4zjzqzREe07cNp3SvvsRHVhbs2QPDvBZtUBQX1N4pNcLqx88Jqn3jtCSO2gPZjs08Ewh+OP5kuuk+XcUJjQqAGycuollGCtec5L0+8bzNBzlvQDuvTtk5z892CY1/ZvpGL61gc3Ze5X7Y7KPFfrM2B4MBjhSUMN9POPSN/13sU+aNcEKXHSvawbLrsO8V8OLSCvbmHtPvqlKjhLJn+KyIa6G4sMQtgUF94JEL+jJ/wpk0SU/mL2N78e0dp7vIn7i4qv7msofP9trHG9cP5Xenda32Wq+9BqeeGp6+Sr1B7Z1SIzRMTQp4P2/XlhmseHSM3zYnd2tBay1lpDjxww8/xFqFmPPD+mw+XZLFr1+ZH/A5Xyyr2kdb3fjs+RkbGf3s7MrnZ/xrpt+avMHy8eJdEesrXJxLGwXDVX5KNM1Yt59T/u5737Ev0rse4L05u7XOsBISQTvDxpjD0VCkPpF9tIh8L7XUFm4NPvlBXWDCub254fSutLf3X9068jj6d2hSKReB60/JrHzeLEMLySk1g9o7JdrMumckM+4aAUCCWH8PX1D9njoRYcZdI/hw/MkhXbcms0kr8UHz5s1jrULc420+6s8frQj4/OdneM8IHSjztxz0KTvr/34Kq++aorpJvd05x/zKQ7pmgiE9w5AY2u45pZ4TSpi0EiTlFYYEqTIQw/72A5ktGjDr3lEYYzhWWs7cTQd9htzUdX5zsv9sVo5omScv6U8rP3vgAkWjbxRFiRcynUKZRYStf/fcc+jA3XQd17qh36Ra3tBs0kp9pSKCK7TR4po3f/Yr33e0yK+8rhDsR1VysCETn2vC0KegU6fo6KTUXcKpM6z4YcO+PF6YsYm/T11H9wem8IJb/ThH1sBXZm2h7yPf8dUKLY5WHded3IWx/dtGpC8dDyqKEkkuHNS+8vHGv54bQ038o3vxlPpKMHtcS9xq4P6yLT6ChP4zb3usVaiWdXvDr34SbORKWU4Dvv5fI/aHto1ZqeeoMxwlLn11Ps/N2MjrP20FfIfOfLV8NwCTQ9x7UVv57SlVq8HqlyqKUtsZ6pRYJyUpOj+tkbSVmk1aqW8cKy2vvpEP4mmvbn3gvYU7Y62CUo9QZzhKFPkwuvUxOZY3qguNhug5yVdeCe+9F6XOFUWptdw5ukfE+xx3ambE+1QUJXgSEwIbVXzixfGN5dTRtoMFMbx6bJi8qn4tECmxRZ3hKOEtwONAXjGPf+Na/62+Rqw5hynX9FswcCBccUUNX1RRlLjn1pHH8bdfDQj6PH9O9GMX9fMpC5Z6+nOhKBHBX/1bB1NW7eNeLzWAdWtV7UA/JyUU1BmOEt72Zb338w5WZuVWPv/gl51sys6vSbVqFP9ZTqu3WI7EMCN6tYqQRhabN8PMmRHtUlGUOkBKUgJXnRh89pWkBPEYhM29bxS/PBgflbkWPTiaxQ+Ndjmm2aSV+kYgC8O+6u7qtgJFqbuoMxwlvGXCc983fP/nq2pIm9jQwS6VVB2+fmJ6tGnE8kfODmlw6o+334axYyPapaIodQRfKwtf3naaz3NuPL2bhx3r2KwBrRu51vnt5pQ5OiTdQjyvVaNUWkYgE7+i1GbCyaSuK47xTYPjsjEGrTOshETcOsMiMlZENojIZhGZ4EUuIvKiLV8pInoL1CICDZNu2iBFS4EoihJTtj99PoM7NfUpT09JrHa0fMNpXfn2j6fz3k0nRVi70NCVLqW+kahjiTqPfsRKKMRlnWERSQReBs4GsoBFIvK1MWatU7NzgR7230nAq/b/mPDz1kMcLSrj7L5tYqVCXNC2cRoTzu1NhZcw8b+M7cU/p20AYpuMor7u01YUJTZsf7qqdvBpx7Xk5G7NaZ6REnQ/aroUJXQSwlj+UScrvinJbsTvfw8PPgidO8daG6W2EZfOMDAM2GyM2QogIh8CFwPOzvDFwCRjbc5dKCJNRaSdMSYmKeiufGMh4DroqY8sfKBqj1xeUamL7A8juvPxol2VNZYzUhIpKAm91EE46A+bEmtEpDnwEZAJbAeuMMZ4pJsXke1AHlAOlBljhtaclkqgBGNSPhx/So1dS1EUi/CizPSui2fKchvwxudwyy3qDCvBE6/OcAfAObd9Fp6rvt7adAAi4gzn5MBTT3kev+giGD4c9u+HZ56pOn5kdm8AfvkFhg2DsqNp5C3J9Dg/o99uUlrnUXq4AfkrPO/YhgN3kdyigJIDDSlY3dFTfvwOkpseo3hfYwrXtfeQNxq6jaRGxRRlNePYJs9V6sYnbSGxQSlFO1pwbKtnYqomp20iIaWcY1tbUbSjhYe86RkbkERD4aY2FGc1cxU6/VZ8/DEsWpRc+b4APPKIYBpbj7/8JJn9M3pRWl7BgyUJpCRCkybw0EOW/K23YMMG1+5bt4Z777Uev/wybN/uKu/UCf74R+vxc8/Bnj2u8uOOg9//Hho1goYNPV6aotQ0E4AfjDFP21tBJgD3+Wg7yhhzsOZUU+IZXSFWlOAJJJu0L3QCXVHqLvHqDHszO+6//4G0QUTGA+MBOgcxXZSfD6+84nm8SxfLGT582FV+rNSqm7tuHTTseJTyglTylnnW0k1pn0NK6zzK8tK9ytMyD5LcooCy3AZe5ek99pPc9Bhlhxt6lWf02w2Niik96F3e8PgdJDYopWR/Y6/yxsO2Qko5xXuaepU3OX0jkmgozmrmKZeqt3/mTJg0qep9AXh7Fxx3p/V4zqxEjizpjDGGt1ZbH2WHDlXO8Lffwvffu3bfu3eVM/zFF7Bggat86NAqZ/ijj2CVW36yUaMsZ/jeez0dbUWJARcDI+3H/wVm4dsZVmoI99Wjv4ztFSNNokNKUoLLf0WpLwRYZlhRlHpGvDrDWYBzCuGOwJ4Q2mCMeQN4A2Do0KEBT6h37AgFfuqc9+njKs+c8B0AazM68eiLu0htB53v+s7n+eldDvmVNzgu2688o+8eMvp6vNxKGg3eRaPBnoXjHTQeto3Gw7b5lDc9fRNNT9/kU95s1HqajVrvRWKFib/6qvXneF/ACiE/45/W4+dfLeb1txL5ZfthLhjoucL95Zc+Lw3AjBn+5QsX+palpFiOuqLEmDaObR3GmL0i0tpHOwNMFxEDvG7bNKUGiNdtL+GM6a86sTP7cou4bdRxEdNHUWoDiWF4w6t351bfSFGUWkm8Tg0vAnqISFcRSQGuAr52a/M1cL2dVfpkIDdW+4Wz84oqH3+02LcDqsCD5/ehaYNk2jROo3XjNK+OsKLUFURkhois9vJ3cRDdnGaMGYKVNPA2ETnDx7XGi8hiEVl84MCBiOivBE44IZg1SUpSAn8Z25uM1HidC1eU6BBONumVWeoMxzViyMgIL0maUn+Jy19DY0yZiNwOfAckAu8YY9aIyC22/DVgCnAesBkoBH4XTZ0qKgwl5RWkJSd6yG6YuCial45burbMYNvBAsaf0Y03Zm/123btE+cAcE6/tpzTr21NqKcoMccYM9qXTET2O5L+iUg7INtHH3vs/9ki8gVWgsHZXtqFFAVTnzhvQFumrNoXlb4d4+zLT/DM9VCTfDj+ZA4XlMRUB0WJRxI0TrrO0uC4bLLzY62FUluJ2zkUY8wUY0xPY0x3Y8xT9rHXbEcYY3GbLR9gjFkcTX2enLyW3g9Po6SswuV4UWk5q3cfjeal45JLh3RkVC8rqrN1o1Sf7YZ0bkqDlEQapMTlvIuixJKvgd/aj38LfOXeQEQyRKSR4zEwBlhdYxrWMYZlNgegc/MG/N/lg/y2vawap/aak7znoAgnFLM6Wja0bO2lfnQ7uVsLzhvQLmo6KEptpbZEbyjB01AjXZQwiFtnON74z7ztAJSUuzrDY5/3WKCpFwRaT/nzW09j7RNjo6yNotRKngbOFpFNWDXVnwYQkfYiMsVu0waYKyIrgF+AycaYaTHRthZw68juAbUb1auVX4dyzePn8I9LB/rt44weLQEYU4O15ZukJ7PpqXMDfp2KolQxcf72WKugRInivU245hrYsSPWmii1EXWGg2TUM7Ncnjtq5tY3zu7bhhYNUwBrgKYoSnAYYw4ZY84yxvSw/x+2j+8xxpxnP95qjBlk//VzRMnUd57+9QCvx393Wle/57WwV1ZbN07z2y4jNSmqK7zhkJyYEGa9VEWpn3yzwnfSUaV2c05mVz74wCqLqijBonEFAZBTWLX/6kBeMVlHClm+K4fb318WQ61iS2KCMP6MbrRqmMqlQzqyePsRRvX2lQxXURQl9lwwsB0iMDYieQvUIVUUd0RkLPACVr6Xt4wxT7vJxZafh5XvZZwxZmkg5yqKL87q04aXY62EUmtRZzgArnrDtU7P6f+YGSNN4ovkxASuONGqbvWPy/yHFCqKosQaEYlaBvt2TazV5m6tMqLSv6LEOyKSCLyMte0jC1gkIl8bY9Y6NTsX6GH/nQS8CpwU4LmKoigRR8OkA2D9vrxYqxBTVjw6hpRE/aooihIfxGOq7JG9WvPh+JO56fRusVZFUWLFMGCzvb2jBPgQcC8jdzEwyU6CuhBoamfTD+RcRVGUiKMrw0q1NElPZv2TYzlYUMywp36ItTqKoigBc8ng9ny5vGb2Cp7crUWNXEdR4pQOwC6n51lYq7/VtekQ4Llhs/vNEVQUuFbAaNBrLy3OXWVd9OUzMaWuQ+OMAbtoftY6jIGsF8Z49NloyHaanrGRiuJEdr96loe88cmbaXLyVsryU9n71ggPeZPhG2h8wg5KDzdg36TTPeTNzlpLwwFZlOxvzP4PTvaQNx+7koze+yja1YwDn53oIW950VLSux3k2NZWHPz6eA95q8sWkdbxCAXr23J4mmeUX5urF5LS5ij5Kzty5Me+HvK2v51LcrNCji7JJHdOTw95+5t+IrFhMbkLunP0Z8/kfx1u/YGElHKOzO5J/tJMD3mnO6cDcHhGXwpWuyY+lJQyOt76Ix06wKmnVpW4U5RgUGdYCYiEBAmrYL2iKIoz957Ti399tyGkc02AS8NpyQk8c/mgqDjDHZqmAzCoU9OI960otRRvgwT3u9VXm0DOtToQGQ+MB+jc2XuJM19k9NpLRYnr0DelTW6VvO8eTLlrJFxq+5wqef8sjz5T2lrnS6LxLm9tRRcmJJd7lSe3tArkJqSWeZUnNSuw5Okl3uVNrUSuiRnFXuWJjYrs/8e8yzOKK/vxJk9It/LmJDUv8C5PKbNfR55XuSSXA5DS+qh3eYL1Mae2zcV4kTtIbX/E89xEq8LLsGFw333Q19NXV5RqUWdYURRFqXEap4X+82O8jJGHdmnmcWzh/WeRFKUtHgM6NmHancPp2bpRVPpXlFpIFtDJ6XlHwH0myleblADOBcAY8wbwBsDQoUOD2jXR9IyNfuXNRq33KROB5qN9b2GWpAq/8oTUMr/yxIwSv/KkxkV+5cnNC/3KU1rl+5Wntj1Kalvf8rSOR/6fvfsOj6pKHzj+fdND6L0Tei8iVVBBFEVWWXtbu6Jr27WX1V27/lx1XXtf7L0rKqIiKAKCdOk99BZISELa+f1x74TpfTIzyft5njzJ3HPLmcnMO+fc08hq61khdcjusJvsDrt9p3feSXbnnT7T63TbTp1u232m5/TaSk6vrT7TTz7ZZ5JSfulAUMWaB0/0mfbbP46t+jsRx+kppWqmswa1C7yTk7cv9+w+2LBORrSy41WPlvVJSdAlmJSKg9+AriLSUUQygLOBz932+Ry4QCzDgH3GmK1BHquUUlGnleEA5m/0fResJmiQne6xnuanV4+o+rtZvUz3Q5RSKiaa5ByqvHpr/a1K85KUkaZfZ0rFkzGmHLgG+BZYBrxvjFkqIleKyJX2bpOBtcBq4CXgKn/HVvNTUErVQtpN2odHvlnO+3Pz2FV4MN5ZialpN43y2DbAxxi4YMfpKaVUIJlpqR7bTurfmkkz11d/ZpRSUWGMmYxV4XXe9rzT3wa4OthjlVIq1vRWug/PTltT4yvCAI3slpiT+ruuvTntplG8cekQl23+WmqUUipYM287hsY5/rswi9f5dOJr1u2eM8UqpZRSKnlpZbgWG9i+YdXfT53jOt1+btMcjuzarJpzpJRKdqO6B44bre2ZmP3xN3l9MLflHjujfxB7haZlg6yon1MppZRS8aPdpGuxv47q4vL4rcuGUumvL7Q2DCulAmiQnR72scGs3vbltSMprah02TbvTmuiP+cxx6cd7roepVJKKaWUO20ZriWy0l3/1Zcf2ZHjerVw2TaiS1O/rcGOurBOqqWUCqRd48Ctv/74ui/Xp00DBrZvxOfXHJror0ldKybpzM5KKaWUCoVWhmuJhtmu4/MOa++5JmewtLiplAqkXmb4LcQAde11iC8b2dFreqMoLJt06wk9+NdJvSI+Tyx9evUI3r58aLyzoZRSStVI2k26hhveqQm/rvVcBD2cmaF1NmmlVLCC6fLscYzTrbaW9YMbn9u2Ufgt0H8d1RmAe774I+hjpt5wFDmZ1ffV6Wt2f6WUUkpFTluGa7ihnRp73R7ORDAN61gtPVfZBUillAqn0utLozqhtyZX9026Ls3r0apBZF3AlVJKKZUYtDJcw7kXFE8b2JZPrx7B4R1C7yadlZ7K+ofHc9EI790WlVLKEXPCqSRfcXR8brS1qK/zICillFK1kVaGa5nUFO12p5RKTBlph76SRvdoDsDJA1r72j1qPr9mpMe66koppZSq+XTMcA3n3jqj436VUsmgS/O6rH94vMu2z64e4WPvyLSon0WLIMcoK6WUUqrm0JZhpZRSURPuGOIvrx0ZcJ/+2qtFKaWUUlGkleEk9tgZ/blzfM+QjonmZDdKKeXsyK5Nqai0up+khBhs+rRpEIssKaWUUkr5pJXhJHXqwDacOrANvVrVB6BdY++zm/ZpbRUw+7SpX215U0rVHs5V3rG9WlBaXglARqr3r5cTereMznX1xp5SSimlIqSV4SR1ZNemiAiOIcBtG9bxut+xvVow45bRXDemKwBHdG5aTTlUStUmFw7vwF+GdaC0wqoMZ6br14tSSimlEptOoJWkhOCbRdo1rkO7xnX4/a7jaJyTEcNcKaVqq5zMNESEXq3qM23Fzmpbi9forIBKKaWUCpPeuk9Sji6CofQU1IqwUioc3/79qKD3veG4bnx57UiO69XC735928ZmjPBVozrz2Bn9Y3JupZRSStUsWhmuIQyHWke+/tuRccyJUqqm6d6yns+07PRUl8dpqSn0adOA43u35P0rhnvsf/aQdgAxW8rolhN6cNrhbWNybqWUUkrVLFoZTnB3nNgj5GN6ttLJspRS0fE3e74BZ3UzD42wufTITj6PHdKxcdXfGWkprH94PKO6N49KvkRn0FJKKaVUhLQynODqZ6V73a4FQaVUdfjLsA4e2775u9X7pE3DbDLTrK+RQCN3vUWsW07o7rGtV6v6jO/bKtRsKqVUrdbDTw8epZRvOoFWkurnWJNT68RKqTgJZfIqb+sOXzWqC498s8Jl22QvwzxGd29GNx8FPZ0+SylV2x3ZtSm9Wzdg+baCeGclprLTUykuq4h3NlQNo5XhBNEkJ4PdB0o9tjsKehMGtOamsd0RsVpjHC3Dqfbv9NQU3ps4jBmrdlVXlpVStZRzz5T6WdbXSL0s/18nkXRm+d/FQzzPF/7plFKqRjmya1P2FpV5bH/1okFcMmluHHIUG5W6eoCKAa0MJwhfBcUJA1rz8+pd/OPEnjT3MuHM4NzGXDWqMxcdkUvz+lkM7dQEgO9vPJqig3r3TKlEJSJnAHcDPYEhxhivJRYROQH4L5AKvGyMebjaMhmEc4a0p6LScO5Qz+7UAJlpKRwsr+SE3i2jet0ce9zyUV2bRfW8SimVbIZ1asKSzfs9th/TowUdmtRhw+6iOOQq+rq3rMeivH1Vj1++YBD9YrQygao9dMxwgnj+L4cz1stSJHUy0njm3IFeK8IAKSnCLSf08Ejv3KxuzJYuUUpFxRLgVGC6rx1EJBV4BhgH9ALOEZFe1ZM935y7R6elpnDRiI5kpHn/Ollx/zjm3DGG/zu9X1Tz0CA7nRm3jOa+P/eJ6nmVUirZ9GvbkHPsmfod/E2mevbgdj7TYqlXBBO8XjWqM+e7zWHRtUVdn+VjpYKlLcMJYlBuYwblNmbdrgNs3FPE1D+2U1SqLbtK1VTGmGUQcDK8IcBqY8xae993gQnAH7HKV1Z6CiVllVE9Z6wKK+0a14nJeZVSKtk4f5fcekIPLjoi1yX9zEFtmb1uT8K0El93TBea1M3kX58vBWDqDUfx2swNvDFrg9f9/3ZsVz5fsAWA4Z2aMLJrU9rrd4CKAm0ZTjAdm+ZwdLdm3PfnPjx2Zv94Z0cpFV9tgE1Oj/PsbR5EZKKIzBWRuTt37gz7gl2be5+oalwfq5tztxZ1dTZ7pZQHEWksIt+JyCr7dyMv+7QTkR9FZJmILBWRvzml3S0im0Vkgf1zYvU+g9iIR4Xtr6M6k51hrQHv6Mhz1agupKZYsTteY2+dvzpGdGnKhUfkMjjXeps0r59VNVGir5mxHdlu2yibq0d30e8iFRVaGVZKqRgRkakissTLz4RgT+Flm9dSjDHmRWPMIGPMoGbNwh9H6ygsubv/z3244uhOfP23o8I+t1KqRrsN+N4Y0xX43n7srhy40RjTExgGXO029OM/xpgB9s/k2Gc59rq1qBvX6//5MOv+aaOcjKpto+313h88pW9c8uTspQsG8calQ6iflV41BGdQrsd9FMAaGw1w2uFtqy1/qubTynCczLhlNGcO0g+zUjWZMeZYY0wfLz+fBXmKPMB5cFdbYEv0c3rIqxcN5qIjcqtmiXZoUjeT28f19FlZDpe/cW1KqaQyAXjN/vs14M/uOxhjthpjfrf/LgCW4aO3S6xdNapzPC5b7a4/tivL7j2BBtnpVbdSu7aox/qHx3Pu0PY0dqokXzjc+0SIwUhNEf7UrxVDOzb2u99h7Ru6PG5YJ4Mj7YkQHS2/4uU+sCC0b1KH9Q+Pr6oUKxUNWhmOk3aN6/DI6doNWinl129AVxHpKCIZwNnA57G6WGZaCo1zMrj75N4+J8RyFo2Odp9efQRL7jk+CmdSSsVZC2PMVrAqvUBzfzuLSC5wGDDbafM1IrJIRF711s3aPi4qQ0LqBlgOLlpi0SN5/cPjg95XRKq6THtz7TFd/B7fv13DgNd45PR+rLx/HE+fO5D3rhjud9/OzayW8npZ6R5pjpZh7f2sqpNWhuPsu+uPYsr12u1QqdpGRE4RkTxgOPCViHxrb28tIpMBjDHlwDXAt1gtKO8bY5bGK8+xkJmWSt1MnctRqWQQhaEfjvPUBT4C/m6McawJ9BzQGRgAbAUe83ZstIaEXDKiY9jHBjLr9jEh7T8giApnrFw8oiP/Osnqqe5tDO5nV49weTzcS6vs8b1a+uw15H5j9b4JfXj5gkH0au3ZK8hx38D9TFce3Zn0VK0hq9jQynAIujYPPO5jfL9WXrf/eUBr1jzoORdE1xb16NbC+0QBSqmayxjziTGmrTEm0xjTwhhzvL19izHmRKf9JhtjuhljOhtjHohlnlJCvB2vRROlapcAQz+2i0grAPv3Dm/nEJF0rIrwW8aYj53Ovd0YU2GMqQRewppNP2ay0n23loYqza0i2LJBaDPod3crB7ovIeSst12JfOKsASFdw1kkLa9jenpp8PdzviO7NHV5nJ2RyrFelhIFp27SIky6eHDV9tvG9dDJslTMaGU4BDeO7RZwn5P7t/a6/YmzD4v6WDullIqmUGNUfOYjVUolqM+BC+2/LwQ85kYQq0bzCrDMGPO4W5pza8IpWGuxJwUR+OHGo72mhRMn/VWme7R0bVHt37ZB0Ocd2MHqeV7PrTeOc1fur/92pN9zeB2v6+dJ/vecw7hzfM+g8ndi31Y0qpPOX4Z1YFR3v73slYoarQz74B4oILhxH8f00A+vUio5BVsX1tt6SikvHgaOE5FVwHH2Y5ehH8AI4HzgGC9LKD0iIotFZBEwGrg+1hl27wIciU7NvPcePL6391ZQZyO7Ng24j8MdJ/YADrXudmiSE/SxD5zSh6//dqTftd8DTWoYag+iuplpDO0Y3IRXLRtkMf+fY+kSRE9MpaJFB2r5EG5vjPTUFNY8eCKd76gRKwIopWqRlBrae2X+XcfFOwtK1XjGmN2Ax2BZY8wW4ET775/xcT/NGHN+TDPohfPkUG9fPpRzX5rtkj6gXUMWbMoPeB5vsx87HNOjBbDYZ/rt43owwq0rcWWl79aXdLcxuKG0PGempXqt7IZS5vW2rwkyF9rTWSUibRmOwNQbvHeJSU0RXS5EKZV0aupSI41yMlzW2FRKKQfHUj/DOjZhxi2j+duYrlVpr186hIZ10rlvQm//JwmhktemYbbLYwMuyxsB+KkLV/VSbNuoDnBoDHEkQpnx2lGh7dTUd4v0orvHujzu0aoex/duwb9DXEWlQbbnjNNKRZtWhn3YX1Lusc0Aqx4YF9TxJWUVgHVX8ZrR/qetV0qpeFv/8HgmHnWoMuyvcNSkbgbZ6ancfmJw48CUUipRTbp4CJ9ePYKUFKFd4zoucyfUz0pnwT/Hcv7wXI/jrjz6ULz0VxfOSreK2j1a1iMnI5UPrnRdeshxbPN6mVXb/tS/Fcf5mGTK4fAOjfjqupFMPLKT3/2C0dGu2HZvaU3k9dgZVqXVvZI+5fqjaFHP6mJ91uB2VZVV9++L+lnpXDi8A/+wvyPSU1N44fxBITcUzbztGBb+a2zgHZWKgHaTDkLPVvVZttWa+T899dD9A3/dPf5+bFf+9u4C3p04zGXGwnOHtmdPYWnM8qqUUrGWmZbKsvtOiHc2lFIqYg2y012WNmpYJzqtkXeO78nGPUXUy0rn278fRYcmdchKT61aS9eXWbePoWWDLF66YBDfLt3GFW/Mc0l3Lnv2bu06eVaPlvVYvq0g5LyO7tGcL68dWdXK3LGZVTlu39hqfb5tXA/W7zpQtfrJyvvHkZ4q/Lp2N9NW7PToug1wz4Q+IefDXY4uu6eqQcK9y0SkMfAekAusB840xuz1st96oACoAMqNMYOqL5eBTRjQhgkD2nhsf/CUvnHIjVJKhUbHdimlapKpNxzFpr3FXPy/3/zud97QDvzzM//LudfPci0+O8dLxzq8lzm12DpaXP3xFnOP792S9Q+PJ/e2rwIeD/DZNSOo8NfH2o8+bTxnpXacybkVHA6tHfzMuQNZs7NQ14pXSS0Ru0nfBnxvjOkKfG8/9mW0MWZALCrCr11yaHk7X2XCFvZsfA+cEvndL6WUUkopFRtdmtdjdBDL9aSmCP85q79H2e6ty4ZW/f3eFcO9Vl7XPngib18+1DPBift6ucEsafe/iwfToYnVSpuR6rvonpmWSp2MyCumwd4LzclMo1/bhhFfT6l4SsTK8ATgNfvv14A/xyMTR3drVvV3i/rWOA73ni11M9NY//B4zhvqe3F0pZRSSimVPE45rK3fsl3PVvXJSjs0BG6IvXRQSop4VHYDOXtIe+DQ+r3ZTkPrHEZ3b8531x/NrNvHuAy9ixVdQ17VJonYr6GFMWYrgDFmq4j4uo1ngCkiYoAXjDEvxipD1x/XjXkb9jKsU2PAmrRg3gaPnttKKaWUUqoWuOLoTpRXVnJcrxZhr4u7/uHxVX//32n9uPaYrjTwMWY5Iy2Flg18rw+slApPXCrDIjIVaOkl6R8hnGaEMWaLXVn+TkSWG2Ome7nWRGAiQPv27cPKb7+2DVl09/FVj9+dOIyyisqwzqWUUolkcG4jdhYcjHc2lFIqqWSlp3Lj2O5RPV+4lepo0ykjVG0Sl8qwMeZYX2kisl1EWtmtwq2AHT7OscX+vUNEPgGGAB6VYbvF+EWAQYMGRaXnR3pqisus0gD/d1pfOjVLjCCmlFLB+uDKI+KdBaWUqjYTBrTmmB6Bxw77ckTnJlHMTWLSbtKqNknEbtKfAxcCD9u/P3PfQURygBRjTIH991jg3mrNpZuzBofX6qyUUkopparHf88+LKzj0uyJrupkxH7MrlKq+iRiZfhh4H0RuRTYCJwBICKtgZeNMScCLYBP7EkK0oC3jTHfxCm/SimllFKqBhvSsTE3HNeN84bW/MYP7SatapOEqwwbY3YDY7xs3wKcaP+9FuhfzVlTSimllFK1kIhw3Ziu8c6GUirKEnFpJaWUUkoppVQc1M+2ZrTuonPhqFpAK8N+nNi3JSO61PyJEpRSyt0tJ/QAoEG292U+lFJKhScrPYU7x/eMdzZ86tysLm9eOpQHTukT76woFXMJ1006kTx73uHxzoJSSsXFmYPaceagdvHOhlJK1TjL7xsX7ywENLJr03hnQalqoS3DSimllFJKKaVqHa0MK6WUUkoppZSqdbQyrJRSSimllFKq1tHKsFJKKaWUUkqpWkcrw0oppZRSSimlah2tDCullFJKKaWUqnW0MqyUUkoppZRSqtbRyrBSSimllFJKqVpHK8NKKaWUUkoppWodrQwrpZRSSimllKp1xBgT7zxUGxHZCWwI4ZCmwK4YZac6JHP+kznvoPmPt1Dz38EY0yxWmaluGuuSSjLnHTT/8aaxTmNdMknm/Cdz3qH25T/oWFerKsOhEpG5xphB8c5HuJI5/8mcd9D8x1uy57+6Jfvrlcz5T+a8g+Y/3pI9/9Ut2V8vzX/8JHPeQfPvj3aTVkoppZRSSilV62hlWCmllFJKKaVUraOVYf9ejHcGIpTM+U/mvIPmP96SPf/VLdlfr2TOfzLnHTT/8Zbs+a9uyf56af7jJ5nzDpp/n3TMsFJKKaWUUkqpWkdbhpVSSimllFJK1TpaGQZE5AQRWSEiq0XkNi/pIiJP2umLRGRgPPLpTRB5P8/O8yIRmSki/eORT18C5d9pv8EiUiEip1dn/gIJJv8iMkpEFojIUhH5qbrz6EsQ750GIvKFiCy0835xPPLpi4i8KiI7RGSJj/SE/dzGi8a6+NFYF1/JHO801oVOY138aKyLL411YTDG1OofIBVYA3QCMoCFQC+3fU4EvgYEGAbMjne+Q8j7EUAj++9xiZL3YPPvtN8PwGTg9HjnO8TXvyHwB9Deftw83vkOIe93AP9n/90M2ANkxDvvTvk7ChgILPGRnpCf2wT/nyfka6axLvHzn6ixLoT8J2y801gXk/93Qr5mGusSP/8a62Ka/7jEOm0ZhiHAamPMWmNMKfAuMMFtnwnA68YyC2goIq2qO6NeBMy7MWamMWav/XAW0Laa8+hPMK89wLXAR8CO6sxcEILJ/7nAx8aYjQDGmER5DsHk3QD1RESAulgBs7x6s+mbMWY6Vp58SdTPbbxorIsfjXXxldTxTmNdyDTWxY/GuvjSWBcGrQxDG2CT0+M8e1uo+8RDqPm6FOuOSqIImH8RaQOcAjxfjfkKVjCvfzegkYhME5F5InJBteXOv2Dy/jTQE9gCLAb+ZoyprJ7sRUWifm7jRWNd/Gisi6+aHu8S9XMbLxrr4kdjXXxprAtDWqQnqAHEyzb3KbaD2Scegs6XiIzGCpojY5qj0AST/yeAW40xFdZNrIQSTP7TgMOBMUA28KuIzDLGrIx15gIIJu/HAwuAY4DOwHciMsMYsz/GeYuWRP3cxovGuvjRWBdfNT3eJernNl401sWPxrr40lgXBq0MW3cV2jk9bot1tyTUfeIhqHyJSD/gZWCcMWZ3NeUtGMHkfxDwrh0wmwIniki5MebTasmhf8G+d3YZYw4AB0RkOtAfiHfQDCbvFwMPG2ugxmoRWQf0AOZUTxYjlqif23jRWBc/Guviq6bHu0T93MaLxrr40VgXXxrrwhGNgcfJ/IN1Q2At0JFDg817u+0zHtcB23Pine8Q8t4eWA0cEe/8hpN/t/0nkVgTLQTz+vcEvrf3rQMsAfokSd6fA+62/24BbAaaxjvvbnnMxfdECwn5uU3w/3lCvmYa6xI//4ka60LIf0LHO411Uf9/J+RrprEu8fOvsS7mz6HaY12tbxk2xpSLyDXAt1izsL1qjFkqIlfa6c9jzXZ3IlbwKcK6qxJ3Qeb9n0AT4Fn7Lly5MWZQvPLsLMj8J6xg8m+MWSYi3wCLgErgZWOM1ynjq1OQr/19wCQRWYwVeG41xuyKW6bdiMg7wCigqYjkAf8C0iGxP7fxorEufjTWxVeyxzuNdaHRWBc/GuviS2NdmNe1a9pKKaWUUkoppVStobNJK6WUUkoppZSqdbQyrJRSSimllFKq1tHKsFJKKaWUUkqpWkcrw0oppZRSSimlah2tDCullFJKKaWUqnW0MqyUUkoppZRSqtbRyrBSSimllFJKqVpHK8OqVhGRwSKySESyRCRHRJaKSJ9450sppaJJY51SqjbQWKciJcaYeOdBqWolIvcDWUA2kGeMeSjOWVJKqajTWKeUqg001qlIaGVY1ToikgH8BpQARxhjKuKcJaWUijqNdUqp2kBjnYqEdpNWtVFjoC5QD+tOolJK1UQa65RStYHGOhU2bRlWtY6IfA68C3QEWhljrolzlpRSKuo01imlagONdSoSafHOgFLVSUQuAMqNMW+LSCowU0SOMcb8EO+8KaVUtGisU0rVBhrrVKS0ZVgppZRSSimlVK2jY4aVUkoppZRSStU6WhlWSimllFJKKVXraGVYKaWUUkoppVSto5VhpZRSSimllFK1jlaGlVJKKaWUUkrVOloZBkRkkojcH+S+00TksljnSSmlqouI3C0ib8Y7H0opFSsikisiRkR0WVGlVBWtDNdCIjJKRCpFpFBECkRkhYhc7LbPBBFZICL7RWSXiHwvIrlxyrJXIpIpIq/aedwmIjf42beViHwuIlvsL8Nct/QzRWSmiBSJyDQvxxsROWC/ZoUi8nII+VwvIsX2cdvsmy91Q3muPs4b8CaOXckps6+dbz/H4XbaRSJS4fScHD+tnfJ9rNv5LhKRn308N8fP0yE8h+vt12Sf/b/M9LPvi/Z7tVJELnJLO9tO2yciO0TkNRGp7+UcXUWkRCt+NZPb53SziDxurzvpSO8tIlNEZK/9eZgnIifGM8/eRPFz0UdEvrVjuMc6iiLypohstWPoylBu9Nrxp9R+rfeIyHci0iOkJ+r9vC4xxsc+Pr/D5FCFxz2uneWU7/vdzudSSXJ7bo6fhSE8hzEistz+PvlRRDr42fcaEZkrIgdFZJJbWi87ba/9M1VEejmlO8d3x0+nYPNZ03n7DqsJAn32RCRDRB4TkTx7n3Ui8p945tkbERlgx+Ai+/cAP/sGKqP5jIN2etAx1e24gOXlcNkxp0uAfZzLWNtF5H9ilx/Fapwrcfv8f+GU7zwv56tq0HN7bs4/w4PMf2MR+USs79wNInKun30DfRe556FCRJ6y085zSyuyX7vDg8lnMLQynCAkincqxRLof7vFGFMXqA9cD7wkIt3t47sArwM3Ag2AjsCzQGU15zGQu4GuQAdgNHCLiJzgY99K4BvgNB/pe4AngIf9XK+/Maau/RNq74CT7Nd7AHAYcHuIx0fiPfvazYCfgY9FROy0X52ek+NnS4jnP8nt+GuCOUhEjgduA8YAuUAn4B4/hywErgJ+95L2CzDCGNPAPk8a4O1GwTPAb8HkT0UumnEthPP1t9/vRwNnAZc4pX0BfAe0AJoD1wH745BHf8dH83NRBrwPXOrj2IeAXGNMfeBk4P4QCxiP2K91G2Az8EoIx0bK+TvsVqzvsF5O6Q3d4tJ7IZ7/Ebfj+wdzkIg0BT4G7gIaA3MBf9feghWrXvWRdrp9nqbA58C7bvu855bPtcHkU0VPnOKcv8/e7cAgYAhQD6t8ND8OefR3fAbwGfAm0Ah4DfjM3u5NoDKazzgYRkx157O8XE0c5ceBwGDgTqe0a9w+/yeFeO4tXsqAvwZ57DNAKdb36XnAcyLS28e+fr+LnK9vn68Y+MBOe8st/SpgLd6/88JSKyvDInKYiPxu3+V5D8hySmskIl+KyE6x7sR+KSJt/ZzrEhFZZu/7rTjdARaR/4rIJrHuus8TkSOd0u4WkQ/FujO/H7jIvmNzn4j8Yudtiv3F6jhmmFh3xvJFZKGIjHJKmyYiD4jIL0AR1oc9IGOZjBVo+tmbBwDrjDHf2+kFxpiPjDEb7WulisgdIrLGzuc8EWlnpx0hIr+JdfftNxE5wl8eRaSHWHc194h1x+3MYPJtuwC4zxiz1xizDHgJuMjH89xujHkWHxUhY8xUY8z7WIWPmDHGbAO+xXqNARCRk0Vkqf1/nSYiPZ3Setrb8u19Tra3T8QKPreI093AANcuw/rCaQk0ie4zC8uFwCvGmKXGmL3Affj4/wEYY54xxnwPlHhJ22SM2eW0qQJwueMqImcD+cD3kWc9OYnIrWK1mDrucI/xsZ+/WHOxHfMKRGStiFzhlDZKrNaIW0VkG/A/O9a9LyKv28csFZFBTse0FpGP7Ji7TkSuc0rziJPBPldjzGqsmyQD7HM1xbqx95IxptT++cUY49zTwblHzBqxb67ZefzcjlOrReRyf3kUkQYi8opYra6bReR+cWqhDiCan4sVxphXgKU+jl1qjDnoeGj/dA4yn87nKcYq6AxwbPMVu+y0Bvb7YadYLQp3ikiKHfueB4bbcS0/iGsbY8ynwF6gV4Ddq8OpwFJjzAfGmBKsm7b9xUeruTHmYzv/u72k5Rtj1htjDCB4iWvKOxF5A2gPfGG/l27xso/Pz6mIdBaRH0Rkt1itWW+JSEOnY9fbcW4RcEBEuojVWnWhiGy0j/mH0/4pInKbHVd22zGxsZ3m6JlwqYhsBH4I9nl6++xhVZg+McZssT8f640xrzvlpZ2IfGx//naL3ZvLzuOd9mdyh/0ZbeAvj+KnDBzAKKyb1k8YYw4aY57Eeo8f4+N5+i2j+YuDhBhTffFWXharh+ITYvU63GL/XdXqLCKX298Ze+zvEEfPu+n2LgvFqedKgOtvBr4G+oSa92gTkRysxqW7jDGF9vfo58D53vYP9F3k5nRgBzDDR/qFwOt2XIyKWlcZFuuu06fAG1h3Wz/AtbUwBfgfVmtje6y7E167fYrIn4E7sL78mmH9495x2uU3rADVGHgb+EBEspzSJwAfAg2Bt+xt5wIXY7VaZAA32ddqA3yFdQe5sb39IxFp5nS+84GJWHcCNwR4KRzPIcUupDQFVtubfwd6iMh/RGS0eHbpvQE4BzgR607ZJUCRHdi/Ap7Eqmw9DnwlIs4VL+c87sRqpXnbfr7nAM+KfWdJRM61v2i85bsR0BrrbqDDQsDXXalomC5WN5uPJcwu42LdWBmH/VqLSDes98zfsd5Dk7G+vDNEJB2rJWsK1utzLfCWiHQ3xryI9Z5xtF4EvBtoB+iLgDy3imNMiEh7uyDc3scuvfH8/7Vwe7+Ecr2RIrIPKMD6TD/hlFYfuBert0OtJNad7GuAwcaYesDxwHov+wWKNTuAP2F99i8G/iMiA51O0dI+rgPWZx2sVsd3sWLd59gxVazeIV9g/e/bYN25/7tYd/IdvMXJYJ5vD+BIDsW13fbfb4rIn0Wkhdv+Q7B6xNxsX+soDr0+7wB5WDHndOBBcb2R4J7H14ByrIrLYcBYwNE1rVo/F4GIyLMiUgQsB7ZixaBQz5GDFb8dcc1n7LIPeQqr11EnrBb8C4CL7ZuaV3Kox0rDIK6dIiKnYL32i0PNezhEZJH47hLo8v8zxhwA1hDBd5NYNwVKsF63B92ST7IL2ktF5K/hXqOmMcacD2zkUM+lR7zs5vNzilUxewjrM98TaId1Y8PZOcB4rPdeub1tJNAdK5b9Uw7d3L4O+DPW+7011s2bZ9zOd7R9reMJkvtnzzYLuEFErhKRviJVPcEQq7L/JVYZMRcr7jp6G1xk/4zG+mzWxbP8W5XHQGVgsRqTbvOR9d7AIrcKzSJiU4aLSkz1UV7+BzAMq6zfH6s1/k57/2Ow3kNnAq2wXvN3AYwxR9nH9zdB9lwRq9HpRKLcyu/nereJyJc+krsBFcaYlU7bolUG91nZtW+2HIX1XR09xpha9WO/iFsAcdo2E7jfx/4DgL1Oj6cBl9l/fw1c6pSWgtXi2cHHufZivfHBCqrT3dKnAXc6Pb4K+Mb++1bgDbf9vwUudDr23iBfg1FY3YbzgYNYd5v/7rbPMKy7jTuxvoQnAXXttBXABC/nPR+Y47btV+Aib3nE6sI4w23/F4B/BfEc2mG1YmQ5bTsOWB/guDT7uFwf6ZcB03y8bzKwvvSeBpYAaUG+3uuBQqxKmsFqmWxop90FvO/2Htps/4+OBLYBKU7p7wB3239P8vW+ddr/bqxuLPlYlZgfgMPttIuwvsDznX7WeMm3c3oR8HOAfS4P8nVZA5zg9Djd3//Gab+fHe8pH+lt7OfdzWnbf4FbnV6TN4PJY036wSrw7QCOBdK9vE/etP/2G2u8nPdT4G/236Ps91uW27mnOj3uBRTbfw8FNrqd73bgf07HTvf3vNyONVjdng/Yf78DZDqlt8X6/K7BioHTga522gvAf7ycsx1WjKzntO0hYJK3PGJ18ToIZDttOwf4McjnEPXPhf2/N36OTcUqxN/p/t7wc8wkrO+GfPu1XAf0s9N8xi77WgeBXk5pV2DHXay49HOAa4/i0HfYHmABcLadlmu/XvluPz295Nvxs98+Js3PPq8F+bq8Ajzstu0XX/8bp33ud7ynfKTnYJUJxrt9llrbr+kRWDczzgn281LTf7C+n451eux4b6SF+jnFqsjOdzv3JV7O3dZp2xyn9+UyYIxTWiusrqNpTsd2CvJ5Ob8/XT57dnoqcLX9vjuIVea90E4bjlWu8yi/YJVNrnJ63N1fHgmxDOx2rbuAd922vYVdvvFznNcymlO6RxwkzJhq7zsKP+Vl+9wnOj0+HrscihULHnFKq2u/nrn2YwN0CeI97ChjbcAasphtp02zX+98p5/7vOTb+aecQ3UYX/vkBPG6HAlsc9t2ub//jb1PoO+i9vZr3NHP+8bvNcL5qXUtw1hfHJuN/araqlpRRaSOiLxgdxPZj1VYaijeu7h1AP5r3+XPx/pSFqzCOCJyo919ZJ+d3gDrjpLDJi/n3Ob0dxHWh8dxrTMc17LPNxIroPo7ny9bjHXXvT5WS65L1xRjzCxjzJnGmGZYb/qjsO6AgVU4XOPlnK3xbJHegP16eMljB2Co23M6D6tlKZBC+7fzJEn1sSqcUWeMmW6sbpX5wN+wulv29H+Uiz8bqzVuFNCDQ+8Dl9fMGFOJ9Rq1sdM22dsc3F/PKuI6ycDXTknvG2MaGmOaG2OOMcbMc0qbZac5fty7SP7ZOR2rMObtuTmf46VAL4atEM//H0T4PzRWV6JvsO/AijUpx7HAfyI5b7IzVrfhv2NVSHaIyLuOLltu/MYaERknIrPs1qh8rDvVznFtp7G6hzpzj2tZYo056wC0drvWHVgFVYdQ4hpY46rqYt1sG4pViQDAGJNnjLnGfp93wKo0O+4w+4tre4wxzu/LQHEtHdjq9JxewGohDUZMPhf+GGMqjNXNrS0QSuvio3ZcyMXqReVo+fUXu5pi3Vjc4CXNg92SXjV5ilPSFjveNDbGDDDGuI+lbeoWl5a559sprvXD06Nux1/o74Vw4v7/gyh8Nxmrhfl54HURaW5v+8NYXWErjDEzsW76nR7JdWoRv59TEWlux8jNdlnwTVzjHIRehvvE6VrLsAr94cY6X589x+f5GWPMCKwb+A8Ar9qt1O2ADcaYco8zepbhNnDoxoG3PPotAwcQk89JkNcKNab6Ky97e81ae0szxhRi9VDyFeu+dop15zklOcpYHYwxVxmra7zDdW5x6i73fLvFOvfJCT32sWNNILH6/12AdTN0nZ/01yK8hofaWBneCrRx7jaCdSfC4UasoDLUWJOKOLoyOO/vsAm4wu1NlG2MmSnW+OBbsbpHNLLfhPvczmM8T+nTJqzWGudr5RhjnCcTCOV81gHWeLFbgb52lxdv+/yGNSGIY5zCJryPK9uCFRydtcdq6fSWx03AT27Pqa4xJmBhzFjjPrZidUtx6E9w4xGiweD9PeH/IGN+wrqr+6i9yeU1s9+X7bBesy1AO3GdaMz59XT5fxvXSQbGhZq3OFiK5/9vuzHGY+xcGNI49B4dhVVg2CjWONabgNNEJGqTLyQLY8zbxpiRWO85A/yfl918xhq7q/1HWO/fFnZcm0xkcW2d27XqGWOcZ3gOJ64ZY40v+xX4p499NmF1UwwmrjUWkXpO2wLFtYO4VsbqG2OC7T4Wy89FIM6fm6AZaz6Jv2EVjLPxH7t2YbWOdPCSBp5xbaNxnTwl0bn8/+xurJ2JzndTClAH35WNsL6XajB/sSPQ5/Qh+/h+dlnwL3i+tqHGunFusS7LvnkbzvmsAzw/e+7pxcaYZzg0pn4T0F68T4DlXoZrj9WSuN1HHn2WgYPI+lKgn1tZvB+xKcNFJab6KC97e822eEuzY0ETXL87nM8/zinWBT0kKE5WAmki0tVpWzTK4D4ruyIyAusGw4cRXsNDbawM/4r14b5ORNJE5FSsPv4O9bDusuWLNQb2X37O9Txwuxwa49pARM5wOk85dncUEfknnndRQvEm1tig48WawCpLrMlqfE7uFSxjTCnwGHahUayxl5c77j6LNfbuZKxxKAAvA/eJtUyNiEg/e+zFZKCbWGN908SaEKAX1vgUb7609z9fRNLtn8HiNIFUAK8Dd4o16VkPrC4ak3ztLNZ4bcfEBpniNH7b8ZpiFQZT7Nc33U7rLdYSAKlijZ9+DCuYLbPTR4mXqeL9eAI4zm6xfB8YL9ZSHOlYN2MOYnXdn43VcnWL/dqMAk7i0Pie7QQ5UVqCeh24VKzlQxphddGc5GtnscZRZ2EVSNLt/1GKnXae3YIkYo0peYBDE2W9iFUYHWD/PI81JjbocVk1gYh0F5Fj7AptCVacq/Cyq79Yk4H1GdoJlIvIOKxxduGaA+wXayKabPt6fURkcATndPYwMFFEWtpx4h6xJrpJEWtCrUs4FNdeAS62P4spItJGRHrYleaZwEP2a9EPa0ZMr4UVY8xWrLGyj4lIfftcnUXk6CDzHM3PhdhpGfbjLPv/72j5OltE6tqv+/FY3UR/cDq3EafJ0/wxxnyHVfibiJ/YZYypwIp7D4hIPfvzegPW+w6suNZWfM8qm+g+AfqIyGn2a/9PrLGRy73tbH9XZmF1bXV83hxLPB0n1oSfqWLNe/A4VqXG8d0zwX5fi1hj3q/DmqFXWXx+RwbxOa2H3T1VrHkUbo4wL89jvec7AIhIMxGZEOE5AY/PHiLydztmZ9vvrwuxns98rJi7FXhYRHLs99sI+1TvANeLSEe7rPMg1mzl3lqRHc/JVxk4kGlY3z/XiTUJlWMVCq+Th4mfMpqd7jMOEiCmirVUVdVjf9zLy1iv2Z32/7Opvd0Ry97G+k4ZYMfdB4HZxpj1dnrSluHs1uOPgXvt99EIrLkz3vC2v7/vIqd9jsC60feBj8teCHxkXHtpRYeJcr/rZPjBmnJ+PlZz/nv2z/12WmusD2kh1p2PK3AdSzQNu7+9/fh8rEk79mPdJXvV3p6KVbjajxV4bsFp/Apexi16OfdFuI7PHAr8hNUVZSdWgb69j2O/Bu7w8fxHYU2i5LytDtYd+5OwWkq+wPqgFtr5/j/ssWT2c7sTa5xKAdZEYW3ttJHAPKxW8HnASF/Pz97W3X4eO7G6j/wADLDTzsOaldPX/zETazmK/XZeb3BLLwSOdHps3H/cXmv39El22jFY46QPYI25/BR7nKHTe2Cmn3xW/d+dtj2H9aEGOAX4w37NfgJ6O+3X2962z97nFKe0rlhj5fKBT31c+258jI+1n3OF/To5/wz2k++L8BwzXOx2/Cd2Wnv7cXs/r80N9v9uP9bEdc7jO13ew/b7x/1/NMpOewBrgqMD9u8XgSahviY1+QfrrvscrM/sHqybUa29vSb4jzVX2/+zfKwvvnc5FD9H4Rlb3M+di2tMbY1VoNiGVdCfhY84idWF+ms/z9HgNgbLfh89htVd+jUOjcHaZl+3jdO+p2BN4lKANUHK8fb2tvbrtQerK/WV/t5PWENinrPfi/uwvm8cYwer83OR6yVtvZ3WzP4f59vXWYzTeH/7ORfg+3M0Cbc5C7C6pm/Gis3+YlcjrALjTqzvzX9ijy/GKix9Zb/Wu3xcexRu7zMv7y/3uHaDn3w7jnEeM1zqdvwup/2XAuf5+f8dizUhWbH9/8n19R623z/u/6O77bQz7PMU2q/VZFzHhr6D9b1ZaO93XbzjTCL9YBXON9rv8Zu8/J/9fU57Y5VhCrG+Z290fs/hZzyy22fTMT4zBetzvQLrc7UGeNDH+89vjPDxHnb+7F3BoXJYPlbc/5PTvu2xyjG7scp9Tzrl8Z9Yn8md2Mse+Xp+9navZWA7zWc51E4/zM5nMdbErYc5pbmU//BTRnN6rb3GQTvdX0z9Hh9znRC4vJyF1XV6q/3zJK5zZlxp/68d37lt3dK22v+jM31cfz1u5TC351yCa5ya5yvfXt6To7DGDLvHytPs9EDft43t99EBrM/ZuW7vsar3MH6+i5yOeQG3+Uqc0rLs12mMr/xE8iP2RZRSYRKRl4EPjDHfxjsvSikVDSLyF6wbc9W5JrpSSlUbuwfKQqybTGXxzo+KD60MK6WUUkoppZSqdWrjmGGllFJKKaWUUrWcVoaVUkoppZRSStU6WhlWSimllFJKKVXraGVYKaWUUkoppVSt423R7RqradOmJjc3N97ZUEolmHnz5u0yxjSLdz6iRWOdUsobjXVKqdoglFhXqyrDubm5zJ07N97ZUEolGBHZEO88RJPGOqWUNxrrlFK1QSixTrtJK6WUUkoppZSqdbQyrJRSSimllFKq1tHKsFJKKaWUUkqpWqdWjRn2pqysjLy8PEpKSuKdlRopKyuLtm3bkp6eHu+sKFWraayLLY11SiUGjXWxpbFO1TS1vjKcl5dHvXr1yM3NRUTinZ0axRjD7t27ycvLo2PHjvHOjlK1msa62NFYp1Ti0FgXOxrrVE1U67tJl5SU0KRJEw2YMSAiNGnSRO/OKpUANNbFjsY6pRKHxrrY0VinaqJaXxkGNGDGkL62SiUO/TzGjr62SiUO/TzGjr62qqbRynCCufvuu3n00UfDTldKqWQyatQoXSdUKVVj5Ofn8+yzzwKwfv16+vTpE+ccKaX80cpwLVVeXh7xOSoqKqKQE5XIKitNvLOgVFAijWkaz5SzykqDMRr/VOicK8PRYoyhsrIyonNEo9ynah6NdVoZTggPPPAA3bt359hjj2XFihUAvPTSSwwePJj+/ftz2mmnUVRU5HHcmjVrOOGEEzj88MM58sgjWb58OQBffPEFQ4cO5bDDDuPYY49l+/btgNWqPHHiRMaOHcsFF1zA3XffzSWXXMKoUaPo1KkTTz75ZNW533zzTYYMGcKAAQO44oorqgqKdevW5Z///CdDhw7l119/jfVLo+Lo51W76HTHZBZuyo93VlQNceDAAcaPH0///v3p06cP7733nkv6lClTGD58OAMHDuSMM86gsLAQgHvvvZfBgwfTp08fJk6cWPXFPWrUKO644w6OPvpo/vvf/zJq1ChuvfVWhgwZQrdu3ZgxYwZgVXRvvvlmBg8eTL9+/XjhhRcAmDZtGqNHj+bcc8+lb9++1fhKqERWeLCcTndM5tlpa+KdFZWEbrvtNtasWcOAAQO4+eabq7b7ikOFhYWMGTOGgQMH0rdvXz777DPAalXu2bMnV111FQMHDmTGjBn07NmTyy+/nN69ezN27FiKi4sB3+XBiy66iBtuuIHRo0dz6623VvMroZJBpzsmc8uHi+KdjbjSynCczZs3j3fffZf58+fz8ccf89tvvwFw6qmn8ttvv7Fw4UJ69uzJK6+84nHsxIkTeeqpp5g3bx6PPvooV111FQAjR45k1qxZzJ8/n7PPPptHHnnE5XqfffYZb7/9NgDLly/n22+/Zc6cOdxzzz2UlZWxbNky3nvvPX755RcWLFhAamoqb731FmAVZvv06cPs2bMZOXJkrF8eFUfTVuwAYM66PSEf+8XCLeTe9hW7Cg9GO1sqiX3zzTe0bt2ahQsXsmTJEk444YSqtF27dnH//fczdepUfv/9dwYNGsTjjz8OwDXXXMNvv/3GkiVLKC4u5ssvv6w6Lj8/n59++okbb7wRsFo/5syZwxNPPME999wDwCuvvEKDBg347bff+O2333jppZdYt24dAHPmzOGBBx7gjz/+qK6XQSW4vQdKAXhnzsY450Qlo4cffpjOnTuzYMEC/v3vf1dt9xWHsrKy+OSTT/j999/58ccfufHGG6tu+K1YsYILLriA+fPn06FDB1atWsXVV1/N0qVLadiwIR999BHguzwIsHLlSqZOncpjjz1WvS+EShofzMuL6/VnrtlFQUlZ3K5f65dWcnbPF0v5Y8v+qJ6zV+v6/Ouk3j7TZ8yYwSmnnEKdOnUAOPnkkwFYsmQJd955J/n5+RQWFnL88ce7HFdYWMjMmTM544wzqrYdPGhVPPLy8jjrrLPYunUrpaWlLtPfn3zyyWRnZ1c9Hj9+PJmZmWRmZtK8eXO2b9/O999/z7x58xg8eDAAxcXFNG/eHIDU1FROO+20SF4SlaA27i5i0eZ8/tSvdcTnemPWBgBW7yikad3MiM+noisesQ6gb9++3HTTTdx666386U9/4sgjj6xKmzVrFn/88QcjRowAoLS0lOHDhwPw448/8sgjj1BUVMSePXvo3bs3J510EgBnnXWWyzVOPfVUAA4//HDWr18PWC3OixYt4sMPPwRg3759rFq1ioyMDIYMGaJLhChVQ8Ur1nnjKw61bduWO+64g+nTp5OSksLmzZurevR16NCBYcOGVZ2jY8eODBgwADgU4/yVBwHOOOMMUlNTw3mqSsXcngOlnPvSbI7u1ozXLhkSlzxoZTgBeJuZ76KLLuLTTz+lf//+TJo0iWnTprmkV1ZW0rBhQxYsWOBx7LXXXssNN9zAySefzLRp07j77rur0nJyclz2zcw8VFFJTU2lvLwcYwwXXnghDz30kMe5s7KyNKgmgdU7CsjbW8yo7s2DPmb8kzMoOFgelcpwtCzYlE/HJjk0qJPusn134UGOePgH3pk4jIHtG8UpdypU3bp1Y968eUyePJnbb7+dsWPHVqUZYzjuuON45513XI4pKSnhqquuYu7cubRr1467777bZVkPXzHNEc8c537qqac8bipOmzbN43il3FVWGp7+cTXnD+tAo5yMeGdHJSlfcWjSpEns3LmTefPmkZ6eTm5ublWMC1RmKy4u9lse9HYOdcjeA6Ucdt93vHXZUEZ0aRrv7NRKJWXWMMyV2wvilgetDDsJ505fpI466iguuugibrvtNsrLy/niiy+44oorKCgooFWrVpSVlfHWW2/Rpk0bl+Pq169Px44d+eCDDzjjjDMwxrBo0SL69+/Pvn37qvZ/7bXXQs7TmDFjmDBhAtdffz3Nmzdnz549FBQU0KFDh6g8ZxV7xz4+HYD1D48P+piCg4k3ucafn/mFPm3q8+W1R7psn7V2DwfLK3lp+lqe+8vhccpd8opHrAPYsmULjRs35i9/+Qt169Zl0qRJVWnDhg3j6quvZvXq1XTp0oWioiLy8vKqeqU0bdqUwsJCPvzwQ04//fSQrnv88cfz3HPPccwxx5Cens7KlSs9YqpSvvy8ehePf7eSFdsKeOa8gfHOjgpBPGJdvXr1KCjwLNj7ikP79u2jefPmpKen8+OPP7Jhw4aQruevPKj8W7R5HwDP/7RGK8MJ4OYPFjK8cxNOHdi2Wq+rleE4GzhwIGeddRYDBgygQ4cOVd0G77vvPoYOHUqHDh3o27ev18D61ltv8de//pX777+fsrIyzj77bPr378/dd9/NGWecQZs2bRg2bFjV2Lhg9erVi/vvv5+xY8dSWVlJeno6zzzzjFaGa5nd9ri5eFuy2bOLm6MzRS2fADHpLF68mJtvvpmUlBTS09N57rnnuOmmmwBo1qwZkyZN4pxzzqnq4nf//ffTrVs3Lr/8cvr27Utubm7V8I1QXHbZZaxfv56BAwdijKFZs2Z8+umn0XxqqgZyxJdyexbfotLEu2GoEk+TJk0YMWIEffr0oWfPnlXbfcWh8847j5NOOolBgwYxYMAAevToEfI1fZUHlUoWxlhjlz+Yl1ftlWGpTdNpDxo0yLivZ7ls2TKXYKWiT1/j6pd721dAaC3D7sc4Hv/jxJ5cflSnkK5/5gu/MmfdHt65fBhtG2VTPzudBtnpgQ8MkCeHrxdv5a9v/c7xvVvwwvmDQj6vOxGZZ4yJ/EQJQmNdfOhrXDNs2lPEkY/8SJuG2fxy2zH8sHw7l0yay+juzfjfxfEZ0xYtGutUNNSU1/inlTu58NU5HNm1KW9cOjTe2YmLcMqL0bR1XzHDH/qBlvWz2La/JGp5CSXW6WzSSikP7zrNomqI7IbZkY/8yNj//BTycf5u1GnLsFJKKaVU4iourWD7/hK/+yRCOU4rw0opF6t3FHLbx4uD3r+sopLKSu/RzFFp3b7f/xJL+0vKAgZMtzMDRFhNV0qpxGaM4Z+fLWH+xr3xzopSNY7n9LUqmv7yymyGPvh9UPt6mUu42mhlWCnlorS80uWx+Pm6eG7aGrr+42sue32uz32CcexjP3kETH93C7VlWCkVri35xTzz4+qq3ifFpRVc+cY88vYWxTlnnkorKnn91w2c9cKseGclIiLyqojsEJElPtJHicg+EVlg//yzuvOoah8tQgRn4+4iTnn2F/YVh7YW8LwNwd/Ei2d5TivDSiUgYwzvzNlYNeV8LFRWGp8tui558fN18X/fLAfgh+U7vB8bZHDbUeC/5djdoeq5fpUppUJzxRvz+Pe3K1i76wAAU5dt55ul23jo6+VxzpmnGnTDbxJwQoB9ZhhjBtg/91ZDnpRSQXjyh1XM35jPt0u3Rf3c8WwRdtDKsFIxtGzrfqav3BnycVOX7eD2jxdXVTYBCkrKWLOzEIDZa3fzl5dnU15R6esUAR35yI8MuHdK0PvvOVDKYfdOYXHevoD7hhvbFuXlV/3trwzoWJu7BhUUlVLVxDErtMe8BD7iSULEmQQoMEbCGDMd2BPvfChVW81YtZPVO6yVad6ctYGL/jcnzjlKHFoZViqGxv13Bhe8OocTnpge0nEH7DV/9zgtb3TWC7MY85g1EdXf31vAz6t3hdyi6mxzfjH7S4JfKuSX1bvYW1TG89PXBNw33LLjFW/MC2o/R7kwEcqowYiki6CInCAiK0RktYjcVn25Vqp2SISWCQXAcBFZKCJfi0h8FkNXtUpt+uif/8ocjn3cKove+ekSpq3wbKgpr6hk2IPf89WirdWdvbjSynCc7d69mwEDBjBgwABatmxJmzZtqh6XlsZ2ndfly5czYMAADjvsMNasWcOTTz5Jz549Oe+880I+1xNPPEFRUeKNtwrV/35Zx4n/nVH1ONiuxIEs3+a5TvSW/GIemrzM5fzGGHYXHnR6bP2esnQbf2z1XG+3OiqDvsYMf7PEs7vMB3M3sXH3ofeBcyHz7s+XhnTd4GaTTpbqcHhdBEUkFXgGGAf0As4RkV4xzWmMaKxTicJX1PA1JCQRKssJkIVY+x3oYIzpDzwFfOprRxGZKCJzRWTuzp2h97yKNY11iWXl9gIG3vcdO0KapLN22ldcxrb9Jdz1mdf79jWWVobjrEmTJixYsIAFCxZw5ZVXcv3111c9zsjIoLw8+Ja7UH366adMmDCB+fPn07lzZ5599lkmT57MW2+9FfK5akrQvOeLP1wqnd3v+prRj02LybX+/t4CXpi+lgVOXYM/mJvH4fdPZZlTHopLK5gYZIupL6FOeuDMo4BoP3SvnBtjuPnDRZz63C9ezzNp5vrA1/JTty0pq6jq4uMgiVBKDUIEXQSHAKuNMWuNMaXAu8CEqGaummisU4nKccMvee6t1TzGmP3GmEL778lAuog09bHvi8aYQcaYQc2aNavWfAZDY11i+d8v69lzoJTvlm33SNOPvAJIi3cGlKeLLrqIxo0bM3/+fAYOHEi9evWoW7cuN910EwB9+vThyy+/JDc3lzfffJMnn3yS0tJShg4dyrPPPktqaqrL+ebNm8cNN9xAYWEhTZs2ZdKkScyfP58nnniC1NRUpk+fTvfu3Vm7di0nn3wyl1xyCRMnTuTaa69l8eLFlJeXc/fddzNhwgQqKiq49dZb+fbbbxERLr/8cowxbNmyhdGjR9O0aVN+/PHHeLxsUTdz9S7KKgwbdsfmy2C5XZl0LoBNX2Xd5V61wxobLAKVbiW0gpIytu4L7g7n8z+t4cflO5i9bg9fXjuSPm0ahJzP75ftYOJRnYPef1dhKZ3s8kmgwuWmPUW88vM6r2nuh97w/gImL97G0nuODzovSWa4iCwEtgA3GWOWAm2ATU775AFD45G5WNBYVzsYY1i76wCdm9WNd1YA11bW93/bxE67N45WhuNHRFoC240xRkSGYDXW7I5ztqJGY13tsOdAKXUyUslKTw28sw/7ispITxPqZMS+ijbo/qkxv0Yy0Mpwglq5ciVTp04lNTWVu+++2+s+y5Yt47333uOXX34hPT2dq666irfeeosLLrigap+ysjKuvfZaPvvsM5o1a8Z7773HP/7xD1599VWuvPJKl2D8zTff8OOPP9K0aVPuuOMOjjnmGF599VXy8/MZMmQIxx57LK+//jrr1q1j/vz5pKWlsWfPHho3bszjjz9edWxNce7Ls71uz9tbxKs/r+fO8T1JSQmvZbKi0lSN112/6wBT/tjGbSf0qEqvGhNrPLvoOSrKABOe/oUvrh1BqwbZ5N72FWcNasf/nd6vKv1hp9lRl28rCKsyPHtdcA2azgXJYF+Va96Zz8JN+QHPt37XAX5dY5WLSsoqamKh1dFFsFBETsTqItgV7y+l12cvIhOBiQDt27ePUTajT2NdzffKz+u4/6tlfHr1CAa0axjv7Lh8gG75aFHc8hGMmhLrROQdYBTQVETygH8B6QDGmOeB04G/ikg5UAycbZJoHEwwNNbFi58hV1E4+xu/rmdc31Y0rZvJwPu+Y0jHxrx/xfCwz9f/3im0rJ/FrDvGRCF3VgNKio9edLsKw593Jtr8rVwSa3GtDIvIq8CfgB3GmD5e0s8DbrUfFgJ/NcYstNPWAwVABVBujBkUjTyNGuW57cwz4aqroKgITjzRM/2ii6yfXbvg9NNd06ZNCy8fZ5xxhsedQHfff/898+bNY/DgwQAUFxfTvHlzl31WrFjBkiVLOO644wCoqKigVatWAa8/ZcoUPv/8cx599FEASkpK2LhxI1OnTuXKK68kLc166zRu3Djk55bsrntnPr9vzOek/q04rH0jn/ut8DJO2MG5tffGDxYCcM7g4CowqU5BbVfhQS7+32988/ejAHhv7iZaNMgK6jyhco+lK/08P4d9xf7HR/kr6zi/fqMenUaTnAwAKsOodCc6Y8x+p78ni8izdhfBPKCd065tsVqOvZ3jReBFgEGDBgX8VtFYZ9FYF3vz7Rtem/YUxawyXFJWwce/b+acIe1CGD7hul88C2O+OPKUJCNCfDLGnBMg/Wng6VhcW2OdpbbHOl/zn0Ri9Y4C7vpsKZMXb+OdicMAmBNkA4I/26I4vrnv3VPISDs0KjaYYXPRuA/1qo9ef+5i8X8JVbxbhidhBb/XfaSvA442xuwVkXFYBT3nLoKjjTG7YpvF+MjJyan6Oy0tjcrKQ0volJRYHxJjDBdeeCEPPfSQz/MYY+jduze//vprSNc3xvDRRx/RvXt3j+3JMk4zFl6buZ7fN+b7TJ+5ZheXvTaXX28fw/EhziDt3h0avBeAUt1ao3cVulY4n/x+VcBrlZYfej9VVBqcT+mtQFheUVnVQuFI/8ZtvTnj5e8r3/zdbz48VzaxNizbup+Tnv7ZJc3xvvtm6TZecxp/vPdAKaMencakiwf7vTmRyPx0EcwHuopIR2AzcDZwbtwyGgMa61Q0PDF1Fc//tIYG2emM7+daMSivqGT97iK6NHfvpu0agL5dup07PlnMX492HRaSCO2TiVBgVJHRWJe4wv2Ml5ZbB+4tiu3EaJFyLvP1vyfwkpp7i8KfZ8bhrdkbgtovEW5CxrUybIyZLiK5ftJnOj2chdUqElP+7vjVqeM/vWnT8O8Y+pObm8uXX34JwO+//866ddbdljFjxjBhwgSuv/56mjdvzp49eygoKKBDhw5Vx3bv3p2dO3fy66+/Mnz4cMrKyli5ciW9e/tfteD444/nqaee4qmnnkJEmD9/Pocddhhjx47l+eefZ9SoUS7daerVq0dBQUFSdqfZc6CUzLQUcjIDfxz+5TQjsuPj+9v6Pbw5awNPnDWAJ79fRVFpBUu3+F+L19vXTqXx7Mzzy+rdPPDVMpdt7t1dwunmcueni52ua3x2oXHo8o+vq/5euMn7c1vtNM45Ut7uijoq7Hd96jrL4ex1e9hXXMYpz87k/GEduO/PHp1M4i6CLoLlInIN8C2QCrxqjyWOmMY6S22KdTXZngNWHCw86FmI+/eUFbzw01qm3TSK3KY5HunO3p69katGeZ8jIR4VhkSoiCc7jXUWjXWu9hWX1bpZk+MlmBsu8bzhl0yzSV8KfO302ABTRGSePVauxjrttNPYs2cPAwYM4LnnnqNbt24A9OrVi/vvv5+xY8fSr18/jjvuOLZudV0bLCMjgw8//JBbb72V/v37M2DAAGbOnOntMi7uuusuysrK6NevH3369OGuu+4C4LLLLqN9+/b069eP/v378/bbbwMwceJExo0bx+jRo6P87GNv4H3f0ftf37J+14Gwjr/glTl8tmALRaUVVV141+70fq7S8koenLyMwoOes0k6d0txxIxdhQd5a/ZGl/1mr4t8TpEZqw51qDDGahEJ1ub8Yq/bT/jv9KrzxSKkBbOm8huzNnDLhwtjcPXIGGPOMca0MsakG2PaGmNeMcY8b1eEMcY8bYzpbYzpb4wZ5nwj0Bgz2RjTzRjT2RjzQPyeRexprIufj3/Pi/nakvGq181dvxfwduMwtEgVja6DG3cX8cVCryMdVC2isS72lm7Zx4/Ld/i8ofTk96uqJkit5Q3jMffBvLyA+9TaMcPBEpHRWJXhkU6bRxhjtohIc+A7EVluL1/ifmzSTCrja0KF7Oxspkzx3q3hrLPO4qyzzvJ73gEDBjB9umeXXffrrV+/3uWaL7zwgscxaWlpPP744zz++OMu26+99lquvfZav/lIRFucKnajHp0W1jmcx3StsVtH7/zU825jeUUlox+dxub8Yl6cvtbLeagqLRaVVvi83j1f/OH13JG48s1DSzeNf/JnP3tavlniWWh2/sLxNenWrLW7GdapSegZ9GH+pnzOGNTOZdv7c/N45PT+UbuGij6NdYnnhvetm0jj+42P+rmrs5wZi5bUaBaUxz85g4KD5ZzUv3X0TqoSlsa6+HGUZc4ebJUR3D/HFU4TkMxYtYui0vJqmcG5NnKeY2a/PaFXXbs35o798Z/EK+FbhkWkH/AyMMEYU9UkZozZYv/eAXyCtR6nh0Rfj07Fz2cLNnPEwz9EfB5H4StQV+OPf9/ss1UVXMcMl1eGVqJ75sc1Ie3vfK3Tnw98R9ldoLHAvpz94iyXx4s3u3a53u4IikE+/T0HSoPfWSlVY4XXxc5/7IjFZMYFXnoF7So8GPCGprZcKRWeeRv2BrXfsyGWoyL1wk9ryL3tq4gbM5z9vnEvubd9xartVuVzUV5+SMdXx1CQfndPcRm3POGZX2J+zUASujIsIu2Bj4HzjTErnbbniEg9x9/AWEA7/quglZZX8sPyHT7Tg+kyfeqzM6moNBy0JyZ48vtV7D7gexKF0gABz2kuDZfJDoKxdZ/vSrY3253uxC3K8z++WSmlIpEot6sizcePK3ZGJR/OSsoqGHT/VJ9jFxPltVMqWTkvR+nPwXLfPfJ8iaRr7xNTrclOA5UNQ/HyDKvX4XH/sXoNTHKabDSRVITY4BNrca0M25PK/Ap0F5E8EblURK4UkSvtXf4JNAGeFZEFIjLX3t4C+FlEFgJzgK+MMd9U+xNQSevqt3/nswW+x22d/HTgrsIAZU5B7Nlp/u8qBmo5rjSGhfZdvAU+1t71pcZNshLSzUltMlGqtvNXKPUdIQJM6BJGK8nMNbuqCqTBKLaHxHy9xHV2/l2FB8m97St+W28NOdEop1TN8cvqXRSXhV75DmTy4kNxZOPuomq9m/b9su3c62UYHyT+Tb14zyYdaN25y4DLvGxfC0RtUKBOKx87sehmFg3f/eF/wqj9JZ5d2SJ1xyeLA+6Ttze0Fl6H9+ZuCuu4miCUgmdtp7EudhI11vlSWl7JrLW7Oaqb9+FDJWUVfLFwC6cf3jbi90y833HV+Z8596XZAFx2ZKeIzvObPe9CsGt1Klca62InGWLd6h0FHtvc3w3r3HoAvjRjHX87tlvVWNZgOIZnLN9WwD6n5Yg27Sni9417mTCgjdfjznt5dtXfsXo5SyvCaOkOlBk/yZe+ZrVX/vOkXiFfN94Supt0dcjKymL37t1J8eFONsYYdu/eTVZWVryzkhQ27SmK6fk/W7CZ+RuDGzsTdyF8HOcGOR6ottNYFzvJGOse+noZF7w6x2svlNLySnrc9Q03f7iIn1ZGv2twLAQzZjjcqlEkH5nyikpu/mAha3e6dtUcdP93Mb92baWxLnaSJdZ9Mn+zxzYD7Cgo4dulVuupt9jmvpSlww3vLeA1L12OnXuknPfKoTlRTnl2Jn97d0FomY6FGN8Pqqg07C8JvCZxot+WqvXTprVt25a8vDx27kyOL/xkk5WVRdu2MV8eOm7m+Jg1ORx/fSu8SamCNWPVLmas2sX6h6M/W2wobnhvAdeN6ep3vc9kKYAnE411sZVssc6x/NveIs95DpwLfd6WgUs2jgl0gq0a/e+X9db+UahMLd68jw/m5bFyRyGfXT2iavuuQt/zSzg7tFpBohcnE4fGuthKtljn7C8vz2bl9kKW33eC1/Si0kPxrvBgObPW7ObYXi34eP5mPp6/mQuPyPV57iWb91f97bmMW/j2HiglJUVokJ0OWHHp26XbObZnc9JSo9umGTDOOCXvLynjzOd/Zfm2AlY/MM5j1zU+lhj1JZ73rmp9ZTg9PZ2OHTvGOxsqSV3w6px4ZyHpOL5U/Il00ofyisqof0kkO411KlixGMsG1dO9Mpgr+FoH3uGVauya7Cu/jjKpNm6GTmOd8va5EahaV/jdORsDnuOWDxcyefE2frjxaJftPyzfzr8+X8r3N4wKqkfK27M3cscni/n36f14Yfpavrv+KK/7PfDVHxzWvpHH9sPus3qROBoypvyxnSvfnMeNx3Xj2jFdA14/Vi7+328st5dMqggQqBI9jGlpUakgLN+2v8Z0uVod5MyK8RKN1/mrxZ7rICulIvfhvDyOffwnr2l7D5RWLekRLa/8vI7FXma8v/vzpXy24NBNtVg2nEZy7nCjWVmFdaQjHGq7sFKRc3we7/Yx0ZOzdbusinNRqevNwbs+XcqmPcXk7Q1uaNt/v7cWw7n5w0Ws3lFISZnr7NGOCvpLM9ZxlVMPwY/m5Xk93267V4m/pToBdhQcDHsemmAsdBpi41xsKygp46SnPCehraw0HstcuY/bjhetDCsVhBOemMEtHy6Kdzai4ofl/icPU0opX276YKHHDbVXf15H7m1fcfS/f6xa0qO0vJK/vDzbpSIbTlff+778g5Oe/pkZq3ayxanwN2nmepcxeYl+r9LXM/e1/akfrGVXfl27Oyb5Uaq2+WnlzpCXrQTPnjKOSugzP64JuLTSbC+f3wtene3y+MQnZzDVy6SuN36w0Os5U+ygUekU9ErKKlxWNwGYuXp3VIfyAUHd3ft26XYWb/a8gfnyz2s57bmZLtsu+t+h3pXuXw+fLdhcbY03WhlWKkgf+LhLl2wenLw83llQStUgL0y3lpVznoV/xbYCfl69i5Oe/jkqa0qe/8ocjn9iesTnqS7GGK54Yy6/rNrlfz8f27ftK4l+ppSqwfYeKPXZmgqey5cF64znf/W6/Yfl2xn/pP9lOM96cZbHtt/We076ednrcz22uauoNDz/0xoO2hV65xuAPe76hpOf/iXgOaKpPIS4LsDK7Z4VW+ebE+4t8H97d4HPXkjRVuvHDCulah6dbEapIJlDa93GiqMQGukQiAIvS96t3VlIp2Z1Y9pNOhylFZV8u3Q73y61WnyKSyt4YupKl30e/XYFx/duGY/sKVXjXPfufGas2kVu0zo8O21NzK+3tyjwLMoQ3Ez3wfjo9zwe/no5TetmAPD5wi38+4xDq8wu27rf16HRI9bKJ9+EeGMhmMjvLb5XF60MK6USSizHuCilPJ3+/EyfacHUX7fvj97MqWC1KndoUoes9NSA+x7z2E+8etGgqF7fnfNrkLe3iLaN6oR8jhXbC1jhNp766R9Xe10CBvSGnlKh2llgxaGnf1gd9jncWyejIZKP8nFOLaOOm5aOPB4sr+S39Xt8LssZzRDyoVOL+0X/m+N3puhQbnpuTZAeMNpNWimVUK55Z368s6BU7SGwdEv4LQpPfr8qipmxujoe/8R0bv0o+DkaVmyrvkkBR/7fj1E9X2lFkGMYxRoXmHvbV0HNhKtUbeO4gfTjivCX1PrOaezuwfLY9pgJxiqnMbOv/boegBSnWu4Zz//KDe97H1scqTdnbSD3tq88xj2Hs9zeKz+vY4mXccSJQivDSqmEUhbGBBfufN0pVUq5CXATv7i0wu+amY9/t9Jnmj+FB8s9ZhYFOGCv8znXy7i6YP2wfHvI3fjiLb+ojDU7/Vfq8+1umf+ZGt5rrlRNlhLlzhSBlmALVrSy5chPrPqMPPPjao5+5NDNvjs/XQK4jXs2gXsC+erV4liGKVTFpRXc8cli9pcE1y09HFoZVkollD+iMO7lpwjuDCtVm+QXl/pNv+WjRQy6f2rUr3vVW79z2nMzKbALOJWVhu53fs3bsyNv9bxk0lyufHOex/ZQhyz72j1WLUZjHgtuspjt+w/y+8bwbxYoVRNVx8iChPjcxeh5/vvbFRSE0eoba4Pu/463Z2/kqSj3QnKmlWFV6xTE8O6SSgw63E4p7x75ZjkPf31oRvnr3/PsYhfMxyfSybAW5eUDUG6vp1taUcnB8spqmfgmUo6ulGUVlawN0JobK6c+63uct1K1UUo1fPG/8FPixyeH9+duivo5H/tuRcB9Iv1ucHfAHiMdy+XzdAItVevEYoIElVi0MqyUd47K5tHdmvncJ9IyR35RKbd/4n/Mr2O5pXAKsDv2+550JRYFJvcsCsLVb/3O10u2Umlg9h1jaFE/i7+8PNv7CZRSMbcoL/ZjUqujwh1IsLMuR3tiQ3/ndI67saq0xvKl15ZhVevEP5QppVR8RVqw8FfgeXTKCpZs9j/cwXG8+CiF+MvfkAe/99g3mOezblchf/XSfdoXf6f8arFVEQbYV2z1Nvp5tf81hSOh31tKVY9ud35NSZn3RpMtYcx+XNtmhr8lyMkPe971TYxzEjxtGVa1T+2KS7VStNb1U6qmimWXs8ogzu3oSuerpWV/cVlYQ1ru+GSxn7QlVS3SABPfmOv3XI6CbyxfK19qWflZqYRRWl7JLz5ubC3clB/y+Tbn1/zlIk0Y/YmKfdxw8CWWNxW0ZVgpVeNoQVIp/3wtj1Ee7FI/fgQzCZZzhfmJqSvJ2+s6A/z+knL63j0lqOsZE1yFNdVtutlgZovde8D/BGMAz1XDOOfa1rqkVDxNXbY98E6qSnXcMIxlBNTKsKp1EnmtM6WUqg7eljUCa7xwUBNoRXh9R0vCht0HeGLqKo59fHqEZwysNIxl24Jpvfhk/maPbWt2BLcsy86C4Mb1hZN3pVR49OZTaF6cvjbeWYiIVoZVrXPbR7670amaIREmuVAqGfm6wx/ttbsd14lWi4Kvj3wslkJxjBH258QnZ0R0DffXJdQuhUqp8EWzBJGRWvOrWlP+qIaWdJ1AS6noicPwL1XNtC6sVPi8xUj3cW89//kNi8OYvXXK0m3Md6qgxrp7XSyWIPI3LjlavMUwjWtKVY9oftZKozD0JNEt2+p/wsRQ3RbkJFzRohNoKaVqnD1BjPNTSnkKthBYWl7JSU//HPL5J75hzeackWbdiw914hVvY5qLyyr4dP4Wj+1Tq6O1wrZhd3DdooOl9V6l4kcn4Yyvd3+L/hrJ/mjLsFKqxinWtaSVclFSVsGUpdsC7mdMNVXE7DrwKz+vC+mwWWv3eGx78vtVXrsRX/a6/9migxXMDYKNUe5G7o17K7q/9ZaVUuELZ3ZkFVvhzOQdLK0MK6VqnETrTigir4rIDhFZ4iP9PBFZZP/MFJH+TmnrRWSxiCwQkeiU7lWtc/fnS6taZQOpjvFfjsLmZws8W3T9qazmdY6CvdrkxVujcr2Hv14e9L7RuqZSylUwy8Op6uXtRmi0aDdpVevsKgxu9k6lomgS8DTwuo/0dcDRxpi9IjIOeBEY6pQ+2hjjfeFDpQKYvXY3K7YXBL3/Yh8z7pdFOPbtw3l5VX/HY+3ecAWT13fmRKdb3/M/raF+dhp7i0JfY1kpFR0mmQKUilhcW4aDaC0REXlSRFbbLSYDndJOEJEVdtpt1Zdrlew0xtV8iTabtDFmOuDztqYxZqYxxjGr0CygbbVkTNV4eXuLOOvFWczfmB/xuQpKvK9NHKwZqw7dzwk3DFd3+C7ysR5zLD3yzQqv293D2ub8YvaXaKVZqWiL1s0tlRzi3U16EnCCn/RxQFf7ZyLwHICIpALP2Om9gHNEpFdMc6pqjASrJ6kYSE1J6n/ypcDXTo8NMEVE5onIxDjlSSWpwhArc76WIjImuq0lFUnSD/G4/8R+/eNwvTRjHe/O2RjvbCgVd3PWxa4Lrar54tpN2hgzXURy/ewyAXjdWN/As0SkoYi0AnKB1caYtQAi8q697x8xzrJSKgkkWstwsERkNFZleKTT5hHGmC0i0hz4TkSW2y3N7sdOxLppSPv27aslv6rmue9L31+jiVB/1e6LSil3CzZFfz1xVXsk+pjhNoBzX4U8e5u37c7j65Tyqbwgk32/dsFUHOoY0Wj0H6RkVlC0sgXFa5t7HNP4uCVIquHAH60o2djUNVEMTY63evoXLm7Lwc2NXJPTKmh8rFXALJjfntLtDVzSU7JKaTTK6ha3/7dcynbXc0lPrVtCw5GrANg3qxPl+Tku6WkNi2gwbA0A+T93paIwyyU9vUkh9QdbM7bu/ak7lcUZLukZLfZR7zCrdWHP9z0xZa5hIbP1Xur2s8b67Z7SBypdK5pZ7XeT02sLplLYM6UP7rI77qRO921Ulqay9wfPDhx1um4ju/NOKorTyf+ph2d6jy1k5+62/m+/dPNIz+mTR1bbvZTtrcP+2Z3JbLuHlDbBj49MFCLSD3gZGGeM2e3YbozZYv/eISKfAEMAj8qwMeZFrLHGDBo0SGsMKiy+6ppXvDGXqTceXb2Z8cK5q7VSSoEOf1ORSfTKsLfmHeNnu+cJtLVEuSlZ24yC33NJqXMQSbHeNg2PXg5UULanLsVrPCvDHCuAoXRXPc90OfTWK93hmZ6SeWhMV+m2Bh6V7dS6JYBVGT64tSEHNzVxSU9rfACwKsMHNzeidFtDl/SMFocmuzmY15iy3XVd0isPHvqYl2xoQkVBtku6qZSqynDJumZUHkx3fXpph5YsKV7TDCpdR1ek1CklB8Dg9bVLa1BUdR1v6elNC8hmJ6Ys1Wt6Rqt8YDemNM1relZ7q3BcWZJO8ZrmpGSWkZ4a3TU/Y01E2gMfA+cbY1Y6bc8BUowxBfbfY4F745RNlYRCXS/TV5lyf0l59Q/Y9WLtzsJqv+aWfYmxhNFZL/wa7ywopVSNk+iV4TygndPjtsAWIMPHdg/aWqK8Sqmk1YU/k1bftZDTYNiaqlZWbxodtZJGR630md54zDIaj1nmM73JuMV+s9Xs5AV+05uf5n9plBZnz/ab3uqCmX7TW1/mf3xc27/+6DNNUg1tr/7eZ3pqVrnf9LT6JX7T05sc8Jue2WpfVbrQ0Od+8SAi7wCjgKYikgf8C0gHMMY8D/wTaAI8K1YX73JjzCCgBfCJvS0NeNsY8021PwGVtKK5XuaSLd5nma5O8RgCcdenXuf4rHbrd8d+LWOllKptEr0y/DlwjT0meCiwzxizVUR2Al1FpCOwGTgbODeO+VRJpP6AzeT0ywu8o0pa7RrXiXcWXBhjzgmQfhlwmZfta4H+nkcoFRvLtu73mfb8T2urMSfefb98R7yzoJRKMNrSpSIR18pwEK0lk4ETgdVAEXCxnVYuItcA3wKpwKvGmKXV/gSUUgmpeb3MeGdBqZpHS5wJp7g0srWflVKqtov3bNKBWksMcLWPtMlYlWWlQlKysTH7FrWh0TF/kJpV/WtIKqVUdQl1zLBKLsu3+W7JV6q20Am0VCTivc6wUtWubE8OBxa3w5SlxjsrSimVNOas17U8E01ZhbYMKxXNuRFU7aOVYaWUUkoppVRS0pZhFQmtDCullFJKKaWUqnW0MqyUUkoppZRKSkabhlUEtDKsah1JrSQlswydV0YppZRSSqnaSyvDqtZp0G8L7f4+hbS6B+OdFRUjepNYKYvoTb8abeqy5Fh3WUReFZEdIrLER7qIyJMislpEFonIwOrOo0pe+p2vIqGVYVX7aOGwxtMKgFKWzxZsjncWlAKYBJzgJ30c0NX+mQg8Vw15UjVEpVaGVQS0MqxqnQNrm7Dz04FUFKfHOysqRlK0NqwUAFP/SI6WQ1WzGWOmA/7W5poAvG4ss4CGItKqenKnkp0uraQikRbvDChV3crz61C0ohWNjl0a76yoWNG6sFJKJZM2wCanx3n2tq3xyY5KJgV7U9n01LFUFqfTaNRy6g9ZR9meHLa8fJTHvo3HLqHegE0c3Fafba+P8Ehv+qeF5PTaQsnGxmx/d6hHerNT51Gnyw6K1jRn50eHe6S3OHs2We33cOCPVuz6coBHesvzZ5LZah8FC9qxZ0ofj/TWl04nvckB9v/Wkb0/9vBIb/PXH0ird5D8X7qw75euHunt/vYdKZnl7P2xB/t/6+iR3v7mrxGB3d/2oXBhO5c0Sa+g/fVTANj1xQAOLHO9H5Wac5C2V/8AwI6PD6d4dXOX9LRGRbS5/CcAtr87lJKNjV3SM1rsp9WFvwCw9fUjKN3WwCU9s90eWp4zG4AtLx9F2Z4c67jmBbS66GeP5xItWhlWtU7HpjloW4lSqjbQThIqSXh7p3pt7hORiVhdqWnfvn0s86SSxP49qVQWZVKn21YyWucDkJJVSv1hazz2zWi+H7Aqdt7S05sWWOn1i72nNyyyfx/wmp5av9g+T6H39LolVj5a7PeanpJdZqW3yveenlEBQGbbvV7TJbUSgKz2u8H+25vsTjtJyS71eixAdpftpDYo8nptgDrdt1W9VlXPzc47QJ2eW8hovdcl3Xmunrp9NlOeu8s1vUHxofT+G6kozrDOmxPbOX60MqxqndwmOcyOdyZUTGk3aaWUSip5gHMzVVtgi7cdjTEvAi8CDBo0SPvHqqq7Jjm9tpDV1qqApdYpo9FRK30ek1bvoN/09IbF/tObHPCbntG8gIzmBT7TM1vtI7PVPp/pWW33Vj0Xb7I77Ca7w27f6Z13kt15p8/0Ol23U6frdp/pOT23ktPTd8eMur39z0dRr/8m/+kDN/hNrz94vd/0aNIxw6rWCqa69MGVw2OeDxV9WhVWSqmk8jlwgT2r9DBgnzFGu0ir4OgtERUBrQyrWiczq5LUesUggaPn4NzGAfepye4+qVe8sxAWbRhWSqnEISLvAL8C3UUkT0QuFZErReRKe5fJwFpgNfAScFWcsqqSUL3G5TQ6ZinpzfbHOysqCWk3aVXrDDq2gJ/MvKies2PTHNbtOhDVc0bL+L6t+GpxeDfYW9TPinJuqodo27BSSiUMY8w5AdINcHU1ZUfVMDkNKqq1W62qWbRlWCngoiNyo3auT6/2nJ0wnq4/znO2wWA1yE7O5acO79Ao3llQKiGIdpNQStVwpaVQuqsulQe1jU+FTivDqtZZPCuH7e8PpqIkekHTubg5oF1DLhvpOZ19/IRfGO7Vun4U81F9RvdoHngnpZRSSiW9HRsz2PrK0ZRsaBLvrKgkpJVhVevs3Z5GybrmUHHo7R9p40l1zN2QkRrexzU9NbwnNyS3sXY3VkoppVRC0/mzVCS0MqwU0R9jGkrlev3D48lIC/xRHJQbXtffDk1yGNmlacjHtW2cHdb1lFJKKaWqi9HasIpAwBK4iJwRzDalktklI3MjOt5R9x3Xp2XEeUlNca1JX3F0JwAa52Qw45bRYZ3zzcuGVv2dlX7oY183U8fXhELjoVKqJtMYp5KRcbQNa2c2FYZgWoZvD3KbUkmrbaM6Ie2/9sETvW6/6fjuYV3fEb+b1cvkpH6tXNJ6t24Q1jl9qZd1aFIs43Q7dVCIk04d27NF1PKURDQeqqSiZUMVdkGvNwABAABJREFUIo1xKuloy7CKhM9mIREZB5wItBGRJ52S6gPlsc6YUrGSXbeC9CYFkBJ+9Exxa7298ujO3PLRIlraSxE5ZnC9fVwPHvp6OWDNWD1p5nq/551+82j+M3Wl1zTn3KYIVIaZfW+F48fO6M/4fq14a/ZGCkrKeGLqqoDnadMwOZddCofGQ6VUTaYxTiWztAYlND5hERnNdZ3hmiotJXa3dv31kdwCzAVOBpwXZS0Aro9ZjpSKsYHHFDC98ncARndvxoQBbSI+55mD23Hm4HZ+97l0ZMeAlWFvHMsbNa+XGU7WgnJ8n5Zkpady6ciOfDgvr2p7apiTb9VAGg9VUtKVlVSQNMappJVZp5x6/TfFOxsqSfmsDBtjFgILReQT4IAxpgJARFKB2JXKlYoxR3eaVQ+MIz3MGZoDufCIXGas2sWpA9tWtQz741xgNW79fY7q2pTHz+zPiX1bsbPgYFTzGahxuW5mGv+7aDAXT/otqtdNNhoPVbLSyrAKhsY4lcyKi4SDWxqQ1vgAqVnakUGFJpiawBTAeVrZbGBqbLKjVOwtnFGXbW8O50CB69v/uF4tyE5PDfo89/+5D29cOoT1D4/3SGvTMJuv/3YkzUJszTUYj7EvIsKpA9uSlZ5aVbDNTAs+n8FwLi93b1EPgOGdrPX6RvdozhNnDfA45vrjuvk837XHdAk5D5lBzKidADQeqqSiY+lUiDTGqaSzMy+dbW+M5GBe43hnRSWhYEqfWcaYQscD++/QZhvyQUROEJEVIrJaRG7zkn6ziCywf5aISIWINLbT1ovIYjttbjTyo2qH/XvSOLi5MeVuNw9fumAQN461Knh1M9MY0K6h3/P8ZVgHjuzaLCp5ciztFKjg2qZhNjcc141XLhoU/rXsmu9T5xzm9Xp92zZg7p3HcsagQ92+/3yYa1fyzLQUGtbJ8HmNtJTQK7bf/v2okI+Jg5jFQ6WUSgAa41TSqdC7fioCwZRYD4jIQMcDETkcKI70wnbXm2eAcUAv4BwR6eW8jzHm38aYAcaYAVizGf5kjNnjtMtoOz38moFSTs4b2oFzhrTnl9uO4dOrR0TtvBMGtA5637P8jD0WEa4b05UeLeuHnZfzh3UAYEzP5k7ndd2naV3/LdqRdr0c7zZjNkBu05zITlo9woqHIvKqiOwQkSU+0kVEnrRvDC5yu4bfm4ZK+bN0i04oo0ISkzKfUrFUWRnvHKhkFswio38HPhCRLfbjVsBZUbj2EGC1MWYtgIi8C0wA/vCx/znAO1G4rqrl/N1AzM5I5aFT+0b1eo5u1Jv2FAW1f1e7m7I/jXN8t8r6MqRjY/7UrxUXDM/lmmO6hny8P83rZbIjhPHMpw1sw1eLtkY1D9Xk74QXDycBTwOv+0gfB3S1f4YCzwFDnW4aHgfkAb+JyOfGGF9xUimlIvF3YlPmUypmKsJdXkMljY4xbDAJWBk2xvwmIj2A7lhDC5cbY8qicO02gPPUb3lYhUAPIlIHOAG4xjlrwBQRMcALxpgXfRw7EZgI0L59+yhkWyU/K2iG07o59YajWL3jQERXb9Mwm835rjfaHXkJJ5w/dkZ/bvxgocu21y4ZwoWvznHZ9v4Vwz2ONSFc8cXzDwdg4hvzqrp1O7RqmB10ZXjCgNYc0yM51ygONx4aY6aLSK6fXSYArxtr9rRZItJQRFoBuYR201ApDxUlaVTsz/bYntboACnplVQUpVNR6LlUWnrjA0haJRUHMqg44NlbJL1JIZJqqCjMpKLI8wZdetMCJAXKCzKpLPZMz2heAED5/iwqS9JdEwUymtnp+7KpPOhWXEkxZDS1evOW5WdjSl3TJbWS9CZWrC7bWwdT5jrPgqRVkt7YTt+dg6lw7Sgn6RWkN7JuYJbtqoupdI15klFOekMrjpfurAvGNT0ls5y0Bo70eh7BPSWrjLT6JRgDZTs9b4CmZJeSVu8gphLKdnmmp9YpJbVudCdUhJiW+ZSKmR4tAzciqOT2zsRhMTt3wMqwXRG9AehgjLlcRLqKSHdjzJcRXttbVcRXyfwk4Be3LtIjjDFbRKQ58J2ILDfGTPc4oVVJfhFg0KBBeutIUa9hBRmt95KW1iio/e84sQcPTrZmhO7SvB5dmocXdNs2yua6Y7rwp/6tGfsf17eqr3r5aQPbBjxv3SzPj/HR3YIby+xoJXev3HoztndLKisN/do24OrRrhNkHdW1KcM7NWHdrkK+Xbo9pEp2MolhPPR2c7CNj+1ebxoq5Uvxmhbs/nKAx/ZWF80go8V+ila0Ys8Uzx4xrSf+SHqjIgqXtCV/Wk+P9LbXfEdqTikF8zuwb6Znb5N213+DZFSwf04nCuZ2cks1dLh1MgD7fulK4SLXm9WSUUb766cAsHdaD4qWuw41Sa1bTNurf7DSv+tD8drmLulpjQtpc/lPAOye3I+DeU1c0jNa5tPqwl8A2Pn5YZTtaOCSntl+Fy3PmQ3Ajo8GUZ7v2iqR3WUbzU+zViDa/u4wKotcbxbk9NpM05MWALDtjSMwZa5xuu6ADTQ53ho1sfV/nvMl1B+yhkajl2PK0rymNxi5goYjVntsj1QMY5xSMdO7RypNT/6djBb74p0VFSOBhu9FIphu0v/DWnPO0ayUB3wARBoY8wDnwZFtsda58+Zs3LpIG2O22L932EsBDAE8KsNKuet/dAEzKufToIHnLNDeTDyqc1VlOBIiwg1ju1Ne4Tm4ZWCHRsxYtctjUfHHzuwf8XWDy1tw+6WkCJ9fM9Jzuwi3jevO7R8vts7npXJ927gePBzEMlMJLlbx0NfNwaBvGmovGOUuPx8Obm1AZot9NDvFc57JtAZWy2dWx51e01NzrJbHOl23k97Is0dMSqY1C2Gdnlu8FkIlzYp1dfvmkdVuj0e6Q93DNpDdeYfbyQ+9zesPXktOT9figaQeiqP1h6+mbv+NrunpFVV/NzxqJZXFri3PjrwDNDpmGcat5Tklu7Tq78Zjl3i0LDteG4CmJy70aFlOrVdyKP2k+R4tx45WY8D7/8Z+vSWtwmt6epNCj21REqsYp1TM1GtgyOmZlEOvqkWrBlls3VcSeMdaKpjKcGdjzFkicg6AMaZYJCorF/4GdBWRjsBmrArvue47iUgD4GjgL07bcoAUY0yB/fdY4N4o5EnVEvFcejMtNYWpNxzNsY//VLXt+b8czrpdB8gKYWknZ5MuHswTU1exYFM+H/3Vszt0rLlHBOfHx/duwZmD2lFQYhU+YzHpYzUG+ljFQ183BzN8bPegvWCUu19/hW2vj6Tl+b9Qp9t2n/ulNyyu6vLrNb3xgaouxd5kNC2s6rLsNb15QVWXaG8yW+6Hlr4n+spsvQ/w3eKT1XavzzTAb0UcILvDbv/pHXf5T++80296na47fKaJ4Pd/I6nGb3oMxCrGKRUzBwqE4vVNyGi+n9Q62qvfXdtG2VoZ9iOY2aRLRSQbuzVCRDoDEQ9UMcaUY40B/hZYBrxvjFkqIleKyJVOu54CTDHGOH8TtwB+FpGFwBzgK2PMN5HmSdUOv/9Qj82vHEl+fvzy0KV5XZfHOZlp9GnTwMfegY3q3pxPrjqCOf8Yw+EdrHX27v9zH270sxYwhDdG2dk5Q1xnvvZWZGrfuA5jeraIeAZqZz/dPCp6JwtNTOIh8DlwgT2r9DBgnzFmK043DUUkA+um4edRuJ5SSnkTqxinVMzkbUhlx3vDOLg18PC3x84IvsfdX4bFvpfVwPYNY36NYIbC1WbBtAz/C/gGaCcibwEjgIuicXFjzGRgstu2590eT8KaidV521qgevqPqhrnwL5USnfWD2kq/ifOGsCuwsQsD1SN+xWheb1Dk+D8xV5Cyf/BkV27WT3PSXfAWqc5kCuO7sS89XuZu8F/qw5Ag+x09hVbd3svHN6BDk0Ojd9b+M+xnPzMz1WPR3Rp4nF8FIUVD0XkHWAU0FRE8uzzpENVzJsMnAisBoqAi+20chFx3DRMBV41xiyN7lNSNZUuvVnzud9YjYKYlfmUipkQYt2g3ODmiwGon5UeeKcIje3dkt835sf8Oso3nyVWERlhjPkFaxzuqcAwrN6lfzPG+O8zpFQCC6d8+OfD2kQ9H/7848Se9GhVfbMjhttq27SuNUNsE3upJ8dp0lMPndC9h53j9b99nDUhz2NTVvDUD/4ngunTpj6/rN7NOUPac8+EPgBkp6dSXFZBgzrpvHbxEEY9Og2ACQOi/7+KNB4aY84JkG6Aq32kedw0VCo0WitW/mmZTyWzUBo3gm0lHdOjOSf0acmz09aEmavg6E3L+PPXfPMkcDjwqzFmIPBV9WRJqeqRyKOgLj/KfebV2Lj9xB7c88UfpKcEM2LC03lDO1A/K52T+1szvfp7TR2tuf3bunYHv3Fsd24c293vdQSpWq/Z4aebR7F9v9Van+u0/twZhweegTsMGg+VUjWZxjiV9CSKN/6GdWpCv7YNaVE/s6qsEQuJXBatLfxVhstE5H9AWxF50j3RGHNd7LKllArkuF4t+O6PyCZWuXhERy4e0THs41NTJOhW8wHtGjL1hqPp3Cz0hdMb1vHsqtS8fhbN63t2047RXC8aD1XSGTAAmp70O2n2erlK+aExTiUtbVxVkfBXGf4TcCxwDNY0+0rVCA2alpGdu4u0tKbxzkqN5euLKZzxbfdO6B1UhfuuP/ViaMfGIZ8/SBoPVdJp3RpyeulyIyooGuNU0mrVvozmp88ho2X46wzPun0MBSVlHPef6l2lNZg5VmKhc7Mc1uz0vUpAbeLvP3CzMeZWEWlvjHmt2nKkVIz1GVHIr5WLqFfvxHhnJSKOZZhSUxKnj00sZiy8YHhuUPtdOjL8Fu4gaDxUSWfXLije0ITMlvtc1tVVNYeJ3oBDjXEqadWpZwIuceZPg+x0WjbIomWDLNo0zGZzfjENvPRIC9eRXZsyY5X3offdW9bj6G7NuGhELhf/77eIrvPFNSM56emfA+8I/Klfa/77/aqIrldT+BsoeKKIpGMt5aFUjVFTutPce3JvrhrVmWN6NI93VjwYA9eM7hL28UNi18IbLo2HKunMng073h1G2Z7QhyaoWkdjnEpahfkpFK1sQcWBjLCOd25TOGOQNe9I83qZAAzqEHl55O6Te/tME+C1S4YwunvgslxGqu9q2/qHx9O3bQPOGtTOMzFx2kwSkr+W4W+AXUCOiOx32i5Yk5/Wj2nOlIqRuVMasP5/o9h3CzQIf2nfiH39tyO9joUNVqOcDG45oUcUcxQ5x3BdYwx1s6zwEk4Mfv+K4eTellDzt2g8VEmnqLSc4FZQVEpjnEpeWzamsvOTQTQ/Yw7ZnXZSNzONwoPee8N4m1bEsboFWDfy+7dtyCi7cvrYmf35anF4w02e/8tACg9W0LmZ7yFi0W6g8dWifcsJ3TmyS7OqlmOduOsQn7cYjDE3G2MaAF8ZY+o7/dTToKiSWcmBFMrz68R9OvuererTqkF2fDMRZc6xNdLX99Ez+vP25UMjO0mUaDxUyWh3YWm8s6CShMY4lczcyxuh1vPOHHyoNTUtNYXRTj3ustJT+eDK4Xzz9yODOtcL5x9e9fcJfVpxupcVLo7q1ozXLxnC+cM6MLB98OseO/ibf8Xb0ImjuzXjqlFd6Ns2shagrPTwVh5JdD6flYj0ADDGTBCRTLe0YbHOmFKxEu9KcE02vp+1xNKILpFPTnb64W05onNiTHKm8VAlo0SaT0AlNo1xKpkFKtb1aFnP5fFLFwwK6fyDcxvTo2Vw94SO790y4D6vXzKEo7o1474/9wkrTn945XCXxyP9lLnm/GMMfz26c8jXaFgnnQdP6euyrXGd8Lqhuzu2Z2IN7/NXxX/b6e9f3dKejUFelKpW2kUk+oZ0bMz6h8fTtUW9sF7fG4/rxrPnDYx+xiKn8VAlnTStDKvgaYxTScu4/TW0k+s438G5ro+P69Ui6Vo5e7U6VBnPTEt1SXMub7k3+DSvl0VKmN8F5w5t73admvmd4u+dID7+9vZYqaShDcPVI5wW+GvHdOXEvq2in5nIaTxUSefwQYZmp/9GeiNdPkMFpDFOJS+38oZ7ZTGWWtbPqpbr/PuMfj7TcjJCnxuiW4t6ftNj2Ysy0Lkb50SnBTpY/irDxsff3h4rlTSatColp9s20nRemepRM4pRGg9V0mnRQqjTeQcpWbqskgpIY5xKWq07ldLi3JlktM63NgRR7ojWUpAXjciNynmCYbx8FMf3bcWDpx7qztyvXcOgznVi31b87+LBIV2/uhqGZ98xhguGd6iei+F/msm2IvIk1lvK8Tf24zYxz5lSMdJzaCFtKtaTkzMu3lmp0c4a3I5pK3Zw6YiYrv9bXTQeqqSzczsUrWpOVrs9WiFWgWiMU0kru44hq93esI797OoRYR339d+OJDs9lW+Xbqva9lwMh3k5t6Y6V0qfcbvmyf1bU1JWwS0fLgp4zp5+xkFHWvH966jOPDdtTVjHpqemcNbgdrz+6wbAmgAslvxVhm92+nuuW5r7Y6WSSg0d9pBQGudk8N4VwwPvmBw0HqqkM//3FHZ+PJiWF84gs+X+wAeo2kxjnEpa+/akULikDVkddpFW76DXvgz1MtMo8LLcUtcWvmdm9uU/Z/Wnpz2G1/lS4xJkmFe7RnWq5ToPndqX2z9e7DXt6G7NfFaGu7esx/fLd/g9d+/Wh2a+jvVcMj4rw8aY12J6ZaXiZNaXjVj9WmcKboF6/odMKAVoPFRKJaZo9V/WGKeS2bZNaez+agDNz5xtVYa9qJ+d7lIZ9tblOFinHOa5XFIgt57Qg//7ZnnY1wxH07qxHXvbrO6hiecb1Ulnb1EZfdrUJystlQF+umvfcFw3xvRszmnPuc/V511OZmzHNSbXVGpKRUFZqVBRVL2D85VSqrrpMnJKqdrAI9QlYO+/v44KfXkjd6GOc+7cLPRWb4dGXpZRSnHrVtm03qHK8G3jegBW1+sP/3oEWem+JzFLS03h8A6NfaZXN60MK6WUUkoppZJTCDf+HPW5aE2gFU3H927hM829YvvmpUO55+TeXvcNttU7O8N3hfWty4Z6bHOuC39w5fCq1t9OTXO8vp5z/jEmqHzEW8DKsIh4jCz3tk2pZGG0uUSFSeOhSiYa6mqBKP+PNcapZFQV68T3B+Lpcw9jbK8WtGqQXT2ZCsN5Q73PoHxy/9ZkZ6S6VHJHdm3KhUfk+j1foPlxGmSnM+X6o1y29WhZj7UPnkjrhv5fJ8fazV9dN5KPrzqiarvzf6B5vSzOGdIeX/51Ui//GawmwbQMPxXkNqWUquk0HqqkMXhYJS3O/bXWrzPcu7XvGVOVB41xKuk4N3KM6t6Mu8Z7VrIOa9+IFy8YRGpK/FqEX7pgEA85LYMUrAdDPMaxTm8PP7NFO3hbbzjFx2vkbWvv1g1oWCfDZ9f0B/7cx+e101MTo4OyzxHJIjIcOAJoJiI3OCXVB6pvNWuloqxZu1Ia9N1MWpquFqGCo/FQJaPGjSGr3Z54ZyPudPWAwDTGqWTWrmsprS6aQVrDA/znzGNolFN988KE0gPnuF6+u0E7G9mlKb+s2YUx8NPNo6gb4gRSPVrW54Mrh9O/bcOQjgOQMANmZppVsc1Kd63g+qpYW9cK61JR5+/VzQDq2vs43zbYD5wey0wpFUvdBhXSpnIj2dlaGVZB03ioks7mzYbCpa3J7rST1OyyeGcnbhKl9SHBaYxTSSsz25DRwlo+LtSRA9EaTuJYagngv2cPILdJTkTna1Qngz0HSkOuCDs4ujFXl/F9W7F25wEuO7Jj2OcY3b0ZV43uEsVcBcff0ko/AT+JyCRjzIZqzJNSMaXD6FSoNB6qZLRoQQq7vzyMVhfNqNWVYRWYxjiVzPbuSqXg9w5kd9ke9Lww0W6VPKpb06q/JwyIvLHlguEdeGLqqpgvK+TO3+vnr9U4LTWF64/rFtG1j+nRvNor8RDcmOFMEXlRRKaIyA+On5jnTKkYmflpY5Y9eByFhfHOiUpCGg+VUjWZxjiVdLbnpbHnuz6U7cmhXlZ6zK7z2Bn9+VO/Vi7b+rdtAMDh7RtFfH7nuubfj+3G+ofH+12iKBw3H989pNbm5/8ysOrvcO8f9G3TIKj94tVYFcyr8QHwPPAyUBHNi4vICcB/scajvGyMedgtfRTwGbDO3vSxMebeYI5VypfKSsFUpCbMWAWVVGIWD5WKNp1N2uIt1NfJSKWoNPk/wsM7N4n2KTXGqaT10oWDyEgLblhEOPHxtMPbctrhbV22HdGlKXPvPJamdTN9HBV9kZRfrx7dhav9dEV2b/3t0txp1ESY1738qE5c9858j+2juzcH4LD2DZm/MT+8k0dBMJXhcmPMc9G+sIikAs8AxwF5wG8i8rkx5g+3XWcYY/4U5rFKeTCV8c6BSmIxiYdKqer1082jGfzA1HhnI2K3jesR7VNqjFPJx0vF9pOrjqC4rIL/Tl3FX0d19nloNBpGqrMiHGu+ukm3apAV9Wu1bpjN+ofH8+PyHVw86TcGRqF1PRzB3D75QkSuEpFWItLY8ROFaw8BVhtj1hpjSoF3gQnVcKxSQOLMYqeSSqzioVIqRrwV7dJShNcvGVLteYm2tJSoTw4WsxgnIieIyAoRWS0it3lJHyUi+0Rkgf3zz2hcV9V8js+488TFh7VvxBGdm/LeFcP9rpmrPWiCk52RGrN+zKN7NGf1A+Po49adenBuI24+vntsLuokmJbhC+3fNzttM0CnCK/dBtjk9DgPGOplv+EishDYAtxkjFkawrFKeTA6hZYKX6zioVJRV95iOy0v3EBaY50gwZuWMWjpqAFiEuMi6Q2oVCCOcp2E0I9XG0SqTzAvdZqXWf8/uPKI6GfG27UD7WCMCX+ObP+8vTbutZTfgQ7GmEIRORH4FOga5LHWRUQmAhMB2rdvH3ZmVc3RqlMJjQdtJC1N3w8qNOHGwyDmR7gZOM9+mAb0BJoZY/aIyHqgAGv8XrkxZlCY2Ve1zDcrN5HZcn+8sxF3NbnMG+2buzEs81X16AMQEUePPh3epiLWoftBWk/8kSFDj4x3VqIiYRttwgymCfpsqgTsXyMidUTkThF50X7cVUSicdcuD2jn9LgtVutvFWPMfmNMof33ZCBdRJoGc6zTOV40xgwyxgxq1qxZFLKtkl2nAQdoPX4ZGdW3JruqIcKJh04tIuOAXsA5ItLLeR9jzL+NMQOMMQOA24GfjDF7nHYZbadrRVgF7cCuTArmt6eiKHazqyYDb8uB1JRWoWh38Yxhmc9bjz5v688MF5GFIvK1iPSOwnVVLZCeaUhvVEROZEv7qgBqSNj0EMxgk/8BpYCjrToPuD8K1/4N6CoiHUUkAzgb+Nx5BxFpKfa3mIgMsfO7O5hjlfKlsgKoEB0nosIRTjwMdY6Dc4B3Is2oUvs312XPlL5UFNbu7sC+CnA1oWAXg6+xWJX5QukN2B94Cqs3oOeJRCaKyFwRmbtz584oZE0lu93b0tg3uxN5G2vCpzpwd+9QuoNHTQTBJtH/K8FUhjsbYx4BygCMMcVE4XkZY8qBa4BvgWXA+8aYpSJypYhcae92OrDEHjP8JHC2sXg9NtI8qdph5qdNWXL/WEpK4p0TlYTCiYfBtoggInWAE4CPnDYbYIqIzLOHfSilQuCrFbgm3A9NS4l6MTMmZT4i6w2I237a40+52Lk1jfxpPVm/PvRjEzEOJFI36ZrSi8afYCbQKhWRbOz3i4h0Bg5G4+J2sJvstu15p7+fBp4O9lillIqxcOJh0HMcACcBv7h1kR5hjNkiIs2B70RkuTFmusdFdH4E5S5xylNxFZdWlGqSlZ4a7VPGqsxX1aMP2IzVo+9c5x1EpCWw3Rhj3HoDqmpysLyCf3yyhJvGdq/xE8wlYlSId6w6oXdLrh3jew3icB3WvmHUzxlNwbQM/wv4BmgnIm8B3wO3xDRXSsWSFhBV+MKJh0HPcYBVQHTpIm2M2WL/3gF8gtXt2oO2lih33sbK1kr6MoQiJmW+SHoDRnptFbwflu3gw3l53P15cnW2NJVhHBP9bCS9588/nN6tGwTeMURtG9Vh/cPjo37eaAlmNunvROR3YBjWV8rfjDG7Yp4zpWKkagp+LSCpEIUZDwO2iACISAPgaOAvTttygBRjTIH991jg3qg8GVXzaYwDavaY4WiLZZkvkt6ASgVDwlh2O5nigN4aio1g3zZtsJYEyQCOEpFTY5clpZRKaCHFwyBbRABOAaYYYw44bWsB/Gy3lMwBvjLGfBPF56JqsJY982l9+Y+kNz4QeOcarGer+h7b4t0dMcFpmU8lFUcHgtryua7OxpymOZkAnDygNSk1tBUpYMuwiLwK9AOWAo6OCAb4OIb5Uipm2nQrptnIdaSmxmo5RVVThRsPA7WI2I8nAZPctq0F+keSZ1V7pWVVkt64KN7ZqDZHd2vGTys9Zxc+qX8rJs1c77E93EaWNg2z2ZxfHObRiU3LfLVbsjY8duxdTNtrvmP48DHxzkpUBGoBjkULcdtG2V63N6iTzh/3Hk92eipTl20H4OlzD4t+BuIomAm0hhljegXeTankkNv3AG0qt5CerpVhFTKNhyppHNiRxb7ZnajbN4/UOqUxucZjZ/Tnxg8WBtwvRaAyxiXtZ84bSJ9/feuxvVnd6E4ElJkWRl/M5KExTiXdMLL/TltJag5kZoR+bCLdAAj0usfq/7Li/hP8tvrWyXCtLnZoHN6Czj1b1WfZ1v1hHRtLwUT0X0VEA6OqMcoOCuXFaTr2QoVD46FKGvs355A/rScVBzJjdo06GcHNZnze0A4hn3tAu4YhTbrirSg37aZRtG9Sx+vO4ZYra/hXh8Y4lXTK9tYhf3o3NmwI/lOdiPX9eJVLM9NSSU+N/U2+z68ZwfL7Toj5dUIVzDN/DSs4rhCRRSKyWEQWxTpjSsXK7C+asOThYyiNTUOJqtk0HqqkEUorwqdXjwjrGrEsu0V67uN7tyC3qdWCMTi3UdRO3rV53QhylfA0xqmkU74vm32/diVvU7xzElvJ3oiTnpoSi+XgIhZMN+lXgfOBxRwaP6JU0kryWKLiS+OhShqhTHbSKk5rit5wXDce/25lTM7drpGXFuEgPHPuQK5++3evaRlpKTx8Wj+m/PFdJFlLZBrjVNJKtu7d7oLNf7ye56huzVmyeT/N6sWut1E8BFMZ3miM+TzmOVGqmoSzHp1SNo2HKmkcqgwHvgUYjxaHDk3qcN2Yrj4rw60jrKA7FxgbZLsNJvRTmExN8Z14ROcmZCdgy0YUaYxTfhWXVlBWWUn9rPR4Z0VVs+uP68b5wzvQon58bp7GSjDdpJeLyNsico6InOr4iXnOlIqxZL+DqOJC46FKGpHGuNwmdfjhxqOjkxkv3rpsqMvjIR0bV/39xFkDeOT0fhGd37ll/NEz+tG0bhiz63gR6HX984DWUblOnGiMi5OfVu7kiamx6SURTaMfnUa/u6fEOxtepfi5keXuXyf1Jis9JaFubvWyl4G7/KhOcc6Jd6kpUuMqwhBcZTgbOAiMBU6yf/4Uy0wpFUtLNu+LdxZU8tJ4qJJG+wH7aHv11LDXGW7XuA6dmnmOj719XI+qv4NtUc72MtFWW7duzC9fOKiqVXZ8v1bUC7HlyaOS6vS4YZ0MLh7R0fe+/s4TIufrJCGNcXFy4atzeGLqqrjmIZjP87b9JbHPSDU4c3A7lt83zm9PkOrWKCeD9Q+PZ3T35n73S/axw4kmmG7SLxtjfnHeICLhzbShVAJIa7ubhkeuIDW1e7yzopKPxkOVNDIzIbXuwaD29VcBfOyM/qSkwPXvWUsoXXF0Zx76ejlgLZkUjCuO6sSL09f63ad+VnpUZ3gVt7OZIEuQkRY0WzXM4v4/9+HOT5dEdqL40BgXZx/Oy6N94zouPSWqWzA3hCoqDc9NW82FR+SGfOMq2rLa76bdDV8zfPi4uOYj1rRHY2wE0zL8VJDbVJL7+Pc8tu2rGXf8/Mlqu5cGR6wmNXF6xqjkofFQJY38LVnkz+hGxYHIugefdnhbTjmsrde0Y3u1CHj8mYPakhlkV8RoNnj4KziGMrmYyzmD3O8vw0JfSipBaIyLkbs/X8q178wPuN9NHyzkzBd+DesaJWUVVMR6QW/bt0u38eiUlTw4eVm1XM+XotJyJAVS0itrfLlOW4Rjw2fLsIgMB44AmonIDU5J9YEa/narfQ4cLOeG9xfSqVkOP9w4Kt7ZianKg2lUHrTWGda7bCoYGg9VMtq7JZt9MztRp8cWUnNis5act7Upm+RksPtA9axd17BOOvlFZYBnS7C/Vuu6mcF0jDukWb1MdhYE18qejDTGxd6kmesBeOqcw2J2jR53fcOEAa3579nBXeObJdt4cPIyfrjxaNK8fJbLKyp58ofVTDyqk8dnprTcmo20qLQi8oxH4M1ZGyjbnUPB/A6sWwcdk3qUQnC07Bpd/lqGM4C6WBXmek4/+4HTY581VZ0q7NtNO/fX3C97h/3zctn83Bgq4hu/VXLReKiSTkoInY69tThIkCUu9wloTuzbyuXxVaO6BJ2TUMt4313ve4Ivz27SIZ7cC0ONLYjWmhi350ApV74xj33FZX73m7dhL8u37a+mXEXPZwu2UOyjgrpmZyG5t33F98u2A3DHJ4vZuKeo6rUwbn0zPluwhSe/X8Wj364IOR8bdxdVvX7rdx0g97avmLV2d9DHF5SU8fXirQH3MwbK92dTMK8jWwPvrpQHn7dGjTE/AT+JyCRjzIZqzJNSSiUUjYcqGYXbFdjB39EfX3VE1bCa+f88DrBapQDu+lMv3ph16GOS2zSHAwfLAUhLEcqj2I3T33qX0ZwXx9epTj+8LR/Oywv5fD/ceDTHPPaTy7YUgWrq4eqhNsW4F6av4Zul2+jfriF/HdXZ536nPTcTgPUPj/e5z8HyCuau38uILk2jns9I3PLRIq8t0PM35gPw1eKtjOnZIuA4+tIKq/XXV+Xan6P+/SNgvX6/2pXgT+dvZlinJkEdf/MHi/hm6Tam3nAUXZrXC/n6SgUrmH5CRSLyb6A3UDWftjHmmJjlSsWNDkdQyi+NhyppdGtRl8kQdHPr8vtOqKrQevPuxGG0bpANwMD2jaq2Z7m1DGekHep0ds/JvYPOb6Q8Z5N23eCtG2jY57aF29rsrdU9Qb5/a2yMq6w0vDRjLUUHA1fsvly0Jahzdr/T+rx8dvUI+rdrGEn2IjJzzS66OlUYF+Xle93PvfLreOR4P7r3pgjWW7M38PiUlcy7y7ox5tzq/sJPa4KaYOuPLfvp0bJe1fJIeflFABSXVgbOQIJ8eFRyCuab4S1gOdARuAdYD/wWwzypOEimXl/5RaW8/uv6oGcGVSqKNB6qpJGWElrlz71S625Ypya0b1LH7z6+BNtI/dQ5h9G3TQPSwmjWzUxzfb4Nsl0L4Bce4TqpVSgN585fN8FWGNJTrf2eO2+gR1qbhtl+rxFHNTbGTfljGw99vdyl18Jxj//EfV/+4bHvNW8HnujK2R4vY+TLK4KoxEXJuS/N5tTnDk0C7m25oLnr91Bo99Bwfw+7732wrJK8vUVBX/8fnyypmieg8GA5/e85tA7xQ18vr6qc+/rMzduwlxOfnMGLM/zPOO/w8e95Xrtc19AhDFVOP9yayDDSXj/KVTDflE2MMa8AZcaYn4wxlwDDYpwvFcDgB6Zy6rO/BN6xBrrpg0X887OlLNb1glX103ioksbQY4pod/03pDcpDOv4aJS3Qj3HuL6t+OLakUGPV3a9ljC0Y2N6tKzHfX/uw4XDXSu/WWmulf1QKp9VLWgh5GfazaN5/4rhjOvbilcvGsTwTk3479kDeOjUvi6t5wAn929d9fdpA73P3H14h0Zet0dZjY1xJWWeldNVOwp55ed1EZ87L7+Yh75eRqXdz33Z1v10+cfXfPfH9ojPHaxNe4qr/k51+/zsKyrj9Od/5Z4vXCv+zp+BfcVlrNxeAMD3y3cw8v9+pDLEOzTGGL77Y5vH9nd/22T/5f0T5Kh4L90SeIz2vA17uOH9hZz94izXBEmMu0mx9MApfVlyz/EJtTZyTRBMN2lHX4etIjIe2AJ4j9Sq2uwsOBiTmS2ro7V19Y4CSssNvVrXD+v4vUXW3UfHTIahatx1DykZS0lJqb7ue6rG0HiokkZqGqRkhD9TYOM6kS3J5MzREhXrb5j3rhge8Tm6NK/rN925nuE+4ZCzNg2zq1qAj+nRgmN6+F6G6slzDuPzhVs8zu/s9UuGsLPgIKMeneY3fxHSGBeGu+w1pf/UtzV92zZgwaZ8AC5/fS4AL18wqFrz4/4eOljuPw6IWGOkV+9wvXHmqNz7e59Hkq/S8kqe/nE1be3Pibcy6ElP/8zk646sKjOe9pznslPZnXbR4ZbJDB/ue3x3TZCaIiHPhK8CC6Zl+H4RaQDcCNwEvAxcH9NcqWpXXevSARz7+HROfHJGtV3P3egj0zhiwh5C7EGoFGg8VElk7fJ09nzfM6h1hr1VwO79c5+QrnfOkPbcckJ3l22Osq3j/MYYvrpuJF9dNzKkc1enLs3rsvBfY8M+Ptxxl4eO9y4nM43cpjlcNjKma8dojHPz4/IdHtt+W7+HxXmevdPW7vLeC+ObpZ6tpaGYt2Evubd9xY6CkrCOdy/hFZdZ3aWdK5/uFWE41Jr+/lzPSeK8VZCNCa3HxduzN/Dk96t4dtpqv/s9MXVl8CdVKkQBqwPGmC+NMfuMMUuMMaONMYcbYz6vjsyp6vNve9r8A3FaL27pln0eY272HChl+37fgT/c6vuUefnkrUlPlPFZKoloPFTJZPP6NArmdqKyJPDkNd7iYagtEA+d2perRnUJuF/v1g3o3bpBSOeOBUcFvXOzHBbd7Vr5dR9v7JOX1y3SVrRAPcS7t7QmSjqmR/OIruNNbY1xCzfl835VV15XF0+yhkzf+eniqnGqZzz/Kyc9/bPHvn97d0HU8rQl/1C351ftrtyz1+6p2vbhvDwueHWO12MFwRjDJ/PzqmZ9dzZ58TaP/b15YPKykPIc6jv/4W+WA7B+d1FYxzuOKd1Zl12T+7FmTRgnULVewMqwiHQTke9FZIn9uJ+I3Bn7rKnqtCSIcRrBOvXZX5j0S2hjcMY/+TMnPeX6xTLwvu8Y+uD3AOwuPFg1u2Mk99x3FhykYEF7Fv53mFaGVcg0HqpkdesJPeJyXUfFrqplOC65CKx+gNluxcff0RR0BdzWKIrd2B1qa4yb8Mwv3PLRIr/7vDlro+c41Rg64uEf/Kbf9MFCpq/c6TVNBOas28P17y1k2EPfs9/HmsqRfB69VaADDbVzP8J9HHdFRXg5qijI5sDiduz0/nIo5VcwHUVfAm7HHkdijFkEnB2Ni4vICSKyQkRWi8htXtLPE5FF9s9MEenvlLZeRBaLyAIRmRuN/NRqUawZ/r4xn7u/8Jyd0Zfj/zMdgM35xczbsNfrPhPfmMc1b89nR0FJSMF75fYC3p976G5vWTXO7qhqpJjFQ6Vi6ezB7Ty2HdWtWbVdv2rMcBxrw+4truFMoOV50nBzc8iT9nqwn109godP7Rv5CSOjMS4GfL3X5m/cy5nP/xpwTG8477P9JeVVf+/zURmO5PzeVBjj93MVqNdDpN3JlQpHMJXhOsYY934Y5V73DIGIpALPAOOAXsA5ItLLbbd1wNHGmH7AfcCLbumjjTEDjDHVOzNBjOQXlYY9HiRS0Rgy/On8zeTe9lXIx62wZy+EQ4vcu3N0FyoP8a7h2P9M55YPD93tFQGMzsKnwhaTeKhUPPz92K4xv4Yj2kYyM/UlI2I6RjYovVpZk/ecOaid60zXUfjudMwknds0h7OHtCfVntDi7pN6VfvES9TgGOdv2FU0bckv5vaPF7tsW7Hde++72z9ezJz1e7juHe9LOd356WLW7Czkq0VbAWt5pHfmbAwqH86ttN4+f8GupRyKrxfHqTKbqF1OVFIIZkDQLhHpjP1WE5HTga1RuPYQYLUxZq193neBCUBVk6IxxrlmNIsaPqPhgHu/A2D9w9GfDe/UZ38hKz2Vty/3vkJCNGYKfG5a9QzWiFZVVpdpU2GIVTxUKuqssrAV292X8gEY2D72S/WkpVrXjWRdzBb1M6OVHRehZKll/ayq7+ZAE05GOoHWrSd0Jz1VOGdoezLTUnn9kiF0CHN95zDU2BhXUOJap/8/e7xqtP24wnPCrSWb/Q9F+3ap9yWY3py1kW+WHEp77VdrjeQT+7Sq2vaul8rxmp2FLqU6b8tKzV2/N+RKZFGp//siRaUVHut9R4NjyaVgZsVWKlTBvGOvBl4AeojIZuDvwJVRuHYbwHm2gjx7my+XAl87PTbAFBGZJyITo5CfhHHppOivb//7xnxmrvFcoBys7jP5Rf670Ow5UErXf0xmzro9fveLFl+TQjhbtnU/63YdqIbcKFUlVvFQqagbeXwxHW6dTHqTA+RkpvHltdU/g7NjPcxIyqi1rdGnYZ0M7p3Qh0x7XeSjujWjQ5OcqvQYvx41NsZFq6IUTg84d+e/MpvzXp4VVFf9kjLPCmD/e6dU/X2bWys0QJlbL7q/vDLbY5+Ne4qosDOwM8heiTNXey9HOgRqWHHcKNq2r8Tn6zhl6TZKyipcbiBstnsH/vubFd5PnGKQzDJSU70nK+WP38qw3ZX5r8aYY4FmQA9jzEhjzIYoXNtbWPL6KRKR0ViV4VudNo8wxgzE6mZ9tYgc5ePYiSIyV0Tm7ozyyPryiko27SkKat/N+cXk3vaVzzGxzr5fvoOpf2xnzU7vU/RHas66PdzrNKa3/z1TyNtb7LHftn0lPP7dSowx/L5hL2UVhjNf+JWJr3sfoh3NO3K+JoUAmGu/hv/8bCmjw1hvsU7X7TQZtzDcrKlaKsbxUKmY69PGcwbnI7s2BTxbjts2yo7oWp2aWZW3nAyrA5q/74cfbxrFh1eGvj6wo+tydXDOv/NTqUkV9Zoe44Iporw9eyMrthUE3tGPNTsC36SfsWoXv6ze7TJMzJdolK18VbqL7BVEbvrA/+RhDit3+M9vRaWpasX15o1ZG9hRUMLybb73mfjGPJZs9ly2CvBaVgXI7riL9n+fwqAaMWhSVTeflWERSTPGVACHAxhjDhhjIosQrvIA5xk92mIt7u6ej35Y69xNMMZU3ZIyxmyxf+8APsHqdu3BGPOiMWaQMWZQs2bRnSzkwcnLOfKRH4Mah/LL6l0AQY/1uOz1uYx57KeI8ufLmS/8yqu/rKO8opJP5nuuHedYZP26d+bz5PerWLJ5v8sX/pQ/vHfniRb3JZacLcrLD+uc2/aVsL+kDEH+n727DpOrOh84/n3XJZuNu2yMKHEBEkhCICQECEVLKS4FCrQUWigtUqTwA0pxKFBKKe4EEoKHOMTdfeO6ybqd3x/3zu647czOzu77eZ59duaeO/e+Y2fOucdIaX2URv1ztTuNClot5IdKRdz6lSkc/PJ4KvI9uxln2csmPX/pYN66dgTNMl1nJp5956k1OnfP1lku98VPhtulRSZDc5qFdPyz+rflHR/DfoLlaHlt16RmFX93kRh25E80fro0j7Pc/ckKznhqZo2O8VqIq2kEEu4Qg1AmiPO2xrA3O31URh3++c36gM9/+MPfURSjZTyV8sZfy7Cjn+oSEZkiIpeJyHmOvwicewHQQ0S6iEgK1myFLmvZiUgn4GPgMmPMeqftmSKS5bgNjAdWRiCmkMzeaLVePjx1DceKA8zUF2V/+nBZyGN2X529hdve82whdaydV+hYlN3HD3tJeQU/bT7I3qPFrNrl/SpeOAY/+I3PtBveXOyxbcn2wK3tJzzyHf3v/5ojRaWUH02jZGcTXVpJhSLa+aFSEbcnN5H85Z2oLPU9PUjjtGRGdm8R8XP7Kr9ffmLniBx/QIcmZGeEthSRu47NMnj+V4N57pLBEYmptkTpp0vzOD9CXS4yksprYRWM/JLAc6Qt2naYt36qbtDxVjY8HGDIncO7PtZ0dnhoqvf1jX3lKyV7GrP/00Fs3BjU6ZVyEcwEWs2Ag8CpWHmw2P8/rsmJjTHlInIz8BWQCLxmjFklIjfY6S8B9wLNgRfsq8rl9szRrYFP7G1JwNvGmOk1iSe852D9n7JsF2nJCTx2wQD/D6iB4rIK0pJ9D4Z4f6HVwnvjmG5BH3P/sRKv2927uHibDKSgpJz7p6zig0XVLcu92mR57BcJRwpL/U5Y8tZP2xkU5EQw2w4Wkr+8I3lzjkP+F6kIVQMSlfxQqVoX5Z4x3i42bvr7mSSEcd5IXbj01jo9qX9bL3v6j8H5MGN7teKTJTtdzxPCi9u0BhX6KPVuqr95XA1esFCWi4y0grBbUf1/cQKtCezOfejes9+FX/MM9FYs3XHEY9uIv3/L3qPey60VBWkUrmvH4cBtI0p58FcZbiUif8BqcXVkiA4R+WkyxkwDprlte8np9rXAtV4etxmIXs3Tiyte+5kD+SVMvfVkr+kFJcFnVp8u2UnXlpn079AkqP0/XpzLH95fxhUndiYxIYF7z65egaqy0pDgp3TxxFfr+HixZ1do8F0ZdnDkkxf+a67LzIUAfe/7KqjYI8Exy7ZSMVSj/FBEJgBPY134e9UY86hb+hjgM6zl5AA+NsY8EMxjlfLJ3yczBj1jEsOpCTv55bCOJCQIb/8U3HCjUH1800khz4R7zoB2PpfFCWTBX04jLTnyM++GKeplvlhraCOjXp3lvzX7h3WhzaPjPhv35hpMYDojxHMDPivCStWUv8pwItCIECa6qs9+9DOhE8Ceo8WUlld6Xb7CmTHw+/eWAsEvofS1PeW+Y0p958rwseJyv13FnvvB9cpdpVML65Rlwa0xV1xWycduV7698TWxgT/BjlPxxxhrgrI9ecV8tnQnV5yUQ7eWjbzuK9AAP70qAsLOD53WVD8da66EBSIyxRjj3tQwyxhzVpiPVapOimTrZXZ6csBljWrC31JTLhNoRehJtcwKb8mocb1a0bpxKted3DUicdjqfZmvrswTciC/dip1C4OYsDUUD35R9352Hv9qLXvySurJJ1TFir/K8G5Hy4QKbNG2w9zxwTKeuWQQAEeLy3j7p+1cPLQjTTNTKC2vtPernaWJfAl2Yocvlu/yOyOgN2VhjGs57cmaTxL205aDjHz0+6r7b8zbxpZHzoxYgUUpapYfBlxTPUqPVQ1cQqJBUspA6klJUeDcQe15dfYWxvVuFetoYqZ5o1R+uvu0SB9Wy3y1ZOhD38Y6hIj6bGlwDSvR8PwPjrlyrPxAi30qHP6aMfUjFYB78eIbp1mWr/rPAh79ci0XvzwPoGpyq60Hg1uKKVqCbb29+e3Qu33FKhPy9px8rZtcT4qEqvbV5NMd7JrqJ4rIMhH5UkT6hvjYqC4jp+LTSacX0em2r0luWvu/O9GaoLBf+2y2PjqJrj56/9QFKYl1putzKLTMp+KWJFWQmFVEcs3m1FMNlL8ce1ytRRGn/E0+sNie4Xj93nwWbTtUtWB4WOeJkyqc+/T/haXl/LBuX0xi8VUxFyCj125aTF5Uq/GouFeT/DCYboeLgc7GmAHAs8CnITzW2hjFZeRUfKoLvxwNqYbVt11j3rnuhBrPch0j9b7MF8rEZiq+pOccpMNN3zOgVmcTUvWFz8qwMSa2/XnrgKv+8zNPf7shpMcUlpaTV+TaKnn+i/P8PuaNeVvJuWtq0Of479yt1XdCzNv9reFbU+6V4Ts/WsFV/1nA5v355JeUM3X57qid252/H72Ulvlk9tpTa7Go+FfD/DDgmurGmKPGmHz79jQgWURaBPNYpXxZsySF/Z8N4tULR8U6lLiXne5Zwe3TtrHL/T9P7M2J3ZrXVkgR1RDKfNqFVinlTTBLKzVYP6zbzw/r9vO703p4Tfd21f2kR7/nSGEZCRL8VXl/M2PuP1biUbG7b8qqqtsb9x3j+PZNgjxT8JNmhcP9h+Zz+1wFJRXc+eFypq7YTfdWp0Tt/M4qfbTaF5VVUHY4g/K89FqJQymc1lQHdmKtqf4r5x1EpA2w1xhjRGQ41oXKg8CRQI9VypcDu5MoXNuaVMLvmRSuv57VG7CWHqqpWPeO+ts5fbl4WEeXbR/deBLdWma6bBvVI/LrNSulAivZ2YQjc3uw8Vro3j3W0ah4E5cDW+oyX2NV/fE30dOwh7/1WxA4/8V53DdlZdX9tXuOsijCMwgGy9ezuOODZWw/ZI1ZKywNvLB7JFzxn5+9bn9t9hYKVnRg3/sjaiUOpYwx5YBjTfU1wPuONdUd66oDFwArRWQZ8AzwS2Px+tjafxYqnsViMsEOTTN46bIhpCUnRuyYsermesVJOR7PY0jnpjTJSIlJPCo80WwMULFVUZhC8eZWHA1t3lelAG0ZDllxWQXGwIqdeX73C+U6dqCf90Bdm3/aXN27acJTswBr2aZoLkHhzdFi7xXddXuPVd2urYiW53p/f5bl5gGtaykKpSxBrKn+HPBcsI9VStUdFw/tyHsLdwTeUcVUJJZyVErVP1oZDsJnS6vX2C2vNNz98QqmLNtFqp81hYXIVfwWbPXf0lvuo9L78NQ1EYogOu78cHlUjx+rFnKllFINx9/PO56/Te4beEelVJTogHAVPq0MB+F37y6tuv3UN+tZs9vqh1FS7rqubnF5RVjHr2kPNl8twF+urL0Jq4L17s/V46OjfSX9/BfnRvX4SilVl6WkGhIbFZMUuZ7KMRGtZZoiJTFBSEyI8xdZqXpAJ0lT4dAxwz5U+qhgvjp7i8/HhPuDXdMvr69lm3bnFdfswFHw/sLcWIeglFINwvBTC+nw2+/o1LmO1yaDpAVdpZQ3klxOcvNjpKbGOhIVj7Rl2IdXZ2/2mRZMsSLYokcoSyqpyMjsl0tqh8PA8FiHopRSKgDHkCR/Q5OC1alZBjeP1elmlapP0nMOkn7tTPr0mRTrUFQc0sqwD9sOFsY6BBUlyc0KSW6m769Sqn5b8XMq+z4Yxr6roF0Ta9u5A9vx6dL4mlX3shM7k1dUxg2ju9X4WDP/NDYCESmllKovtJt0DJVXVAbeKUyzNuyP2rHjXen+RhSu1xmllVL126H9SRRtbkVxcXX/4gfO7RfDiMKTmpTI7eN7RnSZJqVU/VG8oxl73jqRDRtiHYmKR9oy7ENtjE36z5ytUTv2Vm3Z9qlgTXuO/tQ11mEopVStS7B/3BqnJ8c4EqWUiozKomRKcptRqEVfFQZtGQ5DpNaqW7D1UOCdwnTPpyujdmyllFLxQ5yWHWmUmsQDk/vy7vUnxDCi+DCkc1P+cmbvWIdRb4jIBBFZJyIbReQuL+kiIs/Y6ctFZHAs4lRKNSzaMhxDX6/eG+sQlFJK1VO+JnK8/MSc2gwjbn1040mxDqHeEJFE4HngdCAXWCAiU4wxq512mwj0sP9GAC/a/5VSKmq0MuyD1HAB77q+LqJSSqn6LT2zkqRm+SQl6U+9irnhwEZjzGYAEXkXmAw4V4YnA28YYwwwX0SaiEhbY8zuSAVRWeo57lwSDJJUGTDdGDBlYaQnViKJpubplWDK/aULptyzw6ckVSIJ/tIrkAQwFYKpCCM9uQKRINLLEzCVnmXrQOkJKRVA4HSlwqW/kEoppVQ9NGx0Ee0P/kz7DuNiHYpS7YEdTvdz8Wz19bZPeyBileFdL4+hoiDNZVtG7520PGepdcLnTsOUuRaNGw3YRvMJ1tCzHf+c4HHMxsM20/TUNZjSRHY85ZmePXI9TUZtoCI/lZ0vnOaR3nTsahoP30L5oUx2vTrGI73ZGcvJGriD0r3Z7HljlEd6i7OXkNlnFyU7mrH3Xc/hDy3PX0BG930UbW7J/o+GeaS3vmQeaZ0OUbiuLQc+H+SR3uaKWaS2OUr+io4c+up4j/R2180guVkBRxd24cgMz2EF7X/7LUmNSsib1428ucd5pHe8bTqSUsHhmT05tsBzPpfOd1pLkB76ti/5yzq5pElKOZ1u+4qkpoWkdd5PUlJLj8crFYhWhn0wQa8U7J2Itg7XVVkDtpPedR+gXeCUUvVfbUwIqVQA3j6F7qWkYPZBRK4Hrgfo1KmTxwP8yR65gcpS16JvcvPqeWCanLLOo3UzpdXR6vQxazyOmdr2iBVXUqX39PaHAUhILfee3tGaPyYho9R7ejvr+ElZxV7THfElNS3wmu54fsnN872mJzUprDqO1/RGJXYch72mJ6SXApDW6aD39JRyK73LAcRLK64kWq3yGd33kphZ4pHukNFzN0lNC7w+NqXlMbJHbaB3b60Mq9BpZdiHN+dvj3UIKkqSsotIyi6KdRhKKRVVS+akseetE9h7NbRuHOtoVAOXC3R0ut8BcF/wOph9MMa8DLwMMHTo0JCaHbIG+S/bNR661WeaCGSP2Ow7PdH4TU9IqfCbnphe5j+9UYnf9KTGxX7Tk5sW+k9vkU92C98TxKa0OkZKq2M+01Pb5pHaNs9nelqHw6R1OOw7vdMh0jr5nlg2vcsB0rsc8Hv8BJ0WWIVBPzZRoq3CdVfJnsbkr2of6zCUUiqq8g4lUpLbnJISbRpWMbcA6CEiXUQkBfglMMVtnynA5fas0icAeZEcL6yUUt5oy7BqcArXteXogi6xDkMppWqFVoVVrBljykXkZuArIBF4zRizSkRusNNfAqYBZwIbgULgqljFq5RqOGJaGRaRCcDTWBnjq8aYR93SxU4/EytjvNIYsziYxyqllFINm3ZRUnWHMWYaVoXXedtLTrcN8Nvajksp1bDFrJu005pzE4E+wCUi0sdtN+c1567HWnMu2Mcq5Z2WD5VSSimllGrwYjlmuGrNOWNMKeBYc85Z1Zpzxpj5QBMRaRvkY5VSSqkGq1F2JSltjpCSqlcAlVJKKW9i2U26JmvOBfPYGqkoSubQN309tjfqu5P0bvspP5rG4Rm9PNKzBuwgrfNByg5ncGSW53pqjYdsJbX9EUr3Z5E3r5tHevaIzaS0PkrJ7myv41qbjNxAcvMCinc05diSzh7pTUevIym7iKItLchf0cEjvdm41SRmllK4oRUFa9p5pDc/YyUJqeUUrGlL4YbWHuktJi1DEg35K9tTtNltCnuBlmcvBeDY0k4Ub2/mmpxUSYszlwNwdGEOJbuauKQnpJXRfPwqAPLmd6N0X5ZLelKjEpqeak3bf2R2D8oOZbqmNymk6SnrATg8oyflR9Nd0lNa5JN90kYSM0tISCvD6mGvlFL10+CTi2h7YAFt2uo6w0qp+u3JiwbEOgQVp2JZGa7JmnNBrUUH4a9HZyoSKN2b7bG9ost+/+lFe6z0skSv6ZXFydb/kiTv6fb6dz7TyxLt46R4TTeO9CIf6fb6eRUFqd7TK62XtiLfezpGAEPF0XSPdJHqt6A8zzPdsdYcQPmRDI905/Xlyg97pleWFFbdLjuU6RlfZXVHh7KDjSg71Mg1Pns9uqyhW6nITwM8L0YopVR9oasaKKUairP6ezbwKBWMWFaGa7LmXEoQjwXCX48uqVEJ7a/70Wd6ctNCv+kprY75TU/rcNhvenrOQb/pGT32ktFjr8/0zD67yOzj9SUBIGvgDrIG7vCZ3njYVhoP2+ozPfukjWSftNFnetPR62g6ep3P9GanrfaZBtB84gq/6S3PWeo3vdX5i3ymiUDTsWvRyrBSqj5bNDOd3a+PYt81QquswPsDnNqrFd+v3RfdwJRSKsJSknS1WBWeWFaGq9acA3ZirTn3K7d9pgA3i8i7WN2g84wxu0VkfxCPVUoppRqs/DyrB1NZWUngnW2vXD6U8srKKEallFJK1R0xqwzXZM05X4+NwdNQSiml6qRwekknJgiJCTqfglJKqYYhpusM12TNOW+PVUoppZRSSimlgqEd7JVSSql6TLxNOamUUkqp2LYMK6WUUio6mjSvILXTAVJSg5w9K05Nu/VkNh/Ij3UYSiml4pC2DKsGSWcdVLVJRCaIyDoR2Sgid3lJv1REltt/c0VkgFPaVhFZISJLRWRh7Uau4tmAE4toc8lPtGoV60iiq0+7xrqsilJKqbBoy7BqkE7u3iLWIagGQkQSgeeB07GWi1sgIlOMMc7ri20BRhtjDovIRKzl4EY4pY81xhyotaBVvaK9pJVSSinvtHlMNUg6hk7VouHARmPMZmNMKfAuMNl5B2PMXGPMYfvufKy105WqkZ++y2Dny2PYsyfWkSillFJ1k1aGlVIqutoDO5zu59rbfLkG+NLpvgG+FpFFInJ9FOJT9VRhQQLlhzOprIh1JEoppVTdpN2klVIqurz1Q/C6BKyIjMWqDI9y2jzSGLNLRFoB34jIWmPMTC+PvR64HqBTp041j1rVH9oVRimllPJKW4ZVA6WFQ1VrcoGOTvc7ALvcdxKR/sCrwGRjzEHHdmPMLvv/PuATrG7XHowxLxtjhhpjhrZs2TKC4SullFLBOa51o1iHoFRItDKsGqSLh3UMvJNSkbEA6CEiXUQkBfglMMV5BxHpBHwMXGaMWe+0PVNEshy3gfHAylqLXMU3r/0PlFIqer6+bXSsQ1AqJNpNWjVIp/dpHesQVANhjCkXkZuBr4BE4DVjzCoRucFOfwm4F2gOvCBWl9ZyY8xQoDXwib0tCXjbGDM9Bk9DxaHmrctJ776X9NSmsQ5FKaWUqpO0Mqw8iIDRFgWlIsYYMw2Y5rbtJafb1wLXenncZmCA+3algtFvRDGt9q6ieYvTYx2KUkopVSdpN2nl4uXLhtClRWasw1BKKaWUUjU0/8/jau1cZx7fptbOpVSkaGVYVenRqhHj+7YhQWceVUqpuPfD1DR2PDeOwwcSYx2KUipG2mSn1dq5nv7lIK/bB3TI5tRerYI+ziXDdUUEVXu0MqyqPPsrKxNLqOd14VvH9Yh1CEopFXVFhUJlQRpJ9T1TV0q5aN8kPSbnTU60qhVtvVTALzuhc9DHEYFHzjs+YnEp5Y9WhpUHbRlWSqn4V2nP/ZColWGl6r2PbjzJZ9rtpx9Xi5HAmJ41W97PGO+tw80zU2p0XKW80cqw8iD1vDJcv5+dUkpZjD0TYn3P05Wqq/q1bxzrEAC4ZVwPtj46iRFdmtXK+bw1qpgQ1nrzlWX5q/ArFS6tDKsq6cnWuLL/O/94RnZvzkc3nhjjiGrmtSuHxjoEpZSKmUpdFkCpKhkptT923tcY2mhITgx80aumOUJKku9qQ6PU6gVqHN2lIy1HJ3hVUaCVYQVAu+w0Oje3Mpn+HZrw1rUnMKRz9K4g9m4b/aul0cqMlVIqHjRrW0pW312kx2b4oFJ1SiyGgNXGeP3hXZrx4qWDaZJe3YV4Yj9rVueZfxwb0XNNHtDOZ5rzM/X2vMVpj5vGdPN6DEeFWvuyqNqktQXF61cN4/s7xkT8uGsfnOAzLTs9iSYZyRE/pzNfjSLHtc6K6nmVUqouyDm+gA7nLadp01hHolTs1dcKVstGqUw8vq3Ltj+f2Zsl95xOp+YZtRaHc5Eryb0xQoRRPVpU3f3ThF5seHhiWOc5rXfws1IrFQytDCvG9GxFWnJ43YdaZqVW3Xaf7CDQMZfeO56tj04K67zu3rh6uNftb107gi9uGVV1f/LAdkzq39brvkopVZ/sziumrKIy1mEoVTfEoDYstXFSL6dITBCahjHZVN92/nvtBdu4PqBDtsc29956yYkJPHZ+f5dtJoihHbXZ9Vw1DFoZVn5dcWJnbhjdzeei7Q9O7ld1O5ITM4SycHuCwODOnk0fBhjZvQX92ldnyid0bR6J8JRSqs57980kNj0+nj17Yh2JUvGhfZN0OjULrTU1UAXyoqEdahKSh9+fFr3lIdMDNGIYYzUyeONcT3ZvqfbVVS8jNfSGmFQ/45aVCod+opRff5vcj7sm9vKZPr5Pa7+PP9mpW4wv7q26T140gD+c3jO4ALHGATlP3ODQraVOtKCUasAqBVPmmTcq1RAF06j5zCWD+P720SEdN9BY5N+fFtlljc4f7Fq5rmnbs3P4wUyw1awGyxv9cMcYvr7tlOrzuZ0w3Am+Pr5JZ5lW4dPKsKqRhACTQ4zvG7iF9/j2rt1pEkSC7orjK4YuLTLp0LT2xsoopZRSqu7ytsSY81Ava5/QjzuiSzOaZ6bwm9Fdww3NL/exte6zYp8eoFHC2UndPHvHOT/lQN2Uvb0+jqFoZw/0PbmWQ5cWmX7nbXGcPpT3oX2TdAZ30okRVPhiUhkWkWYi8o2IbLD/e3yKRaSjiPwgImtEZJWI/M4p7X4R2SkiS+2/M2v3GcSvdtlpYT3OW8b0n6uGeWxr5fbDEg0L/3oaj19QPc7EW33cVx19WE7trLGnlFJKqbpjnD3xknNvt85eukT7W5f74qEdPbY1yUhm0T2n8+eJvb0+pqaTWLuPtXVUV5tlprDuoQlMHtg+6GPdeqr/LtbuVeFgVv5IS05g2b3jXYbNBSuclmD39yeYccZK+ROrluG7gO+MMT2A7+z77sqB240xvYETgN+KSB+n9H8aYwbaf9OiH3JkBRqXES1PXjyQxy7oz9s+xnz40iorlZTEBNo0rq5M5zT37Ibs3n3mvEHBZ9IO3hZmf/S846tut2iUyoVDO/LSr4f4jMM9s3TMPti9VaOQ41FKKaVUfHvs/P58c9sp3DC6Gx/ccGLV9m9uO4XsdGt1C8H3xXSoecU20lKTqsuS3spO7hIShBaNXMtpzo9yr1emBLF2cZvsdLIzkkkM44Vzr8gG8xw8D13H3hQVd2JVGZ4M/Ne+/V/gXPcdjDG7jTGL7dvHgDVA6DWrMHWJ8sLen908MqrH9+eioR05rk1oywuJCOsfnsjcu06tmlwiKy3wWLTM1CQ2/f1MjxZjfzMsGuM5BsbbxFcDOlrdq71N3OWewb746yEsu298wHiVUqq+SG6RT6OB23SdYaWwlvvpYXfRdS4i9GidRWd7CSIRQUQ4rbf3rsfeGiGdK2N3n+k5x0okZ5T+/OZRNT7ae785kTvGex/H7DF5qVtF85pRrl3Bl98/3uucLbVJW4ZVTcWqMtzaGLMbrEov4HfRMBHJAQYBPzltvllElovIa966WdeUMYZz/CwuHq9qmokmJAjf3T6aH/84hhaNrApu0wDrBScmSNALz4/v05oJ/aoz45zmGax+4AxyvFycaJudzne3j+avZ/XxSHOXnJhQdeVXKaXqu4KSctI6HqL5GSvJ9lzlRClFdV3vihNzAKvMURPXn9It4D5/neS9O3UwjndasijcSmC3lo242am7tHPZaEhnt8YFt3P0DLEhJZBwnoK2A6tIi1plWES+FZGVXv4mh3icRsBHwO+NMUftzS8C3YCBwG7gH34ef72ILBSRhfv37w/6vAbXC2JPXDgglLDrteTEBDo7dU0+uUfLkI/hrVW5SUYyL18+lIyUJFLtbuRts9PJSPF91bFby0Ye42mUUqqh+3r1Hoyh6k8p5dv5Qzqw9dFJNMnwP1NyqD1yRcLrWt02zPldQvH0LwcC8OrlQ522emYW/doHHjccrqru6fZrVDWBVghVXu0mrWoqarUIY8xpxph+Xv4+A/aKSFsA+/8+b8cQkWSsivBbxpiPnY691xhTYYypBF4Bhnt7vL3vy8aYocaYoS1bBl9pM8Z1uvzJQcySF4o2tZDR+RPJrMM5H/LVvdw9swp0dbF9k3SeuWQQL1w6uMbxKaVUQ/PN6r3kL+nM9scmEcJ1YKUahPZNrbED43x0h/ZVvwr1wlI4F6LO6t+Wa0Z1CbhfTSuBkwe2Z+ujkxia06yqwusRrwif3zyqRufxZ0zPljz9y4HcMd5aTjOc63ax7qat4l+smtSmAFfYt68APnPfQaxv+b+BNcaYJ93SnFfz/gWwMtIBju3ZkoEdm1TdT05MCLqrbzAapyWz9dFJVfcfcZogKlR3TvC9DvCvT+jkcj8aV9CcM8/Hg2hBb98knYucZmTMSkuiUWoS97p1dz5nQDua1mA9O6WUaqi0NVgp39o3SWfZveP5zSnRWQ7JWailrrvP7E1aEJOsRnKs7Kc3jWTdQxPoZHcTv3BI9VrG7uVG57upSYGrERcN7cA/L/JeNhQRJg9sT4qjh18QSytpQ7CKtFhVhh8FTheRDcDp9n1EpJ2IOGaGHglcBpzqZQmlx0RkhYgsB8YCt0U6wL9N7scVJ+W4bItm2eKS4Z0C7+TDhUM7eN3+0q8H0yzT+1JH0Ro/2yg1iSGdm3LrONfp+x3jgOfedSpz7jqVjk7LGSQlJrDyb2dw3mDvzyMcoSw1oJRS9Y1WhpXyLzsjOSoNBJef2LnqtggeteFfDu9Uo8qer5jbZqfTq00W/7vGZ2dJn5ISE0hNSqRVVhpbHjmTS0YELpN2aJruMpu1L49dMICuLXUlD1V3xaRvgTHmIDDOy/ZdwJn27dn4uKBmjLksqgH6EMxVuM1/P5Oud9fuSk++ZnVu3ySD1buPeU1LiuA4W/d8+aMbT/LY5+4ze3Pz2O610tK75oEJpCXrOGKlGrqlO46waNvhoLoc1jfhLFGilPLukuGdeOfn7UHt+8DkfhzIL2Haij2kpyRS6VR2/M3orjRKTWLLI5PYd6yY4Q9/B8CMO8Yw/p8zKa2oDHq8rPs3PCUpgem/PyWox/ojIlXDBL11iHT0knRfJSRWTujquaKIUqHQGkMIgila+Lui53cNNuDDG05keE5oX+qtj05yuTLnPl2++xlj1b0kMUEiUhFu3Thw5puekqgTKihVD705fxvfrN4b9P7nPj+HB79YXePzHswvqfXlO1bk5nHjm4sor6gM6/FhPkwpRXXZKSMlkRO6Ngt5lul/XDiQT387khaNUn12eW6VVT13TE6LTE7tZS2skpacEPOuwP3bZ3P1yC4888tBHmndWjbirom9eOHSIRE/bzAX8ZzLdz/cMSaoFUWU8kcrwwG8ec0I3r5uBBBctzN/lbBrfbROOCrAQ3OaMdzLmrnh6tSsZksE1DWr/nYGP/5xbKzDUErFyF8/Xcl1byys0TE27c/ns6U7KS6r4Ib/LWLHoUK/+6/alceQh77lg0W5NTqvN2UVldzyzhI27vPswXPzO4v5cuUecg8XhXXsispKklsdpdu4XDLq10+BUlHnKMo9edEA3r3+RI/tDimJCZzd33OC1fSUxKp5ZxqnJTOhbxuPfdz98+KBfHHLKJpkpNA0wKzWEN0lhhIShHvP7uMypK3qvCLcMLpbwIlg5/35VBbfc3pQ53OfTdrd5zePYvadnuW/Li0ydUURVWM6BVsAo3q0iNixHC2jZzutX/z97aNp3Ti0maX/dk5f7puyymuaiHDH+OPISEki28v6v/HcXpqpMwYqFRUrcvP4cNEO7j+nL8Vllew7VuyyfFpNHcwv4Yvlu7n8xM5h99qYvnJPwH22HCigUWoSwx7+lt+OdV3vs7S8kk378znzmVkYAy9fNoTpq/ZwtLiMt687wecxN+zNB2DOxgNcNLQjb8zbSml5Jdee7H3inZd+3MTYnq08ZswvKa8AcOnJ889v1vP5sl0s3HqIeX92HTnk6Frp6FG0cmce+/NLGNuzVcDX4WhxGT+s209aB+h3oqFRo8jNx6BUQ+ZeWVv/8MSgHjegYxOmr/Kfh6WnJNKvvbWO8MR+bbj8xM5VK5ncNbEXzdx619X1gRBts9PDfqz7r4Tz+soOvSK85rFquLR2EUGvXzXM5f4bVw/n8td+BuC41tWTB7RzupoWzqQCV5yUw31TVtGxmWdG84tB7WnXpHq7o9x54ZAONE5PZnCnpiGfTylVfxWXVXD2c7MBuP2Mntz05mJmbzzAyT1acPv4nqzcmUf/Dtks2naYS4Z3cunyV1FpSBAoqzAkJ4rPiu6t7y5hzsaDnNC1uc9l1T5clMt/527l81s8l/FYu+coN7y5yGP70h1H6Noyk8Zp1oW/sU/MqEp7/odNLvs++MVq/jd/W9X9dxfsAGDupoM8+90Gzh3Unk378xnTsxU/rt+PAKccV70c35YDBQDc+5l1IXLD3nwe/kU/nvl+I2nJCfxiUHtaZ6Xx6Jdreerb9ax9sLqQXFlp6PnX6QC89OshVRMKvm2PQdydV+wS65crdrPjkNUi/PXqvczesJ8f1lWvjzTnrlNp3ySdHYcK+eunK+nbrjFdWzZiYMcmdG/ViBvt18pUCKYkicpKSNDGE6XCNrK71TAyrncr3lu4I2LHTRAY2tmzR6CI8MDkflX3bxhdfXEvnhs1Agm2gv/+b06kRyudlEtFhlaGa2Bgxyb86Yye/OrVnwAY43bF3rGOHcDXt43mxRmuhTNvgm00+fJ3J9PGS4uyc0UY4PzBHfjv3K3ccmqPqinznXVoGv6VO6VU/DtUUFp1u7S8ktkbDwAwa8MBZm044LLv1gMF/PbU7gx/+DteuXyoS5flv5zZm5HdW7A7r4ixPVtRWFbB+Cd/5JlLBrF0+xEA7v1sJSO6NOOiYR35ZPFONh8o4J8XDwTgjg+W+YzxxjcXu9yvqDQYYzj3+TkMy2nKBzd4Ttrn7KKX5vHz1kMu275fW728/T++Wc8/vllvPcdHJ3GFfRHTefm75bl5VFZWF9XeW7jDpVD82PR1fGFX5IvLXAfs/vPb9VW3//jBMsb3aU15pWexb09eMZmpidz4VvXz9Tbm+cY3FzHl5lFc98ZC1u45xo/rrYpyYoLwwOS+zNl4EIBjSzsx5Yl+HLocWkSuk5NSIRGRZsB7QA6wFbjIGHPYy35bgWNABVBujBlae1F652gJ7tc+m62PTiKvsCyix9/8yKTAO7lJsZczqo+NG465GQL1IIrkkEKltDJcA1eelMNJ3Vtwx/jjGOLlyl5miuvL292+iuWrZQRgSOfqzK1n6yzW7fU+G3Tvto1d7l8zqgv9vXQj6dgsgyX3jvd6jOX3j69e200p1SD94+vqitrQh771u+9/523jv/Os1lX3sbsPT1tTdfvPE3vRv0MTduUVc/HL86mwK34/bTnET1sO8cz3G6v2/d24HuS08N4le09eMfM3H+RwYanL9vLKyqpjLth6mOEPf8s/fKxjCXhUhP35bOnOqtub9ue7pAVaKeCsZ2dX3X511mbG9GzFyzM38f5C1/HGf/t8VdXr6HDakz+ycZ/r+XxZnpvHHz9YxsEC19elotLwl09WBnUMpWrRXcB3xphHReQu+/6dPvYda4w54COt1vic0bkONMtmpibxxS2j6NoyckNZAnn+V4Ojej7HkMSJ/doydcXuWp+wUDVsWhmOgJtP7eF1u/uSR6f3ac2XvzvZ7ziHMT1bMf33JzPhqVmcN7g9j3y5NqgY7gljNj1H10KlVHSJyATgaSAReNUY86hbutjpZwKFwJXGmMXBPLamPloc+YmhnPOtCi8toM4ueWW+Szfhi/81j3V7jzG0c1O+XbPP62O+Xb2P375d3Xq671gJl/375xpGbfndu0urbo/7x49hH+ehqWt4aOoaj+3HSso9KsJA0BVhh+Am9KoDJXelYDIwxr79X2AGvivDdcLIHi2YvmoPXdwrgGHW0SK91JljbHFtmdS/bVSP36tNY7Y+Oon/zNnC1BW7q7bfe1YfdueFN4mgUsHSynANtA0wk563CZ/cW3S96dWmMSvuH0+j1KSgK8PKot2+VV0jIonA88DpQC6wQESmGGOc+79OBHrYfyOAF4ERQT42rrmPl/1pi9WK66siDLhUhFVgsV6mRTV4rY0xuwGMMbtFxNcscAb4WkQM8C9jzMu1FqGbX4/oxBl9W7ssf+Tu1ctj3ou73nJ0k766Aa4Rr2qfVoZD8Owlg/jfvG28e/0JLMs9wiAf4zVSEhO45dTuNTpXVhy12ibamVasC1zz/zyOzFTv6/kpFUPDgY3GmM0AIvIuVkuJc4V2MvCGsfqGzReRJiLSFmuMXaDH1ogxULjW86p/crMCUlofxVQIhes9lwVJbnGMlJb5VJYlULSxtUd6SqujJDcvoLIkiaLNLT3T2x4huUkRFUXJFG/1HNCa2v4wSY2LqShIoXh7c8/0DodIyiqh/FgqJbmew1TSOh0kMbOU8rx0SnY18Uzvsp/EtHLKDmdQusezlSW96z4SUisoO5hJ6T7Pi5gZPfYiSZWU7s+i7IDnRC4ZPfcgCYbSvY0pO+TZvTCzt9X6UbIrm/I81/kcJMGQ0dOaebY4tykVx1wL5JJUQUYP62JB8Y5mVOS7rr+ekFJOejdrHHFKikFbiFW0ici3gLf1g/4SwmFGGmN22ZXlb0RkrTFmppdzXQ9cD9CpU6ew4g1ERPxWhAFO6+OZ7/k8nn4Hg6K9o1UsaGU4BGcPaFe1LJKvijAEP9V+ffGXSb3JTE1iYr/odqMJJNCad0rFSHvAefrRXKzW30D7tA/ysUDNCogHpgz22NZ4+CarMlye6DU9e9Q6UlpupLIoxWt601NXk9x8CxXH0rymN5uwnOQmOyg/kuE1vcU5i0lqvJvSA1le01tesICkrH2U7mniNb31r+aRmHmI4txmHPxioEd62ytnkZh2lOKtLTj09fEe6e2u/4GE1EIKN7bmyIzeHukdbv6GxKRSCte2JW+u51CZjrdNR1IqyF/ZnmML3ZdhMlWV4fxlnchf7vp+SUoZnezK8LFFORSudV3HNLFRERk9vgfg6PxuFG12bWhLapZP+24/ktlrF0OkD+naYUZFmTHmNF9pIrJXRNrarcJtAa/dPowxu+z/+0TkE6wLiR6VYbvF+GWAoUOHavVJKVUjWhmOsqtG5lTN9BmO8X1a8/XqvVX3fzPa+9qWsdS8USoPntsv8I5KNUzemgTcC3C+9gnmsdbGGhQQ213jOTY2Id2anEmSy72nZ1jpiZkl3tMzSwBIalLoPb2R1T06ucUxr+mJWVZ6atsjPtKtcWRpnQ54T88uBCCj+15SvaQnNbHTe+8iraPnBFtJja3jN+q/g4xunmX3hHRrVtmsIVvJ7L3LI12SrXWFs0/YRNYA30uxZJ+8nsbDtrg9uPrtazp2DU1GbnA7efVs1c3OWIEpdfspT7TSEzNL+eRjIcNzIQGlatMU4ArgUfv/Z+47iEgmkGCMOWbfHg88UKtRRlFze43glo1SA+zZsCUnist/pWqDVoaj7L6z+9bo8aN7tuTr1XuZPLAdD5zTj+yM+Ok+rZQCrNbcjk73OwDutSdf+6QE8dgaEYHkFr4nb5KEAOmJxn96UqXf9ITkShL8padUkNAin6tG5vCfOVs90tMyDaWp1Y//8Y9jWLL9CL9/b6n1+NRyElJ9Hz8xrZzEND/p6WUkprsup3L2gHZ8vsx6TGJGKelZ5aQkJZBfUu75+MxSEjNLPbY7JDUqgUYlLtvOGdCOpy4eTUl5JdNW7OZ2p2WnPrjhRF6euZlvVluV+aatyjmrfysGdszmzo9WADD11lF8v2Yf5wxsRyNdilPF3qPA+yJyDbAduBBARNphTQp4JtAa+MQeK5oEvG2MmR6jeANqnBZa8fmCIR1ITU7grP7tAu/cgF00rCM7Dhdx6zjvE9MqFQ1aGa7jHONM0pMTtSKsVHxaAPQQkS7ATuCXwK/c9pkC3GyPCR4B5NldCvcH8dgaefDcfjwybQ3NMlP4v/P7M7J7C4Y8+E3Vsj1PXDiATfvzva6TvuWRMxERBj3wNYcLy0hJSqBxWhIH8n1X/gD6tmvMql1HXbY9ceEA3pi3leW5eQCc1K05L18+lK9X7WHjvnz+NKEX/Ttkc9t7yxjbsyUb9uXz+lXD6d6qESty85iz6QBXjcwhNSmRzs0z6dgsndSkRKav3MMt47qz72gJC7cd4heDOlSd85Mludz23jK+uGVU1bJIWx+dRHlFJUVlFbwyawub9uXz2AX9yUxNIueuqaQmJfDsJYO4Y/xxLMvNIzs9meE5zUhPSWTupgO88MOmqrWaT+7RglHdW9CnXWN2Hynm9D6tWZZ7hAQRZm3Yz6UjOtMyK5Vnv9/I+L6t6W/PEJtkL3mXnpLI+UM6cPaAdlQaQ1qyNSfCsJxmTFm2i/KKSs4bXP18zh7QjuTEBJITE+jbrnZnm1XKF2PMQWCcl+27sGbQx54Xwff6aHEuIUGYPLB9rMOo81KTErn7TM9hKUpFkzSktbyGDh1qFi5cGHjHOuSdn7fz549X8MthHXn0/P6xDkepeklEFhljojY1qIicCTyFtTzSa8aYh0XkBgBjzEv20krPAROwlla6yhiz0NdjA52vpnldUWkFe48Wk52eTFO7e9+CrYe49JWfmH/3OPYeLaZJRjJts63BqLe+s4Qpy3bx893jSE1OZMDfvgbgf9dYldUTH/ne5fhbH53E8Ie/pbC0ggcm92Viv7akpyRSVFrBseIykhMTyEhNJDUp+hPiFZdVkJacyH/nbiW/pJzfjvU9+eG6PcdompkccGKd+6esokWjFJ/L7ikVK9HO62pbbZfr8grLGPDA1zROS2L5/WfU2nmVUqEJJa/TynAdt+tIESc9+j1Tbh5J/w5NYh2OUvWSFhBrpqi0grV7jlZNLPjBwh0MzWlGlxausyif89xsRnZvwZ0TetVabEqpaprX1Ux5RSUDH/iG+8/pywVDOgR+gFIqJkLJ67SbdB3Xrkk6Wx+dFOswlFLKp/SURJcZ9i8c2tHrflNuHlVbISmlVMQlJSaw8m/aIqxUfZIQ6wCUUkoppZRSSqnappVhpZRSSimllFINjlaGlVJKKaWUUko1OFoZVkoppZRSSinV4GhlWCmllFJKKaVUg6OVYaWUUkoppZRSDY5WhpVSSimllFJKNThaGVZKKaWUUkop1eBoZVgppZRSSimlVIOjlWGllFJKKaWUUg2OGGNiHUOtEZH9wLYQHtICOBClcGpDPMcfz7GDxh9rocbf2RjTMlrB1DbN6+JKPMcOGn+saV6neV08ief44zl2aHjxB53XNajKcKhEZKExZmis4whXPMcfz7GDxh9r8R5/bYv31yue44/n2EHjj7V4j7+2xfvrpfHHTjzHDhq/P9pNWimllFJKKaVUg6OVYaWUUkoppZRSDY5Whv17OdYB1FA8xx/PsYPGH2vxHn9ti/fXK57jj+fYQeOPtXiPv7bF++ul8cdOPMcOGr9POmZYKaWUUkoppVSDoy3DSimllFJKKaUaHK0MAyIyQUTWichGEbnLS7qIyDN2+nIRGRyLOL0JIvZL7ZiXi8hcERkQizh9CRS/037DRKRCRC6ozfgCCSZ+ERkjIktFZJWI/FjbMfoSxGcnW0Q+F5FlduxXxSJOX0TkNRHZJyIrfaTX2e9trGheFzua18VWPOd3mteFTvO62NG8LrY0rwuDMaZB/wGJwCagK5ACLAP6uO1zJvAlIMAJwE+xjjuE2E8Cmtq3J9aV2ION32m/74FpwAWxjjvE178JsBroZN9vFeu4Q4j9buD/7NstgUNASqxjd4rvFGAwsNJHep383tbx97xOvmaa19X9+OtqXhdC/HU2v9O8Lirvd518zTSvq/vxa14X1fhjktdpyzAMBzYaYzYbY0qBd4HJbvtMBt4wlvlAExFpW9uBehEwdmPMXGPMYfvufKBDLcfoTzCvPcAtwEfAvtoMLgjBxP8r4GNjzHYAY0xdeQ7BxG6ALBERoBFWhlleu2H6ZoyZiRWTL3X1exsrmtfFjuZ1sRXX+Z3mdSHTvC52NK+LLc3rwqCVYWgP7HC6n2tvC3WfWAg1rmuwrqjUFQHjF5H2wC+Al2oxrmAF8/ofBzQVkRkiskhELq+16PwLJvbngN7ALmAF8DtjTGXthBcRdfV7Gyua18WO5nWxVd/zu7r6vY0VzetiR/O62NK8LgxJNT1APSBetrlPsR3MPrEQdFwiMhYr0xwV1YhCE0z8TwF3GmMqrItYdUow8ScBQ4BxQDowT0TmG2PWRzu4AIKJ/QxgKXAq0A34RkRmGWOORjm2SKmr39tY0bwudjSvi636nt/V1e9trGheFzua18WW5nVh0MqwdVWho9P9DlhXS0LdJxaCiktE+gOvAhONMQdrKbZgBBP/UOBdO8NsAZwpIuXGmE9rJUL/gv3sHDDGFAAFIjITGADEOtMMJvargEeNNVBjo4hsAXoBP9dOiDVWV7+3saJ5XexoXhdb9T2/q6vf21jRvC52NK+LLc3rwhGJgcfx/Id1QWAz0IXqweZ93faZhOuA7Z9jHXcIsXcCNgInxTrecOJ32/916tZEC8G8/r2B7+x9M4CVQL84if1F4H77dmtgJ9Ai1rG7xZiD74kW6uT3to6/53XyNdO8ru7HX1fzuhDir9P5neZ1EX+/6+Rrpnld3Y9f87qoP4daz+safMuwMaZcRG4GvsKahe01Y8wqEbnBTn8Ja7a7M7Eyn0KsqyoxF2Ts9wLNgRfsq3DlxpihsYrZWZDx11nBxG+MWSMi04HlQCXwqjHG65TxtSnI1/5B4HURWYGV8dxpjDkQs6DdiMg7wBighYjkAvcByVC3v7exonld7GheF1vxnt9pXhcazetiR/O62NK8Lszz2jVtpZRSSimllFKqwdDZpJVSSimllFJKNThaGVZKKaWUUkop1eBoZVgppZRSSimlVIOjlWGllFJKKaWUUg2OVoaVUkoppZRSSjU4WhlWSimllFJKKdXgaGVYKaWUUkoppVSDo5Vh1aCIyDARWS4iaSKSKSKrRKRfrONSSqlI0rxOKdUQaF6nakqMMbGOQalaJSIPAWlAOpBrjHkkxiEppVTEaV6nlGoINK9TNaGVYdXgiEgKsAAoBk4yxlTEOCSllIo4zeuUUg2B5nWqJrSbtGqImgGNgCysK4lKKVUfaV6nlGoINK9TYdOWYdXgiMgU4F2gC9DWGHNzjENSSqmI07xOKdUQaF6naiIp1gEoVZtE5HKg3BjztogkAnNF5FRjzPexjk0ppSJF8zqlVEOgeZ2qKW0ZVkoppZRSSinV4OiYYaWUUkoppZRSDY5WhpVSSimllFJKNThaGVZKKaWUUkop1eBoZVgppZRSSimlVIOjlWGllFJKKaWUUg2OVoZtIvK6iDzkJ32MiOTWZkxKKVUbRGSriJwW6ziUUioUgcpuAR57v4i8GeZjXcqEmocqFb+0MtzAiMgMESkWkXwROSAiH4tIW6f0JiLymojsEZFjIrJeRO6MZczeiMg4EVkrIoUi8oOIdPazbzMR+URECkRkm4j8yi39WhHZaL8m00WknVPa70Vks4gcFZFdIvJPEQlqfW4RuVJEKuzjHhWRZSJyVvjPuuq4OSJiAsVh71Ngn3+niDxpr8Hn+OEustMcf885xT3by/GqfuzdnpvzXzv3x/l5Dj/Y799af4UIEfmjiKy0P49bROSPbuk/iMh+p9d4slv6LfbjjorIQhEZFUyMKr4E830TkWvsz9sxEdkrIlNFJCtWMXsTKL/ysv9tdn6dZ+fdqU5pvUXkeztto4j8wscx7rPzi6AL8/7yl5oQ6zfq2gD7vC4ipfa5D4nINyLSy067X0TK3PKlI25xd3c7nkulyO25Of7+FGT8IiL/JyIH7b/HRER87HuCHfshOw/7QFx/jwPlfQNFZJb9/uaKyL3BxKg8iUgLEZljv2dHRGSeiIyMdVw15e+7YqeniMg/7M9Pvv05+2csY/bG/qwvEqvMsEhEBvrZN9XOC4/aeeMf3NJPFZHFdvpmEbneLb2riHxhf+8OiMhjQcY4RkQq7dfxmIisE5GrwnrCnsf2yLe87ONcrtsrIv8RkUZ2mnPZ3/H3uVPcHo19znmx23Nz/jsxyPiD/l0TkSvs9/io/bl8TJzKu15iqBCRZ+20S93SCu3Xboi/+LQyHAQJsvJTF44d5PFuNsY0AroDjYAnnNL+aW/rDWQD5wCbYhCjv8e3AD4G7gGaAQuB9/w85HmgFGgNXAq8KCJ97WONBv4OTLaPtQV4x+mxnwODjTGNgX7AAODWEMKdZ7/WTYAXgHdFpEkIj6+pAfb5xwG/Aq5zSjvbGNPI6e/mEI89z+3xjYwxu4J87DvAEqA58BfgQxFp6WNfAS4HmgITgJtF5JdO6b8D2trv0fXAm44CpYiMAB4FLsD6PP8b+EQiUGivD6KZt9nHj9jrHGSsPr9vTt/1S4wxWVh53PuRii+EGAPxmV95Od8ZwF1Y3+8coCvwN6dYPgO+wMrbHN+N49yO0Q3r+7E7jFgd+cto4GLg6jCOEa7H7HN3APYBrzulveeWLzUJ4/gD3I4RVIEY63U+F+u3oj9wFvAbH/s2BV7Geu86A8eA/zilB8r73gZmYr2/o4EbReScIONUrvKxPr8tsV7v/wM+j3YeWUsc35X2wE6s30GHPwNDgeFAFjAW67c5YiJQ5kvBysvexHpv/gt8Zm/35n6gB9Z3aizwJxGZYB8rGfgE+BdWmeBi4EkRGeB0rm+A74E2WPlLKL0HdtmvdWPgNuAVEekZwuNr6mz7/IOBYcBfndJudsvTzg7x2Lu8lPnmBfnYoH/XgAzg90ALYATW79sdjkTn89vHKwI+sNPecku/CdgMLPYXXIOtDIvIIPvK0DEReQ9Ic0obY1+NuFNE9uD64+TYp52IfCTW1dwtInKrU9pwsa4qHhGR3SLynPOX1r5K8VsR2QBscDrf7SKyz37MVU77p4rIEyKy3b7a85KIpAcbqy/GmCPAp8BAp83DgLeNMYeNMZXGmLXGmA+dYukr1Vey94rI3U4xPiVW6+ku+3aqrxhFJEFE7hKRTWJdiX1fRJoFGfp5wCpjzAfGmGKsjG+AOF3tdIo3EzgfuMcYk2+MmQ1MAS6zdzkb+MAYs8oYUwo8CJxiFxAxxmyyXyewCiaVWBcRQmKMqQT+B2RiZdKISLaIvGF/hraJyF9FJMFOS7Dvb7M/E2+ISLZ9uJn2/yMS5JU5Y8xaYBZWhT6m7ML4YOA+Y0yRMeYjYAXW++TBGPOYMWaxMabcGLMO60dxpFP6cmNMueMukAx0tO/nYH1WFhljDPAGVgbbKgpPLS6IdfX4ThFZDhS4F1QCfTfFar1ytETOdP5BE6sV4kURmSYiBcBY+3x3iMhy+zHviYhzfnuWiCy188u5ItI/2Fh98fZ9w8rb5hljltj7HDLG/NcYc8w+V7pYLSTb7DhnO+Wz54jIKjvGGSLS21+MYrX4zbX3XyYiY4KJO4j8yt0VwL/t/OswVv51pZ3WC2gH/NMYU2GM+R6Y4+VYzwF3YhVUwmKM2Wgfe6DTc7lOrNboQyIyRVx73JwkIgvs13mBiJxkb38YOBl4Tpx6qwQ4dyFWpTDmeZvtCuAfxphcY8xO4B9UvycujDFf2r9jR+3n8RyueZvfvA8rf3vLfn83AbMBXwXMekGCK7v9SarLUueKyJli9XI75CizuDPGFBtj1tl5hwAVWBWvZvax0+387bCIrMbKT3zF6LMMKJZ/2vHl2fliPzvtTBFZbT+3nSJyh9MxfX6fgmWMKcK6ADjQafMw4BNjzC5j2WqMecPpvB3F6kG43/49cPQg81lGkerea9eIyHasiiUicrWIrLFfw6/ET48+N2OAJOApY0yJMeYZrPfoVB/7Xw48aJdj1wCvUP0dbIZVUf2f/XwXAGuAPnb6lViVvieNMQX252J5kHFWsY89DTiEdVHMbznZTvf6HouIo8y3zM4XLw7i/DuBL6kD+WKov2vGmBeNMbOMMaX283gL13zP2QVYF0Nn+Ui/AnjDLv/51CArw3am9ClWYakZ1hUF94J4GzutM9aVXufHJ2C1GC7DutI2Dvi9WFfpwcpEb8MqdJ9op9/kdvxzsa54OL6AbbCuUrUHrgGeF5Gmdtr/AcdhZWDd7X2cu0P5jNUfEWmOVbHc6LR5PvCwiFwlIj3c9s8CvgWmYxWyugPf2cl/AU6wYxyAdZXR+YqUe4y32q/BaPtYh7GuHDnOtVx8d6Poi/XaA2CMKcBqvfZWCDgOqDDGrHfatsxpX7H/cLoPThmIiPxKRI4CB+zn9i8fcfkkVgvZVUAZsM3e/CzWe94V63W43N4HrAz5Sqyrml2xWusdBcNT7P9Ngr0yJyJ9sAqZEb3i6+d8L4jICz6S+wKbHZUQm/N74u+4gvU8Vrlt/0JEioGfgBlYvQXA+jFIFJER9ntwNbAU2BP8s6mXLgEmYX2Gyt3S/H43sV7THlgXFBZj/VA5+xXwMFYrg6O7/UVYLVtdsAoGVwKIyGDgNayWs+ZY360pzgWEALF65eP79hNwhoj8TURGup0DrB4yQ4CTsPKqPwGVYl28eQfrSnVLYBpWi5Fzq0RVjFhXqqcCD9nHuQP4SOyeD2JdaPjCR+iB8it3Lnmhfbu1nbd765oruOZtFwKldqEtbGJdiDwZ+7dERE4FHsF639tivQfv2mnNsF6fZ7De8yeBqSLS3BjzF6xCjaMFI2BvFbG6AV5K7eVto8Sp27UX3t6TYCuop+CWtzmd11ve9xRwuYgki9X6dCLWb3S9FELZLY3qctIrwK+xvtsnA/eKSFc/51gOFGMV1l81xuyzk+4Dutl/Z2AVsn3xVwYcj/U+H4eVX1wMHLTT/g38xlg9V/pRXYn0+X0KhV0puQTPMt8fROQmETne/pw59k/E6lmyDevCS3un816J7zKKw2isHjhniMi5wN1YZc6WWN/zql549m/4XT5C7wssd6vQLMfL98ouN7fDx3fQGLPXPu9VIpIoVmNCZ6p/q04AtorIl2J1kZ4hIsf7iMsn+2LBOVifAcfr7bOc7O89NsY4ynwD7HzRX09Ix/k7AmdSe/liJH/X3PnMF/FT2bUvtpyC1QjinzGmwf3ZL84uQJy2zQUesm+PwbpKnuaUPgbItW+PALa7HfPPwH98nO/3WFfeHPcNcKrbsYuAJKdt+7C+NAIUAN2c0k4EtviKNcBznwEUAnl2HEuBTk7p6VgZ1iKsguRGYKKddgmwxMdxNwFnOt0/A9jq5/VcA4xzut/WPl9SEM/h38CjbtvmAFd62fdkYI/btuuAGfbtcViV3P72c/8XVuvvJV6O1QOr5aVNkK/1lUA5cMR+bkXARXZaIlAC9HHa/zdOcX0H3OSU1tPx+mD9KJlAr5W9z1GsyswmrMJ5gp22Fatb2BGnv+u8xO38Vwmc5mefTUG+LpcB8922PQy8HsRj/4aViaZ6SUsGJgK3OW0TrM9zmR3vAWBYMHHW1z/7vb/ayzbHexv0dxOrMGeAbPv+61g/TO7H/rXT/ceAl+zbL2JdwXfefx0w2lesfp6X82fS5fvmtM9ErAuZR+zP/5NY38UEe/8BXo57D/C+0/0ErK6GY7zFiNXK+j+3Y3wFXBHEc/CbX3nZfxMwwel+sv1+5Ni3N2NV6pOxCuGlwFf2vo2ADUAX989AkK+3I38psG+/4/heYuXRjznt28h+T3Kwvv8/ux1rHnb+jfUbdW2Ac7+OVWE5gnVhawr2byRWT6FSXPOmH7zE7ZxeDLwZYJ8zgnxdKoBeTvd72MeTAI/rj9WKdLKPdI+8D+vCzUasz70B/hbs+xePfwRXdisCEu37WfbrMsJp/0XAuU6flTe9nCcNq7xzhdO2zbh+167HLhMG+v7gVAbEas1cj1W+S3DbbztWOaCx23af36cgXjPn70ol1lCw/k7picBvscpQJfbre4WddiKwH+95fzBllK5O6V8C1zjdT8Aqi3YO4jncA7zrtu0t4H4v+3a0z+1c3jwduzxq3z8b2Gt/b8qxyz522tf285gIpAB/tN/7lCDiHGO/xkfs17IC+L1Tur9yst/32H5O3QOcfyvV5bptWEOF0u20GfbrfcTp70EvcTv/lWPnxX72yQzidQnpd81tv6uAXKCFl7RO9mvcxc/nJuA5jDENs2UY66rRTmO/WrZtbvvsN1YXXG86A+3E6gJzxL5KfDdWiwAicpx9lWuP3aL4d6yrQ852uN0/aFxbPQqxvgwtsfrPL3I613R7ezCxenOrMSYb68e3KdaYCMDqRmOM+bsxZgjWVfv3gQ/sq/kd8T1+uB2ur+E2e5uvGDtjjd10PKc1WB/q1kHEn4/VzcVZY6zxViHta4z5DuuK70d2zFvtNI/JBIwxG7CuTvlq8fRmvrHGqzXFKrCdbG9vgZXRur9m7e3b3l7PJHy8PmJ14XRMGHCyU9JgY0xTY0w3Y8xfjdUFzOFcY0wTp79X3ON2/sP6ofZ4bk5/3QK9GLZQ3j/n53gzVuv5JGNMiXu6MabMGPMl1lVox7i5a7Fag/tivd6/Br6QMLqY1TPu+Y8zn99N+0r6o2J1oT6K9X0B1/zN27GdW+IdeZvjXLe75aUdcc07/MXqztf3Dajqlno2VqvSZKwK9LV2/Gl4z99cvov2d2gH1d9V9xg7Axe6PadRWBcVAgn1u+G+v+P2MWNMGVYL/ySs1/92rPzckbf9DavSviWIuHwZjPVeXox1kTjT3u7+muVjtX61d0+zOed9LkTkbqe87SWnpCfsfKeNMeYcY3UTdnjfLW8a6x63W972qLfn5naMr/y9EE68vSf5buUN9+fYHauy8DtjjEd3P295n/2bPB14AOuz2xEr73PvhVafBFN2O2iMqbBvF9n/9zqlF1Gd/3hlrK6x7wB3iT2W1D638/fc/bxV/JUBjTVc4Tms3jZ7ReRlEXF8Xs7Has3bJiI/SvUQKH/fp2A8YX/Oc7Cef9UYVmN1sX/eGDMS6+Lmw8BrYg0F6QhsM9575ARTRnHPF592yhMPYV2sDuY5hFrmc6R77Gv3YnkP6/uUglU2+JOITLL3LQJm278VpVg9hppjtXAHY5f9WjfG6v3i3JXbXzk5pPfYbrl25IuXOiU5ynWdjTE3GatrvMOtbnnaPe5xu+WL7hOpeuxjrJ6ZgYRb5jsXK2+eaIw54GWXy7HeK1+/YZdjjS8PqKFWhncD7Z27g2BdYXDm84cL6wu+xe0DkWWMOdNOfxFYC/Qw1qQ+d+PZZc3f8Z0dwPpy9nU6V7axBoaHeizXAIxZgdVa+Lzba+FId2TimVjdG3dgdRHyZhdWZufQyd7mK8YdWB9w59cwzVjjAwJZhdXFBKjq+tMN790o1gNJ4trle4DzvvYPQQ9jTCusSnESsNLHuZPw/Rr4ZGdsNwGXicggrPe1DM/XzPH8vb2e5Vg/6h7vtzGmr6meNMDX2Im6YhXQVVxn8XV5T9yJyNXYEwUZYwItceb8Hg0APjfGrDfWGPjpWN//k8KOvn4IlL/5+m7+CqsSeRpWF/8c+zHO+Uco+dEO4GG3c2XYBdFwjmc9wPP75p5eaV8I+x6rO+IBrNYTb99tl++inVd2pPq76h7jDqxKpvNzyjTGeKtwuQuYX7lxyQvt23uNMQft57ncGDPaGNPcGHMGVnfGn+19xwG32gX2PfZzel9CXD3AWN7Hat11DN9xf80ysQqUO93TbM55n8v7bayLs4687YZQYosRb++Jv7ytM1bX5geNMf/zku4r7+uK1fXwDWONKc7F6lZ5pvsx6pFgym6RlIz1OjvO3dEpzd95/ZYBjTHPGKvBoS9WF9I/2tsXGGMmYw1B+ZTqCf78fZ+CZozZjjXh5NNiz4fgll5kjHkeqzdZH6y8rJN4n6vBXxml6pBOt3dgdQF3zhfTjTFzgwh9FdDf7X3vj5fvlbHmTtiN7+9gP2CdMeYr+3dgHdawjYl2+nLCLFO7xVGC1UvoeLtSB/7LySG9x8aYiU75ovtQpbom1N81xJrw7BWsCcFW+NjNZ2VXrJng2wEfekt311Arw/OwvrS3ijXZyXlYffeD9TNwVKxJU9Lt1pJ+IuKYUCELq4tVvn0V6sZwAzVWK8QrwD9FpBWAiLSX6vHJNfVfrIz3HPvY94jIMLGm20/DyjiPYHVd/AJoI9ZyQ6kikiXWbL1gdZH7q4i0FGu253vxPwPfS1hjkzvb520pbkvi+PEJ0E9EzrdjvBdrPMla9x3tq1YfAw+ISKb9BZmMNeYIEUmz3zsRkU5YM3s+bWeoiLXskuN174PVHd4xThqxxpPcH0zQdgH1VeBeY125ft9+DbLs1+EPVL9m7wC3iUgXscbE/R1rhtRyrG5LlVT/SMcVY40bWQrcZ7/+v8D6YfvI2/72Vc+/A6cbYza7pfUSkYn29zBZRH6N1ZXuR3uXBcAksZZKEBE5Havw4etih/L/3czC6v51EKvHyt9reK5XgBvEGtMt9nd0kkRguSPn7xuAiEwWkV+KSFP7XMOxxrTNt/PZ17BmFW1n5+knijWu+H2sz9A4sWYivR3rNfBViHsTOFtEzrCPkybWxD4dfOzvHLPf/MqLN4BrRKSPWGPl/orTrMoi0t8+f4ZYk/G0dUofh1UwHGj/7cLqovm8/dgrRWRroJidPApcLyJtsCa0ukqs5VBSsT4nPxljtmKNuT5OrLkYksSaDKYP1u8LWIXpuMzbbG9gjcFsL1YPlNtxnem6ioi0x7og87wx5iUv6T7zPqwCptivY4L9ul+M61jJ+qamZTefxJr0bpRd9kkX66JQa6y5BsDKB/5s5x8dgFv8HM5nGdAuX42w85ICrItwFfZ5LxWRbGP16jiK1SMH/H+fQmKM+Qbru369Hc/v7fwp3X5Nr7DjX4JV1t0NPGrnR2lSvdyUvzKKNy9hvX6OlTyyxZqzIBgzsF6LW8UqezrmEvjex/5vYJVHm9qv/3VUfweXAD3EWl5JxJos9SyqvzdvAieIyGlijZn+PdbF0jV23K+LyOsEwVgty/+g+iKhv3JyoPc4bvPFUH/XxBo//RZwvjHmZx/7nITVav6Bj9NeAXxkXOem8Rtkg/zDmkp+CVYz/Xv2n/O4k1y3/V22YV1xeAer+9lhrEkIHGPuTsG6KpiPNUnAA1hN+Y7HuvT993G+rU7HS8P6YmzGyiDXYHV38BbXyVhdsnw97xm4jcfCunq10L79V6yKwlGsbiwzgJOc9u2HVRk8bD/3u5xifAYr49xt307z8/wSsCp/6+z3YBPwd6f0VcClfp7HafZrXGTHmOOUdjfwpdP9ZlhXWQuwuvr+yimtCdaVwAL7+TyCPd7ITv8PViZUYL8nj+M6FmUTVkHFW4xXOr/v9rYOWAVpRxf1N7EqtzuwMsYEp9fnXnv7fnu/pk7HecDefgQ4wcf5fY4xsZ9LEdZn1PH3ia+4vXwmr8T6ccp3+xtmp7+EPS7Ux/lz7PetyP4MnOaU5vIZxhrjVOZ2HseY095YhZVj9muxAPiF02PFfq222/usAS6Ldf4Tyz+8jG1ze299fjexuhd+Zm/fhnVltupzhlXgeMjf+XAbp4c1sdYC+/3bjfXjluXjsT7zBW+fW1y/b6dg5V0H7PjXA39y2jcda0KinVhzKsykerzVL4DV9vYfsXrq+Hs9R9j7HcL6nk7FnpsBt/zJy/Pwl191sj//zvM8/AErjzqKlV85jyl9HCuvzsfqhutzzJmX1/oerJmKfe3vkb/Y5/iHffsG+7NzCKui28Fpv1FYYzfz7P+jnNJOtN+bw8AzPs7t8Tlz+3y55xf5QCs/cd+P55jhArfHP2WnBfqNFaxx8Yfsv8dwHeNa9RnGGqJj3GN12tdn3menn4r13cnD+v16BciIZf4S7T9CKLth9RIyuJYPZmPPYeD8vmNdGFtmH/cQ1vf3FKfHZWBVso5g5QV/xMeYYfyUAbEuQi230w5gFfobYXXZnW5/7o/a76vz98Lr9wkveUKg7wrWRZOdQCrWBTDHd/EIVgX4LKd9O2HlRwfteJ+xt/sso+BjXhOs+QJW2M9vB/CaW95xt5/3fZAdZxHWxI2DnNIuxVo1wnE/Fevi5lGsvPEPbse6CKuc6xgS9384jd+memLZo1jlFOf8/jucxhi7HXcMnmXdDPt1Oxs/5WR/77FT2m77PbrIx/m34nvc+gysCy/OeckiX3E7PcZ9zLB7vnq+nR6x3zXgB6yLXs7n+dLteP/CbW4Op7Q0+3Ua5yse9z+xH6iUCpF9dfgDY0xQi44rpVS8EJGvscawrol1LEopFWtizWa+DGsCsrJYx6MiRyvDSimllFJKKaUanIY6ZlgppZRSSimlVAOmlWGllFJKKaWUUg2OVoaVUkoppZRSSjU4WhlWSimllFJKKdXgeFtIu95q0aKFycnJiXUYSqk6ZtGiRQeMMS1r+7wi0hFruY42WMsWvGyMedptHwGeBs4ECoErjTGL/R1X8zqllDexyuuiRfM6pZQ3oeR1DaoynJOTw8KFC2MdhlKqjhGRbTE6dTlwuzFmsYhkAYtE5BtjzGqnfSYCPey/EcCL9n+fNK9TSnkTw7wuKjSvU0p5E0pep92klVIqRowxux2tvMaYY8AaoL3bbpOBN4xlPtBERNrWcqhKKaWUUvWOVoaVUqoOEJEcYBDwk1tSe2CH0/1cPCvMSimllFIqRFoZVkqpGBORRsBHwO+NMUfdk708xHg5xvUislBEFu7fvz8aYSqllFJK1SsNasywN2VlZeTm5lJcXBzrUOqltLQ0OnToQHJycqxDUapOEpFkrIrwW8aYj73skgt0dLrfAdjlvpMx5mXgZYChQ4d6VJY1r4suzeuUqhs0r6tdmvepeNfgK8O5ublkZWWRk5ODNWmrihRjDAcPHiQ3N5cuXbrEOhyl6hx7puh/A2uMMU/62G0KcLOIvIs1cVaeMWZ3qOfSvC56NK9Tqu7QvK72aN6n6oMG3026uLiY5s2ba4YZBSJC8+bN9eqsUr6NBC4DThWRpfbfmSJyg4jcYO8zDdgMbAReAW4K50Sa10WP5nVK1R2a19UezftUfdDgW4YBzTCjSF9bpXwzxszG+5hg530M8NtInE+/j9Gjr61SdYd+H2uPvtYq3jX4luG65v777+eJJ54IertSSsWrnJwcDhw4EOswlFIqqkItwzVq1AiAbdu2MWTIEAYOHEjfvn156aWXvO4/Y8YMzjrrLABef/11br755poHrVQDoS3DcaC8vDyix0pKqtnbXlFRQWJiYoQiqtvKKyoBSErU60ZKRZIxhsrKyogcq6Z5UiTyRaWiqaS8gpTEBG2Fa2Datm3L3LlzSU1NJT8/n379+nHOOefQrl27WIemVK2ojXK4lvDrgIcffpiePXty2mmnsW7dOgDGjBnD3XffzejRo3n66add9t+0aRMTJkxgyJAhnHzyyaxduxaAzz//nBEjRjBo0CBOO+009u7dC1hXJK+//nrGjx/P5Zdfzv3338/VV1/NmDFj6Nq1K88880zVsd98802GDx/OwIED+c1vfkNFRQVgXaW89957GTFiBPPmzauNl6VO6HXPdEY/PiPWYShVL2zdupXevXtz0003MXjwYHbsqF4+2Vfec+ONNzJ06FD69u3LfffdV7V/Tk4ODzzwAKNGjeKDDz4gJyeH++67j8GDB3P88cdX5YsFBQVcffXVDBs2jEGDBvHZZ58BVuvJhRdeyNlnn8348eNr8VVQKjT7j5XQ86/T+ffsLbEORYXAV9nutttu45RTTqF3794sWLCA8847jx49evDXv/7V4xgpKSmkpqYCUFJS4nIBcfr06fTq1YtRo0bx8cfeFiLwXS788ccfGThwIAMHDmTQoEEcO3aM3bt3c8oppzBw4ED69evHrFmzAHjnnXc4/vjj6devH3feeWdEXyOlAhn35I90/8uXUT2HXgp38rfPV7F6l/sSnzXTp11j7ju7r8/0RYsW8e6777JkyRLKy8sZPHgwQ4YMAeDIkSP8+OOPgFWhdbj++ut56aWX6NGjBz/99BM33XQT33//PaNGjWL+/PmICK+++iqPPfYY//jHP6rOM3v2bNLT07n//vtZu3YtP/zwA8eOHaNnz57ceOONbNy4kffee485c+aQnJzMTTfdxFtvvcXll19OQUEB/fr144EHHojo61PXlVcadh4pinUYSkVULPI6h3Xr1vGf//yHF154gZycHADWrFnjM+95+OGHadasGRUVFYwbN47ly5fTv39/wFrSY/bs2QDcddddtGjRgsWLF/PCCy/wxBNP8Oqrr/Lwww9z6qmn8tprr3HkyBGGDx/OaaedBsC8efNYvnw5zZo1i+hroVQk7bJ/g6Ys28W1J3eNcTT+ichrwFnAPmNMPy/pY4DPAEfN/mNjzAN22gTgaSAReNUY82hN44lVXuevbJeSksLMmTN5+umnmTx5MosWLaJZs2Z069aN2267jebNm7sca8eOHUyaNImNGzfy+OOP065d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VF1y41uLOO3JmZRVRGCmQC8278+PynHdaWU4xg4ePMjAgQMZOHAgbdq0oX379lX3S0tLo3rutWvXVq0pt2nTJp555hl69+7NpZdeGvKxnnrqKQoLC6MQZXREo6Ciak9eYRk5d03luzV7Yx2KCpLmdQ1TRaXW4GpKu0fHF83rVEMxd+NBACpreKWustJQ6fZbsfdoMaf+48caHTdYWhmOsebNm7N06VKWLl3KDTfcwG233VZ1PyUlhfLy8qid+9NPP2Xy5MksWbKEbt268cILLzBt2jTeeuutkI+lmWb0lFdUknPXVJ79bkOsQ6kz1u21uuW89OOmGEeigqV5XcPhKNLMXL+fbndPY0VuXkzjqS2Pf7VW8ySleZ1qcGpSFy6rqKTr3dM45fEfXLYfLozuhSNnOpt0HXTllVfSrFkzlixZwuDBg8nKyqJRo0bccccdAPTr148vvviCnJwc3nzzTZ555hlKS0sZMWIEL7zwAomJiS7HW7RoEX/4wx/Iz8+nRYsWvP766yxZsoSnnnqKxMREZs6cSc+ePdm8eTPnnHMOV199Nddffz233HILK1asoLy8nPvvv5/JkydTUVHBnXfeyVdffYWIcN1112GMYdeuXYwdO5YWLVrwww8/eHtaKkzF5Vb3k5d+3MQt43rEOBqlIkfzuvptxrp9ACzYeojjO2THOJroe/4HqyJ8w+huOlZYudC8TtU36/Yco9TuHt3rnumcPaAdz14yKOTjfLpkJwC5h4uqts1cv5+WWamRCTQIWhl2M2aM57aLLoKbboLCQjjzTM/0K6+0/g4cgAsucE2bMSO8ONavX8+3335LYmIi999/v9d91qxZw3vvvcecOXNITk7mpptu4q233uLyyy+v2qesrIxbbrmFzz77jJYtW/Lee+/xl7/8hddee40bbrjBJTOePn06P/zwAy1atODuu+/m1FNP5bXXXuPIkSMMHz6c0047jTfeeIMtW7awZMkSkpKSOHToEM2aNePJJ5+semw8WLvnWOCdlKrHNK9rGHldLDh69VpruJsad6GLZzUdkmOM4ZKX50comoZJ8zrN61Tknfv8HJf7ny/bFXJlOL+knP/O2+qx/fLXfubL351ck/BCopXhOurCCy/0uBLo7rvvvmPRokUMGzYMgKKiIlq1auWyz7p161i5ciWnn346ABUVFbRt2zbg+b/++mum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\",\n      \"text/plain\": [\n       \"<Figure size 1152x1152 with 9 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(16, 16))\\n\",\n    \"rows = int(np.ceil(len(models) / 3))\\n\",\n    \"for it, (name, mdl) in enumerate(models):\\n\",\n    \"    plt.subplot(rows, 3, it + 1)\\n\",\n    \"    plt.title('{}. RScore: {:.3f}, Root-PEHE: {:.3f}'.format(name, rscore[it], rootpehe[it]))\\n\",\n    \"    plt.plot(X_test[:, 0], mdl.effect(X_test), label='{}'.format(name))\\n\",\n    \"    plt.plot(X_test[:, 0], expected_te_test, 'b--', label='True effect')\\n\",\n    \"    plt.ylabel('Treatment Effect')\\n\",\n    \"    plt.xlabel('x')\\n\",\n    \"    plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Getting the Best Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"mdl, score  = scorer.best_model([mdl for _, mdl in models])\\n\",\n    \"rootpehe_best = np.sqrt(np.mean((expected_te_val.flatten() - mdl.effect(X_val).flatten())**2))\\n\",\n    \"plt.figure()\\n\",\n    \"plt.title('RScore: {:.3f}, Root-PEHE: {:.3f}'.format(score, rootpehe_best))\\n\",\n    \"plt.plot(X_test[:, 0], mdl.effect(X_test), label='best')\\n\",\n    \"plt.plot(X_test[:, 0], expected_te_test, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Getting an Ensemble based on Scores\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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oezcuROADz/8kD59+tCvXz9OPfVUACorK7n77rsZNGgQffv25ZVXXgGsEcRpp53GxRdfTI8ePRg3bhxvv/02gwcP5rjjjmPdunXVOkydOpVTTjmFHj168MUXX/joWFRUxLXXXsugQYPo378/n3/+eR18MooSGb5ZvpOpK3bx569WxVqVo4qGkAurzvjDf5exfNuBiF6zd7umPHLesQHlK1as4P333+f7778nMTGRm266ibfffpuioiKGDh3K448/zj333MNrr73Ggw8+yB//+Ee+/vprcnJy2LdvHwD//Oc/adasGXPmzKG0tJSTTjqJUaNGAbBo0SJWrFhBZmYmXbp04brrruPnn3/mH//4B88//zzPPvssABs3buTbb79l3bp1DB8+nLVr13ro+fjjj3P66afzxhtvsG/fPgYPHsyIESNo0qRJRD8vRYkGrtUKR3NIhzGmzoNWdAQSY6ZNm8a8efMYNGgQeXl5TJs2jfXr15OUlFQ9/3D88cezceNGAE466SSuvvpqXnvtNSorKwGYMmUKb775Jnl5eQwZMoSCggLWrFkDwKBBg2jbti3Jycl07dq12rAcd9xx1dcEuPjii4mLi6N79+506dKFlStXeug5ZcoUnnrqKfLy8hg2bBglJSVs3rw5yp+OokQWJ+3rjv0l/G/lzugrE0E6jZvE9W/WfaJYHYG4EWykEC2MMVx11VU8+eSTHuVPP/10dW8iPj6eiooKAMaPH89PP/3EpEmTyMvLY+HChRhjeP755znzzDM9rjFjxgySk5Orj+Pi4qqP4+Liqq8JvuG23sfGGD7++GN69uxZyydWlLrH+M+16pcxL37HzgOlbHzqnChqFHmmrthV5/fUEUiMOeOMM/joo4/Ytcv68gsLC9m0yW/mZADWrVvHkCFD+OMf/0h2djZbtmzhzDPP5OWXX6a8vByA1atXU1RUFJIeH374IVVVVaxbt47169f7GIozzzyT559/HlfmggULFoR0fUWJJS4XVpwIxhie+WY1mwv8T6jvPFDqU1ZRWcXBkvKg95i1Zjffr91Ta129uf29BXQaNyni140EOgKJMb179+axxx5j1KhRVFVVkZiYyIsvvhiw/t13382aNWswxnDGGWfQr18/+vbty8aNGxkwYADGGFq2bMlnn30Wkh49e/bktNNOY+fOnYwfP56UlBQP+UMPPcQd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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"mdl, score  = scorer.ensemble([mdl for _, mdl in models])\\n\",\n    \"rootpehe_ensemble = np.sqrt(np.mean((expected_te_val.flatten() - mdl.effect(X_val).flatten())**2))\\n\",\n    \"plt.figure()\\n\",\n    \"plt.title('RScore: {:.3f}, Root-PEHE: {:.3f}'.format(score, rootpehe_ensemble))\\n\",\n    \"plt.plot(X_test[:, 0], mdl.effect(X_test), label='ensemble')\\n\",\n    \"plt.plot(X_test[:, 0], expected_te_test, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Semi-Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def reg():\\n\",\n    \"    return RandomForestRegressor(min_samples_leaf=10, random_state=123)\\n\",\n    \"def clf():\\n\",\n    \"    return RandomForestClassifier(min_samples_leaf=10, random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.data.dgps import ihdp_surface_B\\n\",\n    \"Y, T, X, expected_te = ihdp_surface_B(random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_train, X_val, T_train, T_val,\\\\\\n\",\n    \"Y_train, Y_val, expected_te_train, expected_te_val = train_test_split(X, T, Y, expected_te,\\n\",\n    \"                                                                      test_size=.3, random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"models = [('ldml', LinearDML(model_y=reg(), model_t=clf(), discrete_treatment=True,\\n\",\n    \"                             cv=3)),\\n\",\n    \"          ('xlearner', XLearner(models=reg(), cate_models=reg(), propensity_model=clf())),\\n\",\n    \"          ('dalearner', DomainAdaptationLearner(models=reg(), final_models=reg(), propensity_model=clf())),\\n\",\n    \"          ('slearner', SLearner(overall_model=reg())),\\n\",\n    \"          ('tlearner', TLearner(models=reg())),\\n\",\n    \"          ('drlearner', DRLearner(model_propensity=clf(), model_regression=reg(),\\n\",\n    \"                                  model_final=reg(), cv=3)),\\n\",\n    \"          ('rlearner', NonParamDML(model_y=reg(), model_t=clf(), model_final=reg(),\\n\",\n    \"                                   discrete_treatment=True, cv=3)),\\n\",\n    \"          ('dml3dlasso', DML(model_y=reg(), model_t=clf(), model_final=LassoCV(), discrete_treatment=True,\\n\",\n    \"                             featurizer=PolynomialFeatures(degree=2, interaction_only=True, include_bias=False),\\n\",\n    \"                             cv=3))\\n\",\n    \"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done   2 out of   8 | elapsed:    1.4s remaining:    4.3s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done   8 out of   8 | elapsed:   10.2s finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from joblib import Parallel, delayed\\n\",\n    \"\\n\",\n    \"def fit_model(name, model):\\n\",\n    \"    print(\\\"Training: \\\", name)\\n\",\n    \"    model.fit(Y_train, T_train, X=X_train)\\n\",\n    \"    print(\\\"Done training: \\\", name)\\n\",\n    \"    return name, model\\n\",\n    \"\\n\",\n    \"models = Parallel(n_jobs=-1, verbose=1)(delayed(fit_model)(name, mdl) for name, mdl in models)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.score.rscorer.RScorer at 0x23a332a05f8>\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.score import RScorer\\n\",\n    \"\\n\",\n    \"scorer = RScorer(model_y=reg(), model_t=clf(),\\n\",\n    \"                 discrete_treatment=True, cv=3,\\n\",\n    \"                 mc_iters=3, mc_agg='median')\\n\",\n    \"scorer.fit(Y_val, T_val, X=X_val)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rscore = [scorer.score(mdl) for _, mdl in models]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rootpehe = [np.sqrt(np.mean((expected_te.flatten() - mdl.effect(X).flatten())**2)) for _, mdl in models]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAVBklEQVR4nO3df5BeV33f8feHtZxuAs4ysShobSKn45FR+RGRrUN+DG1CgmySiTWe/LAJYYaEOp7BGNpaxaKZdjL5A2ZE2iaDwXHBMEwY3OIqGqejsJmmHWgaA1pZBsWIbVUTsFYwFtCFxuzYsvztH88j59HqSPustXcfaff9mtnx3nPvefZ7rR8f3XPuPTdVhSRJiz1v1AVIki5MBoQkqcmAkCQ1GRCSpCYDQpLUdMmoC1hJl19+eW3evHnUZUjSRePAgQPfrKqNrX1rKiA2b97MzMzMqMuQpItGkq+ebZ9DTJKkJgNCktRkQEiSmgwISVKTASFJalpTdzGtpL0H59g9Pcux+QU2TYyzc/sWdmybHHVZkrRqDIiGvQfn2LXnEAsnTgIwN7/Arj2HAAwJSeuGQ0wNu6dnnw2HUxZOnGT39OyIKpKk1WdANBybX1hWuyStRQZEw6aJ8WW1S9JatO7nIFqT0Tu3bzltDgJgfMMYO7dvGWGlkrS61vUVxKnJ6Ln5BYrTJ6Pfc+MrmJwYJ8DkxDjvufEVTlBLWlfW9RXEuSaj/+edP2sgSFrX1vUVhJPRknR2nQZEkuuSzCY5kuTOxv5rkjyY5MkkdyzaN5Hk/iRfTnI4yU+sdH1ORkvS2XUWEEnGgLuA64GtwM1Jti467NvA7cD7Gh/xB8Cnquoa4FXA4ZWucef2LYxvGDutzcloSerp8griWuBIVT1aVU8B9wE3DB5QVY9X1X7gxGB7ksuA1wIf7h/3VFXNr3SBO7ZNOhktSWfR5ST1JPDYwPZR4MeH7PsjwHHgI0leBRwA3lFVTyw+MMktwC0AL33pS5dd5I5tkwaCJDV0eQWRRlsN2fcS4NXAB6tqG/AEcMYcBkBV3VNVU1U1tXFj87WqkqTnoMuAOApcObB9BXBsGX2PVtXn+tv30wsMSdIq6TIg9gNXJ7kqyaXATcADw3Ssqm8AjyU5NVv8OuBL3ZQpSWrpbA6iqp5OchswDYwB91bVI0lu7e+/O8mLgRngMuCZJO8EtlbVd4G3Ax/vh8ujwFu6qlWSdKZOn6Suqn3AvkVtdw98/w16Q0+tvg8DU13WJ0k6u3X9JLUk6ewMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqSmTgMiyXVJZpMcSXJnY/81SR5M8mSSOxr7x5IcTPJfuqxTknSmS7r64CRjwF3AzwNHgf1JHqiqLw0c9m3gdmDHWT7mHcBh4LKu6tTp9h6cY/f0LMfmF9g0Mc7O7VvYsW1y1GVJGoEuryCuBY5U1aNV9RRwH3DD4AFV9XhV7QdOLO6c5ArgF4APdVijBuw9OMeuPYeYm1+ggLn5BXbtOcTeg3OjLk3SCHQZEJPAYwPbR/ttw/r3wL8EnjnXQUluSTKTZOb48ePLLlJ/Z/f0LAsnTp7WtnDiJLunZ0dUkaRR6jIg0miroTomvwg8XlUHljq2qu6pqqmqmtq4ceNya9SAY/MLy2qXtLZ1GRBHgSsHtq8Ajg3Z96eAX0ryN/SGpn42yR+vbHlabNPE+LLaJa1tXQbEfuDqJFcluRS4CXhgmI5Vtauqrqiqzf1+/62q3tRdqQLYuX0L4xvGTmsb3zDGzu1bRlSRpFHq7C6mqno6yW3ANDAG3FtVjyS5tb//7iQvBmbo3aX0TJJ3Alur6rtd1aWzO3W3kncxSQJI1VDTAheFqampmpmZGXUZknTRSHKgqqZa+3ySWpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKmp04BIcl2S2SRHktzZ2H9NkgeTPJnkjoH2K5P89ySHkzyS5B1d1ilJOtPQAZHkh5P8XP/78SQvWOL4MeAu4HpgK3Bzkq2LDvs2cDvwvkXtTwP/oqpeBrwGeFujrySpQ0MFRJJ/CtwP/FG/6Qpg7xLdrgWOVNWjVfUUcB9ww+ABVfV4Ve0HTixq/3pVPdT//v8Bh4HJYWqVJK2MYa8g3gb8FPBdgKr638CLlugzCTw2sH2U5/CXfJLNwDbgc2fZf0uSmSQzx48fX+7HS5LOYtiAeLJ/FQBAkkuAWqJPGm1L9Tn9A5LnA/8ZeGdVfbd1TFXdU1VTVTW1cePG5Xy8JOkchg2ITyd5NzCe5OeBTwJ/ukSfo8CVA9tXAMeGLSzJBnrh8PGq2jNsP0nSyrhkyOPeBbwVOAT8NrAP+NASffYDVye5CpgDbgLeOMwPSxLgw8Dhqvq3Q9Yonbe9B+fYPT3LsfkFNk2Ms3P7FnZsc/pL69OSAZHkecAXq+rlwH8Y9oOr6ukktwHTwBhwb1U9kuTW/v67k7wYmAEuA55J8k56dzy9EvgN4FCSh/sf+e6q2jf0mUnLtPfgHLv2HGLhxEkA5uYX2LXnEIAhoXVpyYCoqmeSfCHJS6vqa8v58P5f6PsWtd098P036A09LfaXtOcwpM7snp59NhxOWThxkt3TswaE1qVhh5heAjyS5PPAE6caq+qXOqlKGoFj8wvLapdGresh0WED4ndX7CdKF6hNE+PMNcJg08T4CKqRzm01hkSHuoupqj4NfBl4Qf/rcL9NWjN2bt/C+Iax09rGN4yxc/uWEVUknd25hkRXyrBPUv8q8HngV4BfBT6X5JdXrArpArBj2yTvufEVTE6ME2ByYpz33PgK5x90QVqNIdFhh5j+FfCPqupxgCQbgf9Kb/kNac3YsW3SQNBFYTWGRId9UO55p8Kh71vL6CtJWmGrMSQ67BXEp5JMA5/ob/8a8GcrVoUkaVlOXel2eRdTqoZbHinJjcBP03s+4TNV9ScrVsUKmZqaqpmZmVGXIUkXjSQHqmqqtW+oK4j+chn7Tq2J1H8fxOaq+puVK1OSdCEZdh7hk8AzA9sn+22SpDVq2IC4ZHC57/73l3ZTkiTpQjBsQBxP8uyyGkluAL7ZTUmSpAvBsHcx3Qp8PMn76U1SPwa8ubOqJEkjN1RAVNX/AV7Tf8Nb+u+JliStYcMutfGOJJfRW8n13yV5KMnruy1NkjRKw85B/Gb/ndCvB14EvAV4b2dVSZJGbtiAOPXynjcAH6mqL+ALfSRpTVsyIPrvh/5mf6mNNwDTSV7A6c9FSJLWmGFeOVpJJoC3Ao9W1feS/BC9YSZJ0ho17G2uDwJjVTUPUFXforeiqyRpjRo2IH4G+O0kX6V3J1PoXVy8srPKJEkjNWxAXN9pFZKkC86wD8p9tetCJEkXFt8KJ0lqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmjoNiCTXJZlNciTJnY391yR5MMmTSe5YTl9JUrc6C4gkY8Bd9J7C3grcnGTrosO+DdwOvO859JUkdajLK4hrgSNV9WhVPQXcB9wweEBVPV5V+4ETy+0rSepWlwExCTw2sH2039Z1X0nSCugyIFpvnKuV7pvkliQzSWaOHz8+dHGSpHMbdjXX5+IocOXA9hXAsZXuW1X3APcATE1NDRtAknRWew/OsXt6lmPzC2yaGGfn9i3s2Lb+BjG6vILYD1yd5KoklwI3AQ+sQl9Jes72Hpxj155DzM0vUMDc/AK79hxi78G5UZe26joLiKp6GrgNmAYOA/+pqh5JcmuSWwGSvDjJUeCfA7+T5GiSy87Wt6taJemU3dOzLJw4eVrbwomT7J6eHVFFo9PlEBNVtQ/Yt6jt7oHvv0Fv+GiovpLUtWPzC8tqX8t8klqSBmyaGF9W+1pmQEjSgJ3btzC+Yey0tvENY+zcvmVEFY1Op0NMknSxOXW3kncxGRCSdIYd2ybXZSAs5hCTJKnJgJAkNRkQkqQmA0KS1GRASJKaDAhJUpMBIUlqMiAkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkpoMCElSkwEhSWoyICRJTQaEJKnJgJAkNRkQkqSmTgMiyXVJZpMcSXJnY3+S/GF//xeTvHpg3z9L8kiSv07yiSR/r8taJUmn6ywgkowBdwHXA1uBm5NsXXTY9cDV/a9bgA/2+04CtwNTVfVyYAy4qataJUln6vIK4lrgSFU9WlVPAfcBNyw65gbgY9XzWWAiyUv6+y4BxpNcAnw/cKzDWiVJi3QZEJPAYwPbR/ttSx5TVXPA+4CvAV8HvlNVf976IUluSTKTZOb48eMrVrwkrXddBkQabTXMMUleSO/q4ipgE/ADSd7U+iFVdU9VTVXV1MaNG8+rYEnS3+kyII4CVw5sX8GZw0RnO+bngK9U1fGqOgHsAX6yw1olSYt0GRD7gauTXJXkUnqTzA8sOuYB4M39u5leQ28o6ev0hpZek+T7kwR4HXC4w1olSYtc0tUHV9XTSW4DpundhXRvVT2S5Nb+/ruBfcAbgCPA94C39Pd9Lsn9wEPA08BB4J6uapUknSlVi6cFLl5TU1M1MzMz6jIk6aKR5EBVTbX2dXYFIUk6096Dc+yenuXY/AKbJsbZuX0LO7YtvsHzwmBASNIq2Xtwjl17DrFw4iQAc/ML7NpzCOCCDAnXYpKkVbJ7evbZcDhl4cRJdk/PjqiiczMgJGmVHJtfWFb7qBkQkrRKNk2ML6t91AwISVolO7dvYXzD2Glt4xvG2Ll9y4gqOjcnqSVplZyaiPYuJknSGXZsm7xgA2Exh5gkSU0GhCSpyYCQJDUZEJKkJgNCktRkQEiSmgwISVKTASFJajIgJElNBoQkqcmAkCQ1GRCSpCYDQpLUZEBIkppc7luSVsneg3MXzbsgwICQpFWx9+Acu/YcYuHESQDm5hfYtecQwAUbEg4xSdIq2D09+2w4nLJw4iS7p2dHVNHSDAhJWgXH5heW1X4hMCAkaRVsmhhfVvuFwICQpFWwc/sWxjeMndY2vmGMndu3jKiipTlJLUmr4NREtHcxSZLOsGPb5AUdCIt1OsSU5Loks0mOJLmzsT9J/rC//4tJXj2wbyLJ/Um+nORwkp/oslZJ0uk6C4gkY8BdwPXAVuDmJFsXHXY9cHX/6xbggwP7/gD4VFVdA7wKONxVrZKkM3V5BXEtcKSqHq2qp4D7gBsWHXMD8LHq+SwwkeQlSS4DXgt8GKCqnqqq+Q5rlSQt0mVATAKPDWwf7bcNc8yPAMeBjyQ5mORDSX6g9UOS3JJkJsnM8ePHV656SVrnugyINNpqyGMuAV4NfLCqtgFPAGfMYQBU1T1VNVVVUxs3bjyfeiVJA7q8i+kocOXA9hXAsSGPKeBoVX2u334/ZwmIQQcOHPhmkq8+54pX3uXAN0ddxCpbj+cM6/O8Pee14YfPtqPLgNgPXJ3kKmAOuAl446JjHgBuS3If8OPAd6rq6wBJHkuypapmgdcBX1rqB1bVBXUJkWSmqqZGXcdqWo/nDOvzvD3nta+zgKiqp5PcBkwDY8C9VfVIklv7++8G9gFvAI4A3wPeMvARbwc+nuRS4NFF+yRJHev0Qbmq2kcvBAbb7h74voC3naXvw8C6SWpJutC4FlO37hl1ASOwHs8Z1ud5e85rXHr/iJck6XReQUiSmgwISVKTAbEChliU8AeT/GmSLyR5JMlFf0fWEOf8wiR/0l+E8fNJXj6KOldSknuTPJ7kr8+y/6yLT16shjjna5I8mOTJJHesdn1dGOKcf73/6/vFJH+V5FWrXeNqMSDO05CLEr4N+FJVvQr4J8Dv92/fvSgNec7vBh6uqlcCb6a3+OLF7qPAdefYf67FJy9WH+Xc5/xt4HbgfatSzer4KOc+568A/7j/e/v3WMMT1wbE+RtmUcICXpAkwPPp/aF6enXLXFHDnPNW4C8AqurLwOYkf391y1xZVfUZer92Z9NcfHJ1quvGUudcVY9X1X7gxOpV1a0hzvmvqur/9jc/S28FiDXJgDh/wyxK+H7gZfSWETkEvKOqnlmd8joxzDl/AbgRIMm19B7nX7N/kPqG+f+iteW3gD8bdRFdMSDO3zCLEm4HHgY2AT8KvL+/pPnFaphzfi/wwiQP03sq/iAX91XTMIb5/6I1IsnP0AuId426lq74ytHzN8yihG8B3tt/cvxIkq8A1wCfX50SV9yS51xV36W/PEp/aO0r/a+1bJjfC1oDkrwS+BBwfVV9a9T1dMUriPP37KKE/Ynnm+gtQjjoa/QWHKQ/Dr+F3vpSF6slz7n/ythTE/FvBT7TD4217AHgzf27mV7DwOKTWjuSvBTYA/xGVf2vUdfTJa8gztOQixL+HvDRJIfoDUO8q6ou2iWDhzznlwEfS3KS3kq8vzWygldIkk/Quwvt8iRHgX8DbIChFp+8KC11zkleDMwAlwHPJHknsPVi/sfAEL/O/xr4IeADvYtjnl6rK7y61IYkqckhJklSkwEhSWoyICRJTQaEJKnJgJAkNRkQ0ipK8tEkvzzqOqRhGBDSc9R/IM4/Q1qz/M0tLUOSzUkOJ/kA8BBwMsnvJ3koyV8k2dg/7h8k+VSSA0n+R5JrBj7mtf33CDw6eDWRZGeS/f33DPzuKp+adAYDQlq+LfSW9d7W336oql4NfJreU7fQe0fA26vqx4A7gA8M9H8J8NPAL9Jb1JAkr6f3Holr6S3o+GNJXtvxeUjn5FIb0vJ9tf++B4BngP/Y//6PgT1Jng/8JPDJ/lIMAN830H9vf7n3Lw28I+P1/a+D/e3n0wuMz3RzCtLSDAhp+Z44x76id2U+X1U/epZjnhz4PgP/fU9V/dH5lyetDIeYpPPzPODUPMIbgb/sL1T3lSS/As9OZi/13uJp4Df7Vx8kmUzyoq6KlobhFYR0fp4A/mGSA8B3gF/rt/868MEkv0NvJdD76L1lr6mq/jzJy4AH+8NSfwu8CXi8w9qlc3I1V+k8JPnbqnr+qOuQuuAQkySpySsISVKTVxCSpCYDQpLUZEBIkpoMCElSkwEhSWr6/2R1nNhviEJWAAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.scatter(rootpehe, rscore)\\n\",\n    \"plt.xlabel('rpehe')\\n\",\n    \"plt.ylabel('rscore')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.7393917952588073\"\n      ]\n     },\n     \"execution_count\": 27,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"best, score  = scorer.best_model([mdl for _, mdl in models])\\n\",\n    \"rootpehe_best = np.sqrt(np.nanmean((expected_te_val.flatten() - best.effect(X_val).flatten())**2))\\n\",\n    \"rootpehe_best\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.7346069084804471\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"ensemble, score  = scorer.ensemble([mdl for _, mdl in models])\\n\",\n    \"rootpehe_ensemble = np.sqrt(np.nanmean((expected_te_val.flatten() - ensemble.effect(X_val).flatten())**2))\\n\",\n    \"rootpehe_ensemble\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.violinplot([np.abs(mdl.effect(X).flatten() - expected_te) for _, mdl in models] +\\n\",\n    \"               [np.abs(best.effect(X).flatten() - expected_te)] +\\n\",\n    \"               [np.abs(ensemble.effect(X).flatten() - expected_te)], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks(np.arange(1, len(models) + 3), [name for name, _ in models] + ['best', 'ensemble'])\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"file_extension\": \".py\",\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Choosing First Stage Models.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Choosing First Stage Models in EconML Estimators\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Choosing first stage models for the various EconML estimators can seem like a daunting task. However, there are several ways to choose suitable first stage models, depending on the problem you are trying to solve. In this notebook, we go through the various types of crossvalidation and hyperparameter tuning used to select the first stage models.   \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 1;\\n                var nbb_formatted_code = \\\"import warnings\\\\n\\\\nwarnings.filterwarnings(\\\\\\\"ignore\\\\\\\")\\\\n\\\\n# Imports\\\\nimport numpy as np\\\\nimport scipy.special\\\\nfrom econml.dml import LinearDML\\\\nfrom sklearn.linear_model import Lasso, LassoCV\\\\nfrom sklearn.ensemble import GradientBoostingRegressor\\\\nfrom sklearn.model_selection import GridSearchCV\\\\nfrom sklearn.preprocessing import PolynomialFeatures\\\\nimport matplotlib.pyplot as plt\\\\nimport matplotlib\\\\n\\\\n%matplotlib inline\\\\n%load_ext nb_black\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Imports\\n\",\n    \"import numpy as np\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from sklearn.linear_model import Lasso, LassoCV\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 2;\\n                var nbb_formatted_code = \\\"# Data generation with quadratic treatment effect\\\\nnp.random.seed(123)\\\\nn = 2000\\\\np = 10\\\\nW = np.random.uniform(size=(n, p))\\\\nX = np.random.uniform(size=(n, 1))\\\\ntrue_effect = lambda x: x[:, 0] ** 2\\\\nT = W[:, 0] + W[:, 1] ** 2 + np.random.uniform(-1, 1, size=n)\\\\nY = (\\\\n    true_effect(X) * T\\\\n    + W @ np.random.uniform(size=p)\\\\n    + np.random.uniform(-1, 1, size=n)\\\\n)\\\\nX_test = np.arange(0, 1, 0.02).reshape(-1, 1)\\\\ntest_effect = true_effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Data generation with quadratic treatment effect\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 2000\\n\",\n    \"p = 10\\n\",\n    \"W = np.random.uniform(size=(n, p))\\n\",\n    \"X = np.random.uniform(size=(n, 1))\\n\",\n    \"def true_effect(x):\\n\",\n    \"    return x[:, 0] ** 2\\n\",\n    \"T = W[:, 0] + W[:, 1] ** 2 + np.random.uniform(-1, 1, size=n)\\n\",\n    \"Y = (\\n\",\n    \"    true_effect(X) * T\\n\",\n    \"    + W @ np.random.uniform(size=p)\\n\",\n    \"    + np.random.uniform(-1, 1, size=n)\\n\",\n    \")\\n\",\n    \"X_test = np.arange(0, 1, 0.02).reshape(-1, 1)\\n\",\n    \"test_effect = true_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Using cross-validated estimators as first stage models\\n\",\n    \"\\n\",\n    \"The most straightforward way to choose a first stage model is to not choose one at all and instead let the EconML estimators do the work for you. To achieve this, you can pass in a cross-validated estimator such as `sklearn`'s `LassoCV` or `GridSearchCV` as the first stage models. The EconML estimator will internally run the cross-validation step and select the best models for the first stage. \\n\",\n    \"\\n\",\n    \"**Advantages:** \\n\",\n    \"\\n\",\n    \"* Requires little to no boilerplate code, you can just pass in a CV estimator along with a hyperparameter grid.\\n\",\n    \"\\n\",\n    \"**Disadvantages:**\\n\",\n    \"\\n\",\n    \" * The EconML estimator will take longer to run due to an internal cross-validation step for computing the residuals. Further, the CV estimator will be trained on $n_{samples}/\\\\text{cv}$ data points which might not be suitable for small datasets. \\n\",\n    \" * Requires special CV estimator to choose among many classes of estimators (e.g. Lasso and GradientBoostingForest, see section 2.2. for workaround)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 3;\\n                var nbb_formatted_code = \\\"model_y = LassoCV(max_iter=10000)\\\\nmodel_t = LassoCV(max_iter=10000)\\\\nest = LinearDML(\\\\n    model_y=model_y,\\\\n    model_t=model_t,\\\\n    featurizer=PolynomialFeatures(degree=2),\\\\n    fit_cate_intercept=False,\\\\n)\\\\nest.fit(Y, T, X=X, W=W)\\\\nte_pred_lasso = est.effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"model_y = LassoCV(max_iter=10000)\\n\",\n    \"model_t = LassoCV(max_iter=10000)\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=model_y,\\n\",\n    \"    model_t=model_t,\\n\",\n    \"    featurizer=PolynomialFeatures(degree=2),\\n\",\n    \"    fit_cate_intercept=False,\\n\",\n    \")\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred_lasso = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 4;\\n                var nbb_formatted_code = \\\"first_stage = lambda: GridSearchCV(\\\\n    estimator=GradientBoostingRegressor(),\\\\n    param_grid={\\\\\\\"max_depth\\\\\\\": [3, 5, None], \\\\\\\"n_estimators\\\\\\\": (50, 100, 200)},\\\\n    cv=2,\\\\n    n_jobs=-1,\\\\n)\\\\nest = LinearDML(\\\\n    model_y=first_stage(),\\\\n    model_t=first_stage(),\\\\n    featurizer=PolynomialFeatures(degree=2),\\\\n    linear_first_stages=False,\\\\n)\\\\nest.fit(Y, T, X=X, W=W)\\\\nte_pred_gbr = est.effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"def first_stage():\\n\",\n    \"    return GridSearchCV(estimator=GradientBoostingRegressor(), param_grid={\\\"max_depth\\\": [3, 5, None],\\n\",\n    \"                                                                           \\\"n_estimators\\\": (50, 100, 200)},\\n\",\n    \"                        cv=2, n_jobs=-1)\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=first_stage(),\\n\",\n    \"    model_t=first_stage(),\\n\",\n    \"    featurizer=PolynomialFeatures(degree=2)\\n\",\n    \")\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred_gbr = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 5;\\n                var nbb_formatted_code = \\\"plt.plot(X_test, test_effect, \\\\\\\"--\\\\\\\", label=\\\\\\\"Truth\\\\\\\")\\\\nplt.plot(X_test, te_pred_lasso, label=\\\\\\\"DML with LassoCV\\\\\\\")\\\\nplt.plot(X_test, te_pred_gbr, label=\\\\\\\"DML with GradientBoostingRegressor\\\\\\\")\\\\nplt.legend()\\\\nplt.xlabel(\\\\\\\"X\\\\\\\")\\\\nplt.ylabel(\\\\\\\"Effect\\\\\\\")\\\\nplt.show()\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.plot(X_test, test_effect, \\\"--\\\", label=\\\"Truth\\\")\\n\",\n    \"plt.plot(X_test, te_pred_lasso, label=\\\"DML with LassoCV\\\")\\n\",\n    \"plt.plot(X_test, te_pred_gbr, label=\\\"DML with GradientBoostingRegressor\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"X\\\")\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Performing first stage model selection outside of EconML\\n\",\n    \"\\n\",\n    \"An alternative to passing in CV models to EconML is to perform model selection outside of the EconML estimators and then pass in the pre-selected models to EconML. This is the preferred method for first stage model selection due to its statistical and computational advantages.\\n\",\n    \"\\n\",\n    \"**Advantages:** \\n\",\n    \"\\n\",\n    \"* Faster runtimes of the EconML estimators and more flexible selection of first stage models.\\n\",\n    \"\\n\",\n    \"* As long as $\\\\log(\\\\text{#hyperparameters}) << O(n_{samples})$, this approach maintains statisical validity of the resulting inference results.\\n\",\n    \"\\n\",\n    \"**Disadvantages:** Requires more boilerplate code and manual training, scoring and selection of the first stage models.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1. Tuning hyperparameters within the same estimator class\\n\",\n    \"\\n\",\n    \"Here we select the best estimator within a given class (e.g. Lasso or GradientBoostingForest). This is done by conventional hyperparameter tuning. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 6;\\n                var nbb_formatted_code = \\\"XW = np.hstack([X, W])\\\\nmodel_y_alpha = LassoCV(max_iter=10000).fit(XW, Y).alpha_\\\\nmodel_t_alpha = LassoCV(max_iter=10000).fit(XW, T).alpha_\\\\nmodel_y = Lasso(alpha=model_y_alpha, max_iter=10000)\\\\nmodel_t = Lasso(alpha=model_t_alpha, max_iter=10000)\\\\nest = LinearDML(\\\\n    model_y=model_y,\\\\n    model_t=model_t,\\\\n    featurizer=PolynomialFeatures(degree=2),\\\\n    fit_cate_intercept=False,\\\\n)\\\\nest.fit(Y, T, X=X, W=W)\\\\nte_pred_lasso = est.effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"XW = np.hstack([X, W])\\n\",\n    \"model_y_alpha = LassoCV(max_iter=10000).fit(XW, Y).alpha_\\n\",\n    \"model_t_alpha = LassoCV(max_iter=10000).fit(XW, T).alpha_\\n\",\n    \"model_y = Lasso(alpha=model_y_alpha, max_iter=10000)\\n\",\n    \"model_t = Lasso(alpha=model_t_alpha, max_iter=10000)\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=model_y,\\n\",\n    \"    model_t=model_t,\\n\",\n    \"    featurizer=PolynomialFeatures(degree=2),\\n\",\n    \"    fit_cate_intercept=False,\\n\",\n    \")\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred_lasso = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 7;\\n                var nbb_formatted_code = \\\"model_y = first_stage().fit(XW, Y).best_estimator_\\\\nmodel_t = first_stage().fit(XW, T).best_estimator_\\\\nest = LinearDML(\\\\n    model_y=model_y,\\\\n    model_t=model_t,\\\\n    featurizer=PolynomialFeatures(degree=2),\\\\n    linear_first_stages=False,\\\\n)\\\\nest.fit(Y, T, X=X, W=W)\\\\nte_pred_gbr = est.effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"model_y = first_stage().fit(XW, Y).best_estimator_\\n\",\n    \"model_t = first_stage().fit(XW, T).best_estimator_\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=model_y,\\n\",\n    \"    model_t=model_t,\\n\",\n    \"    featurizer=PolynomialFeatures(degree=2)\\n\",\n    \")\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred_gbr = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 8;\\n                var nbb_formatted_code = \\\"plt.plot(X_test, test_effect, \\\\\\\"--\\\\\\\", label=\\\\\\\"Truth\\\\\\\")\\\\nplt.plot(X_test, te_pred_lasso, label=\\\\\\\"DML with LassoCV\\\\\\\")\\\\nplt.plot(X_test, te_pred_gbr, label=\\\\\\\"DML with GradientBoostingRegressor\\\\\\\")\\\\nplt.legend()\\\\nplt.xlabel(\\\\\\\"X\\\\\\\")\\\\nplt.ylabel(\\\\\\\"Effect\\\\\\\")\\\\nplt.show()\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.plot(X_test, test_effect, \\\"--\\\", label=\\\"Truth\\\")\\n\",\n    \"plt.plot(X_test, te_pred_lasso, label=\\\"DML with LassoCV\\\")\\n\",\n    \"plt.plot(X_test, te_pred_gbr, label=\\\"DML with GradientBoostingRegressor\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"X\\\")\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2. Choosing amongst different classes of estimators\\n\",\n    \"\\n\",\n    \"Here we select among different classes of estimators. This is essentially a two-step process where we first do in-class parameter tuning and then we choose among the optimized models. EconML offers the `GridSearchCVList` utility class to perform this type of model selection.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 9;\\n                var nbb_formatted_code = \\\"from econml.sklearn_extensions.model_selection import GridSearchCVList\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.model_selection import GridSearchCVList\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 10;\\n                var nbb_formatted_code = \\\"first_stage = lambda: GridSearchCVList(\\\\n    [Lasso(max_iter=10000), GradientBoostingRegressor()],\\\\n    param_grid_list=[\\\\n        {\\\\\\\"alpha\\\\\\\": [0.001, 0.01, 0.1, 1, 10]},\\\\n        {\\\\\\\"max_depth\\\\\\\": [3, 5, None], \\\\\\\"n_estimators\\\\\\\": [50, 100, 200]},\\\\n    ],\\\\n    cv=2,\\\\n)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"def first_stage():\\n\",\n    \"    return GridSearchCVList([Lasso(max_iter=10000), GradientBoostingRegressor()],\\n\",\n    \"                            param_grid_list=[{\\\"alpha\\\": [0.001, 0.01, 0.1, 1, 10]},\\n\",\n    \"                                             {\\\"max_depth\\\": [3, 5, None],\\n\",\n    \"                                              \\\"n_estimators\\\": [50, 100, 200]}],\\n\",\n    \"                            cv=2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 11;\\n                var nbb_formatted_code = \\\"model_y = first_stage().fit(XW, Y).best_estimator_\\\\nmodel_t = first_stage().fit(XW, T).best_estimator_\\\\nest = LinearDML(\\\\n    model_y=model_y, model_t=model_t, featurizer=PolynomialFeatures(degree=2)\\\\n)\\\\nest.fit(Y, T, X=X, W=W)\\\\nte_pred = est.effect(X_test)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"model_y = first_stage().fit(XW, Y).best_estimator_\\n\",\n    \"model_t = first_stage().fit(XW, T).best_estimator_\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=model_y, model_t=model_t, featurizer=PolynomialFeatures(degree=2)\\n\",\n    \")\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 12;\\n                var nbb_formatted_code = \\\"plt.plot(X_test, test_effect, \\\\\\\"--\\\\\\\", label=\\\\\\\"Truth\\\\\\\")\\\\nplt.plot(X_test, te_pred, label=\\\\\\\"DML with GridSearchCVList\\\\\\\")\\\\nplt.legend()\\\\nplt.xlabel(\\\\\\\"X\\\\\\\")\\\\nplt.ylabel(\\\\\\\"Effect\\\\\\\")\\\\nplt.show()\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.plot(X_test, test_effect, \\\"--\\\", label=\\\"Truth\\\")\\n\",\n    \"plt.plot(X_test, te_pred, label=\\\"DML with GridSearchCVList\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"X\\\")\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Customer Segmentation at An Online Media Company - EconML + DoWhy.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Segmentation.png\\\" width=\\\"400\\\"/>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Customer Segmentation: Estimate Individualized Responses to Incentives\\n\",\n    \"\\n\",\n    \"Nowadays, business decision makers rely on estimating the causal effect of interventions to answer what-if questions about shifts in strategy, such as promoting specific product with discount, adding new features to a website or increasing investment from a sales team. However, rather than learning whether to take action for a specific intervention for all users, people are increasingly interested in understanding the different responses from different users to the two alternatives. Identifying the characteristics of users having the strongest response for the intervention could help make rules to segment the future users into different groups. This can help optimize the policy to use the least resources and get the most profit.\\n\",\n    \"\\n\",\n    \"In this case study, we will use a personalized pricing example to explain how the [EconML](https://aka.ms/econml) and [DoWhy](https://github.com/py-why/dowhy) libraries could fit into this problem and provide robust and reliable causal solutions.\\n\",\n    \"\\n\",\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#background)\\n\",\n    \"2. [Data](#data)\\n\",\n    \"3. [Create Causal Model and Identify Causal Effect with DoWhy](#identify)\\n\",\n    \"4. [Get Causal Effects with EconML](#estimate)\\n\",\n    \"5. [Test Estimate Robustness with DoWhy](#robustness)\\n\",\n    \"    1. [Add Random Common Cause](#random-common-cause)\\n\",\n    \"    2. [Add Unobserved Common Cause](#unobserved-common-cause)\\n\",\n    \"    3. [Replace Treatment with a Random (Placebo) Variable](#placebo-variable)\\n\",\n    \"    4. [Remove a Random Subset of the Data](#subset)\\n\",\n    \"6. [Understand Treatment Effects with EconML](#interpret)\\n\",\n    \"7. [Make Policy Decisions with EconML](#policy)\\n\",\n    \"8. [Conclusions](#conclusion)\\n\",\n    \"\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background <a id=\\\"background\\\"></a>\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://cdn.pixabay.com/photo/2018/08/16/11/59/radio-3610287_960_720.png\\\" width=\\\"400\\\" />\\n\",\n    \"\\n\",\n    \"The global online media market is growing fast over the years. Media companies are always interested in attracting more users into the market and encouraging them to buy more songs or become members. In this example, we'll consider a scenario where one experiment a media company is running is to give small discount (10%, 20% or 0) to their current users based on their income level in order to boost the likelihood of their purchase. The goal is to understand the **heterogeneous price elasticity of demand** for people with different income level, learning which users would respond most strongly to a small discount. Furthermore, their end goal is to make sure that despite decreasing the price for some consumers, the demand is raised enough to boost the overall revenue.\\n\",\n    \"\\n\",\n    \"The EconML and DoWhy libraries complement each other in implementing this solution. On one hand, the DoWhy library can help [build a causal model, identify the causal effect](#identify) and [test causal assumptions](#robustness). On the other hand, EconML’s `DML` based estimators can be used to take the discount variation in existing data, along with a rich set of user features, to [estimate heterogeneous price sensitivities](#estimate) that vary with multiple customer features. Then, the `SingleTreeCateInterpreter` provides a [presentation-ready summary](#interpret) of the key features that explain the biggest differences in responsiveness to a discount, and the `SingleTreePolicyInterpreter` recommends a [policy](#policy) on who should receive a discount in order to increase revenue (not only demand), which could help the company to set an optimal price for those users in the future.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"\\n\",\n    \"# Utilities\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"from networkx.drawing.nx_pydot import to_pydot\\n\",\n    \"from IPython.display import Image, display\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.dml import LinearDML, CausalForestDML\\n\",\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter, SingleTreePolicyInterpreter\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data <a id=\\\"data\\\"></a>\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The dataset* has ~10,000 observations and includes 9 continuous and categorical variables that represent user's characteristics and online behaviour history such as age, log income, previous purchase, previous online time per week, etc. \\n\",\n    \"\\n\",\n    \"We define the following variables:\\n\",\n    \"\\n\",\n    \"Feature Name|Type|Details \\n\",\n    \":--- |:---|:--- \\n\",\n    \"**account_age** |W| user's account age\\n\",\n    \"**age** |W|user's age\\n\",\n    \"**avg_hours** |W| the average hours user was online per week in the past\\n\",\n    \"**days_visited** |W| the average number of days user visited the website per week in the past\\n\",\n    \"**friend_count** |W| number of friends user connected in the account \\n\",\n    \"**has_membership** |W| whether the user had membership\\n\",\n    \"**is_US** |W| whether the user accesses the website from the US \\n\",\n    \"**songs_purchased** |W| the average songs user purchased per week in the past\\n\",\n    \"**income** |X| user's income\\n\",\n    \"**price** |T| the price user was exposed during the discount season (baseline price * small discount)\\n\",\n    \"**demand** |Y| songs user purchased during the discount season\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the company, we use the simulated data as an example here. The data is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The treatment and outcome are generated using the following functions:\\n\",\n    \"$$\\n\",\n    \"T = \\n\",\n    \"\\\\begin{cases}\\n\",\n    \"  1 & \\\\text{with } p=0.2,  \\\\\\\\\\n\",\n    \"  0.9 & \\\\text{with }p=0.3, & \\\\text{if income}<1 \\\\\\\\\\n\",\n    \"  0.8 & \\\\text{with }p=0.5, \\\\\\\\\\n\",\n    \"  \\\\\\\\\\n\",\n    \"    1 & \\\\text{with }p=0.7, \\\\\\\\\\n\",\n    \"  0.9 & \\\\text{with }p=0.2, & \\\\text{if income}\\\\ge1 \\\\\\\\\\n\",\n    \"  0.8 & \\\\text{with }p=0.1, \\\\\\\\\\n\",\n    \"\\\\end{cases}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\gamma(X) & = -3 - 14 \\\\cdot \\\\{\\\\text{income}<1\\\\} \\\\\\\\\\n\",\n    \"\\\\beta(X,W) & = 20 + 0.5 \\\\cdot \\\\text{avg_hours} + 5 \\\\cdot \\\\{\\\\text{days_visited}>4\\\\} \\\\\\\\\\n\",\n    \"Y &= \\\\gamma(X) \\\\cdot T + \\\\beta(X,W)\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample pricing data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Pricing/pricing_sample.csv\\\"\\n\",\n    \"train_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>account_age</th>\\n\",\n       \"      <th>age</th>\\n\",\n       \"      <th>avg_hours</th>\\n\",\n       \"      <th>days_visited</th>\\n\",\n       \"      <th>friends_count</th>\\n\",\n       \"      <th>has_membership</th>\\n\",\n       \"      <th>is_US</th>\\n\",\n       \"      <th>songs_purchased</th>\\n\",\n       \"      <th>income</th>\\n\",\n       \"      <th>price</th>\\n\",\n       \"      <th>demand</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>53</td>\\n\",\n       \"      <td>1.834234</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>4.903237</td>\\n\",\n       \"      <td>0.960863</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>3.917117</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>54</td>\\n\",\n       \"      <td>7.171411</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>3.330161</td>\\n\",\n       \"      <td>0.732487</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>11.585706</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>33</td>\\n\",\n       \"      <td>5.351920</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>3.036203</td>\\n\",\n       \"      <td>1.130937</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>24.675960</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>34</td>\\n\",\n       \"      <td>6.723551</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7.911926</td>\\n\",\n       \"      <td>0.929197</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>6.361776</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>30</td>\\n\",\n       \"      <td>2.448247</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7.148967</td>\\n\",\n       \"      <td>0.533527</td>\\n\",\n       \"      <td>0.8</td>\\n\",\n       \"      <td>12.624123</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   account_age  age  avg_hours  days_visited  friends_count  has_membership  \\\\\\n\",\n       \"0            3   53   1.834234             2              8               1   \\n\",\n       \"1            5   54   7.171411             7              9               0   \\n\",\n       \"2            3   33   5.351920             6              9               0   \\n\",\n       \"3            2   34   6.723551             0              8               0   \\n\",\n       \"4            4   30   2.448247             5              8               1   \\n\",\n       \"\\n\",\n       \"   is_US  songs_purchased    income  price     demand  \\n\",\n       \"0      1         4.903237  0.960863    1.0   3.917117  \\n\",\n       \"1      1         3.330161  0.732487    1.0  11.585706  \\n\",\n       \"2      1         3.036203  1.130937    1.0  24.675960  \\n\",\n       \"3      1         7.911926  0.929197    1.0   6.361776  \\n\",\n       \"4      0         7.148967  0.533527    0.8  12.624123  \"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"train_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"train_data[\\\"log_demand\\\"] = np.log(train_data[\\\"demand\\\"])\\n\",\n    \"train_data[\\\"log_price\\\"] = np.log(train_data[\\\"price\\\"])\\n\",\n    \"\\n\",\n    \"Y = train_data[\\\"log_demand\\\"].values\\n\",\n    \"T = train_data[\\\"log_price\\\"].values\\n\",\n    \"X = train_data[[\\\"income\\\"]].values  # features\\n\",\n    \"confounder_names = [\\\"account_age\\\", \\\"age\\\", \\\"avg_hours\\\", \\\"days_visited\\\", \\\"friends_count\\\", \\\"has_membership\\\",\\n\",\n    \"                    \\\"is_US\\\", \\\"songs_purchased\\\"]\\n\",\n    \"W = train_data[confounder_names].values\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get test data\\n\",\n    \"X_test = np.linspace(0, 5, 100).reshape(-1, 1)\\n\",\n    \"X_test_data = pd.DataFrame(X_test, columns=[\\\"income\\\"])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Create Causal Model and Identify Causal Effect with DoWhy <a id=\\\"identify\\\"></a>\\n\",\n    \"\\n\",\n    \"We define the causal assumptions with DoWhy. For example, we can include features we believe as confounders and features we think will influence the heterogeneity of the effect. With these assumptions defined, DoWhy can generate a causal graph for us, and use that graph to first identify the causal effect.\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# initiate an EconML cate estimator\\n\",\n    \"est = LinearDML(model_y=GradientBoostingRegressor(), model_t=GradientBoostingRegressor(),\\n\",\n    \"              featurizer=PolynomialFeatures(degree=2, include_bias=False))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_model:Causal Graph not provided. DoWhy will construct a graph based on data inputs.\\n\",\n      \"INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \\\"Unobserved Confounders\\\" to reflect this.\\n\",\n      \"INFO:dowhy.causal_model:Model to find the causal effect of treatment ['log_price'] on outcome ['log_demand']\\n\",\n      \"WARNING:dowhy.causal_identifier:If this is observed data (not from a randomized experiment), there might always be missing confounders. Causal effect cannot be identified perfectly.\\n\",\n      \"INFO:dowhy.causal_identifier:Continuing by ignoring these unobserved confounders because proceed_when_unidentifiable flag is True.\\n\",\n      \"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# fit through dowhy\\n\",\n    \"est_dw = est.dowhy.fit(Y, T, X=X, W=W,\\n\",\n    \"                       outcome_names=[\\\"log_demand\\\"], treatment_names=[\\\"log_price\\\"], feature_names=[\\\"income\\\"],\\n\",\n    \"                       confounder_names=confounder_names, inference=\\\"statsmodels\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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OeL98nOgFsXULjO180wtoqmdZ+oUBIAOHToIkYz9+/d/ovNMLaI1lghQWFgoOHsvX75MXV0d48ePx9PTkxkzZojOXpFWR1lZmfCcU/95R1dXFycnJ0FMGzVqFEZGRpouV0RERESkFSMKbCJtAoVCQUBAAF999RXXrl3DwcGBVatWMX/+fHHmURvl3r17DRq11xfg1O4NbW1tTExMHhugsLCwoK6ujv/85z8cPnyY3r17s2bNGpYvX84LL7yg4TMTaUySkpJ47733CAoK4pVXXuGzzz7DxsZG02UBvwwkp6SkNHC7JSQkkJGRgVKpRFtbGzMzM2xtbbGyshLcblZWVo3eLF6lUpGUlCQ43MLDw0lNTUVLSwsrKyvB4ebq6oqVldWf6n+ZmJjIG2+8QUFBAd999x2vvvpqI55J20alUhESEsKRI0c4duwYMpmMadOm4e3tzcsvv0xKSgpDhw4lOTn5qS631kpISAivvPIKs2fP5ttvv23wHrxx4wbr16/nf//7HwYGBhqssvFQu66/++67BoM+SqWSN954g/PnzxMUFISrq6sGq2x8MjIyMDc3JyoqCicnp+fax+3btwWnWkJCAi+++CIzZszAy8uLl156SRQImhB/f3+hv9ru3buRSCSaLomysjJiY2OJjY0VBLXExERkMhmdOnXC2toaR0dHQUgbOnTon7oXlMlk3L17l8zMTDIzM4VYx7S0NDIzM4VY9BdeeEGYEPZrMa1///4a6TOdmJjI7t278fX1RalUMnfuXJYvX/7cf4ttmdra2idGMv5aNCsuLkYulwvb6erqNnCWPc15pqen1yyTSTIzM/H39ycwMJDw8HB0dXWZOnUqEomE6dOn06tXryavQUSkMVAoFMTHxzfonZaWlkZdXR3m5uYNoh4dHBzEJA0RERERkUZFFNhE2hzR0dF89dVXHD16lK5du7J48WJWrFghRpm0I57U7F3dpyI/Px/4ZWbogAEDGDhwIBUVFUilUrS0tJg7dy5btmwR3y9tjAsXLrBhwwbi4+NZsmQJH3zwAYaGhpou64nIZDKhV6E6YlIdn1pbW4uWlhYmJiZYWVk9Jr717t270eooKSkRZntev36dmzdvUlVVRe/evRk5ciQuLi64uLgwcuRIXnzxxT+07+rqalauXMnhw4dZs2YN27dvFx90/yCVlZWcOHECHx8fgoOD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+Z//mfN/ZTaZTERGRnLw4MFOryc9PZ2hQ4dedGwlnOuumzp1Kr///e+ZOXMmWVlZvPLKKyQkJGBvb3/VamlpaWHbtm18+OGHbNy4EW9vbx5//HGeeOKJThs7arFYOHDgAJs3b2bLli2kpKRcN2epVVVVGedmtnam5eXlAdC7d2+rzrSoqCh69OhhkzpFRERERETkyihgExERESulpaWkp6eTlpbGkSNHSE9PJyMjg4aGBhwcHAgODiY8PJywsDDCw8MJDw/Hy8vL1mXbjMViITU11Qjc/vGPf9DQ0EBoaKgRtkVHR183Zztdzvfff8+iRYv46KOPOHPmDJMmTWLu3Lncdddd7Xr96dOnMZlMeHt7d2jd1atX8/DDD1/ynpUrV172bVoh6QAAIABJREFUnqutvr4eT09PqqurjWv29va8++67zJkzp1NrARg5ciT/+Mc/2nTUXYirqysREREsWbKEgICAi9539uxZTp48SVhYWLtqOHv2LMuXL2fRokUcO3aMmJgYZs+ezaRJkzolgC8uLmbLli1s2bKFbdu2cebMGfr27WsEarY4S+3HH38kLS3NqjMtOzub5uZmfHx8rDrThg0bpg5hERERERGRm4ACNhEREbmsxsZGsrOzSU9PN8K39PR0o9uoZ8+eRtgWHh7O4MGDCQoKuiW73Wpra9mxY4cRuB09ehR7e3uGDx/O6NGjGT16NHfccUenjmC8EvX19axbt46//vWvJCcnExUVxW9/+1smT558ydpbxwHu27eP4cOHt2utpKQkxo0bd8muLAAnJyeKi4s7/SyvRx99lNWrVxsjGG01snL9+vXcf//97brXbDbj6elJXl7eJUci5ufn069fP+BccObh4XHRe1NSUli4cCFr1qzB3t6ehx9+mKeeeopBgwZ1bCMd1NTUxJ49e4xQLS0tDUdHR6Kjo5kwYQKxsbEEBQVd0xrO19DQQHp6OsnJyca4x8zMTJqamrjtttsYNmyYMeJx2LBh9OnTp9NqExERERERkc6jgE1ERESuWElJCYcPHyY9Pd34nJWVRUNDA126dCEgIIBBgwYxePBgQkJCCAsLo1+/ftjZ2dm69E5TXFxMUlISX3/9Nd988w0nTpzA2dmZu+++2wjcIiMjr+v3ZN++fbz33nt8+umndO/enV//+tc8+eSTbcZgbt++nVGjRmEymXB0dOSz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IUOsOtOCgoIueq6fiIiIiIiIyI1AAZuIiIjINXLy5ElycnLIysoiMzOT3NxccnNzKSoqAs51hPn5+TFw4EACAgIIDAw0Ajg/P7+rGkA4OTlRX19P9+7defnll/nNb36Dk5OT8fPo6Gh279592TPTWtnb29O1a1dWrVpFS0sLS5cu5csvv8TJyYkHHniAadOmMXbs2BvmvLpbVWFhIYsXL+aDDz6gvLwcNzc3fvGLX+Dm5kZ1dTUVFRVUVlZSW1vb4We/+eabTJw4kdDQUHUrioiIiIiIyE1HAZuIiIhIJ6utrSU3N5djx45x7NgxcnNzycnJ4dixY/zwww/AuQ4gf39/AgICjACutfPNx8enw2u6uLgYIYmdnR2enp689tprPProowC4u7tTX19/yWeYzWYjKDm/081sNhMbG8u//Mu/EBcXp7PUblBHjhxh9erVLF++nPLyciZPnszcuXM5fvw4CQkJfP/991gslnY9y2w2s2LFCqZPn36NqxYRERERERGxDQVsIiIiIteRM2fOGJ1urSFc6+eamhrgXBh2fvDW+jFw4MALjmEsKSlpE8qZTCZMJhO9evVi5syZvPrqq8b18389dHJyomfPnvTs2ZN+/frh7u5OVlYWBw4cwGw2M2XKFF588UX8/f2v3Zsinaq+vp61a9fy/vvvk5qaaly3t7dv9/lsDg4OPPnkk7z77rvXqkwRERERERERm1LAJiIiInKDKCoqsgrcWkO448eP09jYCIC3tzeBgYFG4DZw4EBqa2uZMWPGBZ9pNptpaWnBxcWFSZMmce+999KnTx+8vb3p06ePcV5bdXU1CxYsYMGCBbi4uPD888/z2GOP4e7u3mn7l863fft2EhISSE1NxdfXl969e1NcXMzJkyeNP3N2dnbY29vT2NhodX5bUFAQWVlZtipdRERERERE5JpSwCYiIiJyg2tqaiI/P59jx46Rk5NjNX6ysLCQlpYWzGazVfjxU61BW1BQEG+//TZxcXGYTCYAVqxYQUJCAk1NTTz33HPMnTsXV1fXztqeXAd27tzJiy++yN69e5k6dSp//vOfaWhoIC8vj+PHj5OXl8e3335LVlYWJ06cMLot9VcNERERERERuVkpYBMRERG5idXV1fG73/2OTz755LJnrMG5biSLxUJwcDC///3v2bhxIxs3bmTOnDm8/PLL9OjRoxOq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M7S0tPD6668zffp0/Pz8Om1dEREREREREVswtVyN09lFRERE5IY2c+ZMUlNT2b9/Pw4ODrYu56Jyc3NxcnJqM1YxNzeXwMBA9Kut7cyfP59XX32VzMzMnzX2UkRERERERORGoA42EREREWHBggWcPXuWxx57DIvFYutyLigxMZGAgIALhjc+Pj6sXbvWBlUJwLZt23jxxRf55JNPFK6JiIiIiIjILUEBm4iIiIjg4eHBhg0b2LhxI7/61a+oq6uzdUltrFmzhiVLlhhnjbXKzc1l3bp1TJkyxUaV3do2bNjAAw88QEJCAg8++KCtyxERERERERHpFArYRERERASAwYMHs3XrVnbt2sXYsWM5c+aMrUuysnLlStzc3HjrrbcwmUyYTCbmzZtHUVERv/71rwGM65f7kKvjo48+4oEHHmDmzJn84Q9/sHU5IiIiIiIiIp1GZ7CJiIiIiJW8vDxiY2Npampi+fLljBw50tYlyXWmoqKCZ555huXLl/OnP/2JZ5991tYliYiIiIiIiHQqdbCJiIiIiBV/f3/27t3L0KFDGT16NL/97W+pqamxdVlyndiyZQuDBw9m06ZNfPHFFwrXRERERERE5JakgE1ERERE2vD09OSzzz5j1apVrFmzhtDQUFavXk1zc7OtSxMbycvLY+rUqdx3333cfffdZGRkEB8fb+uyRERERERERGxCAZuIiIiIXNS0adPIyMhg1KhRPPLIIwwdOpRNmzbZuizpRN9//z2zZ88mJCSEtLQ0vvjiC9auXUuPHj1sXZqIiIiIiIiIzShgExEREZFL6tmzJx9//DHp6ekMGDCAuLg47rjjDhITE2lsbLR1eXKNZGdn89RTT+Hv78+mTZtYuHAhR44cUdeaiIiIiIiICArYRERERKSdQkJC+Oyzz9i3bx++vr7MmDGDfv368Yc//IHS0lJblydXQXNzM5s3b2bChAmEhITw1Vdf8ac//YmcnBxmzpyJvb29rUsUERERERERuS6YWlpaWmxdhIiIiIjceE6ePMmHH37IkiVLqK6uJjY2locffpiJEyfi5ORk6/KkAzIyMlizZg2rV6+msLCQe++9l6effprx48djNuv/yRMRERERERH5KQVsIiIiIvKz/Pjjj3z++eesXr2abdu24ezszKRJk5g6dSoxMTE4ODjYukS5gBMnTvDpp5+yatUqDh8+TP/+/Zk+fTrTp08nMDDQ1uWJiIiIiIiIXNcUsImIiIjIVVNaWsq6detYs2YN+/btw9nZmfHjxzNhwgT+6Z/+iZ49e9q6xFtWY2Mju3btYvPmzWzcuJHs7Gy8vb156KGHmD59OnfccQcmk8nWZYqIiIiIiIjcEBSwiYiIiMg1cfr0aSPM+eqrr6isrGTIkCGMHDmS6Oho7rnnHjw9PW1d5k2rqamJQ4cOsWvXLnbu3Mn27duprKxk6NChTJw4kYkTJzJs2DCNgBQRERERERG5AgrYREREROSaa+2e+vLLL9m1axfJyck0NTUREhJCdHQ0d955J0OHDiU4OBg7Oztbl3tDKi0tJTU1lYMHD7J792727NlDVVUVvXv3JiYmhpEjR6qLUEREREREROQqUcAmIiIiIp2upqaGffv2Gd1V+/fvp7a2FmdnZ8LCwoiIiCAiIoIhQ4YQEBCAm5ubrUu+bjQ3N5Ofn09GRgaHDh0iJSWFQ4cOcfLkSUwmEwMHDmTEiBFER0czYsQI+vUOyiouAAACe0lEQVTrZ+uSRURERERERG46CthERERExOYsFgs5OTmkpqYaH4cOHaKyshKAPn36EBgYSGBgICEhIQQEBNCvXz/69OmDg4ODjau/NkpKSigsLOTYsWNkZWWRnZ1Nbm4uOTk51NXVYWdnR0BAABEREQwdOpTIyEiGDBmCh4eHrUsXERERERERuekpYBMRERGR61JLSwsnTpwgOzubrKwscnNzja9LS0sBMJlM9OzZEz8/P/r06YOvry++vr54eXnRs2dPPD098fLywtPTE3t7exvv6JyqqiqKi4spKyujtLSUsrIyTp48SWFhofG5sLCQH3/8EQAHBwcCAgIIDAwkKCjI6sPV1dXGuxERERERERG5NSlgExEREZEbzpkzZzhx4gQnT56koKDACKVaQ6qSkhIsFovVazw9PfH09MTNzY1u3brh5uaGi4sLzs7O3Hbbbbi4uODg4ICdnR3u7u7G68xmM926dTO+r6+vp7a21vi+oaGBmpoaACoqKqipqaGmpobKykoqKyupqamhurraCNTq6+ut6nJzc6N3795GONinTx/8/PyM7/38/HQunYiIiIiIiMh1RgGbiIiIiNyUWrvDWoOt1q6xqqoqKisrqaqqMsKw8vJyqquraWxstArMABobG6murja+t7e3tzoT7vxAzt3dHRcXF1xcXKxCPFdXV6OTzsvLC29vb7y9vfH09MTJyanz3hQRERERERERuSoUsImIiIiIiIiIiIiIiIh0gNnWBYiIiIiIiIiIiIiIiIjcSBSwiYiIiIiIiIiIiIiIiHSAAjYRERERERERERERERGRDrAHnrF1ESIiIiIiIiIiIiIiIiI3iv8HQNqBJNV06RQAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<IPython.core.display.Image object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualize causal graph\\n\",\n    \"try:\\n\",\n    \"    # Try pretty printing the graph. Requires pydot and pygraphviz\\n\",\n    \"    display(\\n\",\n    \"        Image(to_pydot(est_dw._graph._graph).create_png())\\n\",\n    \"    )\\n\",\n    \"except Exception:\\n\",\n    \"    # Fall back on default graph view\\n\",\n    \"    est_dw.view_model(layout=None)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"### Estimand : 1\\n\",\n      \"Estimand name: backdoor1 (Default)\\n\",\n      \"Estimand expression:\\n\",\n      \"     d                                                                        \\n\",\n      \"────────────(Expectation(log_demand|is_US,has_membership,days_visited,age,inco\\n\",\n      \"d[log_price]                                                                  \\n\",\n      \"\\n\",\n      \"                                                        \\n\",\n      \"me,account_age,avg_hours,songs_purchased,friends_count))\\n\",\n      \"                                                        \\n\",\n      \"Estimand assumption 1, Unconfoundedness: If U→{log_price} and U→log_demand then P(log_demand|log_price,is_US,has_membership,days_visited,age,income,account_age,avg_hours,songs_purchased,friends_count,U) = P(log_demand|log_price,is_US,has_membership,days_visited,age,income,account_age,avg_hours,songs_purchased,friends_count)\\n\",\n      \"\\n\",\n      \"### Estimand : 2\\n\",\n      \"Estimand name: iv\\n\",\n      \"No such variable found!\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"identified_estimand = est_dw.identified_estimand_\\n\",\n    \"print(identified_estimand)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Get Causal Effects with EconML <a id=\\\"estimate\\\"></a>\\n\",\n    \"\\n\",\n    \"Based on the identified causal effect above, we fit the model as follows using EconML:\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"log(Y) & = \\\\theta(X) \\\\cdot log(T) + f(X,W) + \\\\epsilon \\\\\\\\\\n\",\n    \"log(T) & = g(X,W) + \\\\eta\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"where $\\\\epsilon, \\\\eta$ are uncorrelated error terms. \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The models we fit here aren't an exact match for the data generation function above, but if they are a good approximation, they will allow us to create a good discount policy.  Although the model is misspecified, we hope to see that our `DML` based estimators can still capture the right trend of $\\\\theta(X)$ and that the recommended policy beats other baseline policies (such as always giving a discount) on revenue.  Because of the mismatch between the data generating process and the model we're fitting, there isn't a single true $\\\\theta(X)$ (the true elasticity varies with not only X but also T and W), but given how we generate the data above, we can still calculate the range of true $\\\\theta(X)$ to compare against.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function given DGP\\n\",\n    \"def gamma_fn(X):\\n\",\n    \"    return -3 - 14 * (X[\\\"income\\\"] < 1)\\n\",\n    \"\\n\",\n    \"def beta_fn(X):\\n\",\n    \"    return 20 + 0.5 * (X[\\\"avg_hours\\\"]) + 5 * (X[\\\"days_visited\\\"] > 4)\\n\",\n    \"\\n\",\n    \"def demand_fn(data, T):\\n\",\n    \"    Y = gamma_fn(data) * T + beta_fn(data)\\n\",\n    \"    return Y\\n\",\n    \"\\n\",\n    \"def true_te(x, n, stats):\\n\",\n    \"    if x < 1:\\n\",\n    \"        subdata = train_data[train_data[\\\"income\\\"] < 1].sample(n=n, replace=True)\\n\",\n    \"    else:\\n\",\n    \"        subdata = train_data[train_data[\\\"income\\\"] >= 1].sample(n=n, replace=True)\\n\",\n    \"    te_array = subdata[\\\"price\\\"] * gamma_fn(subdata) / (subdata[\\\"demand\\\"])\\n\",\n    \"    if stats == \\\"mean\\\":\\n\",\n    \"        return np.mean(te_array)\\n\",\n    \"    elif stats == \\\"median\\\":\\n\",\n    \"        return np.median(te_array)\\n\",\n    \"    elif isinstance(stats, int):\\n\",\n    \"        return np.percentile(te_array, stats)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get the estimate and range of true treatment effect\\n\",\n    \"truth_te_estimate = np.apply_along_axis(true_te, 1, X_test, 1000, \\\"mean\\\")  # estimate\\n\",\n    \"truth_te_upper = np.apply_along_axis(true_te, 1, X_test, 1000, 95)  # upper level\\n\",\n    \"truth_te_lower = np.apply_along_axis(true_te, 1, X_test, 1000, 5)  # lower level\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Parametric heterogeneity\\n\",\n    \"First of all, we can try to learn a **linear projection of the treatment effect** assuming a polynomial form of $\\\\theta(X)$. We use the `LinearDML` estimator. Since we don't have any priors on these models, we use a generic gradient boosting tree estimators to learn the expected price and demand from the data.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"*** Causal Estimate ***\\n\",\n      \"\\n\",\n      \"## Identified estimand\\n\",\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"## Realized estimand\\n\",\n      \"b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"Target units: ate\\n\",\n      \"\\n\",\n      \"## Estimate\\n\",\n      \"Mean value: -0.9956103906192235\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lineardml_estimate = est_dw.estimate_\\n\",\n    \"print(lineardml_estimate)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get treatment effect and its confidence interval\\n\",\n    \"te_pred = est_dw.effect(X_test).flatten()\\n\",\n    \"te_pred_interval = est_dw.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<matplotlib.legend.Legend at 0x1f0a223bb00>\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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HLI8GAxiNh9bTVXDuBpTm6RdfvnlAOTl5ZGXl3dM+2gLkjm0gdIaH/6g0Vlg0XY/28tCXDfGgd2iMClIkVK09iFjpAkhOoADBw6Qnp6O3W60S05PT69LVObOncu4ceMYOXIk1113HVrrI56/YsUKTjvtNMaOHcu0adM4cOAAAH/+858ZPnw4o0eP5rLLLmtVbFVVVZxxxhmccMIJjBo1ioULFwJQXV3NueeeS05ODiNHjuTFF1/kz3/+M/v372fKlClMmTIFgL59+1JUVATAs88+y+jRo8nJyeGqq64C4L777uORRx5hwYIFLF++nCuuuILc3FzefvttLrjggro4PvjgAy688MJmYz311FPZunUrYJQE3nLLLeTk5PDll1/yn//8h/Hjx5Obm8tPfvITgsEgAP/+978ZPHgw48eP5/PPP6/bVm1cAFu3buXMM88kJyeHE044gW3btjFnzhyWLl1Kbm4ujz76KEuWLOG8884DoKSkhAsuuIDRo0czceJEvvvuu7pt/vCHP2Ty5Mn079+fP//5z616TxqSkrTj5A2EKK02fhFV+jTzv/MyOsPMpJ7GoU2Js2GRgWvbiRxXIcSx+c2b61i/v6JNtzk8O5F7zx/R5PKzzjqLuXPnMnjwYM4880xmzZrFaaedBsCNN97IPffcA8BVV13FW2+9xfnnn1/3XL/fz0033cTChQvJyMjgxRdf5K677uLpp59m3rx57NixA7vd3mSVY22iUeuVV15hwIABdfcdDgevvfYaiYmJFBUVMXHiRGbMmMG7775LdnY2b7/9NgDl5eUkJSXxxz/+kcWLF5Oenn7IftatW8f999/PF198QXp6OiUlJYcsv+SSS/jLX/7CI488Ql5eHlprbrnlFgoLC8nIyODf//43P/zhD5s9zm+++SajRo0CjCRywoQJ/OEPf2DDhg089NBDfP7551itVm644Qaef/55pk6dyr333suKFStISkpiypQpjBkz5ojtXnHFFcyZM4cLL7wQj8dDKBRi3rx5PPLII3WlkEuWLKlb/95772XMmDG8/vrrfPzxx/zgBz9g1apVAGzcuJHFixdTWVnJkCFDuP7661s83EZjJEk7TkVVvrrOAs+u9VLl19xwggOlFBazIkUGrm0/Ut0phOgA4uPjWbFiBUuXLmXx4sXMmjWLefPmMXv2bBYvXszvf/973G43JSUljBgx4pAkbdOmTaxdu5apU6cCRtVe9+7dARg9ejRXXHEFF1xwwSGlUg0drbpTa82dd97Jp59+islkYt++feTn5zNq1ChuueUWbr/9ds477zwmTZrU7Gv8+OOPmTlzZl3ylpqa2uz6Simuuuoq/vOf/3DNNdfw5ZdfNtlG7IorrsDpdNK3b18ef/xxAMxmMxdffDEAH330EStWrGDcuHEA1NTUkJmZyddff83kyZPJyMgAYNasWWzevPmQbVdWVrJv3766UjyHw9Fs3ACfffYZr7zyCgCnn346xcXFVFQYif+5556L3W7HbreTmZlJfn4+PXv2POo2myJJ2nFoOIH6rvIgb2zxMX2AlQEpRt14mssueUS7koMrhDg2zZV4tSez2czkyZOZPHkyo0aN4plnnuGyyy7jhhtuYPny5fTq1Yv77rvviOEZtNaMGDGCL7/88ohtvv3223z66ae8+eabPPDAA6xZswaL5di+1p9//nkKCwtZsWIFVquVvn374vF4GDx4MCtXrmTRokXcfffdnHHGGXUlfm3lmmuu4fzzz8fhcDBz5swmY69tk9aQw+Goa4emtebqq6/mwQcfPGSd119/vU3jbYnaKm0w3vNAIHBc25NGPa3UcAJ1rTV//9aDywKzRxlvkAxcGwGSAQshOoBNmzaxZcuWuvurVq2iT58+dQlZeno6VVVVjfbmHDJkCIWFhXVJmt/vZ926dYRCIfbs2cOUKVN46KGHKC8vp6qq6phjKy8vJzMzE6vVyuLFi9m1axcA+/fvx+VyceWVV3LrrbeycuVKABISEqisrDxiO6effjovv/wyxcXFAEdUdzb23OzsbLKzs7n//vu55pprjjn2WmeccQYLFiygoKCgbt+7du1iwoQJfPLJJxQXF+P3+3n55Zcbjalnz551CZ3X68Xtdjf5OsEonXz++ecBoxo0PT2dxMTEVsffHMkiWqkkPIE6wDcHAqw4GOT6MXaS7Ebemxov1ZztT5I0IUTsq6qq4qabbqKsrAyLxcLAgQN58sknSU5O5sc//jEjR46kW7duddV1DdlsNhYsWMDNN99MeXk5gUCAn//85wwePJgrr7yS8vJytNbcfPPNJCcnH/H8w9uk3X333VxyySV196+44grOP/98Ro0aRV5eHkOHDgVgzZo13HrrrZhMJqxWK3//+98BuO666zj77LPJ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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Compare the estimate and the truth\\n\",\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"plt.plot(X_test.flatten(), te_pred, label=\\\"Sales Elasticity Prediction\\\")\\n\",\n    \"plt.plot(X_test.flatten(), truth_te_estimate, \\\"--\\\", label=\\\"True Elasticity\\\")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    te_pred_interval[0].flatten(),\\n\",\n    \"    te_pred_interval[1].flatten(),\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"95% Confidence Interval\\\",\\n\",\n    \")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    truth_te_lower,\\n\",\n    \"    truth_te_upper,\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"True Elasticity Range\\\",\\n\",\n    \")\\n\",\n    \"plt.xlabel(\\\"Income\\\")\\n\",\n    \"plt.ylabel(\\\"Songs Sales Elasticity\\\")\\n\",\n    \"plt.title(\\\"Songs Sales Elasticity vs Income\\\")\\n\",\n    \"plt.legend(loc=\\\"lower right\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the plot above, it's clear to see that the true treatment effect is a **nonlinear** function of income, with elasticity around -1.75 when income is smaller than 1 and a small negative value when income is larger than 1. The model fits a quadratic treatment effect, which is not a great fit. But it still captures the overall trend: the elasticity is negative and people are less sensitive to the price change if they have higher income.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"      <td></td>     <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>income</th>        <td>2.386</td>      <td>0.081</td> <td>29.485</td>    <td>0.0</td>    <td>2.227</td>    <td>2.545</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>income^2</th>      <td>-0.42</td>      <td>0.028</td> <td>-15.185</td>   <td>0.0</td>   <td>-0.474</td>   <td>-0.366</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>-3.003</td>      <td>0.049</td> <td>-60.738</td>   <td>0.0</td>    <td>-3.1</td>    <td>-2.906</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                      Coefficient Results                      \\n\",\n       \"===============================================================\\n\",\n       \"         point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------\\n\",\n       \"income            2.386  0.081  29.485    0.0    2.227    2.545\\n\",\n       \"income^2          -0.42  0.028 -15.185    0.0   -0.474   -0.366\\n\",\n       \"                        CATE Intercept Results                       \\n\",\n       \"=====================================================================\\n\",\n       \"               point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"cate_intercept         -3.003  0.049 -60.738    0.0     -3.1   -2.906\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Get the final coefficient and intercept summary\\n\",\n    \"est_dw.summary(feature_names=[\\\"income\\\"])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"`LinearDML` estimator can also return the summary of the coefficients and intercept for the final model, including point estimates, p-values and confidence intervals. From the table above, we notice that $income$ has positive effect and ${income}^2$ has negative effect, and both of them are statistically significant.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Nonparametric Heterogeneity\\n\",\n    \"Since we already know the true treatment effect function is nonlinear, let us fit another model using `CausalForestDML`, which assumes a fully **nonparametric estimation of the treatment effect**.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_model:Causal Graph not provided. DoWhy will construct a graph based on data inputs.\\n\",\n      \"INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \\\"Unobserved Confounders\\\" to reflect this.\\n\",\n      \"INFO:dowhy.causal_model:Model to find the causal effect of treatment ['log_price'] on outcome ['log_demand']\\n\",\n      \"WARNING:dowhy.causal_identifier:If this is observed data (not from a randomized experiment), there might always be missing confounders. Causal effect cannot be identified perfectly.\\n\",\n      \"INFO:dowhy.causal_identifier:Continuing by ignoring these unobserved confounders because proceed_when_unidentifiable flag is True.\\n\",\n      \"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# initiate an EconML cate estimator\\n\",\n    \"est_nonparam = CausalForestDML(model_y=GradientBoostingRegressor(), model_t=GradientBoostingRegressor())\\n\",\n    \"# fit through dowhy\\n\",\n    \"est_nonparam_dw = est_nonparam.dowhy.fit(Y, T, X=X, W=W, outcome_names=[\\\"log_demand\\\"], treatment_names=[\\\"log_price\\\"],\\n\",\n    \"                                         feature_names=[\\\"income\\\"], confounder_names=confounder_names, inference=\\\"blb\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get treatment effect and its confidence interval\\n\",\n    \"te_pred = est_nonparam_dw.effect(X_test).flatten()\\n\",\n    \"te_pred_interval = est_nonparam_dw.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<matplotlib.legend.Legend at 0x1f0a22e34e0>\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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FlOnTuW2227jiiuu4MEHH2yxPZvNEolEtuuYzeNqT2OS9qlPfQqAqVOnMnXq1O06R09QJU36MSVpItL3rV69miFDhpBIJAAYMmRIU6Jy3XXXccghhzBp0iQuuuginHNtHj9v3jyOOeYYDj74YE466SRWr14NwM9+9jMmTJjAlClT+MQnPrFDsVVXV3Pcccdx0EEHMXnyZB544AEAampq+MhHPkJ5eTmTJk3irrvu4mc/+xmrVq3i2GOP5dhjjwVg7NixbNiwAYA777yTKVOmUF5ezqc//WkArr32Wn74wx9y7733MnfuXGbMmEFFRQUPP/wwZ5xxRlMcjz76KGeeeWansR599NG8/fbbQFAJvPzyyykvL+eFF17gT3/6E4ceeigVFRV84QtfIJvNAvD73/+ecePGceihh/Lcc881HasxLoC3336b448/nvLycg466CDeeecdrrrqKp555hkqKiq45ZZbePLJJzn11FMB2LRpE2eccQZTpkzhsMMO45VXXmk65mc+8xmmT5/OPvvsw89+9rMdek+aUyVN+i9V0kRkO/3vP15n0aqtPXrMCaNK+c5pEzvcfuKJJ3Ldddcxbtw4jj/+eM4991yOOeYYAC655BK+/e1vA/DpT3+ahx56iNNOO63psel0mksvvZQHHniAoUOHctddd3H11Vfzu9/9jptuuon33nuPRCLRYZNjY6LR6G9/+xsf+MAHmpaTyST33XcfpaWlbNiwgcMOO4zTTz+df/3rX4waNYqHH34YgMrKSsrKyvjxj3/MnDlzGDJkSIvzvP7669xwww08//zzDBkyhE2bNrXY/rGPfYyf//zn/PCHP2Tq1Kk457j88stZv349Q4cO5fe//z2f+cxnOn2d//GPfzB58mQgSCKnTZvGj370IxYvXsz3v/99nnvuOWKxGBdffDGzZs3ihBNO4Dvf+Q7z5s2jrKyMY489lgMPPLDNcWfMmMFVV13FmWeeSX19Pb7vc9NNN/HDH/6wqQr55JNPNu3/ne98hwMPPJD777+fJ554gvPPP58FCxYA8MYbbzBnzhyqqqrYf//9+dKXvtTt4TbaoyRN+jElaSLS9xUXFzNv3jyeeeYZ5syZw7nnnstNN93EzJkzmTNnDj/4wQ+ora1l06ZNTJw4sUWStmTJEl577TVOOOEEIGjaGzlyJABTpkxhxowZnHHGGS2q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adOmUVhYSDQa5ZhjjuHvf/97p4+JxWLU1tZSW1tLLBbjnXfeYfny5UyfPr3d/Wtra7n99tu59dZbSSSCq+OHDx/Oxz/+cQD+8pe/NM0s8PWvf73pccXFxVx99dWUl5dz2GGHsXbtWhYsWMCVV17JAw88QEVFBXV1dYwdO5YNGzYAcOONNzJu3DiOPPJIlixZ0nSsd955h5NPPpmDDz6Yo446ijfeeAMI5g297LLLOPzww9lnn3249957mx7z/e9/n8mTJ1NeXs5VV13V6XE60tHxr7rqKp555hkqKiq45ZZbyGazXHHFFRxyyCFMmTKFX//61wA8+eSTHHXUUZx++ulMmDCBq666il/84hdNx2+sFlZXV3Pcccdx0EEHMXnyZB544IFO4+oJStJ2WjcuGmitu6Pk91TH/Z1h1nG8RUODptiOLohQU6eICJMmTeKZZ55h48aN1NbWMnv2bJYv3zYk089//nOmTJnCZz7zGTZv3gzAN77xDc4//3y+973vcckll3D11Vdzww03dHiOt99+mz333JPS0rZdVFatWsXXv/51nnjiCRYsWMDLL7/M/fffD0BNTQ2HHXYYCxcu5Oijj+b222+noqKC6667jnPPPZcFCxZQULDtO27evHn89a9/ZcGCBcyePZuXX365adtFF13Erbfeyrx58/jhD3/IxRdf3LRt9erVPPvsszz00ENNydg///lPHnjgAV566SUWLlzIlVde2eVxOtLe8W+66SaOOuooFixYwFe+8hV++9vfUlZWxssvv8zLL7/M7bff3jRP6vz58/npT3/Km2++ybnnnsvdd9/ddOy7776bc889l2QyyX333cf8+fOZM2cOl19+Ob09a1Pfqen1V929aKC5xuqUn+54n3hx1yP07yoFg6B6bct18RIoDecNLR0djKuWrm31uAG7JDwRkb5s/PjxfP3rX+fEE0+kqKiIiooKIpGgG8uXvvQlvvWtb2FmfOtb3+Lyyy/nd7/7HRUVFbz44osAPP3004wcORLnHOeeey6xWIwf/ehHDB/evdlXXn75ZaZPn87QocEf1DNmzODpp5/mjDPOIB6Pc+qppwLBHJuPPvpop8d65plnOPPMMyksDFp5Tj/9dACqq6t5/vnnWwxa29CwberBM844A8/zmDBhAmvXBt8njz32GBdeeGHTsQYNGtTlcTrS3vFbe+SRR3jllVeaKm2VlZW89dZbxONxDj30UPbee28ADjzwQNatW8eqVatYv349AwcOZI899iCdTvPNb36Tp59+Gs/zWLlyJWvXrmXEiBFdxrejlKTtrO2tokE47MVAqFnX8T4FfWhOylgySBpT1cFyJBH0lWtMTi3sO7d+ybYxztTUKSLS5LOf/Syf/exnAfjmN7/JmDFjAFokWp///OebEqZGzjluuOEG/vrXv3LppZfygx/8gKVLl/Kzn/2MG2+8sWm/fffdl/fff5+tW7e2W03rSCwWw8Lf5ZFIhExmx8by9H2fAQMGsGDBgna3NzbBNj6nHT1OR7pzfOcct956KyeddFKL9U8++SRFRUUt1p1zzjnce++9rFmzhnPPPReAWbNmsX79eubNm0csFmPs2LHU1/fAWKKdUHPnztqe/mjNddbkaV7fq0I1Jo3mBfN+Rlrl99FEMJZbIzV1iog0Wbcu+KP8/fff5+9//3tTZ/bVq1c37XPfffcxadKkFo+78847OeWUUxg0aBC1tbV4nofnedTWtmy5KCws5LOf/Sxf/vKXSaVSQHCF5j333MOhhx7KU089xYYNG8hms/zlL3/hmGOO2aHncfTRR3P//fdTV1dHVVUV//jHPwAoLS1l77335p577gGChGjhwoWdHuuEE07g97//fdNz2bRp0w4dpyMlJSVUVVU1LZ900kn88pe/JJ0OWrHefPNNampq2n3sueeey1//+lfuvffepqpeZWUlw4YNIxaLMWfOHJYtW7ZDcW0PVdJ21o5U0hofFyts20QIQYKTyys621MwELauDPqgdfScCwcF1bbajX0vyRQRyaGzzz6bjRs3EovF+MUvfsGAAQMAuPLKK1mwYAFmxtixY5s6s0NwMcAdd9zBI488AsBXv/pVTjnlFOLxeLtDS9xwww1cc801TJgwgWQySVFREddddx0jR47kpptu4thjj8U5x0c+8hE++tGP7tDzOOiggzj33HMpLy9n2LBhHHLIIU3bZs2axZe+9CVuuOEG0uk0n/jEJygvL+/wWCeffDILFixg6tSpxONxTjnlFL773e9u93E6MmXKFCKRCOXl5cycOZMvf/nLLF26lIMOOgjnHEOHDm3qm9faxIkTqaqqYvTo0YwcGcwlPWPGDE477TQmT57M1KlTOeCAA7Y7pu1lvd3pLRemTp3q5s6d23sn8LOw5hXAYMSUYJT8HVG9HrauaLt+0Ad2fnyy3pCqCaaL6ozvw6Z3Yci+uyYmEZEuLF68mPHjx+c6DBGg/c+jmc1zzk1tva+aO3dGNLnjCRoE1anWI/p7sb6ZoEHXCRoEr8fgD/R+LCIiInlOSdrO2NGmzkbtjejf3eE5+rLtvdpVRERE2lCStjO6U1nqSuurOPvSVZ0iIiKSM0rSdsbOVtIgvEggvH4jVhgMdyEiIiK7PSVpO8wg2gNJWuOYaaAqmoiIiDRRkrajdvaigeYKBgHNkjURERHZ7SlJ21E90dTZKF4YTKbeeoBYERHp1zZu3EhFRQUVFRWMGDGC0aNHNy03Djq7s6ZPn87+++/fdNyPfexjwLaJwbdX47ycjR588EFuuummTh9z+OGHA7B06dJ2x3DrzJNPPklZWRkVFRUccMABfO1rX9vumPOVsoIdtaMzDXSkpPfm/hIRkWZW/bdnjzfqwA43DR48uGmKo2uvvZbi4uIWSUgmkyEa3fmv4lmzZjF1apthtnbIggULmDt3LqeccgoQzM/ZOEdnR55//nlgW5LWOKNCdx111FE89NBD1NXVceCBB3LmmWdyxBFH7NgTyCOqpO2onqykgYatEBHZTcycOZMvfvGLTJs2jSuvvLJNxWvSpEksXboUgD/96U8ceuihVFRU8IUvfIFsNrtD57z99ts55JBDKC8v5+yzz26aiumee+5h0qRJlJeXc/TRR5NKpfj2t7/NXXfdRUVFBXfddRd33HEHl1xyCQBr167lzDPPpLy8nPLy8qbkrLi4GICrrrqKZ555hoqKCm655RaOPvroFvNwHnnkkZ1O81RQUEBFRQUrV67sNO6ZM2dy2WWXcfjhh7PPPvs0TZru+z4XX3wxBxxwACeccAKnnHJK07Z58+ZxzDHHcPDBB3PSSSe1mJKrr1KStqN6upImIiK7jRUrVvD888/z4x//uMN9Fi9ezF133cVzzz3HggULiEQizJo1q919Z8yY0dTcecUVV7TZftZZZ/Hyyy+zcOFCxo8fz29/+1sArrvuOv7973+zcOFCHnzwQeLxONdddx3nnnsuCxYsaJpcvNFll13GMcccw8KFC5k/fz4TJ05ssf2mm27iqKOOYsGCBXzlK1/hs5/9LHfccQcQzJVZX1/f6RRPmzdv5q233uLoo4/uNG4I5j199tlneeihh7jqqqsA+Pvf/87SpUtZtGgRf/zjH3nhhRcASKfTXHrppdx7773MmzePz3zmM1x99dUdxtFXqLlzR/S1eTVFRKRfOeecc4hEOv8uefzxx5k3b17T/Jh1dXUMGzas3X27au587bXXuOaaa9iyZQvV1dWcdNJJABxxxBHMnDmTj3/845x11lldxv3EE09w5513AhCJRCgrK+t0/3POOYfrr7+em2++md/97nfMnDmz3f2eeeYZysvLeeutt/if//kfRowY0WncAGeccQae5zFhwgTWrl0LwLPPPss555yD53mMGDGCY489FoAlS5bw2muvccIJJwCQzWab5uTsy3KSpJnZ9cBHAR9YB8x0zq1qZ78s8Gq4+L5zrvNGcRERkX6gqGjbYOjRaBTf95uW6+vrAXDOccEFF/C9731vp883c+ZM7r//fsrLy7njjjt48sknAfjVr37FSy+9xMMPP8zBBx/MvHnzdvpczRUWFnLCCSfwwAMPcPfdd3d4/MY+ae+99x6HHXYYH//4x6moqOgwboBEItF0v6t5yJ1zTJw4samy1l/kqrnzZufcFOdcBfAQ8O0O9qtzzlWENyVoIiKSd8aOHcv8+fMBmD9/Pu+99x4Axx13HPfeey/r1q0DYNOmTSxbtmyHzlFVVcXIkSNJp9Mtmkzfeecdpk2bxnXXXcfQoUNZvnw5JSUlVFVVtXuc4447jl/+8pdAUI2qrKxssb29x37uc5/jsssu45BDDmHgwM6Hmtp777256qqr+P73v99p3B054ogj+Nvf/obv+6xdu7Ypqdt///1Zv359i+bP119/vcvj5VpOkjTn3NZmi0VA5ymwiIhInjr77LPZtGkTEydO5Oc//znjxo0DYMKECdxwww2ceOKJTJkyhRNOOKHDzu7N+6Qdf/zxbbZff/31TJs2jSOOOIIDDjigaf0VV1zB5MmTmTRpEocffjjl5eUce+yxLFq0qOnCgeZ++tOfMmfOHCZPnszBBx/MokWLWmyfMmUKkUiE8vJybrnlFgAOPvhgSktLufDCC7v1enzxi1/k6aefZunSpR3G3ZGzzz6bMWPGMGHCBM477zwOOuggysrKiMfj3HvvvXz961+nvLycioqKpose+jLrqkTYayc2uxE4H6gEjnXOrW9nnwywAMgANznn7u/OsadOnermzp3bc8GKiEi/tXjxYsaPH5/rMHZbq1at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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Compare the estimate and the truth\\n\",\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"plt.plot(X_test.flatten(), te_pred, label=\\\"Sales Elasticity Prediction\\\")\\n\",\n    \"plt.plot(X_test.flatten(), truth_te_estimate, \\\"--\\\", label=\\\"True Elasticity\\\")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    te_pred_interval[0].flatten(),\\n\",\n    \"    te_pred_interval[1].flatten(),\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"95% Confidence Interval\\\",\\n\",\n    \")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    truth_te_lower,\\n\",\n    \"    truth_te_upper,\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"True Elasticity Range\\\",\\n\",\n    \")\\n\",\n    \"plt.xlabel(\\\"Income\\\")\\n\",\n    \"plt.ylabel(\\\"Songs Sales Elasticity\\\")\\n\",\n    \"plt.title(\\\"Songs Sales Elasticity vs Income\\\")\\n\",\n    \"plt.legend(loc=\\\"lower right\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We notice that this model fits much better than the `LinearDML`, the 95% confidence interval correctly covers the true treatment effect estimate and captures the variation when income is around 1. Overall, the model shows that people with low income are much more sensitive to the price changes than higher income people.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Test Estimate Robustness with DoWhy <a id=\\\"robustness\\\"></a>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Random Common Cause <a id=\\\"random-common-cause\\\"></a>\\n\",\n    \"\\n\",\n    \"How robust are our estimates to adding another confounder? We use DoWhy to test this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count+w_random | income\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Add a Random Common Cause\\n\",\n      \"Estimated effect:-0.9594204479199662\\n\",\n      \"New effect:-0.9574777656374094\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_random = est_nonparam_dw.refute_estimate(method_name=\\\"random_common_cause\\\", num_simulations=5)\\n\",\n    \"print(res_random)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Unobserved Common Cause <a id=\\\"unobserved-common-cause\\\"></a>\\n\",\n    \"\\n\",\n    \"How robust are our estimates to unobserved confounders? Since we assume the model is under unconfoundedness, adding an unobserved confounder might bias the estimates. We use DoWhy to test this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Add an Unobserved Common Cause\\n\",\n      \"Estimated effect:-0.9594204479199662\\n\",\n      \"New effect:0.20029340691678463\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_unobserved = est_nonparam_dw.refute_estimate(\\n\",\n    \"    method_name=\\\"add_unobserved_common_cause\\\",\\n\",\n    \"    confounders_effect_on_treatment=\\\"linear\\\",\\n\",\n    \"    confounders_effect_on_outcome=\\\"linear\\\",\\n\",\n    \"    effect_strength_on_treatment=0.1,\\n\",\n    \"    effect_strength_on_outcome=0.1,\\n\",\n    \")\\n\",\n    \"print(res_unobserved)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Replace Treatment with a Random (Placebo) Variable <a id=\\\"placebo-variable\\\"></a>\\n\",\n    \"\\n\",\n    \"What happens our estimates if we replace the treatment variable with noise? Ideally, the average effect would be wildly different than our original estimate. We use DoWhy to investigate!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_refuters.placebo_treatment_refuter:Refutation over 3 simulated datasets of permute treatment\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~placebo+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~placebo+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~placebo+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"WARNING:dowhy.causal_refuters.placebo_treatment_refuter:We assume a Normal Distribution as the sample has less than 100 examples.\\n\",\n      \"                 Note: The underlying distribution may not be Normal. We assume that it approaches normal with the increase in sample size.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a Placebo Treatment\\n\",\n      \"Estimated effect:-0.9594204479199662\\n\",\n      \"New effect:-0.0009044538846515711\\n\",\n      \"p value:0.4246571154416484\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_placebo = est_nonparam_dw.refute_estimate(\\n\",\n    \"    method_name=\\\"placebo_treatment_refuter\\\", placebo_type=\\\"permute\\\",\\n\",\n    \"    num_simulations=3\\n\",\n    \")\\n\",\n    \"print(res_placebo)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Remove a Random Subset of the Data <a id=\\\"subset\\\"></a>\\n\",\n    \"\\n\",\n    \"Do we recover similar estimates on subsets of the data? This speaks to the ability of our chosen estimator to generalize well. We use DoWhy to investigate this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_refuters.data_subset_refuter:Refutation over 0.8 simulated datasets of size 8000.0 each\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: log_demand~log_price+is_US+has_membership+days_visited+age+income+account_age+avg_hours+songs_purchased+friends_count | income\\n\",\n      \"WARNING:dowhy.causal_refuters.data_subset_refuter:We assume a Normal Distribution as the sample has less than 100 examples.\\n\",\n      \"                 Note: The underlying distribution may not be Normal. We assume that it approaches normal with the increase in sample size.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a subset of data\\n\",\n      \"Estimated effect:-0.9594204479199662\\n\",\n      \"New effect:-0.9571011772201145\\n\",\n      \"p value:0.19397906736405435\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_subset = est_nonparam_dw.refute_estimate(\\n\",\n    \"    method_name=\\\"data_subset_refuter\\\", subset_fraction=0.8,\\n\",\n    \"    num_simulations=3)\\n\",\n    \"print(res_subset)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Understand Treatment Effects with EconML <a id=\\\"interpret\\\"></a>\\n\",\n    \"EconML includes interpretability tools to better understand treatment effects. Treatment effects can be complex, but oftentimes we are interested in simple rules that can differentiate between users who respond positively, users who remain neutral and users who respond negatively to the proposed changes.\\n\",\n    \"\\n\",\n    \"The EconML `SingleTreeCateInterpreter` provides interperetability by training a single decision tree on the treatment effects outputted by the any of the EconML estimators. In the figure below we can see in dark red users respond strongly to the discount and the in white users respond lightly to the discount.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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Akx5ritTnuvKB60evKVtD50LI0dIMOXzhOJmDKHp01ExT07WHTx6U9vnzZg+2WNjbmn3IiIiIiLX9cgjjxB+6RLhly4xa9YsihcrxqbNm53rN23aRJYsWciQIUOK7nf//v24u7vTuXNnPDw8CA0NpUOHDvw+a1aK7kdE5H6jIrCISAqy1hIbH098QiIAsfHxxMUnXHNs/kwZOH7hIpuOHMday4kLl1h94Ah5/lbcjY2PJy7BsX1cQgKx8fHOdfWLF2Le9t2cuHiJ6Lh4Jq3ZRKW8ue7g0YmIiIjI/eqxxx7jp59+Yvv27Vy4cIGPP/mELl26XHd8TEwM0Un3q4iNjSU6OhprLQCJiYlER0cTFxeHtZbo6GhiY2MBKFSoENZaxo4dS2JiIidPnmTixImU/Fs/YhERuXUerg4gIpKWnL4UQfefJzgft/puOJkDA/i5R0cA+kybTfEcWelQqQzZ0gXxYoOaDF20gtOXIvDz9qR24QI0KlE42fZ/eWrkZABmvvg4AA2LF+b0pQheHj8DgPK5Q3mqdpU7fYgiIiIich968MEHee2116hbrx6XL1+mTevWvP/ee871JUqW5K033+SRRx4BoEjRohw6dMixbePGAOzft488efKwZMkS6v7tRm9+/v7UqlWLhQsWEBQUxJTJk3nzrbd49rnn8PX1pVmzZrzz9tt372BFRNIg89df4kREUgtjTKXQkOC5Q7u0C/730eIqHYeMigyPjilqrVWjYhEREZGbkCljxmXDhw+v2qRJE1dHkesYNmwYr73++oSwsLCOrs4iInIr1A5CREREREREREREJA1TEVhEREREREREREQkDVMRWERERERERERERCQNUxFYREREREREREREJA1TEVhE5D7RdMCPHL9w0dUxRERERERSlJu7O3v37nV1DBGRe5qHqwOIiKQGi3buZdr6rRwNu4Cvpyf5MmWgQ6UyFM+R1Tnmj227GfDHEt5oXIeahfOz9dhJ+k6fDYC1EBMfj4/nlbfdwY+15cs5i9h58gzubsb5fKnQbPRt2eiW8jUd8CM/dG1H9nTB//FIRUREROR+MnbsWL4aMICdO3cSGBhImdKl6d27N9WrV3eOGT58ON179GDc2LF06NCBpUuX0qRpUwCstURFReHv7+8cv23rVrp07crKlSvx8Lhy/lundm1mzJhxS/nc3N3ZvWsX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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(est_nonparam_dw, X_test)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=[\\\"income\\\"], fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Make Policy Decision with EconML <a id=\\\"policy\\\"></a>\\n\",\n    \"We want to make policy decisions to maximum the **revenue** instead of the demand. In this scenario,\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"Rev & = Y \\\\cdot T \\\\\\\\\\n\",\n    \"    & = \\\\exp^{log(Y)} \\\\cdot T\\\\\\\\\\n\",\n    \"    & = \\\\exp^{(\\\\theta(X) \\\\cdot log(T) + f(X,W) + \\\\epsilon)} \\\\cdot T \\\\\\\\\\n\",\n    \"    & = \\\\exp^{(f(X,W) + \\\\epsilon)} \\\\cdot T^{(\\\\theta(X)+1)}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"With the decrease of price, revenue will increase only if $\\\\theta(X)+1<0$. Thus, we set `sample_treatment_costs=-1` here to learn **what kinds of customers we should give a small discount to maximum the revenue**.\\n\",\n    \"\\n\",\n    \"The EconML library includes policy interpretability tools such as `SingleTreePolicyInterpreter` that take in a treatment cost and the treatment effects to learn simple rules about which customers to target profitably. In the figure below we can see the model recommends to give discount for people with income less than $0.985$ and give original price for the others.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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xOmV1qcBs/CSij/UUFW17fR7WY/FSxRn4iUUqhtWojZd8Sad24x3zMc55yZV0a5NeGOsXoN3S/t1wLHbJR/eAA4DJmw3HMb1eO/7VPNuB/8ar9dqnTjnJuCNcfsG3m3RHwDNd/Y98sXhHeNMvFv2N+ElsMFLoPUy7/byD+pwTtbmMeAUM8s0s8eraF++376f/H0O36EGT03H8VG8SaY24v2I8Xl9YqhNfT/H2207Hy8hutRvX5tqir6Bl7zOwJt8crS/fV3Ovar2m4s3IdlxeMMBLAIOrqJcGt7kYjfiJVXT8BKVQf7j73i9ejPwxrL9ax3b/TVwC14ycC1ez9yaxievc1y1XQOccz8D5+ONzZsNfMeOvanrEkNd37uarrt34E2Olw1MxBvCoLJ7gZv9+q/diRjfx5tY8k3/czEH75pQF9/i9bJdZ2YbAczsbDOr67jPW5yBN2nblvHbT3He+MdV1XcPXk/2xWa22X/c6LelGO9H13OALOACYJS/HLzJSwvxzuV0vCFATqxnrCIiInu9LbM3i4iISCPi94B72jlX7wSHmd0OdHHOjW7wwGre7wt4vbdursc2O91OkT2dmb0ErKrPZ0IkEMxsAV6C+33n3Lm1ld+dzOwrvMkaf3bOVTWsj4iIiADVjdsnIiIiexDzxic+GK+XbDJez8H3a9xoD2LexHknsXVm++rKNep2iog0Rc65Ot/FsLv5Y1eLiIhILTQchIiISONgeLcXZ+INkzAPuDWgEdWRmd2Fd6vyg865ZbUVp5G2U0REREREZE+l4SBEREREREREREREmjD1BBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnClAQWERERERERERERacKUBBYRERERERERERFpwpQEFhEREREREREREWnCQgIdgIiIiIjsecysPUHBpwdHxAw1CwoPdDxSG1deXlK0qry44D1gknOuPNARiYiIiMiew5xzgY5BRERERPYgZnZIUFjkR4lDTwiO6zo0wkLCAh2S1MaVU7RpVfmG798oKNmc+WF5Ud4YJYJFREREZAslgUVERESkgplZUHjU+u5/ez4pofeBgQ5H6qmsMI/fbjt0c9HGtFOcc18EOh4RERER2TNoTGARERERqaxvcERMZHyvEYGOQ3ZCcEQ0ySPPiQ4Kjz4l0LGIiIiIyJ5DSWARERERqSw5PDGlzMwCHYfspIgWqRYUEtY+0HGIiIiIyJ5DSWARERERqcywHf9E/PWWg8mePzkA4Ui9WRAYyuKLiIiISIWQQAcgIiIiInu+AXdNCnQIe7TsP35g6es3UZyxmpiOA+lywaOEt2hbZdncxdNZ9ubtFKxZRERSOzqOvoe4rkMr1q/95gXWfvlfSjdnEpHciQ5n3lGxPu3Dh1k98XEqT9bX/46viUhSx18RERERqZ56AouIiIjIXss5R0nupj9VR0luBgvGXUy7Uf9gyONzie7Qn4XPXFp12c2ZzH/8PFKOvJShT86jzf/9lfmPn0dpXhYAuUtnsfKde+j21/8y5Mn5tBxxBguevBBXXlZRR+KQ4xk2blHFQwlgEREREamNksAiIiIiUqtZ1w0j64/vAa836sL/XMKi58Yy7bJu/HrLwWxe/ltF2aKM1Sx46iKmX9mX6WN7s/T1mwBw5eWs+vhRZv5jKNOv6sei58ZSmp8DQOHGNKZcmMKGH99i5rX78PMVvVj3v1fYvOxXfrvtMH6+vGdFPVts+OFNfr35IH6+ohd/PHIWRRtX1bk9hekrSPvgIX65fjgbfnjzTx2bjFmfEtmmG4lDjiMoNILUE64hL20eBWsX71B285IZhMa3JHHIcVhQMEn7nkxobHM2zfoMgKKNaUSmdCemQz/MjKT9TqV0cwYlORv/VIwiIiIisnfTcBAiIiIiUm8Zv35F9789S5cL/s3K9x9g2es30femT3DlZcx/7Fzie+7P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OEoCi4iIiPjMLBIvmXQR0BN4FXjeOTcvoIGJSI3MLBY4He+zmwq8CLzgnFsa0MBERERE9hBKAouIiMhez8wG4iWPzgB+xutN+LFzrjiggYlIvZlZH7zewaOB3/A+zx845woDGpiIiIhIACkJLCIiInslM0sAzsRL/rbAG1f0JefcykDGJSINw8zCgVF4CeFBwOvAc8653wMZl4iIiEggKAksIiIiew1/DNEReInf44Ev8XoJfuOcKwtkbCKy65hZR+B8/7EG70efN51zOQENTERERGQ3URJYREREmjwzawWci9cjsAQv8fuacy49oIGJyG5lZsHAEXg/BB0CvI93PZji9MVIREREmjAlgUVERKRJMrMQ4Ei8ZM9I4F283n9TlewRETNLBs7B+3HI4SWDX9GPQyIiItIUKQksIiIiTYqZdQIuwLvtOw0vsfOWcy43oIGJyB7JHyZmf7wfjEYBX+H9YPSVhokRERGRpkJJYBEREWn0zCwCOBGvR19/4DXgeefcnIAGJiKNipnF400YeSGQDLwAvOicWxHQwERERET+JCWBRUREpNEys354yZqzgVl4vfc+cM4VBTQwEWn0zGwA3vXlTGAm3l0FH+n6IiIiIo2RksAiIiLSqJhZHHAG3q3brYEX8XrqLQtoYCLSJJlZJN6dBhcBfYBX8e40+COggYmIiIjUg5LAIiIissfzx+zcD69X3onAt3i98r7UmJ0isruYWWe2jjm+HO869LZzbnMg4xIRERGpjZLAIiIisscys5bAGLweeIY33MMrzrn1AQ1MRPZqZhYCHIV3bRoBvIuXEP7Z6QuWiIiI7IGUBBYREZE9ipkFA4fjJVcOAz7AS678pOSKiOxpzKw1cC7eNasA73r1mnNuU0ADExEREalESWARERHZI5hZe7xbrC8A1uMlUt50zmUHNDARkTrwh605CG/YmuOAz/GuY98658oDGZuIiIiIksAiIiISMGYWDhyP14NuMDAeb8KlXwMZl4jIn2FmzYCz8K5tCcALeBNYrgpkXCIiIrL3UhJYREREdjsz643XW240MAevt9z7zrmCgAYmItLAzGwQXjL4DGAK3vXuE+dcSUADExERkb2KksAiIiKyW5hZDHAaXjKkA/Ai8IJzbkkg4xIR2R3MLAo4Be8HsO7AK3h3PiwIaGAiIiKyV1ASWERERHYZf4zMoXiJ35OBH/B6wX3mnCsNZGwiIoFiZt3xxj8/F1gIPA9McM7lBzQwERERabKUBBYREZEGZ2aJeEM9XARE4iV+X3bOrQ1oYCIiexAzCwWOwbtW7ge8hXe9nOX0RU1EREQakJLAIiIi0iDMLAg4BC+Z8X/Ax3i9275TMkNEpGZm1hY4D2+4iGy8ZPDrzrnMQMYlIiIiTYOSwCIiIvKn+ImL8/Fubc7CS1y8ocSFiEj9+T+oHYz3g9pRwCds/UGtPJCxiYiISOOlJLCIiIjUm38L87F4SYp9gTeB55xzswIamIhIE1LF0DrP4w2tsyaggYmIiEijoySwiIiI1Jk/mdGFwDl4kxk9B7yjyYxERHYdf5LNIXjJ4FPZOsnmp5pkU0REROpCSWARERGpkZlF4SUdLgS6AS8DLzjnFgQ0MBGRvZCZxeBdky8COgIv4V2TFwcyLhEREdmzKQksIiIiO/B7nQ3CSzKcDkzGuw35E+dcSSBjExERj5n1wvuBbgwwF6938HvOuYKABiYiIiJ7HCWBRUREpIKZNQPOxkv+xuMlfl9yzq0KaGAiIlItMwsDjse7dg8BxuON0/5rIOMSERGRPYeSwCIiIns5fyb6g/B6kx0LfIbXm2ySZqIXEWlczKw9cB5wAZCOdz0f75zLDmRcIiIiElhKAouIiOylzKwNcC5e8rcAL1HwmnNuU0ADExGRP83MgoHD8HoHHw58iHed/9HpS6CIiMheR0lgERGRvYiZhQBH4yUFRgAT8JIC05UUEBFpmswsCW/c4IuAYLyhfl52zq0PaGAiIiKy2ygJLCIishcwsy54twafByzDS/xOcM5tDmRcIiKy+/iTfu6LdwfIScAkvP8PvnDOlQUyNhEREdm1lAQWERFposwsEu9L/kVAb+BV4Hnn3B8BDUxERALOzOKA0/H+j0gBXgRecM4tC2hgIiIisksoCSwiItLEmNkAvC/1ZwLT8Xp5feScKw5kXCIismcys754vYNHA7/gDRfxgXOuMKCBiYiISINRElhERKQJMLN4vKTvRUAS8ALwknNuRUADExGRRsPMIoBReAnhAcDreHeQ/B7AsERERKQBKAksIiLSSPljOx6Al/g9AfgKr9fv1xrbUURE/gwz6wSc7z9W4/3/8qZzLjeggYmIiMhOURJYRESkkTGzZOAcvORvGd4X81edc+kBDUxERJocMwsBjsT7P2ck8B7ecBFTnL5MioiINBpKAouIiDQCZhbM1i/hB6Mv4SIispuZWSu2/ghZin6EFBERaTSUBBYREdmDmVlHtt6OuwbvC/dbzrmcgAYmIiJ7LX84ohF4YwefAHzJ1uGIygMZm4iIiFRNSWAREZE9jJmF403McxGamEdERPZgZpbA1olJW+BNTPqic25lIOMSERGRbSkJLCIisocwsz54X6LPBn7FG+7hA+dcYSDjEhERqQszG4jXO/hM4Ge8/8c+cs4VBzQwERERURJYREQkkMwsFjgdL/nbFngRrwfV0oAGJiIispPMLBI4GS8h3At4Fe+OlnkBDUxERGQvpiSwiIjIbuaPpTgcL/F7EjAJbyzFL5xzZYGMTUREpCGZWVfgAuA8YCne/3dvO+fyAhmXiIjI3kZJYBHZ7cwsDOgPRAc6FtmjZQO/O+dKAx1IQzGzJGAMXs+oELzbZF9xzq0LaGAiIiK7mJmFAkfh/QB6ADAB7//B6a4Rfyk1s2igLxAR6Fik0coDZjvnigIdiIg0bUoCi8huY2YWFRp0S5lz1yfHhpXGRYQ4C3RQskdyQGZ+SdCmvFLKnbuuqLT86UDHtLPMLAg4DO9L7xHAh3i9oH5szF96RUREdpaZpQDn4v0omof3/+JrzrmMgAZWD2YWHBwR+1R5adF54S1SC4PDowIdkjRGzlFakGvFmWtDLTjk4fKi/Fv196GI7CpKAovIbhMcZBe0TQh/YsJ5vaPaJoQHOhxpBBZuyOfkF+fmZ+SXnuKc+yzQ8dSHmbUDzse7BTYd7wvueOdcdkADExER2UP4P5QehPdD6THAZ3j/X05yzpUHMrbaBEdE3xuV0mNsj7EvR4XGNg90ONLIFWWs4Y+HTs8rTF/xD1dW+p9AxyMiTVNQoAMQkb1HbHjwVf86uqMSwFJn3VpGccNh7aLiIoIvD3QsdWFmYWZ2ipl9BvwCJAGjnHP7OOeeVgJYRERkK+dcuXNuknPubKAT8BPwCLDYzG7yewzvcczMcPyl8/kPKwEsDSK8eRs6jr47OjgiemygYxGRpktJYBHZbQpKyrsOTo0NdBjSyOyTGotz9A90HDUxs55m9hCQBvwNeA1o65y73Dn3S2CjExER2fM55zKcc08CA4DTgFTgdzP7xMxG+WMK7ykSnCuLiWrTLdBxSBMS23kIZYV5XQIdh4g0XUoCi8huU+4IDg/ee0cBvur9xdz/zcpAh9HohIUE4WBP+uIHeBPBmNn5ZvYT8A1QDOzvnDvYOfe6c64gwCGKiIg0Os4zwzl3KV4ieAJwDbDSzO43sz0h8xpqwSFlgQ5iT7L4+atY+d79gQ6jUQsKDYPy8uBAxyEiTVdIoAMQEZHd784vlvPF/EzSNxfTKi6MK0a05dQBSRXr56zN49oPl7BoYwFdW0Ty0Amd6dM6OoAR7xnMzIAheBPZnAr8CNwPfOqcKw1kbCIiIk2Ncy4PeBl42cx64I2z/4OZzccbO/hd51x+IGOUPU/J5kyWvXYD2X/8AGYk9B5JxzH3EhLp3ZFYuDGNJS9czeZlvxDWPIWOZ/+LhF4HBjhqEZFdTz2BRUT2QlGhwbx8Vg/m3zCUR0/swm2fLWP6ylwAikvLuWD8fE7q14I//jmEUwckccH4+RSX7tHzs+xSZtbczMYCvwFvAMuBPs65451zHykBLCIisms55+Y7567D6x38GHAmsMrMxpnZoMBGJ3uStPcfoDQvm4H3T2XgvZMpyUln1YcPV6xf9MxlRLfrwz6PzaHdidezcNwllORuCmDEIiK7h3oCi8he4akfVvPCtLXkFpWRHBvGPcd2YkSneH5Zlcutny1n8cYCIkKCOLpXc247sgNhId5vZCm3TeHuYzry7JS1pG8u5qLhrTltYEvGvreIBRsKGNklgSdO6kJYSBCTl2VzxXuLOXdIMv+dspbosGCuPzSVk/olVRnTVwsyeeDblazKKqJrUiT3HduJXq2ia4y3oVx7SGrF80FtYxnaPo6ZabkMaRfLlOU5lJU7Lt63NWbGhcNb8/TkNfy0LJuDuzZrsBj2dP6M5QfjzVh+FPAJcCXw3Z4+Y7mIiEhT5ZwrBt4D3jOzVOA8/3kG8DzwhnMuM4Ah7narP32Ktd+8QFlBLmEJyXQafQ/xvUaQu/QXlo+/lYK1iwkKi6D54KPpcPptBIWEATDlwhQ6nn03a796luLsdFoffhEt9z+NRc+NpWD1AhL6jKTLxU8QFBJG9vzJLH7uCpIPPpe1X/6X4PBoUk+6nqThJ1UZU+ZvX7Hy/Qco2riKyDZd6TTmPqJTe9UYb0Mp2phG84FHVvT8bT7oKDJ+/RKAgnVLyFs5h15/H09wWCSJ+xzD2q+fY9PMibQaeU6DxSAisidSElhEmrzFGwt48ed1TPxLP1rFhZGWWUiZ89YFBxm3/18H+reJYW1OEaNfm8/L09dz8b6tK7b/bnEWn1/SlzU5xfzf07OZkZbLEyd1pVlUCMc/N4cP5mzktAEtAUjfXExGfikzrxnMrFW5jHltPv3axNClReQ2Mc1Zm8c1Hy7mpbN60L9NDO/OTuf88Qv4/ooBpGUVVRvv9p78YTVP/bi62rbPu2ForcenoKSM31Zv5twhyQAs2JBPz+RovJEPPD2To1iwoWCvSAL7M5GfhzfkQw7e7aaX7W1fKEVERPZ0zrk04C4zuxs4FO+H27vN7GO8/7+/d85V81dU01CwbjHrvn2RfjdPJKxZKwo3pkG5N1yxBQXT4YzbienQn6LMtcx/dDTrJ71M68Mvrtg+a+539L31c4oz1jD7zv8jd/EMul78BCHRzZhzz/FsnPYBLfc/DYDi7HRKczMY/NBMcpfOYv6jY4jp0I/IVtvOZZa3Yg6LX7yGHmNfIqZDf9KnvMuCJ85nwN3fU7Qprdp4t7f60ydZ/elT1bZ96JPzqlze6pBzWTfpFVoMGwXAppkTaT7gCADy1ywkIqkdwZExFeWjUntRsHphLUdaRKTxUxJYRJq8YIPisnIWpueTGB1CarOIinX92mz9AzC1WQSj90lm6vLsbZLAlx3QhtiIELpHhNC9ZRQHdU6gfXOvjoO7JDBnbR6nDdi6v+sOSSU8JIh9O8RzaLdmfDxnE1ePbLtNTK/NWM/owckMauv1UDhtQEue+H41s1bl0io2rNp4t3f5iBQuH5HyZw4P//x4Gb1aRTGySwIAecXlxEZsOydFXHgIecVNd/4Tf8bxY/C+PO4HvIU35u+spv7lUUREpLHz79D5CvjKzFoAo4GngHAzex542Tm3NpAx7jIWTHlpMflrFxISm0hEi613e8V06FfxPKJFKskHjSZ7wdRtksBt/u8yQiJjCUnpTlRKdxJ6H0REUnsAEvoeTN7KOeAngQFST7yOoNBw4rvvS7N+h7Jp+se0Pe7qbUJa//1rJB80mthO3igdLfc/jdUTnyB36SzCElpVG+/2Uo6+nJSjL6/3IYlu1xdXWsz0K/sAEN/zAJIPPheA8sI8gv0ewluERMZSnLmu3vsREWlslAQWkSavY2Ikd/xfBx753yoWbsjnoC4J3HZkB1rFhbFkYwF3fLGc2WvyKCgpp7Tc0W+7CdBaRIdWPI8IDaJFzLav0zeXVLyOjwghKmxrArVtfBjrc4t3iGl1dhETfkvnxZ+3/sFZXOZYn1vCvh3iq423od31xXIWbMhnwnm9Knr+RocFsblo24RvblEZ0WFNb7JiM+uK1+P3XGAR3m2kp/sT0YiIiEgj45zbCDxqZo8Bw/D+n//DzL7D+3/+s6Y0ln9kckc6nHEHqz58hPw1C0nofRAdTr+NsGatKFi3hOVv3UHe8tmUFxfgykuJbt9vm+1D41pUPA8KjdjhdUlOesXrkKh4gsOjKl6HJbalOGv9DjEVbVpN+uQJrPvmxYplrqyYkqz1xHfft9p4G8rCpy8lqm1Pul/xIjjHirfvZPGzV9Dtr88QFBFNWcHmbcqXFWwmOCKmmtpERJoOJYFFZK9wYr8kTuyXRG5hKdd/vJS7v1rBEyd35YZPltKndTTjTulGTHgwz05Zy8Q/dn5iiOzCUvKLyyoSwauzi+neMmqHcq3jwhg7IoUrD2q7w7qa4t3e49+v4okfqh8OYtFNw6pd99C3aUxanMU75/cmNmLrfwfdW0bxzJS1OOcqEsPz1udx3tDkautqTMwsCjgZr9dvD7xZxw92zs0PaGAiIiLSYPw7eaYCU83s78BpwI3A02b2EvCCc25JAENsMEnDTyRp+ImUFuSy9JXrWfHO3XS9+AmWvnoD0e360O0v4wiOjGHtV8+yacbEnd5PaX42ZUX5FYng4ozVRKV036FcWPPWpBwzlrbHXlmveLe3auLjrJ644/Itho1bVOXyvLS5dBx9d0WcySPHMOe+EwGIatONwvSVXuLXHxIiL+0PWgwfVX3DRUSaCCWBRaTJW7yxgHU5xQxpF0t4SBARoUGU+dN65RWXERseTHRYEIvTC3hl+joSK/X83RkPTUrjn4e245fVm/l6YSbXHrzjbW5nD07mwjcXMKJzPANTYigoKWfy8hyGt49jXW5xtfFub+yBbRl7YNWJ5Jo88f1q3v99I+9f0JvmUdu2d98OcQQbPD91HWOGJPPGTK+Hx/4dG25iukDwZw6/EDgDmIY3s/gn/gQzIiIi0kQ553LxegE/b2a98f4emGpmv+ONHfyec65w++3MrLlzLmP3Rls/BesWU5y5jtguQwgKDScoNAKcd0dXWZE39EFQRDQFaxezbtIrhMYm/qn9pX3wEO1O/iebl/5C5m9fk3rCtTuUST7wbBY8eSHxvUYQ03Eg5cUF5MyfTFy34RRnr6s23u21PWYsbY8ZW+8YYzr0Z8P342l36k0ArP/udaLa9gQgslVnotv1Iu2jR2h30nVk/j6J/FXzSBz8bL33IyLS2CgJLCJNXnFpOfd+vYJF6QWEBhuDU2N54LjOANxyRAeu+3gJ435aQ59W0RzfJ5GfluXs9L6SYsKIjwhh0MMziQwN4r7jOtElKXKHcv1TYnjw+E7cPHEZyzIKiQgJYki7WIa3j6sx3oZy3zcrCQs29n/8l4plV4xIYeyBbQkLCeKFM3tw7YdLuPfrFXRJiuKFM3sQFhLUoDHsDmaWAJyF1+u3Od4XwAH+RDIiIiKyl3HOzQX+bmY3ACfgJYQfN7M3gOedc78BmFkIMNfMznfOfR64iGtWXlLMinfvpWDNIiw4lNgug+l8zgMAdDj1Fpa8ch1rPh9HdLs+JA49npx5P+30vsLikwiJjmfmNYMICouk05j7iGzdZYdyMR360+ncB1n2+s0Url9GUFgEsV2GENdteI3xNpTO5z/C8vG3MOvafXAOYjoNoMuFj1as73rJf1jywtX8fEVvwpu3odtlz/zp5LiISGNgmu9GRHaX0OCg4vk3DAmNbIJjywJMXpbNFe8tZuY1gwMdSpOyPKOQI5+evSG3sHSH8SjMrB9wtnPu+krLDDgQL/F7HPA5XvL3G3/iGBEREZEKZtYBOB+4AFiH1zt4PNAH+AA41jn3c6XyLYMiopcPe2rhjr/0N1HZ8yez+LkrGPzQzECH0mS58jKmXtzeOVfe+HpeiEijoIuLiIg0Sv4Xtk+BWf7rVmZ2PbAAb0bwmUAX59wZzrmvlAAWERGRqjjnljvnbgM6ALcAhwMrgb8ADwEfmtmOg9+KiIg0IkoCi4hIo2NmLYAvgAeBPDP7AJgHdAHGAH2dc4/6M4SLiIiI1Mo5V+ac+9w5dwrQDZiD10M4GJiiRLCIiDRmGhNYRKSB7NcxXkNB7AZmFgN8DaQD1wEr8IZ7GONP/CIiIiKy08zsLuAYoBXQAsgHHHAacFcAQwuY+B77aSgIEZFGTklgERFpbL4F+uMN+/A18AdQCjQDlAQWERGRP+s1vLGA1wMbnHPFgQ1HRETkz1MSWEREGpvRQGcgEUjG66XTGy8BvDKAcYmIiEgT4JxbEOgYREREGpqSwCIiu8D7s9P575S1LN5YQExYML1bRTP2wBSGto8D4K1fNvD3D5Yw7tSunNCnBdNW5DD6tXkAOAcFJeVEhW0dtv1/fxvAle8vZtaqXIKDrGL5fh3iefnsHru3cQHmnFsILAx0HCIiIiJ7o/Sp77P2y/9SsG4xwRExRKf2JuXYscR1HQrAhh/fYsmLf6frJeNoMfQEchZOY96jo72NnaO8uICg8KiK+gbc9T8WP38luUtmYcHBFcvje+xHj7Ev786miYg0aUoCi4g0sGcmr+GpH1dz37GdGNklgdBgY9LiLL6Yn1GRBJ7wazoJkSG882s6J/RpwbD2cSy6aRgAaZmFDH/0F+b9cyghwbZN3f86uiNnDU7e7W0SEREREVnzxTOs/uwpOo25j4Q+I7HgULLmTCLjly8qksDpkycQEp1A+uR3aDH0BOK6DWPYuEUAFG5M45frhzP0iXlY8LbpiI5n/4vkA8/a7W0SEdlbBNVeRERE6iqnsJSHJqVx9zGdOLpXIlFhwYQGB3FE9+bccmQHAFZlFTF1RQ4PHN+J75ZksSFXw8yJiIiIyJ6tND+HtA8fotPZd5M4+GiCw6MICgml+YAj6HDaLQAUbVxFzsKpdDrnAbLmfkdx9oYARy0iIlsoCSwi0oBmpuVSVFrOUT2aV1tmwq/p9G8TzTG9EunaIpL3Zm/cjRGKiIiIiNRf7pKZlJcU0XzQUdWWSZ8ygegO/Unc5xgiW3dl49T3dmOEIiJSEyWBRUQaUGZBKc2jQncYxqGyd35LZ1TfJABG9U3ind/S61z/LZ8tp+e9P1c8HvhG86CJiIiIyK5XmpdJaEzzHYZxqCx98jskDRsFQNKwUaRPfqfO9S8ffws/X96z4rHy/Qf+bMgiIlKJxgQWEWlAzSJDyMgvobTMVZkInr4yh7SsQk7okwjAif1acP+3K5mzNo8+raNrrf+uozpoTGARERER2e1CoptRsjkDV1ZaZSI4Z9F0CjemkTj0BABaDDuRle/fT97KOUS361Nr/R3OvEtjAouI7EJKAouINKDBqbGEBQfx+fwMju2duMP6Cb+m4xwc8fTsHZbXJQksIiIiIhIIsZ0HExQSRsYvn5O4z7E7rE+fPAGcY/btR+ywvC5JYBER2bWUBBYRaUBxESFce3AqN01cRkiQcVDneEKCjR+WZjN5WQ4fz93EA8d14tBuzSq2+fSPDP793SpuOaJ9jcNIiIiIiIgESkhUHKmjrmXZ6zdhQSHE9z4ICw4he94P5MyfzKbpH9Pp3Ado1u/Qim0yZn7Kqo//TftTb6lxGAkREdn1dBUWEWlgl+7fhpaxoTz2/Souf3cRMeHB9G0dzZB2sUSEBHHKgCRCg7cOyX76oCQenJTGpMVZHN69WQ01w82fLuO2z5dXvO6cGMnnl/bbVU0REREREanQ5shLCY1vyapPHmPRs5cTHBFDdPu+xHYdQlBYBEn7nkJQSGhF+aQDTiftgwfJmjOJZv0Pr7HuZa/fzPI3b6t4HdmqM/1u/XyXtUVEZG9jzrlAxyAie4nQ4KDi+TcMCY0MCw50KNKILM8o5MinZ2/ILSzVYMgiIiIScGbWMigievmwpxZGBjoWaTpceRlTL27vnCsPqr20iEj96eIiIiIiIiIiIiIi0oQpCSwiIiIiIiIiIiLShCkJLCIiIiIiIiIiItKEKQksIiIiIiIiIiIi0oQpCSwiIiIiIiIiIiLShIUEOgARkaZk/vp87vxiObPX5pGZX8rqO/atsfyctXlc++ESFm0soGuLSB46oTN9WkdvU6a4tJzD/zObzcVlzLxmMABLNhbwry9XMCMtl3Ln6N8mhjuP7kiXFpqkWkREREQaVsnmTJa8dC3Zc78jJKY57U6+gaThJ+5QrrykiOXjbyXjl88pLy0lrus+dBxzH+HNWgMw94FTyF0yCwsOBiAsoRUD7/kBAOccqyc+zvrvXqMsP4eEvofQ6dwHCImM3X0NFRFpwtQTWESkAYUEG8f1TuThEzrXWra4tJwLxs/npH4t+OOfQzh1QBIXjJ9PcWn5NuX+89MaEqO3/c0up7CUI7o34/srBvDrP/ZhQEoMF4yf36BtEREREREBWPb6TQSFhLLPv3+j61+eZNlrN5C/esEO5dZ+/Ty5S2bS7/av2eeRmQRHxbP8jVu2KdPx7H8xbNwiho1bVJEABkifPIH0Ke/S54YPGPzwLMpLCln+xs27vG0iInsLJYFFRBpQlxaRnDk4mW5JtffInbI8h7Jyx8X7tiY8JIgLh7fGAT8ty64oszKzkPdmb+TyESnbbDuwbSxnDk6mWVQoocFBXLxva5ZsLCQjv6ShmyQiIiIie7GyonwyZn5K6qh/EBwRTVzXoTTrfzjpU97doWzRxpUk9BlJWHwSQaERtBhyfJXJ4qpk/vYVLUecSXjzFIIjokk56jI2/vwxZUUFDd0kEZG9kpLAIiIBsmBDPj2TozGzimU9k6NYsGHrH7o3f7qMfx6WSkRIzZfraStyaRkTSvOo0F0Wr4iIiIjsfQrXLcWCg4lstfVOt+jU3hSs2TG523LEmeQunk5x5jrKigpIn/Y+CX0P3qbMynfvZfqVfZhz7wlkz5+8bQXObfPUlRZRuGFpwzZIRGQvpTGBRUQCJK+4nNiI4G2WxYWHkFdcBsBn8zZRXg5H9UxkcqXewdtbk13ETROXctv/ddiV4YqIiIjIXqisKI/giG3H5Q2OjKWsMG+HshEtOxLWrA0zrx0MQcFEpfSg47X/qljf7pQbiWrdDQsJZePPHzL/8fPof/uXRLTsQEKfg1nz+TgShxxHSFQ8az57CoBy9QQWEWkQ6gksIvInvDc7na53T6Pr3dMY/eq8em0bHRbE5qKybZblFpURHRZMfnEZ//pyJXce3aHGOjbllXDWq/M4Z0grRvVtUd/wRURERERqFBweTVlh7jbLygpzCY6I3qHsstdvory0mH0em8OwcYtIHHwU8x8dU7E+ttMggiNjCAoNp+X+pxHbdQiZv38LQMsDzqDF0FH88cAp/HbrwcT12A+AsOatd2HrRET2HuoJLCLyJ5zUL4mT+iXt1LbdW0bxzJS1OOcqhoSYtz6P84Yms3RTIauyijjphbkAlJSVk1NYxoAHZ/DxRX1IbRZBVkEpZ77yB0d0b8aVB7VtsDaJiIiIiGwR0aoTrqyMgvVLiUzuBEBe2h9Etum+Q9m8lXNpd9L1hMY0A6DVoReQ9sFDlORmEBrbfIfyhlUMAWFBQaSOupbUUdcCkDXnO8KatSIsQUlgEZGGoJ7AIiINyDlHYUk5JWXeH7OFJeUUlZZXWXbfDnEEGzw/dR1FpeW8OG0tAPt3jKdHyyim/30QX17ajy8v7ceDx3cmKSaULy/tR5v4cHILSzn71T8Y0i6WGw9vv9vaJyIiIiJ7l+DwKJoPOoq0Dx6irCifnEXTyfz1S5L2PXmHsjEd+5M++R1K83MoLy1h3aSXCU1oRWhsc0rzs8ma8z/KSwpxZaWkT32PnIVTSegzEoCSzZkUbliOc478NQtZ/tYdtD3uaixIaQsRkYagnsAiIg1oVVYRwx/9peJ1539No21CONOuHgTA6FfnMbR9LGMPbEtYSBAvnNmDaz9cwr1fr6BLUhQvnNmDMH8SuJaxYRX1JESGYGYVyz6bn8Gvq/NYsKGAt39Nryj3v78NICUhfHc0VURERET2Eh1H38OSF69hxlX9CIlpRsfR9xKV0p2chdOY9+hoho1bBED7025h+Ru38suNB+BKS4hK6U73vz0HgCsrZeX7D1CwdjEWFExk6850v/yFignnSjdnMP/x8yjOXENITCKtD7uQ5INGB6zNIiJNjblKs2+KiOxKocFBxfNvGBIaGRZce2ER3/KMQo58evaG3MLS5EDHIiIiImJmLYMiopcPe2phZKBjkabDlZcx9eL2zrlydX0WkV1CFxcRERERERERERGRJkxJYBEREREREREREZEmTElgERERERERERERkSZMSWARERERERERERGRJkxJYBEREREREREREZEmTElgEWmUJi/LZvDDMwMdxh5t8rJs2t4+ha53T2PSosxAh1Or/R6dRYc7p3LFu4sCHYqIiIhIwGXPn8zMawcHOow9Wvb8yUy5qC3TLutK5u+TAh3ONgrWLWHaZV2ZclEq679/I9DhiIgQEugARET2dle9v5jWcWFcf2i7Bq87OTaMmdfU/OXhgW9W8sX8DBZtLODKA9tyzcGp1ZZ1znHPVyt5Y9YGAM4a1JIbD2+HmW1TbsKv6Vz1/mIePL4TZw1OBuA/P65mwm/prMoqonlUKOcOSeavB6RUbDP5qkE8PCmN5RmFO9tcEREREdkDLX7+KsKatabdSdc3eN1hCckMfmjbziHpU99n5bv3Uro5g/heB9L5/IcJjWlW5fbZ835kxdt3UbhhOSExzUk5+m8kHzTaWzd/Mn88dBpBYZEV5TuefTct9z8NgPw1i1j2+o3krfidkNhE2p96M4mDjgIgslVnho1bxNwHTmnwNouI7AwlgUVE9nIdEiO46Yj2vDp9fa1lX5uxgc/nZ/DVX/thBme+Mo/UZuGcM6RVRZmsglKe+GEV3VtGbrOtAx47sQs9k6NZnlnIWa/8QZv4cE7o26KhmyQiIiIie6n81QtY+sr19LzyFaLb92XJK9ex7LUb6Xbpf3YoW15awoKnLqL9KTfR8qDR5C3/jbkPnkpMp4FEp/YGqk4yA7iyUhY8eT7JB42h1zVvkrNgCvMfP4+o274gslXnXd5OEZH6UhJYRALmqR9W8+uazTx7eveKZbd+ugwH3HV0R976ZQPjflzD2pwiEqNDuWz/FMYMSa6yrpTbpvDj2AF0TPQSj9v3rv1qQSYPfLuSVVlFdE2K5L5jO9GrVfROxZ2ZX8KdX6zguyVZFJaUM7xDHC+c2QOA12esZ9xPq8kqKGVIuzjuO7YTreLCcM5x++creP/3dIpKHW3jw3jqlG7MSMvl/dkbMYPnpq5lvw7xvHx2j52Ka2edNqAlAO/P3lhr2Qm/beCS/drQJj4cgEv2bc3rszZskwS+9+uVXDCsNZ/M3bTNtpdV6vXbpUUkR/ZozvSVuUoCi4iISJO1+tOn2Lz8V7pf9mzFsmVv3Ao4Op51Fxt+fIs1n4+jKGMtobGJpBx1Gckjx1RZ15QLUxhwz49EJncEduxdm/nbV6x8/wGKNq4isk1XOo25j+jUXjsVd8nmTFa8fSdZc76jvKSQuG7D6XHFCwCs/+51Vn8+jtLNWcR1HUKnMfcR1qwVzjlWvHU76VPfx5UUEZbYlm5/eYrcJTPYOO19wFj79XPE99iPHmNf3qm46mLj1PdoNuBw4roPB6DdqH/w680jKSvYTHBkzDZlS/OyKCvIpcW+p2BmxHQcQGTrrhSsWVSRBK5OwdrFFGetp/URf8HMiO95ALFdhpA+5V3anXjdLmufiMjOUhJYRALmhL4teOS7VWwuKiMmPJiycsfHczfx3BleUjgxOpSXz+5B+2bhTF2Rw+jX5jMgJZq+bWJqqXlbc9bmcc2Hi3nprB70bxPDu7PTOX/8Ar6/YgDhIfUfGn3se4uJDgvm278NIDosiBlpuQD8uDSbe79ZyfgxPenWMoq7vljBZe8s5L0L+vDdkmymrcjhhysGEhcRzOKNBcRFhDB6n2RmpOXWOhzEYeN+Y3V2UZXrRvVtwb3Hdqp3O3bGwg0F9GoVVfG6V6toFm7Ir3j9y6pcZq/ZzL3HdNwhCVyZc45pK3IYvU/VSX0RERGRpqDF0BNY9fEjFQlIV17Gphkf0/1vzwEQGptIj7EvE57UnpyFU5n/6GiiOw4gpn3feu0nb8UcFr94DT3GvkRMh/6kT3mXBU+cz4C7vycoNLzecS9+bizBEdEMuOtbgsKjyV0yA/CGTlj53r30/Pt4otp0Y8Xbd7Hwmcvo88/3yJ77HTkLpzHwnh8IjoyjYO1iQqLiSD5oNLmLZ9Q6HMRvtx1G0abVVa5rMWwUncbcW6fY89csJLbzPhWvI1p2wEJCKVi/lJgO/bYpGxafROKwUaT/9BbJI8eweekvFG1aRWzXIRVlSnI2MePq/gSFRdJ84JGknng9weFRVM2Rv3pBneIUEdndlAQWkYBpmxBO39bRfDYvg1MHJPHTsmwiQ4MYnBoLwGHdto7btW+HeA7qHM+0Fbn1TgK/NmM9owcnM6itV+9pA1ryxPermbUql307xNerrvW5xUxanMWc64eQEBlSERvA+7PTOWNgy4r4bjisHb3um05aZiEhQcbm4jIWbyxgYEoMXZOq+8Oxal9f1r9e5XeVvOIy4sK3/tcRGxFMXnE5zjnKHdw4cRn/OrojQUFWQy3w8KRVlDs4fWDLXR2yiIiISMCEt2hLdLu+ZPzyGUn7nUr2vJ8ICosktrM3Z0Oz/odVlI3vvi/xvQ4id+G0eieB13//GskHjSa20yAAWu5/GqsnPkHu0lnEd9+3XnUVZ60na84khjw2h5DohIrYwBtrt+UBZ1TE1+7kG5g+theFG9Ow4BDKCjdTsHYxMR0HEtWma7322/+Or+tVvjplhXkER8Vusyw4Mo6yws1Vlm8x9ASWvvwPlo2/FYBOo+8lvLl3B1tk6y70u/1LIlt1oWjTKhY/fxXL37qdzuc8QESrzoTGtmDN5/+h9eEXkzN/MjkLphLXY78GaYeISENTElhEAmpU3xZ8+PtGTh2QxPuzNzKq0tAA3y7K5JH/rWLZpgLKHRSUlNOjZf2SpwCrs4uY8Fs6L/68rmJZcZljfW7JDmUf/34VT/zg9UA4qV8S9x+3bQ/bNdlFJESGVCSAK1ufW0Lf1lsT1NHhwTSLCmFdbjEHdIrn/KGtuGniMlZlF3F0z+bcckR7YiN272X44Cd/ZZXfo/i10T0Z1j6uXttHhwWTW1Ra8XpzURnRYUGYGS9PW0vP5KiKJH51Xpy2lnd+S+e9C3rvVE9sERERkcakxbBRbJz2IUn7ncrGae/TYtioinWZv3/Lqo8eoWDdMnDllBcXENW2/kODFW1aTfrkCaz75sWKZa6smJKsHed8WDXxcVZPfAKApOEn0emc+7etK2MNIdEJFQngykqy1m+ToA6OiCYkuhnFmeuI73kArQ45n2Wv30TRplU0H3Q07U+7hZDImv82bGjBEdGUFWyb8C0ryCU4YseOJAVrF7Pomcvo/rfniO91IIUbljL/sXMJS0imWf/DCItvSVi812khIqkd7U+9ifmPn0vncx4gKCSU7pc/z7I3bmHNZ08R3aE/iUOOw0LCdks7RUTqS0lgEQmo43onctcXy1mTXcTn8zP46KI+ABSVlnPxWwt57MQuHNmjGaHBQVwwfj6umnoiQ4MoKCmveJ2+uZjWcd4fYK3jwhg7IoUrD2pbazxjD2zL2AOrL9cmPpysglKyC0qJ3y4RnBwbWpFgBcgvLiMzv5RWsV4cFw5vzYXDW7NxcwmXTljIf35aw3WHtqPmPrOeysnb7VWVrK7OpMsH1Klcdbq1jOSPdfkM9HtV/7Eun25+Yv7HZdlMXZ7Dt4u82wWzCkqZszaPuevyuPsYL743Z23gyR/X8N75vSvGFRYRERFpyhKHHMfyt++iKGMNGbM+p8+NHwFQXlLEwnEX0+XCx2g24EiCQkKZ/8QF4Kr+izcoLJLy4oKK18U56YQ1aw1AWPPWpBwzlrbHXllrPG2PGUvbY8ZWuz68eRtK87Iozc8mJGrbu+ZCE5Ip2rSq4nVZUT6leZmENfPmh2h92IW0PuxCSnI2svDpS1nz+X+88XGt9r94f73l4G3qrqyqZHV1otp0Iz/tj4rXhekrcKXFRCbv+Pdy/ur5RCR3IqHPSAAiW3Uhod+hZM6ZtE0v7QpmuPKt7090ai/6XP9uxevf7zmelvudWqc4RUR2NyWBRSSgEqND2bdDPH//YAmpCeEVwySUlDmKS8tJjA4hJMj4dlEm3y3Jpns1PYF7t4rmg9830r1lFN8vyWLq8hz6+cMynD04mQvfXMCIzvEMTImhoKScyctzGN4+jpjw4HrFmxwbxsFdErhx4lLuPqYT0WFBzEzbzPAOcZzQtwV/e2cRo/q28Caf+3olA9vGkNosgl9Xb6bcOfq2jiYqLIjwECPI/2M4KSaUlZmFNe73zyZva1JSVk5ZOZQ7R2m5o7CknNBgI7iKIR1O6Z/Ef6es5ZBuCRjGM5PXcP4w74/+f4/qQlHp1kT8RW8t4JheiZw5yOs98d7sdO77ZiUTzutF++YRu6w9IiIiInuS0NhE4rvvy5IX/054i9SKYRJcaQnlJcWExCZiwSFk/v4t2X98R1RK9yrriW7Xm43TPiAqpTtZc78nZ8FUYtp7Y9wmH3g2C568kPheI4jpOJDy4gJy5k8mrtvwHSZDq01YQjIJfQ5m6Ws30unsuwkKj2bzkpnEdR9Oi2EnsOiZv9Fi2CgiW3dl5bv3EdNxIBEtUtm87FecKye6XV+CwqOw0HDMvLu+QuOSKNy4ssb9DrhrUr3irE6L4Scx557jyVk4jej2fUn74CGaDzqqyuMQ3a4PhRuWkT3vR+J67E9R+goyZ39Dyv/9FYDs+T8R0aI9YYkpFGeuYeU799B84BEV2+el/UFkq064csf6SS9Tkr2BpP1Pa5B2iIg0NCWBRSTgRvVrwZXvLebmw7dOjBYTHsxdR3Xk0rcXUVxWzmHdmnFE92bV1nHnUR246v3FvPTzOo7s0ZwjezSvWNc/JYYHj+/EzROXsSyjkIiQIIa0i2V4PYdC2OLxk7pw++crOOiJXykpK2e/jvEM7xDHgZ0T+MchqfzlrQVkF5YyODWWcad4f+TnFpVxx+fLWZFZSHhIECM7J/DX/dsAcMagllzy9kJ63vsz+3aI44Uz638L4J/xj4+WMuHX9K3t+341j4zqzOkDW3qTt702j0U3DQNgzD7JrMws4rBxvwFw5qBkxviTu23fMzosOIjY8GDi/CEvHvgmjcz8Uo7+7+8VZerTi1lERESksWoxbBSLn7+SdqfeXLEsODKGjmfdxaKnL6W8pJhm/Q+jWf8jqq2jw5l3svj5q1j37Us0H3gkzQceWbEupkN/Op37IMtev5nC9csICosgtssQ4roN36l4u1z0OCveup1fbz6I8tIS4nvsR1z34ST0OpDUE//BgnF/oTQvm9gug+l6yTjAG3Jh+Vt3UJi+gqDQcBJ6j6SNn0xtOeIMFv7nEn6+vCdx3felxxUv7FRcdRGV0p2OY+5j0bOXU7o5k/heI+h8/iMV6+f9ezSx3YbS9pixRLTsQOfzH2bZG7dStGkVIVGxtBh2Ei1HnAV4E+4tenYsZflZhEQ3o/mgo2h34tbJ7dKnvMuGH8bjykqI6zqMnn8fv1MT8YmI7A7mqrnVRESkoYUGBxXPv2FIaGRY/Xrfys6ZujyHs1/9g7CQIP5zajdGdkkIdEg1GvH4L6zLLea43ok8MqpLxfLlGYUc+fTsDbmFpckBDE9EREQEADNrGRQRvXzYUwsjAx3L3i5nwVT++PfZBIWE0e3S/1QM67AnKFi/lN/vOgZXVkzHs++h5QGn11jelZcx9eL2zrlyTZohIruEksAistsoCSw7Q0lgERER2ZMoCSy7gpLAIrKr6eIiIiIiIiIiIiIi0oQpCSwiIiIiIiIiIiLShCkJLCLSxExbkcOIx38JdBgiIiIiIgGxauLjLHnp2kCHISKyRwmpvYiIyO7X9e5pFc8LSsoJDzaCggyA+4/rxEn9khpkP1e9v5jWcWFcf2i7BqmvPtIyCxn+6C+suHU4IcFWp20enpTG49+vJjzEK98yNoyDOscz9sC2JMeGATCsfRw/jB24y+L+Mx6elMbyjEKeOLlroEMRERERaTDTLtv6t015cQEWEo4FeX2uOp1zP0nDT2qQ/Sx+/irCmrWm3UnXN0h99VG4MY1frh/O8P+uwILrlkpI+/BhVn30CF0v/Q8thhwPgCsrZepf2jPw/qlEtEitdxxzHziF3CWzsOAQzIyI5I4k7nMsrQ+/mKDQcADaHjO23vXuLnMfOIUWw08i+cCzAh2KiOxllAQWkT3SopuGVTwf9u9ZPHh8Jw7snLBDudIyV+cEalNxfJ9Enji5KyVl5SzdVMhDk9I46pnZfHZJv4pEsIiIiIjsPsPGLap4Puu6YXQ670ESeh24QzlXVlrnBGpTERKdwKoPHyZx8DFYUMNMEN3x7H+RfOBZlBXls3nZryx/8zay5n5Pr2vfwmzv+m4gIlJXe9f/PiLS6E1els0V7y3mgqGteHbqWkZ0iuexE7sw7qc1vDFzPdmFZRzQKZ77ju1Is6hQAP7y1gJ+XplLYUk5vVpFce+xnejeMorXZqzn/dkbMYPnpq5lvw7xvHx2D4b9exbnDUnm3dkbWZ5RyAl9EvnnYe24+v0l/Lwyh4FtY3nmtG4kRHqX0JlpudzxxXIWpReQEh/OnUd1YL+O8QCc8uJchraL5adlOcxbn8fg1FieOrkrzaNDOenFuQD0vO9nAMaf04t9UmPrfCxCg4Po3jKKp0/txpFPz+aZyWu49cgOFcdo5jWDAXjqh9W8MG0tuUVlJMeGcc+xnRjRKZ6ycsdTP67mzVkb2JhXQqfESJ4/szsp8eFMX5nLbZ8tY+mmQjolRnDHUR0Z0s6LbfukfOXevVt6N//7xM48+G0aBSXlXDy8NVce1JZJizJ54ofVOAefz8+gfbMIvr6s/58/KURERET2UNnzJ7P4uStodcgFrP3qWeJ7jaDLhY+x5vNxrP/+Dcrys4nveQAdx9xHaEwzABaM+wu5i36mvKSQqLa96DTmXqJSurP+u9fYOO19wFj79XPE99iPHmNfZtZ1w0g+5Dw2TnmXwg3LSRx6Au1O+idLXrianEU/E9tpIN3++gwh0QkA5C6ZyfK37qBgzSLCE1PocOadxPfYD/B6qcZ2HUrO/J/IS5tHbOfBdP3LU4TGNmfu/V5v5p+v6AlAr7+PJ7bLPrUeg4Q+B5O/ej7pU96l5f6n7bC+ND+HZW/cTNbvkwgKiyT5wLNIOWZsRU/qmgSHR3nH4YqX+PXmA8ma/TXN+h9O2ocPU7hhOV0vfoLykkKWvPQPsn7/FldeTkRyR3qMfZmw+CRKNmey4u07yZrzHeUlhcR1G06PK14AYP13r7P683GUbs4irusQOo25j7BmrarsEV25d++GH99iww/jiek0iA0/vklIVBwdR99Ds76HsPK9+8hZOI3cJbNY/uZtJO1/Gp3OvrvWdoqINAQlgUWk0UnfXExWQSnTrh5EuXO8MG0dn8/P4J3ze5MYHcotny7jponLGHdqNwAO6dqMR0Z1ITTYuPurFVz+7iK++mt/Ru+TzIy03CqHg5g4L4Px5/SktNxx5NOzmbMun4dP6EyXFpGMeX0eL0xdy98PTmVtThHnvD6fx0/qwsFdEvhxWTYXv7WQ768YQGK0l4T+4PeNvDq6J23iwxjz2nyenryGGw9vz3vn92b4o78w759DK3ozr84q4rD//MbXf+1PSkJ4nY5HcJBxZI9mfLc4e4d1izcW8OLP65j4l360igsjLbOQMuet++/kNXz4+0ZeGd2TzokR/LE+n8jQIDLzSzj39XnceXRHRvVpwSd/bOLc1+fx45UDae4n1mszfUUu318xgKWbCjn2v79zdK/mHNy1GVeMSNFwECIiIrJXKc5OpzQvi0EPTMO5ctZ98wIZv3xO7+veITQ2kWXjb2HZ6zfR7ZJxADTrewhdzn8ECwllxTt3s+jZy+l/+1ckHzSa3MUzqhwOImPmRHr+fTyuvJTZdxxJ/so5dD7vYSLbdGHeo2NY+/ULpJ7wd4oy1zL/sXPoctHjJPQ5mOx5P7Jw3MUMuPt7QmMTAdg47QN6XvUqYc3bMP/RMaz54mnan3Ijva9/j1+uH87QJ+ZVJD+LNq3mt9sOo/8dXxOemFL1ATAj9cTrWD7+NloMO3GHnrrL3riZsoJcBt03hZK8TOY9ciahCckkjzizzsc4PDGF6Pb9yVn4M836H77NuvSfJlBWkMOgB2cQFBpG3sq5BIVFALD4ubEER0Qz4K5vCQqPJnfJDACy5/3IyvfupeffxxPVphsr3r6Lhc9cRp9/vleneDYv+4Wk/U5lyGO/s/6711jy4rUMfngm7U76J7mLZ2g4CBEJCE0MJyKNTpAZ1xycSnhIEJGhwbw6Yz3XH9qONvHhhIcEcc3BqUz8I4NSP9t5xqCWxIQHe+tGpvLHunxyCktr3McFw1qRFBNG67hwhrWLY2BKDH1aRxMRGsRRPZozZ10eAO/9tpFDuiZwaLdmBAUZB3ZO4P/bu/vgqK77jOPPvbt3X6TVaiWtXpAQIAThzbzZxliujSlOTDLBAUziwbgkbUpNx64zdRgHk3HaNK7HEE89maZOk0xLxsT1kBTjSWJPDBgHx67tMXGKKQgQDiAhCKC3lZBW+3b39g/RBSJkJBtQdPv9/KW9e885v7uj2Tl6dO65MyvztfNwR66ve2aXqTYaVNDyaNG0Eu0/1/ZSqiJ+HVh306AD4P9TXuBTR2//a/IYUsrOqqElrrSdVXVRQOOK+ya9z//2jL52xxhNiAZlGIamVeSrOM/SzsMx1ZQE9PmZpfJ6DC2ZHlVtNKgdhzr69T+Qh+ePVtDyaFpFvqZW5Kn+VHxI1wMAAOAWhmGqeskamZZfHl9Qp1//scYsXSt/caVMy6/qz61R+3svy7H75nJlty2XJxjqe2/xGsWP1ysT7/rQMSru+LJ8haXyF41SeOJchcbPVv7Y62RaARVf/xn1NO2TJLW+vVWR6QtUNOMOGaapyLR5yh83Ux17d+b6KvuTexSsqJXHF1TJjYvUc3z/gOP6S6p0078cGDgAPqd41p2yCkp05o3nLzruZG21vftzjVm2Tp5gSIFotSrvXK3Wt1/40P4uxRcpV6Yn1u+44bGU7u5Q4sxRGaZHoXEz5A0WKBU7rdi+X2n8yvXy5kdkei0VTqqTJLW886LKbl2u0NjpMi2/xixbp+4j7ynRenxwtZSMVvnt98kwPSq95R6lO08r3dUy5GsCgCuJlcAARpySPK8C1vn/YTV3JrVq8yGZFywq8JhSS09KZSGfNuxs0kv729QWz+TOaY9nFA4M/BUYzT+/4jVgmSoNXfy6J5XNjf1yfZtebTgfkKZtJ7cdhCSVXdA2eEHbK+lUV0pFwf7XU1MS1D98epye3tWshjNx3T4hor9fOE4VYZ9OdqU0tijQr83prpSqCi8OoUdH/DrVlRp0PWWh83sTBy2PelL2EK4GAADAPbwFJTKt83OuZFuzDj2zSjIuWJNleJTqapGvsExNWzeo7TcvKXO2LXdOprtd3rzwgGNY4WjuZ9MXkBU+/xBl0woom+zJjd32m5fV8f6rufcdO53bDkKSrMKyC/oKKpsYeAHDUFQv/Zp+96OHVVr3+dyx9Nl2OXZa/pLRuWO+ktFKdfxeknRk01q1vNO3+rbqsw996APfUrFTKqjtvz1FtG6Zku0ndfgHDygT71Jp3d2qXrpWyfaT8uZHcttkXCgdO63Q2Om5155Avrz5RUp1nJKvqOKy1+q74PP3+IOSJDvRIxUO1AIArj5CYAAjzx/cQlYZ9unpJbWaM6b/xHjL+y3adrBDm780VdURv7oStqau3y3H6Vsl/HEfG1EZ9mvZjFI9tbh2yG2v1EMrsllHOxo6dNv4S88ql84o1dIZpTqbyGjtL47oiR2N+u6yiaoM+9TYkdDk8ryLzi8P+3TiQPKiYyc6k5o/ISJJyrNMJdLng+wz3elB18pjOgAAwP83fzjl8xVVqvYvnlZ44px+57a8tUUde7Zp6prN8kerZfd2afdDU3Nz136dDZG/uFKldctU++dPDbmt8TFncpFp8xQoq9GpXz2bO2YVFMvwWEq2NSuvsm8rt1T7CfmKRkmSxn9xg8Z/ccNl+062n1BP415VfeaBfu+ZXkvVi7+q6sVfVaL1uA5+Z6UCFbUqmr5AmZ6YMvFOefMunkdbkXIl25pzr+1kXJmeDvmKKuTx982d7VSvvMG+Z2akOs8M8dMAgGuP7SAAjHgrbyzXhp3H1RzrCy7betLadrBdktSdtOXzGioKetWbzmr9zqaL2paGLDV1JD7y2HfPjGpHQ4d2fRCTnXWUSGf11tFOnexMXrZtSZ5XpiE1fsTxM7ajwy1xPbDlsFq607q/rrLfOR+09urNI51KZrLye00FLFPmuT8eVlxfpqdeO64jbb1yHEf1p3rUHk9rwcSIjrQl9OLeFmVsRz/b16rDLb361Cf6HlYyrSJfP9vXqrSd1fsnuvVyfduga46GLB2PJZXNOh/pmgEAAEa68vkrdfzFDUq29oWM6bNtav/vbZIkO9Etw+uTN1SkbKpXTS+sv6itFS5VorWpX5+DFa27Wx3v71Bs3y45WVvZdEKdB99Ssv3kZdt6C0okw1SipfEjj1+9dK1OvvK93GvD9Khkzl1q2rpBdm+3kq3NOrn9h4refPeg+rOTveo89LYOfffLCtXMVmT6Hf3O6Tz4X+ppPiAna8sTCMnweGUYpnyRckWu+1Mdee7ryvTElM2k1XXoHUlSdO5inXnzJ+pp2qdsOqmmF9YrVDNbgWi1rIIS+Yoq1Pr2C3Kyts68sVnJIXwmVrh0SOcDwJXCSmAAI96qm0fJkXTvpnqdPptSNN/SXddFtXBysb4ws1SvfxDTDf/0niJBrx5ZMEabdp/OtV1+fZlW/7RBU558V3Xjwtp47+QhjV1V6NfGeyfpie2NenBLg0zD0KyqkNYvGn/ZtkGfR1+ZV6Ul/75Pmayj5/5siioKfJr/zB7tenDWgPsC/3xfm1452C7H6dsLeF5toX65eroqwr5+56YyWT35aqMOt/TK8hi6obpA376rb9Xy/bdUKmk7WrHpgNrjaU2IBvVvyyepstCvZ1dM1t/98pjWvXRU44oDenbFZBWf2yLjkQXVenDLYU1dv1s3jw1r6fSoYpfYj/hSFk0r0da9rbpuw25VFwW07a9nDKodAACAW4z65CrJcVT/9L1KxU7LCkcVnXOXimcvVOktX1Bs/+t6b80N8uZHNGbpIzq9a1Oubdlty9Xwr6v17t9MUXhSnSY/tHFIY/uLqzTpoY1q/M8n1PCDB2WYpkI1szR+5frLtvX4g6pa9BXte3KJHDujKQ8/J1+kQnu+MV+zHt912X2BJSk8cY5CNbMV+5/XcsdqVjyuo89/Q799tE6m5VfZvPtUduvyD+3n6H88pmObvylJCpSNU8mNn1XlwtUyzP7r3NKdLTqy6VGlOn4vTyBfJXM+p9K6ZZKkCav+WY0/+ab2PHa7spm+bTHCk25WZOo8VS99RIe+d78yPZ0qmHCDJq4+H16P/9JTOvrc19W0dYPKbluu0CW2oRjIqE/+pT7Y+Lc6tevHKq1bppoVjw+6LQB8HEbuthIAuMosj5k6uG6OFfR5hrsUjCDH2hNa+P29Z84mMuXDXQsAAIBhGGVmIP/Y3GcagsNdC9zDydp656/GOo6T5Y5tAFcFXy4AAAAAAAAA4GKEwAAAAAAAAADgYoTAAAAAAAAAAOBihMAAAAAAAAAA4GKEwAAAAAAAAADgYoTAAAAAAAAAAOBihMAAAAAAAAAA4GKEwAAAAAAAAADgYoTAAAAAAAAAAOBihMAAAAAAAAAA4GKEwAAAAAAAAADgYoTAAAAAAAAAAOBihMAAAAAAAAAA4GKEwAAAAAAAAADgYoTAAAAAAAAAAOBihMAAAAAAAAAA4GKEwACuKWe4C8CI4zgOvzgAAOCPiyNjuEuAyzhMeAFcXYTAAK4Zr6lkZyIz3GVghOlM2DJNxYe7DgAAgHPiTjrpdWzmtbhyMvFOGV5vcrjrAOBehMAArhmf13xj+8GO4S4DI8y2g+122nZeGe46AAAAJMlxnG4zkPe7WP2vh7sUuEj7nu0yfXlvDXcdANzLcLjlAMA1YhjG3KBlvvbYnWPzPvWJIoUDHhkGd9KhP8dx1BbP6KX9bc53Xm8+25vO3uQ4zqHhrgsAAECSDNNc4gkUPF9z3z8GC6fcKtOfJ4MdIjBEjhzZvV2K7X1Nx376rXg2GV/oOM6bw10XAHciBAZwTRmGMTcc8DyWsp15dtbxD3c9+ONlmUbcYxrbzybtbzmOUz/c9QAAAFzIMIyFnrzCR5108kYna1vDXQ9GJsPjTRpe60073vWE4zisBAZw1RACAwAAAAAAAICLsScwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuBghMAAAAAAAAAC4GCEwAAAAAAAAALgYITAAAAAAAAAAuNj/AuZDWNPH2Gv/AAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=1, min_impurity_decrease=0.001)\\n\",\n    \"intrp.interpret(est_nonparam_dw, X_test, sample_treatment_costs=-1)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=[\\\"income\\\"], treatment_names=[\\\"Discount\\\", \\\"No-Discount\\\"], fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now, let us compare our policy with other baseline policies! Our model says which customers to give a small discount to, and for this experiment, we will set a discount level of 10% for those users. Because the model is misspecified we would not expect good results with large discounts. Here, because we know the ground truth, we can evaluate the value of this policy.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# define function to compute revenue\\n\",\n    \"def revenue_fn(data, discount_level1, discount_level2, baseline_T, policy):\\n\",\n    \"    policy_price = baseline_T * (1 - discount_level1) * policy + baseline_T * (1 - discount_level2) * (1 - policy)\\n\",\n    \"    demand = demand_fn(data, policy_price)\\n\",\n    \"    rev = demand * policy_price\\n\",\n    \"    return rev\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"policy_dic = {}\\n\",\n    \"# our policy above\\n\",\n    \"policy = intrp.treat(X)\\n\",\n    \"policy_dic[\\\"Our Policy\\\"] = np.mean(revenue_fn(train_data, 0, 0.1, 1, policy))\\n\",\n    \"\\n\",\n    \"## previous strategy\\n\",\n    \"policy_dic[\\\"Previous Strategy\\\"] = np.mean(train_data[\\\"price\\\"] * train_data[\\\"demand\\\"])\\n\",\n    \"\\n\",\n    \"## give everyone discount\\n\",\n    \"policy_dic[\\\"Give Everyone Discount\\\"] = np.mean(revenue_fn(train_data, 0.1, 0, 1, np.ones(len(X))))\\n\",\n    \"\\n\",\n    \"## don't give discount\\n\",\n    \"policy_dic[\\\"Give No One Discount\\\"] = np.mean(revenue_fn(train_data, 0, 0.1, 1, np.ones(len(X))))\\n\",\n    \"\\n\",\n    \"## follow our policy, but give -10% discount for the group doesn't recommend to give discount\\n\",\n    \"policy_dic[\\\"Our Policy + Give Negative Discount for No-Discount Group\\\"] = np.mean(revenue_fn(train_data,\\n\",\n    \"                                                                                             -0.1, 0.1, 1, policy))\\n\",\n    \"\\n\",\n    \"## give everyone -10% discount\\n\",\n    \"policy_dic[\\\"Give Everyone Negative Discount\\\"] = np.mean(revenue_fn(train_data, -0.1, 0, 1, np.ones(len(X))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Revenue</th>\\n\",\n       \"      <th>Rank</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Our Policy</th>\\n\",\n       \"      <td>14.686241</td>\\n\",\n       \"      <td>2.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Previous Strategy</th>\\n\",\n       \"      <td>14.349342</td>\\n\",\n       \"      <td>4.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give Everyone Discount</th>\\n\",\n       \"      <td>13.774469</td>\\n\",\n       \"      <td>6.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give No One Discount</th>\\n\",\n       \"      <td>14.294606</td>\\n\",\n       \"      <td>5.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Our Policy + Give Negative Discount for No-Discount Group</th>\\n\",\n       \"      <td>15.564411</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give Everyone Negative Discount</th>\\n\",\n       \"      <td>14.612670</td>\\n\",\n       \"      <td>3.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                                      Revenue  Rank\\n\",\n       \"Our Policy                                          14.686241   2.0\\n\",\n       \"Previous Strategy                                   14.349342   4.0\\n\",\n       \"Give Everyone Discount                              13.774469   6.0\\n\",\n       \"Give No One Discount                                14.294606   5.0\\n\",\n       \"Our Policy + Give Negative Discount for No-Disc...  15.564411   1.0\\n\",\n       \"Give Everyone Negative Discount                     14.612670   3.0\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# get policy summary table\\n\",\n    \"res = pd.DataFrame.from_dict(policy_dic, orient=\\\"index\\\", columns=[\\\"Revenue\\\"])\\n\",\n    \"res[\\\"Rank\\\"] = res[\\\"Revenue\\\"].rank(ascending=False)\\n\",\n    \"res\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"**We beat the baseline policies!** Our policy gets the highest revenue except for the one raising the price for the No-Discount group. That means our currently baseline price is low, but the way we segment the user does help increase the revenue!\"\n   ]\n  },\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusions <a id=\\\"conclusion\\\"></a>\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML and DoWhy to:\\n\",\n    \"\\n\",\n    \"* Estimate the treatment effect correctly even the model is misspecified\\n\",\n    \"* Test causal assumptions and investigate the robustness of the resulting estimates\\n\",\n    \"* Interpret the resulting individual-level treatment effects\\n\",\n    \"* Make the policy decision beats the previous and baseline policies\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \\n\",\n    \"\\n\",\n    \"To learn more about what DoWhy can do for you, visit the [GitHub page](https://github.com/py-why/dowhy) or [documentation](https://www.pywhy.org/dowhy/).\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"interpreter\": {\n   \"hash\": \"2e5c6628eef985e7fd2fa2aad22c988c5b8aa1d2648cf9c51c543a2a2637c546\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.6.6 64-bit\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Customer Segmentation at An Online Media Company.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Segmentation.png\\\" width=\\\"400\\\"/>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Customer Segmentation: Estimate Individualized Responses to Incentives\\n\",\n    \"\\n\",\n    \"Nowadays, business decision makers rely on estimating the causal effect of interventions to answer what-if questions about shifts in strategy, such as promoting specific product with discount, adding new features to a website or increasing investment from a sales team. However, rather than learning whether to take action for a specific intervention for all users, people are increasingly interested in understanding the different responses from different users to the two alternatives. Identifying the characteristics of users having the strongest response for the intervention could help make rules to segment the future users into different groups. This can help optimize the policy to use the least resources and get the most profit.\\n\",\n    \"\\n\",\n    \"In this case study, we will use a personalized pricing example to explain how the [EconML](https://aka.ms/econml) library could fit into this problem and provide robust and reliable causal solutions.\\n\",\n    \"\\n\",\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#background)\\n\",\n    \"2. [Data](#data)\\n\",\n    \"3. [Get Causal Effects with EconML](#estimate)\\n\",\n    \"4. [Understand Treatment Effects with EconML](#interpret)\\n\",\n    \"5. [Make Policy Decisions with EconML](#policy)\\n\",\n    \"6. [Conclusions](#conclusion)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background <a id=\\\"background\\\"></a>\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://cdn.pixabay.com/photo/2018/08/16/11/59/radio-3610287_960_720.png\\\" width=\\\"400\\\" />\\n\",\n    \"\\n\",\n    \"The global online media market is growing fast over the years. Media companies are always interested in attracting more users into the market and encouraging them to buy more songs or become members. In this example, we'll consider a scenario where one experiment a media company is running is to give small discount (10%, 20% or 0) to their current users based on their income level in order to boost the likelihood of their purchase. The goal is to understand the **heterogeneous price elasticity of demand** for people with different income level, learning which users would respond most strongly to a small discount. Furthermore, their end goal is to make sure that despite decreasing the price for some consumers, the demand is raised enough to boost the overall revenue.\\n\",\n    \"\\n\",\n    \"EconML’s `DML` based estimators can be used to take the discount variation in existing data, along with a rich set of user features, to estimate heterogeneous price sensitivities that vary with multiple customer features. Then, the `SingleTreeCateInterpreter` provides a presentation-ready summary of the key features that explain the biggest differences in responsiveness to a discount, and the `SingleTreePolicyInterpreter` recommends a policy on who should receive a discount in order to increase revenue (not only demand), which could help the company to set an optimal price for those users in the future. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"# Utilities\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.dml import LinearDML, CausalForestDML\\n\",\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter, SingleTreePolicyInterpreter\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data <a id=\\\"data\\\"></a>\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The dataset* has ~10,000 observations and includes 9 continuous and categorical variables that represent user's characteristics and online behaviour history such as age, log income, previous purchase, previous online time per week, etc. \\n\",\n    \"\\n\",\n    \"We define the following variables:\\n\",\n    \"\\n\",\n    \"Feature Name|Type|Details \\n\",\n    \":--- |:---|:--- \\n\",\n    \"**account_age** |W| user's account age\\n\",\n    \"**age** |W|user's age\\n\",\n    \"**avg_hours** |W| the average hours user was online per week in the past\\n\",\n    \"**days_visited** |W| the average number of days user visited the website per week in the past\\n\",\n    \"**friend_count** |W| number of friends user connected in the account \\n\",\n    \"**has_membership** |W| whether the user had membership\\n\",\n    \"**is_US** |W| whether the user accesses the website from the US \\n\",\n    \"**songs_purchased** |W| the average songs user purchased per week in the past\\n\",\n    \"**income** |X| user's income\\n\",\n    \"**price** |T| the price user was exposed during the discount season (baseline price * small discount)\\n\",\n    \"**demand** |Y| songs user purchased during the discount season\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the company, we use the simulated data as an example here. The data is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The treatment and outcome are generated using the following functions:\\n\",\n    \"$$\\n\",\n    \"T = \\n\",\n    \"\\\\begin{cases}\\n\",\n    \"  1 & \\\\text{with } p=0.2,  \\\\\\\\\\n\",\n    \"  0.9 & \\\\text{with }p=0.3, & \\\\text{if income}<1 \\\\\\\\\\n\",\n    \"  0.8 & \\\\text{with }p=0.5, \\\\\\\\\\n\",\n    \"  \\\\\\\\\\n\",\n    \"    1 & \\\\text{with }p=0.7, \\\\\\\\\\n\",\n    \"  0.9 & \\\\text{with }p=0.2, & \\\\text{if income}\\\\ge1 \\\\\\\\\\n\",\n    \"  0.8 & \\\\text{with }p=0.1, \\\\\\\\\\n\",\n    \"\\\\end{cases}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\gamma(X) & = -3 - 14 \\\\cdot \\\\{\\\\text{income}<1\\\\} \\\\\\\\\\n\",\n    \"\\\\beta(X,W) & = 20 + 0.5 \\\\cdot \\\\text{avg_hours} + 5 \\\\cdot \\\\{\\\\text{days_visited}>4\\\\} \\\\\\\\\\n\",\n    \"Y &= \\\\gamma(X) \\\\cdot T + \\\\beta(X,W)\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample pricing data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Pricing/pricing_sample.csv\\\"\\n\",\n    \"train_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>account_age</th>\\n\",\n       \"      <th>age</th>\\n\",\n       \"      <th>avg_hours</th>\\n\",\n       \"      <th>days_visited</th>\\n\",\n       \"      <th>friends_count</th>\\n\",\n       \"      <th>has_membership</th>\\n\",\n       \"      <th>is_US</th>\\n\",\n       \"      <th>songs_purchased</th>\\n\",\n       \"      <th>income</th>\\n\",\n       \"      <th>price</th>\\n\",\n       \"      <th>demand</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>53</td>\\n\",\n       \"      <td>1.834234</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>4.903237</td>\\n\",\n       \"      <td>0.960863</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>3.917117</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>54</td>\\n\",\n       \"      <td>7.171411</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>3.330161</td>\\n\",\n       \"      <td>0.732487</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>11.585706</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>33</td>\\n\",\n       \"      <td>5.351920</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>3.036203</td>\\n\",\n       \"      <td>1.130937</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>24.675960</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>34</td>\\n\",\n       \"      <td>6.723551</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7.911926</td>\\n\",\n       \"      <td>0.929197</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"      <td>6.361776</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>30</td>\\n\",\n       \"      <td>2.448247</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7.148967</td>\\n\",\n       \"      <td>0.533527</td>\\n\",\n       \"      <td>0.8</td>\\n\",\n       \"      <td>12.624123</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   account_age  age  avg_hours  days_visited  friends_count  has_membership  \\\\\\n\",\n       \"0            3   53   1.834234             2              8               1   \\n\",\n       \"1            5   54   7.171411             7              9               0   \\n\",\n       \"2            3   33   5.351920             6              9               0   \\n\",\n       \"3            2   34   6.723551             0              8               0   \\n\",\n       \"4            4   30   2.448247             5              8               1   \\n\",\n       \"\\n\",\n       \"   is_US  songs_purchased    income  price     demand  \\n\",\n       \"0      1         4.903237  0.960863    1.0   3.917117  \\n\",\n       \"1      1         3.330161  0.732487    1.0  11.585706  \\n\",\n       \"2      1         3.036203  1.130937    1.0  24.675960  \\n\",\n       \"3      1         7.911926  0.929197    1.0   6.361776  \\n\",\n       \"4      0         7.148967  0.533527    0.8  12.624123  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"train_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"Y = train_data[\\\"demand\\\"]  # outcome of interest\\n\",\n    \"T = train_data[\\\"price\\\"]  # intervention, or treatment\\n\",\n    \"X = train_data[[\\\"income\\\"]]  # features\\n\",\n    \"W = train_data.drop(columns=[\\\"demand\\\", \\\"price\\\", \\\"income\\\"])  # confounders\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get test data\\n\",\n    \"X_test = np.linspace(0, 5, 100).reshape(-1, 1)\\n\",\n    \"X_test_data = pd.DataFrame(X_test, columns=[\\\"income\\\"])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Get Causal Effects with EconML <a id=\\\"estimate\\\"></a>\\n\",\n    \"To learn the price elasticity on demand as a function of income, we fit the model as follows:\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"log(Y) & = \\\\theta(X) \\\\cdot log(T) + f(X,W) + \\\\epsilon \\\\\\\\\\n\",\n    \"log(T) & = g(X,W) + \\\\eta\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"where $\\\\epsilon, \\\\eta$ are uncorrelated error terms. \\n\",\n    \"\\n\",\n    \"The models we fit here aren't an exact match for the data generation function above, but if they are a good approximation, they will allow us to create a good discount policy.  Although the model is misspecified, we hope to see that our `DML` based estimators can still capture the right trend of $\\\\theta(X)$ and that the recommended policy beats other baseline policies (such as always giving a discount) on revenue.  Because of the mismatch between the data generating process and the model we're fitting, there isn't a single true $\\\\theta(X)$ (the true elasticity varies with not only X but also T and W), but given how we generate the data above, we can still calculate the range of true $\\\\theta(X)$ to compare against.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function given DGP\\n\",\n    \"def gamma_fn(X):\\n\",\n    \"    return -3 - 14 * (X[\\\"income\\\"] < 1)\\n\",\n    \"\\n\",\n    \"def beta_fn(X):\\n\",\n    \"    return 20 + 0.5 * (X[\\\"avg_hours\\\"]) + 5 * (X[\\\"days_visited\\\"] > 4)\\n\",\n    \"\\n\",\n    \"def demand_fn(data, T):\\n\",\n    \"    Y = gamma_fn(data) * T + beta_fn(data)\\n\",\n    \"    return Y\\n\",\n    \"\\n\",\n    \"def true_te(x, n, stats):\\n\",\n    \"    if x < 1:\\n\",\n    \"        subdata = train_data[train_data[\\\"income\\\"] < 1].sample(n=n, replace=True)\\n\",\n    \"    else:\\n\",\n    \"        subdata = train_data[train_data[\\\"income\\\"] >= 1].sample(n=n, replace=True)\\n\",\n    \"    te_array = subdata[\\\"price\\\"] * gamma_fn(subdata) / (subdata[\\\"demand\\\"])\\n\",\n    \"    if stats == \\\"mean\\\":\\n\",\n    \"        return np.mean(te_array)\\n\",\n    \"    elif stats == \\\"median\\\":\\n\",\n    \"        return np.median(te_array)\\n\",\n    \"    elif isinstance(stats, int):\\n\",\n    \"        return np.percentile(te_array, stats)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get the estimate and range of true treatment effect\\n\",\n    \"truth_te_estimate = np.apply_along_axis(true_te, 1, X_test, 1000, \\\"mean\\\")  # estimate\\n\",\n    \"truth_te_upper = np.apply_along_axis(true_te, 1, X_test, 1000, 95)  # upper level\\n\",\n    \"truth_te_lower = np.apply_along_axis(true_te, 1, X_test, 1000, 5)  # lower level\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Parametric heterogeneity\\n\",\n    \"First of all, we can try to learn a **linear projection of the treatment effect** assuming a polynomial form of $\\\\theta(X)$. We use the `LinearDML` estimator. Since we don't have any priors on these models, we use a generic gradient boosting tree estimators to learn the expected price and demand from the data.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get log_T and log_Y\\n\",\n    \"log_T = np.log(T)\\n\",\n    \"log_Y = np.log(Y)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Train EconML model\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=GradientBoostingRegressor(),\\n\",\n    \"    model_t=GradientBoostingRegressor(),\\n\",\n    \"    featurizer=PolynomialFeatures(degree=2, include_bias=False),\\n\",\n    \")\\n\",\n    \"est.fit(log_Y, log_T, X=X, W=W, inference=\\\"statsmodels\\\")\\n\",\n    \"# Get treatment effect and its confidence interval\\n\",\n    \"te_pred = est.effect(X_test)\\n\",\n    \"te_pred_interval = est.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<matplotlib.legend.Legend at 0x1f533b30d68>\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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rr32Wh588EE2b97M448/zr333lu/34ABA9i6dStVVVVNZtOaY7VaUeHuM2azmUAgcEjPLxQKkZaWRlFRUZPb65pg657ToR6nOW05vtaaJ554glNOOWWf+z/77DMSExP3uW/69OnMnj2b3bt3M2PGDABefvllSkpKWLRoEVarlT59+uDxeA6qngdLzoLtIakb9f3LzLZ9R1K2JjG7YUqO9sqktZfWpruI1HQYJrMEaEKITmXPHmOQ2datW3nzzTfrO7Pv2rWrfp+33nqLESNG7PO4F154galTp5KRkYHL5cJkMmEymXC5XPvsl5CQwGWXXcavf/1rfD4fYIzQfP3115kwYQKff/45paWlBINBXnnlFY477rhDeh6TJk3i7bffxu12U11dzbvvvgtASkoKffv25fXXXweMgGjJkiUtHmvKlCn8+9//rn8ue/fuPaTjNCc5OZnq6ur626eccgp/+9vf8PuN5MPatWupra1t8rEzZszgv//9L7Nnz67P6lVWVpKTk4PVamXBggVs2bLlkOp1MCST1h4sdqM5zlNhjFg8mGkilDJGWVYXx99M+o5UcJW2sD0talURQoiObNq0aZSVlWG1WnnqqadIS0sD4KabbqKoqAilFH369KnvzA7GYIDnnnuOjz76CIDf/e53TJ06FZvN1uTUEvfccw+33347w4YNw+FwkJiYyKxZs8jLy+P+++/n+OOPR2vNaaedxllnnXVIz2PMmDHMmDGDgoICcnJyGD9+fP22l19+mV/96lfcc889+P1+LrjgAgoKCpo91qmnnkpRURHjxo3DZrMxdepU/vSnPx30cZozatQozGYzBQUFzJw5k1//+tds3ryZMWPGoLUmOzu7vm/e/oYPH051dTX5+fnk5eUBRjPxGWecwciRIxk3bhxDhgw56DodLBXpTm+xMG7cOL1w4cLoFur3gN916JO3usvjr9+V1rB7WdPTc5jt0G1Y9OskhBAHadWqVQwdOjTW1RACaPrzqJRapLUet/++0qbUXqyOw5tdP94CNDCyfM01acoi50IIIURESZAmWtZckCbLMwkhhBARJUGaaJk95cAJe802sCU2vb8QQggh2oUEaaJlJtOBU4PIgAEhhBAi4iRIE63bv/+Z9EcTQgghIk6CNNE6e2pDk6c0dQohhBBRIUGaaJ3J1LCupgwYEEKINisrK6OwsJDC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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Compare the estimate and the truth\\n\",\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"plt.plot(X_test.flatten(), te_pred, label=\\\"Sales Elasticity Prediction\\\")\\n\",\n    \"plt.plot(X_test.flatten(), truth_te_estimate, \\\"--\\\", label=\\\"True Elasticity\\\")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    te_pred_interval[0],\\n\",\n    \"    te_pred_interval[1],\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"95% Confidence Interval\\\",\\n\",\n    \")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    truth_te_lower,\\n\",\n    \"    truth_te_upper,\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"True Elasticity Range\\\",\\n\",\n    \")\\n\",\n    \"plt.xlabel(\\\"Income\\\")\\n\",\n    \"plt.ylabel(\\\"Songs Sales Elasticity\\\")\\n\",\n    \"plt.title(\\\"Songs Sales Elasticity vs Income\\\")\\n\",\n    \"plt.legend(loc=\\\"lower right\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the plot above, it's clear to see that the true treatment effect is a **nonlinear** function of income, with elasticity around -1.75 when income is smaller than 1 and a small negative value when income is larger than 1. The model fits a quadratic treatment effect, which is not a great fit. But it still captures the overall trend: the elasticity is negative and people are less sensitive to the price change if they have higher income.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"      <td></td>     <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>income</th>        <td>2.427</td>      <td>0.075</td> <td>32.189</td>    <td>0.0</td>    <td>2.28</td>     <td>2.575</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>income^2</th>     <td>-0.437</td>      <td>0.026</td> <td>-16.907</td>   <td>0.0</td>   <td>-0.487</td>   <td>-0.386</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>-3.02</td>      <td>0.046</td> <td>-65.081</td>   <td>0.0</td>   <td>-3.111</td>   <td>-2.929</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                      Coefficient Results                      \\n\",\n       \"===============================================================\\n\",\n       \"         point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------\\n\",\n       \"income            2.427  0.075  32.189    0.0     2.28    2.575\\n\",\n       \"income^2         -0.437  0.026 -16.907    0.0   -0.487   -0.386\\n\",\n       \"                        CATE Intercept Results                       \\n\",\n       \"=====================================================================\\n\",\n       \"               point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"cate_intercept          -3.02  0.046 -65.081    0.0   -3.111   -2.929\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Get the final coefficient and intercept summary\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"`LinearDML` estimator can also return the summary of the coefficients and intercept for the final model, including point estimates, p-values and confidence intervals. From the table above, we notice that $income$ has positive effect and ${income}^2$ has negative effect, and both of them are statistically significant.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Nonparametric Heterogeneity\\n\",\n    \"Since we already know the true treatment effect function is nonlinear, let us fit another model using `CausalForestDML`, which assumes a fully **nonparametric estimation of the treatment effect**.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Train EconML model\\n\",\n    \"est = CausalForestDML(\\n\",\n    \"    model_y=GradientBoostingRegressor(), model_t=GradientBoostingRegressor()\\n\",\n    \")\\n\",\n    \"est.fit(log_Y, log_T, X=X, W=W, inference=\\\"blb\\\")\\n\",\n    \"# Get treatment effect and its confidence interval\\n\",\n    \"te_pred = est.effect(X_test)\\n\",\n    \"te_pred_interval = est.effect_interval(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<matplotlib.legend.Legend at 0x1f533c69208>\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAmkAAAGDCAYAAABwRoerAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABz6klEQVR4nO3dd5xU9dX48c+5d9p2ytK7BZS2q4DYBbEFu8aSYBRjYkx+ljQNiSbxUfNEH5OYHqOJEhOSqFijJFaIvQCCDTsovbNsnXbP748722cb7DK7w3m/XsPOzL3zvWcKO2fPt1xRVYwxxhhjTPfiZDoAY4wxxhjTnCVpxhhjjDHdkCVpxhhjjDHdkCVpxhhjjDHdkCVpxhhjjDHdkCVpxhhjjDHdkCVpxpiME5G5InLTHjzeSBFREQl0crvDRaRCRNw29jtKRN7vzGMbY7KPJWnG9BAicqSIvCQiZSKyTUReFJEpmY6rlogMFZEHRGRLKsa3RWR2BuOZKyKxVNJUe1neycdYJSLH1d5W1c9UNV9Vk609TlWfV9UxLbWTCSKySES+kskYjDGNdepfkcaYriEihcBjwNeB+4AQcBQQzWRcTfwVWA6MwI9rAjAwoxHB/6nqdRmOwRhjdolV0ozpGUYDqOo/VDWpqtWq+qSqvgkgIo6IXCcin4rIJhG5R0SKUttqu/YuEpHPUpWua2sbFpEcEfmLiGwXkRUico2IrGmw/XsislZEykXkfRGZ0UKMU4C5qlqpqglVfUNV/92gnftFZEOqyvaciIxr6cmKyCkiskxEdqSqhxN3IZ52E5GLU8+9XEQ+EZGvNdhWLCKPpWLZJiLPp17vvwLDgX+lqnTXNO1GFZE+InK3iKxLvb4Pp+6fVvsat9DO4yJyRZMY3xSRM9PE/m8RubzJfctF5Czx3Zb6TOwUkbdEZHw7Xo9pIrJGRL6Teux6Ebm4wfYcEfl56vNWJiIviEhOattpIvJO6vVaJCIHNnjcKhG5OvVcKkXkzyIyIPUcykXkaRHp3WD/Q1Pv/47Uc5rWVuzGZBVVtYtd7NLNL0AhsBX4C/A5oHeT7V8GPgL2AfKBB4G/praNBBS4E8gBSvArXQemtt8M/BfoDQwF3gTWpLaNAVYDgxu0tW8LMT4NvAicDwxPs/3LQAEQBn4JLGuwbS5wU+r6QcAmYCrgAhcBq1KP60g8dW2m2Vb7mgRSt08G9gUEOAaoAg5ObfspcDsQTF2OAiS1bRVwXCvtPg7cm3ptg8Axqfun1b7GLbRzLvBqg9slqfc/lOa5XAi82OD2WGBH6vU6EVgC9Eo9twOBQS28JouArzSILwHckIp7Zuo16Z3a/rvU/kNS79HhqeONBiqB41OPuwb/cxlq8DxfAQakHrsJWJp6zyPAs8CPU/sOST3nmfgFheNTt/tl+v+jXeyypy5WSTOmB1DVncCR1Cdbm0XkUREZkNplFvALVf1EVSuA7wPnS+OB8f+jfgVuOX63ZEnq/nOB/1XV7aq6Bvh1g8ck8b98x4pIUFVXqerHLYR5DvA88ENgZaoSVjdmTlXvUtVyVY0C1wMltdW+Ji4F/qiqr6pfNfwLflJ5aAfjAfhuqgpTe/lLup1U9XFV/Vh9/wWexE/GAOLAIGCEqsbVH0/W5kmPRWQQfkJ9Weq1jafabo9HgdEisn/q9peAe1U1lmbfh4BSERmRuj0LeDD1OsfxE+MD8BPLFaq6vp0xxIEbUnEvACqAMSLi4CfcV6nq2tR79FLqeOcBj6vqU6oaB36G/4fB4Q3a/Y2qblTVtfifl1fVr7rWpJ7LQan9LgAWqOoCVfVU9SlgMX7SZsxewZI0Y3qI1BfsbFUdCowHBuNXpEhd/7TB7p/ijzkd0OC+DQ2uV+FX3Gofu7rBtrrrqvoR8E38pGqTiPxTRAa3EN92VZ2jquNSx10GPJzqcnNF5GYR+VhEduJXVACK0zQ1AvhOw+QKGIZfPWt3PCk/U9VeDS4XpdtJRD4nIq+kujN34CcCtbHdil8NejLVFTqnleM1NAzYpqrb27l/nVTCci9wQSop+gL+mL90+5bjV+zOT931BWBeatuzwG/xK1+bROQO8cc3tsdWVU00uF37mSnGr3qlS44bfQ5V1cP/PA1psM/GBter09yu/VyOAM5p8jk4Ej9hNmavYEmaMT2Qqr6H351XO75oHf6XWq3h+N1VG2nbevxuzlrDmhzr76p6ZKp9BW5pR3xb8Ksog4E+wBeB04HjgCL8bkHwu+CaWg38pElylauq/9jVeFojImHggVS8A1S1F7CgNrZU9e87qroPcBrw7Qbj4FqrqK0G+ohIr3aEka6dv+BXxWYAVar6ciuP/wfwBRE5DD+BWljXsOqvVXUSfjfoaODqdsTTmi1ADX73cFONPociIvifp7W7cJzV+F32DT8Heap6864EbUxPZEmaMT2AiByQGsQ9NHV7GH7F5JXULv8AviUio0QkH/hf/O6xRPoWG7kP+L6I9BaRIUDdIHQRGSMix6YSmRr8SofXQoy3iMh4EQmISAH+TNSPVHUrfpdbFH9MUW4qvpbcCVwmIlNTVbg8ETlZRAo6Ek8HhPC7UDcDCRH5HHBCg+d1iojsl0o4yvC7XGuPuRF/HGAzqW7FfwO/T722QRE5uoUYmrWTSso84Oe0UEVrYAF+cnQD/vvupWKfknodg/hjxWrYzdcr1fZdwC9EZHCqSnpY6j25DzhZRGakjvkd/Pf9pV041N+AU0XkxNQxIuJPaBja5iONyRKWpBnTM5TjD6R/VUQq8ZOzt/G/BMH/0vwr8BywEv/L+Io07aRzA7Am9bingfnUL+0Rxp9YsAW/u7Q//ni3dHLxxxTtAD7BTxpOS227B78bbC3wLvXJZTOquhj4Kn433Xb8rsbZuxAPwDXSeJ20LWmOVw5ciZ9gbMev+j3aYJf98V+XCuBl4PeqWlup+ilwXao77rtpjv8l/LFd7+EPkv9mC3G21M49+EuZ/K2V50hqPNiD+JXKvzfYVIif9G7Hf/234nff7q7vAm8BrwPb8KuZjqq+jz+W7Df479GpwKktjKVrlaquxq++/gA/gV6NXwW07y2z16idoWSMMQCIyNeB81X1mEzHsrcTkQuBS1Pdu8aYvYz9RWLMXk5EBonIEeKv/TUGvzr3UKbj2tuJSC7wDeCOTMdijMkMS9KMMSHgj/hdqs8CjwC/z2hEezkRORG/i28jjbsvjTF7EevuNMYYY4zphqySZowxxhjTDVmSZowxxhjTDQXa3qXnKS4u1pEjR2Y6DGOMMcaYNi1ZsmSLqvZren9WJmkjR45k8eLFmQ7DGGOMMaZNIvJpuvutu9MYY4wxphuyJM0YY4wxphuyJM0YY4wxphuyJM0YY4wxphvKaJImIieJyPsi8pGIzEmzPSwi96a2vyoiIzMQpjHGGGPMHpexJE1EXOB3wOeAscAXRGRsk90uAbar6n7AbcAtezZKY4wxxpjMyGQl7RDgI1X9RFVjwD+B05vsczrwl9T1+cAMEZE9GKMxxhhjTEZkMkkbAqxucHtN6r60+6hqAigD+qZrTEQuFZHFIrJ48+bNXRCuMcYYY8yekzUTB1T1DlWdrKqT+/VrtmivMcYYY0yPkskkbS0wrMHtoan70u4jIgGgCNi6R6IzxhhjjMmgTCZprwP7i8goEQkB5wOPNtnnUeCi1PXPA8+qqu7BGI0xxhhjMiJj5+5U1YSIXA48AbjAXar6jojcACxW1UeBPwN/FZGPgG34iZwxxhhjTNbL6AnWVXUBsKDJfT9qcL0GOGdPx2XM3qImnqQmnqRXbijToRhjjGkio0maMSYzauJJNpdH2VEVB2BLRYwhvXLICbldcrxoIknAcXAdW0HHGGPay5I0Y/YiTZOzWtWxJB9vrqBPXogBhZFOTaYqogk+21pF0BVGFucRdFseCru9MsaWiihB1yEUqL/kBN1WH2eMMdnIkjRj2qCqRBMe1bEkNYkkNXEPgEjQIRJwiQRdIkEHESGe9KiJJ4km/J9JT4kEXcIBp+7nnl6POZH0KKuOU1YdpzKaBC+JaAJNJthZHSUWT9CvIAJuiK0745RVxRhYlEOv3GDHY/WS4CX86+KwpSrBhp0xVCHpKR9vrmBk3zwiwcYVO1VlXVkNr368lRUbdlKUE6J3bpDeuSF654bIj7gUF4Tplx8m0EKytrMmzs7qOH3yQuSG7FcbqrA7nzXPAxTUS10UxAHH9S8dbUu99NtEAAGng0l47Ryy3f3/pOp/bjWZ5jUT/7a4qAjxpBJPeiS81LHTTGNLqpL0PDxPSaaac0RwUj9dR0h6SsJTPFW81PWkp3gKSc8j6SmqoCiCICJ+GKk2go7fTsB1CDiCk9qeihgAxxFCroPrCkL98eteMlVEU/9fnQC4wdZfJy+ZOoDT8muuWv++tPZ+qvrHbfEz4YC4HftM1B67o5+jbs5+k5mskUh6LHrjPfKpYFihS0HI715zRXBcBxEHxw3gOk3+8zeZMJzwlOq4R1UsSXU8SSyeRL0kov7tsuo4IQf6RISK2l+MqV+gnid4wIfblFfXx/msLEnvHIfiXJc+OS7F+UFG9AoyvChIyFFCLoRdJeSA/4XgNL74AdZ/SaIkkh4eftJT+2WAgjiO/12Hfz2e8NhZHWNNWYyV2xOsLEuyZmeSjZVJNlcpm6o8oqnfu4Uh4cBilwP7+pdocYgdEZfeeSGKckJI3S/mhjH6X1oB8RAvAV687peuKmyuiPqvlSqflEF+SBiQ57J2EwwuitR1rcaTyrsbqvjDkkr+szKW9r0tCgun7BvijNEh9ukboVduEFeEJA47Y8qOao/KOKwpTzK8KEBRxKE4L0jYFT+m2pgdl5gnbKlMsLkyTiyeIBpP+D8TSfKCQnFugP75QQpzXIKui4iQSHqpL1//dXccIScYwHFd6r7Im6r7XNV/vhLJJNUxj4Tn4XkenirlsSSL10ZRhNygQ37YJT/kkBcOkB8SCoJCXsgh5EpdW0lPSapHIulf9zwPwUO0PhlyHAi4AYKui+MGUomVNEi6avfVtLG2SVLJWtPPrDh+u17S/0y09mWctt2GbfnvV0VMqYzGqYolUpck1bEkCfUToWQSkgoJD6oSSkXUozKuVMaVqrj/OY8llbjnf95iSfBSz7mlBQM09U/Cg8q4R1UCquNKVcJ/PP6r2eitT3odegX3CEfAFQg4guv/isCR+tgbfXLTJl/a8pOS+l1a3t6kzV1ZoKFpWO1pIt2xd0FuOMQLc2bsdju7ypI0kzUWvb+Zr8xfWXe7V1gYmO8wME/on+vQN0fol/pZnOP/BRr3/F/C8dRla3WSzVUeO2qU7TUe22s0dfGvVydo1P6+vR327eWyX28XEXhtXYLX1yfYEVUEGJgnlEWVqkTjWGeMCHJJSZh+uX4i5gjkhQMURALkBgPNflfWxD3e2lTDopU1hF3Yr7fLiKLaL26fqrKpSlmxNcm7W5J8tD3JqrIk5Q3ynl5hYUCeMLKXw9TBAfrnCQFH+GBrkhVbk7y6zg806FRx8r4hvjguRL9cl165IQojQRKeX1HcWBHnruVVPPJBjP55DocODnLEsBCHDglTEHHZWhFl2cY4z62O8/zqOBsq/d+qE/q5HDcyyDHDEuxbnIMCdyzeyd1v1RBNwrkHhDhzdIjKuLKtRtlerWyr8Xhzc5K/vxvlvveizBhZwzkHhBjXP8y6sjivrU/wyjr/Z1Uc+uUIJ+4T5HP7hNi3r1+Ji3seO6sSPPtpDQs+ivHqugTJNn7RBx3oFRGKwkJhSCgMCwWpn4PyHA4ZFGBoUYickEte2CXUQoUvmvCojCWojCaJxpMo/h8CSzYkeGZVnJfXJqhJth5LbTw5ASEcgIjr/wy7QtiFvJDQK5y6RByKwkKfiFCc+rznBByCrkMw4FdXaruTg46z64UHTfrZUQOeBwn10n4PJz1lZ02SNTsTrN6ZYG15kq1V9clUZRwq4kplTKmIqX89Xp8Q7QoBIqnXKeRCKPV6hVxp1KXf/Ktc6/IAV6A41yE3IOQEpe49qM1dapM5gIDjJ0NBB4INjuGpXyVT9ZNJp0FyJKncu/axARdcEdwGuX/tMRTw1P/8JNVPCmv/eGgQRuqY/vaEpyRqH+P59yupwlNqP9Oygl69M3p8ycZlxyZPnqyLFy/OdBhmD/vPwkWMXHg5AyJJVuQfwt8is1hf6fE/ZT8k4EURPNzU5dHk4fwqeTYBEjwT+m5dGwlcErjcm5zOfHcmw8JV/My7hRyJE5E4YWIENc5rfc/gPmcmO7Zv4lfV1+LhoPhVrJArLBtyPgXjTmSQt56Bz1+HJw4JFRLqUJMUrq86l2eYwpX7rOeSHb9K/dGX+rYUh+qDv4o7bArvvbuMwW/+jqqY38UiKA4e349/heUyhrPy3uI73t14CJVJl6jnx/+j5FeJ996Hz4Xf4pTo44SDAXJCAQKuIF6CzRMvI5Hbn/w1z9H744frKnXq+V21Py28lvs/K+ArgX9zVfBhIpJANA7iElWXY+O3sSFewC3FCziy6hnKEwGiBEgQJBgKcmnyB6yvFi4NPM5Z4cUUhf1unPKoR2XS5QuJ6zl0SIDjt/2DSfGl5ASE4jyXSMBBIgWUTb8ZVSXvtV8R2rAEvCTJpB/bp4m+nBq7iZFFDtdU/YJJzgd44hJwA7iuy0c6mPPKvw3A3MLbGeuuoSYBFTGPpMJHzgheHHkFY/oGOX7lLRRGNyKOgyOCp8qG3DH8u/9X2Frtcf7qG8lLbE91h/mVp0XJifxPwl++8dmcOfRxqwi7QiBVpagYdjQ7JlyCCAx64lJUAnhuhKiE2ZEMscg5lF9sPZx4rJq/h2+mOBSjdyCB64CHy+ohM/lo8Clo9Q4Oe/vHqOehWlsxTfJU3qk8GzqW3Ohmrqz4BQl1SKrgpboU/5A4lSe8Q9hX1vLb4G8AJSAQcJSAI/y79wVsLZ7MWFnJtNV/IOg6/ucCEBFiU76GO7gUXb+c4Ku/R9U/fm130o4p3yZRPIbwulcpXHYH6vmfzWTSI6kedxbP4X0dwcTKFzmr8l4S6pLAIeGBaJIvx69hjfbjC+4zXBl4CAfFEfUrwKJ8r/BWvJw+nFzzONMrHgfHQcRNVauFFyb9klAkl/0+e4D+655GnYDfHekEUCfA+qP/j9yQS9+3/0xk5dOQTP2V4gSQUB6c91f/9it/gNWvpv7npzKiSC845Rf+XS/8EtYvB7T+/S8YCCf/3N/+7E2w+f1U92+qUtl7JEz7vr990S2wc019VVE9KB4NR6d+3yy4Gso3NKiSezBkEhx9tb/9ga9CzfYGmZfCyKPgyG/6N/9xPsRr6repwuiT4LBv+G3OPSXVjRkCNwBOEA48FSaeC7EKuH82JBN+su2GIRiBCefA2NOhais8/T+QqIFE1P+ZjMHkL/ttlK2Bx79T3/0tqddg8mw/xq0fw6Kb/Sqql0h1lXpwxFUw/DDY8DY893/1r3uto74NAyfCmtfhxV83qPSmth/3I+h3AKx6AV67I/WZbPD6fe4W6DUCPngSltzdoP1UG6f+EvL7wzsPwbJ/1B+7tpfgzNshUgRvPwArHvPL0WfeCUMnpf/S6UQiskRVJze93yppJmvkb3+HA5zVRIuncvioERx6YD+iySSBp4rxvCQ1nkNNQqj2HMbnDOTbfSKEHY/46gP9rgCBfMcjTIKvDevPl4YX4sWCDHo1B3WKUDeE54RIuiHGDB7Jdwbk4ER7EXrnECpjftdVYdjBEThon6HkDs4nXNMbhh0MqoRSX/J5ySTf6NuPys8CPPCRckB4ICMKHRxRauIe0aRyz0sxnqjaxKhEjG8He1MYcuid61Kc65JUmNW7iP2jIdicz9LyfQg4Sp+wR1EoSb+A8sepfcjp15fAmgiRN6v9bqeoP+bGkwCuxkkA6oZJBvNBHFQcwCEgDt8ozeOkcXksWTKMB7YeirpBBhcGWbcziZeMM6Z/Hr8+tBdTakbBpwcSjcXYXlFDWVWUaCzGyF4OF0wMc1o8l76bI4Cg4tAboTwZ4OS8EIs+jTPJyaewT38G5PqJggMQyqU4P7UkSP9R4CRTCawQ9KBYC7hQwryxMYGXP5bqYBG9gx4OHq4m2T9SzD0j8/nPJzE+/aSARLIIEegdEfrnuZw0aACnH1Hs/16u7gcVtX1UHiD06teHAyb38o+/aADU5OCJQxI/GTqt1wgG9c7j1XUJVqwcQ3U0iioEXYi4sHJNMcsrKumbI5zHPsRqqkjEagh41eSygx26gYMHuRw/LJ8xn+UQjvTFDUb842mSA4YWc8B+eRD1YF1xqk+qvov5S/sP5Usj++GVK/pcbzSZ8Cs1OCQVvj20gLMK84htzye8ciDRJFQm/bc/moTnNwR5fk2UMZIgP1CIg0fIFfKCQm4QPvw0Rm6snMC2JCOTRUQ9IZbEv6jD316JscLbwagYnJkYTtST1B8pgiL8+7MA5eEEBW4eH8ooQk6SkJMk4AihQICvj8ynV58CRteMpHDzFIKug+MIrvjjNe+cOgjCBbByH1hVWp/kpMwcnQ+BCCQGQGxEqjs1lQh4SQr6BvyEoXgEJA7xkxSoH3tVK68Yeg1vUApTCBc23l40LNUvmOrWzSuu395reN0x/RiSEMyr3+6k4qhLZBw/AWj4+HBBoz/O6DWyfvugEohXpbalkoni/eq3jzgCkvEGiYYD/cakNgqMmZlKkOL+fsm4fzzwE7ahh9THl4z5iVgk9bmvjTenDwTC/usdCEHRUH+7G4LBpfVjDeuef25qe9B/rWpfg7rnn2o/mAN99m3eDR7I8X+G8qF4f+qTrFSiVfv6hvKhzz7+/bXd+OL4cQLk9oEB46lLXmtfo9pxdwWDYMjB1CeAtePZUtvDhf5zVc9/3hlklTSTNZ7/58846r0bKf/8vRT0GdDifglPiSc8HEdSy0J0/FhJz19WIprw6n4KUBgJUhAJttlmNOGxdns1yzbG+cMbNXy4PTWOSKB/rjA432FYocuhQ0JMGxWhX16QQIPumcpYgu2Vcarj9V9eAhREAvTOC7XY9VZL1Z/pWR1PEkt6fhdYwCEccAi5DqqwozrOtsoo729NcvdbNby+Pklpf5dLSsJM2yefgnDzv/E8z5/NWZN6TeIJfyxXQwFH6qo3uSGXgnCwQ2O/Vf1jVMUSBFOzP8OuSzDV9et5UJVIUB1NUlaT4K1Nccb0DTK8T5j8TppQkPCUymiSymiCdTtjvLY+wbtbk2ytVrZUeWytVnZE/S6uwfnCgX0DHFjsMravy6heDkFH6JPnd8V29jwSz4O45xFLeiST/uD02oHpCc8f07ijxmNDpX9ZU+7x8fYkH+/wWLPTSzvcxxG/q7ww7Cdz+SEhLwh5QaFvjsPgfIchhS4jCgP0z3cIuq7fdecIrisEZDe6VY3JpOLREMpre7/dZJU0k/U0Xg1AuN9IyC+mpQHdAZE0H/wm+7U6EBxclFyE3OY71e+ntSNWGsSR+hlGGNxbiRdV8ot9lfc3VVEQdhiQHyQUEIrzQvQrCLc47DUvdamOJdlWWYPrOvTNjxB0GvzlKdJ8QHjqtqiSg5LTwoBuQehdBAWektMvyv8MT1IR9SjKdRjRJ49IoMGkBuqfmwMUilDY4DVIeH4iK0A44OI6LcwOazFbaXi/P9avIHVJN/jJAfJFyAf6IYzcz+/mq/urva57hMavVUPNBtI3fg8DQJEqRcBAz2P0fjEqYwmq4/5MYNXaRF7JDbl17bgO5AQd+hfmNJ7h2nRGYaNYauOuGwHVPKaGz1+VMBBuFH9zSa92pqI/SaYqlmR7ZZxPttawdmecgrBLn7wAfXODFEX8rvKA64+DDAXqx7WFXIdw0G08uaTu/4GmfY/SavT8Us+t2We5SXuN2m7htWn0/yDd49oMLP3jmn522pNtt3dGatP4WptN2dZ+6Z5rS8+/o38ttfbYRq9PKyP/W3xfm/weTVXTG30uWmqvrhvUq99W93inQRt1wTZ4vNcgJq++EpshlqSZrPF20bH8JpbHfcX7tj2dvBuIACNzClm5pZIxw/xultywy5BeOc2WqGhJTi4M6dV1MQaAwYXQO5ZkW1WMAQUtL4HRWhuZ/EXT1cd2gMJ8aNBR5i/DEveIJpN+EhNwCQW612K+buoCkJ/6OUKVMXF/5qSbWuYh6PpxBxzZ48vHGLO3syTNZI1tUsg77oFID0jQaoUDLqOK8/hsaxV98kL0zQ9nOqS0ckIuQ0I5mQ6jx/DXznOBnvNZBH9gfm4oYOvMGdNN2CgBkzWKy97iDPfFTIfRYeGAy/4DCrptgmaMMSYzLEkzWWPc1ieZw12ZDsMYY4zpFJakmazhJKqJSWYHeRpjjDGdxZI0kzXcZNSSNGOMMVnDkjSTNZxkDXGxcV3GGGOygyVpJmsEvCgJS9KMMcZkCZtnbbLGryNfo39ekP/LdCDGGGNMJ7AkzWSN1cm+RHIL297RGGOM6QGsu9NkjenRhRwUtXO2GmOMyQ6WpJms8aXkgxxa8XSmwzDGGGM6hSVpJmuENYrnRjIdhjHGGNMpLEkzWSNEDA1YkmaMMSY7WJJmskIykSRC3JI0Y4wxWcOSNJMVampqiBCDoCVpxhhjsoMlaSYr1MRiHBb9DR+MvDDToRhjjDGdwpI0kxVq4gk20gcnr0+mQzHGGGM6hS1ma7JCtGI7V7kP0L8yBIzIdDjGGGPMbrNKmskKifLNfCv4AH2rPsp0KMYYY0ynsCTNZIV4TSUAbig3w5EYY4wxncOSNJMVErVJWjgnw5EYY4wxncOSNJMVElE/SQuErZJmjDEmO1iSZrJCMlYNQNCSNGOMMVnCkjSTFdYUlDCx5k500MGZDsUYY4zpFBlJ0kSkj4g8JSIfpn72bmG/pIgsS10e3dNxmp6jJqHsJI9IxM44YIwxJjtkqpI2B3hGVfcHnkndTqdaVUtTl9P2XHimpynY9jZzAn8nJ1me6VCMMcaYTpGpJO104C+p638BzshQHCZLFJV/wGWBxwhLItOhGGOMMZ0iU0naAFVdn7q+ARjQwn4REVksIq+IyBl7JjTT43geGo8CEM6xiQPGGGOyQ5edFkpEngYGptl0bcMbqqoioi00M0JV14rIPsCzIvKWqn7cwvEuBS4FGD58+G5EbnocLwEJP0mToCVpxhhjskOXJWmqelxL20Rko4gMUtX1IjII2NRCG2tTPz8RkUXAQUDaJE1V7wDuAJg8eXJLSZ/JRl4CklES6hBwg5mOxhhjjOkUmerufBS4KHX9IuCRpjuISG8RCaeuFwNHAO/usQhNz6FJSMaJSijTkRhjjDGdJlNJ2s3A8SLyIXBc6jYiMllE/pTa50BgsYgsBxYCN6uqJWmmOS/B/UWzOTl0d6YjMcYYYzpNl3V3tkZVtwIz0ty/GPhK6vpLwIQ9HJrpibwkNQklGLSuTmOMMdkjI0maMZ3KS3JE+X+YligHjs90NMYYY0ynsCTN9HxeggnRpfTxtmc6EmOMMabT2Lk7Tc/nJQh4MRKOTRwwxhiTPSxJMz2flyCoURJOONORGGOMMZ3GkjTT86lHUGMkrZJmjDEmi1iSZno+L0FMXeKB/ExHYowxxnQamzhgej4vwRe9mzh9WG8OznQsxhhjTCexSprp+bwk0aSSE3AzHYkxxhjTaSxJMz2bl0TV43+d31NavjDT0RhjjDGdxpI007N5SaJJON15iQHRVZmOxhhjjOk0lqSZns1LUBOLExAPAjmZjsYYY4zpNJakmZ7NSxCN1gAgQVsnzRhjTPawJM30bJokGo0C4AStkmaMMSZ7WJJmejYvSSyeYL32gUhRpqMxxhhjOo0laaZn8xJUBPtyWPS3bBsxM9PRGGOMMZ3GkjTTs3lJahIKQCRoH2djjDHZw77VTM/mJXC3r+Tu4C30qvgo09EYY4wxncaSNNOzeQmo2cZ0dzk5Wp3paIwxxphOY0ma6dnUIxnzZ3cGwza70xhjTPawJM30bF6CRDyVpEVyMxyMMcYY03ksSTM9m5fASyVpobAlacYYY7KHJWmmZ/OSVGmYj71BhHLyMx2NMcYY02kCmQ7AmF3mJQHlnYLDuSw2kY97Dcx0RMYYY0ynsUqa6bm8BAA1CY+AA65rH2djjDHZw77VTM/lJQEYv/U//D14E4h9nI0xxmQP+1YzPVeqklZUs44J8jEgmY3HGGOM6USWpJmeK5WkOckYUUIglqQZY4zJHpakmZ5LPQAcL0qMEFZJM8YYk00sSTM9V6qS5nox4mKVNGOMMdnFluAwPVcqSVsv/UkEYIhV0owxxmQRS9JMz5Wa3Tk39AXygsJRVkkzxhiTRay7szMkExAt9y+qmY5mz/E8qN4OiVjb+8YqIRHtvGPHqiBRA0B1QgkHBBuTZowxJptYJW1XqEL5BoinEoVkgyRFHAjl+5dwPgRz2z9WKpmAWIWf0MQqIVENbggCEb+dYOqnuH6bDdtNJurjiVf7P8WBYE7qsTl+O01j8bzUAHz1f9Zeah+bjpeEyi1QuRm8uH9fMA9yekNOL3CD/msUq4DqHVBTVr+fE4RQHoQL/NdIxI81EYNktD6RC0RSzzv1EyC6E2p2+slwbXvA92tuQ6QPyLHte52NMcaYHsCStF2hHlRsaHlbdKd/KQcQCIRTyVYY3DA4rp/oJGN+spFM+NeTaSpNiRr/UrOjlYAEaKGCF6tosJsDTqBxMtYacRskVHl+7JWb/YsmG+8br/QvO9f6+yZq6saMNeLF/efS6vPBf/3aaYS3hgoFq6QZY4zJJpakdTmtT7Q6sbev2THatZvXuOrX5v7J+oSzI7E0TAz3gJDG8Byb3WmMMSa7ZGRMmoicIyLviIgnIpNb2e8kEXlfRD4SkTl7MkbTc4SJ4blhS9KMMcZklUxNHHgbOAt4rqUdRMQFfgd8DhgLfEFExu6Z8ExPoaqEiaFuJNOhGGOMMZ0qI92dqroCQFqvfBwCfKSqn6T2/SdwOvBulwdoeoy4B695B+DkDst0KMYYY0yn6s5LcAwBVje4vSZ1nzF1ahLKV+Pf5aOBJ2c6FGOMMaZTdVklTUSeBgam2XStqj7SBce7FLgUYPjw4Z3dvOmmahL+pIlIwMajGWOMyS5dlqSp6nG72cRaoGEf1tDUfS0d7w7gDoDJkyfvRSvK7t3ilWW8GL6CNdsuBo7IdDjGGGNMp+nO3Z2vA/uLyCgRCQHnA49mOCbTzcSi1QyRrUQk2fbOxhhjTA+SqSU4zhSRNcBhwOMi8kTq/sEisgBAVRPA5cATwArgPlV9JxPxmu6rJuovPucEwxmOxBhjjOlcmZrd+RDwUJr71wEzG9xeACzYg6GZHiYe88/f6YZsCQ5jjDHZpTt3dxrTpnjMr6QFLEkzxhiTZSxJMz1aBTn8OzkFye+f6VCMMcaYTmVJmunRtoaH8fX4t6B4dKZDMcYYYzqVJWmmR6uO166T5mY4EmOMMaZzWZJmerRBm/7LG+FLyanZkOlQjDHGmE5lSZrp2eJV9JYKwqFgpiMxxhhjOpUlaaZH04Q/uzMcyclwJMYYY0znsiTN9GyJGABBW4LDGGNMlmkzSRORvnsiEGN2haQqaRK0Spoxxpjs0p5K2isicr+IzBQR6fKIjOmA1YERPKTTwLHZncYYY7JLe5K00cAdwJeAD0Xkf0XEFqUy3cLrkancErgMsL8fjDHGZJc2kzT1PaWqXwC+ClwEvCYi/xWRw7o8QmNaEY17hAOAFXmNMcZkmTZPsJ4ak3YBfiVtI3AF8ChQCtwPjOrC+Ixp1eztv2ZY7GPgyUyHYowxxnSqNpM04GXgr8AZqrqmwf2LReT2rgnLmPYJeFFUXKukGWOMyTrtGZN2nare2DBBE5FzAFT1li6LzJh2CHgx4hLCxqQZY4zJNu1J0uakue/7nR2IMbsioDESTsgqacYYY7JOi92dIvI5YCYwRER+3WBTIZDo6sCMaY+gRklIPlZJM8YYk21aG5O2DlgMnAYsaXB/OfCtrgzKmPZ6msPol5vHeKukGWOMyTItJmmquhxYLiLzVNUqZ6ZbultPZkavMF8QO8OZMcaY7NJad+d9qnou8IaIaNPtqjqxSyMzph3cZDU5bhDr7jTGGJNtWuvuvCr185Q9EYgxu+JJ50o+3no0yG8yHYoxxhjTqVrr7lyfuuoA61W1BkBEcoABeyA200OVVScoCAdwurgHMukpEeJowJbgMMYYk33a8zV6P+A1uJ1M3WdMWlWxBGU18a4/TtQjQgzcsC3BYYwxJuu0J0kLqGqs9kbqeqjrQjI9XTThsaM6hjYbydi5quJRHFEkEO7aAxljjDEZ0J4kbbOInFZ7Q0ROB7Z0XUimJ0t6EE96JJJKRbRrJwVHa2oA/CTNKmnGGGOyTHvO3XkZME9Efos/8Gc1cGGXRmV6rJpEfWK2vSpGQaQ9H7FdU5V0+VXiLCYUHYCNSTPGGJNt2vwGVdWPgUNFJD91u6LLozI9VjThNbpeGUuQF+qaRK2KMLclPs/v+va2Spoxxpis09o6aReo6t9E5NtN7gdAVX/RxbGZHiga9xrd3l4Z77IkLRqN0Y8d5Dh2WihjjDHZp7UxaXmpnwVpLvldHJfpoWoSyUa3q+NJapokbp3F3fEJr0e+waDtb1glzRhjTNZpbZ20P6auPq2qLzbcJiJHdGlUpkdKeEoi2XxK5/aqGIOKIp1+vGQsCkAwFMYqacYYY7JNe2Z3plvK3ZZ3N81Em1TRalVGE8SSnV9NS8T82Z3BcMQqacYYY7JOa2PSDgMOB/o1GZdWCLhdHZjpeZqOR6ulwI6qOP0LOnc9s2TcKmnGGGOyV2uVtBD+2LMAjcej7QQ+3/WhmZ6m4czOpipqOn/NNC9Rm6RZJc0YY0z2aW1M2n+B/4rIXFX9FEBEHCBfVXfuqQBNz1ETT9/dCZBUJZb0CLmdd0LPdaGR/G/8C/y/gr5YJc0YY0y2ac835k9FpFBE8oC3gXdF5Ooujst0QMLr4vMvtUPc0zbjqIl17ri09YFh3JE8lXBugVXSjDHGZJ32JGljU5WzM4B/A6OAL+3OQUXkHBF5R0Q8EZncyn6rROQtEVkmIot355jZbEdVHK9rVrlot5YmDTTUdHmO3eVEyxgp6wk7HlZJM8YYk23ak6QFRSSIn6Q9qqpx/LHgu+Nt4CzguXbsO11VS1W1xWRub1cRTRBNdm4C1FGxdqyF1lp36K4o2fZvFoW/g6BWSTPGGJN12pOk/RFYhb+47XMiMgJ/8sAuU9UVqvr+7rRhfNGERzzptTizck9pz4K10YRHZ67EIckYcXXBCWCVNGOMMdmmzSRNVX+tqkNUdab6PgWm74HYwK/YPSkiS0Tk0j10zB6lMurPmmxPd+Puaq1Ltb3Hb3gC9t0liShRCaVuWJJmjDEmu7TrpIoicjIwDmi4bPwNbTzmaWBgmk3Xquoj7YzvSFVdKyL9gadE5D1VTdtFmkriLgUYPnx4O5vv+SpSSVqsleUvOsv6nTUMKAwTcBonRO2ZNFArGvfIC+1+LOU1CSQZJUZtY5akGWOMyS5tJmkicjuQi189+xP+GmmvtfU4VT1ud4NT1bWpn5tE5CHgEFoYx6aqdwB3AEyePDnz0x33gFjSq1ubLJrw0C4cmhX3lKpYgs3lNDvFU0fGmlV3UrfstqoYrsbqkzSrpBljjMky7RmTdriqXghsV9X/AQ4DRndtWCAieSJSUHsdOAF/woFJqYzWJ0dK64vJ7q6q1LEqognKmyxM25EqXk1897s7y2sSxBIezwSO4Z7w+f6dlqQZY4zJMu1J0qpTP6tEZDAQBwbtzkFF5EwRWYOf8D0uIk+k7h8sIgtSuw0AXhCR5fiVu8dV9T+7c9xsU9vVWatLk7RY/bE2ldcQb3Ai9fZMGqjl6e7FqepX0QCWOuN5OXIU1tVpjDEmG7VnTNpjItILuBVYil+0+dPuHFRVHwIeSnP/OmBm6vonQMnuHCebxT1t1s3oD95v1zDDDlFtnKR5CpvKowzp5Xd7Rju4tEZN3CMc2LUzD9RW0QAGxleTHwmBpBv6aIwxxvRsbX6jq+qNqasPiMhjQERVy7o2LNOWqmjzxKi9y3AkPCWe8IgllXjSIz8cIBJsOWmqjidpOi+gKpZge1Wc/HCApHZsCGB1PEFRTseTyYZVNICron9EkhHg9x1uyxhjjOnuWvymFJGzWtmGqj7YNSGZ9mja1Ql+Ja21yQMJT/lsa1WzpCrheQwMRtI/CKiKpa+Uba2IoruwrnFHukcb2lmTIN5gobWQxqhxCm08mjHGmKzUWjnj1Fa2KWBJWoYkPaiONU/SFH/GZ0tdiZXRZNqqV0VNgni+EnTSJztVaY5Ve7ytFbG021oTT3okPG22lEdr/CpatNF9IeJUuiFsTJoxxphs1GKSpqoX78lATPtVxRIt1q+irYz3Sld9Az/Z2lkdp2+aBcziSe2SCQnV8SQF4fZ3eZZVx0kkGz/rkMbwnLBV0owxxmSlFgciicgvG1y/qsm2uV0XkmlLS8kWtLzyf8LTtNW3Wjur46QbWlbb1Zn0lBVb27d8xoYKD6+NcWqtjZ/zPH8GaHnUH/e2qTzKtsrmFbswMTzHKmnGGGOyU2tT7I5ucP2iJtsmdkEsph08r/5UUOnUtFD1qowmWx09lvA0bfJX29W56LMEVz5VxXOr463G997WJBc9XsEf34i2ul91CzNCy6oTfLylgs+2VbGhrIYtFVHKquPNumlVlR/EL+HtPsdbJc0YY0xWai1JkxaumwxRhR01sVaTrVgLlbTWqm+1dlQ3TsBU6xPCxRv8n3cuqyGWTB+BqvKHpTV4Cg9/GOOTHS0vzRGNJ5tV7sqjCTaX17QZJ0AsCU94U9heMBr7eBpjjMlGrSVpjoj0FpG+Da73EZE+gLuH4jP4yVJZdYJPt1W1OVA/3WKxbXV11qqJJxvNvKyO+9U3VWXphgRDCxw2VCoPfpA+hoWfJXh3a5JLS8PkB4XfLK5BW+j2VKCmQUJZHUuysaym3XNFo4kkRzhvUextsUqaMcaYrNRaklYELAEWA4X4C9kuSV0Kuj40owo7quKs2lbpr/Ifj9P7w/kEy1e3+rimp2lqq6uzobLq+gSsMpXYfbbTY1uNcu4BIQ4dHOAf70TZXtP4GDUJ5U/La9ivt8NZo0N8pSTM21uSPL2q5e7R2oQwmvBYV1bdocU8krEa5oV+ygE7X8QqacYYY7JRa7M7R+7BOHoUVWV7moHsu9Um/uD8pKckPMVTJZH0Gi0i2/fdv9DnowcpH3xUbSBpq0g1iSQFDd7a9nR11iqvSVCcD65TP2lg6Ub/8QcPDDChn8tX/p1g7ptRvnVITt3j7n8vxuYqZc6hObiOcOI+QRZ8EufO5VEOHxIkL5QmzniSeDLAuh3VzRbLbUs85o95k0DIKmnGGGOyUuefQ2gv4Cls3cUkLW/9qwSqN7NzxImoG2z34/LXvkCfjx5kx6iZJPIGgHoMfvl6qvpPYsc+J4NT/1Y2nDnZ3q7OWgrsrPHPJFBbkVu6IcngfIcBeX7h9fT9Qzz8YYzT9g+xb2+XzVUe962IctSwABP7+3E4IlwxKcJPn1zFB68s4qCjTvGTKU2C+L3lNfEka3dUk+hohgYk436S5gTCWCXNGGNMNtq1EyiadpNknMiWt+tuF618nP5v3s7QF75HoGpzu9oI7VzFgKW/pLrPgWye8FUAnHgVIPR7+06GL7ySwk+fwq3eAjTu7uxIV2etsup4XfUt4Slvbkpw8MD6YYgXjA+TFxRuf8Mfc3bXm1GSCl8t8c9a4FZvoddHD3PsW9fwQuQqzt32Rzas/wyAQa/9lIGv3Ux4x0f+6amS7VyDTZPg1Y9hSyb8JNkNRqySZowxJitZktZVNEnv9+9l1L9nMfSF7+PWbANg48HfZP2UOQTLVzNs0TfJ2fxmG+14DFz8c7xADuunzAHHr755oXzWHXY966b+EPHiDHjjV+zzxGwiW94mqUq8aieUr6d6+3rcmu040TKcWAVpF0NrIp706rpz39+WpCoBBw+or9QVhIQLx4dZtinJ3LeiPL0qztljQgzKd8jd9Aajnvgy/d7+E+LFWTP6QmZ6v+SWd4tRzyNWMIzcTUsZvuibDH7ph+StfxVJpqlKapKilQvI3fA6Eq9i2HNX0/vjh+o211bS3KAtZmuMMSY7tdndKSL7AmtUNSoi0/DXSLtHVXd0bWg9lxvdwYDFPydv8xtUDDqUspGfIxkqBCAZ6UPFkCOJFo5g0Gv/y+CXr2fVCX8mGemdvjFx2DDpWzjJKMmcvk22CZWDplI58BBCO1eRu2kp0d77A+At/ye89XcGNmnuw9MeBgkQKluFF8xle6AfVXFlQK7ixCvxQoVIooaBr95I2YgTWLZ9CgKU9G/8UTllvyD/+ijGI++W8bXIC3yxqA8xplPddyzbxpxL+dBpxAuGAnBSOMYvXq/h2c+SzBh7Edv3/zxFK/9Nr48fZvCrN7J5/CXs2O9MP1lTj1DFGvov+x2RHR+yc9h0qgZOIRHpQ5/3/kH54CNJ5A1ke3Ags2NXc0XxgVh3pzHGmGzUnjFpDwCTRWQ/4A7gEeDvwMyuDKzH8uIM/e93CdRsZWPpFewccULaSk+8YBirj/45OdveJRnpjRsto2DNIpKhIpLhQpKhIpx4JdX9JhIr2qf1Y4oQKxpFrGhU3V01g6fi5Q9mZ3UNoh54SUSTIH7xtPdbd1G4ZSmeDqGaPuwT/Jjq4gmsP/SHqBtGEjUMWnwrX5d+FBecTJF7Ckptd+ZWCjcu4W95r9Enuox8aijffBQbRk5H3TDbDrygUXgn7hPkwQ9iPPxBlBkjg3jBPLaP/jzb9zud3M1vEk3Fnb/uRfov+y2SjJEM92LDpO9SPvQYADZPvIwRz3yd/st/z7rD/ocKyWWRdxDfzOtjlTRjjDFZqT1JmqeqCRE5E/iNqv5GRN7o6sC6NfXI2fwmyWA+XigfL5iPF4j4CZATZOvYC4kVDG0zudJgLlUDJgMQrFhHv7fubLbPhoO/RfnwGa22szPqkRMQgm59slJZNMa/NJk0UBlXHv4gypKNX+AQbyyn5bxF79gOXs85kuHD/VgQYc3RtxJc+xpbX7uPy3UuyScfZO3hNxLttS/9l/+e/A2vEs8pZsfwaWwbdTzRPmNajM8R4cRRQf64LMqnZUlGFKXGtzlBqgZMqtsvWjiC5yLTKfMijD/2C3jBvLptiZxithz4Jfq/dQf5a58jUDWGE5x3yNNjsEqaMcaYbNSeJC0uIl/APzXUqan72j8tMRvV7GToiz9odveGSd+hfNh0KoYeneZBbTTZZwwfz/w7brQMN7YTN7oT0SSVA6e2+rjqhPLlBZUcNzLIZQdF6u+PJ5oNP3t+dZzbXq+hPKYcPmQEk8ePJrf3+fzkpSpeXZfgb33zKazdWRxedCZxbWwsf570KVN2PoXTZyR4sO2AL7L1wAuIFY5sdxVrxsggf1oe5cmVcb5amn4t5NWBkXx524V4Cn+pyWFwk09Z2T4nU7h6IUUr/01xrscdodtYFx8Hsm+7YjDGGGN6kvYkaRcDlwE/UdWVIjIK+GvXhtXNhXJZc8T/4sQrcGMV/s94BersRu4qDl6oEC9USOtnx2xs4adxyqLKM6vifLUkjOv4SVPTVS281CmbinOEn07LZUyf+kRp1rgw//0swQPvx7h4Yn2it3RjkqADA0aNZ2NgAiN657J2ezXRXh1PinpHHKYODvD0qjhfnlgfZ0OPfuhPIHAEnlwZY3aDWAAQl/WH/IBkuAhdshCAcMiW4DDGGJOd2kzSVPVdEfkeMDx1eyVwS1cH1q25Iar7df055lUVaaVSpar866MYYRd2RJU3NiaZPCj9W/rWpiSbq5WvlkYaJWgAI4tcjh4W4OEPYpw9JkRh2B+39sbGBOP7uYQDQtB1CLkOvXJDbKlo/eTpLTlhVJCX1iZ4fX2CQ4c0TmirE8qCj2McOTRAVVx5clWcCyeEcZo8/0RuP/9ndRkAOZEcG5NmjDEmK7W5BIeInAosA/6Tul0qIo92cVx7tfUVHj9/tZpT5pfz2rqW62rvbUvy0XaPL08MkxuEhZ+1vO/Tn8bJCcBhQ9IncbPGhalOwAPv+9Ws7TUen+zw6pbeyAn6H5WiSBB3F5OiqYMD9AoLT6xsHufTq+JUxOHM0SFO3CfE5ipl2cYWThYfU07bfg8AuTlWSTPGGJOd2rNO2vXAIcAOAFVdBrQx3dDsitrkbPbjFTzzaZzcgHD7sijJFlbk/9eHfuJ10j4hjhwa5IU1cWLJ5vvGkspzq+McOTRIJJA+oRnVq76atjNVlQM4aKCfpOWGUmcScKBX7q516wYcYcbIIK+sS1AWrV/EVlV5+IMY+/d2GFfscviQAPlBeGJl+rM6PPphjHOiP2LNwOMglG+VNGOMMVmpXRMHVLWsSbdbO5eJz07/eH01H368a11+LVlX4fHMp3Fc8U+7dO6BId7fmuT6F6r5zydxTt4v1Gj/nVHlv6vjnDAqSG5QmD48yJMr47y2PsGRQxsnUS+vTVAVh+NGtp5czRoX5rnVCR58P8rWaiU/CPv18vP4SLC+i7QoJ8T2qliHz7cJcOKoIA+8H+PZT+OcOToMwJINST7b6XHN1AgiQsiF6SOCPLEyTmVMG533syahPPhBjNEDxxM97JBUgmZJmjHGmOzTniTtHRH5IuCKyP7AlcBLXRtW9zbv1dWs2NC5SVrYrU/OinP8xKjvEGFcscs9b0c5dkSQnGB9MvLUqhixJJyyr5+8HTTApVdYWPhpvFmS9syncfrmCCX908+qrDWql8tRwwI89EGMSEAoHRDAdfzxaA2X93Ad6JUbYtsunL90VC+X/Xs7PPFJfZL20AcxekeEY4bXx33iqBD/+ijOos8aJ6j/+cSfKPHFsaH68WpWSTPGGJOF2pOkXQFcC0SBfwBPADd2ZVDd3SPfOIxP3n65U9sUodkgeRHh0tIwVz1dxfz3Y3xpvJ/UqCqPfRRnbF+XfXv7iZfrCEcNC/DEyjhVcSU3ldCVRT1eW5fgrDGhtDMqm7ogVU2rSmjdeLRIsHmveFFOkO2VsQ6fFxTghFEhfre0ho+2J4m48Nr6BBeODxNqkAiO7uMwotDhiZX1SVo8qdz3XpTxxS7j+wUaFNAsSTPGGJN92hyTpqpVqnqtqk5R1cmp6zV7IrjuynWk0y9NE7RaY4sDHDU0wH3vRdlW7fcyv7ExyZpyj1P2a1wxO3ZEkFjS796s9dxnCZIKM0a0bxxZ7dg08KtzALnB5rl8wBGKdnFs2rEjggQdeGJlnIc/jBFw4OR9G7clIpy4T5AVW5N8ttMfH/fsp3E2VylfGOsnbVZJM8YYk81arKSJyL+g5UKJqp7WJRGZZr48McxLaxP89Z0oV03O4bGPYhSGGncPAowtdumXKyz8LM6M1Pizpz+NM7LIYZ9e7Zkj4vt/B0c4bEiCoYV+khYJpX9sr9wQZVXxDlfTCsPCYUMCPLMqTsJTpg0P0ien+TFmjKhfAPfiCQ73roixby+HKallRupTM0vSjDHGZJ/Wujt/tseiMK0aWuhy8n5BHvsozjHDgry4NsHZY0KNugfBryxNH+4PzN8Z9aiMw7tbklxSEm51vbWm+uQ4HDfSr1YFXCHkpk/Sgo5QlBNkR3VHlt/1nTgqyHOr/YrfmaPrx5zVRqmpOA4ZFOCplXH26+2yutzjusNz6p6LYJU0Y4wx2avFJE1V/7snAzGtu2BcmKdXxvnh81V4CifvG0q73/QRQe57L8bzqxNsq1EEOHb4rp8JISfY+mSDPnlhKmIJEmmW/mjNpIEB+uUIA/IcRjdYXDcSdFGgJu53cZ4wyl+y41evVzOkwOHIoQ0+sjYmzRhjTBZrc+JAakbnT4GxQN15elTV1krbg3pHHM49MMzct6JMGugypCB9dWvfXg5DCxwWfhZnS7VS0t+lf17LXZ2CP8Yu0cJ6GjlpxqM15DowsCDCmh3V7X4upI75ixl5hJs0nxt2SSa1Lkk7dHCAwpCwM6ZcWtp48oONSTPGGJPN2jNQ6W7gD0ACmA7cA/ytK4My6Z09JsQRQwN1szzTERGmDw+wfFOSteVe3di0dFwRhvTOoX9hy+3ltDAerfE+Lr1z01f2WjMw36F3pHH7eaEAoUB9ZS3oCqfsF2RIgdNsnTdLzYwxxmSz9iRpOar6DCCq+qmqXg+c3LVhGaF+lf9akYBw/ZG5jCtuvbo1PTWTM+jAUUPTJ2lB12Fonxxygi55oQD5TUta+DM4WxqP1lTfvBDhQPsnJ6QTcIVwwCHU5KwIsyeEuWtmXqO12qBBAc0qacYYY7JQe9ZJi4qIA3woIpcDa4H8rg1r7ybAgKIIIdfhs22JNvdvalihy8R+LoPznUar9deKBF0GFUUINOg6LC4IUxlNNJqpmRNqfTxao5gFBhRGWL2tapfWTgPITY1/C7suQv3UYhFJWzUTG5NmjDEmi7UnSbsKyMU/08CNwLHARV0Z1N7MERhclFOXILkiJLXjac+tx+amTV3ywwEGFERwmhS9go7QNz/Mlor6MylEAu1P0gDCAadZGx2RG64/P2gw4BBLtH72sfoczZI0Y4wx2afNJE1VX09drRCRbwM7VHchazBtCjjC4F45jboNc0IuFdGOV9PSLY4bcIVBRZE0e/t65QQpr4kTTSVHHamk1eqdG6QymqA6NfC/vYTGi+aG3LaTtPrnaEmaMcaY7NPiICIR+ZGIHJC6HhaRhcDHwEYROW5PBbi3CLoOQ3rnNBvXFWljCYyOKIq0vhSHCPTL9ycRuCK7PMZsQFGEgNuxxCkcdGk4/C2c5lRUzdiYNGOMMVmstUraedSfo7O2e7MfMBr4C/D0rh5URG4FTgVi+Infxaq6I81+JwG/AlzgT6p6864eszO5jrB//z0zLK+tdcraS4CCnLbXS8sJuRREAuxOrTToCIOLcliz3V/TrT3ywo2fZ6gdCaJV0owxxmSz1r4JYw26NU8E/qmqSVVdQfvGsrXmKWC8qk4EPgC+33QHEXGB3wGfw1+j7QsiMnY3j9vjRIIO7TgvepvywgGC7WyoOD+cdrZnR4QDDgOLIu1On/KazGQNt2M8nI1JM8YYk81aS9KiIjJeRPrhr4/2ZINtubtzUFV9UlVrB1q9AgxNs9shwEeq+omqxoB/AqfvznF7qkgbC8q2R0FO+9sIOEJBZPePmRcKUJzf8hpsDY/XtGs16AhuG8mXWCXNGGNMFmstSbsKmA+8B9ymqisBRGQm8EYnxvBl4N9p7h8CrG5we03qvr1OexaUbU3AEfI6IdHbFb1yg/TKbb2bNbeFCQrt6fIErJJmjDEmK7V27s5XgQPS3L8AWNBWwyLyNDAwzaZrVfWR1D7X4p/JYF57A27leJcClwIMHz58d5vrVnI6uBRGU4U5wYzmMf3ywySS2uIs1aaL9tYKB51WZ4namDRjjDHZrMvKK6ra6gxQEZkNnALMaGFJj7XAsAa3h6bua+l4dwB3AEyePDmrlgiJBBsv7tpRhW3M6twTBhREgJpmiVq6MyvUCrsuEG+xTcdmdxpjjMliu9ePtotSszavAU5T1aoWdnsd2F9ERolICDgfeHRPxdidiOz6Uhy5oUCz0yllguPAoKJIs3N8Nl16o6F2d3daJc0YY0wWykiSBvwWKACeEpFlInI7gIgMFpEFAKmJBZcDTwArgPtU9Z0MxZtxrS0s67Zw2iSAwk6YANCZivND9C+on/XZdOmNhsIBp9X0S2o/vVZJM8YYk4Xa/AYXkXOA/6hquYhcBxwM3KSqS3f1oKq6Xwv3rwNmNrjdrvFve4NIK4u79isIEwo4bNpZQ02DVfpdkd1eSqMrFOUECLo5rC+rbnSWgaZE/GpaNM2ZB1wRcgO1j7UkzRhjTPZpTyXth6kE7UjgOODPwB+6NizTVE4gkDYViQT9xWfDAYehvXPpmx+q268gJ9Bti0y5IZehvXNbTT6h5S7Pwpxg/flHJVMFYWOMMabrtOfbrXZ63cnAHar6OBBqZX/TBRwn/QKv/RqsQyYCfXJDDOuTSyTodosJA61pz2mn0j1nAYoaLuvRXTNRY4wxZje0J0lbKyJ/xD9N1AIRCbfzcaaTRZqsl1YYCaStRIUDDsPSnAe0JwoFmidg+ZEmZ0+wJM0YY0wWas+3+Ln4g/dPTJ1fsw9wdVcGZdJrOHnAEejbjtX8e7p0lbReOVbINcYYk/3aM6o8AiwCEJE+QBRY2IUxmRbkBOrfrj55YQKdcVLPbi7gCAFHSKTO1J4TdJtUD7P/NTDGGLN3ak8lbSmwGf9E6B+mrq8SkaUiMqkrgzONuY7flRl0HXrldO/xZp0p1KCaVtT0FFPW1WmMMSZLtSdJewqYqarFqtoX+BzwOPAN4PddGZxpLhJ0KS4I7VW5Se3YuqDrUNB0SRGb2WmMMSZLtecb7lBVfaL2hqo+mbrvFSD7B0V1M71yg+S3cBqlbFWbpKWvHu5F2aoxxpi9Snu+7deLyPeAf6ZunwdsFBEXaL7KqOlSoZbOoZTFQgEHR1o4B+neVFI0xhizV2nPN/4X8U9u/nDqMjx1n4s/89OYLhVyHXrlhuoXr23EkjRjjDHZqc1KmqpuAa5oYfNHnRuOMc2JQO+Wlt2wSpoxxpgs1Z5zd44GvguMbLi/qh7bdWEZ01j6KhpYJc0YY0y2as+YtPuB24E/UX+KKGO6B6ukGWOMyVLtSdISqmonVDfdlCVpxhhjslN7Jg78S0S+ISKDRKRP7aXLIzOmPaySZowxJku1p5J2Uepnw/N1KrBP54djTEdZkmaMMSY7tWd256g9EYgxu8QqacYYY7JUe2Z3BoGvA0en7loE/FFV410YlzHGGGPMXq093Z1/AILUn6fzS6n7vtJVQRnTblZJM8YYk6Xak6RNUdWSBrefFZHlXRWQMR1jSZoxxpjs1J7ZnUkR2bf2hojsg62XZroLq6QZY4zJUu2ppF0NLBSRT/DLFiOAi7s0KmPazZI0Y4wx2ak9szufEZH9gTGpu95X1WjXhmVMO1klzRhjTJZq+YyIIlNEZCBAKikrBW4EbrXFbE33YUmaMcaY7NTamLQ/AjEAETkauBm4BygD7uj60IxpB6ukGWOMyVKtdXe6qrotdf084A5VfQB4QESWdXlkxrSLJWnGGGOyU2uVNFdEapO4GcCzDba1Z8KBMV3PKmnGGGOyVGvJ1j+A/4rIFqAaeB5ARPbD7/I0phuwJM0YY0x2ajFJU9WfiMgzwCDgSVXV1CYHuGJPBGdMm6ySZowxJku12m2pqq+kue+DrgvHmI6yJM0YY0x2as8ZB4zpvqySZowxJktZkmZ6OEvSjDHGZCdL0kzPZpU0Y4wxWcqSNNPDWZJmjDEmO1mSZno2q6QZY4zJUhlZlFZEbgVOxT/t1MfAxaq6I81+q4ByIAkkVHXyHgzTGGOMMSZjMlVJewoYr6oTgQ+A77ey73RVLbUEzaRllTRjjDFZKiNJmqo+qaqJ1M1XgKGZiMNkA0vSjDHGZKfuMCbty8C/W9imwJMiskRELt2DMZmeQrrDR9gYY4zpfF02Jk1EngYGptl0rao+ktrnWiABzGuhmSNVda2I9AeeEpH3VPW5Fo53KXApwPDhw3c7ftNDWHenMcaYLNVlSZqqHtfadhGZDZwCzGhwXtCmbaxN/dwkIg8BhwBpkzRVvQO4A2Dy5Mlp2zPZyJI0Y4wx2SkjfUUichJwDXCaqla1sE+eiBTUXgdOAN7ec1GaHsEqacYYY7JUpgb0/BYowO/CXCYitwOIyGARWZDaZwDwgogsB14DHlfV/2QmXNN9WZJmjDEmO2VknTRV3a+F+9cBM1PXPwFK9mRcpgeySpoxxpgsZVPjTA9nSZoxxpjsZEma6dmskmaMMSZLWZJmejhL0owxxmQnS9JMz2aVNGOMMVnKkjTTw1mSZowxJjtZkmZ6NqukGWOMyVKWpJkezpI0Y4wx2cmSNNOzWSXNGGNMlrIkzfRslqQZY4zJUpakmR7MEjRjjDHZy5I003NZFc0YY0wWsyTN9GCWpBljjMlelqSZnssqacYYY7KYJWmmB7MkzRhjTPayJM30XFZJM8YYk8UsSTM9mCVpxhhjspclaabnskqaMcaYLGZJmunBLEkzxhiTvSxJMz2XVdKMMcZkMUvSTA9mSZoxxpjsZUma6bmskmaMMSaLWZJmejBL0owxxmQvS9JMz2WVNGOMMVnMkjRjjDHGmG4okOkAjNllVkkzxrRDPB5nzZo11NTUZDoUs5eLRCIMHTqUYDDYrv0tSTM9mCVpxpi2rVmzhoKCAkaOHInYH3cmQ1SVrVu3smbNGkaNGtWux1h3p+m57JetMaYdampq6Nu3ryVoJqNEhL59+3aoomtJmunB7BeuMaZ9LEEz3UFHP4eWpJmey37pGmN6iJ/85CeMGzeOiRMnUlpayquvvtrq/rNnz2b+/Pm7dcxFixZRVFREaWlp3eXpp58GID8/f5fa/OUvf0lVVVXd7ZkzZ7Jjx44W97/99tu55557AJg7dy7r1q3r0PGmTZvGmDFjKCkp4YgjjuD999/fpbhrj3/55Zc3iyudVatW8fe//73u9uLFi7nyyit3+di7ysakmR7MkjRjTPf38ssv89hjj7F06VLC4TBbtmwhFovtkWMfddRRPPbYY53W3i9/+UsuuOACcnNzAViwYEGr+1922WV11+fOncv48eMZPHhwh445b948Jk+ezB133MHVV1/No48+2mh7MpnEdd0OtdkwrnRqk7QvfvGLAEyePJnJkyd36BidwSpppueySpoxpgdYv349xcXFhMNhAIqLi+sSlRtuuIEpU6Ywfvx4Lr30UlS12eOXLFnCMcccw6RJkzjxxBNZv349AL/+9a8ZO3YsEydO5Pzzz9+l2CoqKpgxYwYHH3wwEyZM4JFHHgGgsrKSk08+mZKSEsaPH8+9997Lr3/9a9atW8f06dOZPn06ACNHjmTLli0A3HPPPUycOJGSkhK+9KUvAXD99dfzs5/9jPnz57N48WJmzZpFaWkpjz/+OGeccUZdHE899RRnnnlmq7EeffTRfPTRR4BfCfzOd75DSUkJL7/8Mn/729845JBDKC0t5Wtf+xrJZBKAu+++m9GjR3PIIYfw4osv1rVVGxfARx99xHHHHUdJSQkHH3wwH3/8MXPmzOH555+ntLSU2267jUWLFnHKKacAsG3bNs444wwmTpzIoYceyptvvlnX5pe//GWmTZvGPvvsw69//etdek8askqa6cEsSTPGdMz//Osd3l23s1PbHDu4kB+fOq7F7SeccAI33HADo0eP5rjjjuO8887jmGOOAeDyyy/nRz/6EQBf+tKXeOyxxzj11FPrHhuPx7niiit45JFH6NevH/feey/XXnstd911FzfffDMrV64kHA632OVYm2jUeuCBB9h3333rbkciER566CEKCwvZsmULhx56KKeddhr/+c9/GDx4MI8//jgAZWVlFBUV8Ytf/IKFCxdSXFzc6DjvvPMON910Ey+99BLFxcVs27at0fbPf/7z/Pa3v+VnP/sZkydPRlX5zne+w+bN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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Compare the estimate and the truth\\n\",\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"plt.plot(X_test.flatten(), te_pred, label=\\\"Sales Elasticity Prediction\\\")\\n\",\n    \"plt.plot(X_test.flatten(), truth_te_estimate, \\\"--\\\", label=\\\"True Elasticity\\\")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    te_pred_interval[0],\\n\",\n    \"    te_pred_interval[1],\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"95% Confidence Interval\\\",\\n\",\n    \")\\n\",\n    \"plt.fill_between(\\n\",\n    \"    X_test.flatten(),\\n\",\n    \"    truth_te_lower,\\n\",\n    \"    truth_te_upper,\\n\",\n    \"    alpha=0.2,\\n\",\n    \"    label=\\\"True Elasticity Range\\\",\\n\",\n    \")\\n\",\n    \"plt.xlabel(\\\"Income\\\")\\n\",\n    \"plt.ylabel(\\\"Songs Sales Elasticity\\\")\\n\",\n    \"plt.title(\\\"Songs Sales Elasticity vs Income\\\")\\n\",\n    \"plt.legend(loc=\\\"lower right\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We notice that this model fits much better than the `LinearDML`, the 95% confidence interval correctly covers the true treatment effect estimate and captures the variation when income is around 1. Overall, the model shows that people with low income are much more sensitive to the price changes than higher income people.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Understand Treatment Effects with EconML <a id=\\\"interpret\\\"></a>\\n\",\n    \"EconML includes interpretability tools to better understand treatment effects. Treatment effects can be complex, but oftentimes we are interested in simple rules that can differentiate between users who respond positively, users who remain neutral and users who respond negatively to the proposed changes.\\n\",\n    \"\\n\",\n    \"The EconML `SingleTreeCateInterpreter` provides interperetability by training a single decision tree on the treatment effects outputted by any of the EconML estimators. In the figure below we can see in dark red users respond strongly to the discount and the in white users respond lightly to the discount.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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3BleffVVvvj8c97/4APCsmYlT968fDtgAA899BDTpk3D19eXxx57jOzZszuXLl26kJCQwO+//37V1+/2wgtkCghwLhe3cLgZH3/8MYXuuYfKVaoQGBRE/fvvZ+vWrQC8/PLLnD9/ntCwMCpXqcIDDRumyT5FRDI6o0smROROY4yplDskaNbgx1oHuTqLXF6HIaOjImJii1tr97s6i4iIiMidICwsbMmI4cOrNm7c2NVR5DKGDRtG9+7dJ5w6fbq9q7OIiFwPzQQWERERERERERERycBUBBYRERERERERERHJwFQEFhEREREREREREcnAVAQWERERERERERERycBUBBYRERERERERERHJwDxcHUBEJCPZc+IUwxatZOexE5yLiWXGS10vO/afg0d4Z/ofKdbFxCfwVuO6VCtcAGsto5et5s9N24mJj6dgWBaerVOVfFlCAOg/ayELtu7Ew/3C93kTnnkUdzd9vyciIiIiaa9///58/MknREdH07pVKwYNGoS3t3eqcXFxcXR8+GFWrVrF3r17mTd3LrVr13Zu//TTTxkxciR79+4lNDSU5559lu7duzu316lbl3/++YfY2FgKFCjAu3370rx589txiCIiGZaKwCIiacjD3Y0ahQvQpHRx3p8x+4pjS+bKzuTnOjkfrz9wmPd+/pN78+cGYPH23fy5aTuftGlCWEAmRi1bzRd/LOCrjg85n9Pq3lI8WrXCLTkWEREREZF//fHHH3z08cfMnTOHnDlz0qJlS/r06cNHH310yfHVq1Xj5Zdeok3btqm2WWsZOWIEpUuXZufOnTRo2JA8efLQvn17AL768ktKlCiBh4cHK1asoP7997Nt61Zy5MhxS49RRCQj03QxEZE0lDskmAYli5I3ebbu9Zi7aTvVCuXHx9MTgKPnIiiRMxvZgwJxd3OjTrFC7Dt1Jo0Ti4iIiIhc3YiRI+napQvh4eGEhITQ6+23GT5ixCXHenl58fLLL1O9enXc3d1TbX/99dcpX748Hh4eFC1alObNmrFkyRLn9tKlS+Ph4ZizZowhPj6e/fv335oDExG5S6gILCKSDsTEx7Nkxx7qlijsXFezSEEOnz3HwdNnSUhMYs7m7dybL1eK581cv5n2g0fx0rhpLNm++3bHFhEREZG7xMaNGylTpozzcZkyZTh69CgnT568qde11rJo8WLCw8NT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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(est, X_test)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X.columns, fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Make Policy Decision with EconML <a id=\\\"policy\\\"></a>\\n\",\n    \"We want to make policy decisions to maximum the **revenue** instead of the demand. In this scenario,\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"Rev & = Y \\\\cdot T \\\\\\\\\\n\",\n    \"    & = \\\\exp^{log(Y)} \\\\cdot T\\\\\\\\\\n\",\n    \"    & = \\\\exp^{(\\\\theta(X) \\\\cdot log(T) + f(X,W) + \\\\epsilon)} \\\\cdot T \\\\\\\\\\n\",\n    \"    & = \\\\exp^{(f(X,W) + \\\\epsilon)} \\\\cdot T^{(\\\\theta(X)+1)}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"With the decrease of price, revenue will increase only if $\\\\theta(X)+1<0$. Thus, we set `sample_treatment_cast=-1` here to learn **what kinds of customers we should give a small discount to maximum the revenue**.\\n\",\n    \"\\n\",\n    \"The EconML library includes policy interpretability tools such as `SingleTreePolicyInterpreter` that take in a treatment cost and the treatment effects to learn simple rules about which customers to target profitably. In the figure below we can see the model recommends to give discount for people with income less than $0.985$ and give original price for the others.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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8xHOue/r2K91eGOs3oh3SfvNwPE1hgcBL/w/AhizWY/AW/Ce94nmXQ7+DV6v1W3inBuDN8btW3iXWH8INNnR58gXh3eMc/Au2V+HF2CDF6B1N+/y8g+34ZzcmqeA08wsx8yermP/ivz9+8Xf5uBaa/Bs6Tg+iXeDrrV4X2Js3kt2izVszfa+jjdbdi5eILrY37+W9TR9Cy+8zsa7+eRQf/ltOffq2m4B3g3JTsDreb8AOLSOdul4Nxe7FS9UTccLKoP8n3/i9erNxhvL9h/buN/f4IV07+F9MdSBbeuZvNW6tvYe4Jz7DbgIb2zePOBHavem3pYatvW529L77j14N8fLA8YB72+27APA7f76b9qBGj/Au7Hk2/7rYibee8K2+A6vJ+8qM1sLYGbnmtm2jvu8wVnAvnj7/iBwmj/+cV3rOw/vC5v/4fUoL8Z7L9rgKSAXmOevr2ZP8MOBGWZWiPd/wvt4Xy6IiIjIdthw92YRERFpQPwecM8557Y74DCzu4GOzrmhO72wLW/3Fbybft2+Hcvs8H6K7OnM7DVgxfa8JkQCwczm4QXcHzjnLtha+93Jry0V7wauFwe6HhERkT2VxgQWERFpAMwbl/NQvF6yKXg9Bz/Y4kJ7EPNunHcqG+9sX1+7Br2fIiKNkXNum69i2N325NpERET2JBoOQkREpGEwvMuLc/CGSZgD3BnQiraRmd2Ld6nyI865JVtrTgPdTxERERERkT2VhoMQERERERERERERacTUE1hERERERERERESkEVMILCIiIiIiIiIiItKIKQQWERERERERERERacQUAouIiIiIiIiIiIg0YgqBRURERERERERERBoxhcAiIiIiIiIiIiIijZhCYBEREREREREREZFGTCGwiIiIiIiIiIiISCOmEFhERERERERERESkEVMILCIiIiIiIiIiItKIKQQWERERERERERERacQUAouIiIiIiIiIiIg0YgqBRURERERERERERBoxhcAiIiIiIiIiIiIijZhCYBEREREREREREZFGTCGwiIiIiIiIiIiISCOmEFhERERERERERESkEVMILCIiIiIiIiIiItKIKQQWERERERERERERacQUAouIiIiIiIiIiIg0YgqBRURERERERERERBoxhcAiIiIiIiIiIiIijZhCYBEREREREREREZFGTCGwiIiIiIiIiIiI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P+eXHd5WWHwyIdHxTLlxH4LCIml/3oNEtuhYq11M2z60v+ARloy6nZLVSwgKiyC24wDiOg/eYr07S9aEsSx69Z/Vjydd2YHk/U+n4yVPEhQSRtdrXmHR6zex7L0HiGrRka7XvEJQSBgAKYecR2nWcv648wjv8cFnk3LIeTu1PhERERHZ+5hzLtA1iIiIiMgewsyOiunQ/91et34cH+haasqbO4GFL11L/0enBLqUPd66yeNY/OYt35QXZB8Z6FpEREREZM8QFOgCRERERERERERERGTXUQgsIiIiIiIiIiIi0ogpBBYRERGRPV581/01FISIiIiIyA5SCCwiIiIiIiIiIiLSiCkEFhEREREREREREWnEQgJdgIiIiIjIX5E18QMyv3qB4lULCY6IITqtB6nHDyOu00AA1vz8Dote/SedrhhB04EnkT9/EnOeHOot7BxVZcUEhUdVr6/vvT+w8OXrKFg0FQsOrp4e33V/ug57fXfumoiIiIjITqEQWEREREQarJVfPk/G58/S/rwHSeg5BAsOJXfm92RP+7I6BM6aMIaQ6ASyJoyl6cCTiOs8iEEjFgBQsjadabcMZuDwOVjwpn8atzv3/0g5+Jzdvk8iIiIiIjubhoMQERERkQapoiif9I8epf2595HU/1iCw6MICgmlSd+jaHvGHQCUrl1B/vyJtD//YXJn/UhZ3poAVy0iIiIisvspBBYRERGRBqlg0RSqyktpss8x9bbJ+nUM0W37kLTvcUS26MTaie/vxgpFRERERPYMCoFFREREpEGqKMwhNKZJrWEcasqaMJbkQScDkDzoZLImjN3m9S8dfQe/XdOt+mf5Bw//1ZJFRERERAJCYwKLiIiISIMUEp1I+fpsXGVFnUFw/oLfKVmbTtLAkwBoOugUln/wEIXLZxLduudW19/27Hs1JrCIiIiINAoKgUVERESkQYrt0J+gkDCyp31B0r7H15qfNWEMOMeMu4+qNX1bQmARERERkcZCIbCIiIiINEghUXGknXwTS0bdhgWFEN/jECw4hLw5P5E/dwLrfv+E9hc8TGLvw6uXyZ7yGSs+eYI2p9+xxWEkREREREQaE/3lKyIiIiINVsujryQ0vhkrPn2KBS9eQ3BEDNFtehHbaQBBYREk73caQSGh1e2TDzyT9A8fIXfm9yT2OXKL614y6naWvn1X9ePI5h3o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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=1, min_impurity_decrease=0.001)\\n\",\n    \"intrp.interpret(est, X_test, sample_treatment_costs=-1)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X.columns, treatment_names=[\\\"Discount\\\", \\\"No-Discount\\\"], fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now, let us compare our policy with other baseline policies! Our model says which customers to give a small discount to, and for this experiment, we will set a discount level of 10% for those users. Because the model is misspecified we would not expect good results with large discounts. Here, because we know the ground truth, we can evaluate the value of this policy.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# define function to compute revenue\\n\",\n    \"def revenue_fn(data, discount_level1, discount_level2, baseline_T, policy):\\n\",\n    \"    policy_price = baseline_T * (1 - discount_level1) * policy + baseline_T * (1 - discount_level2) * (1 - policy)\\n\",\n    \"    demand = demand_fn(data, policy_price)\\n\",\n    \"    rev = demand * policy_price\\n\",\n    \"    return rev\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"policy_dic = {}\\n\",\n    \"# our policy above\\n\",\n    \"policy = intrp.treat(X)\\n\",\n    \"policy_dic[\\\"Our Policy\\\"] = np.mean(revenue_fn(train_data, 0, 0.1, 1, policy))\\n\",\n    \"\\n\",\n    \"## previous strategy\\n\",\n    \"policy_dic[\\\"Previous Strategy\\\"] = np.mean(train_data[\\\"price\\\"] * train_data[\\\"demand\\\"])\\n\",\n    \"\\n\",\n    \"## give everyone discount\\n\",\n    \"policy_dic[\\\"Give Everyone Discount\\\"] = np.mean(revenue_fn(train_data, 0.1, 0, 1, np.ones(len(X))))\\n\",\n    \"\\n\",\n    \"## don't give discount\\n\",\n    \"policy_dic[\\\"Give No One Discount\\\"] = np.mean(revenue_fn(train_data, 0, 0.1, 1, np.ones(len(X))))\\n\",\n    \"\\n\",\n    \"## follow our policy, but give -10% discount for the group doesn't recommend to give discount\\n\",\n    \"policy_dic[\\\"Our Policy + Give Negative Discount for No-Discount Group\\\"] = np.mean(revenue_fn(train_data,\\n\",\n    \"                                                                                             -0.1, 0.1, 1, policy))\\n\",\n    \"\\n\",\n    \"## give everyone -10% discount\\n\",\n    \"policy_dic[\\\"Give Everyone Negative Discount\\\"] = np.mean(revenue_fn(train_data, -0.1, 0, 1, np.ones(len(X))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Revenue</th>\\n\",\n       \"      <th>Rank</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Our Policy</th>\\n\",\n       \"      <td>14.686241</td>\\n\",\n       \"      <td>2.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Previous Strategy</th>\\n\",\n       \"      <td>14.349342</td>\\n\",\n       \"      <td>4.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give Everyone Discount</th>\\n\",\n       \"      <td>13.774469</td>\\n\",\n       \"      <td>6.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give No One Discount</th>\\n\",\n       \"      <td>14.294606</td>\\n\",\n       \"      <td>5.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Our Policy + Give Negative Discount for No-Discount Group</th>\\n\",\n       \"      <td>15.564411</td>\\n\",\n       \"      <td>1.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Give Everyone Negative Discount</th>\\n\",\n       \"      <td>14.612670</td>\\n\",\n       \"      <td>3.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                                      Revenue  Rank\\n\",\n       \"Our Policy                                          14.686241   2.0\\n\",\n       \"Previous Strategy                                   14.349342   4.0\\n\",\n       \"Give Everyone Discount                              13.774469   6.0\\n\",\n       \"Give No One Discount                                14.294606   5.0\\n\",\n       \"Our Policy + Give Negative Discount for No-Disc...  15.564411   1.0\\n\",\n       \"Give Everyone Negative Discount                     14.612670   3.0\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# get policy summary table\\n\",\n    \"res = pd.DataFrame.from_dict(policy_dic, orient=\\\"index\\\", columns=[\\\"Revenue\\\"])\\n\",\n    \"res[\\\"Rank\\\"] = res[\\\"Revenue\\\"].rank(ascending=False)\\n\",\n    \"res\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"**We beat the baseline policies!** Our policy gets the highest revenue except for the one raising the price for the No-Discount group. That means our currently baseline price is low, but the way we segment the user does help increase the revenue!\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusions <a id=\\\"conclusion\\\"></a>\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML to:\\n\",\n    \"\\n\",\n    \"* Estimate the treatment effect correctly even the model is misspecified\\n\",\n    \"* Interpret the resulting individual-level treatment effects\\n\",\n    \"* Make the policy decision beats the previous and baseline policies\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \"\n   ]\n  }\n ],\n \"metadata\": {\n  \"interpreter\": {\n   \"hash\": \"2e5c6628eef985e7fd2fa2aad22c988c5b8aa1d2648cf9c51c543a2a2637c546\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.6.6 64-bit\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Long-Term Return-on-Investment via Short-Term Proxies.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Long-Term Return-on-Investment via Short-Term Proxies\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"Policy makers typically face the problem of wanting to estimate the treatment effect of some new incentives on long-run downstream interests. However, we only have historical data of older, **different** treatment options, and we haven't seen the long-run effects **of these new incentives** play out yet. We assume access to a long-term dataset where only past treatments were administered and a short-term dataset where novel treatments have been administered. We propose a surrogate based approach where we assume that the long-term effect is channeled through a multitude of available short-term proxies. Our work combines three major recent techniques in the causal machine learning literature: **surrogate indices**, **dynamic treatment effect estimation** and **double machine learning**, in a unified\\n\",\n    \"pipeline. For more details, see this paper [here](https://arxiv.org/pdf/2103.08390.pdf).\\n\",\n    \"\\n\",\n    \"In this case study, we will show you how to apply this unified pipeline to a ROI estimation problem. These methodologies have already been implemented into our [EconML](https://aka.ms/econml) library and you could do it with only a few lines of code.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#Background)\\n\",\n    \"2. [Data](#Data)\\n\",\n    \"3. [Do Dynamic Adjustment with EconML](#Do-Dynamic-Adjustment-with-EconML)\\n\",\n    \"4. [Train Surrogate Index](#Train-Surrogate-Index)\\n\",\n    \"5. [Run DML to Learn ROI with EconML](#Run-DML-to-Learn-ROI-with-EconML)\\n\",\n    \"6. [Model Evaluation](#Model-Evaluation)\\n\",\n    \"7. [Extensions -- Including Heterogeneity in Effect](#Extensions----Including-Heterogeneity-in-Effect)\\n\",\n    \"8. [Conclusions](#Conclusions)\"\n   ]\n  },\n  {\n   \"attachments\": {\n    \"b86f5631-2e12-46ce-8072-a6a8a59ceda5.png\": {\n     \"image/png\": \"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\"\n    },\n    \"ebc29274-f089-47ae-94ef-c6edfd8a589b.png\": {\n     \"image/png\": \"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\"\n    }\n   },\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background\\n\",\n    \"\\n\",\n    \"A sales firm provides multiple monetary and resource investments to enterprice customers in support of products adoption, the sales manager would like to know which of these programs (\\\"investments\\\") are more successful than others? Specifically, we are interested in identifying the average treatment effect of each investment at some period $t$, on the cumulative outcome in the subsequent $m$ months. \\n\",\n    \"\\n\",\n    \"There are a few challenges to answer this question. First of all, we haven't fully observed the long-term revenue yet and we don't want to wait that long to evaluate a program. In addition, a careful causal modeling is required to correctly attribute the long-term ROI of multiple programs in a holistic manner, avoiding the biased estimate coming from confounding effect or double counting issues. \\n\",\n    \"\\n\",\n    \"The causal graph below shows how to frame this problem:\\n\",\n    \"\\n\",\n    \"![causal_graph.png](attachment:b86f5631-2e12-46ce-8072-a6a8a59ceda5.png)\\n\",\n    \"\\n\",\n    \"**Methodology:** Our proposed adjusted surrogate index approach could address all the chanllenges above by assuming the long-term effect is channeled through some short-term observed surrogates and employing a dynamic adjustment step (`DynamicDML`) to the surrogate model in order to get rid of the effect from future investment, finally applying double machine learning (`DML`) techniques to estimate the ROI. \\n\",\n    \"\\n\",\n    \"The pipeline below tells you how to solve this problem step by step:\\n\",\n    \"\\n\",\n    \"![pipeline.png](attachment:ebc29274-f089-47ae-94ef-c6edfd8a589b.png)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# imports\\n\",\n    \"from econml.data.dynamic_panel_dgp import SemiSynthetic\\n\",\n    \"from sklearn.linear_model import LassoCV, MultiTaskLassoCV\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data\\n\",\n    \"\\n\",\n    \"The **semi-synthetic data*** is comprised of 4 components:\\n\",\n    \" * **Surrogates:** short-term metrics that could represent long-term revenue\\n\",\n    \" * **Treatments:** different types of monetary investments to the end customers\\n\",\n    \" * **Outcomes:** cumulative long-term revenue\\n\",\n    \" * **Controls:** lagged surrogates and treatments, other time-invariant controls (e.g. demographics)\\n\",\n    \"\\n\",\n    \"To build the semi-synthetic data we estimate a series of moments from a real-world dataset: a full covariance matrix of\\n\",\n    \"all surrogates, treatments, and controls in one period and a series of linear prediction models (lassoCV) of each surrogate and\\n\",\n    \"treatment on a set of 6 lags of each treatment, 6 lags of each surrogate, and time-invariant controls. Using these values, we draw new parameters from distributions matching the key characteristics of each family of parameters. Finally, we use these new\\n\",\n    \"parameters to simulate surrogates, treatments, and controls by drawing a set of initial values from the covariance matrix and\\n\",\n    \"forward simulating to match intertemporal relationships from the transformed prediction models. We use one surrogate to be the outcome of interests. Then we consider the effect of each treatment in period $t$ on the cumulative sum of outcome from following 4 periods. We can calculate the true treatment effects in the semi-synthetic data as a function of parameters from the linear prediction models.\\n\",\n    \"\\n\",\n    \"The input data is in a **panel format**. Each panel corresponds to one company and the different rows in a panel correspond to different time period. \\n\",\n    \"\\n\",\n    \"Example:\\n\",\n    \"\\n\",\n    \"||Company|Year|Features|Controls/Surrogates|T1|T2|T3|AdjRev|\\n\",\n    \"|---|---|---|---|---|---|---|---|---|\\n\",\n    \"|1|A|2018|...|...|\\\\$1,000|...|...|\\\\$10,000|\\n\",\n    \"|2|A|2019|...|...|\\\\$2,000|...|...|\\\\$12,000|\\n\",\n    \"|3|A|2020|...|...|\\\\$3,000|...|...|\\\\$15,000|\\n\",\n    \"|4|A|2021|...|...|\\\\$3,000|...|...|\\\\$18,000|\\n\",\n    \"|5|B|2018|...|...|\\\\$0|...|...|\\\\$5,000|\\n\",\n    \"|6|B|2019|...|...|\\\\$1,000|...|...|\\\\$10,000|\\n\",\n    \"|7|B|2020|...|...|\\\\$0|...|...|\\\\$7,000|\\n\",\n    \"|8|B|2021|...|...|\\\\$1,200|...|...|\\\\$12,000|\\n\",\n    \"|9|C|2018|...|...|\\\\$1,000|...|...|\\\\$20,000|\\n\",\n    \"|10|C|2019|...|...|\\\\$1,500|...|...|\\\\$25,000|\\n\",\n    \"|11|C|2020|...|...|\\\\$500|...|...|\\\\$18,000|\\n\",\n    \"|12|C|2021|...|...|\\\\$500|...|...|\\\\$20,000|\\n\",\n    \" \\n\",\n    \" **For confidentiality reason, the data used in this case study is synthetically generated and the feature distributions don't exactly correspond to real distributions.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# generate historical dataset (training purpose)\\n\",\n    \"np.random.seed(43)\\n\",\n    \"dgp = SemiSynthetic()\\n\",\n    \"dgp.create_instance()\\n\",\n    \"n_periods = 4\\n\",\n    \"n_units = 5000\\n\",\n    \"n_treatments = dgp.n_treatments\\n\",\n    \"random_seed = 43\\n\",\n    \"thetas = np.random.uniform(0, 2, size=(dgp.n_proxies, n_treatments))\\n\",\n    \"\\n\",\n    \"panelX, panelT, panelY, panelGroups, true_effect = dgp.gen_data(\\n\",\n    \"    n_units, n_periods, thetas, random_seed\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Outcome shape:  (5000, 4)\\n\",\n      \"Treatment shape:  (5000, 4, 3)\\n\",\n      \"Controls shape:  (5000, 4, 71)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# print panel data shape\\n\",\n    \"print(\\\"Outcome shape: \\\", panelY.shape)\\n\",\n    \"print(\\\"Treatment shape: \\\", panelT.shape)\\n\",\n    \"print(\\\"Controls shape: \\\", panelX.shape)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# generate new dataset (testing purpose)\\n\",\n    \"thetas_new = np.random.uniform(0, 2, size=(dgp.n_proxies, n_treatments))\\n\",\n    \"panelXnew, panelTnew, panelYnew, panelGroupsnew, true_effect_new = dgp.gen_data(\\n\",\n    \"    n_units, n_periods, thetas_new, random_seed\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Long-term Effect for each investment:  [0.90994672 0.709811   2.45310877]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# print true long term effect\\n\",\n    \"true_longterm_effect = np.sum(true_effect_new, axis=0)\\n\",\n    \"print(\\\"True Long-term Effect for each investment: \\\", true_longterm_effect)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Do Dynamic Adjustment with EconML\\n\",\n    \"From the causal graph above, we could see we want to first remove the effects of future incentives from the historical outcomes to create an **adjusted long-term revenue** as if those future incentives never happened.\\n\",\n    \"\\n\",\n    \"EconML's `DynamicDML` estimator is an extension of Double Machine Learning approach to **dynamically estimate the period effect of treatments assigned sequentially over time period**. In this scenario, it could help us to adjust the cumulative revenue by subtracting the period effect of all of the investments after the target investment.\\n\",\n    \"\\n\",\n    \"For more details about `DynamicDML`, please read this [paper](https://arxiv.org/pdf/2002.07285.pdf). \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([[0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00],\\n\",\n       \"       [1.000e+00, 1.000e+00, 1.000e+00, 1.000e+00],\\n\",\n       \"       [2.000e+00, 2.000e+00, 2.000e+00, 2.000e+00],\\n\",\n       \"       ...,\\n\",\n       \"       [4.997e+03, 4.997e+03, 4.997e+03, 4.997e+03],\\n\",\n       \"       [4.998e+03, 4.998e+03, 4.998e+03, 4.998e+03],\\n\",\n       \"       [4.999e+03, 4.999e+03, 4.999e+03, 4.999e+03]])\"\n      ]\n     },\n     \"execution_count\": 9,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"panelGroups\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[1.35952949 1.92451605 0.34684417]\\n\",\n      \"[0.74662029 1.13138969 0.25069193 1.30585143 1.79051531 0.34597602]\\n\",\n      \"[0.46734394 0.74952179 0.16292026 0.67056612 0.92299133 0.23686006\\n\",\n      \" 1.36311063 1.91659314 0.34728767]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# on historical data construct adjusted outcomes\\n\",\n    \"from econml.panel.dml import DynamicDML\\n\",\n    \"from econml.panel.utilities import long, wide\\n\",\n    \"\\n\",\n    \"panelYadj = panelY.copy()\\n\",\n    \"\\n\",\n    \"est = DynamicDML(\\n\",\n    \"    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=2\\n\",\n    \")\\n\",\n    \"for t in range(1, n_periods):  # for each target period 1...m\\n\",\n    \"    # learn period effect for each period treatment on target period t\\n\",\n    \"    est.fit(\\n\",\n    \"        long(panelY[:, 1 : t + 1]),\\n\",\n    \"        long(panelT[:, 1 : t + 1, :]),  # reshape data to long format\\n\",\n    \"        X=None,\\n\",\n    \"        W=long(panelX[:, 1 : t + 1, :]),\\n\",\n    \"        groups=long(panelGroups[:, 1 : t + 1]),\\n\",\n    \"    )\\n\",\n    \"    print(est.intercept_)\\n\",\n    \"    # remove effect of observed treatments\\n\",\n    \"    T1 = wide(panelT[:, 1 : t + 1, :])\\n\",\n    \"    panelYadj[:, t] = panelY[:, t] - est.effect(\\n\",\n    \"        T0=np.zeros_like(T1), T1=T1\\n\",\n    \"    )  # reshape data to wide format\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Train Surrogate Index\\n\",\n    \"Once we have the adjusted outcome, we'd like to train any ML model to learn the relationship between short-term surrogates and long-term revenue from the historical dataset, assuming the treatment effect of investments on long-term revenue could **only** go through short-term surrogates, and the **relationship keeps the same** between the historical dataset and the new dataset.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 9;\\n                var nbb_formatted_code = \\\"# train surrogate index on historical dataset\\\\nXS = np.hstack(\\\\n    [panelX[:, 1], panelYadj[:, :1]]\\\\n)  # concatenate controls and surrogates from historical dataset\\\\nTotalYadj = np.sum(panelYadj, axis=1)  # total revenue from historical dataset\\\\nadjusted_proxy_model = LassoCV().fit(\\\\n    XS, TotalYadj\\\\n)  # train proxy model from historical dataset\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# train surrogate index on historical dataset\\n\",\n    \"XS = np.hstack(\\n\",\n    \"    [panelX[:, 1], panelYadj[:, :1]]\\n\",\n    \")  # concatenate controls and surrogates from historical dataset\\n\",\n    \"TotalYadj = np.sum(panelYadj, axis=1)  # total revenue from historical dataset\\n\",\n    \"adjusted_proxy_model = LassoCV().fit(\\n\",\n    \"    XS, TotalYadj\\n\",\n    \")  # train proxy model from historical dataset\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 10;\\n                var nbb_formatted_code = \\\"# predict new long term revenue\\\\nXSnew = np.hstack(\\\\n    [panelXnew[:, 1], panelYnew[:, :1]]\\\\n)  # concatenate controls and surrogates from new dataset\\\\nsindex_adj = adjusted_proxy_model.predict(XSnew)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# predict new long term revenue\\n\",\n    \"XSnew = np.hstack(\\n\",\n    \"    [panelXnew[:, 1], panelYnew[:, :1]]\\n\",\n    \")  # concatenate controls and surrogates from new dataset\\n\",\n    \"sindex_adj = adjusted_proxy_model.predict(XSnew)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Run DML to Learn ROI with EconML\\n\",\n    \"Finally we will call `LinearDML` estimator from EconML to learn the treatment effect of multiple investments on the adjusted surrogate index in new dataset. `LinearDML` is a two stage machine learning models for estimating **(heterogeneous) treatment effects** when all potential confounders are observed, it leverages the machine learning power to deal with **high dimensional dataset** and still be able to construct **confidence intervals**. \\n\",\n    \"\\n\",\n    \"For more details, please read this [paper](https://arxiv.org/pdf/1608.00060.pdf). \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Long-term Effect for each investment:  [0.90994672 0.709811   2.45310877]\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"          <td></td>          <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0</th>      <td>0.83</td>       <td>0.015</td> <td>57.214</td>   <td>0.0</td>    <td>0.802</td>    <td>0.858</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T1</th>      <td>0.677</td>      <td>0.028</td> <td>23.767</td>   <td>0.0</td>    <td>0.621</td>    <td>0.733</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T2</th>      <td>2.438</td>      <td>0.035</td> <td>69.711</td>   <td>0.0</td>    <td>2.369</td>    <td>2.507</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                         CATE Intercept Results                        \\n\",\n       \"=======================================================================\\n\",\n       \"                  point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"cate_intercept|T0           0.83  0.015 57.214    0.0    0.802    0.858\\n\",\n       \"cate_intercept|T1          0.677  0.028 23.767    0.0    0.621    0.733\\n\",\n       \"cate_intercept|T2          2.438  0.035 69.711    0.0    2.369    2.507\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 11;\\n                var nbb_formatted_code = \\\"# learn treatment effect on surrogate index on new dataset\\\\nfrom econml.dml import LinearDML\\\\n\\\\nadjsurr_est = LinearDML(\\\\n    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\\\n)\\\\n# fit treatment_0 on total revenue from new dataset\\\\nadjsurr_est.fit(sindex_adj, panelTnew[:, 0], X=None, W=panelXnew[:, 0])\\\\n# print treatment effect summary\\\\nprint(\\\\\\\"True Long-term Effect for each investment: \\\\\\\", true_longterm_effect)\\\\nadjsurr_est.summary(alpha=0.05)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# learn treatment effect on surrogate index on new dataset\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"\\n\",\n    \"adjsurr_est = LinearDML(\\n\",\n    \"    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\n\",\n    \")\\n\",\n    \"# fit treatment_0 on total revenue from new dataset\\n\",\n    \"adjsurr_est.fit(sindex_adj, panelTnew[:, 0], X=None, W=panelXnew[:, 0])\\n\",\n    \"# print treatment effect summary\\n\",\n    \"print(\\\"True Long-term Effect for each investment: \\\", true_longterm_effect)\\n\",\n    \"adjsurr_est.summary(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 12;\\n                var nbb_formatted_code = \\\"# save the treatment effect and confidence interval\\\\nadjsurr_point_est = adjsurr_est.intercept_\\\\nadjsurr_conf_int_lb, adjsurr_conf_int_ub = adjsurr_est.intercept__interval(alpha=0.05)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# save the treatment effect and confidence interval\\n\",\n    \"adjsurr_point_est = adjsurr_est.intercept_\\n\",\n    \"adjsurr_conf_int_lb, adjsurr_conf_int_ub = adjsurr_est.intercept__interval(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Model Evaluation\\n\",\n    \"Now we want to compare the proposed **adjusted surrogate index** approach with estimation from realized long-term outcome. Below we train another `LinearDML` model on the realized cumulative revenue directly, without any adjustment. And then we visualize the two models output, comparing with the ground truth.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Long-term Effect for each investment:  [0.90994672 0.709811   2.45310877]\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"          <td></td>          <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0</th>      <td>2.227</td>      <td>0.039</td> <td>56.865</td>   <td>0.0</td>    <td>2.15</td>     <td>2.304</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T1</th>      <td>1.561</td>      <td>0.226</td>  <td>6.911</td>   <td>0.0</td>    <td>1.118</td>    <td>2.004</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T2</th>      <td>4.335</td>      <td>0.209</td> <td>20.748</td>   <td>0.0</td>    <td>3.926</td>    <td>4.745</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                         CATE Intercept Results                        \\n\",\n       \"=======================================================================\\n\",\n       \"                  point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"cate_intercept|T0          2.227  0.039 56.865    0.0     2.15    2.304\\n\",\n       \"cate_intercept|T1          1.561  0.226  6.911    0.0    1.118    2.004\\n\",\n       \"cate_intercept|T2          4.335  0.209 20.748    0.0    3.926    4.745\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 13;\\n                var nbb_formatted_code = \\\"# learn treatment effect on direct outcome\\\\nfrom econml.dml import LinearDML\\\\n\\\\ndirect_est = LinearDML(\\\\n    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\\\n)\\\\n# fit treatment_0 on total revenue from new dataset\\\\ndirect_est.fit(np.sum(panelYnew, axis=1), panelTnew[:, 0], X=None, W=panelXnew[:, 0])\\\\n# print treatment effect summary\\\\nprint(\\\\\\\"True Long-term Effect for each investment: \\\\\\\", true_longterm_effect)\\\\ndirect_est.summary(alpha=0.05)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# learn treatment effect on direct outcome\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"\\n\",\n    \"direct_est = LinearDML(\\n\",\n    \"    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\n\",\n    \")\\n\",\n    \"# fit treatment_0 on total revenue from new dataset\\n\",\n    \"direct_est.fit(np.sum(panelYnew, axis=1), panelTnew[:, 0], X=None, W=panelXnew[:, 0])\\n\",\n    \"# print treatment effect summary\\n\",\n    \"print(\\\"True Long-term Effect for each investment: \\\", true_longterm_effect)\\n\",\n    \"direct_est.summary(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 14;\\n                var nbb_formatted_code = \\\"# save the treatment effect and confidence interval\\\\ndirect_point_est = direct_est.intercept_\\\\ndirect_conf_int_lb, direct_conf_int_ub = direct_est.intercept__interval(alpha=0.05)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# save the treatment effect and confidence interval\\n\",\n    \"direct_point_est = direct_est.intercept_\\n\",\n    \"direct_conf_int_lb, direct_conf_int_ub = direct_est.intercept__interval(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0.5, 0.98, 'Error bar plot of treatment effect from different models')\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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Yx/5yEd46623mryf+fPn89RTTzV5vUGDBvHmm2/u037XXXdx4oknUlZWxtChQ/nNb37T5G0Xy4033tjkdQqPcWP16NGjyfuRpEL9e3dja+Wuam1bK3fRv3e33MSj34Kd26uvtHN7rl1qIfZFWp59EUlqGQYTNRXpVNpZs2Zx+umnM2vWrEYt/+CDD3LYYYc1eT/N7QzUZu3atXz3u99l4cKFLF26lKeffpqysrJGr79r1656p/dXczoDkpSF8SP7sqVyJ5u372RPSmzevpMtlTsZP7JvboG319a+Yl3tat/si1SxLyJJHYPBRKEinUq7detWFi5cyE9/+lPuueeeqvbt27dzySWXMGTIEC6++GK2b3/v27K93xqsWrWKoUOHVrX/8Ic/ZOrUqQBMnz6d448/nrKyMi655BJWrVrFHXfcwc0338zw4cN54okn2LBhA+PHj+fkk0/m5JNP5sknnwRg48aNjB07lhNOOIErr7yS3F1aq1u/fj09e/asSul79OjB4MGDgepp/5tvvsmgQYMAmDlzJh/96Ec555xzOPfcc/eZrqio4KKLLqKsrIzRo0ezdOlSADZs2MCYMWOq6hk4cGDVtyYXXXQRJ510EieccAJ33nknANdddx3bt29n+PDhXHbZZQD84he/4JRTTmH48OF87nOfY/fu3fX+Xnr06ME3vvENhg0bxujRo3njjTcAeOWVVzj11FM58cQT+eY3v1ltnR/84AecfPLJlJWVcf311wNw//33c+6555JS4rXXXuO4447j9ddfr3ffkjqW4QN68aUxx9G7exfeeLuS3t278KUxx713V45D+9W+Yl3tar/si1RjX8S+iKSOwWCiUJFOpf3Nb37DuHHjOO644zj88MNZvHgxALfffjvdunVj+fLl3HDDDVXtjXXTTTfx17/+laVLl3LHHXcwaNAgrrrqKq699lrKy8s544wzmDx5Mtdeey3PPPMMc+bM4corrwTghhtu4PTTT+eFF17g4osvZvXq1ftsf9iwYRx11FEMHjyYiRMn8sADDzSqriVLljB79mwef/zxfaavv/56RowYwdKlS7nxxhv59Kc/XVXPOeecwwsvvMDHP/7xavXcddddLF68mEWLFjF9+nQ2btzITTfdRNeuXSkvL+fuu+9m+fLl/OpXv+LJJ5+kvLycTp06cffdd9db57Zt2xg9ejTPPvssZ555Jj/+8Y8BmDx5Mp///Od57rnnOOaYY6qWf/jhh3nppZf4y1/+Qnl5OYsXL2bBggVcfPHFHHPMMdx222189rOf5YYbbuDoo49u1LGS1HEMH9CLb180lJn/dArfvmho9VuFnjsFSrpWX6Gka65dHYt9kWrsi9gXkdQxdG54kQ6kSKfSzpo1i8mTJwNwySWXMGvWLE466SQWLFjANddcA0BZWVmTTk3cu85ll13GRRddxEUXXVTrMo888gjLli2rmt68eTNbt25lwYIF3HfffQCcf/759OrVa591O3XqxEMPPcQzzzzDo48+yrXXXsvixYurviWpy5gxY+jdu3et0wsXLmTOnDkAnHPOOWzcuJHNmzezcOFC7r//fgDGjRtXrZ7p06dXzVuzZg0vvfQShx9+eLV9PvrooyxevJiTTz4ZyH0DdOSRR9ZbZ5cuXbjgggsAOOmkk5g3bx4ATz75ZFWNl19+OV/96leBXGfg4YcfZsSIEUDu26eXXnqJM888k1tvvZWhQ4cyevRoLr300nr3K0n7KJuQ+/mbL+S+KT+0fy6U2NuujsO+SDX2ReyLSOoYDCYKHdovd8pkbe3NVFFRwR//+Eeee+45IoLdu3cTEfzgBz9o1PqdO3dmz549VdOVlZVVz+fOncuCBQt44IEH+O53v8tzzz23z/p79uzh6aefprS0tFn1RwSnnHIKp5xyCmPGjGHixIlMnTq1Wl2FNQF079693ummmD9/Po888gh/+tOf6NatG2edddY++wNIKXHFFVfwve99r9HbLikpISKAXMen8LrTve019/G1r32Nz33uc/vMW7t2LQcddBBvvPEGe/bs4aCDPBlJUhOVTYDFP8s9nzg321qUHfsi+7AvUn0f9kUktUf+i1WoCKfSzp49m8svv5xXX32VVatWsWbNGgYPHswTTzzBmWeeyS9/+UsAnn/++aprHAsdddRRrF+/no0bN/Luu+/yu9/9Dsj9J79mzRrOPvtsvv/97/P222+zdetWevbsyZYtW6rWHzt2LLfeemvVdHl5OUC1ff/+979n06ZN++z7b3/7G0uWLKm27sCBA4Hcdad7T/ecPXt2o4/HGWecUXVa4/z58zniiCM45JBDOO2007j33tz1sw8//HBVPW+//Ta9evWiW7duvPjiizz99NNV2yopKWHnzp0AnHvuucyePZv1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\",\n      \"text/plain\": [\n       \"<Figure size 1296x432 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 15;\\n                var nbb_formatted_code = \\\"# plot the error bar plot of different models\\\\nplt.figure(figsize=(18, 6))\\\\nplt.subplot(1, 2, 1)\\\\n\\\\nplt.errorbar(\\\\n    np.arange(n_treatments) - 0.04,\\\\n    true_longterm_effect,\\\\n    fmt=\\\\\\\"o\\\\\\\",\\\\n    alpha=0.6,\\\\n    label=\\\\\\\"Ground truth\\\\\\\",\\\\n)\\\\nplt.errorbar(\\\\n    np.arange(n_treatments),\\\\n    adjsurr_point_est,\\\\n    yerr=(\\\\n        adjsurr_conf_int_ub - adjsurr_point_est,\\\\n        adjsurr_point_est - adjsurr_conf_int_lb,\\\\n    ),\\\\n    fmt=\\\\\\\"o\\\\\\\",\\\\n    label=\\\\\\\"Adjusted Surrogate Index\\\\\\\",\\\\n)\\\\nplt.xticks(np.arange(n_treatments), [\\\\\\\"T0\\\\\\\", \\\\\\\"T1\\\\\\\", \\\\\\\"T2\\\\\\\"])\\\\nplt.ylabel(\\\\\\\"Effect\\\\\\\")\\\\nplt.legend()\\\\n\\\\nplt.subplot(1, 2, 2)\\\\nplt.errorbar(\\\\n    np.arange(n_treatments) - 0.04,\\\\n    true_longterm_effect,\\\\n    fmt=\\\\\\\"o\\\\\\\",\\\\n    alpha=0.6,\\\\n    label=\\\\\\\"Ground truth\\\\\\\",\\\\n)\\\\nplt.errorbar(\\\\n    np.arange(n_treatments),\\\\n    adjsurr_point_est,\\\\n    yerr=(\\\\n        adjsurr_conf_int_ub - adjsurr_point_est,\\\\n        adjsurr_point_est - adjsurr_conf_int_lb,\\\\n    ),\\\\n    fmt=\\\\\\\"o\\\\\\\",\\\\n    label=\\\\\\\"Adjusted Surrogate Index\\\\\\\",\\\\n)\\\\nplt.errorbar(\\\\n    np.arange(n_treatments) + 0.04,\\\\n    direct_point_est,\\\\n    yerr=(direct_conf_int_ub - direct_point_est, direct_point_est - direct_conf_int_lb),\\\\n    fmt=\\\\\\\"o\\\\\\\",\\\\n    label=\\\\\\\"Direct Model\\\\\\\",\\\\n)\\\\nplt.xticks(np.arange(n_treatments), [\\\\\\\"T0\\\\\\\", \\\\\\\"T1\\\\\\\", \\\\\\\"T2\\\\\\\"])\\\\nplt.ylabel(\\\\\\\"Effect\\\\\\\")\\\\nplt.legend()\\\\nplt.suptitle(\\\\\\\"Error bar plot of treatment effect from different models\\\\\\\")\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# plot the error bar plot of different models\\n\",\n    \"plt.figure(figsize=(18, 6))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"\\n\",\n    \"plt.errorbar(\\n\",\n    \"    np.arange(n_treatments) - 0.04,\\n\",\n    \"    true_longterm_effect,\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    alpha=0.6,\\n\",\n    \"    label=\\\"Ground truth\\\",\\n\",\n    \")\\n\",\n    \"plt.errorbar(\\n\",\n    \"    np.arange(n_treatments),\\n\",\n    \"    adjsurr_point_est,\\n\",\n    \"    yerr=(\\n\",\n    \"        adjsurr_conf_int_ub - adjsurr_point_est,\\n\",\n    \"        adjsurr_point_est - adjsurr_conf_int_lb,\\n\",\n    \"    ),\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    label=\\\"Adjusted Surrogate Index\\\",\\n\",\n    \")\\n\",\n    \"plt.xticks(np.arange(n_treatments), [\\\"T0\\\", \\\"T1\\\", \\\"T2\\\"])\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.errorbar(\\n\",\n    \"    np.arange(n_treatments) - 0.04,\\n\",\n    \"    true_longterm_effect,\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    alpha=0.6,\\n\",\n    \"    label=\\\"Ground truth\\\",\\n\",\n    \")\\n\",\n    \"plt.errorbar(\\n\",\n    \"    np.arange(n_treatments),\\n\",\n    \"    adjsurr_point_est,\\n\",\n    \"    yerr=(\\n\",\n    \"        adjsurr_conf_int_ub - adjsurr_point_est,\\n\",\n    \"        adjsurr_point_est - adjsurr_conf_int_lb,\\n\",\n    \"    ),\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    label=\\\"Adjusted Surrogate Index\\\",\\n\",\n    \")\\n\",\n    \"plt.errorbar(\\n\",\n    \"    np.arange(n_treatments) + 0.04,\\n\",\n    \"    direct_point_est,\\n\",\n    \"    yerr=(direct_conf_int_ub - direct_point_est, direct_point_est - direct_conf_int_lb),\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    label=\\\"Direct Model\\\",\\n\",\n    \")\\n\",\n    \"plt.xticks(np.arange(n_treatments), [\\\"T0\\\", \\\"T1\\\", \\\"T2\\\"])\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.suptitle(\\\"Error bar plot of treatment effect from different models\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We could see the **adjusted surrogate index** approach does a good job overcomes a common data limitation when considering long-term effects of novel treatments and expands the surrogate approach to consider a common, and previously\\n\",\n    \"problematic, pattern of serially correlated treatments.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Extensions -- Including Heterogeneity in Effect\\n\",\n    \"\\n\",\n    \"Finally, I will show that our EconML's `DynamicDML` and `LinearDML` estimators could not only learn Average Treatment Effect (ATE), but also **Heterogeneous Treatment Effect (CATE)**, which will return the treatment effect as a function of interested characteristics. In the example below, I will use first control variable as feature to learn effect heterogeneity, and retrain the final `LinearDML` model. Similarly, you could train `DynamicDML` with feature $X$ as well.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Long-term Effect for each investment:  [0.90994672 0.709811   2.45310877]\\n\",\n      \"Average treatment effect for each investment:  [0.82738185 0.71610965 2.56087599]\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>    <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|T0</th>      <td>0.009</td>      <td>0.011</td>  <td>0.76</td>   <td>0.447</td>  <td>-0.014</td>    <td>0.031</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|T1</th>      <td>0.037</td>      <td>0.031</td>  <td>1.218</td>  <td>0.223</td>  <td>-0.023</td>    <td>0.098</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|T2</th>     <td>-0.072</td>      <td>0.151</td> <td>-0.478</td>  <td>0.633</td>  <td>-0.369</td>    <td>0.224</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"          <td></td>          <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0</th>      <td>0.827</td>      <td>0.015</td> <td>56.625</td>   <td>0.0</td>    <td>0.799</td>    <td>0.856</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T1</th>      <td>0.716</td>      <td>0.032</td> <td>22.466</td>   <td>0.0</td>    <td>0.654</td>    <td>0.779</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T2</th>      <td>2.56</td>       <td>0.237</td>  <td>10.82</td>   <td>0.0</td>    <td>2.096</td>    <td>3.024</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                    Coefficient Results                    \\n\",\n       \"===========================================================\\n\",\n       \"      point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-----------------------------------------------------------\\n\",\n       \"X0|T0          0.009  0.011   0.76  0.447   -0.014    0.031\\n\",\n       \"X0|T1          0.037  0.031  1.218  0.223   -0.023    0.098\\n\",\n       \"X0|T2         -0.072  0.151 -0.478  0.633   -0.369    0.224\\n\",\n       \"                         CATE Intercept Results                        \\n\",\n       \"=======================================================================\\n\",\n       \"                  point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"cate_intercept|T0          0.827  0.015 56.625    0.0    0.799    0.856\\n\",\n       \"cate_intercept|T1          0.716  0.032 22.466    0.0    0.654    0.779\\n\",\n       \"cate_intercept|T2           2.56  0.237  10.82    0.0    2.096    3.024\\n\",\n       \"-----------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": \"\\n            setTimeout(function() {\\n                var nbb_cell_id = 16;\\n                var nbb_formatted_code = \\\"# learn treatment effect on surrogate index on new dataset\\\\nfrom econml.dml import LinearDML\\\\n\\\\nadjsurr_est = LinearDML(\\\\n    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\\\n)\\\\n# fit treatment_0 on total revenue from new dataset\\\\nadjsurr_est.fit(\\\\n    sindex_adj, panelTnew[:, 0], X=panelXnew[:, 0, :1], W=panelXnew[:, 0, 1:]\\\\n)\\\\n# print treatment effect summary\\\\nprint(\\\\\\\"True Long-term Effect for each investment: \\\\\\\", true_longterm_effect)\\\\nprint(\\\\n    \\\\\\\"Average treatment effect for each investment: \\\\\\\",\\\\n    adjsurr_est.const_marginal_ate(panelXnew[:, 0, :1]),\\\\n)\\\\nadjsurr_est.summary(alpha=0.05)\\\";\\n                var nbb_cells = Jupyter.notebook.get_cells();\\n                for (var i = 0; i < nbb_cells.length; ++i) {\\n                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n                        nbb_cells[i].set_text(nbb_formatted_code);\\n                        break;\\n                    }\\n                }\\n            }, 500);\\n            \",\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# learn treatment effect on surrogate index on new dataset\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"\\n\",\n    \"adjsurr_est = LinearDML(\\n\",\n    \"    model_y=LassoCV(max_iter=2000), model_t=MultiTaskLassoCV(max_iter=2000), cv=3\\n\",\n    \")\\n\",\n    \"# fit treatment_0 on total revenue from new dataset\\n\",\n    \"adjsurr_est.fit(\\n\",\n    \"    sindex_adj, panelTnew[:, 0], X=panelXnew[:, 0, :1], W=panelXnew[:, 0, 1:]\\n\",\n    \")\\n\",\n    \"# print treatment effect summary\\n\",\n    \"print(\\\"True Long-term Effect for each investment: \\\", true_longterm_effect)\\n\",\n    \"print(\\n\",\n    \"    \\\"Average treatment effect for each investment: \\\",\\n\",\n    \"    adjsurr_est.const_marginal_ate(panelXnew[:, 0, :1]),\\n\",\n    \")\\n\",\n    \"adjsurr_est.summary(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary table above, none of the coefficient for feature $X0$ is significant, that means there is no effect heterogeneity identified, which is consistent with the data generation process.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusions\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML to:\\n\",\n    \"\\n\",\n    \"* estimate treatment effects in settings when multiple treatments are assigned over time and treatments can have a causal effect on future outcomes\\n\",\n    \"* correct the bias coming from auto-correlation of the historical treatment policy\\n\",\n    \"* use Machine Learning to enable estimation with high-dimensional surrogates and controls\\n\",\n    \"* solve a complex problem using an unified pipeline with only a few lines of code\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Multi-investment Attribution at A Software Company - EconML + DoWhy.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Attribution.png\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"<h1 align=\\\"left\\\">Multi-investment Attribution: Distinguish the Effects of Multiple Outreach Efforts</h1>\\n\",\n    \"\\n\",\n    \"A startup that sells software would like to know whether its multiple outreach efforts were successful in attracting new customers or boosting consumption among existing customers. They would also like to distinguish the effects of several incentives on different kinds of customers. In other words, they would like to learn the **heterogeneous treatment effect** of each investment on customers' software usage. \\n\",\n    \"\\n\",\n    \"In an ideal world, the startup would run several randomized experiments where each customer would receive a random assortment of investments. However, this can be logistically prohibitive or strategically unsound: the startup might not have the resources to design such experiments or they might not want to risk losing out on big opportunities due to lack of incentives.\\n\",\n    \"\\n\",\n    \"In this customer scenario walkthrough, we show how tools from the [EconML](https://aka.ms/econml) and [DoWhy](https://github.com/py-why/dowhy) libraries can use historical investment data to learn the effects of multiple investments.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#Background)\\n\",\n    \"2. [Data](#Data)\\n\",\n    \"3. [Create Causal Model and Identify Causal Effect with DoWhy](#Create-Causal-Model-and-Identify-Causal-Effect-with-DoWhy)\\n\",\n    \"4. [Get Causal Effects with EconML](#Get-Causal-Effects-with-EconML)\\n\",\n    \"5. [Understand Treatment Effects with EconML](#Understand-Treatment-Effects-with-EconML)\\n\",\n    \"6. [Make Policy Decisions with EconML](#Make-Policy-Decisions-with-EconML)\\n\",\n    \"7. [Test Estimate Robustness with DoWhy](#Test-Estimate-Robustness-with-DoWhy)\\n\",\n    \"    1. [Add Random Common Cause](#Add-Random-Common-Cause)\\n\",\n    \"    2. [Add Unobserved Common Cause](#Add-Unobserved-Common-Cause)\\n\",\n    \"    3. [Replace Treatment with a Random (Placebo) Variable](#Replace-Treatment-with-a-Random-(Placebo)-Variable)\\n\",\n    \"    4. [Remove a Random Subset of the Data](#Remove-a-Random-Subset-of-the-Data)\\n\",\n    \"8. [Conclusions](#Conclusions)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://get.pxhere.com/photo/update-software-upgrade-laptop-computer-install-program-screen-system-repair-data-development-electronic-load-pc-process-progress-support-technical-load-1565823.jpg\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"In this scenario, a startup that sells software provides two types of incentives to its customers: technical support and discounts. A customer might be given one, both or none of these incentives. \\n\",\n    \"\\n\",\n    \"The startup has historical data on these two investments for 2,000 customers, as well as how much revenue these customers generated in the year after the investments were made. They would like to use this data to learn the optimal incentive policy for each existing or new customer in order to maximize the return on investment (ROI).\\n\",\n    \"\\n\",\n    \"The startup faces two challenges: 1) the dataset is biased because historically the larger customers received the most incentives and 2) the observed outcome combines effects from two different investments. Thus, they need a causal model that can accommodate multiple concurrent interventions. \\n\",\n    \"\\n\",\n    \"**Solution:** \\n\",\n    \"The EconML and DoWhy libraries complement each other in providing a complete solution. On one hand, the DoWhy library can help [build a causal model, identify the causal effect](#Create-Causal-Model-and-Identify-Causal-Effect-with-DoWhy) and [test causal assumptions](#Test-Estimate-Robustness-with-DoWhy). \\n\",\n    \"\\n\",\n    \"On the other hand, EconML's `Doubly Robust Learner` estimator can [jointly estimates the effects of multiple discrete treatments](#Get-Causal-Effects-with-EconML). The model uses flexible functions of observed customer features to filter out spurious correlations in existing data and deliver the causal effect of each intervention on revenue.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"Furthermore, EconML provides users tools to [understand causal effects](#Understand-Treatment-Effects-with-EconML) and [make causal policy decisions](#Make-Policy-Decisions-with-EconML).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"\\n\",\n    \"# Utilities\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"from networkx.drawing.nx_pydot import to_pydot\\n\",\n    \"from IPython.display import Image, display\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"from xgboost import XGBRegressor, XGBClassifier\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.dr import LinearDRLearner\\n\",\n    \"\\n\",\n    \"# DoWhy imports\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data\\n\",\n    \"\\n\",\n    \"The data* contains ~2,000 customers and is comprised of:\\n\",\n    \"\\n\",\n    \"* Customer features: details about the industry, size, revenue, and technology profile of each customer.\\n\",\n    \"* Interventions: information about which incentive was given to a customer.\\n\",\n    \"* Outcome: the amount of product the customer bought in the year after the incentives were given.\\n\",\n    \"\\n\",\n    \"Feature Name | Type | Details \\n\",\n    \":--- |:--- |:--- \\n\",\n    \"**Global Flag** | W | whether the customer has global offices\\n\",\n    \"**Major Flag** | W | whether the customer is a large consumer in their industry (as opposed to SMC - Small Medium Corporation - or SMB - Small Medium Business)\\n\",\n    \"**SMC Flag** | W | whether the customer is a Small Medium Corporation (SMC, as opposed to major and SMB)\\n\",\n    \"**Commercial Flag** | W | whether the customer's business is commercial (as opposed to public secor)\\n\",\n    \"**IT Spend** | W | \\\\\\\\$ spent on IT-related purchases \\n\",\n    \"**Employee Count** | W | number of employees\\n\",\n    \"**PC Count** | W | number of PCs used by the customer\\n\",\n    \"**Size** | X | customer's size given by their yearly total revenue \\n\",\n    \"**Tech Support** | T | whether the customer received tech support (binary)\\n\",\n    \"**Discount** | T | whether the customer was given a discount (binary)\\n\",\n    \"**Revenue** | Y | \\\\\\\\$ Revenue from customer given by the amount of software purchased\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the startup's customers, the data used in this scenario is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample multi-attribution data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/ROI/multi_attribution_sample.csv\\\"\\n\",\n    \"multi_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Global Flag</th>\\n\",\n       \"      <th>Major Flag</th>\\n\",\n       \"      <th>SMC Flag</th>\\n\",\n       \"      <th>Commercial Flag</th>\\n\",\n       \"      <th>IT Spend</th>\\n\",\n       \"      <th>Employee Count</th>\\n\",\n       \"      <th>PC Count</th>\\n\",\n       \"      <th>Size</th>\\n\",\n       \"      <th>Tech Support</th>\\n\",\n       \"      <th>Discount</th>\\n\",\n       \"      <th>Revenue</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>45537</td>\\n\",\n       \"      <td>26</td>\\n\",\n       \"      <td>26</td>\\n\",\n       \"      <td>152205</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>17688.36300</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>20842</td>\\n\",\n       \"      <td>107</td>\\n\",\n       \"      <td>70</td>\\n\",\n       \"      <td>159038</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>14981.43559</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>82171</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>264935</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>32917.13894</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>30288</td>\\n\",\n       \"      <td>40</td>\\n\",\n       \"      <td>39</td>\\n\",\n       \"      <td>77522</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>14773.76855</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>25930</td>\\n\",\n       \"      <td>37</td>\\n\",\n       \"      <td>43</td>\\n\",\n       \"      <td>91446</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>17098.69823</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   Global Flag  Major Flag  SMC Flag  Commercial Flag  IT Spend  \\\\\\n\",\n       \"0            1           0         1                0     45537   \\n\",\n       \"1            0           0         1                1     20842   \\n\",\n       \"2            0           0         0                1     82171   \\n\",\n       \"3            0           0         0                0     30288   \\n\",\n       \"4            0           0         1                0     25930   \\n\",\n       \"\\n\",\n       \"   Employee Count  PC Count    Size  Tech Support  Discount      Revenue  \\n\",\n       \"0              26        26  152205             0         1  17688.36300  \\n\",\n       \"1             107        70  159038             0         1  14981.43559  \\n\",\n       \"2              10         7  264935             1         1  32917.13894  \\n\",\n       \"3              40        39   77522             1         1  14773.76855  \\n\",\n       \"4              37        43   91446             1         1  17098.69823  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"multi_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"T_bin = multi_data[\\n\",\n    \"    [\\\"Tech Support\\\", \\\"Discount\\\"]\\n\",\n    \"]  # multiple interventions, or treatments\\n\",\n    \"Y = multi_data[\\\"Revenue\\\"]  # amount of product purchased, or outcome\\n\",\n    \"X = multi_data[[\\\"Size\\\"]]  # heterogeneity feature\\n\",\n    \"W = multi_data.drop(\\n\",\n    \"    columns=[\\\"Tech Support\\\", \\\"Discount\\\", \\\"Revenue\\\", \\\"Size\\\"]\\n\",\n    \")  # controls\\n\",\n    \"confounder_names = [\\\"Global Flag\\\", \\\"Major Flag\\\", \\\"SMC Flag\\\", \\\"Commercial Flag\\\",\\n\",\n    \"                    \\\"IT Spend\\\", \\\"Employee Count\\\", \\\"PC Count\\\"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We investigate below whether the number of investments given is correlated with the size of the customer. We note that the average customer size is larger for more incentives given. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Tech Support</th>\\n\",\n       \"      <th>Discount</th>\\n\",\n       \"      <th>Size</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>70943</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>96466</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>108978</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>171466</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   Tech Support  Discount    Size\\n\",\n       \"0             0         0   70943\\n\",\n       \"1             0         1   96466\\n\",\n       \"2             1         0  108978\\n\",\n       \"3             1         1  171466\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Average customer size per incentive combination\\n\",\n    \"multi_data[[\\\"Size\\\", \\\"Tech Support\\\", \\\"Discount\\\"]].groupby(\\n\",\n    \"    by=[\\\"Tech Support\\\", \\\"Discount\\\"], as_index=False\\n\",\n    \").mean().astype(int)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The data was generated using the following underlying treatment effect function:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\text{treatment_effect(Size)} = (5,000 + 2\\\\% \\\\cdot \\\\text{Size}) \\\\cdot I_\\\\text{Tech Support} + (5\\\\% \\\\cdot \\\\text{Size}) \\\\cdot I_\\\\text{Discount}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Therefore, the treatment effect depends on the customer's size as follows: tech support provides an consumption boost of \\\\$5,000 + 2\\\\% Size and a discount provides an consumption boost of 5\\\\% Size.**This is the relationship we seek to learn from the data.**\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function\\n\",\n    \"def TE_fn(X):\\n\",\n    \"    return np.hstack([5000 + 2 / 100 * X, 5 / 100 * X])\\n\",\n    \"true_TE = TE_fn(X)\\n\",\n    \"\\n\",\n    \"# Define true coefficients for the three treatments\\n\",\n    \"# The third coefficient is just the sum of the first two since we assume an additive effect\\n\",\n    \"true_coefs = [2 / 100, 5 / 100, 7 / 100]\\n\",\n    \"true_intercepts = [5000, 0, 5000]\\n\",\n    \"treatment_names = [\\\"Tech Support\\\", \\\"Discount\\\", \\\"Tech Support & Discount\\\"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Create Causal Model and Identify Causal Effect with DoWhy\\n\",\n    \"\\n\",\n    \"We define the causal assumptions of the multi-intervention setting with DoWhy. For example, we can include features we believe influence both the treatments* and the outcome (`common_causes`) and features we think will influence the heterogeneity of the effect (`effect_modifiers`). With these assumptions defined, DoWhy can identify the causal effect for us.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"*The `DoWhy` and `EconML` estimators require multiple binary treatments to be given as a list of discrete treatments $T$ that correspond to different types of interventions. Thus, we first map the binary interventions tech support and discount into one categorical variable:*\\n\",\n    \"\\n\",\n    \"Tech support| Discount| Treatment encoding| Details\\n\",\n    \":--- |:--- |:--- |:---\\n\",\n    \"0 | 0 | 0 | no incentive\\n\",\n    \"1 | 0 | 1 | tech support only\\n\",\n    \"0 | 1 | 2 | discount only\\n\",\n    \"1 | 1 | 3 | both incentives\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Transform T to one-dimensional array with consecutive integer encoding\\n\",\n    \"def treat_map(t):\\n\",\n    \"    return np.dot(t, 2 ** np.arange(t.shape[0]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"T = np.apply_along_axis(treat_map, 1, T_bin).astype(int)\\n\",\n    \"multi_data[\\\"discrete_T\\\"] = T\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# initiate an EconML cate estimator\\n\",\n    \"est = LinearDRLearner(\\n\",\n    \"    model_regression=XGBRegressor(learning_rate=0.1, max_depth=3),\\n\",\n    \"    model_propensity=XGBClassifier(learning_rate=0.1, max_depth=3, objective=\\\"multi:softprob\\\"),\\n\",\n    \"    random_state=1,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_model:Causal Graph not provided. DoWhy will construct a graph based on data inputs.\\n\",\n      \"INFO:dowhy.causal_graph:If this is observed data (not from a randomized experiment), there might always be missing confounders. Adding a node named \\\"Unobserved Confounders\\\" to reflect this.\\n\",\n      \"INFO:dowhy.causal_model:Model to find the causal effect of treatment ['discrete_T'] on outcome ['Revenue']\\n\",\n      \"WARNING:dowhy.causal_identifier:If this is observed data (not from a randomized experiment), there might always be missing confounders. Causal effect cannot be identified perfectly.\\n\",\n      \"INFO:dowhy.causal_identifier:Continuing by ignoring these unobserved confounders because proceed_when_unidentifiable flag is True.\\n\",\n      \"INFO:dowhy.causal_identifier:Instrumental variables for treatment and outcome:[]\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Major Flag+IT Spend+SMC Flag+Size+PC Count+Global Flag+Employee Count+Commercial Flag | Size\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# fit through dowhy\\n\",\n    \"test_customers = X.iloc[:1000].values\\n\",\n    \"est_dw = est.dowhy.fit(Y, T, X=X, W=W,\\n\",\n    \"                       outcome_names=[\\\"Revenue\\\"], treatment_names=[\\\"discrete_T\\\"], feature_names=[\\\"Size\\\"],\\n\",\n    \"                       confounder_names=confounder_names, target_units=test_customers)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\\"dot\\\" with args ['-Tpng', 'C:\\\\\\\\Users\\\\\\\\mehei\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\tmpz73o722o'] returned code: 1\\n\",\n      \"\\n\",\n      \"stdout, stderr:\\n\",\n      \" b''\\n\",\n      \"b''\\n\",\n      \"\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_graph:Warning: Pygraphviz cannot be loaded. Check that graphviz and pygraphviz are installed.\\n\",\n      \"INFO:dowhy.causal_graph:Using Matplotlib for plotting\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualize causal graph\\n\",\n    \"try:\\n\",\n    \"    # Try pretty printing the graph. Requires pydot and pygraphviz\\n\",\n    \"    display(\\n\",\n    \"        Image(to_pydot(est_dw._graph._graph).create_png())\\n\",\n    \"    )\\n\",\n    \"except Exception:\\n\",\n    \"    # Fall back on default graph view\\n\",\n    \"    est_dw.view_model(layout=None)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"### Estimand : 1\\n\",\n      \"Estimand name: backdoor1 (Default)\\n\",\n      \"Estimand expression:\\n\",\n      \"      d                                                                       \\n\",\n      \"─────────────(Expectation(Revenue|Employee Count,Global Flag,IT Spend,Commerci\\n\",\n      \"d[discrete_T]                                                                 \\n\",\n      \"\\n\",\n      \"                                           \\n\",\n      \"al Flag,PC Count,SMC Flag,Size,Major Flag))\\n\",\n      \"                                           \\n\",\n      \"Estimand assumption 1, Unconfoundedness: If U→{discrete_T} and U→Revenue then P(Revenue|discrete_T,Employee Count,Global Flag,IT Spend,Commercial Flag,PC Count,SMC Flag,Size,Major Flag,U) = P(Revenue|discrete_T,Employee Count,Global Flag,IT Spend,Commercial Flag,PC Count,SMC Flag,Size,Major Flag)\\n\",\n      \"\\n\",\n      \"### Estimand : 2\\n\",\n      \"Estimand name: iv\\n\",\n      \"No such variable found!\\n\",\n      \"\\n\",\n      \"### Estimand : 3\\n\",\n      \"Estimand name: frontdoor\\n\",\n      \"No such variable found!\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"identified_estimand = est_dw.identified_estimand_\\n\",\n    \"print(identified_estimand)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Get Causal Effects with EconML\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To get causal effects, we use EconML's `LinearDRLearner`* estimator. The estimator takes as input the outcome of interest $Y$ (amount of product purchased), a discrete treatment $T$ (interventions given), heterogeneity features $X$ (here, customer's size) and controls $W$ (all other customer features).\\n\",\n    \"\\n\",\n    \"The LinearDRLearner also requires two auxiliary models to model the relationships $T\\\\sim (W, X)$ (`model_propensity`) and $Y \\\\sim (W, X)$(`model_regression`). These can be generic, flexible classification and regression models, respectively.  \\n\",\n    \"\\n\",\n    \"**This estimator assumes a linear relationship between the treatment effect and a transformation of the features $X$ (e.g. a polynomial basis expansion). For more generic forms of the treatment effect, see the `DRLearner` estimator.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"*** Causal Estimate ***\\n\",\n      \"\\n\",\n      \"## Identified estimand\\n\",\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"## Realized estimand\\n\",\n      \"b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\",\n      \"Target units: \\n\",\n      \"\\n\",\n      \"## Estimate\\n\",\n      \"Mean value: 7640.913924714072\\n\",\n      \"Effect estimates: [ 8437.71899247  8577.15928753 10738.18796098 ...  5575.01973432\\n\",\n      \"  6148.71869743  8451.26916896]\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lineardml_estimate = est_dw.estimate_\\n\",\n    \"print(lineardml_estimate)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"When training the model, `DoWhy` automatically calculates the average treatment effect (ATE) on a test sample. In the case above, we asked that `DoWhy` calculate the ATE for $T=1$ which corresponds to a customer getting tech support only. Let's see how this compares to the true ATE:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE on test data:  7275.564040000001\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"true_customer_TE = TE_fn(test_customers)\\n\",\n    \"print(\\\"True ATE on test data: \\\", true_customer_TE[:, 0].mean())\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We can see that the two values are close which is a good starting point for our algorithm. In a future section, we see how the calculated heterogeneous treatment effects compare with the true ones. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Understand Treatment Effects with EconML\\n\",\n    \"\\n\",\n    \"We can obtain a summary of the coefficient values as well as confidence intervals by calling the `summary` function on the fitted model for each treatment.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Tech Support\\n\",\n      \"True treatment effect: 5000 + 0.02*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.02</td>       <td>0.012</td> <td>1.722</td>  <td>0.085</td>   <td>0.001</td>    <td>0.04</td>  \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>    <td>5331.688</td>    <td>847.626</td> <td>6.29</td>    <td>0.0</td>  <td>3937.468</td> <td>6725.908</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size           0.02  0.012 1.722  0.085    0.001     0.04\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate  stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept       5331.688 847.626  6.29    0.0 3937.468 6725.908\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Discount\\n\",\n      \"True treatment effect: 0 + 0.05*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.052</td>      <td>0.012</td> <td>4.364</td>   <td>0.0</td>    <td>0.032</td>    <td>0.071</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>349.579</td>    <td>850.063</td> <td>0.411</td>  <td>0.681</td> <td>-1048.65</td> <td>1747.809</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size          0.052  0.012 4.364    0.0    0.032    0.071\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate  stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept        349.579 850.063 0.411  0.681 -1048.65 1747.809\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Tech Support & Discount\\n\",\n      \"True treatment effect: 5000 + 0.07*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.073</td>      <td>0.012</td> <td>6.271</td>   <td>0.0</td>    <td>0.054</td>    <td>0.093</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>    <td>4909.669</td>    <td>851.759</td> <td>5.764</td>   <td>0.0</td>   <td>3508.65</td> <td>6310.687</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size          0.073  0.012 6.271    0.0    0.054    0.093\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate  stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept       4909.669 851.759 5.764    0.0  3508.65 6310.687\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for i in range(est_dw._d_t[0]):\\n\",\n    \"    print(f\\\"Investment: {treatment_names[i]}\\\")\\n\",\n    \"    print(f\\\"True treatment effect: {true_intercepts[i]} + {true_coefs[i]}*Size\\\")\\n\",\n    \"    display(est_dw.summary(T=i + 1, feature_names=[\\\"Size\\\"]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary panels, we see that the learned coefficients/intercepts are close to the true coefficients/intercepts and the p-values are small for most of these. \\n\",\n    \"\\n\",\n    \"We further use the `coef_, coef__interval` and the `intercept_, intercept__interval` methods to obtain the learned coefficient values and build confidence intervals. We compare the true and the learned coefficients through the plots below.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Compare learned coefficients with true model coefficients\\n\",\n    \"# Aggregate data\\n\",\n    \"coef_indices = np.arange(est_dw._d_t[0])\\n\",\n    \"coefs = np.hstack([est_dw.coef_(T=i) for i in 1 + coef_indices])\\n\",\n    \"intercepts = np.hstack([est_dw.intercept_(T=i) for i in 1 + coef_indices])\\n\",\n    \"\\n\",\n    \"# Calculate coefficient error bars for 95% confidence interval\\n\",\n    \"coef_error = np.hstack([est_dw.coef__interval(T=i) for i in 1 + coef_indices])\\n\",\n    \"coef_error[0, :] = coefs - coef_error[0, :]\\n\",\n    \"coef_error[1, :] = coef_error[1, :] - coefs\\n\",\n    \"\\n\",\n    \"# Calculate intercept error bars for 95% confidence interval\\n\",\n    \"intercept_error = np.vstack(\\n\",\n    \"    [est_dw.intercept__interval(T=i) for i in 1 + coef_indices]\\n\",\n    \").T\\n\",\n    \"intercept_error[0, :] = intercepts - intercept_error[0, :]\\n\",\n    \"intercept_error[1, :] = intercept_error[1, :] - intercepts\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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EZGYpCRIREREYpKSIBEREYlJSoJEREQkJkWdBJnZIDNbaWarzezOYvabmY0P9i82s5PC9t1qZllmttTMXjUzXSdBREREakRUSZCZxQNPAoOBNOAKM0srUm0w0Cl4jASeDtq2A24G+rh7OhAPDK9Q9CIiUmeF36S0thg/fnyLa6655tjachypmGhHgvoCq919jbsfBF4DhhSpMwR42UM+B5qZ2THBvgSggZklAA2BTRWIXUREJGKHDh0qu5LElGiToHbA+rDnG4KyMuu4+0bgEWAdsBnY5e7/iPL8IiISw7Kysuqdfvrpnbp3796td+/eXRYsWFAf4C9/+UvTnj17du3WrVvaKaec0nn9+vUJALfddlvbK664IvXUU0/tdMkllxx32223tb300ks79O3bt0tKSkqP+++///tbXDz11FPNe/To0a1r165pV155ZWpeXuieq48//niLDh06pJ988sldPvvss8ZFY8rPz6ddu3Y9tm/fHl9Yduyxx6avX78+oaS4wg0dOrTDCy+88P2tN8JHwH73u98lp6end+vcuXParbfe2hZg9+7dcRkZGR27dOmS1qlTp+6TJ08+uugxJTLRXizRiikresnpYuuY2dGERomOA7KBv5rZVe7+yg9OYjaS0FQaycnJZGZmRhlmSE5OTrnbipRF/UuqSnZ2Lvn5+epfxbjuuutSJ02atLZHjx4HPvroo0Y33HDDsZ9//vmqc845J2f48OEr4uLiePTRR1uOGzeuzeTJkzcALF68uOGcOXNWNG7c2G+77ba2q1evrv/ZZ5+tzM7Oju/WrVv6r3/9621ZWVn13nzzzeZz585dUa9ePb/qqquOfeaZZ1pceOGFux988MG28+bNW968efP8U045pUt6evq+8Jji4+P5yU9+kj1lypRmY8aM+e6jjz5qlJKScrB9+/Z5pcVVlrfeeuuo1atX11+8ePFyd+fss8/u+P777zfeunVrQps2bQ5lZmauBvjuu+/iyzqWFC/aJGgD0D7seQo/nNIqqc7ZwNfuvg3AzN4CTgF+kAS5+yRgEoRum1HeWxPotgZSldS/pKo8vTJ02wz1r8Pt2rUrbsGCBY0vvfTS4wvLDh48aABff/110sUXX5yybdu2xIMHD8a1b9/+QGGdQYMGZYff1f0nP/lJdoMGDbxBgwZ5zZs3P7Rhw4aEGTNmNFm6dGnDXr16dQPYv39/XOvWrfM+/vjjRv3799/Ttm3bPIBLLrlkx6pVq37wpZ4rr7xyx7hx49qOGTPmuylTpjQfOnTojrLiKsuMGTOO+vjjj49KS0tLA9i3b1/cihUr6g8cOHDPXXfd1f6GG25oN2TIkF2DBg0q9v5mUrZop8O+ADqZ2XFmlkRoYfO0InWmAdcE3xLrT2jaazOhabD+ZtbQzAwYCCyvYPwiIhIj8vPzadKkSd6KFSuWFT7WrFmTBTB69Ohjb7zxxm9XrVq1bMKECWsPHDjw/e+3Ro0aHXZz13r16n2fEMXHx5OXl2fubpdeeul3hcf95ptvlj766KObAEK/sko3cODAvWvXrq23adOmhBkzZjQbMWLEzrLiKpSQkOD5+fkAFBQUcOjQIQNwd2655ZbNhTGtW7du6a233rq9Z8+eB+bPn7+sR48euXfddVe722+//Ziix5TIRJUEuXseMBqYSSiBecPds8zsejO7Pqj2HrAGWA1MBm4M2s4B3gTmA0uCc0+qjBchIiI1b8iET7oMmfBJl6o6fvPmzQtSUlIOPv/880dDKGGYPXt2A4A9e/bEH3vssYcAXnzxxRbRHnvQoEG7p0+ffvTGjRsTALZu3Rq/atWqpDPOOGPv559/3mTLli3xBw4csLfffrvY9TdxcXEMHjw4+8Ybb2zfsWPH3DZt2uRHGldqaurBefPmNQSYMmVKs7y8PAMYPHjw7j//+c8td+3aFQfw9ddfJ27cuDHhm2++SWzSpEnBjTfeuOOWW27ZunDhwobRvl4JifoGqu7+HqFEJ7zsmbBtB35ZQtvfA7+P9pwiIhJ79u/fH5ecnNyz8PkNN9yw9dVXX13z3//936kPPfTQMXl5efbTn/50x4ABA3LvuuuuTVdcccXxycnJB/v06bN33bp19aI5V+/evffffffdGwcOHNi5oKCAxMREHz9+/LqBAwfuveOOOzb179+/W6tWrQ717NlzX35+frFDQyNGjNhx5plndhs/fvw3hWWRxHXTTTdtu+CCCzr26NGj2xlnnLG7QYMGBQCXXHLJ7qysrPonn3xyV4CGDRsWTJky5esVK1bUGzt2bEpcXBwJCQn+1FNPrY3mtcp/WChnqb369Onjc+fOLVdbrdmQqqT+JVVh6oKN/ObNxRzML6Bdswb8+twuXHxi0S/hls3M5rl7n/LGsWjRom969eq1PdL6r3y+tvm9f8/qcCjfrXWTegdvHthp41X9U3VXeakVFi1a1LJXr14dipbrthkiIrXE1AUbGfvWEg7mh5awbMzOZexbS5i6YGMNR1a6Vz5f2/y+6ctSD+W7AXy750DSfdOXpb7y+drmNR2bSGmUBImI1BIPz1xJ7qH8w8pyD+Xz8MyVNRRRZMZ/+GW7A3kFh/0+OZBXEDf+wy+jH8ISqUZKgkREaolN2blRldcW2/YcSIqmvLqUdNuN++67r3WnTp26d+zYsfu4ceO+v1ji1q1b40855ZROqamp6aecckqnbdu2xQP84x//aNS5c+e09PT0bkuXLq0HsH379vjTTjutU0FBQXGnqDTPP//80T/60Y+69+vXr/PHH3/c8Oc//3n74uq1a9eux+bNm6Ne51tRl19+eeq8efNKvQ/on//852Zl1akM5bkViZIgEZFaom2zBlwU9wmfJN3MmnpX8knSzVwU9wltmzWo6dBK1apJvYPRlNekL774ov7LL7/cav78+cuXL1+eNWPGjGZLliypB/D73//+mIyMjD1r165dmpGRseeee+5pA/DII4+0+dvf/vbVfffdt/Hxxx9vBTB27Nhjxo4duzkurmp/jb7wwgstH3/88XVz5sxZdcYZZ+x78cUX15fdqvq8/vrra3v37r2/tDpTp05ttnjx4qg6cXXd4kRJkIhILfFY2pc8lPgsKXHbiTNIidvOQ4nP8ljalzUdWqluHthpY72EuMOvxZMQV3DzwE4VWsx09tlnH9+9e/duHTt27P7II4+0LCxv2LDhiTfddFO7Ll26pPXq1atr4a0oVqxYkXTCCSd0TU9P7zZmzJi2xR1zyZIlDU466aScJk2aFCQmJnLqqafuef3115sBzJgxo9moUaO+Axg1atR377///tEAiYmJvm/fvri9e/fGJSYmelZWVr3NmzcnnX/++SVepHDWrFkNTzzxxK5dunRJ69GjR7edO3fG7du3z4YNG9ahc+fOad26dUv7+9//3gRCIxg/+clPjj/99NM7paampl9//fUpALfffvsx8+bNa3zTTTeljho1KmX69OlNfvzjH3cE2LJlS/ypp57aqVu3bmlXXnllaviXnEq6/UdJ79v69esTzjnnnOO7dOmS1qVLl7QPPvigUWnHCde3b98uH3/8ccOSjv/BBx80+uc//9ns7rvvTunatWtaVlZWvZJufTJ06NAO1113XUq/fv06X3/99e0rciuSSCkJEimHyyfO5o9zavcUhRx5Tv7qCRrY4YMnDewgJ3/1RA1FFJmr+qfu+N0FaWsT480BWjepd/B3F6Strei3w6ZMmfJNVlbW8oULFy6bOHFi8pYtW+IBcnNz4wYMGJCzcuXKZQMGDMh54oknWgHceOONx1533XXbli5durxNmzbFDiWccMIJuXPmzGmyZcuW+D179sR98MEHTdevX58E8N133yWkpqYeAkhNTT20Y8eOBIC77rpr88iRI1OfeOKJ1r/61a++veOOO9r98Y9/LDHB279/v40YMeL4xx57bN3KlSuXzZo1a2Xjxo0LHnroodYAq1atWvaXv/xlzciRIzvs27fPAJYtW9Zw6tSpa5YvX541bdq0o1evXp34yCOPbE5PT9/38ssvr5k4ceJht9q488472w4YMCBn+fLlyy666KLszZs3JwHMnz+/fuHtP1asWLEsLi7On3nmmRalvW/XX3/9saeffvqelStXLsvKylp20kkn7S/tOCUp7vjnnHPO3rPPPjv7/vvv37BixYpl3bt3P3DdddelPvXUU+uysrKWP/zwwxtuuOGG76ewvvrqq/qffvrpqueee2594a1IAIreimThwoUrli9fvmzYsGE7xo0b16a0uEpT7fOHIiJSgl0l3FKqpPJa5Kr+qTv+Ond9K4B3Rp9WKSu5H3rooeR33323GcCWLVsSs7Ky6rdp02ZvYmKiDx8+fBdA79699/7zn/88CmD+/PmN33///a8gNJJz3333pRQ95kknnbR/zJgxW84666zODRs2LEhLS9uXkFD6r8JTTjkld9GiRSsA3n///cZt2rQ56O6cf/75P0pISPAJEyasb9++/ffDJIsXL67funXrQ2eeeeY+CF3kEeCzzz5rfNNNN30LcOKJJ+5v27btwSVLltQHOO2003a3aNEiH6Bjx477v/rqq3odO3YscU7o888/b/LWW2+tBhg+fPiuUaNG5QOUdPsPCI1oFfe+ffbZZ03efPPNrwESEhJo0aJF/sSJE5uXdJySlHT8cKXd+gTgkksu2Vn471EVtyIpSkmQiEht0TQFdhWz5KPpD36X10qVlfwATJ8+vcmsWbOazJ07d0WTJk0K+vbt2yU3NzcOQreZKFyLk5CQQOEVlgHi4uLKvPjdrbfe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\",\n      \"text/plain\": [\n       \"<Figure size 432x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot coefficients\\n\",\n    \"plt.figure(figsize=(6, 5))\\n\",\n    \"ax1 = plt.subplot(2, 1, 1)\\n\",\n    \"plt.errorbar(\\n\",\n    \"    coef_indices,\\n\",\n    \"    coefs,\\n\",\n    \"    coef_error,\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    label=\\\"Learned values\\\\nand 95% confidence interval\\\",\\n\",\n    \")\\n\",\n    \"plt.scatter(coef_indices, true_coefs, color=\\\"C1\\\", label=\\\"True values\\\", zorder=3)\\n\",\n    \"plt.xticks(coef_indices, treatment_names)\\n\",\n    \"plt.setp(ax1.get_xticklabels(), visible=False)\\n\",\n    \"plt.title(\\\"Coefficients\\\")\\n\",\n    \"plt.legend(loc=(1.05, 0.65))\\n\",\n    \"plt.grid()\\n\",\n    \"\\n\",\n    \"# Plot intercepts\\n\",\n    \"plt.subplot(2, 1, 2)\\n\",\n    \"plt.errorbar(coef_indices, intercepts, intercept_error, fmt=\\\"o\\\")\\n\",\n    \"plt.scatter(coef_indices, true_intercepts, color=\\\"C1\\\", zorder=3)\\n\",\n    \"plt.xticks(coef_indices, treatment_names)\\n\",\n    \"plt.title(\\\"Intercepts\\\")\\n\",\n    \"plt.grid()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Make Policy Decisions with EconML\\n\",\n    \"\\n\",\n    \"Investments such as tech support and discounts come with an associated cost. Thus, we would like to know what incentives to give to each customer to maximize the profit from their increased engagement. This is the **treatment policy**.\\n\",\n    \"\\n\",\n    \"In this scenario, we define a cost function as follows:\\n\",\n    \"* The cost of `tech support` scales with the number of PCs a customer has. You can imagine that if the software product needs tech support to be installed on each machine, there is a cost (\\\\\\\\$100 here) per machine.\\n\",\n    \"* The cost of `discount` is a fixed \\\\\\\\$7,000. Think of this as giving the customer the first \\\\\\\\$7,000 worth of product for free.\\n\",\n    \"* The cost of `tech support` and `discount` is the sum of the cost of each of these. Note that this might not be the case in every business application: it is possible that managing multiple incentive programs can add overhead. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define cost function\\n\",\n    \"def cost_fn(multi_data):\\n\",\n    \"    t1_cost = multi_data[[\\\"PC Count\\\"]].values * 100\\n\",\n    \"    t2_cost = np.ones((multi_data.shape[0], 1)) * 7000\\n\",\n    \"    return np.hstack([t1_cost, t2_cost, t1_cost + t2_cost])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the model's `const_marginal_effect` method to find the counterfactual treatment effect for each possible treatment. We then subtract the treatment cost and choose the treatment which the highest return. That is the recommended policy.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get roi for each customer and possible treatment\\n\",\n    \"potential_roi = est_dw.const_marginal_effect(X=X.values) - cost_fn(multi_data)\\n\",\n    \"# Add a column of 0s for no treatment\\n\",\n    \"potential_roi = np.hstack([np.zeros(X.shape), potential_roi])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"all_treatments = np.array([\\\"None\\\"] + treatment_names)\\n\",\n    \"recommended_T = np.argmax(potential_roi, axis=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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HjxY5uXlSSmlnDRpklyyZImUUkpA/vTTT1JKKV955RX59ttvF1uPI//4xz/k7NmzpZRS7tmzRwYEBMjo6GjZuHFjGRcXJ/Pz82Xfvn3lmjVrpJRSNm3aVMbHxxe6Tr/88ou88847ZWZmppRSysTERCmllH369JH79++XUkr52muvyQULFlzX/aguinvugHBZjW1/dVss84BXAUebs6GUMsam1GKABrb0RhSOrR5tSyuEEGKiECJcCBEeHx9fKeG8XA008DLi7+mCk5OaraOou4SFhREYGIiTkxMmk4moqCj0ej2DBg1i3bp1mM1m1q9fz4MPPsiePXs4evQoPXv2xGQysWTJEs6fP4+XlxdGo5EJEybwww8/4ObmVmJ9Q4cOBaBTp0506NCBgIAAXFxcaN68ORcvXmTz5s1ERERwxx13YDKZ2Lx5M2fPngXA2dmZwYMHA9ClSxeioqLKdY5z587FZDIxbdo0VqxYQXh4OH369MHf3x+9Xs+YMWP444+S45ht2rSJJ5980n5evr6+AEyYMIHFixdjsVhYsWIFjz32WLnkuZWptunGQojBQJyUMkII0ac8hxSTViQKmZTyM+AzgK5du6ooZQpFFeDicrUbWKfTYTabARg9ejQfffQRvr6+3HHHHXh6eiKlpH///nz77bdFytm7dy+bN2/mu+++Y+HChfz++++l1ufk5FSobicnJ8xmM1JKxo8fz3vvvVfkWIPBYJ9G6yhrWUydOpVp06bZt9euXVuu4wqQUhY7fffhhx/mzTff5J577qFLly74+flVqNxbkeq0WHoCQ4UQUcB3wD1CiGVArBAiAMD2HWfLHw00djg+ELhcjfIpFIoy6NOnD/v27ePzzz9n9OjRAHTv3p2dO3dy+vRpALKysjh58iQZGRmkpqZy//33M2/ePCIjIwHw9PQkPT29QvX269ePVatWERenNQ9JSUmcP1+6p/eK1tOtWze2bdtGQkICFouFb7/9lt69e5eYf8CAAXz55ZdkZWXZZQLNbcrAgQOZNGkSTz75ZLnrv5WpNsUipXxNShkopQxCG5T/XUr5OPATMN6WbTzwo+33T8AjQggXIUQzoBWwt7rkUygUZaPT6Rg8eDAbNmywdz/5+/vz1Vdf8eijjxIcHEz37t05fvw46enpDB48mODgYHr37s3cuXMBeOSRR5g9ezadO3cudVDd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Px4h12zFz92ZL5+4g463e9W6iJGpuam8testNl/cDMCWi1tYf3Y9n/b/9IYql/qu9ZUyqSBSStLz0rmUccmelpKbQgufFjjrnNHpdHTq1In8/Hz0ej3jx49nypQpODk5ER4eztdff82CBQtqTP53332X119/vcbqV1QNtavFqyZy8i18tPWMXakASAlzN50kNTu/1GMzc81k55lJzzXz2g+H7GMliZl5PPN1OElZZce6uNnIys+yK5UCTiSfUI4hawEWaSE+u3CoBqu0kpKbAoCrqyuRkZEcOXKE3377jV9++YU333wTgK5du9aoUuJTgJ4AACAASURBVAFNsShqP0qxoL3lZecVncaam2/Bai1+AWl6Tj4R55OYsiKSad8fIDYtl8fCCodKjkvPJTu/9jlTLMkBZL61dCWrqFrWn13PgFUDCF4SzIBVA4pdJ3QtUspi719xaQ0aNOCzzz5j4cKFSCkLBfPatm2bPRBY586d7a5R/v3vf9OpUydCQkKYMUNbDBsZGUn37t0JDg5m2LBhJCcnA9CnTx8KFjAnJCQQFBQEwFdffcXw4cMZNGgQrVq14tVXXwVgxowZZGdnYzKZGDNmTAWvluJmQikWwNVZz8S7mxdJn9CrOfXci18Bf+hSKg8v2s1vR2NZf+gKwz/eyaCOtxFY7+pYiZerHhd97bvErgZXOtXvVCitoVtDGro1rCGJ6h7rz65n1q5ZxGTGIJHEZMYwa9esMpWL3klf7GLUei71is3fvHlzrFYrcXGF11PNmTOHjz76iMjISLZv346rqysbNmxg7dq1/Pnnnxw4cMCuEMaNG8e//vUvDh48SKdOnewWUGlERkayYsUKDh06xIoVK7h48SLvv/++3aJavnx5mWUobl5qX6tXTbRq4MnXT4UR2sSHTo28+fDRzvRoUfx4QkpWHgs2nyqUZpWwYu9FBna4DQCDTvDBSBP1amG0SF+jL/P7zueRNo/QzLsZg5sPZul9S6nvpsY7bhTz980nx1I4jEOOJYf5+4r3i1WAEAIfow8B7gG46F1wN7jTzLtZqS51inPr1LNnT1566SUWLFhASkoKer2eTZs28eSTT9rd6Pv6+pKamkpKSgq9e/cGtAiSf/zxR5nn169fP7y9vTEajbRv357z58+XeYyi9lCdoYmNwB+Ai62eVVLKfwghfIEVQBAQBYySUibb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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"ax1 = sns.scatterplot(\\n\",\n    \"    x=X.values.flatten(),\\n\",\n    \"    y=multi_data[\\\"PC Count\\\"].values,\\n\",\n    \"    hue=all_treatments[recommended_T],\\n\",\n    \"    hue_order=all_treatments,\\n\",\n    \"    palette=\\\"Dark2\\\",\\n\",\n    \"    s=40,\\n\",\n    \")\\n\",\n    \"plt.legend(title=\\\"Investment Policy\\\")\\n\",\n    \"plt.setp(\\n\",\n    \"    ax1,\\n\",\n    \"    xlabel=\\\"Customer Size\\\",\\n\",\n    \"    ylabel=\\\"PC Count\\\",\\n\",\n    \"    title=\\\"Optimal Investment Policy by Customer\\\",\\n\",\n    \")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We compare different policies: the optimal policy we learned, the current policy, and the policy under which each customer is given all incentives. We note that the optimal policy has a much higher ROI than the alternatives. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"roi_current = potential_roi[np.arange(X.shape[1]), T].sum()\\n\",\n    \"roi_optimal = potential_roi[np.arange(X.shape[1]), recommended_T].sum()\\n\",\n    \"roi_bothT = potential_roi[:, -1].sum()\\n\",\n    \"all_rois = np.array([roi_optimal, roi_current, roi_bothT])\\n\",\n    \"Y_baseline = (Y - est_dw.effect(X=X.values, T1=T)).sum()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Policy</th>\\n\",\n       \"      <th>ROI ($)</th>\\n\",\n       \"      <th>ROI (% of baseline Y)</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>Optimal</td>\\n\",\n       \"      <td>9.107992e+06</td>\\n\",\n       \"      <td>59.7</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>Current</td>\\n\",\n       \"      <td>6.801621e+06</td>\\n\",\n       \"      <td>44.6</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>All Investments</td>\\n\",\n       \"      <td>9.601709e+05</td>\\n\",\n       \"      <td>6.3</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            Policy       ROI ($)  ROI (% of baseline Y)\\n\",\n       \"0          Optimal  9.107992e+06                   59.7\\n\",\n       \"1          Current  6.801621e+06                   44.6\\n\",\n       \"2  All Investments  9.601709e+05                    6.3\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pd.DataFrame(\\n\",\n    \"    {\\n\",\n    \"        \\\"Policy\\\": [\\\"Optimal\\\", \\\"Current\\\", \\\"All Investments\\\"],\\n\",\n    \"        \\\"ROI ($)\\\": all_rois,\\n\",\n    \"        \\\"ROI (% of baseline Y)\\\": np.round(all_rois / Y_baseline * 100, 1),\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Test Estimate Robustness with DoWhy\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Random Common Cause\\n\",\n    \"\\n\",\n    \"How robust are our estimates to adding an uncorrelated confounder? We use DoWhy to test this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag+w_random | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:11] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:11] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"Refute: Add a Random Common Cause\\n\",\n      \"Estimated effect:7640.913924714072\\n\",\n      \"New effect:7879.781233669907\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_random = est_dw.refute_estimate(method_name=\\\"random_common_cause\\\", num_simulations=10)\\n\",\n    \"print(res_random)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Unobserved Common Cause\\n\",\n    \"\\n\",\n    \"How robust are our estimates to unobserved confounders? Since we assume unconfoundedness, adding an unobserved confounder might bias the estimates. We use DoWhy to show this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:14] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:14] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"Refute: Add an Unobserved Common Cause\\n\",\n      \"Estimated effect:7640.913924714072\\n\",\n      \"New effect:3383.8433082673646\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_unobserved = est_dw.refute_estimate(method_name=\\\"add_unobserved_common_cause\\\",\\n\",\n    \"    confounders_effect_on_treatment=\\\"binary_flip\\\", confounders_effect_on_outcome=\\\"linear\\\",\\n\",\n    \"    effect_strength_on_treatment=0.3, effect_strength_on_outcome=0.5)\\n\",\n    \"print(res_unobserved)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Replace Treatment with a Random (Placebo) Variable\\n\",\n    \"\\n\",\n    \"What happens our estimates if we replace the treatment variable with noise? Ideally, the average effect would be close to $0$. We use DoWhy to investigate!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_refuters.placebo_treatment_refuter:Refutation over 5 simulated datasets of permute treatment\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~placebo+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:17] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:17] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~placebo+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:18] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:18] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~placebo+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:19] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:19] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~placebo+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:20] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:20] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~placebo+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:21] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:21] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_refuters.placebo_treatment_refuter:We assume a Normal Distribution as the sample has less than 100 examples.\\n\",\n      \"                 Note: The underlying distribution may not be Normal. We assume that it approaches normal with the increase in sample size.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a Placebo Treatment\\n\",\n      \"Estimated effect:7640.913924714072\\n\",\n      \"New effect:348.68481077875134\\n\",\n      \"p value:0.20213997629264546\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_placebo = est_dw.refute_estimate(\\n\",\n    \"    method_name=\\\"placebo_treatment_refuter\\\", placebo_type=\\\"permute\\\",\\n\",\n    \"    num_simulations=5\\n\",\n    \")\\n\",\n    \"print(res_placebo)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"While the \\\"New effect\\\" is not zero, the p-value is greater than 0.05 which means that we cannot reject the null hypothesis that $0$ is under the average treatment effect distribution. Increasing `num_simulations` should produce a \\\"New effect\\\" closer to $0$. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Remove a Random Subset of the Data\\n\",\n    \"\\n\",\n    \"Do we recover similar estimates on subsets of the data? This speaks to the ability of our chosen estimator to generalize well. We use DoWhy to investigate this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_refuters.data_subset_refuter:Refutation over 0.8 simulated datasets of size 1600.0 each\\n\",\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:24] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:25] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:25] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"INFO:dowhy.causal_estimator:INFO: Using EconML Estimator\\n\",\n      \"INFO:dowhy.causal_estimator:b: Revenue~discrete_T+Employee Count+Global Flag+IT Spend+Commercial Flag+PC Count+SMC Flag+Size+Major Flag | Size\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[15:47:25] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\",\n      \"[15:47:26] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:dowhy.causal_refuters.data_subset_refuter:We assume a Normal Distribution as the sample has less than 100 examples.\\n\",\n      \"                 Note: The underlying distribution may not be Normal. We assume that it approaches normal with the increase in sample size.\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a subset of data\\n\",\n      \"Estimated effect:7640.913924714072\\n\",\n      \"New effect:8079.900946029998\\n\",\n      \"p value:0.17820728594431112\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Removing a random subset of the data\\n\",\n    \"res_subset = est_dw.refute_estimate(\\n\",\n    \"    method_name=\\\"data_subset_refuter\\\", subset_fraction=0.8,\\n\",\n    \"    num_simulations=3)\\n\",\n    \"print(res_subset)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The \\\"New effect\\\" is close to the estimated effect from the original dataset and the p-value is greater than 0.05. Thus, we cannot reject the null hypothesis that the estimated effect is under the average treatment effect distribution. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusions\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using `EconML` and `DoWhy` to:\\n\",\n    \"\\n\",\n    \"* Learn the effects of multiple concurrent interventions\\n\",\n    \"* Interpret the resulting individual-level treatment effects\\n\",\n    \"* Build investment policies around the learned effects\\n\",\n    \"* Test causal assumptions and investigate the robustness of the estimates\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \\n\",\n    \"\\n\",\n    \"To learn more about what DoWhy can do for you, visit the [GitHub page](https://github.com/py-why/dowhy) or [documentation](https://www.pywhy.org/dowhy/).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"interpreter\": {\n   \"hash\": \"2e5c6628eef985e7fd2fa2aad22c988c5b8aa1d2648cf9c51c543a2a2637c546\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.6.6 64-bit\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Multi-investment Attribution at A Software Company.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Attribution.png\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"<h1 align=\\\"left\\\">Multi-investment Attribution: Distinguish the Effects of Multiple Outreach Efforts</h1>\\n\",\n    \"\\n\",\n    \"A startup that sells software would like to know whether its multiple outreach efforts were successful in attracting new customers or boosting consumption among existing customers. They would also like to distinguish the effects of several incentives on different kinds of customers. In other words, they would like to learn the **heterogeneous treatment effect** of each investment on customers' software usage. \\n\",\n    \"\\n\",\n    \"In an ideal world, the startup would run several randomized experiments where each customer would receive a random assortment of investments. However, this can be logistically prohibitive or strategically unsound: the startup might not have the resources to design such experiments or they might not want to risk losing out on big opportunities due to lack of incentives.\\n\",\n    \"\\n\",\n    \"In this customer scenario walkthrough, we show how tools from the [EconML](https://aka.ms/econml) library can use historical investment data to learn the effects of multiple investments.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#Background)\\n\",\n    \"2. [Data](#Data)\\n\",\n    \"3. [Get Causal Effects with EconML](#Get-Causal-Effects-with-EconML)\\n\",\n    \"4. [Understand Treatment Effects with EconML](#Understand-Treatment-Effects-with-EconML)\\n\",\n    \"5. [Make Policy Decisions with EconML](#Make-Policy-Decisions-with-EconML)\\n\",\n    \"6. [Conclusions](#Conclusions)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://get.pxhere.com/photo/update-software-upgrade-laptop-computer-install-program-screen-system-repair-data-development-electronic-load-pc-process-progress-support-technical-load-1565823.jpg\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"In this scenario, a startup that sells software provides two types of incentives to its customers: technical support and discounts. A customer might be given one, both or none of these incentives. \\n\",\n    \"\\n\",\n    \"The startup has historical data on these two investments for 2,000 customers, as well as how much revenue these customers generated in the year after the investments were made. They would like to use this data to learn the optimal incentive policy for each existing or new customer in order to maximize the return on investment (ROI).\\n\",\n    \"\\n\",\n    \"The startup faces two challenges: 1) the dataset is biased because historically the larger customers received the most incentives and 2) the observed outcome combines effects from two different investments. Thus, they need a causal model that can accommodate multiple concurrent interventions. \\n\",\n    \"\\n\",\n    \"**Solution:** EconML’s `Doubly Robust Learner` model jointly estimates the effects of multiple discrete treatments. The model uses flexible functions of observed customer features to filter out spurious correlations in existing data and deliver the causal effect of each intervention on revenue.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"# Utilities\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"from xgboost import XGBRegressor, XGBClassifier\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.dr import LinearDRLearner\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data\\n\",\n    \"\\n\",\n    \"The data* contains ~2,000 customers and is comprised of:\\n\",\n    \"\\n\",\n    \"* Customer features: details about the industry, size, revenue, and technology profile of each customer.\\n\",\n    \"* Interventions: information about which incentive was given to a customer.\\n\",\n    \"* Outcome: the amount of product the customer bought in the year after the incentives were given.\\n\",\n    \"\\n\",\n    \"Feature Name | Type | Details \\n\",\n    \":--- |:--- |:--- \\n\",\n    \"**Global Flag** | W | whether the customer has global offices\\n\",\n    \"**Major Flag** | W | whether the customer is a large consumer in their industry (as opposed to SMC - Small Medium Corporation - or SMB - Small Medium Business)\\n\",\n    \"**SMC Flag** | W | whether the customer is a Small Medium Corporation (SMC, as opposed to major and SMB)\\n\",\n    \"**Commercial Flag** | W | whether the customer's business is commercial (as opposed to public secor)\\n\",\n    \"**IT Spend** | W | \\\\\\\\$ spent on IT-related purchases \\n\",\n    \"**Employee Count** | W | number of employees\\n\",\n    \"**PC Count** | W | number of PCs used by the customer\\n\",\n    \"**Size** | X | customer's size given by their yearly total revenue \\n\",\n    \"**Tech Support** | T | whether the customer received tech support (binary)\\n\",\n    \"**Discount** | T | whether the customer was given a discount (binary)\\n\",\n    \"**Revenue** | Y | \\\\\\\\$ Revenue from customer given by the amount of software purchased\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the startup's customers, the data used in this scenario is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample multi-attribution data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/ROI/multi_attribution_sample.csv\\\"\\n\",\n    \"multi_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Global Flag</th>\\n\",\n       \"      <th>Major Flag</th>\\n\",\n       \"      <th>SMC Flag</th>\\n\",\n       \"      <th>Commercial Flag</th>\\n\",\n       \"      <th>IT Spend</th>\\n\",\n       \"      <th>Employee Count</th>\\n\",\n       \"      <th>PC Count</th>\\n\",\n       \"      <th>Size</th>\\n\",\n       \"      <th>Tech Support</th>\\n\",\n       \"      <th>Discount</th>\\n\",\n       \"      <th>Revenue</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>45537</td>\\n\",\n       \"      <td>26</td>\\n\",\n       \"      <td>26</td>\\n\",\n       \"      <td>152205</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>17688.36300</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>20842</td>\\n\",\n       \"      <td>107</td>\\n\",\n       \"      <td>70</td>\\n\",\n       \"      <td>159038</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>14981.43559</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>82171</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>264935</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>32917.13894</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>30288</td>\\n\",\n       \"      <td>40</td>\\n\",\n       \"      <td>39</td>\\n\",\n       \"      <td>77522</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>14773.76855</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>25930</td>\\n\",\n       \"      <td>37</td>\\n\",\n       \"      <td>43</td>\\n\",\n       \"      <td>91446</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>17098.69823</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   Global Flag  Major Flag  SMC Flag  Commercial Flag  IT Spend  \\\\\\n\",\n       \"0            1           0         1                0     45537   \\n\",\n       \"1            0           0         1                1     20842   \\n\",\n       \"2            0           0         0                1     82171   \\n\",\n       \"3            0           0         0                0     30288   \\n\",\n       \"4            0           0         1                0     25930   \\n\",\n       \"\\n\",\n       \"   Employee Count  PC Count    Size  Tech Support  Discount      Revenue  \\n\",\n       \"0              26        26  152205             0         1  17688.36300  \\n\",\n       \"1             107        70  159038             0         1  14981.43559  \\n\",\n       \"2              10         7  264935             1         1  32917.13894  \\n\",\n       \"3              40        39   77522             1         1  14773.76855  \\n\",\n       \"4              37        43   91446             1         1  17098.69823  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"multi_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"T_bin = multi_data[\\n\",\n    \"    [\\\"Tech Support\\\", \\\"Discount\\\"]\\n\",\n    \"]  # multiple interventions, or treatments\\n\",\n    \"Y = multi_data[\\\"Revenue\\\"]  # amount of product purchased, or outcome\\n\",\n    \"X = multi_data[[\\\"Size\\\"]]  # heterogeneity feature\\n\",\n    \"W = multi_data.drop(\\n\",\n    \"    columns=[\\\"Tech Support\\\", \\\"Discount\\\", \\\"Revenue\\\", \\\"Size\\\"]\\n\",\n    \")  # controls\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We investigate below whether the number of investments given is correlated with the size of the customer. We note that the average customer size is larger for more incentives given. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Tech Support</th>\\n\",\n       \"      <th>Discount</th>\\n\",\n       \"      <th>Size</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>70943</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>96466</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>108978</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>171466</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   Tech Support  Discount    Size\\n\",\n       \"0             0         0   70943\\n\",\n       \"1             0         1   96466\\n\",\n       \"2             1         0  108978\\n\",\n       \"3             1         1  171466\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Average customer size per incentive combination\\n\",\n    \"multi_data[[\\\"Size\\\", \\\"Tech Support\\\", \\\"Discount\\\"]].groupby(\\n\",\n    \"    by=[\\\"Tech Support\\\", \\\"Discount\\\"], as_index=False\\n\",\n    \").mean().astype(int)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The data was generated using the following underlying treatment effect function:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\text{treatment_effect(Size)} = (5,000 + 2\\\\% \\\\cdot \\\\text{Size}) \\\\cdot I_\\\\text{Tech Support} + (5\\\\% \\\\cdot \\\\text{Size}) \\\\cdot I_\\\\text{Discount}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Therefore, the treatment effect depends on the customer's size as follows: tech support provides an consumption boost of \\\\$5,000 + 2\\\\% Size and a discount provides an consumption boost of 5\\\\% Size.**This is the relationship we seek to learn from the data.**\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function\\n\",\n    \"def TE_fn(X):\\n\",\n    \"    return np.hstack([5000 + 2 / 100 * X, 5 / 100 * X])\\n\",\n    \"true_TE = TE_fn(X)\\n\",\n    \"\\n\",\n    \"# Define true coefficients for the three treatments\\n\",\n    \"# The third coefficient is just the sum of the first two since we assume an additive effect\\n\",\n    \"true_coefs = [2 / 100, 5 / 100, 7 / 100]\\n\",\n    \"true_intercepts = [5000, 0, 5000]\\n\",\n    \"treatment_names = [\\\"Tech Support\\\", \\\"Discount\\\", \\\"Tech Support & Discount\\\"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Get Causal Effects with EconML\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"To get causal effects, we use EconML's `LinearDRLearner`* estimator. This estimator requires a set of discrete treatments $T$ that corresponds to different types of interventions. Thus, we first map the binary interventions tech support and discount into one categorical variable:\\n\",\n    \"\\n\",\n    \"Tech support| Discount| Treatment encoding| Details\\n\",\n    \":--- |:--- |:--- |:---\\n\",\n    \"0 | 0 | 0 | no incentive\\n\",\n    \"1 | 0 | 1 | tech support only\\n\",\n    \"0 | 1 | 2 | discount only\\n\",\n    \"1 | 1 | 3 | both incentives\\n\",\n    \"\\n\",\n    \"The estimator takes as input the outcome of interest $Y$ (amount of product purchased), a discrete treatment $T$ (interventions given), heterogeneity features $X$ (here, customer's size) and controls $W$ (all other customer features).\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The LinearDRLearner also requires two auxiliary models to model the relationships $T\\\\sim (W, X)$ (`model_propensity`) and $Y \\\\sim (W, X)$(`model_regression`). These can be generic, flexible classification and regression models, respectively.  \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"**This estimator assumes a linear relationship between the treatment effect and a transformation of the features $X$ (e.g. a polynomial basis expansion). For more generic forms of the treatment effect, see the `DRLearner` estimator.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Transform T to one-dimensional array with consecutive integer encoding\\n\",\n    \"def treat_map(t):\\n\",\n    \"    return np.dot(t, 2 ** np.arange(t.shape[0]))\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"T = np.apply_along_axis(treat_map, 1, T_bin).astype(int)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.LinearDRLearner at 0x237737da668>\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Train EconML model with generic helper models\\n\",\n    \"model = LinearDRLearner(\\n\",\n    \"    model_regression=XGBRegressor(learning_rate=0.1, max_depth=3),\\n\",\n    \"    model_propensity=XGBClassifier(learning_rate=0.1, max_depth=3, objective=\\\"multi:softprob\\\"),\\n\",\n    \"    random_state=1,\\n\",\n    \")\\n\",\n    \"# Specify final stage inference type and fit model\\n\",\n    \"model.fit(Y=Y, T=T, X=X, W=W, inference=\\\"statsmodels\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Understand Treatment Effects with EconML\\n\",\n    \"\\n\",\n    \"We can obtain a summary of the coefficient values as well as confidence intervals by calling the `summary` function on the fitted model for each treatment.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Tech Support\\n\",\n      \"True treatment effect: 5000 + 0.02*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.021</td>      <td>0.012</td> <td>1.749</td>  <td>0.08</td>   <td>-0.002</td>    <td>0.044</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>    <td>5326.611</td>    <td>845.551</td>  <td>6.3</td>    <td>0.0</td>  <td>3669.361</td> <td>6983.861</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size          0.021  0.012 1.749   0.08   -0.002    0.044\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate  stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept       5326.611 845.551   6.3    0.0 3669.361 6983.861\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Discount\\n\",\n      \"True treatment effect: 0 + 0.05*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.052</td>      <td>0.012</td> <td>4.371</td>   <td>0.0</td>    <td>0.029</td>    <td>0.075</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th>  <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>358.699</td>    <td>848.771</td> <td>0.423</td>  <td>0.673</td> <td>-1304.861</td> <td>2022.258</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size          0.052  0.012 4.371    0.0    0.029    0.075\\n\",\n       \"                        CATE Intercept Results                       \\n\",\n       \"=====================================================================\\n\",\n       \"               point_estimate  stderr zstat pvalue  ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"cate_intercept        358.699 848.771 0.423  0.673 -1304.861 2022.258\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Investment: Tech Support & Discount\\n\",\n      \"True treatment effect: 5000 + 0.07*Size\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Size</th>      <td>0.074</td>      <td>0.012</td> <td>6.292</td>   <td>0.0</td>    <td>0.051</td>    <td>0.096</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>    <td>4899.208</td>    <td>851.54</td> <td>5.753</td>   <td>0.0</td>   <td>3230.22</td> <td>6568.196</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                   \\n\",\n       \"=========================================================\\n\",\n       \"     point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------\\n\",\n       \"Size          0.074  0.012 6.292    0.0    0.051    0.096\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept       4899.208 851.54 5.753    0.0  3230.22 6568.196\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for i in range(model._d_t[0]):\\n\",\n    \"    print(f\\\"Investment: {treatment_names[i]}\\\")\\n\",\n    \"    print(f\\\"True treatment effect: {true_intercepts[i]} + {true_coefs[i]}*Size\\\")\\n\",\n    \"    display(model.summary(T=i + 1))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary panels, we see that the learned coefficients/intercepts are close to the true coefficients/intercepts and the p-values are small for most of these. \\n\",\n    \"\\n\",\n    \"We further use the `coef_, coef__interval` and the `intercept_, intercept__interval` methods to obtain the learned coefficient values and build confidence intervals. We compare the true and the learned coefficients through the plots below.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Compare learned coefficients with true model coefficients\\n\",\n    \"# Aggregate data\\n\",\n    \"coef_indices = np.arange(model._d_t[0])\\n\",\n    \"coefs = np.hstack([model.coef_(T=i) for i in 1 + coef_indices])\\n\",\n    \"intercepts = np.hstack([model.intercept_(T=i) for i in 1 + coef_indices])\\n\",\n    \"\\n\",\n    \"# Calculate coefficient error bars for 95% confidence interval\\n\",\n    \"coef_error = np.hstack([model.coef__interval(T=i) for i in 1 + coef_indices])\\n\",\n    \"coef_error[0, :] = coefs - coef_error[0, :]\\n\",\n    \"coef_error[1, :] = coef_error[1, :] - coefs\\n\",\n    \"\\n\",\n    \"# Calculate intercept error bars for 95% confidence interval\\n\",\n    \"intercept_error = np.vstack(\\n\",\n    \"    [model.intercept__interval(T=i) for i in 1 + coef_indices]\\n\",\n    \").T\\n\",\n    \"intercept_error[0, :] = intercepts - intercept_error[0, :]\\n\",\n    \"intercept_error[1, :] = intercept_error[1, :] - intercepts\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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nIcffjizZ8+ee1euXFm7PN8LKR0lQSIiUjbn3Z1BXK0jT+/E1crnvLtLeguVUvnpT3+6c+fOnbEdO3bs9uSTT7Zo167dfoA+ffrsv//++zMGDhyYlJSUlHzBBRckbdy48XuXksXFxTFw4MBd8+fPbzhy5MhdAP3798/p3r37vg4dOnS/8sorT+nTp092Ufv+7W9/mzFkyJCOvXv37pKYmHiooHzatGkblyxZUi8pKSm5Q4cO3aZOndoc4JFHHmnRqVOnbklJScnx8fE+fPjwXRXzrkgkInp2WGXr27ev647RUl3p+JKKMvLZz8jKymLu3YNL1d7MFrt737LEsHz58q979eq1vcQNFs5owvzJrcnemkD9Fgc57+6M8p4PJFIay5cvb9arV6/2RW3TnCARESm706/boaRHjjc6HSYiIiJRSUmQiIiIRCUlQSIiIhKVlASJiIhIVFISJCIiIlFJSZCIiFRL4Q8prS6mTJnS9Kc//elJ1aUfKRslQSIiEhUOHTp07EoSVSJOgsxskJmlm9k6M7uniO21zOz1YPsCM2sflMeb2YtmtsLMVpvZhHKIX0REokhqamqtc845p1O3bt269unTp/PSpUtrA7zyyisNe/bs2aVr167JP/jBD5I2btwYB3D77be3uuKKK07u3bt3l6FDh558++23txoxYkT7fv36dW7Tpk2Phx566PAjLp5++ukmPXr06NqlS5fkUaNGtcvNDT1z9cknn2zavn377j169Oj66aef1i8cU15eHq1bt+6xffv22IKydu3add+4cWNccXGFGzZsWPsXXnjh8KM3wkfAfv3rXyd27969a1JSUvL48eNbAezevTtmwIABHTt37pzcqVOnbs8991zjwn1KyUSUBJlZLPAUMBhIBq42s+RC1a4Ddrp7R+BxYHJQPgKo5e49gD7A2IIESUREpCSuv/76dk8//fQ3qampqx999NFNN91000kAF154YfayZcvSVq9evWr48OE7Jk6c2LKgzdq1a2t/9NFH6f/4xz++Ali3bl3t+fPnr1m4cOHqxx57rNWBAwdsyZIltWfOnNlk0aJFaWlpaatiYmL8z3/+c9MNGzbET5o0qdWnn36atnDhwrQ1a9bUKRxTbGwsF110UdbLL7/cCODDDz+s17p164Nt27bNPVpcxzJr1qwT1q1bV/vLL79cvXr16lXLli2r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bmnduXPn5F69enUpeBRFWlpawqmnntolKSkp+dZbb21VVJ8rVqyoc9ppp2U3aNAgPz4+nrPOOmvPa6+91uhoccTHx/vevXtj9u7dGxMfH++pqam1MjIyEi699NI9xbWZP39+3dNOO61L586dk3v06NF1586dMfv27bPhw4e3T0pKSu7atWvyP/7xjwYQGsG46KKLOpxzzjmd2rVr1/3GG29sA3DnnXeeuHjx4vpjx45tP3bs2DZz5sxpcP7553cEyMzMjD3rrLM6dezYsdvIkSPbhV/kVNzjP4p73zZu3Bh34YUXdujcuXNy586dk+fNm1fvaP2E69evX+ePPvqobnH9z5s3r96//vWvRvfff3+bLl26JKemptYq7tEnw4YNaz9q1KiTevbs2eWmm25qU5ZHkZSUkiARkWri26zv3X7mqOXVxU/ObLfj15cmb4iPNQdo0aDWwV9fmryhrPOBXn755a9TU1NXL1u2bNWzzz6bmJmZGQuQk5MT079//+z09PRV/fv3z/7Tn/7UHODmm28+6frrr9+2Zs2aVSeeeGKRT0s99dRTc7744osGmZmZsXv27ImZN29ew40bNx4exZoxY0aLpKSk5BEjRrTftm1bLMB99923+Zprrjl58uTJLe+4446td999d+tJkyYVm+Dt37/fRo8e3eGJJ574Jj09fdX8+fPT69evnz958uQWZsaaNWtWvfLKK+vHjBnTft++fQawatWqum+99db61atXp86ePbvxunXr4h977LHN3bt33/fXv/51/bPPPrspfB/33HNPq/79+2evW7cu9cc//nHW5s2bEwCKe/zH0d63G2+88aRzzjlnT3p6+qrU1NRVvXv33n+0fopTVP8XXnjh3h/+8IdZDz300Ka0tLRV3bp1O1Dco08ANm/enLBkyZK06dOnb6qIR5EUpiRIRKSaaNWoDpfHfMzHCbeyvtYoPk64lctjPqZVo+89rqra+cmZ7XYkn3jC3l5tGmZ/cd8PV5THhOjJkycndu7cOblPnz5dMzMz41NTU2tDaGTmqquu2gXQp0+fvRs2bChIAOrfcMMNOwDGjh37XVF99u7de/9tt92WOXDgwKTzzz+/U7du3fYVnNIaP3781g0bNqxYvXr1qpYtWx66+eab2wL84Ac/yFm+fHnaggUL1qxZs6ZWYmLiIXfnRz/60SlDhgw5ufBIxJdfflm7RYsWh84777x9ELrJY3x8PJ9++mn9a6655juA0047bX+rVq0OrlixojbA2Wefvbtp06Z5devW9Y4dO+7/z3/+c9T7HH3++ecNfvGLX3wHcNVVV+064YQT8gDCH//RpUuX5I8//viE9evX1zra+/bpp582uOuuu7YBxMXF0bRp07yj9VOc4voPF/7oky5duiTffPPN7bZu3Xr4vNfQoUN3xsWF3s5Ro0btmDlzZhOAwo8iOeecczolJSUlT5kypWVaWlqp/4NoTpCISDXxRPJaui+eTh0LTaVpY9uZHD+dlcntgQuqNLaSKM87Rc+ZM6fB/PnzGyxatCitQYMG+f369euck5MTA6HHTMTEhL7Dx8XFUXCHZYCYmJhj3vxu/Pjx28ePH78dYNy4ca3btGlzEKBt27aHz/eMGzdu26WXXtopvF1+fj4PPfTQibNmzVp/ww03nPT4449vWrt2bcIjjzyS+Kc//alMp/4SEhLCH+XhBY/OiFTB4z+eeuqp78VztPctkn6KU5L+wx99UlQf9evXP3xadeDAgXuvu+66w48iefjhh7+F0KNIbrvttszRo0fvmjNnToOJEycWeeqzJDQSJCJSTZz+nz8dToAK1LGDnP6fP1VRRFUnKysrtmHDhnkNGjTIX7p0ae3ly5fXO1ab3r17Zz/33HNNAJ577rliT91kZGTEAaxduzbhnXfeaXT99dfvANiwYcPhEYnXXnutUefOnY84D/nUU081vfjii3clJibm5eTkxMTExHhsbCz79u074m9pz54992/dujV+/vz5dQF27twZc+jQIc4666zsl156qQnAl19+WWvz5s0JPXv2LPFk4XBnnnnmnoLHcLzxxhsn7N69OxZCj/+YM2dO44LXuGXLltg1a9Yc9Sq9s846a8+jjz7aHCA3N5fvvvsutjT9FKd+/fp5u3fvjoEjH30CocTys88+K3IkpyyPIikpJUEiItXFrk2Rlddgw4YN25Wbm2unnHJKt7vuuqt1r1699h6rzdNPP/3NtGnTWiQlJSVnZGQUe2nR5Zdf3qFDhw7dLr300o5PPPHEN82aNcsDuO2229okJSUlJyUlJc+fP/+Ep5566vADw/fs2RPz0ksvNb377ru3Adxxxx1bLrnkkk533HFH21tvvXVreP+1a9f2l19++T+33nrrSZ07d04eMGBA0r59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\",\n      \"text/plain\": [\n       \"<Figure size 432x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot coefficients\\n\",\n    \"plt.figure(figsize=(6, 5))\\n\",\n    \"ax1 = plt.subplot(2, 1, 1)\\n\",\n    \"plt.errorbar(\\n\",\n    \"    coef_indices,\\n\",\n    \"    coefs,\\n\",\n    \"    coef_error,\\n\",\n    \"    fmt=\\\"o\\\",\\n\",\n    \"    label=\\\"Learned values\\\\nand 95% confidence interval\\\",\\n\",\n    \")\\n\",\n    \"plt.scatter(coef_indices, true_coefs, color=\\\"C1\\\", label=\\\"True values\\\", zorder=3)\\n\",\n    \"plt.xticks(coef_indices, treatment_names)\\n\",\n    \"plt.setp(ax1.get_xticklabels(), visible=False)\\n\",\n    \"plt.title(\\\"Coefficients\\\")\\n\",\n    \"plt.legend(loc=(1.05, 0.65))\\n\",\n    \"plt.grid()\\n\",\n    \"\\n\",\n    \"# Plot intercepts\\n\",\n    \"plt.subplot(2, 1, 2)\\n\",\n    \"plt.errorbar(coef_indices, intercepts, intercept_error, fmt=\\\"o\\\")\\n\",\n    \"plt.scatter(coef_indices, true_intercepts, color=\\\"C1\\\", zorder=3)\\n\",\n    \"plt.xticks(coef_indices, treatment_names)\\n\",\n    \"plt.title(\\\"Intercepts\\\")\\n\",\n    \"plt.grid()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Make Policy Decisions with EconML\\n\",\n    \"\\n\",\n    \"Investments such as tech support and discounts come with an associated cost. Thus, we would like to know what incentives to give to each customer to maximize the profit from their increased engagement. This is the **treatment policy**.\\n\",\n    \"\\n\",\n    \"In this scenario, we define a cost function as follows:\\n\",\n    \"* The cost of `tech support` scales with the number of PCs a customer has. You can imagine that if the software product needs tech support to be installed on each machine, there is a cost (\\\\\\\\$100 here) per machine.\\n\",\n    \"* The cost of `discount` is a fixed \\\\\\\\$7,000. Think of this as giving the customer the first \\\\\\\\$7,000 worth of product for free.\\n\",\n    \"* The cost of `tech support` and `discount` is the sum of the cost of each of these. Note that this might not be the case in every business application: it is possible that managing multiple incentive programs can add overhead. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define cost function\\n\",\n    \"def cost_fn(multi_data):\\n\",\n    \"    t1_cost = multi_data[[\\\"PC Count\\\"]].values * 100\\n\",\n    \"    t2_cost = np.ones((multi_data.shape[0], 1)) * 7000\\n\",\n    \"    return np.hstack([t1_cost, t2_cost, t1_cost + t2_cost])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the model's `const_marginal_effect` method to find the counterfactual treatment effect for each possible treatment. We then subtract the treatment cost and choose the treatment which the highest return. That is the recommended policy.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Get roi for each customer and possible treatment\\n\",\n    \"potential_roi = model.const_marginal_effect(X=X.values) - cost_fn(multi_data)\\n\",\n    \"# Add a column of 0s for no treatment\\n\",\n    \"potential_roi = np.hstack([np.zeros((X.shape[0], 1)), potential_roi])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"all_treatments = np.array([\\\"None\\\"] + treatment_names)\\n\",\n    \"recommended_T = np.argmax(potential_roi, axis=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"ax1 = sns.scatterplot(\\n\",\n    \"    x=X.iloc[:, 0].values.flatten(),\\n\",\n    \"    y=multi_data[\\\"PC Count\\\"].values,\\n\",\n    \"    hue=all_treatments[recommended_T],\\n\",\n    \"    hue_order=all_treatments,\\n\",\n    \"    palette=\\\"Dark2\\\",\\n\",\n    \"    s=40,\\n\",\n    \")\\n\",\n    \"plt.legend(title=\\\"Investment Policy\\\")\\n\",\n    \"plt.setp(\\n\",\n    \"    ax1,\\n\",\n    \"    xlabel=\\\"Customer Size\\\",\\n\",\n    \"    ylabel=\\\"PC Count\\\",\\n\",\n    \"    title=\\\"Optimal Investment Policy by Customer\\\",\\n\",\n    \")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We compare different policies: the optimal policy we learned, the current policy, and the policy under which each customer is given all incentives. We note that the optimal policy has a much higher ROI than the alternatives. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"roi_current = potential_roi[np.arange(X.shape[0]), T].sum()\\n\",\n    \"roi_optimal = potential_roi[np.arange(X.shape[0]), recommended_T].sum()\\n\",\n    \"roi_bothT = potential_roi[:, -1].sum()\\n\",\n    \"all_rois = np.array([roi_optimal, roi_current, roi_bothT])\\n\",\n    \"Y_baseline = (Y - model.effect(X=X.values, T1=T)).sum()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Policy</th>\\n\",\n       \"      <th>ROI ($)</th>\\n\",\n       \"      <th>ROI (% of baseline Y)</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>Optimal</td>\\n\",\n       \"      <td>9.735966e+06</td>\\n\",\n       \"      <td>64.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>Current</td>\\n\",\n       \"      <td>2.535076e+06</td>\\n\",\n       \"      <td>16.7</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>All Investments</td>\\n\",\n       \"      <td>9.683787e+05</td>\\n\",\n       \"      <td>6.4</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            Policy       ROI ($)  ROI (% of baseline Y)\\n\",\n       \"0          Optimal  9.735966e+06                   64.0\\n\",\n       \"1          Current  2.535076e+06                   16.7\\n\",\n       \"2  All Investments  9.683787e+05                    6.4\"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pd.DataFrame(\\n\",\n    \"    {\\n\",\n    \"        \\\"Policy\\\": [\\\"Optimal\\\", \\\"Current\\\", \\\"All Investments\\\"],\\n\",\n    \"        \\\"ROI ($)\\\": all_rois,\\n\",\n    \"        \\\"ROI (% of baseline Y)\\\": np.round(all_rois / Y_baseline * 100, 1),\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance of policies based on ground truth\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"true_roi = np.zeros((X.shape[0], 4))\\n\",\n    \"true_roi[:, 1:3] = TE_fn(X.iloc[:, [0]])\\n\",\n    \"true_roi[:, 3] = np.sum(true_roi[:, 1:3], axis=1)\\n\",\n    \"true_roi[:, 1:] -= cost_fn(multi_data)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"roi_current = true_roi[np.arange(X.shape[0]), T].sum()\\n\",\n    \"roi_optimal = true_roi[np.arange(X.shape[0]), recommended_T].sum()\\n\",\n    \"roi_bothT = true_roi[:, -1].sum()\\n\",\n    \"all_rois = np.array([roi_optimal, roi_current, roi_bothT])\\n\",\n    \"Y_baseline = (Y - model.effect(X=X.values, T1=T)).sum()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Policy</th>\\n\",\n       \"      <th>ROI ($)</th>\\n\",\n       \"      <th>ROI (% of baseline Y)</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>Optimal</td>\\n\",\n       \"      <td>8920500.30</td>\\n\",\n       \"      <td>58.6</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>Current</td>\\n\",\n       \"      <td>1829938.41</td>\\n\",\n       \"      <td>12.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>All Investments</td>\\n\",\n       \"      <td>373176.80</td>\\n\",\n       \"      <td>2.5</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            Policy     ROI ($)  ROI (% of baseline Y)\\n\",\n       \"0          Optimal  8920500.30                   58.6\\n\",\n       \"1          Current  1829938.41                   12.0\\n\",\n       \"2  All Investments   373176.80                    2.5\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pd.DataFrame(\\n\",\n    \"    {\\n\",\n    \"        \\\"Policy\\\": [\\\"Optimal\\\", \\\"Current\\\", \\\"All Investments\\\"],\\n\",\n    \"        \\\"ROI ($)\\\": all_rois,\\n\",\n    \"        \\\"ROI (% of baseline Y)\\\": np.round(all_rois / Y_baseline * 100, 1),\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Policy Decisions Using Doubly Robust Policy Learning\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.policy import DRPolicyForest\\n\",\n    \"\\n\",\n    \"X = multi_data[['Size', 'PC Count']]\\n\",\n    \"est = DRPolicyForest(random_state=1,\\n\",\n    \"                     min_propensity=1e-3,\\n\",\n    \"                     min_impurity_decrease=0.1,\\n\",\n    \"                     min_samples_leaf=40,\\n\",\n    \"                     max_samples=.6,\\n\",\n    \"                     honest=True,\\n\",\n    \"                     max_depth=4)\\n\",\n    \"costs = np.hstack([np.zeros((X.shape[0], 1)), cost_fn(multi_data)])\\n\",\n    \"est.fit(Y - costs[np.arange(X.shape[0]), T], T, X=X)\\n\",\n    \"recommended_T = est.predict(X.values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAZYAAAEWCAYAAABFSLFOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADp+UlEQVR4nOydd3hUxdeA39me3hsJEEIPkITeq1JEsICigAo2wC72ilh+9k8FsReqCIiCUmw0RXoLLXQIJCGk981utsz3x26WLAkQIKHe93nyZO+5c+fOvXt3zp05Z84RUkoUFBQUFBRqCtWlboCCgoKCwtWFolgUFBQUFGoURbEoKCgoKNQoimJRUFBQUKhRFMWioKCgoFCjKIpFQUFBQaFGURTLVYgQop4QolgIoa6FuicKIWbVdL0Kp0cIES2EkEIIjXP7dyHEqBo+R7IQ4vqarFPh2kVRLJcBQojRQoidQgijEOKEEOILIYT/ORzv1ilIKY9JKb2llLZaafDp29FLCJF6Mc95mZ1/lRDigTPsL1cQxc6/ZCHEC+d6HinlDVLK6RfW2tpDCOErhPhECHHMeZ2HnNvBF1ivovyuEBTFcokRQjwNvAc8C/gBnYD6wN9CCN2lbJtCreEvpfQGhgMThBADLnWDagrnM7scaAEMAHyBzkAO0OESNq3GEA6UvvNMSCmVv0v0h+NHVwwMO0XuDWQB9zm3JwLzgblAEbAViHfumwnYgVJnXc8B0YAENM4yq4C3gLXOMouAIOAHoBDYBERXOP8kIMW5bwvQvcK+icCs01xPLyC1wvYq4E1gjbPdfwHBzn2/A4+ecvx2YIjzczPgbyAX2FfxHgEDgSRnnWnAM4CX8x7YnddYDNRxtvcnYJaz/E6gCfAikOm8zn4V6vYDvgPSnXW/Baid+0YD/wEfAnnAEeAG577/ATbA5Dz3lCruj9v34pRtcrZfBbwCHHW2awbgV9Vxzvv6QIU6HgT2OK8vCWiD40Xl51POPxmYdJrvLtl5T5Kc1zYVMDj37QIGVyirBbKB1lXU8wCQAXif4bmXQKMK29OAt5yfg4HFQL7zu1/tvDeVnnNn+ZuA3c7yq4Dmp1zTs8AOoMT5vYbhePaKgGVAQIXynXD8RvJxPIu9TnmW/4fjWS6t2H7lr4rv+FI34Fr+w/FGZ63Y0VTYNx340fl5ImABbnP+qJ/B0alpnfuTgesrHFtVR3QQaIij40wC9gPXAxocndjUCsffhUPxaICngRMVOpmJnJtiOYSjI/dwbr/r3HcPsKZC2VjnD1qPQ0mkAPc629AaR0cW6yybjlPZAQFAm6rOX6G9JqB/hWs9ArzsvJcPAkcqlF8AfOVsQyiwERjr3Dfa+T08CKiBh4DjgKhwvQ9UdW9O/V4AAXQFjMB1wH3O7ygGx4vFL8DMM3yfDzg/345DAbZ31tkIx4g3Akdn6u8sp8GhsNqepm3JOBRIXSAQRwda3tk/B8ytUPZmYOdp6pkDTD/Lc38mxfIO8KXzu9EC3Svc32Tcn/Mmzmvs6yz7nPMe6iqUX49DmUQ6r38rjufJAKwAXnOWjcQxqhqIQ5H1dW6HVLjnx3CMxDQ4f3vKX9V/ynDu0hIMZEsprVXsS3fuL2eLlHK+lNICfITjh9HpHM41VUp5SEpZgOON7ZCUcpnz3D/h+LEBIKWcJaXMkVJapZT/h6Ozb3pul+Z23v1SylJgHpDglC8AEoQQ9Z3bI4FfpJRmYBCQLKWc6mzDNuBnHJ0oODr3WCGEr5QyT0q59SxtWC2l/LPCtYbgUHAWHB1htBDCXwgRhqNjeVJKWSKlzAQ+Bu6sUNdRKeU30mG/mo6jAw87x3uSjeNt/FvgBSnlcuf1fySlPCylLMYxeriz3GB/Bh4A3pdSbpIODkopj0op04F/OXnPBuB41racoa4pUsoUKWUujrfz4U75LGCgEMLXuX03jhFEVQTheHbPFwuOe1pfSmmRUq6Wzp69Cu4Alkgp/3Z+lx/ieIHpUqHMp1LKDCllGo7RzwYp5TYppQnHM1j+3N8FLJVSLpVS2qWUfwObcTwP5UyTUu52PpOWC7jGqx5FsVxasoHg03QeEc795aSUf5BS2oFUHFM91SWjwufSKra9yzeEEM8IIfYIIQqEEPk4Rjnna3g9UeGzsfw8UsoiYAknO+3hOKbmwPHG3VEIkV/+h6PjDXfuH4rjB39UCPGPEKLzWdpw6rVmy5OODaXO/97O82qB9Arn/QrHyKXS9UgpjRWOPReCpZQBUsrmUsrJTlkdHNNg5RzF8WZ8NqVVF8eosCqm4+gwcf4/nTIoJ6XC56PONiGlPI5jBDPU6VRyAye/q1PJwfHsni8f4Bh1/CWEOHwW5wa3e+b8XaTgGH2UU93nvj5w+ynPXDfcr6Xi/VE4A4piubSsA8zAkIpCIYQ3jh/v8griuhX2q4AoHNMw4JhaqBGEEN1xTCkMwzH/7A8U4JhmqWl+BIY7FYMBWOmUpwD/SCn9K/x5SykfAnC+nd+Mo8NfiGMkBBd+H1JwfB/BFc7rK6VsUc3jL+T8x3F0buXUwzFNmlF1cRcpOKY4q2IhECeEaIljFHg6ZVBO3Qqf63Hy+YKTSup2YJ1zBFAVy4D+QgivM5zHCHhW2C5/YUBKWSSlfFpKGYPDfvKUEOK68t2n1ON2z4QQwnkNp2vbmUjBMfVY8ZnzklK+W6GMEgq+miiK5RLinJZ6HfhUCDFACKEVQkTj6ChTcX/DbCuEGOIc3TyJowNc79yXgWNuvibwwdGhZQEaIcQEHE4GtcFSHB3DGzjm8O1O+WKgiRDibuc90Qoh2gshmgshdEKIkUIIP+d0RCEOoy447kOQEMLvfBrjnD76C/g/p8usSgjRUAjRs5pVXMj38CMwXgjRwPli8TaOe1LVNGlFvgWeEUK0dXorNSqfXnRO98wHZgMbpZTHzlLXI0KIKCFEIA4b1NwK+xbicAp4Aoed6nTMxNFJ/yyEaOa8h0FCiJeEEOXTSonACCGE2ukR57q/QohBzmsQOF5obLh/vxXv7zzgRiHEdUIILQ57oBmHAf5cmQUMFkL0d7bL4HRfjzqPuq55FMVyiZFSvg+8hGN+uBDYgOOHeZ3T3lDOrzjmlPNwzHEPqTDP+w7winMI/8wFNulP4A8cxv2jOAzftTIF4Ly+X3A4EcyuIC8C+uGYJjuOY/rpPRy2HnBcf7IQohAYh2OaDCnlXhwd9GHnvTiXqcJy7gF0nPSOmk/1p3YmAbcJIfKEEJPPWtqd73F0yv/icC4wAY+d7SAp5U847CGzcXg6LcRhfC9nOtCKs0+D4azjL+Awjum1tyqcpxSHnasBju/sdO0x4/g+9+Lw6ivE4QARjOPZBodyGozDWWOks83lNMYx6inGMaL/XEpZPpJ1e86llPtwjKI+xTFtPBiH91pZNa711Han4HBKeAnHS1UKDo8ypY88D8q9LRQuY4QQE3F40dx1trIKChURQtTD0cmHSykLL7CuCUAT5TlUOBtn8zhRUFC4QnHa4p4C5tSAUgkE7scxWlRQOCPKME9B4SrEaTwvxLEe47ULrOtBHFNDv0sp/62B5ilc5ShTYQoKCgoKNYoyYlFQUFBQqFGuaBtLcHCwjI6OvtTNUFBQULii2LJlS7aUMqS26r+iFUt0dDSbN2++1M1QUFBQuKIQQhw9e6nzR5kKU1BQUFCoURTFoqCgoKBQoyiKRUFBQUGhRrmibSwKClcKFouF1NRUTCbTpW6KwjWEwWAgKioKrVZ7Uc+rKBYFhYtAamoqPj4+REdH44ivqKBQu0gpycnJITU1lQYNGlzUc1+zU2H5xjJ2pubz2cqD/Hcgm5xi89kPUlA4T0wmE0FBQYpSUbhoCCEICgq6JKPka3LEUmK2MnVNMpOWH3DJejcN4f+GJRDopbuELVO4mlGUisLF5lI9c9fkiKXIZOHzVQfdZCv3ZZGtjFoUFBQULphrUrFYbBKLrXKMNGU6TOFawtv7XDMqnx8LFy4kKSnpkp5n4sSJREZGkpCQQMuWLfntt9/OWFd0dDTZ2Y7M4F26dKnxtl7t1LpicWZj2yaEWOzcbiCE2CCEOCiEmCuE0Dnleuf2Qef+6Npqk4dWTUywV2VZyMX5oSkoXEtcDooFYPz48SQmJvLTTz9x3333YbfbT1u2ImvXnk9CymubizFieQLYU2H7PeBjKWUjHBn67nfK7wfynPKPneVqhWAfPdPu60D76AAAGoV6M2dMJwI8L65LnoLC5cCqVavo1asXt912G82aNWPkyJFIKfnjjz+4/fbb3coNGjQIgL/++ovOnTvTpk0bbr/9doqLiwF44YUXiI2NJS4ujmeeeYa1a9fy22+/8eyzz5KQkMChQ4fo1asX48ePp127djRv3pxNmzYxZMgQGjduzCuvvOI636xZs+jQoQMJCQmMHTsWm80GOEZaL7/8MvHx8XTq1ImMjIwqz3M6mjdvjkajITs7mx9//JFWrVrRsmVLnn/++SrLVxzZvffee7Rq1Yr4+HheeOEFDh06RJs2bVz7Dxw44LZ9zSKlrLU/IApYDvTBkcdc4EghqnHu7wz86fz8J9DZ+VnjLCfOVH/btm3lhZBbYpYZBaUyq8h0QfUoKJyNpKSkS92ESnh5eUkppVy5cqX09fWVKSkp0mazyU6dOsnVq1dLi8Ui69atK4uLi6WUUo4bN07OnDlTZmVlye7du7vk7777rnz99ddldna2bNKkibTb7VJKKfPy8qSUUo4aNUr+9NNPrvP27NlTPvfcc1JKKT/55BMZEREhjx8/Lk0mk4yMjJTZ2dkyKSlJDho0SJaVlUkppXzooYfk9OnTpZRSAvK3336TUkr57LPPyjfffLPK81Tktddekx988IGUUsr169fLiIgImZqaKuvWrSszMzOlxWKRvXv3lgsWLJBSSlm/fn2ZlZXldp+WLl0qO3fuLEtKSqSUUubk5EgppezVq5fctm2blFLKF198UU6ePPncv4xapKpnD9gsa7Hvr+0RyyfAc0D5mDMIyJdSWp3bqUCk83Mkztzqzv0FzvJuCCHGCCE2CyE2Z2VlXVDjAjx1hPoaCPbWn72wgsJVTIcOHYiKikKlUpGQkEBycjIajYYBAwawaNEirFYrS5Ys4eabb2b9+vUkJSXRtWtXEhISmD59OkePHsXPzw+DwcD999/PL7/8gqen52nPd9NNNwHQqlUrWrRoQUREBHq9npiYGFJSUli+fDlbtmyhffv2JCQksHz5cg4fPgyATqdzjZzatm1LcnJyta7x448/JiEhgWeeeYa5c+eyefNmevXqRUhICBqNhpEjR/Lvv6fPY7Zs2TLuvfde13UFBgYC8MADDzB16lRsNhtz585lxIgR1WrP1UytuRsLIQYBmVLKLUKIXjVVr5Tya+BrgHbt2ilZyhQUagC9/uTLlVqtxmp1vPvdeeedTJkyhcDAQNq1a4ePjw9SSvr27cuPP/5YqZ6NGzeyfPly5s+fz5QpU1ixYsUZz6dSqdzOrVKpsFqtSCkZNWoU77zzTqVjtVqty422YlvPxvjx43nmmWdc27/++mu1jjsbQ4cO5fXXX6dPnz60bduWoKBK78PXHLU5YukK3CSESAbm4JgOmwT4CyHKFVoUkOb8nAbUBXDu9wNyarF9CgoKZ6Fnz55s3bqVb775hjvvvBOATp06sWbNGg4edLjsl5SUsH//foqLiykoKGDgwIF8/PHHbN++HQAfHx+KiorO6bzXXXcd8+fPJzMzE4Dc3FyOHj1zpPdzPU+HDh34559/yM7Oxmaz8eOPP9KzZ8/Tlu/bty9Tp07FaDS62gSOsCn9+/fnoYce4t577632+a9mak2xSClflFJGSSmjgTuBFVLKkcBK4DZnsVFA+WvDb85tnPtXOOcCFRQULhFqtZpBgwbx+++/u6afQkJCmDZtGsOHDycuLo7OnTuzd+9eioqKGDRoEHFxcXTr1o2PPvoIcIx6PvjgA1q3bn1Go3pFYmNjeeutt+jXrx9xcXH07duX9PT0Mx5zrueJiIjg3XffpXfv3sTHx9O2bVtuvvnm05YfMGAAN910E+3atSMhIYEPP/zQtW/kyJGoVCr69etXreu72rkoOe+dU2HPSCkHCSFicIxgAoFtwF1SSrMQwgDMBFoDucCdUsrDZ6q3Xbt2Ukn0pXAlsGfPHpo3b36pm6FQS3z44YcUFBTw5ptvXuqmVKKqZ08IsUVK2a62znlRQrpIKVcBq5yfDwMdqihjAm4/Va6goKBwOXPrrbdy6NCh09qTrkWuyVhhCgoKCjXFggULLnUTLjuuyZAuCgoKCgq1h6JYFBQUFBRqFEWxKCgoKCjUKIpiUVBQUFCoURTFoqBwjSCE4Omnn3Ztf/jhh0ycOPHSNUjhqkVRLFcgNruN7NJs9ubuJaUwhXxT/qVuksIVgF6v55dffnHlGVFQqC0UxXIFcrTwKEN+HcLti25n4IKBTFw3kVxT7qVulkINsnBbGl3fXUGDF5bQ9d0VLNyWdvaDzoJGo2HMmDF8/PHHlfYlJyfTp08f4uLiuO666zh27BgAo0eP5vHHH6dLly7ExMQwf/581zEffPAB7du3Jy4ujtdee+2C26dw9aAoliuMfFM+E9ZOIM+c55ItP7acpOzaT6SkcHFYuC2NF3/ZSVp+KRJIyy/lxV921ohyeeSRR/jhhx8oKChwkz/22GOMGjWKHTt2MHLkSB5//HHXvvT0dP777z8WL17MCy+8ADjysRw4cICNGzeSmJjIli1bzhgZWOHaQlEsVxgWu4WknMpKZHOGEtrmauGDP/dRarG5yUotNj74c98F1+3r68s999zD5MmT3eTr1q1zhXu/++67+e+//1z7brnlFlQqFbGxsWRkZAAOxfLXX3/RunVr2rRpw969ezlw4MAFt0/h6kBZeX+FoVPrSAhNYNOJTW7yznU6X6IWKdQ0x/NLz0l+rjz55JO0adOm2pF4K4a1L48tKKXkxRdfZOzYsTXSJoWrC2XEcoXhp/fj9c6vU8erDgACwW2Nb6NJQJNL3DKFmqKOv8c5yc+VwMBAhg0bxnfffeeSdenShTlz5gDwww8/0L179zPW0b9/f77//ntXSuK0tDRXiHsFBWXEcgUS5RPFDzf+gNFiRKfW4anxxFfve6mbpVBDPNu/KS/+stNtOsxDq+bZ/k1r7BxPP/00U6ZMcW1/+umn3HvvvXzwwQeEhIQwderUMx7fr18/9uzZQ+fOjpGyt7c3s2bNIjQ0tMbaqHDlclHC5tcWSth8hSuFcw2bv3BbGh/8uY/j+aXU8ffg2f5NuaV15NkPVFA4has2bL6CgsK5cUvrSEWRKFyx1JqNRQhhEEJsFEJsF0LsFkK87pRPE0IcEUIkOv8SnHIhhJgshDgohNghhGhTW21TUFBQUKg9anPEYgb6SCmLhRBa4D8hxO/Ofc9KKeefUv4GoLHzryPwhfO/goKCgsIVRK0pFme++mLnptb5dyaDzs3ADOdx64UQ/kKICCnlmRNdX8ZYbXayi8vYfDQXD62aVlF+hPoYLnWzFBQUFGqVWrWxCCHUwBagEfCZlHKDEOIh4H9CiAnAcuAFKaUZiARSKhye6pSln1LnGGAMQL169Wqz+RfM0RwjN035j5Iyh3dPhJ+BhY90JcxXUS4KCgpXL7W6jkVKaZNSJgBRQAchREvgRaAZ0B4IBJ4/xzq/llK2k1K2CwkJqekm1xhFJgtvL93jUioA6QUmfthwFJvdfglbpqCgoFC7XJQFklLKfGAlMEBKmS4dmIGpQAdnsTSgboXDopyyKxKz1U5yTkkl+b4TRVhsV66Lt8KVSU5ODgkJCSQkJBAeHk5kZKRru6ys7KzHr1q1ikGDBp213Pr16+nYsSMJCQk0b978koblX7VqFWvXrr1k57+WqbWpMCFECGCRUuYLITyAvsB75XYTIYQAbgF2OQ/5DXhUCDEHh9G+4Eq2r/gZtAxoGc5nKw+5yW9tHYlBq75Erbr8sEs7OaU5rDu+DpPNRI+oHgQZgtCqtZe6aVcVQUFBJCYmAjBx4kS8vb155plnavw8o0aNYt68ecTHx2Oz2di378Ljm50PVquVVatW4e3tTZcuXS5JG65latPGEgFMd9pZVMA8KeViIcQKp9IRQCIwzll+KTAQOAgYgeoFMrpM0WpU3Nu1AcdyjCzZmY5WreLertF0aBB4qZt2WZFpzGTYomGuaM0GtYEfB/1II/9Gl7hll5gd82D5G1CQCn5RcN0EiBtWo6fYsmULTz31FMXFxQQHBzNt2jQiIiI4ePAg48aNIysrC7VazU8//QRAcXExt912G7t27aJt27bMmjULx/vhSTIzM4mIiABArVYTGxsLVFZmLVu2ZPHixQAMGDCAtm3bsnXrVlq0aMGMGTPw9PQkOjqaYcOG8fvvv+Ph4cHs2bNp1KgRycnJ3HfffWRnZ7uiBNSrV4/Ro0djMBjYtm0bkZGRrF27FrVazaxZs/j000/PGqZGoeaotakwKeUOKWVrKWWclLKllPINp7yPlLKVU3aXlLLYKZdSykeklA2d+2t1SX1hqYV9J4r4dMUBlu5MJ6vIXOPnCPbW8/aQVqx94Tr+fa43T1zXmEAv/dkPvEaw2q3M2jPLLQWAyWbio80fUVxWfIYjr3J2zINFj0NBCiAd/xc97pDXEFJKHnvsMebPn8+WLVu47777ePnllwEYOXIkjzzyCNu3b2ft2rUuRbFt2zY++eQTkpKSOHz4MGvWrKlU7/jx42natCm33norX331FSaT6axt2bdvHw8//DB79uzB19eXzz//3LXPz8+PnTt38uijj/Lkk08CZw7xn5qaytq1a/nll18YN24c48ePJzExUVEqF5lrMgilxWbnz90n6P/Jv/zfX/t5+Iet3P3dBrJrQbn4GLSE+xkI8zXgoVMCHVTEYrdwrPBYJfmJkhOU2c4+73/VsvwNsJwSydhS6pDXEGazmV27dtG3b18SEhJ46623SE1NpaioiLS0NG699VYADAYDnp6eAHTo0IGoqChUKhUJCQkkJydXqnfChAls3ryZfv36MXv2bAYMGHDWttStW5euXbsCcNddd7mF7B8+fLjr/7p164Azh/i//fbbUauVqeZLzTXZ0+WVlPG/pXvcZHtPFJGUXkgPn8vX0+xqw0Pjwa2NbmVlyko3+cAGA6/toJoFqecmPw+klLRo0cLVWZdTVFR02mMqhs9Xq9VYrdYqyzVs2JCHHnqIBx98kJCQEHJyctBoNNgreENWHMmcOp1Wcft0n0+Hl5fXWcso1D7X5IjFLiHfaKkkT6uhfBfXMkVlRWQYM8g0ZmK0GM9avnVYax5v/TjeWm90Kh3Dmw5naJOhaFTX5DuPA7+oc5OfB3q9nqysLJdisVgs7N69Gx8fH6Kioli4cCHgGNkYjWf/HstZsmSJK2fLgQMHUKvV+Pv7Ex0dzdatWwHYunUrR44ccR1z7NgxVztmz55Nt27dXPvmzp3r+l8eSbm6If59fHzOqCgVao9rUrF4aNX0bBLsJlOrBN0aBZ/miNolp9jM8fxSMgpNlFmv3DUuuaW5vLHuDfrN78eAnwfwWeJn5JnyzniMv96fe2Lv4bdbfuOPoX8wvu14AgwBF6nFlynXTQDtKblXtB4OeQ2hUqmYP38+zz//PPHx8SQkJLhcc2fOnMnkyZOJi4ujS5cunDhxotr1zpw5k6ZNm5KQkMDdd9/NDz/8gFqtZujQoeTm5tKiRQumTJlCkyYn8wc1bdqUzz77jObNm5OXl8dDDz3k2peXl0dcXByTJk3i448/Bhwh/qdOnUpcXBwzZ85k0qRJVbZl8ODBLFiwgISEBFavXn0+t0nhPLlmw+ZnFJqY8Osulu3JJNLfg7duaUm76AA8L7IdJCXXyLhZW9h9vBBfg4bXBsfSr0U4PoYry93WYrfw1fav+GrHV27yD3p8wIAGZ59nr4oCcwGl1lJUQoWX1gsv7ZU7zXGuYfMvhlfY5UBycjKDBg1i165dlfZFR0ezefNmgoMvzQvf1YISNv8iEuZr4MPb4ym12FAhCPLWVWsOtybJLTHz2I/b2H28EIBCk5Wnf9rByvqBV5xiKTQXsuzYskryJUeW0DOqJx6nvoGfhezSbCasmcDqtNVoVBrubHonY+LGXDujmbhhV6UiUbg2uCanwsrxMWgJ9TEQ7KO/6EoFHKvzE1PyK8nXH8q56G25UPRqPfV961eSN/ZvfM6LHU1WE9/u/JbVaY7pi3K35K0ZW2ukrQqXD9HR0VWOVsAxmlFGK1cm17RiudSoVYIQn8rrWhqGel+C1lwY3jpvxrcZj7f2ZNvDPMO4s9md52yIL7YU80/KP5Xkvyf/fm27ISsoXCFcs1NhlwNBnjreHdKKB2dsxu40dXVtFETDkCvTllDXpy6/3vIr27O2Y1AbaB7UnGCPc3/j1Kv1NPBrQGqxu3ttbFDste0tpqBwhaD8Sk/BbLWhEgKtuvYHc2q1ik4xQfz7XG+2HcsnKsCDeoGeBHlfHqvzbXYbZfYyDGpDtaYK1So1oZ6h9K3f94LO66Pz4dn2z7ItcxvFFscK/Ho+9bip4U2ohDLIri52aUcgLsk0r8K1jaJYnBSZLBzOLuHb1Yfx0mkY0yOGOv4e5xQwsthsodhkw2y14anTEFwNhwAvvQYvvYaoAM8LvYQaJbs0m8WHFrM1cys9onrQp14fAg0XL85ZPZ96/HrLr+zJ2YOn1pMGfg3Oa/RzLWK1WzFajOSb89Gr9QQaAtGoNIqCUbhoKIrFyfaUAu76boNr+5etafzxZHdiQqpn78g3lvHdf0f4YtUhrHZJVIAHM+/vSIPgK29aK7c0l4eWPcTe3L0ArExZyerU1bze9XX89f4XpQ3lo59Qz9CLcr6rBbu0k2vKJcuYBUARReSb84nxi8GgM9CqVSssFgsajYZ77rmH8ePHo1Kp2Lx5MzNmzGDy5MmXrO1vv/02L7300iU7v0LNocwr4Ajx8tHf+91kZTY736w+gsV25gWLxSYLJouN9AITn644iNVpLEnNK+WJOdvILb7yjM3ZpmyXUilnRcoKSk+NX6Vw2WGz28gpdfcqtNqtGK1GPDw8SExMZPfu3fz999/8/vvvvP766wC0a9fukioVcCgWhasDRbEAdikxW22V5MYyK3Z71QtI841lrNibwaOzt/Hygp0AXN/c/e16R2oBliswW6TVXnUMKJusfI8Uaoclh5fQb34/4qbH0W9+P5YcXlLtY6ta9HyqLDQ0lK+//popU6YgpXRL5PXPP/+4koC1bt3aFRblvffeo1WrVsTHx/PCCy8AkJiYSKdOnYiLi+PWW28lL88RaaFXr16UL17Ozs4mOjoagGnTpjFkyBAGDBhA48aNee655wB44YUXKC0tJSEhgZEjR57DnVK4HFEUCxDopeP+bg0qyR/o1gB9FTYWm83O0p0nuG/aZlbtz+LnrWnc+vkaHundCE/dyfINQ7xQq668ee1Qz1DCvcLdZC2DW+KpubzsQFcrSw4vYeLaiaSXpCORpJekM3HtxGopF5VQ4WfwqySrKmpBTEwMNpuNzMxMN/mHH37IZ599RmJiIqtXr8bDw4Pff/+dX3/9lQ0bNrB9+3aXQrjnnnt477332LFjB61atXKNgM5EYmIic+fOZefOncydO5eUlBTeffdd14jqhx9+OGsdCpc3imLBETW1T7NQPhoWT4s6vrSrH8DsBzoSfRr7SK7RwuerDrrJTBY7fydl0L2xIzqyp07N/w1LIPgy8fA6F4I9gpkxYAaDYgbRwK8Bdza9k8m9JxPooSQpuxhM2joJk809j4nJZmLS1qpjYlVErVIT5hlGiGcIeo0eH50PMX4xqFXVd0Lp2rUrTz31FJMnTyY/Px+NRsOyZcu49957XSH0AwMDKSgoID8/n549ewKO7JH//vvvWeu/7rrr8PPzw2AwEBsby9GjR6vdNoUrg9pMTWwA/gX0zvPMl1K+JoRoAMwBgoAtwN1SyjIhhB6YAbQFcoA7pJTJtdW+U/H31HFr60h6NglBpRIEeOpOW1YisZ4mb/0bN8UypkcD6gZ44u95ZYVlqUiEdwSvdnqVUmspXlovDBrDpW7SNcOJkqqDPp5OfioalYYQjxACDYEIxGmVyuHDh1Gr1YSGhrJnz8k0Ei+88AI33ngjS5cupWvXrvz555/nfA0Vw+SfmuyruuH3Fa5canPEYgb6SCnjgQRggBCiE/Ae8LGUshGQB9zvLH8/kOeUf+wsd1ERQhDkrT+jUgEI9NTxQHf3qTOtWnBH+7qE+XlQL8iTnJIyUvNKyS2p+eRhFwtPrSdBHkGKUrnInDoNeTZ5VQgh0Kg0p1UqWVlZjBs3jkcffbSSG/KhQ4do1aoVzz//PO3bt2fv3r307duXqVOnukLo5+bm4ufnR0BAgCty8MyZM12jl+joaLZs2QLA/Pnzq9VmrVaLxVI5nYXClUetjVikw1pYnl9W6/yTQB9ghFM+HZgIfAHc7PwMMB+YIoQQ8jIMv6xRqxjaJopALx2z1h8jwEvLs/2aEuZrICXXyLCv1pFe4HhL69ggkM9Gtrkip8ROJbs0m5zSHDQqDQH6AGVqrJZ4os0TTFw70W06zKA28ESbJy6o3nLjeLm78d13381TTz1Vqdwnn3zCypUrUalUtGjRghtuuAG9Xk9iYiLt2rVDp9MxcOBA3n77baZPn864ceMwGo3ExMQwdepUAJ555hmGDRvG119/zY033lit9o0ZM4a4uDjatGmj2FmucGo1bL4QQo1juqsR8BnwAbDeOSpBCFEX+F1K2VIIsQsYIKVMde47BHSUUmafUucYYAxAvXr12l7K+VkpJflGC1q1wNugpchk4dmfdvDHbvcpi/eGxnFH+7qXqJUnKS4rpsxWhq/e95xDo5woOcHoP0aTVpwGQGxgLJ9d/5myaLGanGvY/CWHlzBp6yROlJwg3CucJ9o8wY0x1eugFRQqctWFzZdS2oAEIYQ/sABoVgN1fg18DY58LBda34UghCDA6+S0mcliY3tqfqVyaw5mM7RNJJpzDBNjtVnJM+eRUpSCv96fAEPAeYWNL7OVcazwGB9t+YgTJScY2GAgQ5sMrXZdpZZSpmyb4lIqAEm5SSw6tIh7Yu85J8OwQvW4MeZGRZEoXLFclJX3Usp8IcRKoDPgL4TQSCmtQBRQ3lulAXWBVCGEBvDDYcS/YvDQaWgfHcBv29Pd5H2ahZ6zUgE4VHCI0X+MdsXL6lanG//r9r9znoLKNeUyfMlw19TKpG2TyCzNZHzb8Xhozp4nxWg1siuncmjzLRlbuKPpHXiqFDdkBQWFk9Sa8V4IEeIcqSCE8AD6AnuAlcBtzmKjgF+dn39zbuPcv+JytK+cCW+9hhdvaE6jCmHv+7cIo3tjx3RRidlKZpGJYtPZDZS5plxeXfOqS6kA/Hf8P5Jyks65Xf+m/lvJffXn/T9TXFZ8miPc8dJ60T6sfSV598juimFfQUGhErU5YokApjvtLCpgnpRysRAiCZgjhHgL2AZ85yz/HTBTCHEQyAXurMW21RoR/h7MebATxWVWtCoVnno1AZ460vNLefePvWxOzqN1PX9evKE5kQGnHy3YpZ39efsryROzEukW1e2c2qRXV3Yc0KmrnzHToDEwJm4MO7J3uBRb98ju9I3uq0QbVlBQqERteoXtAFpXIT8MdKhCbgJur632XEyCffQEc7Izzy42M/LbDRzOLgEgLb+UxJR8FjzctcpEX+BYi9AmrA2bTmxyk3eLPDelAtClThcC9AHkmfNcsvtb3o+P1qfadYR4hvDF9V9gtBhRCRWeWs+LFpBSQUHhykKJbnwRKDZZXUqlnNS8UvKMZadVLP56f97s8ibjlo0juTAZtVBzd+zdRPtGn/P5gzyCmDd4HrP2zCKlMIVbGt1C67DW6DXn5gIdaAi8qKHzFRQUrkyu+XmM0jIbmYUmcoprbyGjRl31lJPuLAb9SJ9Ipg2YxtIhS/lz6J+MjRuLv8H/nM+vEirCvcJ5ss2TvNvjXXrX662MNq4xcnJyXIElw8PDiYyMdG2XlZ09AnfFIJVnYv369XTs2JGEhASaN2/OxIkTa6D158eqVatYu3btafcvWrSI2NhYWrZsycsvv3zactOmTSMkJITWrVvTuHFj+vfv71bvhAkTWLZsWY22/VxITExk6dKll+z8VXFNj1iyi8x8smw/S3amE+5nYOLgFrSK8sNTV7O3xUunoU+zUFbsPRnsr3NMIL4eZw/5EuQRRBBBNdIOjUqjpPa9RgkKCiIxMRGAiRMn4u3tzTPPPFPj5xk1ahTz5s0jPj4em83Gvn37avwc1cFqtbJq1Sq8vb3p0qVLlWWefPJJli1bRoMGDThy5MgZ67vjjjuYMmUKACtXrmTIkCGsXLmS5s2b88Ybb9R4+8+FxMRENm/ezMCBAy9pOypyzY5Yis0W/rc0iVkbjpFntLAnvYgR324gu6jmRy4BXjo+uC2O/7s9nsFxEbw3tBVTRrQh0OvMoWMUrl0KFi3iQJ/r2NM8lgN9rqNg0aIaP8eWLVvo2bMnbdu2pX///qSnO9zkDx48yPXXX098fDxt2rTh0KFDABQXF3PbbbfRrFkzRo4cWWV4/szMTCIiIgBHHLDY2FjAocw+/PBDV7mWLVuSnJxMcnKyq77mzZtz2223ucLGREdH89xzz9GqVSs6dOjAwYOOwK/Jycn06dOHuLg4rrvuOo4dOwbA6NGjGTduHB07dmTYsGF8+eWXfPzxxyQkJLjCzlREp9ORmpoKQIMGlaObn47evXszZswYvv76a9d5y8PWvPDCC8TGxhIXF+dS3BkZGdx6663Ex8cTHx/vGu189NFHtGzZkpYtW/LJJ5+4rq1ly5auc3344YeuUV+vXr14/vnn6dChA02aNGH16tWUlZUxYcIE5s6dS0JCAnPnzq32ddQm16xiMZptLDplvYnNLvl7T0atnC/IW8/QtlF8dEcCd7Svd9nktVe4/ChYtIj0VydgPX4cpMR6/Djpr06oUeUipeSxxx5j/vz5bNmyhfvuu881HTRy5EgeeeQRtm/fztq1a12KYtu2bXzyySckJSVx+PBh1qxZU6ne8ePH07RpU2699Va++uqrSgEoq2Lfvn08/PDD7NmzB19fXz7//HPXPj8/P3bu3Mmjjz7Kk08+CcBjjz3GqFGj2LFjByNHjuTxxx93lU9NTWXt2rX88ssvjBs3jvHjx5OYmEj37t3dzmm324mNjeW+++4jOTn5XG8fbdq0Ye9e92R4OTk5LFiwgN27d7Njxw5eeeUVAB5//HF69uzJ9u3b2bp1Ky1atGDLli1MnTqVDRs2sH79er755hu2bdt21vNarVY2btzIJ598wuuvv45Op+ONN97gjjvuIDExkTvuuOOcr6U2uGYVCwL8qpiKCvJy7/CllGQWmliy4zg/b0nlRIEJi+38E15pz2OhpMLli81uI9OYyeJDi/n9yO9kGbOwywtL7pb58SfIUzpkaTKR+fEnF1RvRcxmM7t27aJv374kJCTw1ltvkZqaSlFREWlpadx6660AGAwGV6j8Dh06EBUVhUqlIiEhocoOecKECWzevJl+/foxe/ZsBgwYcNa21K1bl65duwJw11138d9//7n2DR8+3PV/3bp1AKxbt44RIxzhBu+++2638rfffjtq9dkjQXz66afEx8fzxRdfMHjwYLKysti0aRO33XbbWY+FqpOplacCuP/++/nll19c923FihU89NBDgGMU5+fnx3///cett96Kl5cX3t7eDBkypMpR1akMGTIEgLZt256XQrxYXLMT7oGeOp4b0JTnf97pkkX6e9Ag2Iu9JwoJ99Xj76kno9DE4E/XkOU07nvq1Pz2aFcahVbfVVfh6uV4yXHuWHQHRRZHlkU/vR/zBs2jjned867Tmp5+TvLzQUpJixYtXJ11OeXZIquiuuHuGzZsyEMPPcSDDz5ISEgIOTk5bmH0wT2U/qnrqSpun+7z6fDyqjqH0qn8+eefPPfcc/Tq1YtXX32VG2+8kQ4dOnDnndVbPrdt27ZK8bc0Gg0bN25k+fLlzJ8/nylTprBixYpq1VexjtPdJzj5HVzu6Qau2ddnjVrFgJbhLHykC3d1rMcz/ZoyZURrnv5pO8O/Xs+RbCOZhSamrU12KRUAY5mNd5bu5XBWMXklV14+e4Waw2gxMmXbFJdSASgwF/Ddzu8os53/s6FxTj1VV34+6PV6srKyXIrFYrGwe/dufHx8iIqKYuHChYBjZFNu86gOS5Yscb3NHzhwALVajb+/P9HR0WzduhWArVu3uhnLjx075mrH7Nmz6dbt5FqtcpvB3Llz6dy5MwBdunRhzpw5APzwww+VprnK8fHxOa2ibN26NbNmzcJutzNs2DAaN27M7NmzqxWJ+Z9//uHrr7/mwQcfdJMXFxdTUFDAwIED+fjjj9m+fTvgSGz2xRdfAGCz2SgoKKB79+4sXLgQo9FISUkJCxYsoHv37oSFhZGZmUlOTg5ms5nFixeftT1nus5LxTWrWAD8PHQEeukpNFnZcCSH275cx8HMYvKMFgpLLfyaeJxDWSWVjkvJM7L2UA6frTxIUTXCsyhcnZTZykgtSq0kP1p4FLPt/J1AQsc/iTC4h8oRBgOh45887zpPRaVSMX/+fJ5//nni4+NJSEhwGZVnzpzJ5MmTiYuLo0uXLpw4Ub0EY+XHNm3alISEBO6++25++OEH1Go1Q4cOJTc3lxYtWjBlyhSaNGniOqZp06Z89tlnNG/enLy8PNe0EUBeXh5xcXFMmjSJjz/+GHBMY02dOpW4uDhmzpzJpElVZ9YcPHgwCxYsqNJ4//LLLyOlpGXLlrRt25awsDDGjh3LiBEj3EYM5ZQbx5s0acLbb7/Nzz//XGnEUlRUxKBBg4iLi6Nbt2589NFHAEyaNImVK1fSqlUr2rZtS1JSEm3atGH06NF06NCBjh078sADD9C6dWu0Wi0TJkygQ4cO9O3bl2bNzh63t3fv3iQlJV1WxvtaDZtf27Rr105u3rz5guo4nl9K1/dWcOptmD+uM+8s3cP93WN4+Ietbvse6tmQtPxSFu84zprn+xDhf/ZAjgpXHza7jTl75/Dupnfd5G91fYubGt7kNnVzrmHzCxYtIvPjT7Cmp6OJiCB0/JP4DR5cY22/XEhOTmbQoEHs2lU5yGl0dDSbN28mOFhJzXAhXIqw+df0iAXAS69hRId6brL+LcLZk17EjrQC2tYL4LE+jfDQqtGqBUPbRNK9STC/70rHLsFkvTBDrcKVi1qlZmDMQIY3G45WpUWv1jO6xWh6RPWodhy20+E3eDCNVyyn+Z4kGq9YflUqFYWrl2t+xAKQW2LmQGYxK/dmEhvhi0at4pmftvNg9xjG9IhBrRLklpSRmmdk1b4spq1NxlhmI9zXwKLHuhLio0T4vZYxWowUW4oRCLx13lWmIjjXEYuCQk1x1SX6ulII9NLTsYGe5uG+7D9RxLojOcwZ04l6gZ546R23KMRHT56xjGV7MjCW2WgV6ccndyRUck9WuPbw1HriqT17Thop5QWPZBQUzoVLNXBQFEsFfD20tGsQSLsGJwMt2mx2ckrKsNjshPoYmDumE2U2iUYllEWOCtXGYDCQk5NDUFCQolwULgpSSnJycjAYLv6MiqJYzoDJYmPbsTyemJNIZpGZeoGefHlXG5qE+ZxXRkiFa5eoqChSU1PJysq61E1RuIYwGAxERUVd9PPWmmIRQtQFZgBhgAS+llJOEkJMBB4Eyn9hL0kplzqPeRG4H7ABj0sp/6yt9p2KxWYjr8RCmdWOXqsiyEtPQamF0VM3YXYa6I/lGhn1/SaWPNGNUMWuonAOaLXac4pHpaBwJVObIxYr8LSUcqsQwgfYIoT427nvYynlhxULCyFicWSNbAHUAZYJIZpIKc8/fko1KS2zsv5wLk/NSyTPaCHS34PvRrWjpMzqUirlZBWbMZptcBkuvLfZbQgEKpUymlJQULh01FoPJKVMl1JudX4uwpHvPvIMh9wMzJFSmqWUR4CDVJFpsjYoKLUwZuZm8oyOxY5p+aXcN31TlYZ5rVpg0J49FtHFxGgxcij/EP/b8D/e2/QexwqPYbbWXn4ZBQUFhTNxUV5thRDRONIUb3CKHhVC7BBCfC+ECHDKIoGUCoelcmZFVGMczTFisbl7TxzPN6FVC+7q6L7G5dn+zfAxXF6mqUMFhxjy2xB+2v8Ts/fO5pZfb+F4yfFL3SwFBYVrlLMqFiFE1+rIznC8N/Az8KSUshD4AmgIJADpwP9Vty5nfWOEEJuFEJtryhAa7lfZXqLXqNCoVDzdvyl/PtmdSXcksPKZntzRvq7LBflCsNrsZBaZSM4pIaPQhNlyfjN+RWVFfLr1U7eIuha7hW93fquMWhQUFC4J1ekhPwXaVENWCSGEFodS+UFK+QuAlDKjwv5vgPIoa2lA3QqHRzllbkgpvwa+BscCyWq0/6z4eWi5t0s0U9cmu2QTBsXi66HFQ6cmwFNH03DfmjgV4FAq21PzeXDGFnJLyvDUqXl3SBzXNw/F8xyVls1uo8RSOZ5ZYVkhtto3TykoKChU4rS9mBCiM9AFCBFCPFVhly9wViODcDjrfwfskVJ+VEEeIaUsj/99K1AeJOg3YLYQ4iMcxvvGwMZzuJbzxt9TxxPXN2Zkp/ocyiomNsIXf0+HUjkf7HaJscyKQadGU4UhPddY5lIq4IiYPH5eIv891/ucFYuf3o8RzUewY/UON/ndze+u1qI9BQUFhZrmTL2YDvB2lqnoA1UIVCcbTlfgbmCnECLRKXsJGC6ESMDhgpwMjAWQUu4WQswDknB4lD1yMTzCyvH31OHvqaNRqPcF1ZNTbGbR9uOs2JtJ2/oBDO9Yr5JrstFscymVcmx2ydFc4zkHtBRC0C2yG693eZ1pu6ehVWkZGzeWZoFnj4qqoKCgUBucNVaYEKK+lPLoRWrPOVFTscIqYrXZyS0po8hsxUunxkuvwcdQOdNkVeSVlPH0T9tZsTfTJWsS5s3sBzsRXGGVfkahid4frsJY5q43Vz/Xm7qBVY8yisqK0Kg0VcahArBLO3mmPASCAEOAsrpbQUHhtFwOscL0QoivgeiK5aWUfWqrUZcKu12SlF7IPd9vJN9oQa0SPH5dY0Z1ro+/p65SeavdTrHJiqdOg06jwlhmc1MqAPsziikstWCXksJSK546NR5aFe8MacX4uYnYnXr90T6NqkyVnG/OZ2vGVubsnUOgIZCx8WOJ9I5Ep3Zvj0qoCPIIqnR8ma2MUmspXlovNKrLy5tNQUHh6qQ6Pc1PwJfAtzhWxF+15JSYefiHreQ717PY7JKP/97Pja0iKimW7GIzczelsHJvJvF1/Z1RkCvX2TjUG7PVzh2T/nNlohzRoR7j+zZhzfN9SM4pITLAEz+DFt9TFIvNbuPP5D95a/1bLtmyY8v49ZZfifQ+uyd2pjGT6bunszN7J90juzOk8ZAqlY+CgoJCTVIdxWKVUn5R6y25DCizSVLzSivJd6cVuNle8oxlPD0vkX/2ZwOw+WgefydlMG9sJ9rWD2DL0TxX2Ud6N+K5+Tvc0hvP3niMoW0jaVs/8Iw2lTxzHt/t/M5NZraZWXhgIY+0fuSM15Jdms2oP0a5Mhxuy9zGlowtvNv9XfwN/mc8VkFBQeFCqM4CyUVCiIeFEBFCiMDyv1pv2SVApxZEVFjTolEJbmwVQXxdP0rMVpe8tMzmUirlHMs1kllk5qu72zKmRwyxEb4M71CXDg0C2ZlWUOlcGw7nVqtNFdennEl2KhklGZXS5q45voZSa2XFebmSb8onpSiFPTl7yC7Nxma/qgfMCgpXDdUZsYxy/n+2gkwCMTXfnEtLoJeeL0a2YfTUjZTZJN/c047Nybk8+uM2GgR58XT/ptTxNWCzn97hIdhbz9P9mjC2RwyeOg3GMist6viy+3ihW7kODc6um/31/oxuMZr3Nr3nkmlVWm5pfMtZj5VcuQncAHJNubyx7g2WH1sOQIA+gKkDptLQv+ElbpmCgsLZOKtikVJeEyFZjWYrhSYLFrvk10e7oVEJPvp7Pz9vdazR3JVWyD/7s1jwcFd2HS+ge+NgVh84OWqpF+hJhJ9jWkuvUaP3dqyB8dCp+XhYAnd+s97lYjysXRQxIV5nbZNGpWFQw0EEGgKZu28uAYYAHk14lFCPUABMVhMllhI8tZ6VvMXCvcKJ8olyG7V0rdP1tF5llxt7cva4lAo4pgUnrJnAlOumEGAIOMORCgoKl5qzKhYhxD1VyaWUM2q+OZeGMqud1QezeeSHrVido5E/nuzOr4nu8bYKTVYSU/Px1ql5bkAzWkWms+FILgl1/XmwewwhPg6X4vLkYCl5pfgYNPh5alnyWFcsdlAJ8NZrqvQyqwp/vT8DYwbSNbIrGpUGL61DIWUaM/ky8Uu2ZG4hISSBhxMeJswrzHVcsEcw0/pPY9ruaezK3kX3qO4MbTz0irGvbMrYVEmWlJuE1W6torSCgsLlRHWmwtpX+GwArgO24si1clWQZyzjmXnbXUoFoMBoQSUEnDKlZLdLft1+nG6NgukYE0jf2DBi6/ii15xcpX8kp4ShX6yjoNThXdahQSDP9GvCvhNFDIqrU22lUhE/vZ/rc05pDmP/HsvB/IMAHC44zNbMrUwbMM3N6yvMK4wn2zyJyWa64tyNu0Z0reS4kBCSgE517vdOQUHh4nJW472U8rEKfw/iiBF2YcvTLzNMFhtFZvc34eV7MxlxSmTjEG89DYK9WLrzBC8t2OVUPrgplbySMsc+p1IB2Hgkl/0ZxfyyNY2ft6ZitZ/d+H4mSiwlLqUCUMerDkVlRRSYKzsJ6DV6/PR+p1UqOaU57M7ezab0TWQZsy4bA3mjgEbc1vg2BI6FnnW86vB6l9fxM/id5UgFBYVLzfm8wpYAV5XdxUOnJshLR06FMCvT1ybzz7O9iYvy49fE49QP8mRImyheWbjTVWba2mQm39narS6Lzc7edHdDPcCe9ELqBnoybW0yNyfUIeQCMlCqhON9oE1oG55s+yTpxel4aDzOaj/JLs3mWNExbHYbDfwaoBZqxv49ln15+wDHqGjWDbOI9os+77bVFAGGAMa3Hc/Y+LGYbWa8tF4EGZQ1OAqVkVKSa8pFIgnQB6BWXV75kq5FqmNjWcTJ+SA10ByYV5uNutgEeur4+p623D99M/lGC3qNijdvaYm3XsPNCXXo3jiYv5MyGPnNekoqhGExaNXsOl5AkLcOD53jVhp0ajo0CGTZHvcV+O2jA/ls5UE8tOoLDrfipfViQPQAhjcbzmMrHnONVGL8Yviu/3cEewRXOibTmOm2riXIEMR3/b8j03iynQXmAt7b9B7v93gfH92lT5Hpq/fFV19zUaUVrj4KzYWsS1/Hl9u/xGK3cHfs3fSP7o+/3v9SN+2apjojloophK3AUSll6ukKX4lo1Criovz568kelJTZ8NSp8fXQYCqzM2/tMX7bfpw3b2nllqZYCLi3azQLt6XRPjrQpVh8DVreuLklKbmb2JdRhErAbW3rolYJDmQW88XINgR5XZidIMAQwHPtn+P1da+7TX8dLjjM4sOLGRU7yk15We1Wftz7o5uHWI4ph293fsvghoOZkXTSXHYg7wAmq+myUCwKCmdjX94+nvnnGdf2W+vfwkPjweCYwUq8vEtIddyN/xFChHHSiH+gdpt0adCqVYT6GrDY7OQZyygyWdmdVsAbi/cA8N+BLBY+0pXpa5Ox2CRD20ayal8WDUK8KwWprOPvwQ8PdMRosaISgqT0Qn7fmc7PD3Whcah3jTzwAsGh/EOV5DuzdmKxW9xiiZmsJpJykiqVPZh/kJsa3uQm61KnC97aq8qEpnCVUmopZVbSrEryH/f+SPfI7opb+iWkOhkkh+HIi3I7MAzYIISoTtj8K4LcEjOZhSaKTVbySsr4/r8jDP70P4Z8vpZjuUY+Hd6aBsFefPDnPkrMVuKj/PAxaHh+/g4OZBYxunM0Ok3l2xjso6deoBdRAZ70bhrKu0PjaFs/oFI8sPPFW+dNt8huleT9o/tXClDpqfXk+nrXVyrbK6oXXhovl80mPiSeR1s/iof2yljronBto1apq5wq9dH6XFEekFcj1bn7LwPtpZSZAEKIEGAZML82G1bbWGw29mcU89IvOwny0jG+bxN2phXwzu97ARyhXKL82Z9ZzFN9mxDopeO133bzbP+m9G4WxrieDfHUqQmoxrSWtqrolBXIKjKz+3gBhaVWOjQIJNBLi05zZgOkQWNgbPxYDhccZuOJjaiFmiGNh9A+vH2lsiqh4vr617MlYwtLjyxFIuke2Z07m92JXq2na2RXbNKGh8aj1t/yrHYreSZHLDU/vV8lJahw9WGz28gz5yGR+Olq7jvXqXXc3/J+lh5eSpnd4XijEioea/2YMpV7ialOPpadUspWFbZVwPaKskvFheRjySg00euDVQzvUJe4KH/KrHZmrj/KzrQCWtTx5dn+TRk7c4vLrtIwxIv3b4sjxMdAvdPkTDkfMgtNDP1yLSm5jhheHlo1Cx7uQrOI6hmt80x5mKwmVEKFl9YLb93pp7EKzYUYrUbHeTQebmtjLgYF5gJ+P/I7X+/4GovdwohmI7iz2Z3KlMVVTKG5kOXHlvNZ4meUWksZ1mQY97S4p8a+c7PNTKYxkzl752C2mRnebDgRXhFK9tSzcDnkY/lDCPEn8KNz+w7g97MdJISoi2MRZRgOr7KvpZSTnAEs5+LI75IMDJNS5jlTGU8CBgJGYLSUcuu5XU71STpeiFYj6N8inDu/Wc/465sQ4OmYphreoR4f/73fzVh/KKuEvelFxEXVbGe8MDHNpVQASi02Ji7azZd3ta3WQsryH2ieKY/DBYdJykmiTWgbwrzCKimOS+1ltTNrJ//b8D/X9ufbPyfAEMCwpsNc03EKVxf78/YzYe0E1/a3u77FW+fNqBajamS6Sq/WU9enLk+3exokqKpIBa5w8anOAslnga+AOOff11LK56pRtxV4WkoZC3QCHhFCxAIvAMullI2B5c5tgBtw5LlvDIwBajVUf4CXjrb1Alm1LwspYeG2NB7p3Yj3hrakT7NQymyVFzHuOVGIscxGVpGJs430qoPVbifpeFEl+dEcIzZpJaMkgwUHFrDo0CKyjFmnjWqcb8rn/U3vM3LpSP634X8MXTSU2XtmU2IpueA21hRGi5G5++dWki84sKDKhZ0KVz5ltjLm7qv8nf968Nca/85VQqUolcuI074yCCEaAWFSyjVSyl+AX5zybkKIhlLKyi5JFZBSpgPpzs9FQog9QCRwM9DLWWw6sAp43imfIR099nohhL8QIsJZT40TFeBBqK+eIG/HqECjFkT4GzCW2Zi/JYXnBzQjp6SMl37Z6Rq59GkWys2frUEgeHdIK+Lr+mPQnrSFWJxpjS02O1uP5eGp1ZBQz9+Vlrig1ILZYkMIQZCXDo1KxdA2kSxMTHNr221toyiyZnLH4jtcU1d+ej9+GvQTEd4Rla6lsKyQxYcXu8m+3vE1QxoPccUWu9RoVBpCPUMryYM8ghRD61WKWqiJ8Kr8vAZ6BCrf+VXOmVT8J0DlJeRQ4NxXbYQQ0UBrYAMOZVWuLE7gmCoDh9JJqXBYqlN2al1jhBCbhRCbs7KyzqUZbgR763m2X1Oubx5GpL8HH9wWz+crD3HvtE189PcBRk/dxLpD2TzdryleOjXjr2/M8XwTydlGjmSXcNd3G8irsFI/31jGzrQCikwWft6aRmahmSBvHW/8tpvsYjPp+aU8OnsrHd5ezq2fr2HNoWyMZisto/x48vrGeGjVqAQMaBHOPV0imLxtskupgMM+8f2u7ymzlVW6lnJjeEWs0orZZq4kv1To1DrubXEvnpqTc99alZYn2jyhGFqvUtQqNcObDcdXd3L6VSM0PN326Ytu31O4uJzptSFMSrnzVKGUcqdTUVQLIYQ38DPwpJSysOIaDimlFEKc05ySlPJr4GtwGO/P5dhTCfbRE+yjZ8EjXTBZ7MzZlOK2f/6WNP59rjE3xkXw2YqDfLL85BIei02yPTXflQEyNa8UKSUDJ/3nmkYL8dbzzah27E4rYMG2NFeY/dS8UkZP3cS/z/YiMsCTsT0bMrxDPaQET50amygmrdh9FANwrOgYZbaySl41Ed4ReGg83JJ4hXmGuXXilwPhXuH8esuv/HHkD8w2MzfG3EiIRwgF5gLMNjMCQaAh8KwhOQrMBaSXpLMqZRVNApoQHxKvpFy+TAn1DOWXm37hr6N/UVRWxOCYwQR7Vo4MoXB1cSbF4n+GfdVa6CCE0OJQKj84p9MAMsqnuIQQEUB5TJE0oG6Fw6Ocslon1MfA/ozKtg6AIpOVEB89/+zPpF9sGAWlFjYeycUuIczXEe/LbpekF5TyzeojbraZrGIzv+9Mp1NMIOkFJrd6bXbJxuRcbg3wxEOrxqPClJrN7suNDW6stKjxlka3VOn15a/359t+3/LC6hdIKUqhSUATPujxAYEel1eiT41KQ7hXOKNbjnbJTpSc4MXVL7I5YzPBHsG82ulVOoZ3xEtX9RSe2Wpm8aHFvLvpXZesVXArPu3z6SVRLjmlOWzL3Mae3D30iupFPd96ytt4BdQqNWFeYdwde/elborCReRMimWzEOJBKeU3FYVCiAeALWer2Onl9R2wR0r5UYVdv+HISvmu8/+vFeSPCiHmAB2Bgtqyr5RjttrIN1qwS4mPXkOwt47s4pNTTYFeOgK9dGhVgi/uastv24/T2lvPc/2bMWN9ssvtWKUSBHnpOXGK8gA4UWiieYQvR3PcDelCQFykPztS81m6M52m4T50jgkmzFePWqVmcMPBpBWnMX//fNQqNXfH3k3niM5VXodOraNVcCtm3DADm92GVqW97JRKVeSb8nlh9QtsyXA8Ttml2Ty58kmWDFlyWsVSUFbA5G2T3WQ7s3dytOjoRVcsOaU5PLHiCbZnbwccdq0n2jzByGYjlUWmCtc0Z1IsTwILhBAjOalI2gE64NZq1N0VuBvYKYRIdMpewqFQ5gkh7geO4ljND7AUh6vxQRzuxvdW+yrOg3xjGQu3pfF/f+2nyGzl/q7RzLy/I0/P205SeiHNI3z4aFgCIV46VuzLYszMk7o00t+Dnx/qQpDTKA9QL8iTga3C+fKfw27nub1tFF56NU9e34QXfjk5s/hU3yas2p/Jm86QMQDNwn34+p62hPsaCDAE8GSbJ3mg1QMA+Op80Wv0nA4hRJXBJy9nzDazS6mUI5FsTN9IXZ+6VR5jl3Y321M5mSWZVZSuXY4XH3cplXK+2v4VNzW8SVEsCtc0p1UsUsoMoIsQojfQ0ileIqVcUZ2KpZT/AacLinVdFeUl8Eh16q4JUnJLmbjo5FTTd2uSUatVTLu3HRKBRiUI8taTVWTmzSXuU1Jp+aX8uz+LYe1Pdn7B3npGdY4mz2hh4bY0PHRqXhjQjAbBXhSabPRsGsK/z/bi910naBLuQ9MwH/p+9I9bvXtPFLEjpQDPGA3BPmo8tB610kHlmnLZnrmdNcfX0LVOV+JD4wk0XNgIxy7t5JpyKbOVOUZMp9hK8kx57M7ezT+p/9A+vD3twtqhEioC9AHkmd2dD+r51Du1ehcGtYGEkAQSsxJdMo1KQ0JowgW1/3zIMeVUkplspssmp42CwqWiOkEoVwIrL0JbLipLdlaeZZuxLpn7uzVw2U7A8QadXVTZEystv9Rt22i28sGf+wj01vH96PZo1QIPrYZ7p21if0YxAZ5a3hnSirs61cNLryUtz+gWgr+crGIzBaYygn1OPzq5EPJN+by57k2WHVsGwNx9c+lbvy8TOk0477TFVruVfbn7eGrVUxwvOU6YZxgf9PiAFsEt0Kl1FJoL+XjLxyw4uACAOfvm0DmiMx/0+ICXOr7Es/8+66orPjieGP+Y057L3+DPhz0/5PV1r7Pm+Brq+9RnQucJlyRMevPA5uhUOlc4EXDYewya88+1o6BwNXDNrihqElbZCF4v0BNbhfTENrsdX4OGmxLquJUTAgbHn5TZ7ZIym530AhPfrj7CyG83kFFoZvy8RPZnFAOQZ7Tw8A9byTNaKLPaOZJdQueG7jYBrVoQH+XvlpGypjFajS6lUs7fR/+ucnqpuuSZ8hi7bCzHS44DkGHMYOyysRSXFZNTmkOBuYAbY25kUMwg1zHr0tdRYikhITSBpbcuZe6gucwYMINJfSad1VYS5hXGu93fZfnty5k6YCrtwttdks7c3+DP1AFTaezfGI3Q0COqBx/1+kgJUaNwzXPNrlLqFBNE0zAf9jm9wbRqwTP9mmIss5BTrGLtoRyW78mke+NgnurbBG+9mjkbUwjx0fPqoFjCffWYLTYyisxMX3uEOv4e3NG+LusOO6ZHQn31HMwsdjunXcLO1AI6xmiYvPwA/7u1FR/9vZ+V+zKJDvLi6X5NOZBZRMOQ2lvUaLJWdjAAxxTO+VJsKa60kjrKO4pccy5PrXyKI4VH8NZ681jrxwjxCGHq7qk82eZJlh1bxpTEKZRaS2ka0LRaSqWcyyEBmF6tJy4kjm/6fYNd2tGr9ZdFuxQULjXVWnl/irwrcOJsK+8vdzQqwSuDmpNTXEZOiZk29QKYse4oz/RvyssLd/LHrgzAEcurS8MgJt2ZwNgeDRHCYU8RQnA4yxEduUm4D2sP5XBTfB1eGtiMb1cfQUrwNWgoNFndzls/yBOdWuDroWXEtxv4dHgCzw1oRl5JGQatirb1/fGrRoyw88VX70uYZxgZxgyXLNwr3G0R27niqfFELdTY5MmpvQdaPcAz/zzDkcIjgEP5vLPxHWbcMIM/jvxBy+CWPPDXA67y+/L28dLql5jUe1K1p+Tsdjs2aUOrrplUBOeLsoZGQcGd81l5X8g5rry/HPHUadiVVsgny/bza+Jx7vhqPf4eWqSULqVSztpDORSbrIT6GgjxMSCEwGSxkWe0MCi+DjnFZbSK9CPS3wODRs2vj3alUagXb97Skoo5vfq3CCfcz4C3QctLA5tjtti48+sNDPl8DV/+c4hgHz2BXtWzrZhtZqx269kLnkKQIYipA6bSpU4XfLQ+dKnThe/7f39O+eRNVpNb3DIvrRcPxT/kVibGP6bKRGR7cvYwsvnIKhOPbc3c6mavOB02u430knQmb5vMK2teYUvGFiXemILCZUStr7y/HJFSolbBXZ3q0b9FGDvTCoiL9MffU0NBadWdtcnqHgCyxGxl9oaj/LzVuYZzJyzZkc5bt7TEoHHkaenTLJR/n+3NtmP5xIR4Ucff4FIc9QM9WfZUTxJT8vHUqWka7ktINQz2+eZ89uTsYf7++UT5RDG82XBCPUNRCRVWuxWr3XpGe4MQgro+dfmgxweYbeZzmr7JNeWyOnU1K1NW0jq0NYNiBhHkEYS3zpvhzYbTL7ofe3L20DSwKd5a7yo9vmKDYjlefLzK1fVR3lHVinKcXZrNbb/dRmGZ471n6ZGlvNHlDW5qeNNZV+0rKCjUPrW68v5yJKfYTFJ6IX4eWtRCEOClo0fjYPadKOa9P5MZ0yOGmGAvDmefXNAY4WdwBassp8xmZ8E298AAB5w2lfLkXz4GLT4GLXWryN+idqZC7tcivNptt9gtLD60mPc2veeS/XLgFxbetBCz3czMpJmkl6QzrMkwWgS3OOMK8HO1BRSYC3hr/Vv8ffRvAJYfW87iw4v56vqvCPQIdIXkb+DXAACrzcrELhMZv2q8a3TTp24fUopSeOm/l5jcezIdwzuy4cQGwOEy/HrX16s1cvrr6F8upVLOZ4mf0T2q+xW3lkdB4Wqk1lbeX44UlJaxePtxvA1axs3cQkmZjYEtw+ndLJRn5+8A4EBGER8Ni+eb/46wOTmXuCg/XrkxlhBv99GE3e4wxp+KrSphTbXfVMCXO750kxVbiimyFDFiyQiKLA5HhOXHlvNyx5e5rcltriiypdZSBOK8vaeMFqNLqZSzN3cv2absKlf5a9QaOkV04o8hf5CUk4SPzof0knTeXP8mAK+seYXpA6ZTZi8j05hJ88Dm+On9qBhL7nQUlxVXkpVaSx1ZfxQUFC45tbny/rKjxGyjVZQ/w79Z7wqF37dFOJ8s2+8qcyirhAdmbOa9IXHc2b4uW4/msWBrKmN6NsRTd/J2qVTQsUEgG47kumQBnloahZ4+g+O5UFxWjFatRa92V2hmq3vE4vZh7VmVssqlVMr5cvuXXF//egxqA4cLDjN111Q0Kg0Pxj1IlHfUWTPs5ZTmYLQYUavUeGm9Tpt/pqpoy+V4aj3x1HoS4R3BofxDPL7ycVegzAa+DQgwBBDkEURsUOwZ23IqN8bcyNc7vsYqT05b3t7kdiVKsoLCZUKtrby/HJFSUmSyuGWG1KodhviKZBeX8d+hbLKKzCzekY5OrWJ4x/p46jTklZSRbyzj0xUHeX5AM+ZuTmHtoWyahvnwyo2xrtwr50u+OZ9N6ZuYf2A+4Z7hPBD3ABGeEWjUGrx13gxtMpQf9vzgKm/QGKo0eJfZylALNXtz93Lvnyej4/x19C9+GvwTTQKanLYNJ0pOMG7ZOJfx/bp61/Fyx5dpEdSC3Tm7XeVCPUMJ96reVF59n/r8dstvHM4/jJ/ejzCvsPNe7R/iGcL0G6bzf5v/j1xTLjc1vInbmtx2xpA3CgoKF48zuRsbgHFAI2An8J2U8tzdkC4jPHQagn30qFXCNWW1LCmTYe3q8umKg65yapXghpYRPDhjM+DI9CgllFntrNqfRW6JmV+2pfFXUgZD2kTyeJ/GeOjUhPnoUancp3KsNjvFZiteOg1azZkN0xa7hYUHFvJ/W/7PJfsj+Q9+veVXwr3CMWgMPNjqQXpG9eTnAz+Tb8rn4fiH8dJ58c2Ob9zWotzR9A4AvtjunojTLu18s+Mb3ur6Fha7BSGEWzKwEksJn2z9xM2ja/mx5fSt35fPrvuMKdumsCljE80Cm/FEmyeq7U2mUTsSfVWV7Otc8dB4EBcSx6Tek7BJG356PyVxlILCZcSZfo3TAQuwGkfa4OY4pseuWAK9dFhtNl4Z2JxD2SVE+XuQlF7Aja0iCPDU8tOWVPw9dIzpEcPPW1MpKLUAjlX2Xno1+aVl7DleQFq+owMvNluZse4o4MhI2bFBIB76k7c0q8jM7A1HWX0gmzb1A3igWwNCfU9v48g35fP9ru/dZKXWUlYcXcGQJkNIKUrh88TPKSorYkTzEcQFx6FSqSgqK+LHQT+SU5rDtF3T6FynM4MbDkYIUaVL8vX1rmdLxhamJU1Dr9LzUMJDRPtG46n1pNRSytaMrZWO+Sf1H9KK01wJu1KKUpiybQovdnjxvEPBXCiX6rwKCgpn5kyKJVZK2QpACPEdsPHiNKl2CfX1oF+LML5YdYi/kk7Qp1koWo2KbcfyGdGhPl56NWF+egpLLTQL9+GGVhHc1bEePgYtpRYbh7NL6BQTyB+7T7gZ6hPq+js6cpsdjVpFbkkZj87e6rLBbD6ax/I9mcwd2+m002UC4bbIcGTzkQxsMBC7tDu8vRYNc9kVNpzYwFtd32Jvzl5m7Z0FQLPAZkzpM4Vgj2CX2+19Le9j64qTiqJ1aGvUKjVjl411yf5N+9c1PWbQGGgZ1JL0EvdYau3C2vFX8l8uL65ynmzzJP5ndCBUUFC41jiTYrGUf5BSWqvjrXMlkFVk4rYv17kSb209ls+Wo/l0bxzMq7/uAiDc18CcsZ0waFR46TT4eGgpLLWgUQmeG9CMIpOVhQ93YfWBbD76ez+hPnoe7tWIp+Yl0j46kOEd6lFaZmPDkVyaR/gwKK4OGpXgr6QMsovNp1UsPjofRjYfyRfbv+Cu5ncR6hnKqN9HMTBmIHq13s1YDTB191Tuib0HP70fz7d/njredUgrTkMlVAR7BCOEoHVoaz7t8ynf7fwOjUrDy51e5rU1r7nVY5d2pu2axsQuE/HWefN0+6fZkb3DtTq/bVhbukV24631b1Vqs7zKXbHyTfkUlhVSYikh2CO4WhkuFRSudc6kWOKFEOWLBQTg4dwWOKLcX5FBkZKzjZWyOa7cl8mjfRq5tk8UmkjPL+VIdgl1/D3w0KrJKTGj16h5dPY2Sp3G/vu6RrPq2V6UmK38lZTBkawSNh7JZWdqAa/cGMvYHjG0qR/AtLXJWKx27mhfF0/t6TslvUbPiGYjCPUMJTYolhFLRriNYE6l3FPrw54f8tX2r9ic4bAJhXmGMW3ANKJ8ovDV+9Krbi8SQhNQoTptfRUVRKR3JHMGzSGnNMe1gFJKSaR3JKnFqa5yHcM7Xnbpj2uSXFMur697nRXHHP4qAfoApg6YSrBHML4632q5RlcHo8VIqa0UX63vJQ9Po6BQE5zJK+yqfC0rX9jdPjqAG1pGIJEs3XnCrUzDEC9Kymy8tGAXz/Vvyo60Ap7r35Th36x3KRWA79ckM7RtFH/tOkH/luF0bBAICI7llmDQqejWOJi7vzs5g7j5aB5f39OWSH8PckrKSMsvxcegdWWqBIfdYEjjIezO3u1SAv+m/ssnvT9hwYEFbqOWu5rfRXJBMiWWEpdSAUd04fc2vsfb3d92ueBWDCv/YNyDPLbiMde2Sqi4t8W96NQnF4EGewRXWmw4bcA0vt/1Pbuyd9E1sit3NL2jSjuHzW6joKwAjdBc0UEZd2fvdikVgDxzHq+tfY3hzYYjpaR7VPcLSkMspeR4yXE+3fYpB/IO0COqB3c1v0uJPaZwxVNrrjRCiO+BQUCmlLKlUzYReBDIchZ7SUq51LnvReB+wAY8LqX8szbaVT/Qk//d0hKtRsXsDccQwOiu0Xjr1bStH0CLOr4MaR3JE3MTAfhx0zGe6tuUErONjEJzpfoSj+UzOL4OQ75cS6EzHEyPxsH0aBLCnI3HXOW89Rom3hRLgKeOTUfz0GtUTFp+gFX7sujZJISPhsW7MlKqhIpQz1A0QoNVWsk35/Pz/p/5su+XzN4zm2JLMYMbDqZNaBsKzAVVxt3anbMbk9VU5dqONqFt+Or6r5i2exp6tZ5x8eOI8ok6670L8wrjqXZPUWopxVvnXaUnVp4pj6VHlvLLgV8I0Acwvu14Gvo3vCJzlFRU1uXsydmDv96fccvG8UaXN7i50c3VCkNTFTmlOYxcMtKVMGx/3n725e7jne7vXJDCUlC41NSmj+Y0YAow4xT5x1LKDysKhBCxwJ1AC6AOsEwI0UTKM8wDnSchPgYi/D24b9oml2zbnESm3tue5wc046ctKQz/ZgOlFhsalSDK3xOQmK02ogI8SM1zT/AVX9efV3/d5VIqAP8eyCaz0IxadbLD+b9h8fy44Rir9jt0qpdOzZd3tUUlYMPhXLYey6dvbBhWu5UCcwEalYY3ur7BxLUTKbOXsezYMnrV7cX19a/nePFx5u2bx96cvYyLH8fa42tZfHixW7vahLY57TSVr96XLpFdaBXSCpVQ4aX1Is+UR6m1FH+9f6XMj3ZpJ8AQgEqo0Kv1lRZtlmOxWZizdw6fb/8cgB5RPbDarSRmJhLkEUSwR3Ct5SqxSzs5pTmkFKXgofEgzDOsyogA50KXOl0qeenFh8ZzMN/hmj4jaQY9onqc9wjjUMGhSlkoV6etxmg1KopF4Yqm1hSLlPLfcwhWeTMwR0ppBo4IIQ4CHYB1Nd2uglIL364+XEk+bU0yrw2O5bfE45itdu7qVJ+hbSLJKDQR5uuIFfbJHQk8OGMzeUYLapVgbI8YNGrBlqP5ler7Z38W93aNZsnOdKKDPDFZbC6lAnBjXB0CvHTc1bE+j/ZujNlio7ismJ/2/8SCAwvwN/gzodMElgxZgtFqxFPtyeLDi5m0bRIAjfwbMarFKPwN/rQObU2fun1YkeKYtmng24Cn2j2Fl+7MeV18dD4UlxWz7vg6Jm+bTKm1lBHNRtCvfj/UKjXbs7YzZdsUzDYzI5uP5Pr6158xU2OBuYA5++YAEBsYy4hmI3jw7wddq+271unK293eduvw80x5ZBozyTPlEeMfg7/en2JLMRklGRSWFRLjF0OAIYASSwn55nxSi1Jp4NcAX50v3rqTUQ5Si1K5a+ldrqCXzQOb8/n1n19Q7LAmAU0Y2ngoPx/4GYA6XnV4rPVjvLT6JQC0Ku15j1aAKu0pKqFCde3m31O4SrgUq8oeFULcA2wGnpZS5gGRwPoKZVKdskoIIcYAYwDq1Tt9bvTToRZUmaFRr1EhpeSXh7tgKrOh16qZsS6ZX8sVTcd6jOxYj9kPdKLQZEGrVvHn7hP8tz+bdtEBrD3k/ubZKtKPcF89sx7oSOKxPA5knIxv1Tc2jK6NgtiTXkiEnweHsoppFenHicJiPtrykaNQIdy26DZ+vflXggxBvLj6RXpE9WDWDbOwYyfTmElSThIGjYFX17xK73q9ua/VfdjsNnJNuRwuOEwdb/fMl1VxrOgYY/4e49p+c/2beGm9qOdTj4eWnQyF//q611EJFbc0uuX0nanAZacZ3nw4H235yKVUANYcX8Oe3D10jewKQG5pLs+vfp716Y6v3qA28F3/75i/bz4LDjnSGHtpvfhp0E/M3T+X6bunO08jeKvbW/Sr3w+DxkBRWRHvb3rfLZLyntw9LDu6jDub3XnWe3A6AgwBPNX2KcbFj8NoNZJSmMLbG952OTA8FP/QBY3A6vnUI8onitSikw4RgxoMOmu4HQWFy52LrVi+AN7EES7wTeD/gPvOpQIp5dfA1wDt2rU7Z19Xb4OWJ65rxKr9mZSHv1IJuKtTfQpKrRSYLExedoCsYjMDWobz3aj2PDBjE7M2HGN012j8PXS8tmgXG4/k0a5+AFNGtKZb42C+/+8wHWKCUAuB0WIlzFdPqK8Heq2KYE8dmcVmpqx0TKHc1bEehSYry/Zk8uduh+OARiX44q429I++gT+TfwfAJm0sPLiQEc1HsCN7B6vTVqMSKur71sdoMdI9sjtxIXHsytlVaX3JyOYj6RbZ7Yz3wmK3uIWHKSff5AjNLxBu3mI/7PmBXlG9EMKx3sZH6+MWRiVAH8C4uHFMXDeRSO9IDuQdqFT3zuydLsWSlJvkUirgyGL52trXGN1itEuxWGwWCsoKXEoFHB5sb61/i04RnTBoDJhtZvbl7at0rq2ZW90CcZ4P5VGbzVYzKlQ0C2xGpHck98TeQ+OAxuddLzgcJGYMmMG8ffPYnbObvvX70qtuLyXmmcIVz0VVLM74YwAIIb4Byg0DaUDdCkWjnLJaIcLfwMz7OjJvcwpCwPAO9Vi+N4NbEyK5/avNroWP364+QmmZjTvb12Pa2mSO5hhp1NyHL+9qR2mZFZUQTFubTONQH9o1COKLVYew2CT3dY0mwFOHWiUI9DJwNKeUozlG7usazYx1R/ExaLBJXEoFwGqXvPTLLj4dNdqlWAB89D54aDzoGN6RUmspY+PHcjDvIL56X5oENMFD40GH8A6sTFnpdo296/Y+630QCLy1J6eT6njVYULnCUgk/gZ/Zt4wk8+3f87a42sBR6bIXHMuL69+mRxTDoNiBnFPi3tcMb/UKjXX17+eSO9ICswFtA1rW8kA3rVOV9fnXdm7KrXpUP4ht5GWn96PlKKUSuVKraWuNMteGi86R3RmwcEFbmWur3d9jYV60Wv0RPtF82qnV7FJGx6amskcEeIZwtj4sZhtZjw1njXmwqygcCm5qIpFCBEhpSxf0n0rUN6z/AbMFkJ8hMN435haXOmv16hZsC2FuzrVw9egZUdaAYPj6pBZZK4U9n7BtjS+vKst09cl0yTMh9wSM1abREpIyTeyK62A2Ahfnp6z3XXMxEVJeBk0dI0JwsugoW6AJ8//vIPrm4cxd2xnQn31bE/NOLVZZBWbUYuTLr8+Wh9uiL4Bq83KCx1eINOYyb1/3uuaXmrs35iv+n7FSx1fIq04jf15+1ELNSOajaBpQNOz3geNSsPdsXfz84GfsdgtvNvjXV5b+xpHChzphD01nnza51NSi1I5VnSMRxIeYcKaCSTlOrzQvtv1HSabiSfbPOny+vLT+9GpTifMVjPNApvx8PKHOVJwBI1Kw70t7qWuz8n3h26R3fgs8TO3NrUPb8/e3L2u7VxTLjF+MZVSHwcZglzOCR5aDx5t/SiH8g+xI3sHKqHi5oY30z68/VnvQXUptZSSb85nR9YO6vjUIdI78ryDaJ6KRqVRYp0pXFXUprvxj0AvIFgIkQq8BvQSQiTgmApLBsYCSCl3CyHmAUmAFXikNjzCyvH31PF0v2a8s3QPi3acDF3y5s0tGNauLvM2n3xD9jFoMFttvHNrK0wWG4/O3kpyjpE+zUJ5/LpGdG8cwsLE45XOMXv9McosdrRqwcBWEfzwQCcWbEtlyY407u8WQ/fGlY3KTcK8Cfbw58YGNxLiGcKQxkNAwonSExzOP8yPe390s1kcyD/An8l/MrjhYL7p+w2l1lI0Kg1eWi83w/aZCPUMZeHNC1mTtobEzESXUgEwWo18teMrnmr7FHW865BpzGRn9smkogJBuGc4acVpJOUk0SSgCWGeYfgb/NFr9ET5RDG1/1RKraVoVVq8dd6ugJdWu5Vgj2BmD5zNzD0z+ePIH8T4x/BKp1dYfHixy9W6aUBTDGoDH/T8gAlrJlBsKSbYI5hP+3zqZt8I9Qzl0+s+xWQ1uTzdampKyWa3sTljM4+ueNSVtKxTRCfe6/FejSkXBYWrCXG6PBtXAu3atZObN1dea1AdDmYWc/1H/7jJPHVqpt/Xgdu/POmM9s6QVrSpF4CPQc3oqZsY3qEeMcFeHMwqpsxqo2NMMDPWHmVhovvMXc8mIbx9ayt2puXTPMKXIG89BrWKIzklvLRgJ7e2jsQu4e2lezCW2YgO8uT70e2JCfGmzFbGwbyDHC08SovgFgxbPIy3ur7F6+teJ9+c73aeIY2HEOkdye1Nbr8gQ7LJYuKN9W+w6PAiN3moZyg/3vgjoZ6hzN07l7c2nAzrcnfs3XhrvPlix8kIysOaDOPxNo+f0V0235TPr4d+Zfru6QghGN1iNH3r90Ug+L/N/0eUTxTdo7ojpSSlKIUsYxZ3xd5FUVkRZpsZg8ZAgD7gjKFVCs2F5JhySMxMpElAE+p41znv+5NlzOLOJXeSacx0k0/rP4224W3Pq85Lhc1uI8+ch5QSH53PFbm+SOHCEUJskVK2q636r9nx9/H80koyY5mNQE8dD/dqSGaRmTvb13WEdNGo2JFWwFu3tOLDv/axPSWfNvUCeLpfE8J8dDzUK4bfd6W78rx46dW8Oqg5h7OLySg042MopchkIcLPg9u/Wke+0cKm5DxubxfFzPs64OuhxUOnxs/D4X5qsVv4LPEzJnSeQFFZER/0+IASSwmd63Tm9yO/u7W5U0Qnvkj8gsENB7tfi8VIrimXjSc2EukdSSP/Rqddb2Gz29iRvYNOdTpVUiw9Inu43vx71+vNF9u/cK296Fe/n1uuF4B5++cxuuXoMyqW1Wmr+XDzyaVM7296n3DPcPpG9+W2JrfxwF8P8M1OR+JST40nC25egEFjqHYnWGopZeHBhXyw+QOX7MYGN/JChxfOKyKyXdorKRWAwwWHryjFUlRWxJq0NXyy9RMKzYXc3OhmHox7UBl1KdQ416xiaRzmjUYlsFawqUQFeJBZZOJwdgl+Ho5QK3X8PcgpNlM30JM7vl5PVpFj9f26wzk8/uM25o3rjEGj5q/xPZix7ihmq517u9Tn42UHWFxhmu3x6xpxZ/u63N2pPp0bBpFXYmHOpmMM/XIdP43rTHqBiWM5Rga0CsfHQ8OI5iNYfmw5X+/4GrPNzPBmw3ms9WNkGbPYnLEZnUrHnc3uxGKzEGgIdFu0aLPb2JKxxW3qJjYols+v+7xK5ZJryuWF1S/wTLtnGNFsBD/t/wmL3UKniE48mvCoy1Ad4hHCvMHz+PXgr6QVp+Gj86kyLH9OaY6bLaUiJ0pOMH///Eryefvn0alOJ1oEteDnm35m7r65+On8uK3JbYR4hFTnK3VRaClk0tZJbrIlR5YwNn7seSkWnVpHXHAcO7J3uMlr0oZzMUgtSuXZf591bc/aMwudWsfD8Q8rSdIUapRrUrFkF5vRqQVf3d2W5+bvIKekjJhgL94d2gpfg4Z1h3IoKLXg76Hlyb6NeWfpHkZ3beBSKuUcLzBhttiJCfEiq8hMZqEJg1ZNTkmZm1IBWLLjBPd0qk9OcRmjvt9ImK+B8X2b0CTMB61KILVq3v59D7GRvjQI9sIu7byz8R3X8d/s/AZ/vT93x97NCx1eQCVUbDyxkWi/aG5ocAP/pv5LlzpdCDIEUWwp5t2N77qUSr/6/RjccDAllhIMGoNbYi9wvJFnlWbx8n8vc1fsXXzT7xsEAn+9PwWWAv5Ictg/mgQ0IdQzlAfjHkRKSY4ph2CPYLJLs1116dX6066fsdvt7M/dX+WUVJAhCI1Kg8VmcYRMiR9HkCHovLykymxlVWbVzDRm0sCvwTnXF2AI4P2e7zN+5Xj25O7BR+vDcx2eu+JiepUv9KzIokOLuKv5XYRozk15KyiciWtKsVhsNo5kGTFZbexKK8DPQ8svD3ehoNTCsVwjry9KIraOL4PjIpi14Rh1/D0wW+z0bxmO4TRRiXUaFcVmK546Nf6eWv5MyqBnk5M/Uk+dmvdvi0Mg+GlLKtfHhhFbx5fXftvNMz9tZ+HDXdFrBJOW78dYZkNKSYmlqMpOYOHBhbzT/R389f5sy9xG27C23PfHfa589z5aH2YOnMnWjK38r9v/mLdvHo0DGqNRaZi4diKFZYUMihnkyPxYoVPUq/W0CW3D1sytTNs9jWm7p3FjgxvpENGB19aeDLHfOqQ17/d8n/9S/0OtUtM9qjtfXv8lT616imNFxwjzDHPEudJVPQ1mkRZWpqxkZPORrE5d7er8DWoDY+PHUlxWzGtrX+O/tP+I9IlkYueJxIXEnbNrr4fGgzpedThectKpQqvSEu0XfU71VCTSO5Iv+36J2WpGo9Lgp/dzC9p5PhSYCyizlaESKgINgeesRK12K/mmfCQST61npReGU4nwiqgkCzQEohZXZbxZhUvINaVYcksslFptPDB9s2v0oVOr+HZUOyYtO8CBzGJ8PbR0bRjETfERDI6vg8liY+qaZG5oGUH/FmH8ufukm/BN8REczCyijr8H/+7PJr5uAHe0r4ddSvQaFWarnVcHOcLE/JV08rj7uzVgbI8YPl91iLWHsikotbByXyYJdf0J8Svj3+MrqnwbDvYIdnld9arbi7fWv+VSKgBFliK+3fktfno/3t74NpN7T8ZT48noP0e7yiw4uAAvrRdPtHnCZbPwN/jzbvd3efbfZ9metR1/vT9j4sZw9+93u51/W9Y2dmXv4qudX3Gi5AS+Ol9+uekXZtwwgzJbGRqV5oz5SvRqPT2ievDj3h/5vv/3rEhZgUBwY8yN+On8eOqfp9iSsQVwTNuM/XssS4csxcP73BRLoCGQL67/gqf+eYpD+YcI8wzj7W5v46/zP6d6rHary9DtofaoUVvE8eLjvPzfy2zO2Exdn7q80eUNWga3rLYdqcBcwF9H/2Ly1skUlxUzoMEAnmn3zBlHUYMbDmZm0kyXjUwlVDzb/tkLjqmmoHAq15RiKSi18PvOdLcprTKbnc9WHmRYu7r8b+ke7u/agAbBXug0KpbsOE7vpqHY7JJ3ft/Dx3ck0K9FODtTC+jdNISm4T6k5hkZOPk/1/qXcF8DCx7uwvT7OvDSgp3EBHvxYpL7mpVpa5OZN7Yzn686hK9By9KdJ2gZ6cv/3dGMKds/YHXaP3zV9yt+P/y7S3FoVBrGtx3vshGU2crccqOUk16STgO/BljtVr7Y/gUPxT9UqczvR37nvpb3uXViEd4RfNrnU9cbtE3aKCwrrHRsekk6AfoATpScoLCskK93fM3zHZ6v9tt769DW7M7ZzWMrHqNtWFtah7YmyBBEmb3MpVTKsUkbWzO2Vis0TUVUQkWMfwzf9fsOi92CWqgJNARSUFbAlswtbM/cTuc6nYn2jT6tzaXc0P3uxnfJNeXSI6oHr3V+jRDPC58yyi3N5YmVT7jW66QUpfDg3w/yx5A/qq1YjhUe4411b7i2Fx9ejI/Oh6faPnXaOkI8Qvhp8E8sP7acrNIsBscMrpHrUVA4lWtKsfjoNRzPN1WSHy8opU+zULz1KiL8DQycvNrl4eXrsY9Z93dk5DcbGDtzC23rBdA3NpR6QV4s35vJnI0pbosqTxSamLvZsfjyh/s7kpJnrHQ+m11itdtpEOxFn+ahtIj0Y9+JIvJNxaxMWY7JZuLjLR/zZd8vWXd8HXZp56ZGNxFsOLn2xUfnw+CYwZU64151e7H+uCNMyomSE1V2nGGeYZUiGO/J2cPmjM10juhMo4BGaNAQHxLP9qyTCz/VQk1ccByfbPnEJUspTqHMVlZtxeJv8OeBVg9wR9M7HFM4Gk+8dd5kGbPw0fpgspnoEN4BrVrLxvSNhHuFV6veqqj49p5nyuO1Na+xKnUVAJ9v/5xRsaMYFz+uyjU/WcYsN0P3P6n/8Ob6N/lft/9d8PoYs83stggUHKOjpJwkwrzCqlXHrwd/rST7M/lPHmz14GkVixCCEM+QC4qfpqBQHa6pMKoeOjUDW1XuqPrFhvPjxmP0ahbGh3/ucykVgMJSK/O3pHJH+7qM7FiP529oRn6phWV7MujaMJhAr8oRak8UmJi57hh9/u8fQn0NeOncp4aiAjwI8NQxb2xnIvw8iA7ypGeTEOr4e7o6ls0Zmxn1xyi2ZGyhdVhrIr0j3Tx3hBD0qdeH0S1GY1AbMKgNjGg2gmjfaFcIlr71++Kt8SbM82RnpRZqnmr3lGtaJ9+cz7sb32X23tkczD/IIyseYfLWyWiEhg96fkC7MIere7hXOB/1+ohfD/3qZhi/peEt1V6MWY5BYyDEM4RQz1DXsX56P97q9hbTb5hOXEgcDf0a8l3/72jge+7G9qrIN+e7lEo5s/bMosRSUmX5VSmrKsn+Sf2HMlsZmcZMZu2ZxReJX3Cs8JjbotXqoFapq7QbhXqGVruOquxF4Z7hStpkhcuCa2rE4u+po3W9AF6+sTmfrjiAqczO4PgIrmseyr1TN9G/ZXiVybzS8kt58rrGHC8wcefX6ygfoHyx6hBzxnRi/eH/3JRRvxbhTPh1F8/f0IxFicf5fGQb3lyyh4OZxSTU9eejYfE0CPZyGWv9PR1v+1LqeanDSzy0/CHs0o7VbuV4yXEa+Teq1CZweCs9nPAw98Teg13aOVJwhBf/exG1UNM/uj8jmo/gy8Qv+bDnh+zM3klhWSFd6nQh0utk4OhSSykjm49kZcpK7NLO/S3vZ0bSDIqtxUR4RfBJ708w28yohAqt0LIlYwsGtQGVUHFP7D10qdOlRr4bnVpHk4Am3L7odootjkjQ05Om88PAH0jMSmRr5lb6Rfcj2jf6vHKVFJgLKsls0kaZrbL3GEA938qRs+v61MVsMzNs8TBXfV/t+IppA6aREJpQ7bb46nx5rPVjvL/pfZesfXh7IrwrG9dPR//o/sxImkF6icP7UCM0PN/heWVNisJlwTW58j6joJT9mcVoVCr+2Z/JzHVHKSmz8c6QlhSWWnnnd/dpig9ui6N742DGzNzCjlT3Dmp838b4eeh4e8kefAwanurbBKPFxttL9/DLQ1249fO1xEf5MbprA+r4GTiUVUyvJiF4G7T4elQe7RgtRrJLs/kn9R/CPMNoE9am2jlF8kx5rojC69LXsTZtLe/1eI+31r+FyWYixi+GoU2G0iygmWv0czj/MHcuudP11q1T6fiy75dEeEVUmVXSZDVRVOaw+5yPZ1SuKZfEzETWHV9H18iuxIXEEWgIxGK38OGmD5m9d7Zb+c51OtMurB2fbvsUgKfbPs3wZsPPed1FljGLmxbe5FJa4FAUM26YUeX9zSnN4cG/HuRAvuN+CgSzb5zNypSVfL3ja7ey8SHxTOkz5ZzWyBSaCzlRcoI1x9fQNLApzQKanbMRPbs0m00nNpFbmkvPuj0J8giqseCYClc3ysr7WkCrUbEsKYPp6466yVvU8cNbr+FEoYl5m1LQalTc2yUag1ZNQamF7ApG/5aRvjSP8EWvVtEvNow+TUMoNltRqwS3fr4WtRCYLI5RzPbUAsY7Ux0D/PhgJ37cuJfXBrdwpSMux1PrST1tPe5oegfFZcUYrUaOFx/HQ+2BHTtrj69lS8YWrqt3HS2DW7qtCQkwBNDQvyHZpdkMjhnMsCbDUAs1b3R1GHl1ap1bJ2qymvh257duUzll9jJmJc3i1U6vVnnvKq6Azzflk5iZyO9HfqdFcAt61+19Rq+kfFM+r6973ZVHfs6+OfSv359XO7+KTq3jRMmJSsfklOa42TS+2P4FN8bceM7rLgL0AUztP5UJayewN3cvbcLa8GbXN0+rtIM8gvim3zfsytlFWlEa3SK7EWwIZnbx7Eplc0w5WGXlhaJnojwcf5PAJud0XEWCPYK5ocEN5328gkJtcU0qlkAvPQ/3bkSZTbJgWyqBnjqeG9AMnVpFscnCoLgIRneJRgI7U/IxaFX4e2i5KaEO09YmM/nO1uQay9icnIe/p460/FLGztxCXKQfLw1szhPXNead3/disdkJ9dGTWUEhhfnq8dSpGdGxPllFZuxSEuJjwGa3u1IZF5UV8UfyH/zf5v+jxFJC04CmfNzrY1767yUSsxIBx2K3YU2G8WTbJ906XiEE03ZP47+0//jsus+YtHUSG09sRKvSMqrFKEbFjnK9WVvslkqpcQFaBLXAKq2kFaehFmoEjik7jUpDma3MoVzUBmbtmcVXO74CYP6B+czeM5tv+n1zWuVSbCl2KZVy/jz6J0+1ewo/vR/Dmg5zZcEsp390f9YdPxm7zWg1uhZ+giPKQHXsChq1hmZBzfjy+i+xSRtatfaM2TDBoVx6RvV0kw1rOqxS2JubG9581roUzk51v0uFy59rUrEAWKx2BseF80zfJphtNmx2MFlsBPsYOJhRhF2CANRqFYGeOu7+biPfjW5P++hAfk08zm/bHYvv5m9JpW39AF6/qQWP/biNyAAP+jYP448nunM4u5iZ93dkwq+7SEzJJ6GuP68NjmVXWgGv/ZZEqcVG8wgfPhvRhjkbjxHgpWdIm0gsosDNlTStOI10Y7pLqZQz/8B8xsSNcSkWm93G0iNLWXx4MaNbjObHvT+y8YQj+4DFbuHbnd/SKaITHSM6Ag7PsmFNhrmM/QAPxz+Ml86LEUtG0DGiI5HekfSq24v/rf8fdza7k8TMRPbn7efDnh8ydddUt/YcyD/A0cKjVSoWu7S78qecSrmdo2VwS17p9IorjM2dTe+kSUATt9D6nSM646HxILc0l3/T/mVD+gZ6RvWkQ0SHatkXLnTNRoxfDG91fYspiVMwWowMbTyUO5reoYS9vwDyTfkk5Sax+NBimgc154YGN1xQSmmFS881+WvIKymjyGzlt+3pGLSZ3N4uis9WHGTprhO0qRfAGze34K7vNlBitjKiY33uaBeFVqPi/umb+Oaediza4R4mf8vRPJ7q2wRPnZrVB7IZ1TmaVfsyCfXV8+rCnYzp0ZAwXz3bUwswltl47ueToef3pBfx+m+7eevWVtjskhKzFb3WHx+tj2sNi16tr9L4bJd2LHaLa7vYUsyyo8sAaBXciv9t+F+lY5YeXupSLADtwtvxYocX+X7X93hoPOhZtydf7fiKj3t9zOLDi8kwZmCymhjfdjxj/h7DjBtmMOr3UeSZ86oMm3JqO612K1nGLObsm0Pf+n0J8wwjw3hyXU8drzpunmFDGw/lunrXIZF4abw4lH+IJgFNSClKoUdUD55t9yxWaXVbTLn48GLXlNr5GPbPBV+9L4NiBjmyYEpHIraKcdoUzo1Sa6nbyHfR4UXM2TuH6TdMV5TLFcw1p1gKjRZ2pxdw93cbXamJf9x4jB8e6MiGI7lsPZbHV/8cYnj7enzxzyGmr02mc0wQ1zcPY9LyA1icSb5OxVhmRadR0SjUi9S8UhqEePHVP4fZfDSPnWnb+HFMJ9YdyiG72N3rTKMSPNy7Ea8v2s2yPZnc3SWC4R1D+GHgbJILj/Dlji9JykkixCMEX52v26LFpgFNXcmuwBHKpLF/Y7ZkbCHDmEG0bzS5ply387UMbum2XT4F1adeH2x2G2uPr2V0i9Hc/9f9mG2Otv528DfmDJrDY60fw2gxEuYZRnZpNu3D27PpxCa388cGxbrVn12azZDfhlBsKWZ9+no+6PkBXyR+wa7sXcSFxPFyp5fdOhCNSuO23SqkFV/1/Qqb3eYKW5JckFxp/c6fR//k6XZP17piAYe7sNLp1QxFZUVM2z3NTXas6BgH8w8q9/gKpjYTfX0PDAIypZQtnbJAYC4QjSPR1zApZZ5w+N1OAgYCRmC0lHJrbbQr12jmsxWH3JSD2WpnzqYUbmgZzqwNx1h7KIc3bznp+vnP/kyig7zw9dAgkDQN82FfxslQKkFeOrz1Wmw2ycO9GrHhcC7D2kXRNNyHzUfzKLXYeOHnHbw7tBX5RscIw99Ty9N9m9Kmvj9qlaBnk1A6NvLE7rmJe/6egtlmJtI7kvd7vM+2zG3o1Dq+6/8dH2z6gP15++kQ3qFSOA6dWsf9re5n2bFlHC86zptd36TAXICPzoejhUeZt38ePaJ6VLonNmnjt0O/MX//fP6v5//x26HfGN92PC2CWjjSF+u82ZKxhR3ZO9CpdLzT/R18dD482eZJftjzA+uOr6O+b30eaf0IGuH+SP184GeKLcX0rtubEc1HIKXkhQ4v4K31xqAx4Kv3Pet3duoUl8lW9ZRaxUjLNruNPFMeRqsRg9qAj84HD63iMXUpsEu7I4+O2lApHpqUskqX70Jz5agPClcOtTlimQZMAWZUkL0ALJdSviuEeMG5/TxwA450xI2BjsAXzv81itVmx2y1U2yu7MFTbLbi7+noeBqHedM41Ju5YzohgTKrjTBfD/q3CEOnVvH9qHa8+8de1h3OoUWELy8PiuV4vpHfHuuKTq3CLu3M3ZzCQ70asmxPBp46DV0bBfPX7gxGdqxHt8bBPN6nMZ+uOMCrvzqyM/eLDeOZQQEMXfR/rjalFafx2trXeKbdM2w6sYmBDQbyca+PMdvMeGg8XFNIVrvVlTM9zDOM+YPnY7Ka+HHvj/Su15tvd36LyWZiTKsxmK2V1+kUmgv5bud3GK1GBIJbG9/KZ4mf8e7GdwFoF9aOJ9o8wfub3mfFsRXEBcfxTvd3GPXHKG5rchuvdn6VTGMm7258l497fUwQJ20sBeYC+tbvS7/6/Xh61dMUlhXirfXmnW7vEBcSd9bvLN+Uj9FqRKPSODohexn+en9CPUPdcqQ09G+Ip9YTm92GyWoiz5zH/X/ez/GS4+hUOp5u9zSDGw522aPyTHkYLUZUQoWHxuO8wukrnJ2c0hyWHF7CxhMb6RbZjX71+7m9DBk0BnpE9eCf1JNJ9zw0HsSHxF+K5irUELWmWKSU/wohok8R34wjXTHAdGAVDsVyMzBDOhbVrBdC+AshIqSU6dQgucYyJi8/wMiO9Xjhl51u+25tHcn7f+zFR6/h5YGxjJ+byK7jhXjrNUy+MwGTxcaag7msPpBDbIQPLwxsjtVmQ0pBqcVGuK8Hx/NNLExM47fE4wxoGU5pmZXFj3Ulz2hhUWI6xwtKySg088rA5vydlMHqAyfDzWcWmdl8YlulNh/MP4herefDzR/yd/LfTL5uslt8pyxjFnP3zSUpJ4n+0f3pEdUDvVrP9szt3NL4FoYtGuayw/yZ/CdfXv8lXjovzDYzNmnDoDa4LRRcfHgxdbzr8G/qv65zbM7YzJ/Jf9I/uj+/HfqNHdk7KLOVYbaa+X7X965yGpUGT+3JqTmAO5reQYG5gHHLxrncmostxTzz7zPMuXEOBo2h0jGu76s0l+dXP8/RwqO83+N9XlnzCkcLjxIbGMtn/9/eeYdHUbVt/He2l/Qe0ugdpBcFwYaAoIAgIiCCgCigiL1gQ0UFK6ACAiJdpCiIgoIUkd57J430nuxm63x/nGWTEGyfqPFl7+vKxe6ZmTPP7g5zz3nK/dwynY8PfMzRnKO0iGjBk62eBGDRiUVsv7idJmFNmNRxEk9sfoJsazaTdk2iQ0wH/HX+ZFuzGffTOK9cTefYzrx6w6tXvbiwxFGCVqX9yyrI/1Xkluby2MbHOJgtv+fNKZvZlLyJtzq+5SXyQH0gr1z/CjMOzuCn5J+I84/jubbP+Qo9/+P4p2MskeXIIh24pDUSAySX2y/FM3ZVicVqd/Ht4XSevL0+z3Wrz5d7UtBrVDxyUy3igo280L0B9aMDeGHlYY5clEvxYpuTM1nFkjAOSnN+OpnJ2iPpvHpnIx6av5e3727KyYxCbqwTzvGLhXwzpgO/nMnC4VKYuvGsbODVOIp+rWJJLyjFT69n86msCral5luJ96tVyeZIU6S3IPFg9kHyS/Mxqo2ohIpCeyFv7HyDDUkbANmZsXft3oxuNpo8Wx6bjm6qENwHWQcytNFQxm0aB0DtoNpMvXkqs7rM4pmtz+Cn8+Pn1J8r2bE3Yy89a/Xkm7PfyO/FUczQxkP59NCn3n2eaPkEftqK8i5Rpiicbmcl2ROby0aGJYMAfcAVicXpdvLV6a/YkbaDJ1o9wbT900gslHVHx3KPMWbDGGbcOsN7vN1l54nNT3hjPltTt7I1dStPtX6KZ7Y8A8DR7KNEmiL5/MjnFTTQNqVsYt35dfSv3x+V+OsqR/ml+exK38WqM6uI8YthaOOhlfTZqjqcbqd3VXeph8+fle4ptBV6SeUStl3chsVpIYgg71iYMYzxrcYzsulIdGrdPxIn8+Hvxb8WvFcURRFC/OmyfyHESGAkQHx8ZdmN34JBq8asU5Oca+F4WiEPdaqJ0+Vm4Y4k6kb6cXP9CM5llfDTyYo3/ZYJIZWq8c9nl2DQqlk4vC2zfz7H8I41KbA6+GRQSwZ9tpP3+jdj8Oxd5JTIlcCmU1kMu6E6bgUUFJrEBLInMc87X1aRDZ0SRvfq3Vl7YS0ge4g83fppFp9YXLafNYsDWQfQqrSsObeGLglduCnuJiZsm4CCwoncE5zIPcHJvJPe4Ht52Fw2sqxln+9M/hne3/s+raJaMfO2mXx95mvqh9Rne9r2CsfVDa5LSpFUU65mroZOpUOr1jKv6zySi5KpGViTMFNYpZ4gZp2ZYEMwGpWmQgzkkuKwwpUvgRJHCdtStwEySeGjfR9V2J5hyWD1udWMazlONh2z5lRIJAA4nH2YSFMkGqHBqTipFVSLEkdJpc8GsCV1C3fWvvN3e5r8HmxOG0tPLmXagWnesbXn17LyrpV/Sgvs38a5gnOMXD+SnNIc1ELN8CbDGdxw8J+66f9a0ahLcVUaM2qMPtWA/yH80yKUGUKIaADPv5ec5KlA+V62sZ6xSlAUZaaiKK0URWkVHv7nqq8DjVreursp64+m071JNC+sPMzzK4+w/VwO97WN56EFe/HXq9GoKgcYr5QJ5nC5URSFJ2+vj1mnJtio5URaIX4GDUcvFnhJ5RIW7UqiS6NIlu1JoXeLGOJDyp7U40NMhBmDua/2WJb2+JLpt0xnQfcFbEja4L0RXtKqenX7q8QHxLMrbRevbH+FbGu2twK7ZmBNtqRsYV/GPvrV7VfJ5n51+vFT8k8VxvZl7iNIH8TK0yvpGNOR3nV6VxB/jDZHc3/D+zmQdYCu1bsyudNkjuYexeay8dAPD/HJwU+Yd2yet5AyvzSf1OJULhRcINuajUFlYFyLcd7tAsGo60Zh0pgqZLWVh1Fj9MZgkoqSqBdSr9I+LSJbAJBSnEJeaV6l7SCD+EII7q5zNxGmCIxaI41DG1far3lE8z+VNlxsL6bEXlnAstBeyNyjcyuNXWkVWFWRY83hyc1PeotnXYqLGYdmkGnJxOV2eRuU/R6C9EGVWlTXDa6LWfPXyNuHqo9/esXyDTAEeMvz79flxscIIZYgg/YFVzu+AnLF0q5mCM3igliwI5FlD7UnOc9KQogRg1bN4hHtcCrw7aMdePnro+w4n4tKgBDwYIfqhJr1WBwuVh+8iMXmIsCo4a5p21CrBC/3bMStDSLIs9rRqgVOV2UmcrkVVEJgsbt4fOkBFo1oy8V8K0IIVAI+23aeLg0jiVCHsfTENMY0H4tZa6ZGYA0ahTbi3vr3MmHbBNyKm4vFF7mj5h30qdMHu8vOrQm3EusfS6mjlJvjbmZQw0EU2YuY1WUWHx/4mFJnKQPqD6B2UG0m7pxYwa4GIQ1ILkpmT8Ye+tTpQ25pLtNumUZaSRoGtYFIcyQbEjdwT917SCpKYuzGseSW5jK/23w+P/I5dpedoY2GYlAbyC3N5ZVfXvGSV6xfLDO7zMTmtDG/23xSS1KJMcewOWUzJ/NO0iWwyxV/K51ax/0N7+en5J9YcmIJz7Z5lvGbxnvTrTtU60Dj0MYU2GQxab+6/agbXJdTeae8c1QPqE6sfyxreq3BpDN5q+MfbvYwO9J2eDtM1gmqQ586ff5QkWORvYiTuSf57PBnqISKh657iNpBtSusdFzuyk/kf+RGXFXgcDs4X3C+wpif1g+tSsv8Y/PZmLyR+iH1GdZ42G+2NQgzhjHn9jlM2z+NQ9mHaBXZilHXjfI1FrsG8LeJUAohFiMD9WFABvAysAr4EogHEpHpxrmedONpQFdkuvFQRVF+V13y/yNCmZpnYcr6U6zcn4pKQJifnue612fHuRyW7paunhCzji+GtSGvxE7NcDMqleBAUj7ztl/AT69h5I21CDVr2ZeUR4hZz8ML9tG5Xjgv39nIqydm0qnp/fEvFTLQ+rWMJcxPzyebzxJs0vL1mBs4nFLIC6sOe9OQhYCvRrXHbComMdtB83h/tqZu5VzBOb4++zUFtgIEguU9l5NUnMTzW5/H4pTZTcMbD6df3X6cKzzH3CNzUQkVA+sPRK1S43Q7cbqdBOgDmL5/OnszZR1ImDGM9zq/x9NbnqZzbGdciotlp5Zh0piY0mkK9YLqYVfsdFtRWZNq6k1TMevM+Gv9iTRHEmwI5vvz31foYwJwU9xNNAptxKeHPiVYH0yeLQ+n28nkGyfTtUbX3/y9sq3ZZFuz0al0mLQmMkoy8Nf546fzI1AfSKGtkDtW3kGIIYS3b3ybb858w/7M/TQKa0S/uv14bftrPNnqSZqHN0ev1VeYN9OSiVrImpQ/2r9+d/puhq0bVmFsYfeF3tVVqbOUjw98zJKTS7xxJaPGyDe9vvlLvWX+SWRbsxn83WCv6xNgfMvxHMo6xI9JP3rHIk2RLOmx5HfrTawOKxanBZPW5HN3VRH83SKU15y6cUquhfs+20lSrmzAFRts5KUeDRk5v2LBXcPoACb3a0KEv4HvjqTz0tdHvdvUKsGSEe0YtWAvj9xUi6YxgRh1Gp5feZhDKQUIARPvbETL6iF8tOE0SbkyeH9dbBAPzd+LW1GY0u866kf78+zyw+xNrOjG6dE0mrqRfmw/l8OzdwaSbk3mua3P4XA7UAkVI5qM4Jb4W3j4x4craX0tv3M5g9YOqhAsn37LdKbsnsInt32C1WHFqDFicVrIsmahEio+3PchJfYSJnaYyMj1I7E45XcTbgxn0R2LUAs1vb/pXamq/tve3+Kv88ekMaHX6FEUhZmHZqJVa3Erbr4//z0n804Sagjl3U7vVmiR7K/1Z1WvVVeMOxTbi3G4HQTqAysF03OsOSw+vpj9WfupE1SHBxo9wHM/P8eejD2EGkKZfftsdqfv5nzBeVafXU2Ro4hgfTCL7lh0RbXmP4MiexHjN41nR9qOCuOd4zrzVse3MGvN5JXmkW/Lp8BWgKIobEjaQJ+6fYjzi0OrrqxmXRWhKAqHsw8zYv0I77XwVc+v6Le6X6WY2Nzb59Iq6m+7P/nwN8GnbnyVYXO5aRYX5CWW6qFmDqVWlks5llZIkFHHyfQiFuyoqILscius2J/C1AHNScyxMOm7k4T6aXm+WwNOZxbx8jdHefHro/zw+I3c0TSa3GIbIWYd/gYNnw1pRWSAnh+PZ9AqIZgh7RNoFhfEin0p5FnKMrhqR/jTt2UsijqPGP8Ivu71NdnWbEIMIWhVWortxVcUkDyafZQoUxTnC8tcGctPLefm+JvJseYgEAz4dgBR5iieaPkERq2RZ9s8S4g+hEc2PIJBY8DhdqBRabgx9kZcbhf+en/e6fgOj/30GKWuUlRCxehmowkyBBGgKytwLLIXUSOwBguOL0Cj0vDQdQ9xNPso5wrOERcQx/iW41mfuJ54/3jGNB9DqKHiKsHmspFcmMyH+z4ky5pF7zq96ZLQxavgnFeax+zDs7k14VYahTciUBfI0ZyjTGg3gWHrhmHSmjiYdbCSlE2eLY8saxZGjfEPr0z+DC49nOVac3l267PemFi4MZzPu35+xd4uVRlCCBqENGBN7zVkWjIJ0gdVKmz0wYffwjVFLNnFNj7+6SxDb6jOoZR8ckvsNI8PonuTaKx2F1/tTaHAKm/ujaoFkFVsI9/i8Aady0MlBC5FYfa280y4o4EspHS5ubFuOItGtGXQZ7vYfSGXeb8keqv01SrBDbVCefSWOtzaIIqZW8+x/WwO9aMCmPNAa55bcZiTGUUMvaE63x5Kx99k55uUaXSI6UCWJYs5R+ZQ4ixBhYplPZcRZgwj25pdwa5aQbVIt1wmPy+gXkg9Qg2h/JT8E6WuUi4UXmDsT2PRq/WYtWaW9ljK6x1ep9RRSrgpHK1ay9aUrTz606M0CGnA2OZj+bbPt+RYcwg2BOOn9auUfrovcx9PbH7C+353+m4+vuVj7ql3D09ufpJgQzBdq3fFrbgxa8yV0m+zrdn0X9Pfq0F2NOco2dZshjcejl6jx+FycH3M9Tyy4RFv58cuCV14stWTLOu5jPzS/CuuCkIMIZQ4SipkpZWH3WWnyF6EXq3/zZRaf50/I5uOrLRiGdl0JGatmc3JmytknGVZs5i0axJvd3z7DykMVCVo1VrCTeHemqlCWyG3xN9SyRV2pU6WPvhwTRGLw+nG6nDy5LJDvNG7CXEhRj7ZdI4xi/ZzXVwg84a25ollhyiw2pnQoyFbT2UTYNQwuH0CL6464p1HoxIMbp/A5O9PMKVvUx5dcsC7Aqod4cfsIa24u0UMTWICSc0vc0m53Ar1ogKwO908s/yQ1wV2Ir2IXedzmD6wBfkWB2sPp6HTqAj311PDvwE1A2vy4rYXvfO4cTP78Gze6/QeD294GKPGiNPt9PZfKe8GEwiGNRqGUWPErbi96sAOt4NQQyh5pXm0j27PidwTHMs5RvXA6kw9MBWn28mQhkMY1GAQL/3yEjvSdrDkjiU0CG1wxe8235ZfoVjyElacXkGfOn3YnymLP0udpYy6bhTHco8RZY4i1BDqXZGsO7+ukrDlouOL6F+3P3qNHqfi5J3d71RoJ7w+cT331r+XOkF1qBNShyJ7EeNajGPq/qm4FBcmjYkJ7SbwY+KPNAipbHuuNZdFJxbxY9KPJAQk8HiLx4nzj/vVmpP6IfX5/PbPmXV4FiqhYmTTkdQKkvVHV0pjPpZz7Ipp3/81BOgDmNB+AteFX8eGpA3UD6nPg00e9Ol5+XBFXFPE4nIrDGgTz+qDF4kNNjLyi72cSJeribNZxexLzGPesDbYHG5eWHWYoxcL+e6xjuxNzOP9/s1YuS8Fk17D2JtrU2Bx0K5mKN8dSSe9oEy76kxmMUt2JTPyxpqAoE6EH/uT8wFoFhfEfW3jKSl1VIqrXCwoxepwMfvnczx2a12+PZTGI1+coFlcc1pElRFF84jmPNbiMW8DrJV3riS5KBmz1oyCwq60Xcy9fS5zjsxBo9LQv15/tqRsoV5IPW8Nwqq7VmFxWDiZd5IYvxhCDCE8u+VZRjQdwaM/PUqcfxzPt30el9tFqDGUBd0X8Nr210grSSPMFEaeNY9SVynnCs4RaYokxBCCWqUmyhyFTqWrQA5atdbb1bJhaEMebPwgD//4sJccbqh2A292eJMQY8gVs7I0Ko23HkKn0jE8rj+GBB2rczaxOXUrCjIecCkd2V/nT6/avegU24ns0my0Ki3LTy3ngUYPVHKD5VhzmLRzEusS18lrIP8su9N283WvryuoG5SHv86fllEtqRtS16ujdgmdYzuz6syqCvs3j2j+PxOwDjGEMLjhYHrX6Y1RY7xmFQV8+H1cU8TicLkptDro0bQaDpfiJZVLuJBjIb2gFIfLTbBJh8XuYsKqI7x6VyOsdhcv9WxIodXJllOZtKsRxk31IziaWsiSke349nAas3+WcY1Dqfnc3TKGV1YfYfrAFpTYnKhUgov5Fl7++ggv9Wx0RftMWg0P3ViLj386y08nZYlPYq6FITc2RCVURJmieKzFY4z7aRwmjYlJHScxbN0w8mySpBqGNOTDmz9Er9YzutloLhRc4M2dbzKh3QSmH5ju7efir/Xnw5s/ZMbBGZwvPM/o60Yz8rqRrDqzCr1az6SOk3jx5xe5UHgBkC6P2bfNwujWUmQr4mjOUcZtGofNZUMg+KjNJNqZG/OcuyuPtRvAupxtfHVxLfm2fB5sOJRNqZsZU2cYPev24vHtz1ZYcWy7uI2jOUfpGNuRLtW78PHBjytsH9lkJM68POz5LsyFhTT9aD2unFyevrcXfVt1Z+ye52gZ0bJCrCfUGIpOrcNP54fVaeXxlo9X6LQJUsMspzSHH5J+qDBe5CjiYNZBbk249TevpfLN1QDcDgfXGxoyq937vH1iOmfyz5AQkMAzrZ/50xXrVRlqldpXGe/D7+KaIhaTXk2jaoEcvViA1a7FX68hIkBPSp4Vm1N2JQwwatGqVTx/R30e7lwLp1tBhWDhjkRa1wglz2In2KRn1cGLzPvlAiBThF/q0ZB7WsXx5Z5kOtQOw0+nYfyt9TiRVkiNcDMn04txuNyMvrk2xy8WcFuDSH44XtaXpG6kHyF+WvyNGi+pgFxlrdqby0vtXqXAlsvMQzPJt+UzuOFgZh6a6SUVkFInW5I3082/PX5+fsw+MptgQzDnC89XaBJW5Chi2v5p3FPvHt7e/TYfH/yYFXeuwKA2cGv8ray/sN5LKiCr3GcfnMXowtZYb2zL6ztf97p3xtYdTs0Npzg/TWp16WrVov9rrzKgeXeEVoP97EX6V+uC5dAmFP+MCnUml3Ag6wAdYzsSZgxjWc9lfHb4M7IsWdxXdwCtXDFkvvY2iWfOYG7bhojHHyf10ccofn0KNV98klfbv0KkObLSnP46f/x1/jhzc8HuQqVVKpQDF9oKKbQVohbqCh0pAQxqw+9cSRXhzM0l94v5FK5ZQ1RkJAuefRVLXBgqvf5vSRbwwYeqjn+68v5fhb9Bi93lJibIiFuBOUNb82CHmix/+HqWP3w9nwxqgUrAyfRCXG6Y8/N5hszZRbHdiVmvZfK6k3x/JJ2WCcFeUgFQFHj7+xP0bRlLp7ph3N4oihunbEItoE6kPw/M3c2oBXsZu3g/jyzYR0ywiae71eOVng3pXC+cZ7rWY96wNgz/fA85xfZKlf9zf04jwdicm+Nv5kz+GUAWHl56XR77sw7gPHKMEJuW9tXaE+MX43VFlcfpvNPE+MVI+1EotBXQv15/Yv1jOZ1fef/jhaexlhbhyMoktViKIggE3SM6UfLxZwD43XILUS+8QPYHH5Iy9EHyZs1GFxiEUdFQ+M4HuI6eoJWnWr48OsZ0BKTby6wx0yikEc83fIy22tokDRhIyZYtOC9epGDlKjKnvEvY6EcAcCz9mlb6euhUlV0yLouFkt17SH5oFBfuHUDOpzMkyXiQWpzKlpQt9KnTp8JxkaZI6ofWrzTfr8FlsZD14YfkfPopjpQUrHv3knTfIAJLFB+p+HDN4poiFpNOQ7BRS3iAniW7k+j36XaeX3mYHlN/Zn9SHscuFnI8rZC0glKe/uoQwzvWZOJdjfh82wVmbj1Har6Vc1klnLzMhQZQ6nATbNLyRJd6zP75HLXCzRh1apbtSSYxx0KYn46xN9fmjd5NyCgqpcTm5HRGEY90rkXHOuHsPJfL672bUGxzcF+biump8SEmHBSz4vQKWkXK1PPjuce9r8vj1tibcZ46Q/p9QxgccQcqobrifq2jWnMiV+qfaVVaokUQ0TYDvWrdRfvo9pX27xDaCtX+Y7hOn/UGwQ0aA+78AnC7QaMhbMQIkh9+GMvu3TjT08lf+iXZ02RbYaHXY581n5eaP0v1gOqA1AsbUm8Q8cZq3vOYXRq6OOsReDINy759uPLzK9hh3bMHfZ06ck6TiQht8BUruZ0ZGSQNGULp4cM4UlPJnj6dnDlzcdvkSqt6YHUWnlhIu+h2vNjuRW6Ku4khDYewoPsCb0DamZODZe9eijZuxJGRgeJwVDqPu6SEghUrKw46HBRv2FhpXx98uFZwTRGLzelCrRJY7W4W70qusG3yupN0rBPOuKUHSQg1k1Vk454Z22lfK4yvD5S1Is4psRETbKy0qgg160grKGXw7F2M6lSbe1vHY9JrOJxaSHyIiVn3t+JMZjHPrTjEF9sTMWrV3N4oilX7L9Jj6s+MW3qAe2Zs5+jFQkZ1rsnrvRpze6MoHulciwXDW/Nz2vesPLOSgQ0G0jisMStOr/C+BlAJFX1q96ZRcSDZ06fjTEmhaNAoRrs70zyiOQMbDEQtZKZTveB6jGg6gqUnl+Kv9Wdyq9ewTfuMvC59sPYcTPfA67k1vizG0C6qDfeE3Ibl2+9xTJvLOze8Rax/LFanFSUkEKHXY6hfH+vBgyi2ihlQRRs3IoRAW7MmYWPHEl4omNXiHb7t8TVrb/+KfvsN8PV6FJeUQRE5eagzc8j64H1UxisEvdVl2VqhQ4agFBZSvGMHLoulwm72pGRiP55O3OzPiJs1k+jXX8d26hTuQikJ46/z5/UbXueFn19gzdk11A+uT7+6/Qg3yqC9MzubpAeGkjhwECmPjOZst+7Yzp274nUlTJX1zlSB/630Yh98uJq4pmIsRaVO7A4XZzIrrzhsTre30G3NwYtMH9icr/amUmJzYtarsVukH96twNLdybzXvxkvrjxMYamTcH897/a7jiW7kiiwOnC5FbKLSskrsdOxThh3NavGCyuPcCxN3tS2n83hnhk7+GbMDagvI6ipG87QrXEUmYWlxAQZOJ9dQo+PtvFCz56svGMQfiVuPmjyMg6zHp3WyAcdpuB0O1Gr1BjdGtI6S4kUv5s6E9CjJyq3Dn2Bm1HVBzGkzn24UNDkF6Nk2fj8+qkYA0KwvDoZ61qZGeXMyCC/9yBeXLWEp1s9iTMvH2XfYYqGjUWx2dDXroXftqPMjHoCZ5MgTMJA8NQPyflkBiq/yuKCwiDjFdUmv0Pp4SM4kpMxFBRQ+tVytO3aoiq0kLfmBwK6dUMTGkrBmjWY2rTBdvIUQqVGX7cOtlNlrrnA3r1xZmQQ99ksLDt3ojgcZH70EfGfzUJdQwpnOtLTKVy9muAB91LwzWqK1q1DExFO2Nix3rpxs9bMzXE307J3S2xOGwatgRB9iDfNuGjDBmyny86rWCykT3yd2GlT0QQFecfVQUGEjxlDxhtlRZnqsDD8rr/+ty9GH3z4H8Y1RSyKG46nFxEfYkarFjjKCUWG++spdcin5gCjlqW7knEr4G/QMObm2kxcc9y778YTmYy7tQ7fPtaRQqsDs07DoZR8+rSMpVfzGLKLSxnYLoGb393MJwNbEBlg8JLKJRRYHRxLK6Rfy1i+PpBKYalMqbW73LgV6N8qlv1JeawrsvHkbTW5tW41TMlJZEx+B9vxE7jy8wl+4AFC7htAyS/b0cbHo69ZC014OMH3DUDodGS99y5ui5XAPn0wt25N/pgx4HJRbfI76BISKN1+HPMNN5C77scKtrmLizHlWwmNrYXT7YejDijTpwMKCEHygw/iLpErBHWHDpiffIJq704BtxttbCyOlDKNqdChD2A5chRzyxZYfvmFoh9+QBMeTtjo0ZSeOkVQ37txJCd5VyKakBBJPg0bkvbaa8RMmYxlx05sZ85gvv56dLVqUrDmW4p/+glnRgbVFy7EmZFBwZo1RIwdi7OggNTxT2Bs3pz8ZcsoWCV1Tl35+aQ+No6aa78Fjyq2XqMnQnNlKXvrocOVxuznz8Nl7jCVVktgzx7o69Ylf9kydDWqE9S3L+qwqlvf4SoqwpWbi2XvXvS1a6ONjUUT4hOG9OHq4ZoiFlBYdzSdwe0SePvupkxcc4w8i4OYICOT+jRh+k9nMOnU9GkRw/2zd1FkcxLmp2NAm3jqRwWwYl8KCaEmbm8UzYPz9jD3gVaUOl1YHS4UYPrGM0QG6BncPgGb043F7mLUgn1891hHVEKudsrDrNOw9Uw2LRNCvJlgYX46SmxOwkUJPfaP5PbwRmiTknFXfw6FXGIGXQfRw5CyXVrOdr8DnJKU9PXqETdzBrYzZ0l99FHveXJnz0al1+N/660Uff89GW9Ootrbb5H/5ZeY2rQhdupUVP5+uAsKKFi9GkdKCu6iImxnz2JPTibzrbdx5uUS8fTTmNu0odqUdyne9BOGxo1RmczkzJyFoX59ClauJGbKFIp/3oojOQXzjR0xNGqEIyWFrA8+8MYi7EVFXHzqKWp8vQrr/v2EPjTKa6vfLbeQOu5xIl98gbQJL5E4aDD+t95C6MiRqMxmkoePwJGaijooiOiJr5G/Yjk4nWhCQig9cRLrgQNEPDEelcnMhf79K37hbjdF69ejHznSO+TMyUFxu1Hp9agDytxXAXd0p2D58oq/V8eO2JOTUZwu1CHBqPRS1FIdFIS5bRuMLVsg1OoqLX/ittko+n4daRMmeMf8br6Z6Ncn/mvk4szLk9ewRoMmOPj3D/ChyuOaIpYwfz2tqocwb3siwzvU4IthbdBr1Bh0Kr4/nE6zuCCe61af9388TZFHlbhj3XDun7MLh8tN25qhHE8ron50AONurY3DBTM2nWPTySwSQk281LMhX+1NwaTTYNDI8JXV4SI518K9reNZtCvJa0uL+CCKSp0Em7SoPZGu2GAjn/arS5jOgkNoQaNHm7QVWo9AbJ+K6sgyuaMQuIcfJnnEKC+pANhOnsRVWETR+nWVPnvhd98R+uCDFH3/Pa7cXFQGI8JgQGi1lOzYQcHXqzC1bEnAXb0wNmlC/soVBPXqRcYbb+JITSV+7hxsZ8+SOOQBQkcMJ7BXL0qPHEUVHExgjztkrcn581wYNAi/Dh3QhIeTO38B4WPHoK9Zk8I131Y0yO2mcM0aSo+fIP2llwkacC8R48ahCQ8n5v33KN68mahXXkETFobKaEAdHIzQaklYuABXURHOzCzyly6haP0PqMPCMLZowfm77wZPrKbGqpWog4JwZmZWOK3Gs5JwOxzYTp4k7cUJ2M6eJbBnD8LGjEVoNQi1GkPjxoSOHEnu3LkoDgemtm0Ivrc/ySMfQiktJWHhQoxNKvZ1UWn+/H8nZ04OpSdOYE9Oxu/661GHhqI2/339SlwFBWS8NanCWPHGjTgzx/7jxKK43dgTk0h74QWshw5hbNKE6DdeR1e9OkJ1TYV//+dwTRGLEIIbaoexLzGPQZ/tpEOdMBrHBtIqTj4lNY8P5r7PdmKxy5tTi/hgjl0s4HRmMSALKEFW138+tDXjvzzAzvMyhfV0ZjHDPt/N6rEdSM21EmrW0TgmgCOphbz+7XFmDWlFxzphbDqZRYc6YdQIM/PCisO8068pnWuYeOVGf/TOYkJtBxH6aDCEQ7NBEJwAej/Et+PLPkj89SgWK/bkigkIAI60i2giKrt31MHBuIplbMnQuDH2lBSiX3uN/CVLsZ8/T/ysWVj27EETFIhiKUHt54ftxAniPpuFUKkpPXYMd34BcTM+pXDtWhJffc07t//tXQh/bBzauDgcyckUb9oEQMRzz6KrWxfb6TOog4NxZmRcZlMI7iJpU/7iJYQOH446MBBtZCTB99yDoigVnv6dOTkUbdyIsVkzEPIzhY0dQ9Ddd5O39Eu0MTE4kiR558yeQ/jj40h77nnv8ZqoKMwdZGqzKy+PxMH3o1it6Bs0IKhvXy4++STW/fsxNGhA9KQ3CR05guCB9+EqKsKyYwepjz7qDf6nv/46cZ9+Am43tlOnsZ0+jfn69mgiIiqsfH4LzpwckkeOpPToMQAyhCB22lT8OndGqP+eNsaKw+F1Y5aHI/Uihvp/PM36asCVk0PSkCFe8rfu30/SkAeovmI52j/ZxM+HqoVriljcbgUBjOhYk+EdayKAjMJSZm49x6HUAqYOaI5Zr/ESS7i/ngKLg4ld47g+3ky+1cG0nQUculiI0614SeUSHC6FYxcL6VA7FIdTYcaglmw/m82BlAKsNgdtqwdzaxy4zm5CJBawYmA3NqfmcF3pHkIPfgpd34bMXMg5DRlH4PoxkLgT/C8jCr9I7ElJ+N14I8UbNlTYZKhfH0P9+uQv+8p700atJvzxx1HptIQ/9SSmVq0o3rQJbWQElv37iXjsMRIfGIr/zTchNBqS3ix7ok1YtJD0ia9jOy5jTKZ2bcn5bHaFcxatW0/IkCFUmzIZy+49OC5exP+WW8Dtxl1QQN78+YQ9PIr0V171HqOJjsZ4XVMy334bdVAQhsaNcZeWVpi3PKm4S23kfDabgK63k3jvANTBwZjatkVfty62c+dQ6fVEjBsHahVpzz9P4erVhD8+jprfrUWx2VDsdjRxcWg9rhbbqdMoVimVE/7oWC4+9TSOVFmfU3rsGImD76fmmjVoIyPJmjqNgq++qvhbp6SglJZy8Zlnseza5R2PfOVlgnr39rrJfgulR496SQUARSH91deo3rTp33ZjVRkM6GrVwn72bNmgWo2h4ZU14P5OuAqLKq0onVlZuPLzfcTyH8c1RSxZxaU8v+Iwm05l0a5GCE/eXg+H202tCD96t4jlYr6VxSPasfV0Fml5JQxoFU2MwY56/3LUP66D4gw+uGkSu1o0we1WMOvUlNgrdguMDDBgvvAj6rhW2FIP0ffcYvo27YdSWgjacMS8nmiLPOrDGyZw09DvETvXQa8ZgBsiG8GZDVC/hwzKVGsmS/s1BnCWgtYIah2aYH/CRozAXVKCZccOVH5+hI9/HMVqJWPSW8TP/oziTZtxW0oIuOMOHGlpJD/1NEH9+qKU2hAqNYrbTeAdd5Dz+ecoFguBvXuT+njZykhXuzb2pCQvqQDgclcKYAM4MzNJnzSJam+/jWK3kzZhAs6LF4mdOhV7UhLO7GziZn9G8aZNaMIjCOjejeRRDxM2ZjSmFi0o2bkL+7lzaAKD0IRVLix0FRViPXQQv06diP3kE4RGjauwCOuBA+TOLiM6v06diHzhBUr27sVdVETa889TevQY+rp1qfbOO2j8/REaTQW3j9rf30sql+AuLMSZkY42IpyQB4YQeNedKCUW8leupGjdOvxvvRV3aSmWXbswtmxJyKCBqMPCsF9IxFVc/IeIxZ6YWGnMmZXF5X2w3XY7ruxsijZsROj1+HW6EU1Y2P9rVaMJDSXu4+mkPDYO24kTaMLDiXp9IurAf16mRWW8ssKB6grp2z78t/CvEIsQ4gJQBLgAp6IorYQQIcBSoDpwAdld8sqNzP+fcLph8+ksAPq0jGV6OU0ugFGdatI61sTQlJflzbx0JIpNIJyl0OJ+CK1N4MpR3Hz/anI1Cg91qsV7P5RJlDSqFkCtMCPm5VNRIj/AsGIAtBoGF/cjsk5AaB0oKidp77Ij1r8AXV6HjKNgzYU148q2RzSAexfDxtfhni/g1DpoNgDObkQboKJo/yn8b7+dyGefQR0UjPAzU7BkKZbdu0kcOAhT+/aoDHqSRz1MtXfeQbHZyFuwEG10NYLu6YficqGrUZP8ZTJ2o9Lpva4eAE1IMM6LFTtEu4qL0FSrhvNiWW2PMBjQ165NzOTJFG/cSO7n8wDwv/VWtHGxVJs8GcuunWROmYIuoTrG65rhKi7G3KEDan9/koaWdWQ0NGxI7Ccfo42sKNMi1GpCR47EsncPuXPmotjtVF/2Janjx1fYr3jzZkJHjsDcvj0X+vfHmSl/b9upUyQOGUKtNavRhIejiYrE2KoV1j17EBotqFSy0LMcVP7+OLKyyHr/A4p/+gl1UBBhjzyM36234Ne+PZb9B/Dv1o3AO7qT8fY7OJKTMTZrhql1awiV5OgqLPSuxNRBQah0ZSoB5o4duRzm69tXIiX7hUQu9OvnrRFSBwVRY8VytNWqVTr+j0CXkED8nNlyPg/J/l2ut9+CMJsJuOtOCr/+xjsW0KMHqr8xxuTDP4N/c8Vyk6Io5ZuJPAtsUBTlLSHEs573z1zNE6pQCPGIS8YFmyqQCsCsred5oF0sxLaEvETIPok4uBjajQZzKJQWQb/PUR9fRYDTTfcGw7gurjVbT2dTK9yPTnVCidw6AdqMRFzYCm4XNOwFC+6G6+6FwpTKRhWmgjkcLDnw3ZtyzD8Krh8L1ZqD2wG3vgq55yS5zekCThsa3iSw5UO42j0JxVmIs2tRFZ4n+ObuqI1PkjZxCiVbtgCgjYurUMFesGYNwmQiY+JEwseNI6B7N0qPHcN29gzG5s2w7j8AQOmx44Q/+qgkWc9TdPb06cS89x7pr7yC7cQJtHFxRL38Es7CQvIWLqRo3XoAQocPRxsXS9KDw3Hl5GBq356Ydybjdjpwl5Rg3buPkMGDOd+noqRK6bFjlB4+jMporBCr0ISEoNjtZE+d5h1zFxVfcfWkOJ24bTYvqXj3LyjAmZ0tiSUkhNgPP8B64ADOwgKCBgwgf+FC777+t92Gymwm4623ve5GV24uGa+/QY1VK9GEhWFs3AhtRLiM1dilorP1wAFSHnmEhPlfgKKQ9uprFG/YIFeUjz1GQI870HhWB5qwMKq99y4Zb7zp/Y6i33ijwurBVVRE5rvvVig8deXnk/P5PCKeehKV9v/XlbIqpBdrAgOJfOYZgnr1pmTHdsxt26KvX79CnZAP/01UJVfYXUBnz+t5wCauMrEEqqy81CWeiT8kkWexV9rucivY7A6wFcv4xo+vwY1PwdqnIe88hNeDXp9CTGv03z1FrfM/EXzDBJq2SUClNRG4+FYoyYa6t4HOs5wXKunCStwGN70Ah76seNJGfUCoQWeGkixJMv0XwMY3YN0LYAyGm16EWjfB2qfAWXaDEYWJCEsOmnWjIP2QHNz5IQGdXsZ6Tx/yv1wBQhA+dgz55WIE2qgoXJmZ4HaT9eGHVF+6hKB77yV33hdUe2sSme+9h2XnLlR+fqBWE/Peu2S8OQlndjbqoCDUAf6EjRmNoW5dnPn5qPz9cRcUEDF+PO7iYqyHj+DXuTOJgwZ5z2nZvp2Mt98metKbqGJisB45guKw4y6o3L3TmZOL22aj/DO0u7SUwm9WV9wvLw9tfLw3YA8gjEZ0NWrI1YcQ6OvWJfTBYWiio3EXFqIqd0PVhIbKWBBgbNKEwDu6U/LLL5iat0DfoD6K203xDxXVjwGK1q/HUL8+6uBgSk+c8JLKJdjPncNtsZD96afe492FhWRMnIixSWM0TZsCoPbzI6BLF8zXXw8IUAk0lwX+FbsdZ/pljdsAR3KylJj5fxLL/weuggK5+hICdUAgKsPvu/t+D5qQEDTt22Fu3+4qWOhDVcG/RSwKsF4IoQAzFEWZCUQqinLJ75IOVJasBYQQI4GRAPHxf67lq1Ep5dagNLqMqku+2r9SjCQh1IQp7xjUvgVKC6HdQ7CwH9g8QfCsk7C4P4z4CW56HvHLR4Qu7go6P7j/G+jwBKQdgrM/obR/BGJaIfKTIKoJpB8GSy7c/CL8Mg0cFmh6D7R+EAqSIOcs1L4NYlvD1nfh3E/ynNY8WPsEjNwsCaocXDW6Qf65MlLxQLXjPSJG/YQmLJKA7t0p+GY1lu2yCZUwGgkZNpSLzzzrmcRFyugxxC+YT+jwB0EIqk2ZUnazVKvRxMUR/8U83MXFWHbvJumBB3BmZhH50gRMLVuS4qktCbi7D9ETJyL0egouIwGAkm3bQFFQBwQQ2LUrJbt2Y2rbFsvOnWU7qdUYmzdDsdlw5RdgPXEc6779BNzRHV316hXmy54+nZh33yXjjTewHjiArmZNoie9iTo4GMVqJfzJJzE1bUr6a69hO30aTVQU1d6ahCYwEJWhon9fExyMJjgYU4sykUxndg7aatWwX7hQYV+dp8JfZTCgjYmp9DmFXo/QaCj6cUOlbQWrV2P0EAvIVVDRjxuwp6YSeGdPhBCo/csk+dVBQQTeeSeZkydXmCeoXz/U/2AswpmdzcUXXqRkyxZUJiNho0cT1KcPat/qwocr4N8ilg6KoqQKISKAH4QQJ8pvVBRF8ZBOJXhIaCZAq1atrrjPr0EIgcmgRWyZhOaWV1kyvBVPLj/GyYwiWiYE8173aMLXDoKbngdrIQRElpHKJRRnQkEK/PAy9HgPfn4fAmLg6EpoOQTi2oLGgMg+CXfPgvxk6DMLvntaEkT7MTD8R+kmsxVLstIHQI1OUP0GSWib36ps/Ik10Hq4XPlc+jzuErBeoRjPVoTKqMd66BDqiEiC7u2PJjISXC7MHW4gc/LkCjESTWgo9tOnSRk9hqiJE3GmXSRnzlwUqxVzhw6EjRlN2nPPEz52LKUnTnpdTM70DHJmzcKVn0fsx9Nx5eaRt2QJAT174te5E4YG9Slc8613taQJD5duNWTMJG/hAqKee56sjz+mZOtWtNWqEfnSS7iKilD7+5P35Zc409Lw69SJog0bCezTm/wVK3Dl5AAy+K0ym4j95GMUhwOhVqPxxDbQagm8ozuJAwfiSL3osTed5BEjqfXjD5WIBcBtseDIyCD/q+WoA/wJ7NuXyAkvkjxipDf+oqtRA1ObNjjS0iTphoZi7tSJks2bvfOEPToWdDq01aphKyhA5eeHuUMHAPQNyrKvnFlZnO9/L840+TyVO3s2Me+/h3+XLt6Yh1CrCezdC2dWJnlLliK0WkJHjsTYonnl3/1vgstiIfPd97yf0V1iIfOdyRibNcf0D9rxW3Dm5mI9dIjizZsxt2+PqWXLsmvBh38c/wqxKIqS6vk3UwixEmgDZAghohVFSRNCRAOZvznJ/+vEbsSyYTDse7Tb36dJ88Es7FyIOygBbeZhgr8eLWMZplDY8zl0f7vyHCo1+EWCywbLh8PA5fL1mQ1gL4Gdn8rtjXrDye+hZmfQmuFOT2wgeSesehi6vQ3FadK9VZQmVyp3TpexjKAEaUd5hNaGqKbQ7hHYNw80etRaLUrtTvCDFlzlYg3VO4DbSfQbr+PMzOJst+4YGzZEaLUYrmuK7Uy5VFOtlvAnxpP1/vvoEhJQ+5lJn/6xd3PJzz+jDgnB76bOpD7zDNXny74juN34396F5OEjCB//BPnLV1B6+DCxH31E+ksvYd1/AJXZRNjoMdT4dg2OxESEn5/Xt68KCsJ8/Q2kPPUUcZ9+gjJ2LI6UZHLnzcPUqiW6u/ti2b2bkl9+IW/xYiKefZaCb9dS/csvsV04j2Kxoo2IwHb2HH6dbqwQFL8Et83mJRXvJeBwYL9woVJyAEDpyZMkDhzkJZGcWZ9Rc/U31Fr3PcVbtqCNisbQqCHpr75K8cafUPn5EfHC80RPfA17YiK2Y8cwtWuPNioSdWAgURNeJHfRIkIGDaLou+9BgLllS9w2Gyq9nuItW7ykcgkZ70zG1Lq1t5ATpLsofNw4Qh98UH53gYFX/Lx/F9wlJRRtrKzWXLhmTZUgFmdBARlvveV1leYvXoK5Uye5Ov0freS/vMarquEfJxYhhBlQKYpS5HndBXgN+AYYArzl+ffrq35ySw7U7AQo8qavMRLmdsLXA8v2uW4ApB2E9g/DxQMyYL7vi7LtbUfJ7Kwe78Oi/qDWwoWtMv4ys1PZfjs+li4zSy7o/WUcRXHJdOGWwyT5fH4HODxth2Nbw5a3oTgLbpsIy+6XqxqQKcjVO0LmcUkuD3t6q2+ZAqUFKINWItY+AbnnUGp3gdteRah1qJJ2kD1jHbqYGPS1a+PMzibt+ReI+ehD7OfO4czKxq9zJ3IXLqT0yFEC77qLkm2/VPraSrZuJerVV2DOXOxJSRiva0rwffchDAZc+fkYGzWSiQBPPEHWtGne4L98sn2HuLp1yJo2ncinn8aZm4s2PByVVkvI4EHoa9Ukf+Ei8hYtApWKqFdeRu3vT9aHH2Jq2ZKw0Y+Q9uxz5MyYQdysmbgL8in+4UdU/n5ob+tC/ldfYWx2HarL6h4cWVkopaUIna5SDKR8AakzJwd3aSlCpaJkx84KmWHu4mJyv5hPxJNPEDJwIM7CQlIefgTr3r3e7enPPU/Ntd9ibt0ac+vWFc5jaNiQsJEjuXB3X6/kft7CRdRYuQJ97do4Mis/O7lyc71iqOWhMhiuuMpy5uWjlFpBpULl5/e3VO0LtRpdXCyll8XD9PXr/em5FLf7qlfVKxZLpfhbyebNuAuL4H+MWFyFhdgvXCDvy2Xo4uMJvOtONBERVY5k/o0VSySw0vNFaIBFiqJ8L4TYDXwphHgQSATuuepnNoZA47uluymkBmz7AG5/Awavgov7Ia4NBFQDlQ4OLYHNb8PDv8iakoyjsqYk+xSse16m/wZUA7dTBtZXjKh4LmseHFgAGccgdS/cPRu0JulKq9tFusAukQqAIRAC4qBeF8hLkjGV5F3yHEHxct/VY6HwIlz/qFwJpR1A7P8C4tvBLa+AKQThdsEPL0F0M1TXDST4gSjcuXkUb96MoUEDwh56iLxFiwl/TGqJWQ8exJmSSuBdd6GvXw/FWbEuB2R66qVCNn29ulR77z0UpxOhVhN03wDcdplQYGzahKz33690vGXHTrTh4aSMHUv1ZV/icLtBqNAEB2Fq3Zqsj6YCENSvL860dNJfetl7rDY+nmpvv03me+/izMklZdQob4Za/uIlxM+ZXVmEDbAdP0Hx5k2EPvQQ2VOnescDevRA7bnZ2FNSyPtqOa70NIp37iJ08GDCHh+HcCuY2rUFRcGVXyBvhmo1itXqJZXyKNn2C/qaNSuNK2432dM/rtDHRXE4yJo+neg33iCga1eyP5oKikLQPf0I6NlT1nBcgViuBGdmJqlPPIll927QagkZNIjQkSOu+lO6JiSEqJdeJnHQIC9J62rUwP/mm//Q8YrbLSV4vvoKR9pFgvv3R1e9+h9WKPjd+e2VE3EA3NbKCgP/ZShOJ0UbNpL23HPesbz586ukUsE/LsijKMo5RVGu8/w1UhTlDc94jqIotyiKUkdRlFsVRcn9vbn+NPT+EF5fVrV3HC9XD4eWeQLlAoJrwM8fwi8fQv07ZCxECPhmLJz6Trq+vnvGs5IQMGilJBC1Dqz5lc9nyQO9HxRnwJIBYAqBwBgoSANDUNl+ITWhXjdw22HTJOkiyz4Nh7+E3PNwfjOgQHBNaDkU7MUye6zLRHnupB1y/jWPy/c3PAZCIDa8hEmXhMZPReF335H98cekjB9P2PAH5dP2xNfRREbKtFWTCduZswR06+oNToMMRIeNGU3+l18SeM89KDYb7qIi3EVFFK5Zg1/HG9FGR6OJjsaZmYkuoXJCha56dRzp6biLimTas9tN/ldfYdm7F6HTYWjcmMgXnidk6FDMnW4k4umnvLUMDk9xZbVJk8j64IMKN113cTFFGzYgtBpcxcUVzln4/ffkLVqM0KiJ/0Km5sbO+JTwJ8ajCQrCkZ2DMyMTd3Y2Qm8g9t0plB49QmB32XclceAgEu8bSN7ChWWZayoVmqioypdVndpXvt6czkqNygBcuVJ0URMRQdysmUS++CLauDiSRz7Ehbv7kvTA0CsWT1aYw2Ih84MPJakAOBzkzp1L6eEjv3nc/xf6enWptX4d1d55h7jPZpEw/4sK7rrfgjMri/O9e5M9bRoFy1dw4Z7+FG3a5O3B81ehMpvRXpbIowkP/5+LsTjz8sh6/72KY1lZlGza/CtH/Hu4tpTeVDq4uE+Sy+EV8MgOaD8a8pOkm6okCxK3wq6ZMLOzTO1N2iFv/Mm7pCsNZBaYXwTM6SrjKioNNLuv8vka3gnnPD+6rUgWQO6eC1o9FF2Elg/IbT0+gGUPwI8vw+GvYNUjMhYT0wo2TpSBfZUGur4pV1VBCTKuY46A0bug90xZSNn7E+may0+SLr+2o1DZszEU/Ej4I8MBcF68SOmJE+QvWYJ11y5UWi3ne/chb/FiCpYvJ+mBocTNnEHMRx9S7Z13qLlmNW6rlYinnyF02DAyp0zh/J13caFvP2ynTiOAkt17SPh8LtbDR4h48skKKbCGJk3QREdhO3kSVCqEEFj27cf/5ptIeXw8istF5NNPUbx5C+e6diNxwH1Y9x8gdtpUWbSITNW1JyZWKN68BGdODnlffUX2jBlSJffSeRs2AEUh6/0PSBkzlsJ168n/clnZcampJA4eTPG2bRivawoIIp5+mpJduyhcvdrrEivZto2cuZ/jttnQhIQQ/frECs3GjK1beztaAritVhwZmVIF2e0m+L7K10XwwPtQBwSgNpsx33AD5nZtyXr3Pa/EjP3cOVIfH1+hlfLlcOXnU7J1a6XxwrXfolxW6Hk1oNLr0UZFEXhnTyky+ifaAhSuX4+r3G8DkP3hhxV+r78CTVgY8XNmY+50Iyp/f0zt2xM//wvU/2PEAlIG53L81nXyb6Eq1bH8/XCUyJtx3gVoMxJ+mSpJBGRW1/4F0PND+OJOmdq77wu5yugyEXZ8Auc2QVhd6PwcbHoLSvPgqwdg7H6o200S0ZGvZO1Jh8clqRR7hBeFSsqyhNYAhDxvgzth1M+gMcKdHnfNvi/g0FLYOxcGr4Qd0+Xqxu2Co6sg5ww0vEuuWBCweCAMXgHnN8HuOdDxCTiwqCxduW5XVO3HEFDHSOYHMijvLiqk9NRp/LvcRu68LyoU3zlSUkh7/gWiXp+I4nDgKiig6Icf0YSF4S4pxrLL84TsUSc2tW2DKy8Pt90u05VVKmqt+x7r/gOoAwNQ7HYuPi3LkUKHDaNo40bsFxLRDLkfbUQEbouFwq+/oeTnn+W8ikLRDz9gaNQQv44dKdmxA32D+uTOn09g375kf/hhhZ80oFs32SNm2IP4d+qMplVLQBY45i/9Etvp07gLC7GdOUPUhAmoAwJwFRWRNfUjVH5+xL7/PumTJlF68CAhw4ZiP3+h0mVTvGkTocOGogkNxdSiBbV/WI/1wEG0MdXQxsV5ExJcRUUUrFlD5tvvoJSWoomOJmHBfCJfeZncz2aDohAyYjimtm29cwshsFzBvVZ67FilbpyXYE9OpmT7dnQ1a0gJmHIwNr2uyikDX3HVVlT8h11+fwS62FhiJk+WiRE63b8iUfN3Q+3nR2Dv3uQvXlxuUE1A167/nlG/gmuLWBSXfKJ3O6E0V968yyPvvFxZhNaSdSX2YunKWthPuqCGb5AusbVPylgLyGys/CRJFHo/KSTpFyG3/1xu2XrDOJl6XJgmYz05Z+HsRhmY/+IuuRrSmaHLG9Jlt2e2JKN63aU77ouekhABjn8DrR6U2V/9ZsP6F6TbrO0omTF2iVQATn0PMS3RNBtEre/XytiI2Q9niQVn6kVc+RUVh0FmAZVs+4WM115DG1ONapMn47ZYyXj99Ur7lmzZSuioh1CspViTUzA2bAAOJ6a2bXCmZ6A4HYSPHo2uTm2sBw6S9f77hD8+TrrOcnIQag3FmzdVnnfnLvy7dCFs9CPkzJhB6clThD04HKXUSsHqNaj9/AgZNgzLrt2YO9wAyK6PJg+xqENCiJs5A3tiIs68PIxNmyIMBtRmM46cHNwlJQTd3YfcRYsoPXgQAMfFNPS1a1H8008VbNHXrevthKkymVCZTFeUU3Hl5pJRTvXZmZZG8vARJCxaSMCtstWzOji4knyKvm7dSnNpoqJwpKRQevo0xqZNvdXozvx8Lj73PM6sLKInvkbKkaO4S0rkPHXq4N/ltkpz/dsI7NmTnE8+rZAYEXT33aj9r277ZnVAAOrf3+0/C5XRSPjYMahMJgpXr0YTEU7Es8+iCa96TeWuLWLRGKQba9sHMqurfIruJTit0PdzWHIfNLlH3rSteZKEWtwPP75aqVARvR807gtfDpKrHqGCmyfIwH/6EQiKlRldgTEQ3x6EAn3nyPqXmZ3KXGz2ElnrMmw9FCSDtQBufknGhC6RyiXs/wKa9JWkluHpdhgYC0dWVP5MF37GUa0LZ3sOAMDvppuIevkl0l5+meB77qFoXcX+LUH39kffsCHGli2x7t1L+quvEfvxdPS1a1cqFtTXq4cmMhLFakVlNuEqLpZ1LmoV2uho3MXFFKxZg+3kSdwlJehq1cKv440oeXlU/3IpqNXo69en9MjRCvMaGjRAX6smmmrVMDZrLnurFOTjSL1IxBPjUSxWClYsp/TYcW/VtqFpE+/xKq0Wt06Htnp1tNWrIzQatKGhuIqKsZ08SdC9AxACMt//wHtM8YYNJCyYT9EPP3o/pzokhIjxjyN0OlzFxaj9/Cp/vx5Yj1SOb9jPn0exWn9T10sbG4ffzTdRvNFDaFotURMmkLtkKUXffkvEM88QPGiglG9xOLDu2QMgM+U+m4X9wgU0EZHo69a5oovKmZOD22JBqNWoTKZ/vKhRGxFB/Lx5ZL7zDq7cHALuuouQQYOuSuX+tQZNSAjhj44l5IEhsm6rCkjzXAnXFrHYCsFllxlWKXugThc4vb5suz5Axi9WjoJBX0FBqqwnUanlSsJuga5vwbePly3j2z0sVx4Ne8GY3TKIby/xKBGbwRgoCSKklsz8im8Li+6FkNrQ+ekyUrkEt0vKwnSbDHvnyGB+6+GVP4vbKVcyJ7+Xq57M45JkIhvKONIlhNREuWUCareK2qsXYNl/jPS3P6Rowwai33oLd0EBMVM/IvvjT1BsNoL69EFlMJD6yGiqvf0Wme++R+mRI7hycggZNhTLvn24PD5dXc2aBPbri+3ESS4+9RSuvDyEVkv444/L/i85ORhbtqTa5Hewnzsvixi1GlJGj8aRlkbC4kWUbN9B6JAhlGzZ6s0808bGynRmlaD4hx8o2bYNXa2aaEJD0SYkcPGJJ+Vn86Qn5y9bhrF5Mwx16uDMz0eoVJSeOEnuvHmoDHqC+vfHdvoM5huuR+j1JA97kBprVuMuKERfp463lkRxOEh9+hnipk/DVVSEYrOhr1ULBch6912Z3NCzJ343drxi5pW+Vq1KY+rQ0F+VXXHm5WHZsZOCb78lZOhQwseOxZGejr52bRSXi7BRD6H28yP7008J6HGHTKlWqaTq9JkzlGz7xduWOvK558ieNh2/mzpjbNYcTZB0BTkyMkge9bBXodqvy21Ev/LKP3pDUplMmFu3Im7mDHA6/1Adjttux5Wfj7ukRJKhv79P9dgDlV5fKb2+quHaIhZFkauVlg9IN9WIn2BHTVmXElpLxkV+egMyj8pAfmhtuHeR3CY0cOxraNxHrkQyT0BAtAzqByXAlndkbAMguDrcMx/m9ZA3f5ddqhrf8Di0GyVXIN2nSFkXrUn+Wx5hdWTygDVXHh9eT5JSabk6gjpdZeV+jY5wfot0n0U2koH+c5tkLKlBT2hwF+LbcajPb0ENBNTphu6Td8n6bBHmtm3JeHMS5o4diZ36EaXHj1Ow6mvpCnK7SX/tNcLHPkrmu+/iSE8nZ/YcYj/8EGd2FkKvR1+/Po7z50mbMMEbnFUcDjLfeYeERQtJenA44Y89ir5+fQrWrsXy88/emIA2IQGV3oC7qIic+QuI+2wWrtxchEaD0OtRBOTMnEn+kqWALNQs+n4d1ZcuIeD2LtjOnMHYuDGOrCy00dEonta2AJa9e0l5+BHvV1W4bj0Jc+diO3kSodVh7nADSUOHkrB4MRFPjCfp8GGv/SqTCZW/P5rISFQmE67cXC70udtrd8nPPxM2ejTBQ+6vJL+iiYwksHdvClbKFsxotVSb9OYVSchdaiNv4SKyp8nC2eIff0QbH0/stKmcvaMHOBwE9u5N6IjhlJSTvNGEhlJt0psk3j9EBvsVBV1sDLic5C9dSv7SpUS+NEE2SnM4yPpoaoW2B8Xrf6D4ppsI6t379/63XHX80TRot8PhEfMcjbu4GKHVEjlhAgHdu/3mitGHqgNxpWKs/wpatWql7PG4Bf4QClJhblfoNw/SDksCCIiClN2yPmT/AlkF3/BOuP4x6TZz2eWf0yZv8rZiyE+ULrPYNrLWpUlfmYpcHjVvkvUtP7xUNtZ2lEwF/vwOuO9L2Ddfdoj87qmyYsgbHpcaYp+0Lzuuxo3Stfbz+zJ2U6er3GfPZ1IixhAgVz4p+0BxQvUbIes47JmLYghAtB4Oe+bAEdnD3dX1QwoTjRibt+D8nXcCYGjSmGpTpuDKygKNBvuFC2S+/Q4xH8lgefbMWQiVwHz9DRiva4rwFOThdnOuR89KX3XUxNfI/Xwe7sJC4ud/Qforr2LZscO7PW7mDDLenFTBtRbY6y6C7r8fZ2oquuo1ON+7d4XWywCxMz7FZbGSPWUKjsxMNOHhKBYLxpYtMTZpgn+3rlx88ilKDx+ucFxgn96Y2rfH2KQpOB1YDx9GsdlxFhVhbtYMZ24O6pAQdLGxWI8eI3/ZlwR064bKbCZ17KPeefy7dSP4vgHkLV6CuyCf4EGDMbVo7g0WO/PzceXl4UxPR1ejBurAQFRGY6Xvx5GVxbmuXSt1c4x49hmK1q3zFpnGfvIxQq3G1KaNt0DS7XDgys3DfuE8wmDAcSGR9Ndf9zZ200REUGP5VyAEF+4bWEGkE2THz2rvvPOHesb8GhRFwZWTg6uwCJVBf1VdbI7MTM7feVfFoL9KRe0ff0RbLfqqnONahxBir6Iorf6u+a+tFYtaA/cuAYM/xLeR7iRFgQs/w8HFMug+ZDWcXCtv9jGtpBtKYwCjgIzjsHumjKG0elC6wLpOgl2fVT5XcYashREaOL5KFkk2uQdKcqDXJ+C0g1+4JIBh6yVZBSWAOUymFtfo5KlfQa5ITnwrNcwcVtg/H+beLl8f+hIe2iKJ6cx6ucpK3Aar5c1QgDz2gTVSdqY0H3XKFvw6vY4jVbqAVP7+RL34IqljxmI7fRoAU+vWxH48HU14OMJopNqrr+DMy0MTEkLq+PHeG1/8FzKt85J+1yXoEhJwZmTIFYhaTejQB7zEog4KQuj0+N/eBZXJRPGWrVj37qVg1deEPTIaTf36ksSvkDbrLi7Br2MH8uaE4EhNxXnxIpqIcEKHP0jxT5uwX7ggVy+XQXE40UVFcfHZZyk9ehRT8+ZEvfYaJdt/QRUagiGmGkUbNpD1/gfoa9Ui/JFHyJn7OeZON8r0YpcLlb8/IfcPJun+Id6ix5JtvxD95hsE9uqFUKnQBAWhCQpCX64W6NdwpWJUxeGU16kHlj17CH3ooQpV9yqtFlVkBNrICLJnziLrvYq1DYrTiYIM9hoaNapELKbWrRF/URLGkZJC4pAHvJpz/l27EvXShKviYlOs1sqZZG439qREH7H8R3BtEUtxlkwfXv0onPbIoQfGysr7gBiIbiZrSZI8T9ZJO+DMjzKuAlLZ+BJO/wD3LQWHXVa+75hetq3Vg1IrbN0LMrOs3SOyt8qRVRDbQuqJdX0HYlrKLLXvnoGm/SCoBnz3rIwFtR4he7JseFVmhtW6CfSBkLhd2hyUAFknZCznyHL5+vhquGu6dPeVh8su62Pq3AaHl+EKa47icKE4HJjat0dfuxZ5S5d6SQXAsns31oMH8bv9dhznz5Py0CjMHTqgS4j3koo6KAjb2TNET3qT1DFjvRXQwfffj+3ECdzFxYQ+/DA5n8/Dv3MnYqZ+RP6XXxI8aDCqAH9sp8/gKiwksGcPgu7uQ9oLL+K221Dp9BSu+x7/226rkFigDgrCUL8e+atWyXoSBRxpF1EZDGS88QZBd/elcP16gvr2JWPixLLPLwTBgwaijYwk+uWXcFssODMzKdn2M/7duiGA9Ndeo+h7eS7rvn048/OIfOppXIUFJCxaSOnhw1gPH6Fw7doKlfQAObNm4XfjjX+qtkPt50dQ//7kfVEmFyRMJsxtWpP10UfeMVPrNuR99RUhffuhDvCvNE9A927kzJiB4nKheBqKhQweLJuKabVEPPkE1v37vdL7hqZNCeja9S9JgLgKCkh/5ZUKQqZF339PYK+78O/c+f897yUIoxGVnx/uy4petXFxf3luH/4ZXFvEEhQng92XSAWkUvG6F2TfFWNQGalcQtYJGd/IPQ+3vCSzrjI82T97P5dSKjqTvGlbcuD2t+X7mTeWubcu/CzrVJoNkOSk1kPuWemKU+ug1q2SIGbeKPfv/JzMJHPaof8iKSdjCpNB+WMrZd3Lba/KFdPOGZI4Lrk0VRpQrlAgp0gZFSW2HY6gVmC1kj1zJv43dcbYokWZjH45WHbuxNSmDXkLFhA27jH0tWuT8+kMAAyNGxP1ohRZdFxMo8bKFbgKClCHhlJ65Ai58xcQ+fJL+HfqRM68edjOnMW/xx1E1qmDu6SEC/3v9Tbpsu7ZQ8STTxL68MM4kpOxJyaS8+kMYj+eji4hnpKft6FNSCB8zGipKIDg/F29CH/sMdBpyZo8BXVoKIYWzdFERSK0OqJee5WClSsRBiNhI0egiYwkadiD2M9JcU9ji+ZEvfwy9jNn0cXHeRuUgUzbDRk0iAv9+3tjL/7duxE6fDgFK1dd4atVLnvvxpWTgzM7W8ZsAgLQBAejKArO7GxcOTmo/PwIfXAY2ugoCr/9Fm21GMLGjiH7k0+830vg3Xejr1kDldGA42Iqij2sEnmp9HoSFi3CXVgopVNyczC3a+dtAKaLiaHGsi9xZmUjdFrUISF/eVXhttuxHjhYabxk689XhVjUQUFUe+dtUh8bJ0lcCMLHjbtqEjB/BuV/M2EwoA4IqLKZWFUJ1xaxqDyCkZcjdY9cyfzaU5xQSxIRQOdnZcD+F89TpSEAfpoH7cbIIL81F3Z/VkYql7DjY5kJdvub0pV29ieYf5ckhGaDpLyM2yW1y/KT4TNZ94DWKN13eRdg2ZCy+c5tlCutU+uk/tncbnLcYYU2o6Qrz/u5NSitR+C2lGI9lUja4y8QN3MGll+2Y/llO7EzPsXUvDn2s+VUjwFTq9ZooqIIGz1aZnxpNEQ88zR5S5YQev/9WE+cwNSqJe6SEtJefBFtfAKhI4ajDgsj+pWXKVj7HdbDRzA2bETeksWYWrci/6vlCK2mUufHvKVLif/8c1xWC7YzZ3EXF5P04HACutxG4F13yWwvvZ7sTz711q3kzJ5NjVUrKfp+HTHvvkvOnDlYDxzA1KI5QQMGoLhcCK0WbWwcOZ9+iv3cOdShoUS98ALqkGBchYXyRn1ZXUnw4MFkTp5coVq8aO13BPXtS/C995K3ZEkF+0OHPuDVHwOwJyaROGiQ1z1o7tSJam++gdtiJXHQINwWC/GfzeLic8+jr1mTwJ53gkrlSW0eT8h996Hy90dlNJI6frw3FVsbH0/CF/PQemRlnNnZJD/8cKXtlwfJNeHhsmXBVYJKp8Nw3XVYfqkoWGq+4YarNr+5fXtq/fgDzsxMNGFhqPz9/5XAvSMlhcSBg7wZi6b27YiZMuV/Ti7maqNqlej+3RAq2cTrcsS0lE//9hLZT6U8wuuDzijTeM9vgaWDZDA9KEEWPX7/HHR6VhLMpx3kCoIrJEQIlSzADIiRBLZ9qqd6HhlwV9wysyuqqXSVXYLDCitHgPYyZVtFgf0LYcCXgKqstiakJujNsgdMwg1Sg2zQCsTuz1CKsshZuIKw0aNxZpQp62a+M5nQkSPQlRNSNLZogen69rgLCrg4/gmS7h9C4v1DcGZlYahbD8vefahUKgpWrqJo/Q8E9b9XpuYWlyDcbs737oPt6BGcWZlcfOYZKXOSmOSRZbkCgatUuC0lZL71Fv4334TKbAKHg+JNm7CdO4e5bVvZrdHlwn7mjPcYodcTO/UjkkeOJH/JEmwnTpC3aDFpzz2H+YYbUAcF4bKUUHroMAhBzPvvkfvFFyQ9MJSkwfeT9MADKFYrgX3v9pqiq55Qqa4GwLJjhySFmTPwu/lmTK1bE/XqK2giInB5AufO/ALSX3m5QsypZPNmLPv2kbtgAc6MDCKekG0G7OfOUbRhA8XbtoFKYDt1ClVAAGkvvkj2J5+Qv2JlBTscSUlkf/wx7tJSFJeL/JWrKm3PmjYde0oK1kOHcGZl/S3yLurAQKJfeVn2+PHA7+ab0depjctydYQfVUYj2shIjE2aoI2O/ldIxVVYSPobb3hJBcCyfYf8vXz4TVxbxGLNhbh2MmZxCUEJcOOTMv1YqGQacMcnJcG0fQjumiYr7+t1l0rDAAcWSm2uMz/CyW/l2LfjoTRfVuY37S9dUuXR6kFZBa8oUqJlwBJZqzJsnXR5Ne0nVYyzT1MJxZmgriyZjkotVZh/fhcGrZDpxVoDbJ4i56p9C0Q0kjGl3bPQbHyK2HdeBqezgs6U22rFfv48Ec88Tc3Vq0lYvIjge/vjLikh/8tl3thLYI87sO7bT/6yZagD/EkdL/331v37SXv2WbQx1VAFBlCwejUoCv633kb+Mk9LZLcboVZRvGULAd27IS6r7QgecC8qPz+c6RlkTHqLuFmzCBo4kIT58xFqNekTJ1K09jvCHx7ljfGEDh2KOjAQV0FBpcLN0iNHweUi9fHxCJUK43XXYW7fHuvBQ1gPHPDu58zMJGPyFMIfe4yIp5/C2KIFisOB4brrKn3dplatKdq4gbQJL6GvUwdzhxso+GY1F596GsUuVzCKw35lUtq5E8VWSrXJkzE0bYr14EFQqag2ZTLmdm3J/2o5OR9/gv3MGeI//xz/rl0pPVp5HuuBA7hLSnCXlpYJUJb/3IcOUrx5Mxfu6c+5u3phvyxwf7WgqVaN+NmfEf/5XBKWLMavY0fO9+qNIyX1bznfvwG3zXZFUU/L9u1XbG3gQxmuLVeYyw7rX5L9Tjo8Lt/bi2HNeNncS62VhZMuO9S9XcquzOvpyb5aAnVulxX4ah2cXCO1xu77Uj6Ap3l8zpZc6TYbvFJmi9mLpUBlSRZENZZk8P1LkmRApjTfMw/Ob5Vikq4rSIAHxMgVUXmo1JKslg6UGWiFF6H3DFnr0n40JG2HDa9VPCbvPO78PAwN6pNZLpMoZOB95C9fjr5uXTShoSQOGgwuFwkLF1B67Jh3P7+bbyH9tdcI7n8P+cuXVzKzYPkKdAkJCE9Wk+J2SbcXsnujOigIVUAAufO+IG7ObPIWythAUN++aKKjKfnlF/xu7EjunLmUnjhBzAfvkz5xopdI7GfPYtm7l5gPPySwd2/MHTvIQrtfc2G63RibNMaRliZ7zezcUaGm4xJKjx6VOl5DhhDUpw/CZKLapEmeFsyZIARB/e9BX78e7lIrOZ98Ss6MGd7jzR06eKvIVXo9xhYtKglEmjveiP3CBdShIeQvWYyxeXN0CfE4UlLIKlf9nzhoMDW/+Qa/zjfhzMisNI+pbVtUZj+ETou5YwdKtmypsN3YrBm2U/JBwJWbS8bE14l5792rrp3lzs8n5bFxkrhcLm8GX+6C+US/9BJC89+/taiMRkytWlaIv4FUrqhq/U+qGq6tFYtKK2MpilMKPX7RSzbrsmTLtGFbsbyxn98ib8oHFpb1TFHrwO2QN/Tmg2DPXGg1TGZiXdgqM8Mu4dBS2SXyxiflqiRph4yVNLpbph1fIhWQxLN+glxt7PhYrk5uealsxWMMhp4fQc5pGVOp2xUa9ZHFnaZQueIZ+p2M/Zz+QcZpEq6XjcEuR0QDhH8gaDT4de6MuUMHqr07BV2NGgR0605gr16oAwK9wcni7dsxtSv3uVxOhFYr9cauUE0utFpKdu8m8K47QaulcO13BA8sa6KW/vobxH7wPtroaPIWylVR1OsT0dWpTeG3a7D88otMtwVc2dmo9HovqVyCMyMDBAT27OHVz1IHBFRo+QtgatsGNBrCH39c3uTUKgJ79ZLpw5fB3KY1KrMZoVZL8tPp0FVPoMbyr6j53Vpqb9xAxPjxaCMiMLVsSWCvXt5jtXFxsjmZJ7CsDggg6uWXKmQwBdx1F8YmjQno3o3cz+dRsOZbAnvdReCdd5K//DIJHreb3EULUem0BPa4A9P1ZfVMhoYNCR0xApVBj1CpCOzevdL2oD53U7imrOlV6fHjv9qv5C9BqOQ14HBUSAtX6fS/TvT/Maj9/Ih85ll0Nap7x/y7dsXU6m8r//ifwX//seJPQcgCRZdNxjeGfSf1whwW2PIedHxcZl11GCdl7C9BrZPV+rvnyBt6SZaMuVw3AGbfBv7R0PtTWDFS1qNcEo80Bsv30dfJGIjev2xlUx6Zx+SKpPMz4CiV7rmGvaUas1oHR7+GTW9ARAM5r9MmXWYHl8AdU6TMft75svlq3ChrZTo9A1unSLLxj0Lp8xmFP+7EsncPAT16oKtRA/u5c6j8/Sk5tA1NTDWy3nuf6Lff4uL4J8j5dAY1v/kay86dWHbsoHDtd4Q+8AC5ixYR9eILFG/eUnZTEYLQUQ+hDg6meMsWEuZ/Qd7CRQiNhrjZs8lbuBCV0YDichHy4DCcWVlkf/AhxT//LJ941WoSFi4k9fHHASnC+GtP2ZcX9qlDQ4mdOpX8pUspPXYUY7NmBPTsCWo12VOnYtm1G21MNeLnzMGvY0f8b7/dm8asr1tXStBcJhciVKorBr01oaFEPvcs4Y89imK3ozKbK2Vq6WJjqb54Ee4SC0KnlcWDgYG4LBZUBj2KxULquMeJ/Xj6FYsUVUYTCIEmNJSYd9/FbbGA243KZKoQNL58u2KzkTTyoQpFl6Y2rRFXKND8q9CEhhA+ZgwpY8Z4x4ROR8j9gyuJbP6Xoa0WTcL8+VJrTaNBmM1o/geVk682qlzlvRCiK/AhoAY+UxTlrV/b909X3pdkw45PocVg2e9k9WOSVIzBshrfGCwVkM0R8ma/b55UHG41TLrFwurAxjek0rEpWDYGm9FRilRGNZFpwsZguSoqyQH/KDi9Tr7OOy+7PgbGwvzL5DTi20EfT5FlaQF86smuqdZCEkn9O2DFcJl2LITMAmt8N/wyTdpdmCJXXsUZkohuekGSSWxLqVFWmgd2K26VDpcxntKjR7EePoI6wJ+AW2/FmZuL9chRKebociM0aoRaI/WyUBBChcooYzxCr8d26hT2xEQM9eqTt3gRilsheOB96BIS0IaH47bZUNxubOfOUfzd95SePYuhVi3cNhtCryP4/vsRajXO1FRy5sxF6LSEDByEPTVVFsA5nLhLSlBHhJP96QyK15dLBa5bl/i5cypl5bgdDtmAzGpFGI2ojUYUp5xHsdlQmc2oQ0MRQuAsKEApKUFxuSrdrP9ulB47xvl+94DLhal9ewK7dydtwgTvdmEwUHPNanSxsX96bmduLpmTp1CwahUoCvq6dYibOdObRXa14Soswnb6FLmfz0Pl70/oiBFoq0X/pYp+H/4Z/N2V91WKWIQQauAUcBuQAuwGBiiKcuxK+/9pYgHpajq8TAbD69win/61JrnKcFgkSVw8IG/oR5bJOpfjazwyL2NloD1lt5RiUWlk6vH6F8rmN4XKSvjCi2ArkRldJVnSFdbjQ+mm2vmJzB5zO2UW131fyoC+vVgSw8qRsvblEprcI6vu7UXS3sRfpLutzyxJHCqNPIe9RAbvFbdMkdYaJcm5XdKlpzWCSi1vwiUlqPz8cOXmypuv3Y7t3HkMjRujDpCpnUKtxmWxILRab13EJbgsFhS7XbpZhEBlMFTQzQJ5o8t4/Q0K164FZHFe7LSpaMv1nHeXloIQuEtKSB03ztvvxe/mm4j2yPQXbdhA8caNGFu0IKh37z9ViFjV4CopwZGcTM6cueB2yQy97BzyFixAHRxE6LBhaKKjK33ff3j+wkLcFguKw/GPkabbagWVykco/yFca8TSHnhFUZTbPe+fA1AUZdKV9v9/EQtI943DKuMlbieUFoI1R97UXU4IrCZXHsWZkmxUWunG0vvLVY/LIbsbqvWAAhf3y9VNcA3ZQMw/WsZt3C4Zl3HZ5b5ZpyBpm1wBKW5JUlqDPJfOXGZfcRYcWyXFJGvdJElu3wJZ4BnXWtooBJgjwRT05z//lb4Sm9RC+z3V2T8LV0GBvNG53aiMxt8sLnPm5Xm7KAqTyRtDURQFt9WKSq//n3GzuK1WFLcbtacFs7u0FNTq/zeh+ODDn8G1Rix9ga6Kogz3vB8MtFUUZUy5fUYCIwHi4+NbJv5Ob/A/DLdbxl40hv9f8NFZKlcOl6cZl4fLIdONNX/g5q0ocs5L9rid8k+llWSluUL6sQ8++ODDH8DfTSz/uawwRVFmKorSSlGUVuFXsyeBSiVdRf/fjBaN4bdJBWQ68x8hFZB2lLdHpfGcQ+0jFR988KFKo6oRSypQXmku1jPmgw8++ODDfwRVjVh2A3WEEDWEEDrgXuCbf9kmH3zwwQcf/gSqVB2LoihOIcQYYB0y3XiOoiiVdS188MEHH3yosqhSxAKgKMpaYO2/bYcPPvjggw//P1Q1V5gPPvjggw//cVSpdOM/CyFEFvBH843DgOy/0Zyrgapuo8++v4aqbh9UfRt99v01XLIvQVGUq5hWWxH/aWL5MxBC7Pk787avBqq6jT77/hqqun1Q9W302ffX8E/Z53OF+eCDDz74cFXhIxYffPDBBx+uKq4lYpn5bxvwB1DVbfTZ99dQ1e2Dqm+jz76/hn/EvmsmxuKDDz744MM/g2tpxeKDDz744MM/AB+x+OCDDz74cHWhKMr//B/QFTgJnAGe/RvmnwNkAkfKjYUAPwCnPf8Ge8YF8JHHlkNAi3LHDPHsfxoYUm68JXDYc8xHlLkwr3iOK9gXB/wEHAOOAo9VJRsBA7ALOOix71XPeA1gp2fOpYDOM673vD/j2V693FzPecZPArf/3jXwa+f4le9RDewH1lRR+y54foMDwJ6q9Bt79gsCvgJOAMeB9lXFPqCe53u79FcIjKsq9nn2exz5/+MIsBj5/6ZKXYPeY672Tbaq/SFvBmeBmoAOefNqeJXPcSPQgorE8s6lHwd4Fnjb87o78J3nwmwH7Cx3cZ3z/BvseX3pIt7l2Vd4ju32W+e4gn3Rly58wB/ZpbNhVbHRc4yf57XWcxG3A74E7vWMfwo87Hn9CPCp5/W9wFLP64ae31fv+c9w1vP7/+o18Gvn+JXvcTywiDJiqWr2XQDCLhurEr+xZ9s8YLjntQ5JNFXGvsvuGelAQlWxD4gBzgPGctfFA792ffAvXYNee6/mDbYq/iGfitaVe/8c8NzfcJ7qVCSWk0C053U0cNLzegay3XKF/YABwIxy4zM8Y9HAiXLj3v1+7Rx/wNavke2fq5yNgAnYB7RFVghrLv8dkSKl7T2vNZ79xOW/7aX9fu0a8BxzxXNcwa5YYANwM7Dmt479N+zzbL9AZWKpEr8xEIi8MYqqaN9lNnUBtlUl+5DEkowkLA3yGrz9164P/qVr8NLftRBjufSDXEKKZ+zvRqSiKGme1+lA5O/Y81vjKVcY/61z/CqEENWB5shVQZWxUQihFkIcQLoUf0A+PeUriuK8wpxeOzzbC4DQ/4fdob9xjsvxAfA04Pa8/61j/w37ABRgvRBir6fTKlSd37gGkAXMFULsF0J8JoQwVyH7yuNepKvpt479R+1TFCUVmAIkAWnIa2ovVe8aBHzB+38EiqR65d8+hxDCD1gOjFMUpfDPHv9X8VvnUBTFpShKM+TKoA1Q/++05c9ACNEDyFQUZe+/bcvvoIOiKC2AbsBoIcSN5Tf+y7+xBuku/kRRlOZACdLtU1XsA8DTB+pOYNmfPfZq4NfOIYQIBu5CEnQ1wIyMiVRJXAvE8m91pcwQQkQDeP7N/B17fms89grjv3WOShBCaJGkslBRlBVV0UYARVHykYkG7YEgIcSl1g7l5/Ta4dkeCOT8P+zO+Y1zlMcNwJ1CiAvAEqQ77MMqZB/gfapFUZRMYCWSoKvKb5wCpCiKstPz/isk0VQV+y6hG7BPUZSM3zn2n7bvVuC8oihZiqI4gBXI67JKXYOXcC0Qy7/VlfIbZHYInn+/Ljd+v5BoBxR4lsHrgC5CiGDP00kXpC8zDSgUQrQTQgjg/svmutI5KsBz3GzguKIo71U1G4UQ4UKIIM9rIzL+cxxJMH1/xb5Lc/YFNnqe9L4B7hVC6IUQNYA6yIDpFa8BzzG/dg4vFEV5TlGUWEVRqnuO3agoysCqYp/nezMLIfwvvUb+NkeoIr+xoijpQLIQop5n6BZklmKVsK8cBlDmBvutY/9p+5KAdkIIk+f4S99flbkGK+D3gjD/C3/IDI5TSL/9C3/D/IuRfk8H8snsQaRvcgMyhfBHIMSzrwCme2w5DLQqN88wZErfGWBoufFWyJvEWWAaZWmKVzzHFezrgFxeH6IsnbJ7VbERaIpM4z3kmeMlz3hNz0V/Buma0HvGDZ73Zzzba5ab6wWPDSfxZN381jXwa+f4jd+6M2VZYVXGPs9+BylL2X7ht77/f/o39uzXDNjj+Z1XIbOmqpJ9ZuQTemC5sapk36vIVO0jwHxkZleVuQbL//kkXXzwwQcffLiquBZcYT744IMPPvyD8BGLDz744IMPVxU+YvHBBx988OGqwkcsPvjggw8+XFX4iMUHH3zwwYerCh+x+PA/BSFElBBiiRDirJDSJmuFEHX/H/P0EkI0/Dts/BM2tBNC7BRCHBBCHBdCvOIZv1MI8ezvHO6DD/8afOnGPvzPwFM49gswT1GUTz1j1wEBiqJs/ZNzfY6sV/nqqhv66+dUK4riKvf+JHCPoigHhRBqoJ6iKMf+KXt88OH/C9+KxYf/JdwEOC6RCoCiKAcVRdkqhOgshFhzaVwIMU0I8YDn9VtCiGNCiENCiClCiOuRelGTPauFWkKIZkKIHZ59VnqqqhFCbBJCvC+E2ONZVbQWQqwQQpwWQrxe7nyDhBC7PPPN8BAFQohiIcS7QoiDSBmb8ohAFt6iSC21Y55jHhBCTPO8PlDuzyqE6OSpwp/jOd9+IcRdV/2b9sGH34CPWHz4X0JjpOLrH4YQIhToDTRSFKUp8LqiKL8gpS+eUhSlmaIoZ4EvgGc8+xwGXi43jV1RlFbIXhVfA6M9tjwghAgVQjQA+gM3KFJo0wUM9BxrRvbyuE5RlJ8vM+994KSHyB4SQhgut99jXzNgArKq/RdkZfVGRVHaIMl2skfmxQcf/hH4iMWHax0FQCkwWwjRB7BcvoMQIhAIUhRls2doHrK52yVc0p47DBxVFCVNURQbsslTHFLXqSWwW8jWALcgZTJAkszyKxmmKMprSBmQ9cB9wPdX2k8IUQeYjHSbOZD6VM96zrUJKe8R/1tfgg8+XE1ofn8XH3z4z+AoZWJ5l8NJxQcpA8heFUKINsibfV9gDFK9+M/A5vnXXe71pfcapK7UPEVRnrvCsaXl4yqXw7Na+kQIMQvI8qywvBCyFcKXwAilrKeHAO5WFOXkn/wcPvhwVeBbsfjwv4SNgF6UNblCCNFUCNERSAQaelRdg5BEcunGHKgoylpkT/HrPIcWIds4oyhKAZDnmQdgMHBp9fJHsAHoK4SI8JwzRAiR8HsHCSHu8CQkgFShdQH5l+02B5h7WXLCOmDspWOFEM3/hK0++PCX4Vux+PA/A0VRFCFEb+ADIcQzSBfXBWRjs2QhxJdIZdjzSDVlkOTxtSd+IZB97UH2XZklhHgUuZIZAnwqhDAhXVxD/4Rdx4QQLyK7O6qQKtijkWT3WxgMvC+EsCBXXAMVRXFd4hoPOfUF6gohhnmOGQ5MRHa8POQ533mgxx+11wcf/ip86cY++OCDDz5cVfhcYT744IMPPlxV+IjFBx988MGHqwofsfjggw8++HBV4SMWH3zwwQcfrip8xOKDDz744MNVhY9YfPDBBx98uKrwEYsPPvjggw9XFf8H8ue+bE3AOzUAAAAASUVORK5CYII=\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"ax1 = sns.scatterplot(\\n\",\n    \"    x=X.iloc[:, 0].values.flatten(),\\n\",\n    \"    y=multi_data[\\\"PC Count\\\"].values,\\n\",\n    \"    hue=all_treatments[recommended_T],\\n\",\n    \"    hue_order=all_treatments,\\n\",\n    \"    palette=\\\"Dark2\\\",\\n\",\n    \"    s=40,\\n\",\n    \")\\n\",\n    \"plt.legend(title=\\\"Investment Policy\\\")\\n\",\n    \"plt.setp(\\n\",\n    \"    ax1,\\n\",\n    \"    xlabel=\\\"Customer Size\\\",\\n\",\n    \"    ylabel=\\\"PC Count\\\",\\n\",\n    \"    title=\\\"Optimal Investment Policy by Customer\\\",\\n\",\n    \")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"est.plot(0, max_depth=2, treatment_names=['None'] + treatment_names)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Performance based on ground truth\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"roi_current = true_roi[np.arange(X.shape[0]), T].sum()\\n\",\n    \"roi_optimal = true_roi[np.arange(X.shape[0]), recommended_T].sum()\\n\",\n    \"roi_bothT = true_roi[:, -1].sum()\\n\",\n    \"all_rois = np.array([roi_optimal, roi_current, roi_bothT])\\n\",\n    \"Y_baseline = (Y - model.effect(X=X.values[:, [0]], T1=T)).sum()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Policy</th>\\n\",\n       \"      <th>ROI ($)</th>\\n\",\n       \"      <th>ROI (% of baseline Y)</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>Optimal</td>\\n\",\n       \"      <td>8735944.79</td>\\n\",\n       \"      <td>57.4</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>Current</td>\\n\",\n       \"      <td>1829938.41</td>\\n\",\n       \"      <td>12.0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>All Investments</td>\\n\",\n       \"      <td>373176.80</td>\\n\",\n       \"      <td>2.5</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            Policy     ROI ($)  ROI (% of baseline Y)\\n\",\n       \"0          Optimal  8735944.79                   57.4\\n\",\n       \"1          Current  1829938.41                   12.0\\n\",\n       \"2  All Investments   373176.80                    2.5\"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"pd.DataFrame(\\n\",\n    \"    {\\n\",\n    \"        \\\"Policy\\\": [\\\"Optimal\\\", \\\"Current\\\", \\\"All Investments\\\"],\\n\",\n    \"        \\\"ROI ($)\\\": all_rois,\\n\",\n    \"        \\\"ROI (% of baseline Y)\\\": np.round(all_rois / Y_baseline * 100, 1),\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusions\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML to:\\n\",\n    \"\\n\",\n    \"* Learn the effects of multiple concurrent interventions\\n\",\n    \"* Interpret the resulting individual-level treatment effects\\n\",\n    \"* Build investment policies around the learned effects\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"interpreter\": {\n   \"hash\": \"2e5c6628eef985e7fd2fa2aad22c988c5b8aa1d2648cf9c51c543a2a2637c546\"\n  },\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.6.6 64-bit\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Recommendation AB Testing at An Online Travel Company - EconML + DoWhy.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Recomendation.png\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"# Recommendation A/B Testing: Experimentation with Imperfect Compliance\\n\",\n    \"\\n\",\n    \"An online business would like to test a new feature or offering of their website and learn its effect on downstream revenue. Furthermore, they would like to know which kind of users respond best to the new version. We call the user-specific effect a **heterogeneous treatment effect**. \\n\",\n    \"\\n\",\n    \"Ideally, the business would run A/B tests between the old and new versions of the website. However, a direct A/B test might not work because the business cannot force the customers to take the new offering. Measuring the effect in this way will be misleading since not every customer exposed to the new offering will take it.\\n\",\n    \"\\n\",\n    \"The business also cannot look directly at existing data as it will be biased: the users who use the latest website features are most likely the ones who are very engaged on the website and hence spend more on the company's products to begin with. Estimating the effect this way would be overly optimistic.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"In this customer scenario walkthrough, we show how tools from the [EconML](https://aka.ms/econml)  and [DoWhy](https://github.com/py-why/dowhy) libraries can still use a direct A/B test and mitigate these shortcomings.\\n\",\n    \"\\n\",\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#Background)\\n\",\n    \"2. [Data](#Data)\\n\",\n    \"3. [Create Causal Model and Identify Causal Effect with DoWhy](#Create-Causal-Model-and-Identify-Causal-Effect-with-DoWhy)\\n\",\n    \"4. [Get Causal Effects with EconML](#Get-Causal-Effects-with-EconML)\\n\",\n    \"5. [Test Estimate Robustness with DoWhy](#Test-Estimate-Robustness-with-DoWhy)\\n\",\n    \"    1. [Add Random Common Cause](#Add-Random-Common-Cause)\\n\",\n    \"    2. [Add Unobserved Common Cause](#Add-Unobserved-Common-Cause)\\n\",\n    \"    3. [Replace Treatment with a Random (Placebo) Variable](#Replace-Treatment-with-a-Random-(Placebo)-Variable)\\n\",\n    \"    4. [Remove a Random Subset of the Data](#Remove-a-Random-Subset-of-the-Data)\\n\",\n    \"6. [Understand Treatment Effects with EconML](#Understand-Treatment-Effects-with-EconML)\\n\",\n    \"7. [Make Policy Decisions with EconML](#Make-Policy-Decisions-with-EconML)\\n\",\n    \"8. [Conclusions](#Conclusions)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Background\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://cdn.pixabay.com/photo/2013/07/13/12/18/boeing-159589_640.png\\\" width=\\\"450\\\">\\n\",\n    \"\\n\",\n    \"In this scenario, a travel website would like to know whether joining a membership program compels users to spend more time engaging with the website and purchasing more products. \\n\",\n    \"\\n\",\n    \"A direct A/B test is infeasible because the website cannot force users to become members. Likewise, the travel company can’t look directly at existing data, comparing members and non-members, because the customers who chose to become members are likely already more engaged than other users. \\n\",\n    \"\\n\",\n    \"**Solution:** The company had run an earlier experiment to test the value of a new, faster sign-up process. Instrumental variable (IV) estimators can exploit this experimental nudge towards membership as an instrument that generates random variation in the likelihood of membership. This is known as an **intent-to-treat** setting: the intention is to give a random group of users the \\\"treatment\\\" (access to the easier sign-up process), but not all users will actually take it. \\n\",\n    \"\\n\",\n    \"The EconML and DoWhy libraries complement each other in implementing this solution. On one hand, the DoWhy library can help [build a causal model, identify the causal effect](#Create-Causal-Model-and-Identify-Causal-Effect-with-DoWhy) and [test causal assumptions](#Test-Estimate-Robustness-with-DoWhy). On the other hand, EconML's `IntentToTreatDRIV` estimator can [estimate heterogeneous treatment effects](#Get-Causal-Effects-with-EconML) by taking advantage of the fact that not every customer who was offered the easier sign-up became a member to learn the effect of membership rather than the effect of receiving the quick sign-up. Furthermore, EconML provides users tools to [understand causal effects](#Understand-Treatment-Effects-with-EconML) and [make causal policy decisions](#Make-Policy-Decisions-with-EconML).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"\\n\",\n    \"# Utilities\\n\",\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"import lightgbm as lgb\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"\\n\",\n    \"# DoWhy imports\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.iv.dr import LinearIntentToTreatDRIV\\n\",\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter, \\\\\\n\",\n    \"                                    SingleTreePolicyInterpreter\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"%matplotlib inline\\n\",\n    \"\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Data\\n\",\n    \"\\n\",\n    \"The data* is comprised of:\\n\",\n    \" * Features collected in the 28 days prior to the experiment (denoted by the suffix `_pre`)\\n\",\n    \" * Experiment variables (whether the use was exposed to the easier signup -> the instrument, and whether the user became a member -> the treatment)\\n\",\n    \" * Variables collected in the 28 days after the experiment (denoted by the suffix `_post`).\\n\",\n    \"\\n\",\n    \"Feature Name | Details \\n\",\n    \":--- |: --- \\n\",\n    \"**days_visited_exp_pre** |#days a user visits the attractions pages \\n\",\n    \"**days_visited_free_pre** | #days a user visits the website through free channels (e.g. domain direct) \\n\",\n    \"**days_visited_fs_pre** | #days a user visits the flights pages \\n\",\n    \"**days_visited_hs_pre** | #days a user visits the hotels pages \\n\",\n    \"**days_visited_rs_pre** | #days a user visits the restaurants pages \\n\",\n    \"**days_visited_vrs_pre** | #days a user visits the vacation rental pages \\n\",\n    \"**locale_en_US** | whether the user access the website from the US \\n\",\n    \"**os_type** | user's operating system (windows, osx, other) \\n\",\n    \"**revenue_pre** | how much the user spent on the website in the pre-period \\n\",\n    \"**easier_signup** | whether the user was exposed to the easier signup process \\n\",\n    \"**became_member** | whether the user became a member \\n\",\n    \"**days_visited_post** | #days a user visits the website in the 28 days after the experiment \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the travel company's users, the data used in this scenario is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample AB data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/RecommendationAB/ab_sample.csv\\\"\\n\",\n    \"ab_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>days_visited_exp_pre</th>\\n\",\n       \"      <th>days_visited_free_pre</th>\\n\",\n       \"      <th>days_visited_fs_pre</th>\\n\",\n       \"      <th>days_visited_hs_pre</th>\\n\",\n       \"      <th>days_visited_rs_pre</th>\\n\",\n       \"      <th>days_visited_vrs_pre</th>\\n\",\n       \"      <th>locale_en_US</th>\\n\",\n       \"      <th>revenue_pre</th>\\n\",\n       \"      <th>os_type_osx</th>\\n\",\n       \"      <th>os_type_windows</th>\\n\",\n       \"      <th>easier_signup</th>\\n\",\n       \"      <th>became_member</th>\\n\",\n       \"      <th>days_visited_post</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>25</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.01</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>25</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>2.26</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>15</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>18</td>\\n\",\n       \"      <td>14</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.03</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>17</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>17</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>23</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>418.77</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>24</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>22</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>18</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1.54</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>12</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   days_visited_exp_pre  days_visited_free_pre  days_visited_fs_pre  \\\\\\n\",\n       \"0                     1                      9                    7   \\n\",\n       \"1                    10                     25                   27   \\n\",\n       \"2                    18                     14                    8   \\n\",\n       \"3                    17                      0                   23   \\n\",\n       \"4                    24                      9                   22   \\n\",\n       \"\\n\",\n       \"   days_visited_hs_pre  days_visited_rs_pre  days_visited_vrs_pre  \\\\\\n\",\n       \"0                   25                    6                     3   \\n\",\n       \"1                   10                   27                    27   \\n\",\n       \"2                    4                    5                     2   \\n\",\n       \"3                    2                    3                     1   \\n\",\n       \"4                    2                    3                    18   \\n\",\n       \"\\n\",\n       \"   locale_en_US  revenue_pre  os_type_osx  os_type_windows  easier_signup  \\\\\\n\",\n       \"0             1         0.01            0                1              0   \\n\",\n       \"1             0         2.26            0                0              0   \\n\",\n       \"2             1         0.03            0                1              0   \\n\",\n       \"3             1       418.77            0                1              0   \\n\",\n       \"4             1         1.54            0                0              0   \\n\",\n       \"\\n\",\n       \"   became_member  days_visited_post  \\n\",\n       \"0              0                  1  \\n\",\n       \"1              0                 15  \\n\",\n       \"2              0                 17  \\n\",\n       \"3              0                  6  \\n\",\n       \"4              0                 12  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"ab_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"Z = ab_data['easier_signup'] # nudge, or instrument\\n\",\n    \"T = ab_data['became_member'] # intervention, or treatment\\n\",\n    \"Y = ab_data['days_visited_post'] # outcome of interest\\n\",\n    \"X_data = ab_data.drop(columns=['easier_signup', 'became_member', 'days_visited_post']) # features\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"The data was generated using the following undelying treatment effect function:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\text{treatment_effect} = 0.2 + 0.3 \\\\cdot \\\\text{days_visited_free_pre} - 0.2 \\\\cdot \\\\text{days_visited_hs_pre} + \\\\text{os_type_osx}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"The interpretation of this is that users who visited the website before the experiment and/or who use an iPhone tend to benefit from the membership program, whereas users who visited the hotels pages tend to be harmed by membership. **This is the relationship we seek to learn from the data.**\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function\\n\",\n    \"def TE_fn(X):\\n\",\n    \"    return (0.2 + 0.3 * X['days_visited_free_pre'] - 0.2 * X['days_visited_hs_pre'] + X['os_type_osx']).values\\n\",\n    \"true_TE = TE_fn(X_data)\\n\",\n    \"\\n\",\n    \"# Define the true coefficients to compare with\\n\",\n    \"true_coefs = np.zeros(X_data.shape[1])\\n\",\n    \"true_coefs[[1, 3, -2]] = [0.3, -0.2, 1]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Create Causal Model and Identify Causal Effect with DoWhy\\n\",\n    \"\\n\",\n    \"We define the causal assumptions of the intent-to-treat setting with DoWhy. For example, we can include features we believe are instruments and features we think will influence the heterogeneity of the effect. With these assumptions defined, DoWhy can identify the causal effect for us.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"feature_names = X_data.columns.tolist()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define nuissance estimators\\n\",\n    \"lgb_T_XZ_params = {\\n\",\n    \"    'objective' : 'binary',\\n\",\n    \"    'metric' : 'auc',\\n\",\n    \"    'learning_rate': 0.1,\\n\",\n    \"    'num_leaves' : 30,\\n\",\n    \"    'max_depth' : 5\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"lgb_Y_X_params = {\\n\",\n    \"    'metric' : 'rmse',\\n\",\n    \"    'learning_rate': 0.1,\\n\",\n    \"    'num_leaves' : 30,\\n\",\n    \"    'max_depth' : 5\\n\",\n    \"}\\n\",\n    \"model_T_XZ = lgb.LGBMClassifier(**lgb_T_XZ_params)\\n\",\n    \"model_Y_X = lgb.LGBMRegressor(**lgb_Y_X_params)\\n\",\n    \"flexible_model_effect = lgb.LGBMRegressor(**lgb_Y_X_params)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# initiate an EconML cate estimator\\n\",\n    \"est = LinearIntentToTreatDRIV(model_t_xwz=model_T_XZ, model_y_xw=model_Y_X,\\n\",\n    \"                            flexible_model_effect=flexible_model_effect,\\n\",\n    \"                            featurizer=PolynomialFeatures(degree=1, include_bias=False))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# fit through dowhy\\n\",\n    \"test_customers = X_data.iloc[:1000]\\n\",\n    \"est_dw=est.dowhy.fit(Y, T, Z=Z, X=X_data, outcome_names=[\\\"days_visited_post\\\"], treatment_names=[\\\"became_member\\\"],\\n\",\n    \"                     feature_names=feature_names, instrument_names=[\\\"easier_signup\\\"], target_units=test_customers,\\n\",\n    \"                     inference=\\\"statsmodels\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x576 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualize causal graph\\n\",\n    \"plt.figure(figsize=(10,8))\\n\",\n    \"est_dw.view_model(layout=None)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"### Estimand : 1\\n\",\n      \"Estimand name: backdoor\\n\",\n      \"Estimand expression:\\n\",\n      \"       d                                                                      \\n\",\n      \"────────────────(Expectation(days_visited_post|days_visited_vrs_pre,days_visit\\n\",\n      \"d[became_member]                                                              \\n\",\n      \"\\n\",\n      \"                                                                              \\n\",\n      \"ed_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_fr\\n\",\n      \"                                                                              \\n\",\n      \"\\n\",\n      \"                                                                     \\n\",\n      \"ee_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US))\\n\",\n      \"                                                                     \\n\",\n      \"Estimand assumption 1, Unconfoundedness: If U→{became_member} and U→days_visited_post then P(days_visited_post|became_member,days_visited_vrs_pre,days_visited_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_free_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US,U) = P(days_visited_post|became_member,days_visited_vrs_pre,days_visited_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_free_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US)\\n\",\n      \"\\n\",\n      \"### Estimand : 2\\n\",\n      \"Estimand name: iv\\n\",\n      \"Estimand expression:\\n\",\n      \"Expectation(Derivative(days_visited_post, [easier_signup])*Derivative([became_\\n\",\n      \"member], [easier_signup])**(-1))\\n\",\n      \"Estimand assumption 1, As-if-random: If U→→days_visited_post then ¬(U →→{easier_signup})\\n\",\n      \"Estimand assumption 2, Exclusion: If we remove {easier_signup}→{became_member}, then ¬({easier_signup}→days_visited_post)\\n\",\n      \"\\n\",\n      \"### Estimand : 3\\n\",\n      \"Estimand name: frontdoor\\n\",\n      \"No such variable found!\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"identified_estimand = est_dw.identified_estimand_\\n\",\n    \"print(identified_estimand)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Get Causal Effects with EconML\\n\",\n    \"\\n\",\n    \"To learn a linear projection of the treatment effect, we use the `LinearIntentToTreatDRIV` EconML estimator. For a more flexible treatment effect function, use the `IntentToTreatDRIV` estimator instead. \\n\",\n    \"\\n\",\n    \"The model requires to define some nuissance models (i.e. models we don't really care about but that matter for the analysis): the model for how the outcome $Y$ depends on the features $X$ (`model_Y_X`) and the model for how the treatment $T$ depends on the instrument $Z$ and features $X$ (`model_T_XZ`). Since we don't have any priors on these models, we use generic boosted tree estimators to learn them. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"*** Causal Estimate ***\\n\",\n      \"\\n\",\n      \"## Identified estimand\\n\",\n      \"Estimand type: nonparametric-ate\\n\",\n      \"\\n\",\n      \"### Estimand : 1\\n\",\n      \"Estimand name: backdoor\\n\",\n      \"Estimand expression:\\n\",\n      \"       d                                                                      \\n\",\n      \"────────────────(Expectation(days_visited_post|days_visited_vrs_pre,days_visit\\n\",\n      \"d[became_member]                                                              \\n\",\n      \"\\n\",\n      \"                                                                              \\n\",\n      \"ed_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_fr\\n\",\n      \"                                                                              \\n\",\n      \"\\n\",\n      \"                                                                     \\n\",\n      \"ee_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US))\\n\",\n      \"                                                                     \\n\",\n      \"Estimand assumption 1, Unconfoundedness: If U→{became_member} and U→days_visited_post then P(days_visited_post|became_member,days_visited_vrs_pre,days_visited_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_free_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US,U) = P(days_visited_post|became_member,days_visited_vrs_pre,days_visited_exp_pre,days_visited_hs_pre,days_visited_rs_pre,revenue_pre,days_visited_free_pre,os_type_windows,days_visited_fs_pre,os_type_osx,locale_en_US)\\n\",\n      \"\\n\",\n      \"## Realized estimand\\n\",\n      \"b: days_visited_post~became_member+days_visited_vrs_pre+days_visited_exp_pre+days_visited_hs_pre+days_visited_rs_pre+revenue_pre+days_visited_free_pre+os_type_windows+days_visited_fs_pre+os_type_osx+locale_en_US | days_visited_exp_pre,days_visited_free_pre,days_visited_fs_pre,days_visited_hs_pre,days_visited_rs_pre,days_visited_vrs_pre,locale_en_US,revenue_pre,os_type_osx,os_type_windows\\n\",\n      \"Target units: Data subset provided as a data frame\\n\",\n      \"\\n\",\n      \"## Estimate\\n\",\n      \"Mean value: 2.074836810507913\\n\",\n      \"Effect estimates: [-1.74309260e+00  5.53465593e+00  3.67174621e+00 -8.69405764e-02\\n\",\n      \"  2.49205011e+00  6.53811401e+00 -9.27156048e-01 -2.03494478e+00\\n\",\n      \" -1.58974243e+00  6.60355284e-01 -2.35253192e+00 -9.72266006e-01\\n\",\n      \"  2.58512829e+00 -4.28449527e+00  3.53941978e+00  2.01005015e+00\\n\",\n      \"  8.55532638e+00 -3.89445854e+00  6.49937040e+00  5.97849997e+00\\n\",\n      \"  6.01222833e-01  8.69152554e+00  8.49341505e-01 -4.38862542e-01\\n\",\n      \"  2.69974073e+00 -1.07172634e+00  3.83412079e+00  1.34634769e+00\\n\",\n      \"  3.97833032e+00  5.42847073e+00 -1.19288892e+00  2.10402278e+00\\n\",\n      \"  2.08726067e+00  1.56419260e+00  3.63830156e+00 -1.01578151e+00\\n\",\n      \" -3.02499000e+00  2.18876746e+00 -1.43604094e+00  5.89519266e+00\\n\",\n      \" -4.44503657e-01  3.55396415e+00 -4.28027219e+00  6.12424113e+00\\n\",\n      \" -1.94476700e+00  1.08536153e-01 -3.36965727e+00  6.33474174e+00\\n\",\n      \"  5.89486409e+00 -1.38630934e+00  6.73856605e-01  1.85980353e+00\\n\",\n      \"  3.69212314e+00  4.24501313e+00  4.70614279e+00  3.30653739e+00\\n\",\n      \"  6.10412585e+00  4.09982762e+00  1.62321176e+00  4.20534679e+00\\n\",\n      \" -2.13333488e-03 -7.97476772e-01  4.24218332e+00  1.83376652e+00\\n\",\n      \"  7.02336492e+00  1.45619212e+00  5.73407744e+00  2.44412507e+00\\n\",\n      \"  2.26878288e+00  2.13634127e+00  3.23433510e+00  3.95106838e+00\\n\",\n      \"  1.60719511e+00 -1.85150207e+00  1.17771791e+00 -1.67746289e+00\\n\",\n      \"  3.45943014e+00 -1.28928124e+00  6.34299463e+00 -2.14774544e+00\\n\",\n      \" -1.17201152e+00  8.09765933e+00  1.83124154e+00  3.95896807e+00\\n\",\n      \"  2.16741726e+00  1.82690318e+00  3.59654887e+00  3.21166170e+00\\n\",\n      \"  3.12268300e+00 -1.25797987e-02  3.52929338e+00  2.26757870e+00\\n\",\n      \" -4.71185895e-01  8.27256803e-01  4.13499096e+00  1.62878679e+00\\n\",\n      \" -1.10086813e+00 -9.70798823e-01  2.02758406e-01  1.28683768e+00\\n\",\n      \"  4.51709657e+00  1.05840050e+00  6.87684925e+00  4.43733264e+00\\n\",\n      \"  1.06629793e+00  4.19063540e+00  6.52544128e+00  5.72281224e+00\\n\",\n      \"  3.22966990e+00 -2.81420032e+00  4.99916055e+00  8.05158036e+00\\n\",\n      \"  7.67863330e+00 -3.46375509e-02  1.30546854e+00  1.05531219e+00\\n\",\n      \" -1.26010025e+00  7.91691211e-01 -2.36538221e+00  6.73795194e+00\\n\",\n      \"  4.89705680e+00  1.93764755e+00  3.50080228e+00 -3.95106313e+00\\n\",\n      \"  7.78051059e+00  2.81160250e+00  5.55741787e+00  2.50008057e+00\\n\",\n      \"  5.88765140e+00  5.76020139e+00  2.15759457e-01  3.83114064e+00\\n\",\n      \"  3.35538095e+00  4.57464892e+00  1.73651262e+00  2.20478312e-01\\n\",\n      \"  3.59258894e+00  6.52812764e+00 -9.18804011e-01  9.72567765e-01\\n\",\n      \"  4.56181090e+00  4.45009046e+00  9.87813083e-01 -1.32559925e+00\\n\",\n      \"  7.56776255e+00 -1.95094181e+00  6.53097736e+00 -1.10594109e+00\\n\",\n      \"  6.21188278e-01  3.70136780e+00 -1.23360221e+00  5.20526542e+00\\n\",\n      \"  3.12794715e+00  6.54476985e+00  7.75956636e-01  2.38163644e+00\\n\",\n      \"  3.36417138e+00  4.26756508e+00 -3.04866742e+00  1.96070583e+00\\n\",\n      \"  7.35077271e+00  3.08845773e-01  7.23580460e+00  1.34716185e+00\\n\",\n      \"  2.18156021e+00  4.83274103e+00 -2.34998026e+00  3.35537618e+00\\n\",\n      \"  5.55369276e+00  2.74221800e-01  6.18384351e+00  5.94164635e+00\\n\",\n      \"  4.03024538e+00 -3.74984445e-01  3.84850361e+00  9.82501156e-01\\n\",\n      \"  8.77008493e+00  5.56976699e+00  6.25675975e+00 -1.02349503e+00\\n\",\n      \"  6.05053434e+00 -3.38384566e-01 -1.50995724e+00 -4.45531012e+00\\n\",\n      \"  4.79286266e+00  3.62620644e+00  5.05075984e+00 -3.81138355e+00\\n\",\n      \" -4.39662442e+00  4.74418953e+00 -1.11632755e+00  2.22967461e+00\\n\",\n      \"  4.22320361e+00  8.89930991e-01  5.50984790e+00  5.28657271e+00\\n\",\n      \"  1.93668179e+00  5.16460815e+00  1.48803005e+00  3.16128421e+00\\n\",\n      \" -2.85838153e+00  3.45563312e+00  1.91304882e+00  6.87287368e-01\\n\",\n      \"  1.21567485e+00  5.13325916e+00  2.30208699e+00  2.60595527e+00\\n\",\n      \" -4.66029855e-01  6.72281877e+00  3.17388410e+00  9.80905414e-01\\n\",\n      \"  1.70294587e+00  3.93991122e+00  1.35473574e+00  4.93767675e+00\\n\",\n      \"  7.31608033e+00 -5.30408826e-02  4.48173291e+00  4.61592086e+00\\n\",\n      \"  6.57130629e-01  7.06942280e+00  2.08104238e+00  1.96786944e+00\\n\",\n      \"  4.77461409e+00 -2.62570989e+00  2.15465388e+00  6.18481952e-01\\n\",\n      \"  2.41600923e+00  5.68683208e+00  3.57537757e+00  3.50248852e+00\\n\",\n      \" -1.28753691e+00 -2.80029980e+00  3.99450642e+00  9.92538123e-01\\n\",\n      \"  1.01213435e-01  7.81927442e+00  1.25738051e+00  4.16983403e+00\\n\",\n      \" -6.81940715e-01 -4.42587106e+00  5.74988975e+00  1.68593438e+00\\n\",\n      \"  6.69688320e+00  5.21616476e+00 -2.27260936e+00  1.13831168e+00\\n\",\n      \"  5.36413952e+00  2.83253418e-01  4.88560931e+00 -1.88996135e+00\\n\",\n      \"  3.18349182e+00 -1.02463348e+00  6.06684750e+00  4.20634750e+00\\n\",\n      \"  1.62840431e+00  5.63158806e+00  4.99040472e+00 -1.10327523e+00\\n\",\n      \"  3.00969651e+00  3.03817784e-01  3.87607353e+00  1.08792523e+00\\n\",\n      \"  4.92775808e-01  7.49203732e+00 -3.02149323e-01 -2.02578596e+00\\n\",\n      \" -2.22250377e+00  1.89698906e+00 -1.09787805e+00  2.31600416e+00\\n\",\n      \" -3.65366226e+00  2.66605037e+00 -1.46510115e-01  1.21847490e+00\\n\",\n      \" -2.88910050e+00  4.06739838e+00  9.15531012e-01  7.04984898e+00\\n\",\n      \" -3.51882824e-01  3.66044140e+00 -5.98493435e-01  6.82966626e+00\\n\",\n      \" -2.69842544e+00  1.07744986e+00  1.79752059e+00  7.79385014e+00\\n\",\n      \" -4.56509202e+00  5.80269337e+00 -6.56688906e-01  5.88851860e+00\\n\",\n      \"  3.93658994e+00 -1.69590535e+00  5.20126161e+00  6.82804500e+00\\n\",\n      \"  7.16098922e+00  6.51613242e+00  1.73272127e+00  8.89407848e-01\\n\",\n      \" -2.04866376e-01  4.56717995e+00 -1.05419237e+00 -7.86606424e-01\\n\",\n      \"  3.83260536e+00  2.12661458e+00  4.01653937e+00  5.44296894e+00\\n\",\n      \"  2.72182931e+00  2.75573638e+00  2.90579391e+00  4.43073324e+00\\n\",\n      \" -1.66402361e+00 -1.97191416e+00 -1.28059779e+00  2.88480188e+00\\n\",\n      \"  2.51965402e+00 -1.36302697e-01 -7.80022805e-01 -1.49424695e+00\\n\",\n      \" -1.34282981e+00  3.44975636e+00 -3.03072104e-01 -2.45459527e+00\\n\",\n      \" -3.00629481e-01  2.29090581e+00  1.56543593e+00  3.35750472e+00\\n\",\n      \"  2.33223505e+00 -3.82989563e+00  4.88021332e+00  7.56731917e-01\\n\",\n      \"  4.25582832e+00  5.98434505e+00  3.01986691e+00 -6.77442677e-01\\n\",\n      \" -1.64953867e+00  5.66357995e+00  5.64428003e-01  5.10242590e+00\\n\",\n      \"  8.26971905e+00  4.97946101e+00  1.29196275e+00  7.76284555e-01\\n\",\n      \"  3.33445074e+00  1.30853736e+00 -1.53525283e+00  5.36833802e+00\\n\",\n      \"  1.15992695e+00  2.81928116e+00 -4.07206472e+00 -2.50815511e+00\\n\",\n      \"  8.78792298e+00  6.50547578e+00  5.01930927e+00  5.41797922e-01\\n\",\n      \" -9.09773180e-01 -2.39454791e-01  4.96199723e+00 -4.35634019e-01\\n\",\n      \"  3.80466959e+00  3.86120839e+00  2.03636643e+00  2.81371356e+00\\n\",\n      \"  3.36389949e+00  6.24676032e+00  2.21810552e+00 -9.70461750e-01\\n\",\n      \"  4.39036661e+00  8.75240453e+00  1.16978502e+00  7.93325547e-01\\n\",\n      \"  1.95900018e+00  2.11067965e+00  4.67378254e+00 -9.81738213e-01\\n\",\n      \"  5.62730702e+00  2.28988281e+00  6.39554347e-01  3.56780655e+00\\n\",\n      \"  2.55972508e+00  7.74507056e+00 -1.70026139e+00  4.79636075e+00\\n\",\n      \"  4.58045725e+00  3.92461050e+00 -4.50476384e-01  3.64823178e-01\\n\",\n      \"  5.25977278e+00  2.71290477e+00 -2.73514000e+00  7.35033429e-01\\n\",\n      \" -8.93039089e-01  4.47635864e+00 -4.00819110e-01  9.84948255e-01\\n\",\n      \" -1.25187326e-02  7.43522358e+00  2.30060347e+00  1.38459891e+00\\n\",\n      \"  1.77678620e+00  2.99902550e+00  2.88012576e+00  1.60279207e+00\\n\",\n      \" -2.17076889e+00  4.02771144e+00  1.76082775e+00  4.28513483e+00\\n\",\n      \"  4.28349578e+00  5.65144489e+00  1.82377346e+00  3.54960094e-01\\n\",\n      \"  2.81727581e+00 -4.52598385e-01 -6.03200625e-01  2.60658700e+00\\n\",\n      \"  3.08520007e+00  2.15407701e+00 -1.42112638e+00  3.21798527e+00\\n\",\n      \"  5.61414647e+00 -5.47711654e-01  4.36176805e+00  1.63973179e+00\\n\",\n      \"  1.58738126e+00  5.88689122e+00  8.97612240e-01  5.72790582e+00\\n\",\n      \" -2.08776274e+00  8.15370684e+00 -1.11019576e+00  4.31710187e+00\\n\",\n      \"  4.79763806e+00  3.53119218e+00  2.80709783e+00  3.73105939e+00\\n\",\n      \"  1.45150046e+00 -2.01269415e+00  1.57131277e+00  6.72753596e+00\\n\",\n      \"  2.32073341e+00  1.17117638e+00  1.73436699e+00  4.16817944e-01\\n\",\n      \"  2.05029100e+00 -3.51544594e+00  3.54557735e+00 -4.34142231e+00\\n\",\n      \"  4.06513401e+00  5.99370062e+00 -3.70340315e+00  3.05069363e-01\\n\",\n      \"  3.62131945e+00  5.91110995e+00  3.60378283e+00  7.90079958e+00\\n\",\n      \" -9.82519600e-01 -1.47391313e+00 -3.70396976e+00 -1.75277144e+00\\n\",\n      \"  8.22746049e+00  6.25546949e+00 -3.27053389e+00  5.80854238e+00\\n\",\n      \" -5.38139284e-01  7.33055362e+00  3.45144595e+00  1.25728783e+00\\n\",\n      \" -2.25877957e+00  2.94036380e+00  7.16332361e+00 -1.89523849e+00\\n\",\n      \"  4.59896257e+00  3.24588494e+00 -8.27676346e-01 -1.64001795e+00\\n\",\n      \" -3.39468343e-01  3.16084694e+00 -4.02755628e+00  2.68044647e+00\\n\",\n      \" -3.52309942e+00  5.44565273e+00  2.64071028e-01  3.48066706e+00\\n\",\n      \"  2.71503355e+00  6.64645821e+00  6.03453338e+00 -4.10295028e-01\\n\",\n      \"  2.19121161e+00 -2.57672250e+00  5.39241076e-02  5.10824345e+00\\n\",\n      \"  3.26779962e+00 -1.25823539e-01 -2.69624903e-01 -1.02591192e+00\\n\",\n      \" -1.65936525e-01 -3.68833403e+00  2.60254511e+00  2.33586105e+00\\n\",\n      \" -1.98761269e-01  7.92978882e-02  1.35104743e+00 -1.47352587e+00\\n\",\n      \"  8.19287501e+00  4.36825745e+00  5.62348538e+00 -3.02310464e+00\\n\",\n      \" -1.24952469e+00  3.60869767e+00 -7.14943836e-01  1.72827688e+00\\n\",\n      \" -1.08401619e+00  9.71797607e-01 -3.67172373e+00  2.87376017e+00\\n\",\n      \"  4.02261559e+00  4.40185980e+00  6.08622771e+00  2.52161723e+00\\n\",\n      \"  5.02390682e+00  2.05971964e+00  6.63443395e+00  7.86739483e-01\\n\",\n      \"  4.05075295e+00  7.14878181e+00 -1.06458487e+00  2.25387880e+00\\n\",\n      \"  3.78587974e+00  5.86594420e+00  5.28191092e+00  1.56829712e+00\\n\",\n      \"  1.11992377e+00  6.25970542e+00  4.59518376e+00 -4.73532804e-02\\n\",\n      \"  9.91925106e-01  1.78780084e+00 -1.67704486e+00  2.57846392e+00\\n\",\n      \"  5.01363080e+00  3.62578165e+00  2.98383041e+00 -3.54004556e+00\\n\",\n      \"  1.35146165e+00  1.84404206e+00  3.48719456e-01  5.49275762e+00\\n\",\n      \" -1.24477657e-01  5.71975488e+00 -7.58653139e-01  5.63162877e+00\\n\",\n      \"  1.26831897e+00  4.86859077e+00 -1.13386422e+00  1.06421474e-01\\n\",\n      \"  8.53634114e-01  3.72871105e+00  2.95248652e+00  1.55466009e-01\\n\",\n      \"  4.68613518e+00  3.15019073e+00  4.34200117e+00 -1.30058519e+00\\n\",\n      \"  2.00072905e+00  2.88969282e+00 -1.06451735e+00 -1.82511376e+00\\n\",\n      \"  3.84745924e+00  7.22350673e-01 -2.19343278e+00  3.08092161e-01\\n\",\n      \"  3.71253968e+00 -1.39914348e+00  1.54079973e+00  7.60225010e+00\\n\",\n      \"  6.67954964e+00  7.14655416e+00 -4.19495837e+00  4.88257788e+00\\n\",\n      \" -2.51365816e+00  1.77547611e+00  3.46728670e+00  3.31741550e+00\\n\",\n      \"  8.14876747e-02  8.11447031e+00  6.09301853e+00  1.24339832e+00\\n\",\n      \"  2.38910718e+00  6.81992598e+00 -7.40858729e-01  6.05346401e+00\\n\",\n      \"  7.75580654e-01  3.12830439e+00  6.51307396e+00 -3.09787098e+00\\n\",\n      \"  5.52236505e+00  2.12292849e+00 -1.58532072e+00 -7.10785546e-01\\n\",\n      \"  2.18485629e+00  2.46401673e+00  8.20218100e+00 -2.86368324e-01\\n\",\n      \"  1.96456943e-01 -3.27360049e-01 -1.76152094e+00 -4.13507498e+00\\n\",\n      \"  2.77048361e+00  3.40322662e+00  2.44251620e+00  2.67490436e+00\\n\",\n      \" -1.99694213e+00  3.99706804e+00  4.26671123e+00  4.76257264e+00\\n\",\n      \" -6.93027569e-01 -3.05010862e+00  3.05740918e+00  2.13801727e+00\\n\",\n      \"  4.34430442e+00  1.89650356e+00  2.38504437e+00  4.95921476e+00\\n\",\n      \"  3.17285628e+00  3.12211963e+00  5.46801748e+00  2.73860789e+00\\n\",\n      \"  1.76167846e+00 -1.51200597e+00 -7.96905771e-01  1.35456411e+00\\n\",\n      \"  9.29340211e-01  3.49435329e+00  4.23603904e+00  6.69448510e+00\\n\",\n      \"  5.10603232e+00 -2.36369230e+00  8.37297836e+00  1.22940278e-01\\n\",\n      \"  2.19571073e+00  3.69819816e+00  6.74460063e+00 -3.74331119e+00\\n\",\n      \"  8.92857533e-01  4.59329727e+00  3.48895907e+00  4.37231542e+00\\n\",\n      \"  2.93079746e+00 -2.97465690e+00  1.61162351e+00  1.99255762e+00\\n\",\n      \"  5.40951089e+00 -9.98206039e-01  1.43407717e+00  3.83693457e+00\\n\",\n      \"  4.19456558e-01  4.94522100e-01  6.07062543e-01  1.04986790e+00\\n\",\n      \"  3.09447525e+00  1.97291718e+00  3.46325689e-01  2.44618465e+00\\n\",\n      \"  1.64297716e+00  8.07359838e-01  7.74146481e-02  3.04319821e-01\\n\",\n      \"  2.17399157e+00 -3.76197035e+00  1.31547331e+00  2.77034800e+00\\n\",\n      \"  2.82394908e+00  2.03193459e-01  5.17072376e-01  4.97024954e+00\\n\",\n      \" -2.38117209e+00 -1.31368064e+00 -3.74253696e+00 -1.33734460e+00\\n\",\n      \"  7.50410766e+00 -2.29343424e+00 -8.28129164e-01  1.02559807e+00\\n\",\n      \"  4.72529662e+00  7.49061575e+00 -2.16372322e+00  3.00583132e+00\\n\",\n      \"  3.47987760e+00 -6.46683474e-02 -9.11975347e-01  4.28485556e+00\\n\",\n      \"  1.75228884e+00 -1.40813589e+00  3.63239066e+00  5.11789487e-01\\n\",\n      \"  1.41743073e+00  3.88809859e+00 -3.54327130e-01  3.74289817e+00\\n\",\n      \"  6.25828786e+00  5.13827132e+00  3.64615060e+00  4.38494964e+00\\n\",\n      \"  3.34938791e+00 -1.03516982e+00  1.74261092e+00  1.62080770e+00\\n\",\n      \"  6.44783537e-01  3.84808165e-01  6.66597093e+00  6.58042866e+00\\n\",\n      \"  1.65316580e+00  4.36179208e+00  4.96272829e+00 -1.32003578e+00\\n\",\n      \" -3.37267784e-01  1.17435888e+00  6.32191868e+00 -2.19374986e+00\\n\",\n      \"  6.98513892e+00 -2.41678836e+00  7.36416922e+00  4.11466970e+00\\n\",\n      \"  2.00458399e+00  6.91096947e+00 -2.81991921e+00  5.10144395e+00\\n\",\n      \"  3.61381266e+00  4.63366500e+00 -1.03542313e+00 -1.49851299e+00\\n\",\n      \" -1.59144759e-01  3.90583528e+00  6.22492672e+00  1.20704979e-01\\n\",\n      \"  4.61311085e+00  2.31444040e+00 -1.48449492e+00  1.20596862e-01\\n\",\n      \"  8.08987223e+00  6.60641742e+00 -2.00176137e+00 -2.34127540e+00\\n\",\n      \"  5.35472054e+00 -6.95845533e-01  7.35014465e+00 -1.99873366e+00\\n\",\n      \"  2.02638264e+00  5.62287844e+00  9.01788090e-01  3.05411553e+00\\n\",\n      \"  4.88057954e+00  5.98858828e+00 -3.14881269e+00  1.36720169e-01\\n\",\n      \" -1.03873249e+00 -1.55201233e+00 -5.88124947e-01  7.88855367e+00\\n\",\n      \" -9.11510636e-01  6.97647326e+00  7.99263959e+00 -2.19542887e+00\\n\",\n      \"  7.62333863e-01  4.71366269e+00  5.26937330e+00  7.48340869e-01\\n\",\n      \"  6.25446602e+00 -9.29526957e-01  1.67602852e+00  3.53900851e+00\\n\",\n      \" -9.89236796e-01  5.72960088e-01 -4.96209121e+00  1.41808646e-01\\n\",\n      \"  4.38174259e+00  3.23980166e+00  1.57245128e+00 -2.09363206e-01\\n\",\n      \"  1.23547521e+00  3.79249825e+00  1.37442484e+00  6.56595315e+00\\n\",\n      \"  4.19975970e-01  4.76295795e+00  8.03273165e+00  3.85206502e+00\\n\",\n      \" -3.14809072e+00 -1.42281734e+00  4.53843319e+00 -3.09966441e-01\\n\",\n      \"  2.73278787e+00 -3.23098446e+00 -2.07087082e+00 -1.06979572e-01\\n\",\n      \"  1.60618511e+00 -2.95772871e+00  3.81466244e+00  9.21786010e-01\\n\",\n      \" -1.35387289e+00 -7.03129229e-01  3.79559591e-01  5.77799097e+00\\n\",\n      \"  2.94330351e+00 -2.38336168e-01  2.40932306e-01  7.94506684e+00\\n\",\n      \"  3.17267188e+00 -1.49882027e+00  3.55261410e+00 -1.50667458e+00\\n\",\n      \"  2.99165436e+00  3.75253621e+00 -1.12006173e+00 -8.35947935e-01\\n\",\n      \" -9.02295356e-01  6.26190996e-01 -3.41116453e-01 -3.20073873e+00\\n\",\n      \"  6.66413349e+00  1.81441271e+00 -1.39927597e-02 -6.30747430e-01\\n\",\n      \"  4.67113793e+00  7.21881314e-01 -2.10520878e+00  7.04350250e-01\\n\",\n      \"  3.09285720e+00  2.92249368e+00  7.56353546e+00 -1.13274244e+00\\n\",\n      \"  5.17376347e+00  9.24948945e+00 -3.09396390e+00  2.26610772e+00\\n\",\n      \"  4.74759828e+00  4.91781123e+00  1.23358925e+00 -2.02618829e+00\\n\",\n      \"  1.75889103e+00  4.17112041e+00  6.97209339e+00  3.09761268e+00\\n\",\n      \"  5.89551465e+00  4.45768950e+00  1.64791986e+00  1.44191054e+00\\n\",\n      \"  5.76985139e-01  1.42627610e+00  9.66448598e-01  7.53556981e+00\\n\",\n      \"  4.10629551e+00 -1.39509766e+00 -3.29797971e-01  1.40107822e+00\\n\",\n      \"  5.15825742e+00 -2.75657454e+00  7.20215059e-01 -2.07694148e+00\\n\",\n      \"  1.59247633e+00  2.59882260e+00  2.15560971e+00  6.77307070e+00\\n\",\n      \"  4.47166256e+00 -2.53766184e+00  4.40442171e+00  3.52260241e+00\\n\",\n      \" -2.40405287e-01  2.78356222e+00  1.79254816e+00  3.22573393e+00\\n\",\n      \"  2.80867711e+00  2.66260613e+00  1.87084207e+00  6.39594723e-01\\n\",\n      \" -2.55020546e+00 -1.97359748e+00  4.63770438e+00 -3.79032496e+00\\n\",\n      \"  5.34371491e+00  6.78652025e-01  2.05061234e+00  3.16840712e+00\\n\",\n      \"  1.89895555e+00  5.90313510e+00  4.92421932e+00  4.23968004e+00\\n\",\n      \" -2.40522898e+00  5.75356577e+00  3.31254451e-01  4.47200032e+00\\n\",\n      \"  5.07581093e+00  4.51219872e+00  1.56077006e+00 -3.81885967e+00\\n\",\n      \"  3.47850715e+00 -2.16399475e+00  4.44585883e+00 -1.06202980e+00\\n\",\n      \"  4.82758393e+00 -3.06705558e-01  2.22457446e+00  1.89227309e+00\\n\",\n      \" -6.93047420e-01 -2.74082774e+00  4.48112366e+00  3.24373615e+00\\n\",\n      \"  2.40937313e+00  2.72945617e+00  4.06023806e+00  7.34159840e+00\\n\",\n      \"  4.35356041e+00  7.37977906e+00 -1.60024165e+00  3.72050168e+00\\n\",\n      \"  2.91322179e+00 -1.44928107e+00 -7.32480014e-01 -7.98501972e-01\\n\",\n      \"  8.05410850e-01  6.16302382e+00  1.49803296e-01 -3.57438812e+00\\n\",\n      \"  4.41876630e+00  6.57121478e+00  2.35263834e+00 -1.62730164e-01\\n\",\n      \"  6.34172715e+00  5.32343220e+00  6.21613634e+00  6.47585479e+00\\n\",\n      \"  7.58301854e+00  5.06271128e+00 -2.23422979e-01 -3.77726474e-01\\n\",\n      \" -2.21815777e+00  6.62474901e+00 -2.12185513e+00 -4.03188972e+00\\n\",\n      \"  3.93918428e-01  4.70401667e+00 -1.12479614e+00 -7.64482146e-01\\n\",\n      \"  5.46199850e-01 -1.17406273e+00  1.98813303e+00  4.22495335e+00\\n\",\n      \" -3.46998475e+00  5.23831859e+00  3.80043337e+00 -3.94604969e+00\\n\",\n      \"  2.71623267e+00  8.39105247e+00  6.27411909e+00  5.49172457e+00\\n\",\n      \"  1.59829426e-01 -3.69921183e-01  5.74470090e+00 -3.31019029e+00\\n\",\n      \" -2.32851148e+00  9.70311108e-01  5.19089524e+00  1.37619180e+00\\n\",\n      \"  2.07126559e+00  2.44072904e+00 -1.57609213e-01  3.46134772e+00\\n\",\n      \"  3.36619971e+00  2.55965265e+00 -4.18502036e+00  3.32595277e-01\\n\",\n      \"  6.23600406e-01  2.99559994e+00  4.56222143e+00  2.12829124e+00\\n\",\n      \"  7.32010757e-01 -4.55998526e-01 -2.04518168e+00 -2.78017056e+00\\n\",\n      \"  8.94433533e-01 -1.54750416e+00  3.46372078e+00 -4.87762972e+00\\n\",\n      \"  4.01784829e+00  4.65737498e-01  3.56823217e+00  2.98560714e+00\\n\",\n      \"  6.37814649e-02  1.53870397e+00 -2.93768797e+00  5.95941996e+00\\n\",\n      \"  2.62252390e+00  3.15463337e+00 -2.34714284e+00 -1.72444634e+00\\n\",\n      \"  2.58803802e+00  2.29550703e+00  8.93617057e-02  4.57914480e+00]\\n\"\n     ]\n    },\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lineardml_estimate = est_dw.estimate_\\n\",\n    \"print(lineardml_estimate)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE on test data:  1.9633999999999998\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"true_customer_TE = TE_fn(test_customers)\\n\",\n    \"print(\\\"True ATE on test data: \\\", true_customer_TE.mean())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Compare learned coefficients with true model coefficients\\\\\\n\",\n    \"econml_coefs = est_dw.coef_.flatten()\\n\",\n    \"coef_indices = np.arange(econml_coefs.shape[0])\\n\",\n    \"# Calculate error bars\\n\",\n    \"coef_error = np.asarray(est_dw.coef__interval()).reshape(2, coef_indices.shape[0]) # 95% CI for coefficients\\n\",\n    \"coef_error[0, :] = econml_coefs - coef_error[0, :]\\n\",\n    \"coef_error[1, :] = coef_error[1, :] - econml_coefs\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXwAAAFaCAYAAAAdEubhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABFrElEQVR4nO3deZgU1dX48e9hAAERQUCjoIIJoiwzLMMmQUEEXIGoSBQNGheMCubnG1SiUWLMqwbfIKiJgkZcUEBERGOCiqKIKIsogsgiEB0gyiLIzgDn98etbnqG7hmGqa4qus/neeZhqrqn75mi5/S9t+4iqooxxpjMVyHsAIwxxgTDEr4xxmQJS/jGGJMlLOEbY0yWsIRvjDFZomLYAaRSp04dbdCgQdhhGGPMYWXevHnrVbVusscim/AbNGjA3Llzww7DGGMOKyLyn1SPWZeOMcZkCUv4xhiTJSzhG2NMlohsH34yhYWFFBQUsHPnzrBDMaZcqlSpQv369alUqVLYoZgs4kvCF5F/ABcC36tqsySP9wPuAATYAvxGVT8vazkFBQUcddRRNGjQABEpb9jGhEJV2bBhAwUFBTRs2DDscEwW8atLZwxwbgmPrwTOUtXmwJ+AUYdSyM6dO6ldu7Yle3NYExFq165tLVUTOF9q+Kr6gYg0KOHxjxIOPwbqH2pZluxNJrD3sQlDGDdtrwX+lewBEblBROaKyNx169YFHJYxxmS2QBO+iHTBJfw7kj2uqqNUNV9V8+vWTTpRLFQbNmygRYsWtGjRgp/85CfUq1cvfrx79+6wwyti8ODBNG3alMGDB7Nu3TratWtHy5YtmTFjBueffz6bNm1K+bNPPPEEzz333CGVu2rVKl588cVDjNqY8PR9chZ9n5wVdhhpFdgoHRHJBZ4CzlPVDUGV66fatWvz2WefATB06FCqV6/O7373u/jje/bsoWLFaAx8GjVqFBs3biQnJ4dx48bRvHlznnrqKQA6depU4s/eeOONh1xuLOFfccUVh/waxpj0CKSGLyInAZOAq1R1aRBlArBgAgxvBkNrun8XTPC9iKuvvpobb7yRdu3acfvttzN06FAefvjh+OPNmjVj1apVALzwwgu0bduWFi1aMGDAAPbu3XvA682ZM4czzjiDvLw82rZty5YtW9i5cyfXXHMNzZs3p2XLlrz33nsA7N27l8GDB9OmTRtyc3N58sknAejZsydbt26ldevWPPTQQ9x+++289tprtGjRgh07dtCgQQPWr18PwHPPPUdubi55eXlcddVVAEV+h6+//ppzzz2X1q1b06lTJ7766qv47z1o0CDOOOMMTjnlFCZOnAjAnXfeyYwZM2jRogXDhw9n0aJF8d85NzeXZcuW+f5/YIw5OH4Ny3wJ6AzUEZEC4F6gEoCqPgHcA9QG/ubdrNqjqvl+lJ3Sggnw+iAo3OGON3/rjgFyL/O1qIKCAj766CNycnIYOnRo0ucsXryY8ePHM3PmTCpVqsRNN93E2LFj+dWvfhV/zu7du+nbty/jx4+nTZs2/Pjjj1StWpURI0YgInzxxRd89dVXdO/enaVLl/Lcc89x9NFHM2fOHHbt2kXHjh3p3r07U6ZMoXr16vHWyHHHHcfcuXN57LHHisS0aNEi7r//fj766CPq1KnDxo0bD4j7hhtu4IknnqBRo0Z88skn3HTTTbz77rsArF27lg8//JCvvvqKnj17cumll/Lggw/y8MMP88YbbwAwcOBAbr31Vvr168fu3buTfsgZY4Lh1yidy0t5/DrgOj/KOmjT7tuf7GMKd7jzPif8Pn36kJOTU3I406Yxb9482rRpA8COHTs49thjizxnyZIlHH/88fHn1KhRA4APP/yQgQMHAnDaaadx8skns3TpUt566y0WLFgQr11v3ryZZcuWHfTY7nfffZc+ffpQp04dAI455pgij2/dupWPPvqIPn36xM/t2rUr/n3v3r2pUKECTZo04bvvvktaRocOHfjzn/9MQUEBF198MY0aNTqo2Iwx/otGh3M6bC4o2/lyOPLII+PfV6xYkX379sWPY2OtVZX+/fvzwAMP+FauqvLoo4/So0cP314z0b59+6hZs2a8pVDcEUccUSSWZK644gratWvHP//5T84//3yefPJJzj777HSEa4wpReaupXN0iqH+qc77pEGDBnz66acAfPrpp6xcuRKArl27MnHiRL7//nsANm7cyH/+U3QV08aNG7N27VrmzJkDwJYtW9izZw+dOnVi7NixACxdupRvvvmGxo0b06NHD/7+979TWFgYf2zbtm0HHevZZ5/Nyy+/zIYNG+IxJapRowYNGzbk5ZdfBlxS//zzkidIH3XUUWzZsiV+vGLFCk455RQGDRpEr169WLBgwUHHZ4zxV+Ym/K73QKWqRc9VqurOp9Ell1zCxo0badq0KY899hinnnoqAE2aNOH++++ne/fu5Obm0q1bN9auXVvkZytXrsz48eMZOHAgeXl5dOvWjZ07d3LTTTexb98+mjdvTt++fRkzZgxHHHEE1113HU2aNKFVq1Y0a9aMAQMGsGfPnoOOtWnTptx1112cddZZ5OXlcdtttx3wnLFjx/L000+Tl5dH06ZNee2110p8zdzcXHJycsjLy2P48OFMmDCBZs2a0aJFCxYuXFjknoUxJliSqiketvz8fC2+AcrixYs5/fTTD/5FFkxwffabC1zNvus9vvffG3Ooyvx+NmkVG4M/fkCHkCMpHxGZl2pQTOb24YNL7pbgjTEGyOQuHWOMMUVYwjfGmCxhCd8YY7KEJXxjjMkSlvCNMSZLWMIvo+rVq4cdwgHGjBnDLbfckrbXnzFjBk2bNo0vvpa49HJpSymvWbOGSy+99JDLfuSRR9i+ffsh/7wxZr/MHpZ5GIjSksqpjB07liFDhnDllVcCRZdeLs0JJ5wQX+vnUDzyyCNceeWVVKtW7ZBfwxjjWA3fB6mWEH799dfjG4+cc8458QXGhg4dylVXXUXHjh256qqrGDp0KL/+9a/p3Lkzp5xyCiNHjoy/dqollZ955hlOPfVU2rZty8yZM5PGtXXr1viyyrm5ubzyyisAvPTSSzRv3pxmzZpxxx3796J566236NChA61ataJPnz5s3bqVp556igkTJvCHP/yBfv36FVl6efz48UWWUl6+fDnnnHMOeXl5tGrViq+//ppVq1bRrJnb1z7Vcs7Tp0+nc+fOXHrppZx22mn069cPVWXkyJGsWbOGLl260KVLF/bu3cvVV19Ns2bNaN68OcOHD/fzv9GYzKeqkfxq3bq1Fvfll18ecC5oRx555AHnzj77bF26dKmqqn788cfapUsXVVXduHGj7tu3T1VVR48erbfddpuqqt57773aqlUr3b59e/y4Q4cOunPnTl23bp0ec8wxunv3bv3yyy/1wgsv1N27d6uq6m9+8xt99tlndc2aNXriiSfq999/r7t27dIzzjhDb7755gPiuv322/XWW2+NH2/cuFFXr14d/9nCwkLt0qWLvvrqq7pu3Trt1KmTbt26VVVVH3zwQf3jH/+oqqr9+/fXl19+Oek1uPfee3XYsGGqqtq2bVudNGmSqqru2LFDt23bpitXrtSmTZuqquqTTz6pf/rTn1RVdefOndq6dWtdsWKFvvfee1qjRg399ttvde/evdq+fXudMWOGqqqefPLJum7dOlVVnTt3rp5zzjnxsn/44YeS/qsiLwrvZ7PfZU98pJc98VHYYZQbMFdT5NVo9yUcBkpaQrigoIC+ffuydu1adu/eXWTZ4p49e1K16v61fi644AKOOOIIjjjiCI499li+++67lEsqf/LJJ3Tu3JnYNpB9+/Zl6dID95V55513GDduXPy4Vq1afPDBB0V+tl+/fnzwwQdUrFiRL7/8ko4dOwJubf4OHQ5+ivmWLVtYvXo1v/jFLwCoUqXKAc9JtZxz5cqVadu2LfXru4XtWrRowapVq/j5z39e5OdPOeUUVqxYwcCBA7ngggvo3r37QcdnjLE+/HIraQnhgQMHctttt9GzZ0+mT59eZHOUxCWVoehSwzk5OezZsyflksqTJ0/281cAXEuvW7duvPTSS76/dmIZyZZznj59etLfv7hatWrx+eefM3XqVJ544gkmTJjAP/7xj7TFa0ymyfg+/HRvTFzSEsKbN2+mXr16ADz77LNlfu1USyq3a9eO999/nw0bNlBYWBgvu7hu3brx+OOPx49/+OEH2rZty/vvv8/69evZu3cvL730EmeddRbt27dn5syZLF++HIBt27YlbTWkctRRR1G/fv34h9GuXbsOGF1zKMs5Jy63vH79evbt28cll1zC/fffH1+G2hhzcDI+4ftt+/bt1K9fP/7117/+NeUSwkOHDqVPnz60bt06vqtUWaRaUvn4449n6NChdOjQgY4dO6ZccfHuu+/mhx9+oFmzZuTl5fHee+9x/PHH8+CDD9KlSxfy8vJo3bo1vXr1om7duowZM4bLL7+c3NxcOnToEL/5fLCef/55Ro4cSW5uLmeccQb//e9/izx+KMs533DDDZx77rl06dKF1atX07lzZ1q0aMGVV17p62YyxmSDjF4eefL81dw+cQG79+6jXs2qDO7RmN4t6/kdqjGHxJZHjpZsWB7Zlxq+iPxDRL4XkYUpHhcRGSkiy0VkgYi08qPckkyev5ohk75g91633eDqTTsYMukLJs9fne6ijTGHmwUToGAOrPoQhjdzxxnIry6dMcC5JTx+HtDI+7oB+LtP5aY0bOoSdhTuLXJuR+Fehk1dku6ijTGHkwUT4PVB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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.errorbar(coef_indices, econml_coefs, coef_error, fmt=\\\"o\\\",\\n\",\n    \"             label=\\\"Learned coefficients\\\\nand 95% confidence interval\\\")\\n\",\n    \"plt.scatter(coef_indices, true_coefs, color='C1', label=\\\"True coefficients\\\")\\n\",\n    \"plt.xticks(coef_indices, X_data.columns, rotation='vertical')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"We notice that the coefficients estimates are pretty close to the true coefficients for the linear treatment effect function. \\n\",\n    \"\\n\",\n    \"We can also use the `model.summary` function to get point estimates, p-values and confidence intervals. From the table below, we notice that only the **days_visited_free_pre**, **days_visited_hs_pre** and **os_type_osx** features are statistically significant (the confidence interval doesn't contain $0$, p-value < 0.05) for the treatment effect. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"            <td></td>            <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_exp_pre</th>       <td>0.001</td>      <td>0.007</td>  <td>0.133</td>   <td>0.894</td>   <td>-0.01</td>    <td>0.012</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_free_pre</th>      <td>0.286</td>      <td>0.007</td> <td>38.483</td>    <td>0.0</td>    <td>0.274</td>    <td>0.298</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_fs_pre</th>       <td>-0.008</td>      <td>0.007</td> <td>-1.206</td>   <td>0.228</td>  <td>-0.019</td>    <td>0.003</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_hs_pre</th>       <td>-0.189</td>      <td>0.007</td> <td>-28.043</td>   <td>0.0</td>   <td>-0.201</td>   <td>-0.178</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_rs_pre</th>        <td>0.001</td>      <td>0.007</td>  <td>0.13</td>    <td>0.897</td>   <td>-0.01</td>    <td>0.012</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_vrs_pre</th>       <td>-0.0</td>       <td>0.007</td> <td>-0.054</td>   <td>0.957</td>  <td>-0.011</td>    <td>0.011</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>locale_en_US</th>              <td>-0.021</td>      <td>0.113</td> <td>-0.185</td>   <td>0.853</td>  <td>-0.207</td>    <td>0.165</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>revenue_pre</th>                <td>-0.0</td>        <td>0.0</td>  <td>-1.255</td>   <td>0.209</td>   <td>-0.0</td>      <td>0.0</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>os_type_osx</th>                <td>0.961</td>      <td>0.139</td>  <td>6.931</td>    <td>0.0</td>    <td>0.733</td>    <td>1.189</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>os_type_windows</th>            <td>0.013</td>      <td>0.138</td>  <td>0.091</td>   <td>0.927</td>  <td>-0.215</td>    <td>0.24</td>  \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.482</td>      <td>0.27</td>  <td>1.786</td>  <td>0.074</td>   <td>0.038</td>    <td>0.926</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            Coefficient Results                             \\n\",\n       \"============================================================================\\n\",\n       \"                      point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"----------------------------------------------------------------------------\\n\",\n       \"days_visited_exp_pre           0.001  0.007   0.133  0.894    -0.01    0.012\\n\",\n       \"days_visited_free_pre          0.286  0.007  38.483    0.0    0.274    0.298\\n\",\n       \"days_visited_fs_pre           -0.008  0.007  -1.206  0.228   -0.019    0.003\\n\",\n       \"days_visited_hs_pre           -0.189  0.007 -28.043    0.0   -0.201   -0.178\\n\",\n       \"days_visited_rs_pre            0.001  0.007    0.13  0.897    -0.01    0.012\\n\",\n       \"days_visited_vrs_pre            -0.0  0.007  -0.054  0.957   -0.011    0.011\\n\",\n       \"locale_en_US                  -0.021  0.113  -0.185  0.853   -0.207    0.165\\n\",\n       \"revenue_pre                     -0.0    0.0  -1.255  0.209     -0.0      0.0\\n\",\n       \"os_type_osx                    0.961  0.139   6.931    0.0    0.733    1.189\\n\",\n       \"os_type_windows                0.013  0.138   0.091  0.927   -0.215     0.24\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.482   0.27 1.786  0.074    0.038    0.926\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est_dw.summary(feature_names=X_data.columns)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsPUlEQVR4nO3de3hU5bn38e9NjBIoilZ0VxBBNwU5n0F5sSoKtipWK8VTq7XWw1utFjdVFAtua2EXq7ZuWzy1+lZqEcTxUBXQSrFaqMAAqQgeERm0UBQVRAnhfv9YkxhCMlnJrMmcfp/ryuWsNTPPuieG5571HM3dERGR4tMi2wGIiEh2KAGIiBQpJQARkSKlBCAiUqSUAEREitRe2Q6gMQ488EDv1KlTtsMQEckrS5cu/be7t6t9Pq8SQKdOnViyZEm2wxARyStm9k5d59UEJCJSpJQARESKlBKAiEiRyqs+gLpUVFSwfv16Pvvss2yHIpIXWrZsSYcOHSgtLc12KJJleZ8A1q9fT5s2bejUqRNmlu1wRHKau7N582bWr19P586dsx2OZFneJ4DPPvtMlb9ISGbGl7/8ZTZt2pTtUCSkWDzBtLlr2LBlO4e0LWP8qK58s1/7SMrO+wQAqPIXaQT9e8kfsXiCCXPK2V5RCUBiy3YmzCkHiCQJqBNYRCRHTZu7prryr7K9opJpc9dEUr4SQARKSkro27cvPXv2ZMyYMXz66adNLuuCCy5g9uzZAFx00UWsWrWq3tcuWLCAl156qdHX6NSpE//+97+bHGNNP/zhD+nbty/du3enrKyMvn370rdv3+rPEIWmfs7mKi/q65x99tn07t2b2267jdWrV9O3b1/69evHm2++2SzXl9yxYcv2Rp1vrIJoAsq2srIyli9fDsC5557L9OnTGTduXPXzO3fuZK+9Gv+rvvfee1M+v2DBAr70pS9x9NFHN7rsqNx5550ArF27llNOOaX691ClqZ+9plSfsynlN9fvrSnXef/993n55Zd54403AJg6dSpnnnkmEydObJbrS245pG0ZiToq+0PalkVSftHdAcTiCYZN/Qudr/0zw6b+hVg8EWn5w4cP54033mDBggUMHz6c0aNH0717dyorKxk/fjyDBg2id+/e3HXXXUAwKuPyyy+na9eunHDCCWzcuLG6rGOPPbZ66YtnnnmG/v3706dPH0aMGMHatWuZPn06t912G3379uWFF15g06ZNfOtb32LQoEEMGjSIF198EYDNmzczcuRIevTowUUXXURdu8BNnz6d8ePHVx/ff//9XH755Wzbto2TTz6ZPn360LNnT2bOnNng76D2Z1+7di09e/asfv6WW25h8uTJALz55pucdNJJDBgwgOHDh7N69erdyqrrc15wwQVceumlDBkyhJ/85Cf1lvHEE08wZMgQ+vXrxwknnMC//vWvesu77LLLGDp0KIcffjgLFizgwgsv5Mgjj+SCCy6ojmXevHkcddRR9O/fnzFjxrB161YguKOaNGkS/fv3p1evXqxevbrO69S0bds2LrzwQgYPHky/fv147LHHABg5ciSJRIK+ffty4403cvvtt/Pb3/6W4447DoAHH3yQwYMH07dvXy655BIqKytD/31I/hk/qitlpSW7nSsrLWH8qK7RXMDd8+ZnwIABXtuqVav2OFefR5et924Tn/bDrnmy+qfbxKf90WXrQ5dRl9atW7u7e0VFhY8ePdp/85vf+PPPP++tWrXyt956y93d77rrLr/pppvc3f2zzz7zAQMG+FtvveWPPPKIn3DCCb5z505PJBK+3377+axZs9zd/Wtf+5q//PLLvnHjRu/QoUN1WZs3b3Z390mTJvm0adOq4zj77LP9hRdecHf3d955x7t16+bu7ldccYXfeOON7u7+5JNPOuCbNm3a7TNs3LjRjzjiiOrjk046yV944QWfPXu2X3TRRdXnt2zZUufv4O233/YePXq4u+/x2Ws+5+4+bdo0nzRpkru7H3/88f7aa6+5u/uiRYv8uOOO26Ps2p/z/PPP95NPPtl37tyZsowPPvjAd+3a5e7u99xzj48bN67e8saOHeu7du3yWCzmbdq08ZUrV3plZaX379/f4/G4b9q0yYcPH+5bt251d/epU6dW/04PO+ww//Wvf+3u7nfeead///vfr/M6NU2YMMH/8Ic/uLv7hx9+6F26dPGtW7fu8buqWcaqVav8lFNO8R07dri7+2WXXeYPPPBA6L+Pmhrz70ay69Fl6/3oKc95p2ue9KOnPNek+gpY4nXUqUXVBJSqQyWdHvXt27fTt29fILgD+P73v89LL73E4MGDq8daz5s3j5UrV1a3jX/00Ue8/vrrLFy4kLPPPpuSkhIOOeQQjj/++D3KX7RoEcccc0x1WQcccECdcTz77LO79Rl8/PHHbN26lYULFzJnzhwATj75ZPbff/893tuuXTsOP/xwFi1aRJcuXVi9ejXDhg3j9ddf5+qrr+aaa67hlFNOYfjw4aF+JzU/e322bt3KSy+9xJgxY6rPff7556HKHzNmDCUlJSnLWL9+PWPHjuW9995jx44dKeM59dRTMTN69erFwQcfTK9evQDo0aMHa9euZf369axatYphw4YBsGPHDo466qjq959xxhkADBgwoPp3ncq8efN4/PHHueWWW4BgOPO6desoK6v/1v65555j6dKlDBo0CAj+7g466KDQfx+SPRNj5Ty0+F0qa9x9tw85pPOb/dpHNuyztqJKAJnqUKnZB1BT69atqx+7O3fccQejRo3a7TVPPfVUWteuadeuXSxatIiWLVs26f1nnXUWDz/8MN26deP000/HzPjqV7/KsmXLeOqpp5g4cSIjRozgpz/9aYNl1fzse+21F7t27ao+rpq1vWvXLtq2bVvn7y5s+anKuOKKKxg3bhyjR49mwYIF1c1Oddlnn30AaNGiRfXjquOdO3dSUlLCiSeeyEMPPZTy/SUlJezcubPB+N2dRx55hK5dd7+VX7t2bcr3nH/++UyZMmW380888USD15PsCIZxrmR7xa49not6SGdTFFUfQH0dJ1F1qKQyatQofvvb31JRUQHAa6+9xrZt2zjmmGOYOXMmlZWVvPfeezz//PN7vHfo0KEsXLiQt99+G4APPvgAgDZt2vDJJ59Uv27kyJHccccd1cdVleIxxxzDH//4RwCefvppPvzwwzpjPP3003nsscd46KGHOOusswDYsGEDrVq14rzzzmP8+PEsW7as0Z/94IMPZuPGjWzevJnPP/+cJ598EoB9992Xzp07M2vWLCCo4FasWLHH+2t/zppSlfHRRx/Rvn3wD+uBBx4IVV59hg4dyosvvljdObtt2zZee+21lO9JdZ1Ro0Zxxx13VPfHxOPxBmMYMWIEs2fPru4n+uCDD3jnnXdC/31I8/piDP+elX+VKId0NkVRJYCMd6ikcNFFF9G9e3f69+9Pz549ueSSS9i5cyenn346Xbp0oXv37nz3u9/drVmhSrt27bj77rs544wz6NOnD2PHjgWCZotHH320upPv17/+NUuWLKF37950796d6dOnAzBp0iQWLlxIjx49mDNnDh07dqwzxv33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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# How close are the predicted treatment effect to the true treatment effects for 1000 users?\\n\",\n    \"plt.scatter(true_customer_TE, est_dw.effect(test_customers), label=\\\"Predicted vs True treatment effect\\\")\\n\",\n    \"plt.xlabel(\\\"True treatment effect\\\")\\n\",\n    \"plt.ylabel(\\\"Predicted treatment effect\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Test Estimate Robustness with DoWhy\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Random Common Cause\\n\",\n    \"\\n\",\n    \"How robust are our estimates to adding another confounder? We use DoWhy to test this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Add a Random Common Cause\\n\",\n      \"Estimated effect:2.074836810507913\\n\",\n      \"New effect:2.0655457813564473\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_random = est_dw.refute_estimate(method_name=\\\"random_common_cause\\\", num_simulations=5)\\n\",\n    \"print(res_random)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Add Unobserved Common Cause\\n\",\n    \"\\n\",\n    \"How robust are our estimates to unobserved confounders? Since we assume we have a valid instrument, adding an unobserved confounder should not affect the estimates much. We use DoWhy to test this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Add an Unobserved Common Cause\\n\",\n      \"Estimated effect:2.074836810507913\\n\",\n      \"New effect:2.285224693713481\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_unobserved = est_dw.refute_estimate(method_name=\\\"add_unobserved_common_cause\\\",\\n\",\n    \"                                       confounders_effect_on_treatment=\\\"binary_flip\\\",\\n\",\n    \"                                       confounders_effect_on_outcome=\\\"linear\\\",\\n\",\n    \"                                       effect_strength_on_treatment=0.05, effect_strength_on_outcome=0.5)\\n\",\n    \"print(res_unobserved)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Replace Treatment with a Random (Placebo) Variable\\n\",\n    \"\\n\",\n    \"What happens our estimates if we replace the treatment variable with noise? Ideally, the average effect would be $0$. We use DoWhy to investigate!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a Placebo Treatment\\n\",\n      \"Estimated effect:2.074836810507913\\n\",\n      \"New effect:-112.27353652608205\\n\",\n      \"p value:0.045937003218721184\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"res_placebo = est_dw.refute_estimate(method_name=\\\"placebo_treatment_refuter\\\", placebo_type=\\\"permute\\\",\\n\",\n    \"                                     num_simulations=2)\\n\",\n    \"print(res_placebo)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"While the \\\"New effect\\\" is not zero, the p-value is greater than 0.05 which means that we cannot reject the null hypothesis that $0$ is under the average treatment effect distribution. Increasing `num_simulations` should produce a \\\"New effect\\\" closer to $0$. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Remove a Random Subset of the Data\\n\",\n    \"\\n\",\n    \"Do we recover similar estimates on subsets of the data? This speaks to the ability of our chosen estimator to generalize well. We use DoWhy to investigate this!\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Refute: Use a subset of data\\n\",\n      \"Estimated effect:2.074836810507913\\n\",\n      \"New effect:2.0718850819612706\\n\",\n      \"p value:0.3507294961332309\\n\",\n      \"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Removing a random subset of the data\\n\",\n    \"res_subset = est_dw.refute_estimate(method_name=\\\"data_subset_refuter\\\", subset_fraction=0.8,\\n\",\n    \"                                    num_simulations=2)\\n\",\n    \"print(res_subset)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The \\\"New effect\\\" is close to the estimated effect from the original dataset and the p-value is greater than 0.05. Thus, we cannot reject the null hypothesis that the estimated effect is under the average treatment effect distribution. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Understand Treatment Effects with EconML\\n\",\n    \"\\n\",\n    \"EconML includes interpretability tools to better understand treatment effects. Treatment effects can be complex, but oftentimes we are interested in simple rules that can differentiate between users who respond positively, users who remain neutral and users who respond negatively to the proposed changes.\\n\",\n    \"\\n\",\n    \"The EconML `SingleTreeCateInterpreter` provides interperetability by training a single decision tree on the treatment effects outputted by the any of the EconML estimators. In the figure below we can see in dark red users who respond negatively to the membership program and in dark green users who respond positively.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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omq96gx6vz9HDhxhzroF9Bs1kDGDRhJ4PxCAiV+P58LZ8/y4bDpz1i3g5rXrTB37IwCRkRa1mtZh/qbFLNi8GGcXZ8YMHBHtWL8vXc2nX/Xn153LCQ8L4+cfZj2TcxIREREReRQVgUVERETkufC764dXMq8YLRz+aeWi5VStXx2AavWrs2rRijgf45svRlG7cFXb9MOoiY+NTZ0+DbWb1sXe3p7Kdaty/co12vXogJOzEyXKvY6jowOXzl3EsiyW/ryYHn17kiSpF24e7rzVtR1rl60BwCuZFxVrVsbF1QU3D3dav9sO3517ox2rVpM6ZMiSEWcXFyrVrsLJwyfifE4iIiIiIv+V2kGIiIiIyHPhldQLvzt+hIeHP7YQfODPfVy9eIUqdasBULV+dSaPnMCJw8fJkTfnE4/x/ucfxrkncHKf5LbPzs7OD5Y9bDvh7OJMUGAgd2/dITgomM4N2tnWWZZFZGQkAMFBwYwdMoadm7bjf+8eAIEBgURERGBvH/WSur+3s3BxcSEoMDBOOYqIiIiIxAcVgUVERETkuchXtACOTo5sWbOJirUqPzJm5cLlWJZFx7qtYyyPSxH4WfBKnhRnF2emrZxNitQpY6yf+8NsLpw5x4SFU/BO4c2Jw8fpWK8NlmUlQLYiIiIiIjGpHYSIiIiIPBcenh506NmZ0QO+ZvPqjQQHBRMeFs72Ddv4fthYQkJCWL98LR99+QlTls2wTe8P6MXvv64iPDw8QfK2s7OjbosGjPvyG+7cvA3AjavX2blpOwCB9+/j7OyMRxIP7t31Y+q3UxIkTxERERGRx1ERWERERESem5ad3qRb3/eZ/t1P1C9ek6Zl67NwxgLKVqvAltWbcHJxpmaj2nin8LZNdZrVJSIiwlZ0jc2YgSOpUaCSbepUv2285P1On26ky5Sed5p2omahynzQpgfnT58DoFn7loSEhFC/WE3eadKJEuVLxssxRURERETii9FjaiIiIiLPl6Oj47D273fq0/rddgmdishz5XfHjyZl6gWGBIe4J3QuIiIiIq8SjQQWERERERERERERScRUBBYRERERERERERFJxFQEFhEREREREREREUnEVAQWERERERERERERScRUBBYRERERERERERFJxFQEFhEREREREREREUnEHBI6ARERERGRpxUaEsqoAV+ze+su7vndI13GdHT5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5MqJS9Tu0ehZnpaIyCtFI4FFROKJh4cH9+7di7bs3r17eHp6PjH23r17eHh4PLEADJA1a1ayZMmCnZ0dBQoU4PPPP2fBggX//QRERERERP7h2unLnN13ihINSj8xNkXGlHh6J8HO3o70eTJRvH5pjm6Netrtr96/Zd+ohKOzIymzpCZv+YKc/PNYtH0c++Mw66evpsWgtrh5ucf/CYmIvKI0ElhEJJ7kzJmT8PBwTpw4QY4cOQDYt29fjJfCAeTLl499+/ZRokSJWOPiwhiDZVn/PnERERERkcc4d+AMftfuMK791wCEBodiRUYy5f1xdPyme6zb/v0+NWWW1H8tjbb+707tPs7ysYtoMaANKTOnRkRE4o9GAouIxBN3d3caN27M559/zv3799m6dStLliyhdevWMWLbtGnDqFGjuHTpEpcvX2bkyJG0a9fOtj40NJTg4GAsyyIsLIzg4GAiIyMBWLFiBdeuXQPg6NGjDB48mAYNGjyXcxQRERGRV0uRGsXp+kMvOo7tTsex3SlaqwTZiuWi5RftY8Qe336YoIAgLMvi8rEL7Pp1GzlL5gEgWRpvMuTLzNZ5GwgPC+fmhesc3rSf7MVzA3B23yl+HTGPJp+1Im2uDM/1HEVEXgUaCSwiEo/Gjx9Phw4dSJkyJd7e3nz//ffky5ePzZs3U6tWLQICAgB4++23OX36NAUKFACgU6dOvP3227b9VK9enY0bNwKwbds2unTpwvr166lYsSJr166lXbt2BAQEkCpVKt566y0+++yz53+yIiIiIpLoObo44ejiFG3ewckBdy93zh88y9yB0/h4wQAADm86wG/fLCQ8LAJPnySUalqeglWK2rZt+HFzfvt2EaPf+BJ3L3fKv1WVLIWzAbDl5/UE3w9h7sDptvgM+TLRclC753OiIiKJnNEjxCLyOMaYLm3bth09depUt4TORSS+VK5c2W/9+vWtLctamtC5iIiISMJwcnG6+86kD708vZM8OVjkJXDl5CXm9PvpVJB/YPYnR4vIq0jtIEREREREREREREQSMRWBRURERERERERERBIxFYFFREREREREREREEjEVgUVEREREREREREQSMRWBRUReEcYYTp48mdBpiIiIiIjEq6F1+3L78q2ETkNE5IXmkNAJiIi8DGbPns2oUaM4evQonp6eFC5cmL59+1K2bFlbzNSp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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(est_dw, test_customers)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X_data.columns, fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Make Policy Decisions with EconML\\n\",\n    \"\\n\",\n    \"Interventions usually have a cost: incetivizing a user to become a member can be costly (e.g by offering a discount). Thus, we would like to know what customers to target to maximize the profit from their increased engagement. This is the **treatment policy**. \\n\",\n    \"\\n\",\n    \"The EconML library includes policy interpretability tools such as `SingleTreePolicyInterpreter` that take in a treatment cost and the treatment effects to learn simple rules about which customers to target profitably. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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O/Eakofs32I/6WPGUZG3lPmv30HVunzCYhJIGrQvff/w8PYdrIhIO2bO6dxhEWmd1NiId245ssfRJ2xh+QORUHjkm+Xc83nOxNLKmgmhjkVERETan7Co2MLdbvs6KTKlU6hDkZ3M+sUzmHXvqQuqSwo3vcqeiEgbUzkIERERERERERERkXZMSWARERERERERERGRdkxJYBEREREREREREZF2TElgERERERERERERkXZMSWARERERERERERGRdkxJYBEREREREREREZF2TElgERERERERERERkXZMSWARERERERERERGRdkxJYBEREREREREREZF2TElgERERERERERERkXZMSWARERERERERERGRdkxJYBEREREREREREZF2TElgERERERERERERkXZMSWARERERERERERGRdkxJYBEREREREREREZF2TElgERERERERERERkXZMSWARaTUHNdXBUEchsnlqgo6aoKsOdRwiIiLS/piZgYW5YE2oQ5GdkAtWA0SGOg4R2TUoCSwirVZWVTN3Xl6pkmmyU/l1VUlpZY1bGOo4REREpH0xs/2BrywsLKJsRXaow5GdUNny+bia6jQze9/Mdg91PCLSvikJLCKtVlHtXn7h+1WVy4oqQh2KSKvMW13Kh7MLAsCboY5FRERE2gczG2VmHwFPAv+uKS+5Nvfd+8qCVfqOLK1XXVbMsv89VBKsKLkAeA9418xeNbNBoY5NRNonc86FOgYR2YlERwT+GjC7+Tf9UoK906JjA2ahDklkEzVB52avKi39ckFhWHWNu6A66J4LdUwiIiKyczOzocAtwB7+v08656rMLCIsOv7NQET0/qm7Hx4ekZgehb4jS1Oco2Lt8vK1P/3PuZqaF4MVJRc454JmFgv8Gfgr8AFwo3M6m01E2o6SwCKy2cysK3AU0AnY8A03AAwH9gdWA58BK0MSoOwqugEHA3HA58AsYMN/akEgF3jXObc6NOGJiIhIe2BmfYGb8L533AE84pwra9DGgGF+m8TtHqTsbNYCHzrn5jZcYGaJwGXAxcCrwD+cc7nbOT4RaYeUBBaRrWJmAeAUvC/Gy4C/O+cmhzYq2VX4f3AdCvwDCAeuA95z+s9NREREtpKZdQOuB44H7gPud84VhzIm2XWYWQfgSuA84BngdudcXmijEpGdmZLA7YCZJQHHB6Ji97ZA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T3pEREREREREREREOjAVgUVEREREREREREQ6MBWBRURERERERERERDowFYFFREREREREREREOjAVgUVEREREREREREQ6MBWBRURERERERERERDowFYFFREREREREREREOjAVgUVEREREREREREQ6MBWBRURERERERERERDowFYFFREREREREREREOjAVgUVEREREREREREQ6MBWBRURERERERERERDowFYFFREREREREREREOjAVgUVEREREREREREQ6MBWBT24GhsfU1kFI+2d43ACeto5D5GRkgMdttHUUcjJyewxQ7hU5Robx8/xF5JB+/jei39Iix8cAw2QY+lGSwzMMNxjol/NJTEXgk1u+q6rM7q6rbus4pB0zDIPa/F0WIK+tYxE5GdU4PVm7ims02ZFmMQyDXcW1yr0ix8hwu3bWFuxWRUIOq6ZgF5gte9s6DpGTmWEYTpPVXllXlNvWoUg7V5O/0+Nx1e5s6zjk2KkIfBIzDKPMbPdZl79kju4ykkMq3bgYV1VZDbC2rWMRORnVuDzz5qzaV1NS5WzrUOQksjijlLIal3KvyDFyV1d8mPfNG5Xu6v1tHYq0U4bbRd5Xf692V1e829axiJzszBbbP/f85++uto5D2i9XVRn7Fr9T7amt+ritY5Fjp1v+T3Imk6mH2e6zLDA51Rba78xAs923rUOSdsLjclKxfXlVyfpFhsdZc6FhGEvbOiaRk5HJZDL52swv+NrMk68cFGWPD3VYzSatxCNNc7o9LN9VUbVoW4lR4/Io94ocI5PJZDY7/N+0+PhfFnXKlT728M4Wk0n3rwhgGDgrijwFyz6pcpblr3fX7D/XMAw9GilyHEwmU7TZ4bfcL7ZneNiQCwOtPgGg+a4AhuGhtiDbVZD2ca27tmqOp7bqd4YKiSctFYE7AJPJFAyMMzv8RpnMVv+2jkfaB8PjrvHUVq0F4xPDMPSYnMhxMJlMJmCIzWwa62MzdzWZ9CSNNM3tMWqq6jxrDVDuFTlOP+feESaL7RKz3ScWVAUWAMPwuOoKDGftF8BiwzB096JICzCZTL7AhWa779kmizVQVWCpZ3g8dTW7Dbfzn8CPKgCf3FQEFhEREREREREREenA9Gm6iIiIiIiIiIiISAemIrCIiIiIiIiIiIhIB6YisIiIiIiIiIiIiEgH9v8rojbrxxeU7AAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(est_dw, test_customers, sample_treatment_costs=0.2)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X_data.columns, fontsize=12)\"\n   ]\n  },\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Conclusions\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML and DoWhy to:\\n\",\n    \"\\n\",\n    \"* Get valid causal insights in seemingly impossible scenarios\\n\",\n    \"* Test causal assumptions and investigate the robustness of the resulting estimates\\n\",\n    \"* Intepret individual-level treatment effects\\n\",\n    \"* Build policies around the learned effects\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit the [website](https://aka.ms/econml), [GitHub page](https://github.com/py-why/EconML) or [docummentation](https://www.pywhy.org/EconML/).\\n\",\n    \"\\n\",\n    \"To learn more about what DoWhy can do for you, visit the [GitHub page](https://github.com/py-why/dowhy) or [documentation](https://www.pywhy.org/dowhy/).\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Recommendation AB Testing at An Online Travel Company.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"<img src=\\\"https://www.microsoft.com/en-us/research/uploads/prod/2020/05/Recomendation.png\\\" width=\\\"400\\\">\\n\",\n    \"\\n\",\n    \"# Recommendation A/B Testing: Experimentation with Imperfect Compliance\\n\",\n    \"\\n\",\n    \"An online business would like to test a new feature or offering of their website and learn its effect on downstream revenue. Furthermore, they would like to know which kind of users respond best to the new version. We call the user-specfic effect a **heterogeneous treatment effect**. \\n\",\n    \"\\n\",\n    \"Ideally, the business would run an A/B tests between the old and new versions of the website. However, a direct A/B test might not work because the business cannot force the customers to take the new offering. Measuring the effect in this way will be misleading since not every customer exposed to the new offering will take it.\\n\",\n    \"\\n\",\n    \"The business also cannot look directly at existing data as it will be biased: the users who use the latest website features are most likely the ones who are very engaged on the website and hence spend more on the company's products to begin with. Estimating the effect this way would be overly optimistic.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"In this customer scenario walkthough, we show how tools from the [EconML](https://aka.ms/econml) library can still use a direct A/B test and mitigate these shortcomings.\\n\",\n    \"\\n\",\n    \"### Summary\\n\",\n    \"\\n\",\n    \"1. [Background](#Background)\\n\",\n    \"2. [Data](#Data)\\n\",\n    \"3. [Get Causal Effects with EconML](#Get-Causal-Effects-with-EconML)\\n\",\n    \"4. [Understand Treatment Effects with EconML](#Understand-Treatment-Effects-with-EconML)\\n\",\n    \"5. [Make Policy Decisions with EconML](#Make-Policy-Decisions-with-EconML)\\n\",\n    \"6. [Conclusions](#Conclusions)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Background\\n\",\n    \"\\n\",\n    \"<img src=\\\"https://cdn.pixabay.com/photo/2013/07/13/12/18/boeing-159589_640.png\\\" width=\\\"450\\\">\\n\",\n    \"\\n\",\n    \"In this scenario, a travel website would like to know whether joining a membership program compels users to spend more time engaging with the website and purchasing more products. \\n\",\n    \"\\n\",\n    \"A direct A/B test is infeasible because the website cannot force users to become members. Likewise, the travel company can’t look directly at existing data, comparing members and non-members, because the customers who chose to become members are likely already more engaged than other users. \\n\",\n    \"\\n\",\n    \"**Solution:** The company had run an earlier experiment to test the value of a new, faster sign-up process. EconML's IV estimators can exploit this experimental nudge towards membership as an instrument that generates random variation in the likelihood of membership. This is known as an **intent-to-treat** setting: the intention is to give a random group of users the \\\"treatment\\\" (membership sign-up), but not all users will actually take it. \\n\",\n    \"\\n\",\n    \"EconML's `IntentToTreatDRIV` estimator model takes advantage of the fact that not every customer who was offered the easier sign-up became a member to learn the effect of membership rather than the effect of receiving the quick sign-up.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\r\\n\",\n    \"# Utilities\\r\\n\",\n    \"import numpy as np\\r\\n\",\n    \"import pandas as pd\\r\\n\",\n    \"\\r\\n\",\n    \"# Generic ML imports\\r\\n\",\n    \"import lightgbm as lgb\\r\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\r\\n\",\n    \"\\r\\n\",\n    \"# EconML imports\\r\\n\",\n    \"from econml.iv.dr import LinearIntentToTreatDRIV\\r\\n\",\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter, \\\\\\r\\n\",\n    \"                                    SingleTreePolicyInterpreter\\r\\n\",\n    \"\\r\\n\",\n    \"import matplotlib.pyplot as plt\\r\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Data\\n\",\n    \"\\n\",\n    \"The data* is comprised of:\\n\",\n    \" * Features collected in the 28 days prior to the experiment (denoted by the suffix `_pre`)\\n\",\n    \" * Experiment variables (whether the use was exposed to the easier signup -> the instrument, and whether the user became a member -> the treatment)\\n\",\n    \" * Variables collected in the 28 days after the experiment (denoted by the suffix `_post`).\\n\",\n    \"\\n\",\n    \"Feature Name | Type | Details \\n\",\n    \":--- |:--- |:--- \\n\",\n    \"**days_visited_exp_pre** | X | #days a user visits the attractions pages \\n\",\n    \"**days_visited_free_pre** | X | #days a user visits the website through free channels (e.g. domain direct) \\n\",\n    \"**days_visited_fs_pre** | X | #days a user visits the flights pages \\n\",\n    \"**days_visited_hs_pre** | X | #days a user visits the hotels pages \\n\",\n    \"**days_visited_rs_pre** | X | #days a user visits the restaurants pages \\n\",\n    \"**days_visited_vrs_pre** | X |#days a user visits the vacation rental pages \\n\",\n    \"**locale_en_US** | X | whether the user access the website from the US \\n\",\n    \"**os_type** | X | user's operating system (windows, osx, other) \\n\",\n    \"**revenue_pre** | X | how much the user spent on the website in the pre-period \\n\",\n    \"**easier_signup** | Z | whether the user was exposed to the easier signup process \\n\",\n    \"**became_member** | T | whether the user became a member \\n\",\n    \"**days_visited_post** | Y | #days a user visits the website in the 28 days after the experiment \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"**To protect the privacy of the travel company's users, the data used in this scenario is synthetically generated and the feature distributions don't correspond to real distributions. However, the feature names have preserved their names and meaning.*\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the sample AB data\\n\",\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/RecommendationAB/ab_sample.csv\\\"\\n\",\n    \"ab_data = pd.read_csv(file_url)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>days_visited_exp_pre</th>\\n\",\n       \"      <th>days_visited_free_pre</th>\\n\",\n       \"      <th>days_visited_fs_pre</th>\\n\",\n       \"      <th>days_visited_hs_pre</th>\\n\",\n       \"      <th>days_visited_rs_pre</th>\\n\",\n       \"      <th>days_visited_vrs_pre</th>\\n\",\n       \"      <th>locale_en_US</th>\\n\",\n       \"      <th>revenue_pre</th>\\n\",\n       \"      <th>os_type_osx</th>\\n\",\n       \"      <th>os_type_windows</th>\\n\",\n       \"      <th>easier_signup</th>\\n\",\n       \"      <th>became_member</th>\\n\",\n       \"      <th>days_visited_post</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>25</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.01</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>25</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>2.26</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>15</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>18</td>\\n\",\n       \"      <td>14</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.03</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>17</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>17</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>23</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>418.77</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>24</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>22</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>18</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1.54</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>12</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   days_visited_exp_pre  days_visited_free_pre  days_visited_fs_pre  \\\\\\n\",\n       \"0                     1                      9                    7   \\n\",\n       \"1                    10                     25                   27   \\n\",\n       \"2                    18                     14                    8   \\n\",\n       \"3                    17                      0                   23   \\n\",\n       \"4                    24                      9                   22   \\n\",\n       \"\\n\",\n       \"   days_visited_hs_pre  days_visited_rs_pre  days_visited_vrs_pre  \\\\\\n\",\n       \"0                   25                    6                     3   \\n\",\n       \"1                   10                   27                    27   \\n\",\n       \"2                    4                    5                     2   \\n\",\n       \"3                    2                    3                     1   \\n\",\n       \"4                    2                    3                    18   \\n\",\n       \"\\n\",\n       \"   locale_en_US  revenue_pre  os_type_osx  os_type_windows  easier_signup  \\\\\\n\",\n       \"0             1         0.01            0                1              0   \\n\",\n       \"1             0         2.26            0                0              0   \\n\",\n       \"2             1         0.03            0                1              0   \\n\",\n       \"3             1       418.77            0                1              0   \\n\",\n       \"4             1         1.54            0                0              0   \\n\",\n       \"\\n\",\n       \"   became_member  days_visited_post  \\n\",\n       \"0              0                  1  \\n\",\n       \"1              0                 15  \\n\",\n       \"2              0                 17  \\n\",\n       \"3              0                  6  \\n\",\n       \"4              0                 12  \"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Data sample\\n\",\n    \"ab_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Define estimator inputs\\n\",\n    \"Z = ab_data['easier_signup'] # nudge, or instrument\\n\",\n    \"T = ab_data['became_member'] # intervention, or treatment\\n\",\n    \"Y = ab_data['days_visited_post'] # outcome of interest\\n\",\n    \"X_data = ab_data.drop(columns=['easier_signup', 'became_member', 'days_visited_post']) # features\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"The data was generated using the following undelying treatment effect function:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\text{treatment_effect} = 0.2 + 0.3 \\\\cdot \\\\text{days_visited_free_pre} - 0.2 \\\\cdot \\\\text{days_visited_hs_pre} + \\\\text{os_type_osx}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"The interpretation of this is that users who visited the website before the experiment and/or who use an iPhone tend to benefit from the membership program, whereas users who visited the hotels pages tend to be harmed by membership. **This is the relationship we seek to learn from the data.**\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Define underlying treatment effect function\\n\",\n    \"def TE_fn(X):\\r\\n\",\n    \"    return (0.2 + 0.3 * X[\\\"days_visited_free_pre\\\"] - 0.2 * X[\\\"days_visited_hs_pre\\\"] + X[\\\"os_type_osx\\\"]).values\\n\",\n    \"true_TE = TE_fn(X_data)\\n\",\n    \"\\n\",\n    \"# Define the true coefficients to compare with\\n\",\n    \"true_coefs = np.zeros(X_data.shape[1])\\n\",\n    \"true_coefs[[1, 3, -2]] = [0.3, -0.2, 1]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Get Causal Effects with EconML\\n\",\n    \"\\n\",\n    \"To learn a linear projection of the treatment effect, we use the `LinearIntentToTreatDRIV` EconML estimator. For a more flexible treatment effect function, use the `IntentToTreatDRIV` estimator instead. \\n\",\n    \"\\n\",\n    \"The model requires to define some nuissance models (i.e. models we don't really care about but that matter for the analysis): the model for how the outcome $Y$ depends on the features $X$ (`model_Y_X`) and the model for how the treatment $T$ depends on the instrument $Z$ and features $X$ (`model_T_XZ`). Since we don't have any priors on these models, we use generic boosted tree estimators to learn them. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Define nuissance estimators\\r\\n\",\n    \"lgb_T_XZ_params = {\\r\\n\",\n    \"    'objective' : 'binary',\\r\\n\",\n    \"    'metric' : 'auc',\\r\\n\",\n    \"    'learning_rate': 0.1,\\r\\n\",\n    \"    'num_leaves' : 30,\\r\\n\",\n    \"    'max_depth' : 5\\r\\n\",\n    \"}\\r\\n\",\n    \"\\r\\n\",\n    \"lgb_Y_X_params = {\\r\\n\",\n    \"    'metric' : 'rmse',\\r\\n\",\n    \"    'learning_rate': 0.1,\\r\\n\",\n    \"    'num_leaves' : 30,\\r\\n\",\n    \"    'max_depth' : 5\\r\\n\",\n    \"}\\r\\n\",\n    \"model_T_XZ = lgb.LGBMClassifier(**lgb_T_XZ_params)\\r\\n\",\n    \"model_Y_X = lgb.LGBMRegressor(**lgb_Y_X_params)\\r\\n\",\n    \"flexible_model_effect = lgb.LGBMRegressor(**lgb_Y_X_params)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.iv.dr._dr.LinearIntentToTreatDRIV at 0x260fd1a6fc8>\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Train EconML model\\r\\n\",\n    \"model = LinearIntentToTreatDRIV(\\r\\n\",\n    \"    model_y_xw = model_Y_X,\\r\\n\",\n    \"    model_t_xwz = model_T_XZ,\\r\\n\",\n    \"    flexible_model_effect = flexible_model_effect,\\r\\n\",\n    \"    featurizer = PolynomialFeatures(degree=1, include_bias=False)\\r\\n\",\n    \")\\r\\n\",\n    \"model.fit(Y, T, Z=Z, X=X_data, inference=\\\"statsmodels\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Compare learned coefficients with true model coefficients\\r\\n\",\n    \"coef_indices = np.arange(model.coef_.shape[0])\\r\\n\",\n    \"# Calculate error bars\\r\\n\",\n    \"coef_error = np.asarray(model.coef__interval()) # 95% confidence interval for coefficients\\r\\n\",\n    \"coef_error[0, :] = model.coef_ - coef_error[0, :]\\r\\n\",\n    \"coef_error[1, :] = coef_error[1, :] - model.coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXwAAAFaCAYAAAAdEubhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABF4klEQVR4nO3deXxU5fX48c8hoICIoKAVUMEWUZaEJWxSFETAFaiKVNCidcGqYH9WVKpVqvarFlsEtVXQigsKiIi4tKAoiohCEEUQAQWqLFUWQfb1/P547gyTMJMQcufey8x5v155JffOZJ6Tm8nJ89xnE1XFGGNM5isXdgDGGGOCYQnfGGOyhCV8Y4zJEpbwjTEmS1jCN8aYLFE+7ABSqVGjhtatWzfsMIwx5pAyZ86ctapaM9ljkU34devWpaCgIOwwjDHmkCIi/031mN3SMcaYLGEJ3xhjsoQlfGOMyRKRvYefzK5du1ixYgXbt28POxRjyqRixYrUqVOHChUqhB2KySK+JHwR+RdwAfCDqjZO8ngf4HZAgE3A71T189KWs2LFCo488kjq1q2LiJQ1bGNCoaqsW7eOFStWUK9evbDDMVnEr1s6o4Bzinl8GXCmqjYB7gNGHEwh27dv55hjjrFkbw5pIsIxxxxjLVUTOF9q+Kr6gYjULebxjxIOPwbqHGxZluxNJrD3sQlDGJ22VwP/TvaAiFwnIgUiUrBmzZqAwzLGmMwWaMIXkY64hH97ssdVdYSq5qtqfs2aSSeKhWrdunU0bdqUpk2b8rOf/YzatWvHj3fu3Bl2eIUMHDiQRo0aMXDgQNasWUPr1q1p1qwZ06dP57zzzmPDhg0pv/eJJ57gueeeO6hyly9fzosvvniQURsTnl5PzqTXkzPDDiOtAhulIyK5wFPAuaq6Lqhy/XTMMcfw2WefATB48GCqVKnCrbfeGn989+7dlC8fjYFPI0aMYP369eTk5DBmzBiaNGnCU089BUD79u2L/d7rr7/+oMuNJfzevXsf9GsYY9IjkBq+iJwITACuUNXFQZQJwLxxMLQxDK7mPs8b53sRV155Jddffz2tW7fmtttuY/DgwTz88MPxxxs3bszy5csBeOGFF2jVqhVNmzalX79+7NmzZ7/Xmz17Nqeffjp5eXm0atWKTZs2sX37dq666iqaNGlCs2bNeO+99wDYs2cPAwcOpGXLluTm5vLkk08C0K1bNzZv3kyLFi146KGHuO2223jttddo2rQp27Zto27duqxduxaA5557jtzcXPLy8rjiiisACv0M33zzDeeccw4tWrSgffv2fPXVV/Gfe8CAAZx++umcfPLJjB8/HoA77riD6dOn07RpU4YOHcqCBQviP3Nubi5Llizx/XdgjDkwfg3LfAnoANQQkRXAPUAFAFV9ArgbOAb4h9dZtVtV8/0oO6V54+D1AbBrmzve+J07Bsi91NeiVqxYwUcffUROTg6DBw9O+pyFCxcyduxYZsyYQYUKFbjhhhsYPXo0v/nNb+LP2blzJ7169WLs2LG0bNmSn376iUqVKjFs2DBEhC+++IKvvvqKLl26sHjxYp577jmOOuooZs+ezY4dO2jXrh1dunRh0qRJVKlSJd4aOe644ygoKOCxxx4rFNOCBQu4//77+eijj6hRowbr16/fL+7rrruOJ554gvr16/PJJ59www038O677wKwevVqPvzwQ7766iu6devGJZdcwoMPPsjDDz/MG2+8AUD//v25+eab6dOnDzt37kz6T84YEwy/RulcVsLj1wDX+FHWAZt6775kH7Nrmzvvc8Lv2bMnOTk5xYczdSpz5syhZcuWAGzbto1jjz220HMWLVrE8ccfH39O1apVAfjwww/p378/AKeeeionnXQSixcvZsqUKcybNy9eu964cSNLliw54LHd7777Lj179qRGjRoAHH300YUe37x5Mx999BE9e/aMn9uxY0f86x49elCuXDkaNmzI999/n7SMtm3b8pe//IUVK1Zw0UUXUb9+/QOKzRjjv2jccE6HjStKd74MjjjiiPjX5cuXZ+/evfHj2FhrVaVv37488MADvpWrqjz66KN07drVt9dMtHfvXqpVqxZvKRR1+OGHF4olmd69e9O6dWvefPNNzjvvPJ588knOOuusdIRrjClB5q6lc1SKof6pzvukbt26fPrppwB8+umnLFu2DIBOnToxfvx4fvjhBwDWr1/Pf/9beBXTBg0asHr1ambPng3Apk2b2L17N+3bt2f06NEALF68mG+//ZYGDRrQtWtX/vnPf7Jr1674Y1u2bDngWM866yxefvll1q1bF48pUdWqValXrx4vv/wy4JL6558XP0H6yCOPZNOmTfHjpUuXcvLJJzNgwAC6d+/OvHnzDjg+Y4y/Mjfhd7ob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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.errorbar(coef_indices, model.coef_, coef_error, fmt=\\\"o\\\", label=\\\"Learned coefficients\\\\nand 95% confidence interval\\\")\\r\\n\",\n    \"plt.scatter(coef_indices, true_coefs, color='C1', label=\\\"True coefficients\\\")\\r\\n\",\n    \"plt.xticks(coef_indices, X_data.columns, rotation='vertical')\\r\\n\",\n    \"plt.legend()\\r\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"We notice that the coefficients estimates are pretty close to the true coefficients for the linear treatment effect function. \\n\",\n    \"\\n\",\n    \"We can also use the `model.summary` function to get point estimates, p-values and confidence intervals. From the table below, we notice that only the **days_visited_free_pre**, **days_visited_hs_pre** and **os_type_osx** features are statistically significant (the confidence interval doesn't contain $0$, p-value < 0.05) for the treatment effect. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"            <td></td>            <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_exp_pre</th>        <td>0.0</td>       <td>0.007</td>  <td>0.055</td>   <td>0.956</td>  <td>-0.011</td>    <td>0.012</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_free_pre</th>      <td>0.284</td>      <td>0.007</td> <td>38.206</td>    <td>0.0</td>    <td>0.272</td>    <td>0.296</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_fs_pre</th>       <td>-0.011</td>      <td>0.007</td> <td>-1.582</td>   <td>0.114</td>  <td>-0.022</td>     <td>0.0</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_hs_pre</th>        <td>-0.19</td>      <td>0.007</td> <td>-27.999</td>   <td>0.0</td>   <td>-0.201</td>   <td>-0.178</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_rs_pre</th>        <td>0.001</td>      <td>0.007</td>  <td>0.092</td>   <td>0.927</td>   <td>-0.01</td>    <td>0.012</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>days_visited_vrs_pre</th>        <td>0.0</td>       <td>0.007</td>  <td>0.028</td>   <td>0.978</td>  <td>-0.011</td>    <td>0.011</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>locale_en_US</th>              <td>-0.013</td>      <td>0.113</td> <td>-0.111</td>   <td>0.911</td>  <td>-0.199</td>    <td>0.174</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>revenue_pre</th>                <td>-0.0</td>        <td>0.0</td>  <td>-1.231</td>   <td>0.218</td>   <td>-0.0</td>      <td>0.0</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>os_type_osx</th>                <td>0.961</td>      <td>0.139</td>  <td>6.922</td>    <td>0.0</td>    <td>0.732</td>    <td>1.189</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>os_type_windows</th>            <td>0.041</td>      <td>0.138</td>  <td>0.298</td>   <td>0.766</td>  <td>-0.186</td>    <td>0.269</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.537</td>      <td>0.27</td>  <td>1.989</td>  <td>0.047</td>   <td>0.093</td>    <td>0.981</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            Coefficient Results                             \\n\",\n       \"============================================================================\\n\",\n       \"                      point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"----------------------------------------------------------------------------\\n\",\n       \"days_visited_exp_pre             0.0  0.007   0.055  0.956   -0.011    0.012\\n\",\n       \"days_visited_free_pre          0.284  0.007  38.206    0.0    0.272    0.296\\n\",\n       \"days_visited_fs_pre           -0.011  0.007  -1.582  0.114   -0.022      0.0\\n\",\n       \"days_visited_hs_pre            -0.19  0.007 -27.999    0.0   -0.201   -0.178\\n\",\n       \"days_visited_rs_pre            0.001  0.007   0.092  0.927    -0.01    0.012\\n\",\n       \"days_visited_vrs_pre             0.0  0.007   0.028  0.978   -0.011    0.011\\n\",\n       \"locale_en_US                  -0.013  0.113  -0.111  0.911   -0.199    0.174\\n\",\n       \"revenue_pre                     -0.0    0.0  -1.231  0.218     -0.0      0.0\\n\",\n       \"os_type_osx                    0.961  0.139   6.922    0.0    0.732    1.189\\n\",\n       \"os_type_windows                0.041  0.138   0.298  0.766   -0.186    0.269\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.537   0.27 1.989  0.047    0.093    0.981\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"test_customers = X_data.iloc[:1000]\\r\\n\",\n    \"true_customer_TE = TE_fn(test_customers)\\r\\n\",\n    \"model_customer_TE = model.effect(test_customers)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"skip\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsOElEQVR4nO3de3xU1bn/8c9DjBoQBSp6Koigh4Lc74L8sCoCtipWKiqFVmu9nmptsdSiWPBnWzzFqq3HFm+t/iq1COJ4OV5QK9WqUIFwKYh3RAYsFEUFUUJ4fn/MThxCMtnJ7Lllvu/XKy9ndmbWfhLDemavtfazzN0REZHi0yzXAYiISG4oAYiIFCklABGRIqUEICJSpJQARESK1D65DqAhDj74YO/YsWOuwxARKShLliz5t7u3rXm8oBJAx44dWbx4ca7DEBEpKGb2bm3HNQQkIlKklABERIqUEoCISJEqqDmA2lRUVLB+/Xo+++yzXIciUhD2339/2rdvT2lpaa5DkRwr+ASwfv16WrZsSceOHTGzXIcjktfcnS1btrB+/Xo6deqU63Akxwo+AXz22Wfq/EVCMjO+9KUvsXnz5lyHIiHFyuPMeOo1NmzdwWGtypg0qgvf6NsukrYLPgEA6vxFGkD/XgpHrDzO5Hkr2VFRCUB86w4mz1sJEEkS0CSwiEiemvHUa9Wdf5UdFZXMeOq1SNpXAohASUkJffr0oUePHowdO5ZPP/200W2dd955zJ07F4ALLriA1atX1/naBQsW8NJLLzX4HB07duTf//53o2NM9v3vf58+ffrQrVs3ysrK6NOnD3369Kn+GaLQ2J8zW+1FfZ5x48bRq1cvbr75ZtasWUOfPn3o27cvb731VlbOL/ljw9YdDTreUE1iCCjXysrKWLZsGQDjx49n5syZTJw4sfr7u3btYp99Gv6rvuuuu1J+f8GCBRxwwAEce+yxDW47KrfddhsAa9eu5dRTT63+PVRp7M+eLNXP2Zj2s/V7a8x53n//fV555RXefPNNAG644QbOPPNMpkyZkpXzS345rFUZ8Vo6+8NalUXSftFdAcTK4wy94a90+un/MvSGvxIrj0fa/rBhw3jzzTdZsGABw4YNY/To0XTr1o3KykomTZrEwIED6dWrF7fffjuQWJVx2WWX0aVLF0466SQ2bdpU3dbxxx9fXfriySefpF+/fvTu3Zvhw4ezdu1aZs6cyc0330yfPn144YUX2Lx5M9/85jcZOHAgAwcO5MUXXwRgy5YtjBw5ku7du3PBBRdQ2y5wM2fOZNKkSdXP77nnHi677DK2b9/OKaecQu/evenRowezZ8+u93dQ82dfu3YtPXr0qP7+jTfeyLRp0wB46623OPnkk+nfvz/Dhg1jzZo1e7RV28953nnncckll3DMMcfwk5/8pM42Hn30UY455hj69u3LSSedxL/+9a8627v00ksZPHgwRx55JAsWLOD888/n6KOP5rzzzquOZf78+QwZMoR+/foxduxYtm3bBiSuqKZOnUq/fv3o2bMna9asqfU8ybZv387555/PoEGD6Nu3Lw8//DAAI0eOJB6P06dPH6677jpuueUWfv/733PCCScAcN999zFo0CD69OnDxRdfTGVlZei/Dyk8k0Z1oay0ZI9jZaUlTBrVJZoTuHvBfPXv399rWr169V7H6vLQ0vXedcoTfsRVj1V/dZ3yhD+0dH3oNmrTokULd3evqKjw0aNH++9+9zt/7rnnvHnz5v7222+7u/vtt9/u119/vbu7f/bZZ96/f39/++23/cEHH/STTjrJd+3a5fF43A866CCfM2eOu7t/9atf9VdeecU3bdrk7du3r25ry5Yt7u4+depUnzFjRnUc48aN8xdeeMHd3d99913v2rWru7tffvnlft1117m7+2OPPeaAb968eY+fYdOmTX7UUUdVPz/55JP9hRde8Llz5/oFF1xQfXzr1q21/g7eeecd7969u7v7Xj978vfc3WfMmOFTp051d/cTTzzRX3/9dXd3X7hwoZ9wwgl7tV3z5zz33HP9lFNO8V27dqVs44MPPvDdu3e7u/udd97pEydOrLO9s88+23fv3u2xWMxbtmzpK1as8MrKSu/Xr5+Xl5f75s2bfdiwYb5t2zZ3d7/hhhuqf6dHHHGE//a3v3V399tuu82/973v1XqeZJMnT/Y//elP7u7+4YcfeufOnX3btm17/a6S21i9erWfeuqpvnPnTnd3v/TSS/3ee+8N/feRrCH/biR91zy0wo/86f/u0fccO/3ZUH3PQ0vX+7HTn/WODXhPTcBir6VPLaohoFQTKunMqO/YsYM+ffoAiSuA733ve7z00ksMGjSoeq31/PnzWbFiRfXY+EcffcQbb7zB888/z7hx4ygpKeGwww7j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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# How close are the predicted treatment effect to the true treatment effects for 1000 users?\\n\",\n    \"plt.scatter(true_customer_TE, model.effect(test_customers), label=\\\"Predicted vs True treatment effect\\\")\\n\",\n    \"plt.xlabel(\\\"True treatment effect\\\")\\n\",\n    \"plt.ylabel(\\\"Predicted treatment effect\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Understand Treatment Effects with EconML\\n\",\n    \"\\n\",\n    \"EconML includes interpretability tools to better understand treatment effects. Treatment effects can be complex, but oftentimes we are interested in simple rules that can differentiate between users who respond positively, users who remain neutral and users who respond negatively to the proposed changes.\\n\",\n    \"\\n\",\n    \"The EconML `SingleTreeCateInterpreter` provides interperetability by training a single decision tree on the treatment effects outputted by the any of the EconML estimators. In the figure below we can see in dark red users who respond negatively to the membership program and in dark green users who respond positively.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(model, test_customers)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X_data.columns, fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Make Policy Decisions with EconML\\n\",\n    \"\\n\",\n    \"Interventions usually have a cost: incetivizing a user to become a member can be costly (e.g by offering a discount). Thus, we would like to know what customers to target to maximize the profit from their increased engagement. This is the **treatment policy**. \\n\",\n    \"\\n\",\n    \"The EconML library includes policy interpretability tools such as `SingleTreePolicyInterpreter` that take in a treatment cost and the treatment effects to learn simple rules about which customers to target profitably. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"fragment\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=10)\\n\",\n    \"intrp.interpret(model, test_customers, sample_treatment_costs=0.2)\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=X_data.columns, fontsize=12)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },\n   \"source\": [\n    \"# Conclusions\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML to:\\n\",\n    \"\\n\",\n    \"* Get valid causal insights in seemingly impossible scenarios\\n\",\n    \"* Intepret the resulting individual-level treatment effects\\n\",\n    \"* Build policies around the learned effects\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/CustomerScenarios/Case Study - Using EconML to evaluate the treatment effect of training program - Lalonde dataset.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\\n\",\n    \"\\n\",\n    \"This notebook applies EconML's `LinearDML` and `LinearDRLearner` methodologies to the data from National Supported Work (NSW) Demonstration that have been previously analyzed by LaLonde(1986) and others. We first replicate the results from LaLonde's paper comparing estimates of the Average Treatment Effect (ATE) of a worker training program estimated using an experimental data sample and using alternative observational data sets as controls. Then we generate new estimated ATEs using **Double Machine Learning** and **Doubly Robust** estimation on these same datasets. These new causal machine learning techniques have a moderately better performance than the traditional nonexperimental evalutaion strategies from the original paper in some samples. We further improve the point estimate by estimating heterogeneous treatment effects and using reweighting techniques to make the observational control sets more closely resemble the experimental control set. Finally, we prove that our package provides reasonable effect heterogeneity estimates from observational data that are comparable with what we can learn from the experiment. \\n\",\n    \"\\n\",\n    \"These results reinforce the value of Causal ML techniques like DML and DR Learners when attempting to estimate causal effects from non-experimental data. The reweighting techniques demonstrated here are also generally useful when trying to use treatment effects estimated from one, potentially non-representative, experimental sample to forecast average treatment effects in a new population.\\n\",\n    \"\\n\",\n    \"### Summary \\n\",\n    \"\\n\",\n    \"1. [Background](#background)\\n\",\n    \"2. [Data](#data)\\n\",\n    \"3. [Compare EconML Solution with LaLonde OLS Results](#comparison)\\n\",\n    \"4. [Further Improve EconML Result with Reweighting Trick](#improvement)\\n\",\n    \"7. [Heterogeneous Treatment Effect with EconML](#hte)\\n\",\n    \"8. [Conclusions](#conclusion)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Background <a id=\\\"background\\\"></a>\\n\",\n    \"<img src=\\\"https://image.freepik.com/free-vector/factory-workers-robotic-arm-removing-packages-from-conveyor-line-engineer-using-computer-operating-process-vector-illustration-business-production-machine-technology-concepts_74855-9859.jpg\\\" width=\\\"400\\\" />\\n\",\n    \"\\n\",\n    \"The National Supported Work Demonstration (NSW) was a temporary employment program designed to help a population of disadvantaged workers in the U.S. move into long-term jobs by offering job training. The training program was targeted at populations of male and female workers who met certain conditions of disadvantage (for example, were receiving federal welfare payments or had previously been incarcerated). Participation in the program was also voluntary. Participation in this program is therefore not random, and likely to correlate with other confounding worker characteristics in difficult-to-identify ways.\\n\",\n    \"\\n\",\n    \"However, once workers opted into the program, the NSW randomly assigned them to actually receive the training or remain as a control sample to facilitate later program evaluation. This set-up creates a good environment for testing estimation techniques that are designed to capture causal effects from non-experimental data. Following LaLonde, we first estimate the effect of the training by comparing the treated and control workers within the NSW program. Because these workers were randomly assigned across groups, we're not worried about any confounders, so these estimates serve as a benchmark for the true causal effect. We then re-estimate the effects of training by comparing the trained workers in the NSW sample to workers in other U.S. datasets, the Panel Study of Income Dynamics (PSID) and the Current Population Survey (CPS). These alternative control samples should differ from the workers who were targeted for the NSW program in complex ways that mirror the usual difficulties of estimating causal effects from observational data.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# imports\\n\",\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"import statsmodels.api as sm\\n\",\n    \"\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from econml.dr import LinearDRLearner\\n\",\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter\\n\",\n    \"from econml.dml import CausalForestDML\\n\",\n    \"\\n\",\n    \"from sklearn.linear_model import LogisticRegressionCV, LogisticRegression,Lasso,LassoCV\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\\n\",\n    \"import lightgbm as lgb\\n\",\n    \"from sklearn.preprocessing import StandardScaler\\n\",\n    \"from tqdm import tqdm\\n\",\n    \"from econml.sklearn_extensions.model_selection import GridSearchCVList\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from matplotlib.transforms import ScaledTranslation\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# helper functions\\n\",\n    \"# preprocess data\\n\",\n    \"def preprocessing(df,outcome_name,column_names):\\n\",\n    \"    # add indicator of zero earnings\\n\",\n    \"    df[\\\"re74_dummy\\\"]=(df[\\\"re74\\\"]>0)*1\\n\",\n    \"    df[\\\"re75_dummy\\\"]=(df[\\\"re75\\\"]>0)*1\\n\",\n    \"    # get growth of pre training earning\\n\",\n    \"    df[\\\"re_diff_pre\\\"]=df[\\\"re75\\\"]-df[\\\"re74\\\"]\\n\",\n    \"    # add age square\\n\",\n    \"    df[\\\"age_2\\\"]=df[\\\"age\\\"]**2\\n\",\n    \"    # select columns\\n\",\n    \"    df=df[column_names+[outcome_name]]\\n\",\n    \"    return df\\n\",\n    \"\\n\",\n    \"# linear regression wrapper\\n\",\n    \"def ols_reg_wrapper(reg_data, x_columns, y_column, print_summary=False):\\n\",\n    \"    X = reg_data[x_columns].values\\n\",\n    \"    X = pd.DataFrame(sm.add_constant(X,has_constant='add'),columns=[\\\"intercept\\\"]+x_columns)\\n\",\n    \"    Y = reg_data[y_column]\\n\",\n    \"    model = sm.OLS(Y, X, hasconst=True)\\n\",\n    \"    results = model.fit()\\n\",\n    \"    # save results for summary table\\n\",\n    \"    effect = int(round(results.params['treated']))\\n\",\n    \"    se = int(round(results.bse['treated']))\\n\",\n    \"    lb=int(round(results.conf_int().loc[\\\"treated\\\"][0]))\\n\",\n    \"    ub=int(round(results.conf_int().loc[\\\"treated\\\"][1]))\\n\",\n    \"    if print_summary:\\n\",\n    \"        print(results.summary())\\n\",\n    \"    return effect, se, lb, ub\\n\",\n    \"\\n\",\n    \"# nuisance regression model auto tunning wrapper\\n\",\n    \"def first_stage_reg(X, y, *, automl=True):\\n\",\n    \"    if automl:\\n\",\n    \"        model = GridSearchCVList([LassoCV(),\\n\",\n    \"                                  RandomForestRegressor(n_estimators=100),\\n\",\n    \"                                  lgb.LGBMRegressor()],\\n\",\n    \"                                 param_grid_list=[{},\\n\",\n    \"                                                  {'max_depth': [5,10,20],'min_samples_leaf': [5, 10]},\\n\",\n    \"                                                  {'learning_rate': [0.02,0.05,0.08], 'max_depth': [3, 5]}],\\n\",\n    \"                                 cv=3,\\n\",\n    \"                                 scoring='neg_mean_squared_error')\\n\",\n    \"        best_est = model.fit(X, y).best_estimator_\\n\",\n    \"        if isinstance(best_est, LassoCV):\\n\",\n    \"            return Lasso(alpha=best_est.alpha_)\\n\",\n    \"        return best_est\\n\",\n    \"    else:\\n\",\n    \"        model = LassoCV(cv=5).fit(X, y)\\n\",\n    \"        return Lasso(alpha=model.alpha_)\\n\",\n    \"\\n\",\n    \"# nuisance classification model auto tunning wrapper\\n\",\n    \"def first_stage_clf(X, y, *, automl=True):\\n\",\n    \"    if automl:\\n\",\n    \"        model = GridSearchCVList([LogisticRegressionCV(max_iter=1000),\\n\",\n    \"                                  RandomForestClassifier(n_estimators=100),\\n\",\n    \"                                  lgb.LGBMClassifier()],\\n\",\n    \"                                 param_grid_list=[{},\\n\",\n    \"                                                  {'max_depth': [5,10,20],\\n\",\n    \"                                                   'min_samples_leaf': [5, 10]},\\n\",\n    \"                                                  {'learning_rate':[0.01,0.05,0.1],\\n\",\n    \"                                                   'max_depth': [3,5]}],\\n\",\n    \"                                 cv=3,\\n\",\n    \"                                 scoring='neg_log_loss')\\n\",\n    \"        est = model.fit(X, y).best_estimator_\\n\",\n    \"        if isinstance(est,LogisticRegressionCV):\\n\",\n    \"            return LogisticRegression(C=est.C_[0])\\n\",\n    \"    else:\\n\",\n    \"        model = LogisticRegressionCV(cv=5, max_iter=1000).fit(X, y)\\n\",\n    \"        est = LogisticRegression(C=model.C_[0])\\n\",\n    \"    return est\\n\",\n    \"\\n\",\n    \"# econml dml/dr wrapper\\n\",\n    \"def econml_homo_model_wrapper(reg_data, control_names,outcome_name,model_type,*,cols_to_scale, print_summary=False):\\n\",\n    \"    # get variables\\n\",\n    \"    X = None # no heterogeneous treatment\\n\",\n    \"    W = reg_data[control_names].values\\n\",\n    \"    # scale W\\n\",\n    \"    scaler = StandardScaler()\\n\",\n    \"    W = np.hstack([scaler.fit_transform(W[:, :cols_to_scale]).astype(np.float32), W[:, cols_to_scale:]])\\n\",\n    \"    T = reg_data[\\\"treated\\\"]\\n\",\n    \"    y = reg_data[outcome_name]\\n\",\n    \"\\n\",\n    \"    # select the best nuisances model out of econml estimator\\n\",\n    \"    model_y=first_stage_reg(W, y)\\n\",\n    \"    model_t=first_stage_clf(W, T)\\n\",\n    \"\\n\",\n    \"    if model_type=='dml':\\n\",\n    \"        est = LinearDML(model_y=model_y,\\n\",\n    \"                        model_t=model_t,\\n\",\n    \"                        discrete_treatment=True, mc_iters=5,cv=5)\\n\",\n    \"    elif model_type=='dr':\\n\",\n    \"        est = LinearDRLearner(model_regression=model_y,\\n\",\n    \"                              model_propensity=model_t,\\n\",\n    \"                              mc_iters=5,cv=5)\\n\",\n    \"    else:\\n\",\n    \"        raise ValueError('invalid model type %s' % model_type)\\n\",\n    \"    try:\\n\",\n    \"        est.fit(y, T, X=X, W=W, inference=\\\"statsmodels\\\")\\n\",\n    \"    except np.linalg.LinAlgError:\\n\",\n    \"        est.fit(y, T, X=X, W=W, inference=\\\"statsmodels\\\")\\n\",\n    \"\\n\",\n    \"    # Get the final coefficient and intercept summary\\n\",\n    \"    if model_type==\\\"dml\\\":\\n\",\n    \"        inf=est.intercept__inference()\\n\",\n    \"    else:\\n\",\n    \"        inf=est.intercept__inference(T=1)\\n\",\n    \"    effect=int(round(inf.point_estimate))\\n\",\n    \"    se=int(round(inf.stderr))\\n\",\n    \"    lb,ub=inf.conf_int(alpha=0.05)\\n\",\n    \"    if print_summary:\\n\",\n    \"        if model_type=='dml':\\n\",\n    \"            print(est.summary(alpha=0.05))\\n\",\n    \"        else:\\n\",\n    \"            print(est.summary(T=1,alpha=0.05))\\n\",\n    \"    return effect, se, int(round(lb)), int(round(ub))\\n\",\n    \"\\n\",\n    \"# summary table helper function\\n\",\n    \"def get_summ_table(dfs,treat_df,*,\\n\",\n    \"                   df_names,basic_ols_controls,complete_ols_controls,econml_controls,\\n\",\n    \"                   outcome_name,cols_to_scale):\\n\",\n    \"    summ_dic={\\\"control_name\\\":[],\\\"# of obs\\\":[],\\\"earning_growth\\\":[],\\n\",\n    \"              \\\"OLS\\\":[],\\\"OLS full controls\\\":[],\\n\",\n    \"              \\\"DML full controls\\\":[],\\\"DR full controls\\\":[]}\\n\",\n    \"    summ_dic1={\\\"control_name\\\":[],\\\"method\\\":[],\\\"point_estimate\\\":[],\\\"stderr\\\":[],\\\"lower_bound\\\":[],\\\"upper_bound\\\":[]}\\n\",\n    \"    for df, name in tqdm(zip(dfs, df_names)):\\n\",\n    \"        summ_dic[\\\"control_name\\\"].append(name)\\n\",\n    \"        summ_dic[\\\"# of obs\\\"].append(df.shape[0])\\n\",\n    \"        summ_dic1[\\\"control_name\\\"]+=[name]*4\\n\",\n    \"        # get table 5 col 1\\n\",\n    \"        growth=int(np.round((df[outcome_name]-df[\\\"re75\\\"]).mean(),0))\\n\",\n    \"        summ_dic[\\\"earning_growth\\\"].append(growth)\\n\",\n    \"        # get table 5 col 5\\n\",\n    \"        summ_dic1[\\\"method\\\"].append(\\\"OLS\\\")\\n\",\n    \"        df_all=pd.concat([treat_df,df],axis=0,ignore_index=True)\\n\",\n    \"        effect,se,lb,ub=ols_reg_wrapper(df_all,basic_ols_controls,outcome_name,print_summary=False)\\n\",\n    \"        summ_dic[\\\"OLS\\\"].append([effect,se])\\n\",\n    \"        summ_dic1[\\\"point_estimate\\\"].append(effect)\\n\",\n    \"        summ_dic1[\\\"stderr\\\"].append(se)\\n\",\n    \"        summ_dic1[\\\"lower_bound\\\"].append(lb)\\n\",\n    \"        summ_dic1[\\\"upper_bound\\\"].append(ub)\\n\",\n    \"        # get table 5 col 10\\n\",\n    \"        summ_dic1[\\\"method\\\"].append(\\\"OLS full controls\\\")\\n\",\n    \"        effect,se,lb,ub=ols_reg_wrapper(df_all,complete_ols_controls,outcome_name,print_summary=False)\\n\",\n    \"        summ_dic[\\\"OLS full controls\\\"].append([effect,se])\\n\",\n    \"        summ_dic1[\\\"point_estimate\\\"].append(effect)\\n\",\n    \"        summ_dic1[\\\"stderr\\\"].append(se)\\n\",\n    \"        summ_dic1[\\\"lower_bound\\\"].append(lb)\\n\",\n    \"        summ_dic1[\\\"upper_bound\\\"].append(ub)\\n\",\n    \"        # dml\\n\",\n    \"        summ_dic1[\\\"method\\\"].append(\\\"DML full controls\\\")\\n\",\n    \"        effect,se,lb,ub=econml_homo_model_wrapper(df_all, econml_controls,outcome_name,\\\"dml\\\",\\n\",\n    \"                                                  cols_to_scale=cols_to_scale, print_summary=False)\\n\",\n    \"        summ_dic[\\\"DML full controls\\\"].append([effect,se])\\n\",\n    \"        summ_dic1[\\\"point_estimate\\\"].append(effect)\\n\",\n    \"        summ_dic1[\\\"stderr\\\"].append(se)\\n\",\n    \"        summ_dic1[\\\"lower_bound\\\"].append(lb)\\n\",\n    \"        summ_dic1[\\\"upper_bound\\\"].append(ub)\\n\",\n    \"        # dr\\n\",\n    \"        summ_dic1[\\\"method\\\"].append(\\\"DR full controls\\\")\\n\",\n    \"        effect,se,lb,ub=econml_homo_model_wrapper(df_all, econml_controls,outcome_name,\\\"dr\\\",\\n\",\n    \"                                                  cols_to_scale=cols_to_scale, print_summary=False)\\n\",\n    \"        summ_dic[\\\"DR full controls\\\"].append([effect,se])\\n\",\n    \"        summ_dic1[\\\"point_estimate\\\"].append(effect)\\n\",\n    \"        summ_dic1[\\\"stderr\\\"].append(se)\\n\",\n    \"        summ_dic1[\\\"lower_bound\\\"].append(lb)\\n\",\n    \"        summ_dic1[\\\"upper_bound\\\"].append(ub)\\n\",\n    \"\\n\",\n    \"    return summ_dic,summ_dic1\\n\",\n    \"\\n\",\n    \"# error bar helper function\\n\",\n    \"def plot_errorbar(df,df_names):\\n\",\n    \"    fig, ax = plt.subplots(figsize=(10,6))\\n\",\n    \"    for ind,control_name in enumerate(df_names):\\n\",\n    \"        sub_df=df[df[\\\"control_name\\\"]==control_name]\\n\",\n    \"        method_name=sub_df[\\\"method\\\"].values\\n\",\n    \"        point=sub_df[\\\"point_estimate\\\"].values\\n\",\n    \"        yerr=np.zeros((2,point.shape[0]))\\n\",\n    \"        yerr[0,:]=point-sub_df[\\\"lower_bound\\\"].values\\n\",\n    \"        yerr[1,:]=sub_df[\\\"upper_bound\\\"].values-point\\n\",\n    \"        trans = ax.transData + ScaledTranslation((-10+ind*5)/72, 0, fig.dpi_scale_trans)\\n\",\n    \"        plt.errorbar(method_name,point,yerr,fmt=\\\"o\\\",\\n\",\n    \"                     capsize=5,elinewidth=2,label=control_name,alpha=0.7,transform=trans)\\n\",\n    \"    plt.axhline(y=0, color='black', linestyle='--',alpha=0.5)\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.xlabel(\\\"Methodology\\\")\\n\",\n    \"    plt.ylabel(\\\"ATE with CI\\\")\\n\",\n    \"    plt.title(\\\"Error bar of each method for each dataset\\\")\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data <a id=\\\"data\\\"></a>\\n\",\n    \"We use an experimental dataset from the NSW (which includes both a control sample of workers and treated sample). We also  consider several sets of control workers from two large cross-sectional survey sof U.S. workers, the PSID and CPS. For the PSID and CPS, we consider somewhat broader samples of workers (CPS1 and PSID1 for men, PSID1 for women) and smaller samples chosen to better match the characteristics of the NSW population (CSP3 and PSID3 for men, PSID2 for women). The data for men are provided by [Dehejia and Wahba](https://users.nber.org/~rdehejia/data/.nswdata2.html) from their 1999 follow-up to LaLonde's paper. The data for women are provided by [Calonico and Smith](https://www.journals.uchicago.edu/doi/10.1086/692397) from their 2017 follow-up paper. More details on both sources are available through the linked references. \\n\",\n    \"\\n\",\n    \"All data sets have the same set of variables:\\n\",\n    \"\\n\",\n    \"Feature Name|Type|Data Type|Details \\n\",\n    \":--- |:---|:--- |:--- \\n\",\n    \"**treated** |T| Boolean| whether this person had undergone NSW job training treatment\\n\",\n    \"**age** |W/X| Integer| user's age\\n\",\n    \"**educ** |W/X| Integer| years of education this person has completed\\n\",\n    \"**nodegree** |W/X| Boolean| whether this person has NO high school degree\\n\",\n    \"**black** |W/X| Boolean| whether this person is Black\\n\",\n    \"**hisp** |W/X| Boolean| whether this person is Hispanic\\n\",\n    \"**married** |W/X| Boolean| whether this person is married\\n\",\n    \"**haschild**|W|Boolean|whether this person has child for female\\n\",\n    \"**nchildren75**|W|Integer|number of child in 1975 for female\\n\",\n    \"**afdc75**|W|Boolean|AFDC status for female in 1975\\n\",\n    \"**re74** |W| Float| user's real earnings in 1974 (See Smith & Todd for a discussion)\\n\",\n    \"**re75** |W| Float| user's real earnings in 1975 (before treatment)\\n\",\n    \"**re78** |Y| Float| user's real earnings in 1978 (after treatment for males)\\n\",\n    \"**re79** |Y| Float| user's real earnings in 1979 (after treatment for females)\\n\",\n    \"\\n\",\n    \"Below we also show the mean and standard error of each feature from different experimental and control sets for men and women:\\n\",\n    \"\\n\",\n    \"- Summary Statistics for Men:\\n\",\n    \"    \\n\",\n    \"Feature Name|exp treatment|exp control|cps1|cps3|psid1|psid3\\n\",\n    \":---         |:---         |:---       |:---|:---|:--- |:--- \\n\",\n    \"**age**      |24.62 (6.69) |24.45 (6.59) |33.23 (11.05)|28.03 (10.79)|34.85 (10.44)|38.26 (12.89)      \\n\",\n    \"**educ**     |10.38 (1.82) |10.19 (1.62) |12.03 (2.87) |10.24 (2.86)|12.12 (3.08)  |10.30 (3.18)\\n\",\n    \"**nodegree** |0.73 (0.44)  |0.81 (0.39)  |0.30 (0.46)  |0.60 (0.49) |0.31 (0.46)   |0.51 (0.50)\\n\",\n    \"**black**    |0.80 (0.40)  |0.80 (0.40)  |0.07 (0.26)  |0.20 (0.40) |0.25 (0.43)   |0.45 (0.50)\\n\",\n    \"**hisp**     |0.09 (0.29)  |0.11 (0.32)  |0.07 (0.26)  |0.14 (0.35) |0.03 (0.18)   |0.12 (0.32)\\n\",\n    \"**married**  |0.17 (0.37)  |0.16 (0.36)  |0.71 (0.45)  |0.51 (0.50) |0.87 (0.34)   |0.70 (0.46)\\n\",\n    \"**re74**     |3571 (5773)  |3672 (6522)  |14017 (9570) |5619 (6789) |19429 (13407) |5567 (7255)\\n\",\n    \"**re75**     |3066 (4875)  |3026 (5201)  |13651 (9270) |2466 (3292) |19063 (13597) |2611 (5572)\\n\",\n    \"**re78**     |5976 (6924)  |5090 (5718)  |14847 (9647) |6984 (7294) |21553 (15555) |5279 (7762)\\n\",\n    \"**# of obs** |297          |425          |15992        |429         |2490          |128\\n\",\n    \"\\n\",\n    \"- Summary Statistics for Women:\\n\",\n    \"\\n\",\n    \"Feature Name|exp treatment|exp control|psid1|psid2\\n\",\n    \":---        |:---         |:---       |:---|:---\\n\",\n    \"**age**         |33.76 (7.39) |33.74 (7.15) |37.07 (10.57)|34.54 (9.34)\\n\",\n    \"**educ**        |10.29 (1.93) |10.26 (2.03) |11.30 (2.77) |10.49 (2.13)\\n\",\n    \"**nodegree**    |0.70 (0.46)  |0.68 (0.47)  |0.45 (0.50)  |0.59 (0.49)\\n\",\n    \"**black**       |0.84 (0.37)  |0.82 (0.39)  |0.65 (0.48)  |0.86 (0.35)\\n\",\n    \"**hisp**        |0.11 (0.32)  |0.13 (0.33)  |0.02 (0.12)  |0.02 (0.15)\\n\",\n    \"**married**     |0.02 (0.15)  |0.04 (0.19)  |0.02 (0.14)  |0.01 (0.10)\\n\",\n    \"**haschild**    |0.97 (0.16)  |0.98 (0.14)  |0.67 (0.47)  |0.97 (0.16)\\n\",\n    \"**nchildren75** |2.18 (1.29)  |2.23 (1.34)  |1.71 (1.78)  |2.97 (1.79) \\n\",\n    \"**afdc75**      |1.00 (0.00)  |1.00 (0.00)  |0.28 (0.45)  |1.00 (0.00)\\n\",\n    \"**re74**        |913 (2149)   |962 (2376)   |7509 (7296)  |2726 (4414)\\n\",\n    \"**re75**        |861 (2004)   |879 (2195)   |7510 (7541)  |2211 (3568)\\n\",\n    \"**re79**        |4665 (5554)  |3833 (5039)  |8827 (8762)  |4623 (6921)\\n\",\n    \"**# of obs**    |601          |585          |648          |182\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Data\\n\",\n    \"## female\\n\",\n    \"### read in and slice data\\n\",\n    \"female_data = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/calonico_smith_all.csv')\\n\",\n    \"female_data[\\\"haschild\\\"]=(female_data[\\\"nchildren75\\\"]>0)*1\\n\",\n    \"female_data = female_data[pd.notnull(female_data.re75) & pd.notnull(female_data.re79)]\\n\",\n    \"female_treatment = female_data[female_data.treated==1.].copy()\\n\",\n    \"female_control = female_data[female_data.treated==0.].copy()\\n\",\n    \"female_psid1 = female_data[female_data['psid1']==1].copy()\\n\",\n    \"female_psid2 = female_data[female_data['psid2']==1].copy()\\n\",\n    \"### some preprocessing\\n\",\n    \"female_psid1.loc[:, 'treated'] = 0\\n\",\n    \"female_psid2.loc[:, 'treated'] = 0\\n\",\n    \"\\n\",\n    \"## male\\n\",\n    \"### read in and slice data\\n\",\n    \"male_data = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/smith_todd.csv')\\n\",\n    \"male_treatment = male_data[male_data.treated==1.].copy()\\n\",\n    \"male_control = male_data[male_data.treated==0.].copy()\\n\",\n    \"male_cps1 = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/cps_controls.csv')\\n\",\n    \"male_psid1 = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/psid_controls.csv')\\n\",\n    \"male_cps3 = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/cps_controls3.csv')\\n\",\n    \"male_psid3 = pd.read_csv('https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/Lalonde/psid_controls3.csv')\\n\",\n    \"### some preprocessing\\n\",\n    \"for df in [male_psid1,male_psid3,male_cps1,male_cps3]:\\n\",\n    \"    df.rename(columns={'treat':'treated', 'education':'educ', 'hispanic':'hisp'}, inplace=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# outcome\\n\",\n    \"outcome_name_male=\\\"re78\\\"\\n\",\n    \"outcome_name_female=\\\"re79\\\"\\n\",\n    \"# ols controls\\n\",\n    \"basic_ols_columns = ['treated', 'age', 'age_2', 'educ', 'nodegree', 'black', 'hisp']\\n\",\n    \"complete_ols_columns_male = basic_ols_columns+[\\\"married\\\",\\\"re75\\\",\\\"re75_dummy\\\",\\\"re74\\\",\\\"re74_dummy\\\",\\\"re_diff_pre\\\"]\\n\",\n    \"complete_ols_columns_female=basic_ols_columns+[\\\"married\\\",\\\"re75\\\",\\\"re75_dummy\\\",\\\"re74\\\",\\\"re74_dummy\\\",\\\"re_diff_pre\\\",\\n\",\n    \"                                               \\\"afdc75\\\",\\\"nchildren75\\\",\\\"haschild\\\"]\\n\",\n    \"# econml controls (exclude treatment)\\n\",\n    \"econml_controls_male= ['age', 'age_2', 'educ', 're75','re74','re_diff_pre','nodegree',\\n\",\n    \"                       'black', 'hisp', 'married','re75_dummy','re74_dummy']\\n\",\n    \"econml_controls_female= ['age', 'age_2', 'educ','nchildren75', 're75','re74','re_diff_pre','nodegree',\\n\",\n    \"                         'black', 'hisp', 'married','re75_dummy','re74_dummy','afdc75','haschild']\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# preprocessing data\\n\",\n    \"male_control, male_treatment, male_psid1, male_psid3, male_cps1, male_cps3 = [\\n\",\n    \"    preprocessing(df,outcome_name_male,complete_ols_columns_male)\\n\",\n    \"    for df in (male_control, male_treatment, male_psid1, male_psid3, male_cps1, male_cps3)\\n\",\n    \"]\\n\",\n    \"female_control, female_treatment, female_psid1, female_psid2 =[\\n\",\n    \"    preprocessing(df,outcome_name_female,complete_ols_columns_female)\\n\",\n    \"    for df in (female_control, female_treatment, female_psid1, female_psid2)\\n\",\n    \"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Compare EconML Solution with LaLonde OLS Results <a id=\\\"comparison\\\"></a>\\n\",\n    \"We first repilcate key results from Table 5 (for men) and Table 4 (for women) from [Lalonde (1986)](http://public.econ.duke.edu/~hf14/teaching/povertydisc/readings/lalonde1986.pdf). These tables calculate the benchmark ATE using only the experimental sample and attempt to match that benchmark by estimating treatment effects using OLS and various alternative observational untreated samples, first with a basic set of control features and then with an expanded set. We then train both `LinearDML` and `LinearDRLearner` models on each dataset, using the expanded control set.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Treatment Effect Comparison for Men\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"5it [04:27, 53.44s/it]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"#male\\n\",\n    \"control_dfs_male=[male_control,male_psid1,male_psid3,male_cps1,male_cps3]\\n\",\n    \"df_names_male=[\\\"exp controls\\\",\\\"psid1\\\",\\\"psid3\\\",\\\"cps1\\\",\\\"cps3\\\"]\\n\",\n    \"summ_male,summplot_male=get_summ_table(control_dfs_male,male_treatment,df_names=df_names_male,\\n\",\n    \"                         basic_ols_controls=basic_ols_columns,\\n\",\n    \"                         complete_ols_controls=complete_ols_columns_male,\\n\",\n    \"                         econml_controls=econml_controls_male,\\n\",\n    \"                         outcome_name=outcome_name_male,cols_to_scale=6\\n\",\n    \"                         )\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Numbers under each method represent [point estimate, standard error]. \\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>control_name</th>\\n\",\n       \"      <th># of obs</th>\\n\",\n       \"      <th>earning_growth</th>\\n\",\n       \"      <th>OLS</th>\\n\",\n       \"      <th>OLS full controls</th>\\n\",\n       \"      <th>DML full controls</th>\\n\",\n       \"      <th>DR full controls</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>exp controls</td>\\n\",\n       \"      <td>425</td>\\n\",\n       \"      <td>2063</td>\\n\",\n       \"      <td>[798, 472]</td>\\n\",\n       \"      <td>[817, 469]</td>\\n\",\n       \"      <td>[851, 487]</td>\\n\",\n       \"      <td>[868, 486]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>psid1</td>\\n\",\n       \"      <td>2490</td>\\n\",\n       \"      <td>2491</td>\\n\",\n       \"      <td>[-8067, 990]</td>\\n\",\n       \"      <td>[-1827, 825]</td>\\n\",\n       \"      <td>[-1966, 697]</td>\\n\",\n       \"      <td>[-1576, 401]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>psid3</td>\\n\",\n       \"      <td>128</td>\\n\",\n       \"      <td>2669</td>\\n\",\n       \"      <td>[-509, 967]</td>\\n\",\n       \"      <td>[-239, 1029]</td>\\n\",\n       \"      <td>[133, 976]</td>\\n\",\n       \"      <td>[92, 669]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>cps1</td>\\n\",\n       \"      <td>15992</td>\\n\",\n       \"      <td>1196</td>\\n\",\n       \"      <td>[-4416, 577]</td>\\n\",\n       \"      <td>[-867, 445]</td>\\n\",\n       \"      <td>[-784, 542]</td>\\n\",\n       \"      <td>[-2540, 1022]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>cps3</td>\\n\",\n       \"      <td>429</td>\\n\",\n       \"      <td>4518</td>\\n\",\n       \"      <td>[-1, 681]</td>\\n\",\n       \"      <td>[210, 683]</td>\\n\",\n       \"      <td>[480, 609]</td>\\n\",\n       \"      <td>[310, 448]</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   control_name  # of obs  earning_growth           OLS OLS full controls  \\\\\\n\",\n       \"0  exp controls       425            2063    [798, 472]        [817, 469]   \\n\",\n       \"1         psid1      2490            2491  [-8067, 990]      [-1827, 825]   \\n\",\n       \"2         psid3       128            2669   [-509, 967]      [-239, 1029]   \\n\",\n       \"3          cps1     15992            1196  [-4416, 577]       [-867, 445]   \\n\",\n       \"4          cps3       429            4518     [-1, 681]        [210, 683]   \\n\",\n       \"\\n\",\n       \"  DML full controls DR full controls  \\n\",\n       \"0        [851, 487]       [868, 486]  \\n\",\n       \"1      [-1966, 697]     [-1576, 401]  \\n\",\n       \"2        [133, 976]        [92, 669]  \\n\",\n       \"3       [-784, 542]    [-2540, 1022]  \\n\",\n       \"4        [480, 609]       [310, 448]  \"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"summ_male_df=pd.DataFrame(summ_male)\\n\",\n    \"print(\\\"Numbers under each method represent [point estimate, standard error]. \\\")\\n\",\n    \"summ_male_df\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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WVmUl5dz6NAhBg8eTGFhIStXrmTUqFFcfPHFDBo0iFmzZjWYoOXn53PWWWcxbNgwcnNzOXDgAOXl5VxzzTUMHTqU733ve/ztb38DYOHChVxyySWMHz+efv36ceeddwIwe/ZsysrKyM7OZtq0aRQVFTFw4EBuvPFGvv/977Nz507++Z//mSFDhjB06FCWLl16RBwbNmyoO7esrCy2bNnSrM/qeKkrWURERMJq0eoikhPjie/gtT916RRfV35m37Tj2ufHH3/M0qVLeffdd0lISODGG29k8eLFTJ8+nQsvvJD77ruPsrIyrrzySoYMGcLKlSvJy8vjo48+ok+fPowfP54XXniByZMn1+2zoqKCyy+/nKVLl5KTk8P+/ftJSkri97//PQDr169n48aN/OhHP2Lz5s0AFBQU8Pe//52OHTty+umnc8stt3D//fczf/58CgoKAK+LeNOmTTz55JM8+uij/OlPf6KgoIAPP/yQ3bt3k5OTw6hRo4LOb8GCBdx2221MmzaNiooKqqurj+tzai4lhiIiIhJWn+4p5cTOHYPKUjrG8eme0uPe51tvvcXatWvJyfHGK5aVldGzZ08AfvGLX5CTk0OnTp14+OGH67bJzc2lb9++AFxxxRWsWrUqKDHctGkTJ598ct0+U1NTAVi1ahW33HILAAMGDKBPnz51ieHYsWPp2rUrAIMGDWLHjh1kZGQcEW+fPn0488wz6/Z3xRVXEBcXx0knncTo0aPrWjprjRw5krlz51JcXMwll1xCv379jvuzag51JYuIiEhYnXpCMocOB7d4HTpczaknJB/3Pp1zXH311RQUFFBQUMCmTZuYM2cOAHv27OHgwYN13cC16s/krb/snGtwtq9zrtE4Onb8NuGNi4ujqqqqwfVSUlKatL9aU6dO5ZVXXiEpKYlx48axYsWKo27TEpQYioiISFhNH5lJaUUVVTU1OOc4UF5FaUUV00dmHvc+x44dy/PPP89XX30FeMngjh07AJg5cya/+tWvmDZtGnfddVfdNnl5eWzfvp2amhqWLl3KOeecE7TPAQMG8Pnnn5Of782ePnDgAFVVVYwaNYrFixcDsHnzZj799FNOP/30kPElJCRQWVnZYN2oUaNYunQp1dXVfP3117zzzjvk5uYGrbNt2zb69u3LrbfeyoUXXsi6deuO4dMJH3Uli4iISFid2TeN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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"summplot_male_df=pd.DataFrame(summplot_male)\\n\",\n    \"plot_errorbar(summplot_male_df,df_names_male)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Treatment Effect Comparison for Women\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"3it [01:25, 28.42s/it]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# female\\n\",\n    \"control_dfs_female=[female_control,female_psid1,female_psid2]\\n\",\n    \"df_names_female=[\\\"exp controls\\\",\\\"psid1\\\",\\\"psid2\\\"]\\n\",\n    \"summ_female,summplot_female=get_summ_table(control_dfs_female,female_treatment,df_names=df_names_female,\\n\",\n    \"                         basic_ols_controls=basic_ols_columns,\\n\",\n    \"                         complete_ols_controls=complete_ols_columns_female,\\n\",\n    \"                         econml_controls=econml_controls_female,\\n\",\n    \"                         outcome_name=outcome_name_female,cols_to_scale=7\\n\",\n    \"                         )\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Numbers under each method represent [point estimate, standard error]. \\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>control_name</th>\\n\",\n       \"      <th># of obs</th>\\n\",\n       \"      <th>earning_growth</th>\\n\",\n       \"      <th>OLS</th>\\n\",\n       \"      <th>OLS full controls</th>\\n\",\n       \"      <th>DML full controls</th>\\n\",\n       \"      <th>DR full controls</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>exp controls</td>\\n\",\n       \"      <td>585</td>\\n\",\n       \"      <td>2954</td>\\n\",\n       \"      <td>[858, 307]</td>\\n\",\n       \"      <td>[880, 307]</td>\\n\",\n       \"      <td>[830, 307]</td>\\n\",\n       \"      <td>[834, 307]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>psid1</td>\\n\",\n       \"      <td>648</td>\\n\",\n       \"      <td>1316</td>\\n\",\n       \"      <td>[-2730, 441]</td>\\n\",\n       \"      <td>[1068, 529]</td>\\n\",\n       \"      <td>[1012, 682]</td>\\n\",\n       \"      <td>[762, 610]</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>psid2</td>\\n\",\n       \"      <td>182</td>\\n\",\n       \"      <td>2412</td>\\n\",\n       \"      <td>[-90, 514]</td>\\n\",\n       \"      <td>[510, 560]</td>\\n\",\n       \"      <td>[790, 711]</td>\\n\",\n       \"      <td>[777, 848]</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   control_name  # of obs  earning_growth           OLS OLS full controls  \\\\\\n\",\n       \"0  exp controls       585            2954    [858, 307]        [880, 307]   \\n\",\n       \"1         psid1       648            1316  [-2730, 441]       [1068, 529]   \\n\",\n       \"2         psid2       182            2412    [-90, 514]        [510, 560]   \\n\",\n       \"\\n\",\n       \"  DML full controls DR full controls  \\n\",\n       \"0        [830, 307]       [834, 307]  \\n\",\n       \"1       [1012, 682]       [762, 610]  \\n\",\n       \"2        [790, 711]       [777, 848]  \"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"summ_female_df=pd.DataFrame(summ_female)\\n\",\n    \"print(\\\"Numbers under each method represent [point estimate, standard error]. \\\")\\n\",\n    \"summ_female_df\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAoAAAAGDCAYAAAC7saEQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzde5xVVd348c+X+0VEBYsUFClvIIjJoKipqY+ikHcTb3iNzMx6flFZ+SufzKwnuhmV+ctEkwIzb2l20ULzUeOSKKBiPog6XlJQERHktn5/7D14ZpgZhhlmzszsz/v1Oq85e6291/6ec9ac8z1rr312pJSQJElScXQodwCSJElqWSaAkiRJBWMCKEmSVDAmgJIkSQVjAihJklQwJoCSJEkFYwIotWMRMSMiLijTviMiro+INyJiZgvuN0XEh1pqf/WJiCkR8c0t1NblEXFTPfWfioh/R8TbEdFnS+xzS9vUY2jA9mXrz1J7YwIoNZOIWBwRK/MP5Krb5HLH1YIOAv4D6J9SGlnuYJpbRJwTEQ+Wad+dge8DR6aUtkopLS1HHK1J/v93RHvZj7SldSp3AFI797GU0r2bWikiOqWU1tYo65hSWtfQHW3u+purEe3vDCxOKa1orpi0wfuBbsCCzd0wIgKIlNL6LR6VpFbLEUCpDPLRov+JiB9ExOvA5fnhwp9FxB8iYgXw0YjYMz/s9WZELIiIY0va2Gj9Onb3wYiYGRHLIuKOiNiupI3fRsQred0DETFkc9qPiB0i4s6IeD0inomIT+Tl5wO/AEblI5//VcfzcF5EPJkfJv5TROxcUvejiHghIt6KiDkR8ZGSuo4R8ZWI+N+IWJ7XDyhp+oiI+Ffe7k/yJKe2/V+ePwc35e3Mi4jdIuLLEfFqvv8jS9bvHRHXRcTLEfFiRHwzj2VP4JqSx/tmyW62jYi78/b/EREfLGnvgIiYlT//syLigJK6XSLi/ny7vwB963gMuwEL88U3I+KvDWh7RkRcGRH/A7wDDKql3R0i4ncR8VpEPBsRl5TUjYyIh/N++XJETI6ILiX1QyLiL3m/+HdEfKWk6S4RcWP+uBZExIjaHlfezn9ExFP5Y5gMREndByPirxGxNCKWRMTUiNgmr/sVsBPw+/z1+GJeXl9/PyYinsjjejEiJpbUjY2IufnjfSgihtW3H6lNSCl58+atGW7AYuCIOurOAdYCnyEbie8OTAGWAQeSfTnrBTwDfAXoAhwGLAd2z9uouX63WvYzA3gR2AvoCfwOuKmk/rx8P12BHwJzS+oa0v79wE/JRp+GA68Bh5c8xgfreX6Ozx/fnvlzcBnwUEn9mUCfvO7zwCtVMQBfAOYBu5MlBXsDffK6BNwFbEP24fwaMLqOGC4HVgFH5fu5EXgW+CrQGfgE8GzJ+rcDP8+fy/cBM4FP1vV48+fwdWBk3v5UYFpetx3wBnBWXndavlz1OB4mO6zbFTg4f+1vquNxDMwfd6cGtj0DeB4Yktd3rtFeB2AO8DWyvjcIWAQcldfvC+yfbzsQeBL4XF7XC3g5f8265cv71Xi+jwE6AlcBj9TxmPoCbwEn56/Ff5L9z1yQ13+IbIpBV2B74AHgh/X9/1F/f38Z+Eh+f1vgw/n9DwOvAvvlMZ+dt911U//n3ry15lvZA/Dmrb3e8g+Gt4E3S26fyOvOAZ6vsf4U4MaS5Y+QJT0dSsp+A1xe2/p1xDAD+HbJ8mBgNdCxlnW3IUsiejekfWAAsA7oVVJ2FTCl5DHWlwDeA5xfstyBbDRq5zrWfwPYO7+/EDiujvUScFDJ8s3ApXWseznwl5Llj+WvWcd8uVfe3jZkh1nfBbqXrH8a8Le6Hm/+HP6iZPkY4Kn8/lnAzBrrP5y3sxNZstOzpO7XNDwBrLPtkn7xjXpem/1q6Z9fBq6vY/3PAbeVPCeP1vN831ujP66sY93xlCSHZIl+JXkCWMv6x5ful00kZrX09+eBTwJb11jvZ8AVNcoWAoc0ZD/evLXWm4eApeZ1fEppm5Lb/yupe6GW9UvLdgBeSNXnZj0H7LiJNupr8zmy0ZS++aHLb+eHUd8i+yCD6oca62t/B+D1lNLyeuKrz87Aj/LDam+SjZRF1fYR8fn88PCyvL53SWwDgP+tp+1XSu6/A2xVz7r/Lrm/EliS3pvruDL/u1Ueb2fg5ZKYf042ElifumLZgez5KlX1/O0AvJGqz5+suW596mu7Sn2v7c7ADlWPM3+sXyFLgskPk9+VH059C/gWjX9tukVEbfPRdyiNMaWUSpcj4n0RMS0/XPsWcBN1HCbP199Ufz+JLEF/Lj/0Pqrkufh8jediQB6f1GaZAErlkzZR9hIwICJK/093IjukW18bNZXOjdsJWAMsAU4HjgOOIEuuBubrlM6Xq6/9l4DtIqJXPfHV5wWyw6elCXL3lNJDkc33+xLwcWDblNI2ZIejo2TbD9bebLN5gWwEsG9JvFunlKrmkTXktSj1EllyUarq+XuZbO5gzxp1W6LtKvXF+wLZoe/S16ZXSumYvP5nwFPArimlrcmSwy392rxMSd+NiKB6X74qfwzD8hjOpP6+W29/TynNSikdR5bQ3042cgzZ47myxnPRI6X0mzr2I7UJJoBS6/UPYAXwxYjoHBGHkh2inLaZ7ZwZEYMjogfwDeCWfISrF1lCsxToQTaK02AppReAh4CrIqJbPjH+fLJ5bg1xDfDlqon4kZ1gcUpe14vsEOhrQKeI+Bqwdcm2vwCuiIhdIzMsmvm371JKLwN/Br4XEVtHRIf8RIRD8lX+DfQvPRliE/4A7BYRp0dEp4g4leyQ6F0ppeeA2cB/RUSXiDiI7LVvqDrbbuD2M4G3IuJLEdE9Hz3bKyIq8vpeZPPz3o6IPYBPlWx7F9AvIj4XEV0joldE7LcZsVe5GxgSESfmI4SXAP1K6nuRT7GIiB3J5oWW+jfVT26ps7/nz/EZEdE7pbQmf2xVo8D/D7gwIvbL+1rPiBhT8sWn5n6kNsEEUGpeVWcHVt1ua+iGKaXVwLHA0WQjdj8FxqeUntrMGH5FNhftFbJJ+VVnc95IdljwReAJ4JHNbBey+V4DyUacbgO+nlL6S0M2TCndBnwHmJYfkptP9lgB/kQ2R/DpPMZVVD9k+X2yEZo/k31YX0d2Ik1zG092UsQTZHMSbwE+kNf9lexnWF6JiCWbaihlv9U3luxkiaXAF4GxKaWqbU8nm4v3OvB1sterQRrQ9qa2X0eWcA4nOylmCVnS3TtfZWIe33KyBGl6ybbLyU7O+BhZn/sXdZ+hXl8MS4BTgG/nj2FX4H9KVvkvshM0lpEli7fWaOIq4LL8sO1ENt3fzwIW533xQrIRRVJKs8lOBppM9po/QzZPs679SG1CZNMqJEmSVBSOAEqSJBWMCaAkSVLBmABKkiQVjAmgJElSwZgASpIkFUxtv75eCH379k0DBw4sdxiSJEmbNGfOnCUppe23VHuFTQAHDhzI7Nmzyx2GJEnSJkXE5lwOcpM8BCxJklQwJoCSJEkFYwIoSZJUMIWdA1ibNWvWUFlZyapVq8odSiF169aN/v3707lz53KHIklSu2YCWKKyspJevXoxcOBAIqLc4RRKSomlS5dSWVnJLrvsUu5wJElq1zwEXGLVqlX06dPH5K8MIoI+ffo4+ipJUgtwBLCGTSV/d8x9kTvnvrRh+bEX3gRg7wHbVFvv2OE7cNzwHbd8gO2YibckSS3DBHAzHTd8x2qJ3flTZgFw3TkV5QqpxXzrW9/iK1/5ymZts3jxYsaOHcv8+fObKSpJkrS5PATcBI8sWsq8ymXMfPZ1Lpo6h0cWLS13SM3qW9/6Vq3lKSXWr1/fwtFIkqTGMgFspEcWLeWbdz3B6nXr6NIxWLJ8Nd+864kmJ4E33XQTI0eOZPjw4Xzyk59k3bp1zJo1i2HDhrFq1SpWrFjBkCFDmD9/PjNmzODggw/mhBNOYPDgwVx44YW1JmKzZs3igAMOYO+992bkyJEsX76cVatWce655zJ06FD22Wcf/va3vwEwZcoUTjzxREaPHs2uu+7KF7/4RQAuvfRSVq5cyfDhwznjjDNYvHgxe+65JxdddBEf/vCHeeGFF/jCF77AXnvtxdChQ5k+ffpGcSxYsGDDYxs2bBj/+te/mvRcSZKkxvEQcCPd+PBienTpRKcOWQ7dq1unDeX7D+rTqDaffPJJpk+fzv/8z//QuXNnLrroIqZOncr48eM59thjueyyy1i5ciVnnnkme+21FzNmzGDmzJk88cQT7LzzzowePZpbb72Vk08+eUObq1ev5tRTT2X69OlUVFTw1ltv0b17d370ox8BMG/ePJ566imOPPJInn76aQDmzp3Lo48+SteuXdl99935zGc+w7e//W0mT57M3LlzgezQ7sKFC7n++uv56U9/yu9+9zvmzp3LY489xpIlS6ioqODggw+u9viuueYaPvvZz3LGGWewevVq1q1b16jnSZIkNY0JYCM9//o7bL9V12plPbt25PnX32l0m/fddx9z5syhoiKbT7hy5Ure9773AfC1r32NiooKunXrxtVXX71hm5EjRzJo0CAATjvtNB588MFqCeDChQv5wAc+sKHNrbfeGoAHH3yQz3zmMwDsscce7LzzzhsSwMMPP5zevXsDMHjwYJ577jkGDBiwUbw777wz+++//4b2TjvtNDp27Mj73/9+DjnkkA0jl1VGjRrFlVdeSWVlJSeeeCK77rpro58rSZLUeCaAjbTTdj1Ysnx1tbIV765jp+16NLrNlBJnn302V1111UZ1r7/+Om+//TZr1qxh1apV9OzZE9j4zNmayymlWs+uTSnVGUfXru8lth07dmTt2rW1rlcVw6baq3L66aez3377cffdd3PUUUfxi1/8gsMOO2yT20mS1Frcvehu7nn2ng3L85bMA2Bo36HV1jt6l6MZM2hMi8a2OZwD2EjjRw3kndVrWbt+PSkllq9ayzur1zJ+1MBGt3n44Ydzyy238OqrrwJZ0vfcc88BMGHCBK644grOOOMMvvSlL23YZubMmTz77LOsX7+e6dOnc9BBB1Vrc4899uCll15i1qzsbOXly5ezdu1aDj74YKZOnQrA008/zfPPP8/uu+9eb3ydO3dmzZo1tdYdfPDBTJ8+nXXr1vHaa6/xwAMPMHLkyGrrLFq0iEGDBnHJJZdw7LHH8vjjj2/GsyNJUvmNGTSGyYdP3nAb2ncoQ/sOrVY2+fDJrTr5A0cAG23/QX24bOxgLvn1o6xcs46+vbowftRujZ7/B9nh1m9+85sceeSRrF+/ns6dO/OTn/yE+++/n06dOnH66aezbt06DjjgAP7617/SoUMHRo0axaWXXsq8efM2nBBSqkuXLkyfPp3PfOYzrFy5ku7du3Pvvfdy0UUXceGFFzJ06FA6derElClTqo381WbChAkMGzaMD3/4w1x55ZXV6k444QQefvhh9t57byKC//7v/6Zfv34sXrx4wzrTp0/npptuonPnzvTr14+vfe1rjX6uJElS40VDDt21RyNGjEizZ8+uVvbkk0+y5557blY75fwdwBkzZjBp0iTuuuuuFt93c2nMayBJUrlcfN/FAEw+fHKz7ici5qSURmyp9hwB3Ew1rwRSpSoRrOKVQCRJUmtlAriZal4JpJwOPfRQDj300HKHIUmN8/hvYf4t7y2/OCf7u+O+1dfb62QYdkrLxSUVgAmgJKk8hp1SPbH79anZ39M3/iF5SVuWZwFLkiQVjAmgJElSwXgIeHM5Z0WSJLVxJoCbqxXNWbnmmmvo0aMH48ePr1a+ePFixo4dy/z581m6dCknn3wys2bN4pxzzmHy5OY9TV2SJLV+JoBNsfhBeOlRWLMSbh4PIyfAwIM2vd0WcuGFF25ynW7dunHFFVcwf/585s+f3wJRSZKk1s45gI21+EH401dh3Wro2AVWLMmWFz/YtGYXL2aPPfbg7LPPZtiwYZx88sm88847XHrppQwePJhhw4YxceJEAC6//HImTZoEwJw5c9h7770ZNWoUP/nJTza017NnTw466CC6devWpLgkSVL74QhgY828Frr0hA75U9i113vlTRwFXLhwIddddx0HHngg5513HpMnT+a2227jqaeeIiJ48803N9rm3HPP5cc//jGHHHIIX/jCF5q0f0kql7vXL+Oe/MoKAPOWzANgaN+h1dY7epejW/21VqXWzASwsd54DrZ6X/WyLj2z8iYaMGAABx54IABnnnkm3//+9+nWrRsXXHABY8aMYezYsdXWX7ZsGW+++SaHHHIIAGeddRb33HNPk+OQpJY2pkNvxpRcUqulLrMlFY2HgBtr251h9YrqZatXZOVNFBHVljt37szMmTM56aSTuP322xk9enS1+pTSRttIkiTVxQSwsUZOyBK+9WshJXh3ebY8ckKTm37++ed5+OGHAfjNb37D8OHDWbZsGccccww//OEPmTt3brX1t9lmG3r37s2DD2bzD6dOndrkGCRJUvvlIeDGGngQHHUl3HJedhZwz77w0a9skbOA99xzT2644QY++clPsuuuu3L55ZczduxYVq1aRUqJH/zgBxttc/3113PeeefRo0cPjjrqqOqhDhzIW2+9xerVq7n99tv585//zODBg5scp1o5f7NSklQHE8CmGHgQ7LBPdv/jN26xZjt06MA111xTrWzmzJkbrXf55ZdvuL/vvvvy2GOP1Vq3ePHiLRab2pBW9JuVkqTWpWwJYEQMAG4E+gHrgWtTSj+KiO2A6cBAYDHw8ZTSG/k2XwbOB9YBl6SU/pSX7wtMAboDfwA+m1JKzRJ4zVGVKlUfrlUcVZEkSa1UOUcA1wKfTyn9MyJ6AXMi4i/AOcB9KaVvR8SlwKXAlyJiMDAOGALsANwbEbullNYBPwMmAI+QJYCjgeY5DbbmqMoWNnDgQH+wWZIkNauynQSSUno5pfTP/P5y4ElgR+A44IZ8tRuA4/P7xwHTUkrvppSeBZ4BRkbEB4CtU0oP56N+N5ZsI0mSpBpaxVnAETEQ2Af4B/D+lNLLkCWJQNWP7e0IvFCyWWVetmN+v2Z5bfuZEBGzI2L2a6+9tiUfgiRJUptR9gQwIrYCfgd8LqX0Vn2r1lKW6infuDCla1NKI1JKI7bffvvND1aSJKkdKOtZwBHRmSz5m5pSujUv/ndEfCCl9HJ+ePfVvLwSGFCyeX/gpby8fy3lzeLuRXdzz7PvTS/0MkWSJLVTDfg5rU8umcec7Xdp4cCarpxnAQdwHfBkSun7JVV3AmcD387/3lFS/uuI+D7ZSSC7AjNTSusiYnlE7E92CHk88OPminvMoDHVErtyXqbommuuoUePHowfP75a+eLFixk7dizz58/nL3/5C5deeimrV6+mS5cufPe73+Wwww5r8VglSWpzGvBzWj/P84BzWjCsLaGcI4AHAmcB8yKi6tIWXyFL/G6OiPOB54FTAFJKCyLiZuAJsjOIP52fAQzwKd77GZh7aK4zgGuY9cosFixdwKq1q/j8jM8zbo9xVPSraIldA3DhhRducp2+ffvy+9//nh122IH58+dz1FFH8eKLL7ZAdJIkqbUqWwKYUnqQ2ufvARxexzZXAlfWUj4b2GvLRbdps16ZxaRZk1i9bjWdO3Rm6cqlTJo1iYkVE5uUBC5evJjRo0ez33778eijj7Lbbrtx44038o1vfIM777yTTp06ceSRRzJp0iQuv/xyttpqKyZOnMicOXM2XAnkoIPeuxrJPvvss+H+kCFDWLVqFe+++y5du3Zt0uOXJEltV9lPAmmrpj01je6dutOpQycigq26bEX3Tt2Z9tS0Jre9cOFCJkyYwOOPP87WW2/N5MmTue2221iwYAGPP/44l1122UbbnHvuuVx99dUbriFcm9/97nfss88+Jn+SJBWcCWAjVS6vpGfnntXKenbuSeXblXVs0XADBgzgwAMPBODMM8/kgQceoFu3blxwwQXceuut9OjRo9r6y5Yt48033+SQQw4B4KyzztqozQULFvClL32Jn//8502OT5IktW0mgI3Uv1d/VqxZUa1sxZoV9N+qfx1bNFx2fsx7OnfuzMyZMznppJO4/fbbGT16dLX6lNJG25SqrKzkhBNO4MYbb+SDH/xgk+OTJEltmwlgI43bYxwr165k7fq1pJR4e/XbrFy7knF7jGty288///yGQ7m/+c1vGD58OMuWLeOYY47hhz/8IXPnzq22/jbbbEPv3r158MEHAZg6deqGujfffJMxY8Zw1VVXbRhVlCRJxWYC2EgV/SqYWDGRLh27sGb9Gvp079PkE0Cq7Lnnntxwww0MGzaM119/nQsuuICxY8cybNgwDjnkEH7wgx9stM3111/Ppz/9aUaNGkX37t03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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"summplot_female_df=pd.DataFrame(summplot_female)\\n\",\n    \"plot_errorbar(summplot_female_df,df_names_female)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Improved Performance with Sample Reweighting <a id=\\\"improvement\\\"></a>\\n\",\n    \"\\n\",\n    \"An important difficulty in the above exercise is that all of the alternative control samples are somewhat different than the experimental NSW sample (for example, workers in the experimental sample are younger on average and far more likely to be Black or Hispanic). Even with a perfect tool for estimating causal effects from observational data, estimating the *average* treatment effect across these separate samples is unlikely to yield identical results. \\n\",\n    \"\\n\",\n    \"We now address this limitation by reestimating our `LinearDML` model after reweighting the observational samples to better align with the experimental sample. For this exercise we focus on the CPS3 sample for men, which was most similar to the experimental sample to begin with. We estimate a classification model between the full NSW sample and observational sample (which combines treated workers from NSW with the CPS3 control sample) to estimate the likelihood that a worker with a given set of features originated from each sample. We then reweight the CPS3 sample to give higher weight to workers who are more likely to have come from the experimental set: $$weight=P(obs\\\\_from\\\\_experimental\\\\_distribution)/(1-P(obs\\\\_from\\\\_experimental\\\\_distribution)) $$\\n\",\n    \"Because the data samples in this exercise are so small, the estimated treatment effects from both the weighted and unweighted models are unstable. We therefore run this analysis 100 times and learn the distribution of ATE from each approach and their significance level (p value). \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# experimental data male\\n\",\n    \"df=pd.concat([male_treatment,male_control])\\n\",\n    \"# cps3 data male\\n\",\n    \"df_cps=pd.concat([male_treatment,male_cps3])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"df[\\\"label\\\"]=1\\n\",\n    \"df_cps[\\\"label\\\"]=0\\n\",\n    \"male_cls=pd.concat([df,df_cps]).reset_index(drop=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X=male_cls[econml_controls_male].values\\n\",\n    \"y=male_cls[\\\"label\\\"].values\\n\",\n    \"# scale numeric features\\n\",\n    \"cols_to_scale=6\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"X=np.hstack([scaler.fit_transform(X[:, :cols_to_scale]).astype(np.float32), X[:, cols_to_scale:]])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# train a classification model to learn the weight\\n\",\n    \"cls=first_stage_clf(X,y)\\n\",\n    \"cls.fit(X,y)\\n\",\n    \"male_cls[\\\"prob\\\"]=cls.predict_proba(X)[:,1]/cls.predict_proba(X)[:,0]\\n\",\n    \"weight=male_cls[male_cls[\\\"label\\\"]==0][\\\"prob\\\"].values\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = None\\n\",\n    \"W = df_cps[econml_controls_male].values\\n\",\n    \"# scale W\\n\",\n    \"W = np.hstack([scaler.fit_transform(W[:, :cols_to_scale]).astype(np.float32), W[:, cols_to_scale:]])\\n\",\n    \"T = df_cps[\\\"treated\\\"]\\n\",\n    \"y = df_cps[outcome_name_male]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"model_y=first_stage_reg(W, y)\\n\",\n    \"model_t=first_stage_clf(W, T)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# train dml with sample weight 100 times\\n\",\n    \"p_value_with_weight=[]\\n\",\n    \"point_estimate_with_weight=[]\\n\",\n    \"for _ in range(100):\\n\",\n    \"    est=LinearDML(model_t=model_t,model_y=model_y,discrete_treatment=True,mc_iters=10,cv=3)\\n\",\n    \"    est.fit(y, T, X=None, W=W, sample_weight=weight,inference=\\\"statsmodels\\\")\\n\",\n    \"    point_estimate_with_weight.append(est.intercept_)\\n\",\n    \"    p_value_with_weight.append(est.effect_inference().pvalue()[0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# train dml without sample weight 100 times\\n\",\n    \"p_value_without_weight=[]\\n\",\n    \"point_estimate_without_weight=[]\\n\",\n    \"for _ in range(100):\\n\",\n    \"    est1=LinearDML(model_t=model_t,model_y=model_y,discrete_treatment=True,mc_iters=10,cv=3)\\n\",\n    \"    est1.fit(y, T, X=None,W=W,inference=\\\"statsmodels\\\")\\n\",\n    \"    point_estimate_without_weight.append(est1.intercept_)\\n\",\n    \"    p_value_without_weight.append(est1.effect_inference().pvalue()[0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0, 0.5, 'frequency')\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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adOm8dZbb3HDDTdw7bXXFs//zjvvMG7cOGbOnMmvf/1rdtllF9566y26du3KI488UjzfV199xauvvsrdd9/NBRdcsNVyr7jiCoYOHcobb7zB008/zYUXXph1/deuXUu9evWK40+t/8SJE1mwYAEzZ85kzpw5zJ49m2nTppUo45lnnqGwsJC3336b++67j9dee63E9ObNm/Pmm2/yk5/8hJEjR5KXl8cll1zC0KFDmTNnzlb1LLKt1B0mIlIJxxxzDLNnz2bdunU0bNiQjh07MmvWLKZPn17cQlSWzp0707JlSwDy8/MpLCzkuONKXofUvn17hgwZwsCBAxk4cCAAa9as4bzzzmPBggWYGRs3biyev3fv3jRt2pSmTZvSrFkzBgwYAEC7du2KW20AzjnnHCAkMmvXrmX16tUllvvyyy8zb9684uG1a9eybt06mjZtWjyuR48ejBo1ilatWtGvXz9eeuklvv76awoLCzniiCMYO3YsEydOpEOHDkBo+VqwYAE9e/YsLmPGjBkMHjyYOnXqsO+++9K7d+8ScZx55pnFdf3MM8+UW6ci20pJkIhIJdSvX5+8vDwefPBBunXrRvv27Zk8eTILFy7kyCOPLPf9DRs2LH5dt25dioqKtprn+eefZ9q0aTz33HPceOONvPvuu1x33XX07t2bZ599lsLCQnr16lVqmXXq1CkerlOnTonyM38Knjm8efNmXnvtNRo3bpw1/k6dOjFr1iwOOeQQTj75ZFauXMnYsWM55phjgHDzwV/96ldcfPHFWcsorQswXSr+bPUjUlXUHSYiUkk9e/Zk5MiR9OzZkx49ejBmzBjy8/O3SiqaNm3KunXrKlX25s2bWbRoEb179+bWW29l9erVrF+/njVr1nDAAQcA4TqgbfHEE08AoSWmWbNmNGvWrMT0Pn36lPiV2Jw5c7Yqo0GDBhx44IE8+eSTdOnShR49ejBy5MjiLqpTTjmFBx54gPXr1wPw2WefsXz58hJlHHfccTz99NNs3ryZZcuWMWXKlHJj35a6FCmPWoJEpFarip+0V1aPHj24+eab6dq1K7vuuiuNGjUq9TqVvfbai+7du9O2bVtOO+00+vXrV27ZmzZt4txzz2XNmjW4O0OHDmX33Xfnmmuu4bzzzuP2228vvhi7svbYYw+6devG2rVreeCBB7aaPmrUKC677DLat29PUVERPXv2LL4mKXP9J02axC677EKPHj1YvHhx8fr36dOH+fPn07VrVyBcDP3oo4+y9957F7//rLPOYtKkSbRt25bDDz+cY489dquELNOAAQMYNGgQ48ePZ/To0bouSKqEldcsKbVfQUGBz5o1K9dhJId+Ir9DzZ8/v0LdTlJSr169GDlyJAUFBbkOBQjXCjVp0oRVq1bRuXNnXnnlFfbdd9+cxVPafmVms929ZlSY7BBqCRIRkWrXv39/Vq9ezbfffst1112X0wRIkktJkIhIAlTkupvqVNPikWTShdEiIiKSSEqCREREJJGUBImIiEgiKQkSERGRRNKF0SJSu23PLQlKUwW3Kejbty/jxo0DYNy4ccVPkZ8yZQojR45kwoQJ272MKVOm0KBBg5w/Vb2wsJD+/fvzzjvv7PBlXXjhhVx11VW0adMm6zznn38+/fv3Z9CgQSXGFxYW8uqrr/K9731vR4cptYhagmooMzvQzCab2Xwze9fMrojj9zSzl8xsQfy/R65jFZGSXnjhBXbffXdWr17N3XffvUOWMWXKFF599dUdUnZNdd9995WZAJWlsLCwODEVSVESVHMVAT939yOBLsBlZtYGGAZMcvfDgElxWESqya233lr8oNShQ4cW37150qRJnHvuuQDk5eWxcuVKhg0bxsKFC8nPz+fqq68Gwk0CBw0aROvWrRkyZEjxc7QmTZpEhw4daNeuHRdccAH//e9/S5QF4an1vXr1orCwkDFjxnDHHXeQn59f/FT7lKlTp5Kfn09+fj4dOnRg3bp1rF+/nhNPPJGOHTvSrl07xo8fD4TkoHXr1lx44YW0bduWIUOG8PLLL9O9e3cOO+wwZs6cCcDw4cP5/ve/zwknnMBhhx3G2LFjt6qbTZs2cfXVV9OpUyfat2/Pn/70p22qv4kTJ9K1a1c6duzI4MGDix/B0atXL1I3fr3//vs5/PDD6dWrFz/+8Y+5/PLLi5cxbdo0unXrxiGHHMJTTz0FwLBhw5g+fTr5+fnccccdFdrWsvNTElRDuftSd38zvl4HzAcOAE4HHo6zPQwMzE2EIsnUs2fP4qRj1qxZrF+/no0bNzJjxoytHuUwYsQIDj30UObMmcNtt90GwFtvvcWdd97JvHnz+Oijj3jllVfYsGED559/Pk888QRvv/02RUVF3HPPPVljyMvL45JLLmHo0KHMmTNnq+WOHDmSP/7xj8yZM4fp06fTuHFjGjVqxLPPPsubb77J5MmT+fnPf16cgH344YdcccUVzJ07l/fee49x48YxY8YMRo4cyS233FJc7ty5c3n++ed57bXXuOGGG1iyZEmJ5d5///00a9aMN954gzfeeIOxY8fy8ccfV6r+Vq5cyU033cTLL7/Mm2++SUFBAbfffnuJMpYsWcKNN97I66+/zksvvcR7771XYvrSpUuZMWMGEyZMYNiwYcXbokePHsyZM4ehQ4dmrVtJFiVBtYCZ5QEdgH8D+7j7UgiJErB39neKSFU75phjmD17NuvWraNhw4Z07dqVWbNmMX369Ao9z6pz5860bNmSOnXqkJ+fT2FhIe+//z6tWrXi8MMPB+C8885j2rRp2xxj9+7dueqqqxg1ahSrV6+mXr16uDvXXnst7du356STTuKzzz5j2bJlALRq1Yp27dpRp04djjrqKE488UTMjHbt2lFYWFhc7umnn07jxo1p3rw5vXv3Lm4lSpk4cSKPPPII+fn5HHvssaxatYoFCxZUqv5ef/115s2bR/fu3cnPz+fhhx/mk08+KVHGzJkzOf7449lzzz2pX78+gwcPLjF94MCB1KlThzZt2hSvo0hpdGF0DWdmTYCngSvdfW3mU6rLeN9FwEUABx100I4LcGdU1RfaVtey9dyxalG/fn3y8vJ48MEH6datG+3bt2fy5MksXLiwQs80a9iwYfHrunXrUlRURFnPcKxXrx6bN28GYMOGDRWKcdiwYfTr148XXniBLl268PLLL/P666+zYsUKZs+eXbwOqfLSY6pTp07xcJ06dSgqKiqelnn+yRx2d0aPHs0pp5ySNbby6m/hwoWcfPLJPPbYY1nLKO+Zl+nro+djSlnUElSDmVl9QgL0F3d/Jo5eZmb7xen7ActLe6+73+vuBe5e0KJFi+oJWCQhevbsyciRI+nZsyc9evRgzJgx5Ofnb5UUNG3alHXr1pVbXuvWrSksLOTDDz8E4M9//jPHHx8S4ry8PGbPng3A008/XaGyFy5cSLt27fjlL39JQUEB7733HmvWrGHvvfemfv36TJ48eavWlYoYP348GzZsYNWqVUyZMoVOnTqVmH7KKadwzz33sHHjRgA++OADvvrqq63KKav+unTpwiuvvFJcF19//TUffPBBifd37tyZqVOn8uWXX1JU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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"ranges=(min(point_estimate_with_weight+point_estimate_without_weight),\\n\",\n    \"        max(point_estimate_with_weight+point_estimate_without_weight))\\n\",\n    \"plt.hist(point_estimate_with_weight,label=\\\"with sample weight\\\",bins=20,range=ranges,alpha=0.8)\\n\",\n    \"plt.hist(point_estimate_without_weight,label=\\\"without sample weight\\\",bins=20,range=ranges,alpha=0.8)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.title(\\\"Comparison of point estimates between LinearDML with or without reweighting trick (n=100)\\\")\\n\",\n    \"plt.xlabel(\\\"point estimate\\\")\\n\",\n    \"plt.ylabel(\\\"frequency\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0, 0.5, 'frequency')\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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244333yTww8/nIcffrh0vC+++IIZM2Zwxx13cM4552y13EsvvZQRI0bwxhtv8OSTT3LuuedWWP5169bRrFmz0vhLyj9x4kQWL17MzJkzmTt3LrNnz2batGll5vHUU09RWFjI22+/zX333cerr75aZnibNm2YM2cOP/3pTxk9ejQdOnTgggsuYMSIEcydO3er9SwNj5KHajKzFmY208zeMrMFZvb72H9nM3vRzBbH/zvlOlaRxuSwww5j9uzZrF+/nm233ZbDDz+cWbNm8fLLL2d0UevZsyd77bUXTZo0oaCggMLCwq3G6dq1K2eccQaPPPIIzZqFp79r165l+PDhdOnShREjRrBgwYLS8QcOHEjr1q1p27YtO+ywA0OGDAHg4IMPLjP/0047DQgJwLp161izZk2Z5b700ktcfPHFFBQU8L3vfY9169axfv36MuP069ePadOmMX36dE488USKior48ssvKSws5Dvf+Q4TJ05k4sSJdOvWjUMPPZRFixaxePHiMvOYPn06w4cPp0mTJuy+++4MHDiwzPDvf//7peu6vPUjDZ/aPFTf18BR7l5kZs2B6Wb2T+D7wCR3v8HMRgIjgV/lMlCRxqR58+Z06NCBBx98kD59+tC1a1cmT57MkiVLOPDAA6ucftttty393LRpU4qLi7ca54UXXmDatGk899xzXHvttSxYsICrr76agQMH8vTTT1NYWMiAAQPKnWeTJk1Ku5s0aVJm/ulfS0zv3rx5M6+++iotW7asMP4ePXowa9Ys9t13X4499lhWrVrFvffey2GHHQaEH1769a9/zfnnn1/hPMp7VJOqJP6K1o80fKp5qCYPimJn8/jnwEnAQ7H/Q8DQHIQn0qj179+f0aNH079/f/r168ddd91FQUHBVhfj1q1bb3XnXpXNmzezdOlSBg4cyI033siaNWsoKipi7dq1tGvXDgjtHKrjscceA8Kd/w477MAOO+xQZvhxxx1X5lsXc+fO3Woe22yzDXvvvTePP/44vXv3pl+/fowePbq01uX444/ngQceoKgonL4+/vhjVqxYUWYeRxxxBE8++SSbN2/m008/ZcqUKVXGXp11KfWXah5qwMyaArOBbwN/dvfXzWw3d/8EwN0/MbNdK5j2POA8gPbt29dVyCJ1LhtfrUyqX79+/OEPf+Dwww9n++23p0WLFuU+sthll13o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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"ranges=(min(p_value_with_weight+p_value_without_weight),max(p_value_with_weight+p_value_without_weight))\\n\",\n    \"plt.hist(p_value_with_weight,label=\\\"with sample weight\\\",range=ranges,alpha=0.8)\\n\",\n    \"plt.hist(p_value_without_weight,label=\\\"without sample weight\\\",range=ranges,alpha=0.8)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.title(\\\"Comparison of p-value between LinearDML with or without reweighting trick (n=100)\\\")\\n\",\n    \"plt.xlabel(\\\"p value\\\")\\n\",\n    \"plt.ylabel(\\\"frequency\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Overall, reweighting the sample substantially improves the ability of the DML model to approximate the experimental average treatment effect using observational data. Recall the benchmark ATE for men is around 817. The average ATE estimated by the unweighted DML model is 471 , while the average ATE from the weighted model is 584. However, adding sample weights increases the variance of the estimate. As shown in the second plot, the estimated treatment effects from the weighted model are somewhat less likely to be significantly different from zero.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Heterogeneous Treatment Effect with EconML <a id=\\\"hte\\\"></a>\\n\",\n    \"Finally, we want to learn whether we could get heterogeneous treatment effect insight using EconML, which could better tell us what kind of people are more or less responsive to this training program. We will start with using the unbiased experimental dataset, and then we are also interested to learn whether the observational dataset could recover the same findings from the \\n\",\n    \"experiment.\\n\",\n    \"\\n\",\n    \"We train a `CausalForestDML` to learn non-parametric heterogeneous treatment effect by fitting a Casual Forest as the final stage model. EconML also supports interpretability tools such as `SingleTreeCateInterpreter` to further segment the users with different responsiveness to the treatment.\\n\",\n    \"\\n\",\n    \"## Experimental Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# experimental data male\\n\",\n    \"X = None\\n\",\n    \"W = df[econml_controls_male].values\\n\",\n    \"# scale W\\n\",\n    \"cols_to_scale=6\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"W = np.hstack([scaler.fit_transform(W[:, :cols_to_scale]).astype(np.float32), W[:, cols_to_scale:]])\\n\",\n    \"T = df[\\\"treated\\\"]\\n\",\n    \"y = df[outcome_name_male]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"model_y=first_stage_reg(W, y)\\n\",\n    \"model_t=first_stage_clf(W, T)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x26eebafb0c8>\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est=CausalForestDML(model_y=model_y,model_t=model_t,discrete_treatment=True, mc_iters=5,cv=5)\\n\",\n    \"est.fit(y,T,X=W,W=None)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"# We interpret the CATE models behavior on the distribution of heterogeneity features\\n\",\n    \"intrp.interpret(est, W)\\n\",\n    \"# plot\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=econml_controls_male, fontsize=12)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Observational Control - CPS3\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = None\\n\",\n    \"W = df_cps[econml_controls_male].values\\n\",\n    \"# scale W\\n\",\n    \"cols_to_scale=6\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"W = np.hstack([scaler.fit_transform(W[:, :cols_to_scale]).astype(np.float32), W[:, cols_to_scale:]])\\n\",\n    \"T = df_cps[\\\"treated\\\"]\\n\",\n    \"y = df_cps[outcome_name_male]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"model_y=first_stage_reg(W, y)\\n\",\n    \"model_t=first_stage_clf(W, T)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x26eecb6fd08>\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est=CausalForestDML(model_y=model_y,model_t=model_t,discrete_treatment=True, mc_iters=5,cv=5)\\n\",\n    \"est.fit(y,T,X=W,W=None)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABYEAAAEeCAYAAADcsNowAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3yO1//H8deRhEQQCREZQowQq0XN2rNq76JaunToUupLh2qVWlWqS/vrJlaL0pbaYq8qVXuF2JtIyDi/P+70TlOzhFvi/Xw8zuOR61znXNfnCrnv3J+c63MZay0iIiIiIiIiIiIikjllcXUAIiIiIiIiIiIiInLrKAksIiIiIiIiIiIikokpCSwiIiIiIiIiIiKSibm7OgARERERyViMMYHu7u5P5cyZs6W1NifG1RHdNRKTkpJ+P3vm7Fhr7QJXByMiIiIiGYfRg+FERERE5HoZYwpkz559TZt2bXK3atMqq6+vL8YoC3w7XExIYO3qNXboe8Pizp09+/LFixfHujomEREREckYlAQWERERkevm7e095tHHunYfPHSw7ihzkW1bt1GjSvXYCxcu+FlrL7o6HhERERG586kmsIiIiIhcN3d39+YdHmqvBLALhRcPp0BoaBJQ0dWxiIiIiEjGoCSwiIiIiFy3xMTEXPkCAlwdxl0vf/4AC/i5Og4RERERyRiUBBYRERGR/yQ9agBXqVCZYP8gZ8uT048ObTpcMm789+PJnd2Hb7/65qbPeaMuXLjAc92fo0BACOGFijFm9Jgrjl28aDHVKlYlNDCUsJBCdO7QmQMxB5z7T544QbcuXSlcIIzCBcJ4stsTnDlzBoAd23fQsV1HioQWplBwQVo3b8X2bdsvex6TRXWYRUREROT6KQksIiIiIukqMTHxmmNWrF1JzNEDxBw9wP4jMYQUCKFl65Zpxpw6eZKRw98nomTEDcdy5PCRG577t/feHcyunTvZuGUjM2bNZPT7o5j729zLji1RogQ/TP+R6IPRbNm5lSJFC9PzxZ7O/QMHDOTUqVOs3/QHv/+5niNHjvDeu+8BcPrUaRo3acya9WvYvmcH5StUoFP7jjcdv4iIiIiIksAiIiIictPKlCjDByNGUq1SNYLyBpKYmMjqVatpWKcBoYGh3F/5fqIWR1127tIlSzl29BjNWzZP0z/gzQF0f6Y7fnny/KdYEhISmPnTTDq260j5MuVu+Jr+NmHcBHr/rze5fX0pXqI4j3R7lPHfj7vs2HwB+QgMCnRuu7m5sXvXLuf23j17adK0Cbly5cLHx4emzZqxZfNmACpUrMAjXR/B188PDw8Pnnv+WbZv286J4ydu+hpERERE5O6mJLCIiIiIpIspk35g0o+T2HswmiOHj9C+dTt69enNnpg9DBz0Do906sKxo8cumRf5fSTNW7XA29vb2bd29Vp+X/c7jz35+HWff9Ofm+jXpx8RRUsw6v0PaNCwPn9u2+TcP3L4+4QGhl6xXc6pkyc5ePAgpcuUcfaVKVuaLZu3XDGOffv2ERoYSn6/AD784ENeePlF574nuj/J7F9nc+rkSU6dPMlP06dTv2GDyx5n6ZJlBAQE4JdHpX9FRERE5Oboyc4iIiIiki66P9udkJAQAD6b8CkNGjWk4QMNAahTry7lypfjt9m/0enhTs4558+f56dp0xk/OdLZl5SUxCsv9WTo+8PIkuXaaxYWLVxE/9fe5OiRo3To2IFf58yiWHixS8a93KsnL/fqeZkjXNm52FgAcvnkcvblypWLs2fPXXFOgQIFiD4YzckTJ/jmq28ILx7u3HfPvfdwMeEiYSFhANSqU4snnnrikmPE7I+h98u9eHfIoP8Ur4iIiIjI5WglsIiIiIiki5CQYOfX+6L3Mf3HaWlW2q5YtoLDhw6lmTNj+gxy+/pSvUZ1Z98XY7+gVOnSVKpc6brOe+zoUXbt2k1EyQhKly1NgdAC6XNBQI6U1clnz5x19p05e5acOXNcc66vnx8dO3eiU/uOzjrJXR9+lKJFi7L/SAz7Du8nLCyMpx578l/Xc4zWzVvx+FOP07Z923S7FhERERG5eykJLCIiIiLpwhjj/Do4JJgOHTsQfTDa2Q4cO3jJStzIceN5qNNDaeYuWrCImTNmEF6oGOGFirFqxUpe7/s6vV/uddnztmnXlm27t/FQ54589813lChSnBeefZ5lS5dhrXWOGzF0OMH+QVdsl5Pb15f8+fPz58aNzr4/N/xJiYgS1/U9SUxM5OiRo5w9c8Yxd+OfdH28G97e3uTIkYNuTzzGnNlznONPnTxJq2YtadykMb369L6uc4iIiIiIXIuSwCIiIiKS7tp37MCsX2Yxb85ckpKSiI+PJ2pxFDH7Y5xjYvbHELUoik4Pd0wz9+OxH7Nq3WqiViwhasUSypUvx6v9+vD6W29c8Xyenp60bd+WqTOmsWTlUkILhvL8Mz0oV/pe55hXXu1FzNEDV2xX8lDnhxg2ZDinTp5k29ZtfPvVN3R6uPNlx/407Se2b9tOcnIyx44e47X/9aPsPWXx9XPU9S1XoTzffv0tcXFxxMXF8c2XX1O6TGkAzpw5Q+vmralStQpvvTPg2t9kEREREZHrpCSwiIiIiKS7kJAQxk+KZMSw9ykSWphS4SX5cORokm2yc8zEyAlUqlyJsMKF08zNnTs3AfkDnM0ja1Zy5cyJj4/PdZ+7V5/erN2wjk8+//Smr6Xv6/0ICwujTIkyNGn0IM+//AL1G9Z37g/2D2LZ0mUAHDx4kDYtWhOSL5hqFauSJUsWvp84zjl2zKdjiN4bTcliEUQULcGe3Xv4eOwnAMz8aSbr1q5j3Hfj0qxQ3rdv301fg4iIiIjc3cw/b5ETEREREbkab2/vU2s3rPMJDAp0dSh3tWaNm56OWhTVxVo7w9WxiIiIiMidTyuBRURERERERERERDIxJYFFREREREREREREMjElgUVEREREREREREQyMSWBRURERERERERERDIxJYFFREREJMN75qlnGPjWO64OQ0RERETkjqQksIiIiIhIOqpSoTLB/kHOlienHx3adABgx/YddGzXkSKhhSkUXJDWzVuxfdv2NPP37N5Nh9btCckXTOECYbz52huuuAwRERERyUSUBBYRERERSUcr1q4k5ugBYo4eYP+RGEIKhNCydUsATp86TeMmjVmzfg3b9+ygfIUKdGrf0Tn34sWLtGzakhq1a7J19zb+2r6Z9g91cNWliIiIiEgmoSSwiIiIiNyUD0aMJKJICULyBXPfPRVYtGAhAGtXr6VB7fqEBoZSPCyc3i/34uLFi855ubP78MVnn1O+TDlC8gUzcMBAdu/aRYPa9SkQEELXhx91jo9aHEXJohGMGDqcwgXCKFOiDJMmTLpiTLN+mUX1ytUJDQylYZ0G/Lnxz2vGeyssXbKUY0eP0bxlcwAqVKzAI10fwdfPDw8PD557/lm2b9vOieMnABj/3TgCAwPp8UIPvL298fT0pHSZ0rcsPhERERG5O7i7OgARERERybi2b9vO559+zvyoBQQGBbJ3716Sk5IAcHPLwqChgylXvhwxMTG0a9mWL8Z+wbM9nnXOnztnHguXLiJmfwy1qtVk1cqVfP7V5/j6+dGwTgOmTJpCp4c7AXD48GGOHz/B5h1bWL1qNe1btaNc+XIUCy+WJqb1v6+nxzPPMWHyRMpVKMfEyIl0bNeRNX+sIXpv9BXj/beRw99n5IgPrnjt0Qejr/n9ifw+kuatWuDt7X3Z/UuXLCMgIAC/PH4ArF61hgIFQ2nbog3r1q0jomRJho4YSqnSpa55LhERERGRK9FKYBERERG5YW5uWbhw8QJbt2whISGBggULEla4MAD3li9HxUoVcXd3p2DBgnR9vBtLo5ammf/SKy+RK1cuIkpGEFEygrr16lIoLAwfHx/qN2zAhj82pBn/2puvkS1bNqrXqE7DBxoy9Yepl8T07Vff0PWxbtxX6T7c3Nzo9HAnsmXLyupVq68a77+93Ksn0Qejr9iu5fz58/w0bbozif1vMftj6P1yL94dMsjZd+BADD9O/oHuzz7Nlp1bafRAQzq175hmBbWIiIiIyH+lJLCIiIiI3LDCRYoweOh7vPfuexQtWITHHunGwQMHAcdD0Dq0bk94oWIUCAjhnf5vc+L48TTz8+Xzd37t5eWFf758qduensSeO+fczu2bO82K2gKhBTh08OAlMe2L3sdHo8cQGhjqbDH7Yzh08NBV401vM6bPILevL9VrVL9k37Gjx2jdvBWPP/U4bdu3dfZ7enpRpVpVGjRqQNasWXn+pRc4eeIkW7dsvSUxioiIiMjdQUlgEREREbkp7Tq0Y9a82Wzc8ifGGPq/0R+Ani++TLHixVi7cR37Du/njQFvYq294fOcOnmK2NhY5/b+ffvJHxh4ybjgkGBeefWVNKt2Dx4/5Ey2XinefxsxdDjB/kFXbNcSOW48D3V6CGPMv67jJK2ataRxk8b06tM7zb5SpUvxr+EiIiIiIjdNSWARERERuWHbt21n0cJFXLhwAU9PTzw9vXBzcwPg3Nlz5MyZixw5crBt6za+/Pz/bvp8gwcO4uLFiyxbuozZv86mZeuWl4x5tNujfPXFV6xZtQZrLbGxscz+dTZnz569arz/9sqrvYg5euCK7Wpi9scQtSiKTg93TNN/5swZWjdvTZWqVXjrnQGXzOvQsQNrVq1h4fwFJCUl8fGYj/HL40fxEsX/w3dJRERERCQtPRhORERERG7YhQsXGPDGW2zbug13D3cqV67MB2NGAfDO4IG81ONFRo8cRdl7ytKqTWuiFi2+4XMFBASQO3duShQpTnav7Lw/eiThxcMvGVeuQnlGfTSa3j17sXPnLrw8PalSrQrVqle7arzpaWLkBCpVrnRJveGZP81k3dp1bNm8hfHfj3f2r1i3kgIFClAsvBif/d9YXn7hZY4dPUbZe+8hcvIEsmbNmu4xioiIiMjdw9zMLXkiIiIicnfx9vY+tXbDOp/AoEvLMNxKUYuj6P7YU/y1Y/NtPe+dqlnjpqejFkV1sdbOcHUsIiIiInLnUzkIERERERERERERkUxMSWARERERERERERGRTExJYBERERG549WoWUOlIEREREREbpCSwCIiIiIiIiIiIiKZmJLAIiIiIiIiIiIiIpmYksAiIiIicltNnjiZ2vfXItg/iOJh4bRt0Ybly5anGTPuu3Hkzu7D1B9+BGDZ0mUE+wcR7B9EUN5Acmf3cW4H+wexb98+mjRqQoBvvjT9Hdp0cMUlioiIiIjcUdxdHYCIiIiI3D3GjB7DByNG8v6okdRrUI+sWbMy97e5/DLzZ6pWq+ocFzkuEl8/XyK/j6RVm9ZUu78aMUcPALB3717uiSjL3oPRuLun/XV22PvDeKTbo7f1mkRERERE7nRaCSwiIiIit8Xp06cZ/M4gho8cTvOWzfH29sbDw4PGTRrzzqCBznHR0dEsjVrCB2NGMW/uPI4cPpLusYz7bhyN6jak76t9CQ0M5Z6SZVm5YiXjvhtHqWIlKVqwCOO/H+8cf+HCBV7v+xqlw0tRrFBRXn7+JeLi4gA4dfIkHVq3p0hoYQoGhdKhdXti9sc45zZp1ISBAwbSqG5DQvIF06pZS44fO57u1yQiIiIiciVKAouIiIjIbbF65Wri4+Np2rzZVcdNGDeBcuXL0aJlC4qXKM6kiZNuSTxrVq+hVOlS7N6/m3bt2/H4I4/x+9p1rPvzd8b+31he7dmbc+fOAdD/9f7s2L6TqBVRrNv4OwcOHGTo4CEAJCdbOj3SmY1b/uTPrZvw9PKkd8/eac41ZdJkPvrsY7bv3cHFiwl8OGr0LbkmEREREZHLURJYRERERG6LEydOkCdPnktKOPzbhPGRtO3QDoC27dsSOS7yus/Rp1cfQgNDnW3ggIFXHFuwUEEefuRh3NzcaNW2Nfv37+fVvn3Ili0bdevXwyOrB7t27sJay7dffcPgoYPw9fMjZ86cvPLqK/ww+QcA/PL40aJlC7Jnz56yrxdLlyxJc67OXR6maLGieHl50ap1Szb+sfG6r0lERERE5GapJrCIiIiI3BZ+fn4cP36cxMTEKyaCVyxfwd49e2nTtg0AbTu045233mHDHxsoe0/Za55jyPAh110TOF++fM6vvbw8HX0B/+jz9CI2NpZjR49x/vx5at1fO3WytSQlJQFw/vx5+r3al7lz5nH61CkAzp49S1JSEm5ubgAE/PO42bMTGxt7XTGKiIiIiKQHJYFFRERE5LaoWLkinp6e/DxjJi1atbzsmMjvx2OtpUaV6mn6J4yfcF1J4FshT948eHl5sWLNCoKCgy7ZP2bUGLZv38G8RfMIyB/Ahj82ULNqDay1LohWRERERORSKgchIiIiIreFj48Pfd/oR6+XezHzp5mcP3+ehIQE5syew5uvvUF8fDxTf5zGB2NGEbViibMNHTGMyRMnkZiY6JK4s2TJwiPdHqVfn74cPXIUgAMxB5g3Zy4A586dxcvTE5/cPpw8cYIhg4a4JE4RERERkStRElhEREREbpseL/Tg3fcGMXzIMIqGFqFUsZJ8/ulYmjRrys8zZuLl6UnHzh0JyB/gbF26diEpKYm5v8295vF79+xNsH+Qs9WqVjNd4h4wcACFCxemfu16FAgIoWXTFmzfvgOAZ557lrj4eIoUKEz92vWp36BeupxTRERERCS9GN2mJiIiIiLXy9vb+9TaDet8AoMCXR3KXa1Z46anoxZFdbHWznB1LCIiIiJy59NKYBEREREREREREZFMTElgERERERERERERkUxMSWARERERERERERGRTExJYBEREREREREREZFMTElgERERERERERERkUxMSWARERERERERERGRTExJYBERERG544z9ZCy1769Fvtz+PPPUM2n2ffvVN5QrfS/B/kG0ad6agwcOXjL/4sWLVLz3PkoWjbiu87337nvkzu7DwvkLnH2DBw4mb648BPsHOdue3bud+wcOGEi1ilXJk9OPwQMH3+CVioiIiIjcekoCi4iIiMgdJ39gfnr16c3Djzycpn9J1BLefuttxk+KZHfMHgoWKsjjXR+/ZP7okaPI6+9/XefavWsXP02bTv78+S/Z17pta2KOHnC2QmFhzn2FixRmwMC3afhAo/94dSIiIiIit5eSwCIiIiJy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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"# We interpret the CATE models behavior on the distribution of heterogeneity features\\n\",\n    \"intrp.interpret(est, W)\\n\",\n    \"# plot\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=econml_controls_male, fontsize=12)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the experimental tree plot we see this training program has higher positive effects for older workers with lower income before the training. Workers with relatively higher income in the pre-period experience a small and imprecise effect of training. While the exact splits are somewhat different in the observational sample, the main message is the same: the training is most effective for workers with lower pre-period earnings and, within that set, for older workers. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Conclusion <a id=\\\"conclusion\\\"></a>\\n\",\n    \"\\n\",\n    \"In this notebook, we have demonstrated the power of using EconML to:\\n\",\n    \"\\n\",\n    \"* Outperform the traditional OLS method on estimating ATE under some settings.\\n\",\n    \"* Substantially improve performance when reweighting samples with analytical confidence intervals.\\n\",\n    \"* Learn treatment effect heterogeneity and recover the same insight from using observational dataset.\\n\",\n    \"\\n\",\n    \"To learn more about what EconML can do for you, visit our [website](https://aka.ms/econml), our [GitHub page](https://github.com/py-why/EconML) or our [documentation](https://www.pywhy.org/EconML/). \"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/Double Machine Learning Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Double Machine Learning: Use Cases and Examples\\n\",\n    \"\\n\",\n    \"Double Machine Learning (DML) is an algorithm that applies arbitrary machine learning methods\\n\",\n    \"to fit the treatment and response, then uses a linear model to predict the response residuals\\n\",\n    \"from the treatment residuals.\\n\",\n    \"\\n\",\n    \"The EconML SDK implements the following DML classes:\\n\",\n    \"* LinearDML: suitable for estimating heterogeneous treatment effects.\\n\",\n    \"* SparseLinearDML: suitable for the case when $W$ is high dimensional vector and both the first stage and second stage estimate are linear.\\n\",\n    \"\\n\",\n    \"In ths notebook, we show the performance of the DML on both synthetic data and observational data.\\n\",\n    \"\\n\",\n    \"**Notebook contents:**\\n\",\n    \"\\n\",\n    \"1. Example usage with single continuous treatment synthetic data\\n\",\n    \"2. Example usage with single binary treatment synthetic data\\n\",\n    \"3. Example usage with multiple continuous treatment synthetic data\\n\",\n    \"4. Example usage with single continuous treatment observational data\\n\",\n    \"5. Example usage with multiple continuous treatment, multiple outcome observational data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"## Ignore warnings\\n\",\n    \"import warnings\\n\",\n    \"warnings.filterwarnings(\\\"ignore\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Main imports\\n\",\n    \"from econml.dml import DML, LinearDML, SparseLinearDML, CausalForestDML\\n\",\n    \"\\n\",\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"from itertools import product\\n\",\n    \"from sklearn.linear_model import (Lasso, MultiTaskElasticNetCV)\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor,RandomForestClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from sklearn.model_selection import train_test_split\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Example Usage with Single Continuous Treatment Synthetic Data and Model Selection\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.1. DGP \\n\",\n    \"We use the data generating process (DGP) from [here](https://arxiv.org/abs/1806.03467). The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T =& \\\\langle W, \\\\beta\\\\rangle + \\\\eta, & \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y =& T\\\\cdot \\\\theta(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, &\\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim& \\\\text{Normal}(0,\\\\, I_{n_w})\\\\\\\\\\n\",\n    \"X \\\\sim& \\\\text{Uniform}(0,1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders and $\\\\beta, \\\\gamma$ have high sparsity.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = \\\\exp(2\\\\cdot x_1).\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Treatment effect function\\n\",\n    \"def exp_te(x):\\n\",\n    \"    return np.exp(2*x[0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 2000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 1\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(np.arange(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = np.array([exp_te(x_i) for x_i in X])\\n\",\n    \"T = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"Y = TE * T + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"Y_train, Y_val, T_train, T_val, X_train, X_val, W_train, W_val = train_test_split(Y, T, X, W, test_size=.2)\\n\",\n    \"# Generate test data\\n\",\n    \"X_test = np.array(list(product(np.arange(0, 1, 0.01), repeat=n_x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.2. Train Estimator\\n\",\n    \"We train models in three different ways, and compare their performance.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 1.2.1. Default Setting\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=RandomForestRegressor(),\\n\",\n    \"                model_t=RandomForestRegressor(),\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred = est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 1.2.2. Polynomial Features for Heterogeneity\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"The number of features in the final model (< 5) is too small for a sparse model. We recommend using the LinearDML estimator for this low-dimensional setting.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"est1 = SparseLinearDML(model_y=RandomForestRegressor(),\\n\",\n    \"                       model_t=RandomForestRegressor(),\\n\",\n    \"                       featurizer=PolynomialFeatures(degree=3),\\n\",\n    \"                       random_state=123)\\n\",\n    \"est1.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred1 = est1.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 1.2.3. Polynomial Features with regularization \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = DML(model_y=RandomForestRegressor(),\\n\",\n    \"           model_t=RandomForestRegressor(),\\n\",\n    \"           model_final=Lasso(alpha=0.1, fit_intercept=False),\\n\",\n    \"           featurizer=PolynomialFeatures(degree=10),\\n\",\n    \"           random_state=123)\\n\",\n    \"est2.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred2 = est2.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 1.2.4 Non-Parametric Heterogeneity with Causal Forest\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est3 = CausalForestDML(model_y=RandomForestRegressor(),\\n\",\n    \"                       model_t=RandomForestRegressor(),\\n\",\n    \"                       criterion='mse', n_estimators=1000,\\n\",\n    \"                       min_impurity_decrease=0.001,\\n\",\n    \"                       random_state=123)\\n\",\n    \"est3.tune(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"est3.fit(Y_train, T_train, X=X_train, W=W_train)\\n\",\n    \"te_pred3 = est3.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred, label='DML default')\\n\",\n    \"plt.plot(X_test, te_pred1, label='DML polynomial degree=3')\\n\",\n    \"plt.plot(X_test, te_pred2, label='DML polynomial degree=10 with Lasso')\\n\",\n    \"plt.plot(X_test, te_pred3, label='ForestDML')\\n\",\n    \"expected_te = np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.plot(X_test, expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.4. Model selection\\n\",\n    \"\\n\",\n    \"For the three different models above, we can use score function to estimate the final model performance. The score is the MSE of the final stage Y residual, which can be seen as a proxy of the MSE of treatment effect.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'DML default': 1.815769478666336,\\n\",\n       \" 'DML polynomial degree=3': 1.6913528143752934,\\n\",\n       \" 'DML polynomial degree=10 with Lasso': 2.222578476206349,\\n\",\n       \" 'ForestDML': 1.9002757666765648}\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"score={}\\n\",\n    \"score[\\\"DML default\\\"] = est.score(Y_val, T_val, X_val, W_val)\\n\",\n    \"score[\\\"DML polynomial degree=3\\\"] = est1.score(Y_val, T_val, X_val, W_val)\\n\",\n    \"score[\\\"DML polynomial degree=10 with Lasso\\\"] = est2.score(Y_val, T_val, X_val, W_val)\\n\",\n    \"score[\\\"ForestDML\\\"] = est3.score(Y_val, T_val, X_val, W_val)\\n\",\n    \"score\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"best model selected by score:  DML polynomial degree=3\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"best model selected by score: \\\",min(score,key=lambda x: score.get(x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'DML default': 0.3565984526892961,\\n\",\n       \" 'DML polynomial degree=3': 0.257796113358552,\\n\",\n       \" 'DML polynomial degree=10 with Lasso': 0.26248739267870214,\\n\",\n       \" 'ForestDML': 0.42857317657348887}\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"mse_te={}\\n\",\n    \"mse_te[\\\"DML default\\\"] = ((expected_te - te_pred)**2).mean()\\n\",\n    \"mse_te[\\\"DML polynomial degree=3\\\"] = ((expected_te - te_pred1)**2).mean()\\n\",\n    \"mse_te[\\\"DML polynomial degree=10 with Lasso\\\"] = ((expected_te - te_pred2)**2).mean()\\n\",\n    \"mse_te[\\\"ForestDML\\\"] = ((expected_te - te_pred3)**2).mean()\\n\",\n    \"mse_te\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"best model selected by MSE of TE:  DML polynomial degree=3\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"best model selected by MSE of TE: \\\", min(mse_te, key=lambda x: mse_te.get(x)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.5 Changing only Final Stage Model Specification and Refitting\\n\",\n    \"\\n\",\n    \"It is also feasible to change the parameters of the estimator and only fit the final stage model using the existing first stage residual calculation. To enable this feature, the `fit` method should be called with the flag `cache_values=True`, so that the original fit data and their corresponding first stage estimates be stored in the model. This can be done for any estimator in the dml module. We portray an example below, using the `DML` estimator.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Final model doesn't have a `coef_stderr_` and `intercept_stderr_` attributes, only point estimates will be available.\\n\",\n      \"Final model doesn't have a `coef_stderr_` and `intercept_stderr_` attributes, only point estimates will be available.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>      <td>5.953</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>       <td>0.5</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"Coefficient Results\\n\",\n       \"=================\\n\",\n       \"   point_estimate\\n\",\n       \"-----------------\\n\",\n       \"X0          5.953\\n\",\n       \"    CATE Intercept Results   \\n\",\n       \"=============================\\n\",\n       \"               point_estimate\\n\",\n       \"-----------------------------\\n\",\n       \"cate_intercept            0.5\\n\",\n       \"-----------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = DML(model_y=RandomForestRegressor(),\\n\",\n    \"          model_t=RandomForestRegressor(),\\n\",\n    \"          model_final=Lasso(alpha=0.1, fit_intercept=False),\\n\",\n    \"          featurizer=PolynomialFeatures(degree=1, include_bias=False),\\n\",\n    \"          random_state=123)\\n\",\n    \"est.fit(Y_train, T_train, X=X_train, W=W_train, cache_values=True)\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>       <td>-0.054</td>      <td>0.685</td> <td>-0.079</td>  <td>0.937</td>   <td>-1.18</td>    <td>1.072</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0^2</th>      <td>7.253</td>      <td>0.695</td> <td>10.437</td>   <td>0.0</td>    <td>6.11</td>     <td>8.396</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>1.289</td>      <td>0.154</td> <td>8.374</td>   <td>0.0</td>    <td>1.036</td>    <td>1.542</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                    \\n\",\n       \"==========================================================\\n\",\n       \"     point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"----------------------------------------------------------\\n\",\n       \"X0           -0.054  0.685 -0.079  0.937    -1.18    1.072\\n\",\n       \"X0^2          7.253  0.695 10.437    0.0     6.11    8.396\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          1.289  0.154 8.374    0.0    1.036    1.542\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import DebiasedLasso\\n\",\n    \"est.featurizer = PolynomialFeatures(degree=2, include_bias=False)\\n\",\n    \"est.model_final = DebiasedLasso(fit_intercept=False)\\n\",\n    \"est.refit_final()\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>       <td>-0.068</td>      <td>0.759</td> <td>-0.089</td>  <td>0.929</td>  <td>-1.316</td>    <td>1.18</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0^2</th>      <td>7.26</td>       <td>0.744</td>  <td>9.761</td>   <td>0.0</td>    <td>6.037</td>    <td>8.484</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>1.29</td>       <td>0.159</td> <td>8.116</td>   <td>0.0</td>    <td>1.029</td>    <td>1.552</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                    \\n\",\n       \"==========================================================\\n\",\n       \"     point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"----------------------------------------------------------\\n\",\n       \"X0           -0.068  0.759 -0.089  0.929   -1.316     1.18\\n\",\n       \"X0^2           7.26  0.744  9.761    0.0    6.037    8.484\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept           1.29  0.159 8.116    0.0    1.029    1.552\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\\n\",\n    \"est.model_final = StatsModelsLinearRegression(fit_intercept=False)\\n\",\n    \"est.refit_final()\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"CATE Intercept Results:  No intercept was fitted!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>   <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>        <td>5.566</td>      <td>0.347</td> <td>16.029</td>   <td>0.0</td>    <td>4.995</td>    <td>6.137</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0^2</th>      <td>2.243</td>      <td>0.451</td>  <td>4.975</td>   <td>0.0</td>    <td>1.501</td>    <td>2.984</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                   Coefficient Results                    \\n\",\n       \"==========================================================\\n\",\n       \"     point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"----------------------------------------------------------\\n\",\n       \"X0            5.566  0.347 16.029    0.0    4.995    6.137\\n\",\n       \"X0^2          2.243  0.451  4.975    0.0    1.501    2.984\\n\",\n       \"----------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import StatsModelsRLM\\n\",\n    \"est.model_final = StatsModelsRLM(fit_intercept=False)\\n\",\n    \"est.fit_cate_intercept = False\\n\",\n    \"est.refit_final()\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Final model doesn't have a `prediction_stderr` method, only point estimates will be returned.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>0.697</td>  \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>0.398</td>        <td>0.075</td>           <td>1.319</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x137774de2e8>\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.model_final = Lasso(fit_intercept=False)\\n\",\n    \"est.refit_final()\\n\",\n    \"est.effect_inference(X).population_summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Example Usage with Single Binary Treatment Synthetic Data and Confidence Intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1. DGP \\n\",\n    \"We use the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T \\\\sim & \\\\text{Bernoulli}\\\\left(f(W)\\\\right), &\\\\; f(W)=\\\\sigma(\\\\langle W, \\\\beta\\\\rangle + \\\\eta), \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y = & T\\\\cdot \\\\theta(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, & \\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim & \\\\text{Normal}(0,\\\\, I_{n_w}) & \\\\\\\\\\n\",\n    \"X \\\\sim & \\\\text{Uniform}(0,\\\\, 1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders, $\\\\beta, \\\\gamma$ have high sparsity and $\\\\sigma$ is the sigmoid function.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta(x) = \\\\exp( 2\\\\cdot x_1 ).\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Treatment effect function\\n\",\n    \"def exp_te(x):\\n\",\n    \"    return np.exp(2 * x[0])# DGP constants\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 1000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 4\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(range(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE = np.array([exp_te(x_i) for x_i in X])\\n\",\n    \"# Define treatment\\n\",\n    \"log_odds = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"T_sigmoid = 1/(1 + np.exp(-log_odds))\\n\",\n    \"T = np.array([np.random.binomial(1, p) for p in T_sigmoid])\\n\",\n    \"# Define the outcome\\n\",\n    \"Y = TE * T + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"\\n\",\n    \"# get testing data\\n\",\n    \"X_test = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"X_test[:, 0] = np.linspace(0, 1, n)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=RandomForestRegressor(),\\n\",\n    \"                model_t=RandomForestClassifier(min_samples_leaf=10),\\n\",\n    \"                discrete_treatment=True,\\n\",\n    \"                cv=6)\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred = est.effect(X_test)\\n\",\n    \"lb, ub = est.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est2 = SparseLinearDML(model_y=RandomForestRegressor(),\\n\",\n    \"                       model_t=RandomForestClassifier(min_samples_leaf=10),\\n\",\n    \"                       discrete_treatment=True,\\n\",\n    \"                       featurizer=PolynomialFeatures(degree=2),\\n\",\n    \"                       cv=6)\\n\",\n    \"est2.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred2 = est2.effect(X_test)\\n\",\n    \"lb2, ub2 = est2.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est3 = CausalForestDML(model_y=RandomForestRegressor(),\\n\",\n    \"                       model_t=RandomForestClassifier(min_samples_leaf=10),\\n\",\n    \"                       discrete_treatment=True,\\n\",\n    \"                       n_estimators=1000,\\n\",\n    \"                       min_impurity_decrease=0.001,\\n\",\n    \"                       verbose=0,\\n\",\n    \"                       cv=6)\\n\",\n    \"est3.tune(Y, T, X=X, W=W)\\n\",\n    \"est3.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred3 = est3.effect(X_test)\\n\",\n    \"lb3, ub3 = est3.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([0.99117512, 0.00264324, 0.00244716, 0.00373448])\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est3.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA6YAAAF3CAYAAAC2f1ZIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOy9ebhkVXX3/9lnqKo739vzRE8Mzdg00EyigqKgRsF5jhqj6M/EMeY1JtFoom8S3yQSfaOG1+AQjUEJKEJU1IADIkgzNFNDQ3fT83j7zlV1hr1/f+xzTp26czd37F6f57nPvXWq6pxzG2rdvfZa6/tVxhgEQRAEQRAEQRAEYbpwpvsGBEEQBEEQBEEQhOMbSUwFQRAEQRAEQRCEaUUSU0EQBEEQBEEQBGFakcRUEARBEARBEARBmFYkMRUEQRAEQRAEQRCmFUlMBUEQBEEQBEEQhGlFElNBEIRxoJS6Xim1Xyn1SO7YHKXUT5VSm5PvHdN5j4IgCIIgCLMVSUwFQRDGx9eBlww69mfAz40xJwM/Tx4LgiAIgiAIR4gyxkz3PQiCIMwKlFIrgVuNMWcmj58ALjPG7FFKLQbuNMasmc57FARBEARBmI1IxVQQBOHoWWiM2QOQfF8wzfcjCIIgCIIwK/Gm+wbyzJs3z6xcuXK6b0MQhBnEhg0bDhpj5k/3fTxblFLXANcANDU1nXfqqadO8x0JgjCTOFZiXR5Z1wmCMJjRYt2MSkxXrlzJfffdN923IQjCDEIp9cx038Mo7FNKLc618u4f6YXGmOuA6wDWr19vJNYJgpBnhse6o0LWdYIgDGa0WCetvIIgCEfPLcDbk5/fDvxgGu9FEARBEARh1iKJqSAIwjhQSn0HuBtYo5TaqZT6Q+DvgBcrpTYDL04eC4IgCIIgCEfIjGrlFQRBmKkYY940wlOXT+mNCIIgCIIgHIPM+MQ0DEN27txJpVKZ7ls5JimVSixbtgzf96f7VgRBEI5r5O/d8YH83RWEmYHE3MnlaGLdjE9Md+7cSUtLCytXrkQpNd23c0xhjOHQoUPs3LmTVatWTfftCIIgHNfI37tjH/m7KwgzB4m5k8fRxroZP2NaqVSYO3eu/A8zCSilmDt3ruwUCYIgzADk792xj/zdFYSZg8TcyeNoY92MT0wB+R9mEpF/W0EQhJmDxORjH/lvLAgzB/k8Th5H8287KxLT6aa5uXnIsa985St885vfnPRrr1y5krPOOouzzjqL008/nb/8y7+kWq0CsG3bNpRSfOITn8hef/DgQXzf54//+I8B+NSnPsU//MM/TPp9CoIgCMcGn/3sZznjjDNYu3Yt69at45577pnye1i5ciUHDx6sO3bLLbfwd383+cLXl112GWvWrGHt2rWceuqp/PEf/zFdXV3Z80opfv/3fz97HEUR8+fP5+UvfzkAX//617O/wYIgCKPhui7r1q3LvrZt2zYp17nzzjv5zW9+kz3+1Kc+xdKlS1m3bh0nn3wyr371q3nsscey5y+77DKWL1+OMSY79spXvjLLibZt28aZZ5454fcpielR8t73vpe3ve1tk3Z+YwxaawDuuOMOHn74Ye699162bNnCNddck71u9erV3Hrrrdnj733ve5xxxhmTdl+CIAjCscvdd9/Nrbfeyv3338/GjRv52c9+xgknnPCszhlF0YTc21VXXcWf/dmfTci5RiKOYwC+/e1vs3HjRjZu3EixWOTqq6/OXtPU1MQjjzxCuVwG4Kc//SlLly6d1PsSBOHYpKGhgQcffDD7Wrly5bjed6RxdXBiCvDhD3+YBx98kM2bN/OGN7yBF77whRw4cCB7vr29nbvuuguArq4u9uzZc0TXPBokMT1K8pXIyy67jI997GNccMEFnHLKKfzqV78C7B+4P/3TP+X8889n7dq1/Ou//isAfX19XH755Zx77rmcddZZ/OAHPwDs7sNpp53G+973Ps4991x27NhRd83m5ma+8pWv8P3vf5/Ozk7A/g992mmncd999wFwww038PrXv35K/g0EQRCEY4s9e/Ywb948isUiAPPmzWPJkiWsXLky+zt3wQUX8NRTTwHwwx/+kAsvvJBzzjmHF73oRezbtw+wfyOvueYarrjiCt72trfx6KOPcsEFF7Bu3TrWrl3L5s2bAfjWt76VHX/Pe96TJYbDka9EvuMd7+ADH/gAz3nOc1i9ejU33nhj9rr/83/+T/Z396/+6q+y46985Ss577zzOOOMM7juuuuy483NzXzyk5/kwgsv5O677667ZqFQ4HOf+xzbt2/noYceyo6/9KUv5bbbbgPgO9/5Dm9600huUoIgCEfGgw8+yEUXXcTatWt51atexeHDhwGbb/z5n/85l156Kf/8z//Mhg0buPTSSznvvPO48sors8TxC1/4Aqeffjpr167ljW98I9u2beMrX/kKn//851m3bl2Wp+R5wxvewBVXXMF//Md/ZMfe+MY38p//+Z8A3HTTTbz61a+e9N99xqvy5rl14272dE2sYMDi9hIvX7vkWZ8niiLuvfde/vu//5tPf/rT/OxnP+Pf/u3faGtr43e/+x3VapVLLrmEK664ghNOOIGbb76Z1tZWDh48yEUXXcRVV10FwBNPPMHXvvY1vvSlLw17ndbWVlatWsXmzZtZuHAhUPsfZ9GiRbiuy5IlS9i9e/ez/p0EQRCE6WG6/t5dccUV/PVf/zWnnHIKL3rRi3jDG97ApZdeCti/P/feey/f/OY3+dCHPsStt97Kc5/7XH7729+ilOKrX/0qn/vc5/jHf/xHADZs2MCvf/1rGhoaeP/7388HP/hB3vKWtxAEAXEc8/jjj3PDDTdw11134fs+73vf+/j2t7897m6kPXv28Otf/5pNmzZx1VVX8drXvpbbb7+dzZs3c++992KM4aqrruKXv/wlz3/+87n++uuZM2cO5XKZ888/n9e85jXMnTuX/v5+zjzzTP76r/962Ou4rsvZZ5/Npk2bOPvsswH7d/ev//qvefnLX87GjRt55zvfOexiTxCE2cF0xdxyucy6desAWLVqFTfffDNve9vb+OIXv8ill17KJz/5ST796U9z7bXXArZy+Ytf/IIwDLn00kv5wQ9+wPz587nhhhv4i7/4C66//nr+7u/+jq1bt1IsFunq6qK9vZ33vve9NDc389GPfhSAn//850Pu5dxzz2XTpk3Z48svv5x3v/vdxHHMf/7nf3LdddfxN3/zNxPzjzMCsyoxncmkuwjnnXde1h9+++23s3Hjxmwnt7u7m82bN7Ns2TL+/M//nF/+8pc4jsOuXbuyXeYVK1Zw0UUXjXqtfL83wEte8hI+8YlPsHDhQt7whjdM8G8mCIIgHC80NzezYcMGfvWrX3HHHXfwhje8IZvrTKuCb3rTm/jwhz8MWLuFN7zhDezZs4cgCOpsAa666ioaGhoAuPjii/nsZz/Lzp07efWrX83JJ5/Mz3/+czZs2MD5558P2AXaggULxn2vr3zlK3Ech9NPPz37G3r77bdz++23c8455wC2Q2nz5s08//nP5wtf+AI333wzADt27GDz5s3MnTsX13V5zWteM+q1Bv/dXbt2Ldu2beM73/kOL3vZy8Z9z4IgCHnSVt6U7u5uurq6sg3Bt7/97bzuda/Lnk/X+U888QSPPPIIL37xiwHbpbl48WLAxqe3vOUtvPKVr+SVr3zluO9lcJxzXZfnPve53HDDDZTL5XG3GT8bZlViOhGVzckibXtyXTfr+zbG8MUvfpErr7yy7rVf//rXOXDgABs2bMD3fVauXJnJKTc1NY16nd7eXrZt28Ypp5xCd3c3YFuNzjvvPP7xH/+RRx99lB/+8IcT/esJwoSwaRPs2gWXXz7ddyIIM5vp/Hvnui6XXXYZl112GWeddRbf+MY3gHqFxfTn97///XzkIx/hqquu4s477+RTn/pU9pr837M3v/nNXHjhhdx2221ceeWVfPWrX8UYw9vf/nb+9m//9qjuM/27C7UFlTGGj3/847znPe+pe+2dd97Jz372M+6++24aGxu57LLLsr+7pVIJ13VHvE4cxzz88MOcdtppdcevuuoqPvrRj3LnnXdy6NChIe8zxojipyDMEmZyjpEnjavGGM4444wh4wcAt912G7/85S+55ZZb+Ju/+RseffTRcZ37gQceYP369XXH3vjGN/KqV72qLrZPJjJjOolceeWVfPnLXyYMQwCefPJJ+vv76e7uZsGCBfi+zx133MEzzzwzrvP19fXxvve9j1e+8pV0dHTUPfcnf/In/P3f/z1z586d8N9DECaKU0+FF75wuu9CEISReOKJJ7L5T7CzTitWrACshkH6/eKLLwbs7n4q/JMmsMOxZcsWVq9ezQc+8AGuuuoqNm7cyOWXX86NN97I/v37Aejs7Bz338ORuPLKK7n++uvp6+sDYNeuXezfv5/u7m46OjpobGxk06ZN/Pa3vx3X+cIw5OMf/zgnnHACa9eurXvune98J5/85Cc566yzhrxPG4M2Qw4LgiCMSltbGx0dHdlowL//+79n1dM8a9as4cCBA1liGoYhjz76KFprduzYwQte8AI+97nP0dXVRV9fHy0tLfT29o543f/6r//i9ttvHzIv/7znPY+Pf/zjdccHV1YnkllVMZ0uBgYGWLZsWfb4Ix/5yLje9653vYtt27Zx7rnnYoxh/vz5fP/73+ctb3kLr3jFK1i/fj3r1q3j1FNPHfU8L3jBCzKV3le96lV19jApZ5xxxohqvJ/5zGey3nSwrVeCMNVs2gSrVkGuyCEIwgyj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\",\n      \"text/plain\": [\n       \"<Figure size 1152x432 with 3 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"expected_te=np.array([exp_te(x_i) for x_i in X_test])\\n\",\n    \"plt.figure(figsize=(16,6))\\n\",\n    \"plt.subplot(1, 3, 1)\\n\",\n    \"plt.plot(X_test[:, 0], te_pred, label='LinearDML', alpha=.6)\\n\",\n    \"plt.fill_between(X_test[:, 0], lb, ub, alpha=.4)\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 3, 2)\\n\",\n    \"plt.plot(X_test[:, 0], te_pred2, label='SparseLinearDML', alpha=.6)\\n\",\n    \"plt.fill_between(X_test[:, 0], lb2, ub2, alpha=.4)\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 3, 3)\\n\",\n    \"plt.plot(X_test[:, 0], te_pred3, label='ForestDML', alpha=.6)\\n\",\n    \"plt.fill_between(X_test[:, 0], lb3, ub3, alpha=.4)\\n\",\n    \"plt.plot(X_test[:, 0], expected_te, 'b--', label='True effect')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.xlabel('x')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.4 Interpretability with SHAP Values\\n\",\n    \"\\n\",\n    \"Explain the heterogeneity model for the constant marginal effect of the treatment using <a href=\\\"https://shap.readthedocs.io/en/latest/\\\">SHAP values</a>.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x223.2 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap_values = est.shap_values(X)\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap_values2 = est2.shap_values(X)\\n\",\n    \"shap.plots.beeswarm(shap_values2['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \" 98%|===================| 983/1000 [00:54<00:00]        \"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x223.2 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap_values3 = est3.shap_values(X)\\n\",\n    \"shap.plots.beeswarm(shap_values3['Y0']['T0_1'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.5. Other Inferences\\n\",\n    \"#### 2.5.1 Effect Inferences\\n\",\n    \"Other than confidence interval, we could also output other statistical inferences of the effect include standard error, z-test score and p value given each sample $X[i]$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>0.372</td>\\n\",\n       \"      <td>0.146</td>\\n\",\n       \"      <td>2.540</td>\\n\",\n       \"      <td>0.011</td>\\n\",\n       \"      <td>0.131</td>\\n\",\n       \"      <td>0.613</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0.416</td>\\n\",\n       \"      <td>0.163</td>\\n\",\n       \"      <td>2.553</td>\\n\",\n       \"      <td>0.011</td>\\n\",\n       \"      <td>0.148</td>\\n\",\n       \"      <td>0.683</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>0.291</td>\\n\",\n       \"      <td>0.170</td>\\n\",\n       \"      <td>1.709</td>\\n\",\n       \"      <td>0.087</td>\\n\",\n       \"      <td>0.011</td>\\n\",\n       \"      <td>0.571</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>0.410</td>\\n\",\n       \"      <td>0.150</td>\\n\",\n       \"      <td>2.733</td>\\n\",\n       \"      <td>0.006</td>\\n\",\n       \"      <td>0.163</td>\\n\",\n       \"      <td>0.656</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>0.584</td>\\n\",\n       \"      <td>0.152</td>\\n\",\n       \"      <td>3.834</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.333</td>\\n\",\n       \"      <td>0.834</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>0.553</td>\\n\",\n       \"      <td>0.139</td>\\n\",\n       \"      <td>3.974</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.324</td>\\n\",\n       \"      <td>0.782</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>0.430</td>\\n\",\n       \"      <td>0.124</td>\\n\",\n       \"      <td>3.472</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.226</td>\\n\",\n       \"      <td>0.634</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>0.605</td>\\n\",\n       \"      <td>0.154</td>\\n\",\n       \"      <td>3.921</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.351</td>\\n\",\n       \"      <td>0.859</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>0.439</td>\\n\",\n       \"      <td>0.127</td>\\n\",\n       \"      <td>3.471</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.231</td>\\n\",\n       \"      <td>0.647</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>0.494</td>\\n\",\n       \"      <td>0.162</td>\\n\",\n       \"      <td>3.048</td>\\n\",\n       \"      <td>0.002</td>\\n\",\n       \"      <td>0.227</td>\\n\",\n       \"      <td>0.760</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X                                                           \\n\",\n       \"0           0.372   0.146  2.540   0.011     0.131     0.613\\n\",\n       \"1           0.416   0.163  2.553   0.011     0.148     0.683\\n\",\n       \"2           0.291   0.170  1.709   0.087     0.011     0.571\\n\",\n       \"3           0.410   0.150  2.733   0.006     0.163     0.656\\n\",\n       \"4           0.584   0.152  3.834   0.000     0.333     0.834\\n\",\n       \"5           0.553   0.139  3.974   0.000     0.324     0.782\\n\",\n       \"6           0.430   0.124  3.472   0.001     0.226     0.634\\n\",\n       \"7           0.605   0.154  3.921   0.000     0.351     0.859\\n\",\n       \"8           0.439   0.127  3.471   0.001     0.231     0.647\\n\",\n       \"9           0.494   0.162  3.048   0.002     0.227     0.760\"\n      ]\n     },\n     \"execution_count\": 30,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.effect_inference(X_test[:10,]).summary_frame(alpha=0.1, value=0, decimals=3)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We could also get the population inferences given sample $X$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th>  <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>3.368</td>      <td>0.061</td>    <td>54.777</td>   <td>0.0</td>      <td>3.267</td>         <td>3.469</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>1.729</td>        <td>0.683</td>           <td>6.074</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.73</td>          <td>0.675</td>          <td>6.067</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x1376c935828>\"\n      ]\n     },\n     \"execution_count\": 31,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.effect_inference(X_test).population_summary(alpha=0.1, value=0, decimals=3, tol=0.001)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.5.2 Coefficient and Intercept Inferences\\n\",\n    \"We could also get the coefficient and intercept inference for the final model when it's linear.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X0</th>\\n\",\n       \"      <td>5.969</td>\\n\",\n       \"      <td>0.229</td>\\n\",\n       \"      <td>26.053</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>5.592</td>\\n\",\n       \"      <td>6.346</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X1</th>\\n\",\n       \"      <td>-0.060</td>\\n\",\n       \"      <td>0.216</td>\\n\",\n       \"      <td>-0.277</td>\\n\",\n       \"      <td>0.782</td>\\n\",\n       \"      <td>-0.415</td>\\n\",\n       \"      <td>0.295</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X2</th>\\n\",\n       \"      <td>-0.363</td>\\n\",\n       \"      <td>0.219</td>\\n\",\n       \"      <td>-1.660</td>\\n\",\n       \"      <td>0.097</td>\\n\",\n       \"      <td>-0.722</td>\\n\",\n       \"      <td>-0.003</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X3</th>\\n\",\n       \"      <td>0.271</td>\\n\",\n       \"      <td>0.212</td>\\n\",\n       \"      <td>1.280</td>\\n\",\n       \"      <td>0.201</td>\\n\",\n       \"      <td>-0.077</td>\\n\",\n       \"      <td>0.620</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"    point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X                                                             \\n\",\n       \"X0           5.969   0.229  26.053   0.000     5.592     6.346\\n\",\n       \"X1          -0.060   0.216  -0.277   0.782    -0.415     0.295\\n\",\n       \"X2          -0.363   0.219  -1.660   0.097    -0.722    -0.003\\n\",\n       \"X3           0.271   0.212   1.280   0.201    -0.077     0.620\"\n      ]\n     },\n     \"execution_count\": 32,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.coef__inference().summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>cate_intercept</th>\\n\",\n       \"      <td>0.456</td>\\n\",\n       \"      <td>0.218</td>\\n\",\n       \"      <td>2.09</td>\\n\",\n       \"      <td>0.037</td>\\n\",\n       \"      <td>0.097</td>\\n\",\n       \"      <td>0.815</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X                                                                        \\n\",\n       \"cate_intercept           0.456   0.218   2.09   0.037     0.097     0.815\"\n      ]\n     },\n     \"execution_count\": 33,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.intercept__inference().summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>      <td>5.969</td>      <td>0.229</td> <td>26.053</td>   <td>0.0</td>    <td>5.592</td>    <td>6.346</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1</th>      <td>-0.06</td>      <td>0.216</td> <td>-0.277</td>  <td>0.782</td>  <td>-0.415</td>    <td>0.295</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X2</th>     <td>-0.363</td>      <td>0.219</td>  <td>-1.66</td>  <td>0.097</td>  <td>-0.722</td>   <td>-0.003</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X3</th>      <td>0.271</td>      <td>0.212</td>  <td>1.28</td>   <td>0.201</td>  <td>-0.077</td>    <td>0.62</td>  \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.456</td>      <td>0.218</td> <td>2.09</td>   <td>0.037</td>   <td>0.097</td>    <td>0.815</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                   \\n\",\n       \"========================================================\\n\",\n       \"   point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------\\n\",\n       \"X0          5.969  0.229 26.053    0.0    5.592    6.346\\n\",\n       \"X1          -0.06  0.216 -0.277  0.782   -0.415    0.295\\n\",\n       \"X2         -0.363  0.219  -1.66  0.097   -0.722   -0.003\\n\",\n       \"X3          0.271  0.212   1.28  0.201   -0.077     0.62\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.456  0.218  2.09  0.037    0.097    0.815\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 34,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.5.3 Doubly Robust Average Treatment Effect Inference\\n\",\n    \"\\n\",\n    \"For the case of `CausalForestDML`, the estimator also fits a doubly robust average treatment effect at fit time. This inference result can be accessed as follows:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([3.53511397])\"\n      ]\n     },\n     \"execution_count\": 36,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est3.ate_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>ATE</th>\\n\",\n       \"      <td>3.535</td>\\n\",\n       \"      <td>0.079</td>\\n\",\n       \"      <td>44.671</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>3.405</td>\\n\",\n       \"      <td>3.665</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"     point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"ATE           3.535   0.079  44.671     0.0     3.405     3.665\"\n      ]\n     },\n     \"execution_count\": 37,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est3.ate__inference().summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3. Example Usage with Multiple Continuous Treatment Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 3.1. DGP \\n\",\n    \"We use the data generating process (DGP) from [here](https://arxiv.org/abs/1806.03467), and modify the treatment to generate multiple treatments. The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"T =& \\\\langle W, \\\\beta\\\\rangle + \\\\eta, & \\\\;\\\\eta \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"Y =& T\\\\cdot \\\\theta_{1}(X) + T^{2}\\\\cdot \\\\theta_{2}(X) + \\\\langle W, \\\\gamma\\\\rangle + \\\\epsilon, &\\\\; \\\\epsilon \\\\sim \\\\text{Uniform}(-1, 1)\\\\\\\\\\n\",\n    \"W \\\\sim& \\\\text{Normal}(0,\\\\, I_{n_w})\\\\\\\\\\n\",\n    \"X \\\\sim& \\\\text{Uniform}(0,1)^{n_x}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"where $W$ is a matrix of high-dimensional confounders and $\\\\beta, \\\\gamma$ have high sparsity.\\n\",\n    \"\\n\",\n    \"For this DGP, \\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta_{1}(x) = \\\\exp(2\\\\cdot x_1)\\\\\\\\\\n\",\n    \"\\\\theta_{2}(x) = x_1^{2}\\\\\\\\\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n = 6000\\n\",\n    \"n_w = 30\\n\",\n    \"support_size = 5\\n\",\n    \"n_x = 5\\n\",\n    \"# Outcome support\\n\",\n    \"support_Y = np.random.choice(np.arange(n_w), size=support_size, replace=False)\\n\",\n    \"coefs_Y = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def epsilon_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"# Treatment support\\n\",\n    \"support_T = support_Y\\n\",\n    \"coefs_T = np.random.uniform(0, 1, size=support_size)\\n\",\n    \"def eta_sample(n):\\n\",\n    \"    return np.random.uniform(-1, 1, size=n)\\n\",\n    \"\\n\",\n    \"# Generate controls, covariates, treatments and outcomes\\n\",\n    \"W = np.random.normal(0, 1, size=(n, n_w))\\n\",\n    \"X = np.random.uniform(0, 1, size=(n, n_x))\\n\",\n    \"# Heterogeneous treatment effects\\n\",\n    \"TE1 = np.array([x_i[0] for x_i in X])\\n\",\n    \"TE2 = np.array([x_i[0]**2 for x_i in X]).flatten()\\n\",\n    \"T = np.dot(W[:, support_T], coefs_T) + eta_sample(n)\\n\",\n    \"Y = TE1 * T + TE2 * T**2 + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(n)\\n\",\n    \"# Generate test data\\n\",\n    \"X_test = np.random.uniform(0, 1, size=(100, n_x))\\n\",\n    \"X_test[:, 0] = np.linspace(0, 1, 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 3.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"from sklearn.multioutput import MultiOutputRegressor\\n\",\n    \"est = LinearDML(model_y=GradientBoostingRegressor(n_estimators=100, max_depth=3, min_samples_leaf=20),\\n\",\n    \"                model_t=MultiOutputRegressor(GradientBoostingRegressor(n_estimators=100,\\n\",\n    \"                                                                       max_depth=3,\\n\",\n    \"                                                                       min_samples_leaf=20)),\\n\",\n    \"                featurizer=PolynomialFeatures(degree=2, include_bias=False),\\n\",\n    \"                cv=5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.LinearDML at 0x1377f9aa898>\"\n      ]\n     },\n     \"execution_count\": 37,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"T = T.reshape(-1,1)\\n\",\n    \"est.fit(Y, np.concatenate((T, T**2), axis=1), X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"te_pred = est.const_marginal_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"lb, ub = est.const_marginal_effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x137061c6cc0>\"\n      ]\n     },\n     \"execution_count\": 40,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"from sklearn.multioutput import MultiOutputRegressor\\n\",\n    \"est2 = CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=100, max_depth=3, min_samples_leaf=20),\\n\",\n    \"                       model_t=MultiOutputRegressor(GradientBoostingRegressor(n_estimators=100,\\n\",\n    \"                                                                              max_depth=3,\\n\",\n    \"                                                                              min_samples_leaf=20)),\\n\",\n    \"                       cv=5,\\n\",\n    \"                       criterion='mse', n_estimators=1000,\\n\",\n    \"                       min_samples_leaf=10,\\n\",\n    \"                       min_impurity_decrease=0.001,\\n\",\n    \"                       random_state=123)\\n\",\n    \"T = T.reshape(-1,1)\\n\",\n    \"est2.tune(Y, np.concatenate((T, T**2), axis=1), X=X, W=W)\\n\",\n    \"est2.fit(Y, np.concatenate((T, T**2), axis=1), X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"te_pred2 = est2.const_marginal_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"lb2, ub2 = est2.const_marginal_effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 3.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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dDrZtm0bO3bs4JlnnuGJJ57gu9/9bur86tWrefjhh1OvH3roIdauXTth48n+sf/qV79ixYoVY+53JD/2r371q/zud78b8z0VCoVCoVAoFEc/ar2cy0Ssl5U4nGLU19dz991385Of/AQpJQBz5swhHA7T1dWFlJInn3ySSy65ZET93n///WzYsIHGxkZuuukmNE1D0zSuv/56Vq1axerVq7n99tvZuHEjmzdv5tprr6WxsZFQKMTZZ5/N5s2bAXC5XNx6662ceOKJnH/++bz55pucffbZLFiwgMceewwwftRnnHEG69atY926dbz66qsAfO1rX+Pll1+msbGR22+/HU3T+OpXv8pJJ53EmjVr+MUvfpEa73nnnUdZWdl4fKQKhUKhUCgUimMItV42mIj18nGfrTSd7/51BzvbB8a1zxUzyvn2ZStHdM2CBQvQdZ3u7u7UsQ9/+MM88sgjnHDCCaxbtw673V50f7t27eLhhx9m06ZNWK1WbrnlFh544AFWrlzJ4cOH2b59OwBer5fKykp+8pOfcNttt7F+/fqcvgKBAGeffTY//OEPufLKK/nmN7/JM888w86dO7nuuuu4/PLLqa+v55lnnsHhcLBv3z6uueYaNm/ezH//939z22238fjjjwNw9913U1FRwVtvvUUkEuH000/nwgsvVBlIFQqFQqFQKKYoar18bK+XlTicoiR3QZJ89KMf5eqrr2b37t1cc801qd2FYnjuuefYsmULJ510EgChUIj6+nouu+wyDh48yOc+9zkuvfRSLrzwwmH7stlsXHzxxYBhvrfb7VitVlavXk1TUxNg1ML57Gc/y7Zt2zCbzezduzdvX08//TTvvvtuyv+7v7+fffv2KXGoUCgUCoVCoRgWtV4ef5Q4TGOkOxYTxcGDBzGbzdTX17Nr1y4AGhoasFqtPPPMM/zv//7viH7sUkquu+46fvCDH+Sce+edd3jqqaf46U9/yh/+8AfuueeeIfuyWq2pzEcmkym1I2MymYjH4wDcfvvtTJs2jXfeeQdd13E4HAXH9eMf/5iLLrqo6PeiUCgmnrimYzGrqAOFQqFQ5KLWy2NfL0spp+x6Wc3+U4yenh5uvvlmPvvZz+akn/3e977HD3/4Q8xm84j6PO+889i4cWPK7O7xeGhubqa3txdd17nqqqv4j//4D95++20AysrK8Pl8o34P/f39TJ8+HZPJxO9+9zs0Tcvb70UXXcRdd91FLBYDYO/evQQCgVHfV6FQjA/tXlVDVKFQKBRTl6N9vazLqbteVpbDKUAoFKKxsZFYLIbFYuHjH/84X/7yl3PanXbaaQX7uOmmm/jiF78IwOzZs3nttddS51asWMH3v/99LrzwQnRdx2q18tOf/hSn08knP/nJVBrg5E7J9ddfz80334zT6czop1huueUWrrrqKh555BHOOeccSktLAVizZg0Wi4W1a9dy/fXX84UvfIGmpibWrVuHlJK6ujoeffRRAM444wx2796N3+9n1qxZ/PrXv1YWRoViknAHItS4bJTa1RShUCgUiqnBsbRe1qWcsutlke2reyyzfv16mcwilGTXrl0sX778CI1IMRbUd6dQjIxQVMNpG34n9dUDvcysdDK3pnQSRjUxCCG2SClzswQcAwgh7gE+AHRLKVcN0e4k4HXgainlkMW98s2PCoVCkUStucaXSEzDbh2ZZXO05PvuhpojlVupQqFQHAdIKen1R4pqG4pqRbcdb2KaTjimHZF7H0XcC1w8VAMhhBn4IfDUZAxIoVAoFMWjT2HjnBKHCoVCcRwQimkEo8WJrlBMo9cfneAR5aetLzSlJ82pgJTyJcAzTLPPAX8Euodpp1AoFIpJRp/C05wShwqFQnEc4I/ECRVpkQtFNfoCUbQjMHs1u1VSqrEihJgJXAn8fJh2NwohNgshNvf09EzO4BQKhUKBLmVOGY6pghKHCoVCcRwQjGgEo/Fh28U1nZgm0aWRmGYyicQ1OvtVptRx4A7gVinlkLsBUsq7pZTrpZTr6+rqJmdkCoVCoUBKmJrSUGUrVSgUiuMCfyReVCxfunWx1xelvix/3aWJoNUTmtKuNkcR64GHEunda4H3CyHiUspHj+ioFAqFQgEYeQCkBMSwTScdJQ4VCoXiOCAYLS7mMJTWZrKT0iiX0vFBSjk/+bcQ4l7gcSUMFQqFYuogIeFWOvXUoXIrnQKYzWYaGxtZuXIla9eu5Uc/+lGqlso//vEPhBD8+te/TrXfunUrQghuu+02wKizsnHjkFnKR8S9995Le3t76vUNN9zAzp07x9xvU1MTDz744LDttm3bxqmnnsrKlStZs2YNDz/88JjvrVAc7wQi8QzhV4h0y+FkupWGohrdviOTIfVoQwjxe+A1YKkQok0I8WkhxM1CiJuP9NgUCoViojiW1sv6EG6lR3q9rMThFMDpdLJt2zZ27NjBM888wxNPPMF3v/vd1PnVq1dnfOEPPfQQa9eunbDxZP/Yf/WrX7FixYox91vsj72kpIT77ruPHTt28OSTT/LFL34Rr9c75vsrFMczgWicmCaJa/qQ7dLFYSiq448MH6c4HrR4gkzR2Pwph5TyGinldCmlVUo5S0r5aynlz6WUOQlopJTXD1fjUKFQKI4GjqX1skQWnPOO9HpZicMpRn19PXfffTc/+clPUlmM5syZQzgcpqurCyklTz75JJdccsmI+r3//vvZsGEDjY2N3HTTTWiahqZpXH/99axatYrVq1dz++23s3HjRjZv3sy1115LY2MjoVCIs88+m2RxZJfLxa233sqJJ57I+eefz5tvvsnZZ5/NggULeOyxxwDjR33GGWewbt061q1bx6uvvgrA1772NV5++WUaGxu5/fbb0TSNr371q5x00kmsWbOGX/ziFwAsWbKExYsXAzBjxgzq6+tRmfQUirERjBiib7iMpdmup72TZM1TLqUKhUKhKJajeb386F/+AhIOHTo0JdfLKuYwnb9/DTrfG98+G1bDJf89oksWLFiArut0dw+Wp/rwhz/MI488wgknnMC6deuw2+1F97dr1y4efvhhNm3ahNVq5ZZbbuGBBx5g5cqVHD58mO3btwPg9XqprKzkJz/5Cbfddhvr16/P6SsQCHD22Wfzwx/+kCuvvJJvfvObPPPMM+zcuZPrrruOyy+/nPr6ep555hkcDgf79u3jmmuuYfPmzfz3f/83t912G48//jgAd999NxUVFbz11ltEIhFOP/10LrzwQubPT4XL8OabbxKNRlm4cOGIPkOFQjFIOKYRT2R6CUU1yhzWwm2zxKE7EGFebemEji8QiR+xuooKhUKhGCFqvTzm9fJz511M3RRdLytxOEXJrn3y0Y9+lKuvvprdu3dzzTXXpHYXiuG5555jy5YtnHTSSQCEQiHq6+u57LLLOHjwIJ/73Oe49NJLufDCC4fty2azcfHFFwOG+d5ut2O1Wlm9ejVNTU0AxGIxPvvZz7Jt2zbMZjN79+7N29fTTz/Nu+++m/L/7u/vZ9++fakfe0dHBx//+Mf57W9/i8mkjNwKxWgJpLmGDmc5zD7f45t40ba/2z/h91AoFArFscfRvF6ORmN84bO3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\",\n      \"text/plain\": [\n       \"<Figure size 1080x432 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 6))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title(\\\"LinearDML with 2d-Poly Features\\\")\\n\",\n    \"plt.plot(X_test[:, 0], te_pred[:, 0], label='DML estimate1')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb[:, 0], ub[:, 0], alpha=.4)\\n\",\n    \"plt.plot(X_test[:, 0], te_pred[:, 1], label='DML estimate2')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb[:, 1], ub[:, 1], alpha=.4)\\n\",\n    \"expected_te1 = np.array([x_i[0] for x_i in X_test])\\n\",\n    \"expected_te2=np.array([x_i[0]**2 for x_i in X_test]).flatten()\\n\",\n    \"plt.plot(X_test[:, 0], expected_te1, '--', label='True effect1')\\n\",\n    \"plt.plot(X_test[:, 0], expected_te2, '--', label='True effect2')\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title(\\\"CausalForestDML\\\")\\n\",\n    \"plt.plot(X_test[:, 0], te_pred2[:, 0], label='DML estimate1')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb2[:, 0], ub2[:, 0], alpha=.4)\\n\",\n    \"plt.plot(X_test[:, 0], te_pred2[:, 1], label='DML estimate2')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb2[:, 1], ub2[:, 1], alpha=.4)\\n\",\n    \"expected_te1 = np.array([x_i[0] for x_i in X_test])\\n\",\n    \"expected_te2=np.array([x_i[0]**2 for x_i in X_test]).flatten()\\n\",\n    \"plt.plot(X_test[:, 0], expected_te1, '--', label='True effect1')\\n\",\n    \"plt.plot(X_test[:, 0], expected_te2, '--', label='True effect2')\\n\",\n    \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.xlabel(\\\"x\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 3.4 Tree Interpreter\\n\",\n    \"\\n\",\n    \"Interpreting heterogeneity via a tree based rule.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreeCateInterpreter at 0x13755a2a400>\"\n      ]\n     },\n     \"execution_count\": 44,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter\\n\",\n    \"\\n\",\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2)\\n\",\n    \"intrp.interpret(est, X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"intrp.plot()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4. Example Usage with Single Continuous Treatment Observational Data\\n\",\n    \"\\n\",\n    \"We applied our technique to Dominick’s dataset, a popular historical dataset of store-level orange juice prices and sales provided by University of Chicago Booth School of Business. \\n\",\n    \"\\n\",\n    \"The dataset is comprised of a large number of covariates $W$, but researchers might only be interested in learning the elasticity of demand as a function of a few variables $x$ such\\n\",\n    \"as income or education. \\n\",\n    \"\\n\",\n    \"We applied the `LinearDML` to estimate orange juice price elasticity\\n\",\n    \"as a function of income, and our results, unveil the natural phenomenon that lower income consumers are more price-sensitive.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 4.1. Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# A few more imports\\n\",\n    \"import os\\n\",\n    \"import pandas as pd\\n\",\n    \"import urllib.request\\n\",\n    \"from sklearn.preprocessing import StandardScaler\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the data\\n\",\n    \"file_name = \\\"oj_large.csv\\\"\\n\",\n    \"\\n\",\n    \"if not os.path.isfile(file_name):\\n\",\n    \"    print(\\\"Downloading file (this might take a few seconds)...\\\")\\n\",\n    \"    urllib.request.urlretrieve(\\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/OrangeJuice/oj_large.csv\\\",\\n\",\n    \"                               file_name)\\n\",\n    \"oj_data = pd.read_csv(file_name)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>store</th>\\n\",\n       \"      <th>brand</th>\\n\",\n       \"      <th>week</th>\\n\",\n       \"      <th>logmove</th>\\n\",\n       \"      <th>feat</th>\\n\",\n       \"      <th>price</th>\\n\",\n       \"      <th>AGE60</th>\\n\",\n       \"      <th>EDUC</th>\\n\",\n       \"      <th>ETHNIC</th>\\n\",\n       \"      <th>INCOME</th>\\n\",\n       \"      <th>HHLARGE</th>\\n\",\n       \"      <th>WORKWOM</th>\\n\",\n       \"      <th>HVAL150</th>\\n\",\n       \"      <th>SSTRDIST</th>\\n\",\n       \"      <th>SSTRVOL</th>\\n\",\n       \"      <th>CPDIST5</th>\\n\",\n       \"      <th>CPWVOL5</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>40</td>\\n\",\n       \"      <td>9.018695</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>46</td>\\n\",\n       \"      <td>8.723231</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>47</td>\\n\",\n       \"      <td>8.253228</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>48</td>\\n\",\n       \"      <td>8.987197</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>tropicana</td>\\n\",\n       \"      <td>50</td>\\n\",\n       \"      <td>9.093357</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>3.87</td>\\n\",\n       \"      <td>0.232865</td>\\n\",\n       \"      <td>0.248935</td>\\n\",\n       \"      <td>0.11428</td>\\n\",\n       \"      <td>10.553205</td>\\n\",\n       \"      <td>0.103953</td>\\n\",\n       \"      <td>0.303585</td>\\n\",\n       \"      <td>0.463887</td>\\n\",\n       \"      <td>2.110122</td>\\n\",\n       \"      <td>1.142857</td>\\n\",\n       \"      <td>1.92728</td>\\n\",\n       \"      <td>0.376927</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   store      brand  week   logmove  feat  price     AGE60      EDUC   ETHNIC  \\\\\\n\",\n       \"0      2  tropicana    40  9.018695     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"1      2  tropicana    46  8.723231     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"2      2  tropicana    47  8.253228     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"3      2  tropicana    48  8.987197     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"4      2  tropicana    50  9.093357     0   3.87  0.232865  0.248935  0.11428   \\n\",\n       \"\\n\",\n       \"      INCOME   HHLARGE   WORKWOM   HVAL150  SSTRDIST   SSTRVOL  CPDIST5  \\\\\\n\",\n       \"0  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"1  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"2  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"3  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"4  10.553205  0.103953  0.303585  0.463887  2.110122  1.142857  1.92728   \\n\",\n       \"\\n\",\n       \"    CPWVOL5  \\n\",\n       \"0  0.376927  \\n\",\n       \"1  0.376927  \\n\",\n       \"2  0.376927  \\n\",\n       \"3  0.376927  \\n\",\n       \"4  0.376927  \"\n      ]\n     },\n     \"execution_count\": 48,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"oj_data.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Prepare data\\n\",\n    \"Y = oj_data['logmove'].values\\n\",\n    \"T = np.log(oj_data[\\\"price\\\"]).values\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"W1 = scaler.fit_transform(oj_data[[c for c in oj_data.columns\\n\",\n    \"                                   if c not in ['price', 'logmove', 'brand', 'week', 'store','INCOME']]].values)\\n\",\n    \"W2 = pd.get_dummies(oj_data[['brand']]).values\\n\",\n    \"W = np.concatenate([W1, W2], axis=1)\\n\",\n    \"X=scaler.fit_transform(oj_data[['INCOME']].values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 50,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"## Generate test data\\n\",\n    \"min_income = -1\\n\",\n    \"max_income = 1\\n\",\n    \"delta = (1 - (-1)) / 100\\n\",\n    \"X_test = np.arange(min_income, max_income + delta - 0.001, delta).reshape(-1,1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 4.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=RandomForestRegressor(),model_t=RandomForestRegressor())\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred=est.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 4.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot Oranje Juice elasticity as a function of income\\n\",\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test, te_pred, label=\\\"OJ Elasticity\\\")\\n\",\n    \"plt.xlabel(r'Scale(Income)')\\n\",\n    \"plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.title(\\\"Orange Juice Elasticity vs Income\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 4.4. Confidence Intervals\\n\",\n    \"\\n\",\n    \"We can also get confidence intervals around our predictions by passing an additional `inference` argument to `fit`.  All estimators support bootstrap intervals, which involves refitting the same estimator repeatedly on subsamples of the original data, but `LinearDML` also supports a more efficient approach which can be achieved by leaving inference set to the default of `'auto'` or by explicitly passing `inference='statsmodels'`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 53,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred=est.effect(X_test)\\n\",\n    \"te_pred_interval = est.const_marginal_effect_interval(X_test, alpha=0.02)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 54,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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qY+Xu/vQVMe4+93u3uzu64HXklzmRAmaiIiIrAqZGpP2caAQuN/MAB5y97vMrBH4tLvfkqG4REREVrTx8XHa2toYGbmk5VtlHoqKimhubiY/Pz+t4zM1u3PzNNs7SC7Ye/H2B4EHFzcqERGRla+trY1AIMD69etJNZTIEnB3+vr6aGtrY8OGDWk9RstCiYiIrCIjIyNUVVUpQVtiZkZVVdWcWjCVpImIiKwyStAyY66vu5I0ERERWVJtbW284hWvYMuWLWzatIm3v/3tjI2NAfDggw/yspe97FmPefDBBwmFQuzdu/epnwceeACAsrKyecXx0Y9+lKGhp+cv3nLLLfT39097/Cc+8Qm+8IUvAPAP//APdHR0zOt506UkTURERJaMu/PqV7+aV77ylTzxxBMcO3aMaDTKPffcM+tjX/CCF/DYY4899XPTTTNW+5rVxUnad77zHcrLy6c9/q677uJNb3oToCRNREREVpjvf//7FBUVcfvttwOQm5vLRz7yET772c8+I2Gaj2g0yo033sgVV1xBS0sL3/jGNwAYHBzkF3/xF7nsssvYvXs3X/nKV/jrv/5rOjo6uOGGG7jhhhsAWL9+Pb29vQB84QtfYM+ePVx22WW88Y1vBOA973kPH/rQh/ja177Gww8/zOtf/3r27t3Lt7/9bV71qlc9Fcf999/Pq1/96ku6FsiOZaFEREQkA/7kmwc51BFZ0HPubAzyx7fumnb/wYMHufLKK5+xLRgMsnbtWo4fPz7juX/0ox+xd+/ep+5//etfZ9OmTU/dLyoq4r777iMYDNLb28s111zDy1/+cr773e/S2NjIt7/9bQDC4TChUIi/+qu/4gc/+AHV1dXPivG9730v//3f/011dTXnz59/xv7XvOY1fPzjH+dDH/oQ+/btw91517vexblz56ipqeFzn/vcU0nopVBLmoiIiCwZd59yAP102ye7uLtzcoI2cY7f//3fZ8+ePdx00020t7fT3d1NS0sLDzzwAO9+97v50Y9+RCgUmvF5vv/97/Oa17zmqeStsrJyxuPNjDe+8Y188YtfpL+/n5/85Ce89KUvnfEx6VBLmoiIyCo1U4vXYtm1axdf//rXn7EtEolw9uxZNm3aRF9f37zPfe+993Lu3DkeeeQR8vPzWb9+PSMjI2zdupVHHnmE73znO9x999285CUv4Y/+6I+mPY+7k3CIJ5zcnPRmZN5+++3ceuutFBUV8cu//Mvk5V16iqWWNBEREVkyN954I0NDQ0/NkozH47zrXe/itttuo6Sk5JLOHQ6Hqa2tJT8/nx/84AecPn0agI6ODkpKSnjDG97Ab//2b/Poo48CEAgEGBgYeMY5xuMJrnrudXz1q1/l3Lnk+LSLuzunemxjYyONjY38+Z//ObfddtslXccEJWkiIiKyZMyM++67j3/+539my5YtbN26laKiIt73vvcBEIvFKCwsnPKxE2PSJn6+9rWvPWP/61//eh5++GH27dvHvffey/bt2wFobW3l6quvZu/evbz3ve/lD/7gDwC48847eelLX8oNN9zAeCxBwuHC0Bgbt27n7b/9bm688QYuu+wy3vnOdz4rlttuu4277rqLvXv3Mjw8/NTzr1mzhp07dy7Ma+XuC3KibLJv3z5/+OGHMx2GiIhI1jl8+DA7duzIdBjT+tjHPkZ7ezsf+MAHluT5xmIJBkdjjMUTz9pXWVJAfl767Vlvfetbufzyy3nLW94y7TFTvf5m9oi777v4WI1JExERkazwlre8hQMHDvDVr3510Z9rLBYnOhpnfIrkbD6uvPJKSktL+fCHP7wg5wMlaSIiIpIlPvOZzyz6cyx0cjbhkUceWdDzgZI0ERERWQVGx+MMji18craYlKSJiIjIijU6Hic6FiMWX35j8JWkiYiIyIri7oymJgTEEssvOZugJE1ERERWhJWSnE1QnTQRERFZUnfccQe1tbXs3r17xuM+9rGPsXv3bnbt2sVHP/rRp7Y//vjjXHvttbS0tHDrrbcSDocZHo/znQce5IrL93Ljdc/lyRMnAAj39/PaV93KdCXHxsfH+fM//gOuvXw3119zJTff8Hz+4/5/B2DL5o1PLbieCWpJExERWcU+cv+xBT3fO168ddZjbrvtNt761rfypje9adpjDhw4wKc+9Sl++tOfUlBQwM0338wv/uIvsmXLFn7t136ND33oQ1x33XX8/ac+zZ++7y/53Xv+mL/964/ymX/8MmdPn+YfPvtJ/uS97+evPvgXvO1dvzvtuqDv//M/obu7iwcfeoTCwkLO9XTz4//60byvfyGpJU1ERESW1HXXXTfrouWHDx/mmmuuoaSkhLy8PK6//nruu+8+AI4ePcq+a55LX3SMq5//Qr75jX8FIC8/n5HhYYaH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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot Oranje Juice elasticity as a function of income\\n\",\n    \"plt.figure(figsize=(10,6))\\n\",\n    \"plt.plot(X_test.flatten(), te_pred, label=\\\"OJ Elasticity\\\")\\n\",\n    \"plt.fill_between(X_test.flatten(), te_pred_interval[0], te_pred_interval[1], alpha=.5, label=\\\"1-99% CI\\\")\\n\",\n    \"plt.xlabel(r'Scale(Income)')\\n\",\n    \"plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"plt.title(\\\"Orange Juice Elasticity vs Income\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 5. Example Usage with Multiple Continuous Treatment, Multiple Outcome Observational Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the same data, but in this case, we want to fit the demand of multiple brand as a function of the price of each one of them, i.e. fit the matrix of cross price elasticities. It can be done, by simply setting as $Y$ to be the vector of demands and $T$ to be the vector of prices. Then we can obtain the matrix of cross price elasticities.\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"Y=[Logmove_{tropicana},Logmove_{minute.maid},Logmove_{dominicks}] \\\\\\\\\\n\",\n    \"T=[Logprice_{tropicana},Logprice_{minute.maid},Logprice_{dominicks}] \\\\\\\\\\n\",\n    \"\\\\end{align}\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 5.1. Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 55,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Import the data\\n\",\n    \"oj_data = pd.read_csv(file_name)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 56,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Prepare data\\n\",\n    \"oj_data['price'] = np.log(oj_data[\\\"price\\\"])\\n\",\n    \"# Transform dataset.\\n\",\n    \"# For each store in each week, get a vector of logmove and a vector of logprice for each brand.\\n\",\n    \"# Other features are store specific, will be the same for all brands.\\n\",\n    \"groupbylist = [\\\"store\\\", \\\"week\\\", \\\"AGE60\\\", \\\"EDUC\\\", \\\"ETHNIC\\\", \\\"INCOME\\\",\\n\",\n    \"               \\\"HHLARGE\\\", \\\"WORKWOM\\\", \\\"HVAL150\\\",\\n\",\n    \"               \\\"SSTRDIST\\\", \\\"SSTRVOL\\\", \\\"CPDIST5\\\", \\\"CPWVOL5\\\"]\\n\",\n    \"oj_data1 = pd.pivot_table(oj_data,index=groupbylist,\\n\",\n    \"                          columns=oj_data.groupby(groupbylist).cumcount(),\\n\",\n    \"                          values=['logmove', 'price'],\\n\",\n    \"                          aggfunc='sum').reset_index()\\n\",\n    \"oj_data1.columns = oj_data1.columns.map('{0[0]}{0[1]}'.format)\\n\",\n    \"oj_data1 = oj_data1.rename(index=str,\\n\",\n    \"                           columns={\\\"logmove0\\\": \\\"logmove_T\\\",\\n\",\n    \"                                    \\\"logmove1\\\": \\\"logmove_M\\\",\\n\",\n    \"                                    \\\"logmove2\\\":\\\"logmove_D\\\",\\n\",\n    \"                                    \\\"price0\\\":\\\"price_T\\\",\\n\",\n    \"                                    \\\"price1\\\":\\\"price_M\\\",\\n\",\n    \"                                    \\\"price2\\\":\\\"price_D\\\"})\\n\",\n    \"\\n\",\n    \"# Define Y,T,X,W\\n\",\n    \"Y = oj_data1[['logmove_T', \\\"logmove_M\\\", \\\"logmove_D\\\"]].values\\n\",\n    \"T = oj_data1[['price_T', \\\"price_M\\\", \\\"price_D\\\"]].values\\n\",\n    \"scaler = StandardScaler()\\n\",\n    \"W=scaler.fit_transform(oj_data1[[c for c in groupbylist if c not in ['week', 'store', 'INCOME']]].values)\\n\",\n    \"X=scaler.fit_transform(oj_data1[['INCOME']].values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 57,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"## Generate test data\\n\",\n    \"min_income = -1\\n\",\n    \"max_income = 1\\n\",\n    \"delta = (1 - (-1)) / 100\\n\",\n    \"X_test = np.arange(min_income, max_income + delta - 0.001, delta).reshape(-1, 1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 5.2. Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 58,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(model_y=MultiTaskElasticNetCV(cv=3, tol=1, selection='random'),\\n\",\n    \"                model_t=MultiTaskElasticNetCV(cv=3),\\n\",\n    \"                featurizer=PolynomialFeatures(1))\\n\",\n    \"est.fit(Y, T, X=X, W=W)\\n\",\n    \"te_pred = est.const_marginal_effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 5.3. Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 59,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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+GZRedu/yZ/4fnG/0cw24Puiv8s5F9uv+WPxdfWZb2b/8ZdZCOgKDHbOxdZaJN7ynXO/mdkX+Gbz+MI5F7PrUXzeAV7G15Vmur+1yIXH3RnfoKwz8LUmyInvtXsUX8VGSgjm/DyCbyyLWeab8jQXvtlADgOXTJ2aRNOAAcAC/2t2Pb7WQ+XxtaDqFs+YKiIikoGpBYWIiIScc+5JfFML5gTewvfL7hB8X+jqOed+DbKo14Gn8E2H+AW+KTavxfdlKilxncHXamEDMAnfl+Q9+L5kEliuc+5f+L5gNsc3reTn+Co3/sY3AGJ8svO/X+7xdxno6j/WVP/x5vn/TyjmlfgGytwDvIRv3If7CRhrwDn3Gr4vfpXwdT2Yi+9LZyZ8U3ompDC+L80xb3FWbDjnvsL3hbspvsqjW4F++MbtCLQEX1P/afi+GF+HbwaW8f5yovhfJdF8fJU518ZxzH/8x5uOr7LrS3xfqs/xv/ERYu4TTPkf+//GOzhmLD70H7solw4ouh3feCyP4Hs+3vJv2845F8pxNKIFc36cc1/iex/lw/e6noRvjJernHP7QhTHWeBqfO/fQfhes9PwdYFZThzPlYiIiPkGLxcREcm4zGwWcKVzrnwIysqPr2XGaOfcf5IdnKQ4M5uG74t9OX+FhoiIiHhAXTxERCRDMbN78XU12A7kBnrh+0X5zmSWmwdogG8mCIhjPAIJH/5uLbXwtdC5V5UTIiIi3lIFhYiIZDSngRH4BnOMBH4CBjrn3khmuXXwdUPZAnRxzv2YzPIk5X2Hr7LqbXxTgYqIiIiH1MVDRERERERERDynQTJFRERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8pwoKEREREREREfGcKihERERERERExHOqoBARERERERERz6mCQkREREREREQ8l8nrAFJCoUKFXJkyZbwOQ0TkIqtXrz7gnCvsdRypQXlYRMJRRsrDoFwsIuEpvlycLisoypQpw6pVq7wOQ0TkIma22+sYUovysIiEo4yUh0G5WETCU3y5WF08RERERERERMRzqqAQEREREREREc+pgkJEREREREREPJcux6CIzdmzZ9m7dy+nTp3yOhSRNCdbtmyULFmSzJkzex2KSJqizx4Rb+hzS5JCOVsktJKSizNMBcXevXvJnTs3ZcqUwcy8DkckzXDOcfDgQfbu3UvZsmW9DsdzUVGOOZt+p32VomTJpEZoIRN1HjZPhyrdIDL9fDTps0ck9elzK+nW/rWWQtkKUSpPKa9D8YRytkjoJDUXZ5ir61OnTlGwYEElG5FEMjMKFiyY4X9NcM7xzbb9dHppGUPfX8sX6/d5HVL68tNc+PQ2mNQUts4B57yOKCT02SOS+vS5lTTOOZ78/km6fN6Fp1c8zcGTB70OKdUpZ4uETlJzcYapoACUbESSKKO/dzbuPczNb6zgljd/4Oips4y/sRbda5fwOqz0pXInuP4dOH8WPugNb10De37wOqqQyOjvHxEv6H2XeGbGpLaT6HZFNz786UM6ftaRSesnceLsCa9DS1V67YiETlLeTxmqgkJEJDF+PXiCu/+7lmsnLuPHfUd4pHMVFtzXgq61ShARoQuYkDKDKl3hrhXQ6UU4uBPeaAcf9IH927yOTkQkQyiSowiPNX6Mz7p+RuPijXl53ct0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96JlefLkoXTp0tEf4HG5cHFxwaeffkr58uWj72fLlo3p06eTJ08eDhw4QKNGjejSpQtffvklxYsXZ/bs2QAcPnyYvHnzMmbMGBYtWkShQoUuifGpp57i22+/pVChQtEXShdcd911TJw4kRdeeIF69erhnOO+++5j//79FC5cmLfeeis6oSbku+++Y8OGDRQoUIC7776b2rVrM2PGDBYuXEi/fv1Yt24dABs2bOD777/n+PHj1K5dm06dOl1UzuTJk9m1axdr164lU6ZM0TEPHTqURx99FIC+ffsya9Ysrr32WgDOnTvHDz/8wJw5c3j88ceZP38+RYoUYd68eWTLlo3t27fTu3dvVq1addGxnnnmGTZt2hQd26effsq6detYv349Bw4coH79+jRv3pxixYol+Pi3bdvG/PnziYyMjE58LVq04NFHH+Xxxx+PTrzHjx9n+fLlLFmyhFtvvZVNmzZdVM6wYcNo0aIF06dP5/z58xw7dgyAN998kwIFCnDy5Enq169Pz549KViwIMePH6dRo0Y89dRTPPDAA7z++uv8+9//5qqrruL777/HzJgyZQrPPfccL774YlDPZVrmnOOrzX/w3Jc/8fOB49S7PD+Tbq5D3csLeB2axFSgHFz3JjS5G+Y9Bl+O8lVStH4EqvWEiDRQ3z53FPyxMbRlFq0O18TdbDWjf/a0adOG22+/nfPnz/PBBx8wefJknnzyyVi3XbduHWvXriVr1qxUqlSJu+++m1KlYp9qsUmTJnTp0oXOnTtHNwlu06YNkyZNokKFCqxYsYIhQ4awcOHCS/bdtGkTa9eu5dSpU1xxxRU8++yzrF27lhEjRvDOO+8wfPhwevTowe233w7Av//9b9544w3uvvvui8oZMGBA9GfH/fffH2uczzzzDC+88AKzZs0CiM7rGzduZOvWrbRv355t27aRLVvCFbH//PMP33zzDadOnaJChQosWLCAihUr0q9fP1599VWGDx8O+F5fP/zwQ/RjuXDsC/r06cOoUaPo3r07p06dIioqiixZssT6WgLYvn07//3vf3n99de5/vrr+fTTT7n55puDOkcSWpkiMtG9Qnc6lO3AtC3TeHPjm1z3xXV0Kd+Fu2rdRdGcRb0OMaSe/eFZth66tKIxOSoXqMyDDR6Mc31Gz9mBIiMjqVmzJlu3buXcuXO89dZbrFixAuccDRs2pEWLFuTPn58dO3bw8ccfM3nyZOrXr8/777/PsmXLmDlzJv/3f//HjBkzLin7999/Z9myZWzdupUuXbpc0rUjru8X4PtSfuONN9KvXz/69evHp59+esn5i+98nDp1iv79+8eZQ+Pzww8/sGnTJsqWLRtnPg/cLkeOHNSvX59OnTpRr1696HLmzp3LjBkzWLFiBTly5Ih+fPHl1djOWVyvqeQONJsGrujSB+dcrE9WXMsDNWvWjHXr1kXfApPNhTL+9a9/UaNGDdq2bctvv/3Gn3/+SfXq1Zk/fz4PPvggS5cuJW/evPEeZ+HChVx33XXRiahAgfi/pJkZffv25b333uOff/7hu+++45prrol3nwvatWsXXf6yZcuia19bt27NwYMHo9/cXbt2JXv27BQqVIhWrVpF14ReMH/+fAYPHkymTJkuinnRokU0bNiQ6tWrs3DhQjZv3hy9z4Va27p16/LLL78AcPbsWW6//XaqV69Or169gupXvGzZMnr37k1kZCSXXXYZLVq0YOXKlUE9/l69ehEZGcnhw4f5559/aNGiBQC33HILS5Ysid6ud+/eADRv3pwjR45c0hdv4cKF3HnnnYAvkV94jidMmBDdSmLPnj1s3+77hSNLlizRfRcDH//evXu5+uqrqV69Os8///xF5yu9+mHXIXq8upzB760hIsJ4vV89Ph7cON1WTphZBzP7ycx2mNmoWNZ3NbMNZrbOzFaZ2VUB634xs40X1qVu5DEUrw39PoebP4OseeCzgTC5Bey89Iug6LMnMjKSq666ig8//JCTJ09SpkyZOMtt06YNefPmJVu2bFSpUoXdu3fHG0egY8eOsXz5cnr16kWtWrW44447+P3332PdtlWrVuTOnZvChQuTN2/e6Mrz6tWrR+fkTZs20axZM6pXr860adMuyckxPzsufIYmJPDztnLlylx++eXRF7QJueGGGwD46aefKFu2LBUrVgTi/tzq3bs333333UVlHD16lN9++y3619Rs2bKRI0eOOF9LQPQ4GHDx51ZC50hSTvZM2RlYfSBzeszh5itvZvbPs+k8vTNjVo/h8OnDCRcgccroOTumCy2gly1bRvfu3cmZMye5cuWiR48e0a2gy5YtS/Xq1YmIiKBq1aq0adMGM7sop8bUrVs3IiIiqFKlSqythuP6fgG+7yYDBgygX79+AIk+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vrt379K9e3d69uzJgAEDHnn+MrZ558+f/8DzERUVxbZt2xg3bhwpKSlERETw3Xff4eyc9fhdSinGjBnDokWLWLVqFV27dmX27Nl89NFHaK3p2LEj//nPfwDDZ9ELL7zA2rVr8fHx4aOPPuK1117j7NmzTJo0iS5durBx40YmTJjA8uXLGT9+PGfPnuXUqVOcPXuWl19+Of3sioyfa5988gkzZszg/9u77/iqy/P/46/rnOxJSBgBEsLeSxFURDaCC3exVIt11LZql7Va7fjV+v0qdnxta7XW0WF3raOtqAmEPQQUBAQ1mxBWGNnznOv3xznQgAlknXxOkuv5eOTBOZ/5PifJlQ/3uT/37XK5WLhw4Wk9UrxeL7fddhspKSn8v//3/7j99tvZunUrIsIXvvAFvv71r7f0xzUolVd8Qnb2jykuziA8rA8jRzxGcvINuFwd12zQLRsonLB7927OP//805bFxcWRmppKVlbWWfddu3YtEydOPPX8lVdeYciQ/zaGRERE8OqrrxIXF0dxcTEXXnghV199NW+99Rb9+vXjP//5DwAlJSXEx8fz05/+lMzMTJKSTp8OZvfu3Tz22GOsX7+epKQkjh07dtr6G264gV/+8penLqZUlW9+85scOXKEXr168dJLL536Y3MuGzdu5IMPPqBnz57ce++9TJo0iddee42VK1dy6623sn37dgA++OADNm3aREVFBZMmTeKKK6447TjPPfccubm5vP/++4SEhJzKfM899/C9730PgFtuuYV///vfXHXVVYDvIujdd9/lzTff5P/9v/9HRkYGvXv3Jj09nYiICD755BNuvvnmT3Xnevzxx9m1a9epbK+88grbt29nx44dFBcXc8EFF3DppZeSnJx81tc+ePBgvF4vhw8f5uWXXwZg586d7N27l/nz5/Pxxx8DsGvXLt5//32qq6sZOnQoTzzxBO+//z5f//rX+f3vf8/Xvva1Tx07KSmJ9957j1/96lf8+Mc/5vnnnz9t/X333ceMGTN49dVX8Xg8lJeXc/z4cQA++ugjFi9ezEsvvcTEiRO59957+epXv8qSJUuora3F4/Gc9XV1Rp7SGkozCqjYchAJcxM3fyAxl/THFeZ2Olq7U9U1IpJ2lvUN77vaBAw4+UREBgBXAI8B3whUxkDr7nV4zpw53HnnnXg8Hv7yl7/w3HPP8eijjza67fbt23n//fcJDw9nxIgR3HvvvaSkpDS67cUXX8zVV199qrH05LmeffZZhg0bxubNm/nyl7/MypUrP7Vvc+rcddddx5133gnAI488wgsvvHDaRTTAbbfdxi9+8QtmzJjBt771rUZzPv7446cuVgF+8pOfAJ+uvxEREY3uf9J5553H3r2+CRi+//3vN/n3Kzs7m8zMTD788EMuuugiXnnlFZYtW8a1117Lf/7zH6655prTjltRUcGFF17IY489xgMPPMBvfvMbHnnkkdO2WbJkCQ8++CDXXnst1dXVeL1e9u3bB8CGDRu49957ef3110lNTeWrX/0qTz/9NNOmTaO8vPycr8spqsru3btZsWIFx48fZ+DAgdx8880MGDDg3DubTqm71+KG3G43EyZMYO/evdTX1/PSSy+xefNmVJWpU6cyY8YMEhISyMrK4u9///upD7n+9Kc/sW7dOt544w3+53/+h9dee+1Txz5w4ADr1q1j7969XH311Z+6taOpa2jwNfQsXryYW2+9lVtvvZVXXnnlU+/f2d6P6upqli5dyooVK07duvHMM880eu16ppM19oILLuDb3/4227ZtIyEhgfnz5/Paa69xzTXXUFFRwcyZM3niiSe49tpreeSRR0hPT+fDDz/k85//PFdfffWnjrt3714yMzMpKytjxIgRfOlLXyI0NPTU+uXLl/Paa6+xefNmoqKiTns/6uvrWbJkCWPHjuXhhx9m27Zt7N+/n127fJPstNdtOk6qrjlIbs5TFB34B253FEMG309KylLc7sgOz9ItGyjO1tMhUFS10RFdm1re0PTp009dUDV17O985zusWbMGl8vF/v37OXToEOPGjeP+++/n29/+NldeeSXTp08/63lWrlzJDTfccKpI9+zZ86zbiwi33HILL7/8MrfddhsbN248632yDc2bN+/U8detW3fqE7fZs2dz9OjRU4Vv0aJFREZGEhkZyaxZs3j33XdP+8OUkZHB3Xfffep+1JPHzMzMZNmyZVRWVnLs2DHGjBlzqoHiuuuuA+D8888nLy8PgLq6Ou655x62b9+O2+0+1UhwNuvWrePmm2/G7XbTp08fZsyYwZYtWxotimfy9WzyHePkhfbIkSMZOHDgqXPPmjWL2NhYYmNjiY+PP5V/3LhxfPBB49P5NHxtjbXar1y58tT3yO12Ex8fz/Hj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//mcx2iL+fPn8+KLL56qqw3fj9tvv53LL7+cG2+8kfr6eoqLi/F6vVx//fU8+uijjb4fwUrVw4EDr7Jx0zw+yXqMuLhxTLngDcaM+SmRkc3rKRlo3fIWDyeICK+++ipf/vKXefTRR/F6vVx++eX8z//8D+C7t6mpgWPOvN/ukUceOe0+siVLlnDVVVcxefJkJk6ceGogsp07d/Ktb33r1Kc3J/9jetddd7Fw4UKSk5PJzMw8dZwxY8bw8MMPM2PGDNxuN5MmTeK3v/3taVmWLl3K3XfffWoAnMjISJYsWcKRI0cYPXp0q96bH/zgB9x2222MHz+eqKio06ZwmzJlCldccQUFBQV897vfpV+/fqd13brjjjtOdckNDQ3lzjvv5J577uHOO+9k3LhxpKWlfapRozFf/vKXuf766/n73//OrFmzTuvhcVJiYiLTpk1j7NixLFy4kGXLlrFx40YmTJiAiLBs2TL69u37qf2qqqqYOHEidXV1hISEcMstt/CNb3zj1Hnvvvtuxo0bR0hICL/97W/POoBQWz311FPcddddvPDCC7jdbp555plTY2ZER0fz73//m3nz5hEdHc2HH37Iyy+/TGhoKH379j01pkdnU/3xcUqW51J3oILQftEkXDeMiGEJTscKOiKSCvwTuEVVT93jpKoPAQ/5t5kJ3K+qn3MiY1tZHfa9B/fff3+z37MzPf7441x55ZWkpKQwduzYUwOLLV68mDvvvJOf//zn/OMf/+CPf/wjX/rSl/jRj35EXV0dixcvZsKECbzxxhts3br1nJ++NfToo48ydepUBg4cyLhx4xr9z8RLL710apDMM28BOWn8+PGEhIQwYcIEli5d2uz6m52dzaRJk6iuriY2NpZ777331L3lZ/v7FQh/+MMf+OIXv8j3vvc9QkNDTxsks0+fPvzrX/9i4cKFvPjii7z88stkZmbidrsZPXq0I7dVnVRZWcnatWt59913Ad+nkdOnTycysuPvbTbO6+61eMmSJYSHh1NTU8PcuXN5/fXXAd/YC0uXLj31Ydcdd9zBpEmTmrxloa2auoY+6f/+7//4whe+wAMPPMCcOXMaff8aOvP9eOmll079h/6CCy7g7rvvbjTHt771LR599FEqKyu58MILyczMJCwsjOTkZP73f/+XWbNmoapcfvnlLFq0KCDvBcCCBQvYvn07kydP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\",\n      \"text/plain\": [\n       \"<Figure size 1296x720 with 9 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot Oranje Juice elasticity as a function of income\\n\",\n    \"plt.figure(figsize=(18, 10))\\n\",\n    \"dic={0:\\\"Tropicana\\\", 1:\\\"Minute.maid\\\", 2:\\\"Dominicks\\\"}\\n\",\n    \"for i in range(3):\\n\",\n    \"    for j in range(3):\\n\",\n    \"        plt.subplot(3, 3, 3 * i + j + 1)\\n\",\n    \"        plt.plot(X_test, te_pred[:, i, j],\\n\",\n    \"                 color=\\\"C{}\\\".format(str(3 * i + j)),\\n\",\n    \"                 label=\\\"OJ Elasticity {} to {}\\\".format(dic[j], dic[i]))\\n\",\n    \"        plt.xlabel(r'Scale(Income)')\\n\",\n    \"        plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"        plt.legend()\\n\",\n    \"plt.suptitle(\\\"Orange Juice Elasticity vs Income\\\", fontsize=16)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"**Findings**: Look at the diagonal of the matrix, the TE of OJ prices are always negative to the sales across all the brand, but people with higher income are less price-sensitive. By contrast, for the non-diagonal of the matrix, the TE of prices for other brands are always positive to the sales for that brand, the TE is affected by income in different ways for different competitors. In addition, compare to previous plot, the negative TE of OJ prices for each brand are all larger than the TE considering all brand together, which means we would have underestimated the effect of price changes on demand. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 5.4. Confidence Intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 60,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"te_pred_interval = est.const_marginal_effect_interval(X_test, alpha=0.02)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 61,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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Oeecc6itreV73/se3/rWt1i1ahVr166lra0NgDvuuIM1a9awYsUKLrzwwvTfqv85AXjppZdYsWIFxx9/fPrD7GCf//zn+ec//8nKlSv59re/TW9vL5dddhnLli1j1apV/P3vf8/+xx3k7W9/O1/4whc45ZRTuPXWW3n00UdZtWoVy5Yt4yMf+QjRaBSw/qb977HHHnssW7ZsOaDfW7Zs4fTTT2fFihUcffTRbN26dcjX0o4dOzjiiCO44oorOOqoozjzzDPp6ekZ9jlSE0dECLgC1ARqKPeW80bLG/xk/U/4xgvf4Mk9T9Le257rLk55033M7udyubjlllvYtWsXr732GgDf+ta3WLp0KUuXLuU73/kOYI0RS5Ys4fLLL2fp0qV86EMf4pFHHuGEE05g4cKFWT87r1u3jk9+8pO87W1vY968eemgxEjOL/r19PRw1llncccdd2R9/jINfj56enqGHEOH8/jjj3PqqafywQ9+kGXLlg05nt91112cd955nHXWWSxevJgbbrghvY/M97NbbrmFZcuWsWLFCj7/eat2+lDj6lDP2VCvqbHKVQbFw8C1xpi4iHwNuBa4JrOBMWYTsBLShdv2Yn0wHrMb/vgGb+7rGo9dpR1ZU8B/nXPUkPe/8cYbHHPMMQNuKygoYPbs2ek38KH0f7jod++99zJ//vz0dY/Hw3333UdBQQEtLS2sXbuWc889l4ceeoiamhr+/Oc/A9DZ2UlhYSHf+ta3+Pvf/05ZWdkBffzqV7/KU089RVlZWfqDUr/3ve99fO973+Mb3/gGq1evxhjDf/7nf9Lc3Ex5eTk//elP0wPqwTzzzDO8/vrrlJSU8IlPfIJVq1Zx//3389hjj3HppZemI4Wvv/46zz77LN3d3axatYqzzz57wH5uv/12tm/fziuvvILD4Uj3+eqrr+bLX/4yAJdccgl/+tOfOOeccwDr25/nn3+eBx98kBtuuIFHHnmEiooKHn74YTweD5s3b+YDH/gAL744cLGCm2++mQ0bNqT7du+99/Lqq6/y2muv0dLSwpo1azj55JOprq4+6OOvq6vjkUcewW63pwe+U045hS9/+cvccMMN6YG3u7ubp59+mieeeIKPfOQjbNiwYcB+PvnJT3LKKadw3333kUgkCIfDANx5552UlJTQ09PDmjVruPDCCyktLaW7u5u1a9fy1a9+lc997nPccccdfPGLX+TEE0/k2WefRUT48Y9/zC233MI3v/nNEf0tp6pk0rCtpZt/bm5mw95O7CKUBty4HO5cd20ivAAsFJFarLH0YmDAV6rGmPT6TyJyF/AnY8z9IuIHbMaYUOr3M4EbD1vPhyICLp91AYhHYceTsP0fYHNA9XKYcQyULgT36NJbx91fPg8N68d3n1XL4F1Dp61O9/ee0047jSuuuIJEIsGvf/1rbr/9dm666aasbV999VVeeeUV3G43ixcv5hOf+ASzZs3K2vZtb3sb55577oAMg9NOO43bbruNhQsX8txzz/Hxj3+cxx577IBtN2zYwCuvvEJvby8LFizga1/7Gq+88gr/8R//wc9//nM+9alPccEFF3DFFVcA8MUvfpGf/OQnfOITnxiwn8suuyz93vHZz342az9vvvnmAdmL/eP6+vXr2bhxI2eeeSZ1dXV4PJ6s22fq6OjgH//4B729vSxcuJBHH32URYsWcemll/LDH/6QT33qU4D1+nr++efTj2XwN7of+tCH+PznP8/5559Pb28vyWQSl8uV9bUEsHnzZn71q19xxx138C//8i/ce++9fPjDHx7Rc6Qmjt1mp9xXDkBPvIe/7vwrD+14iPlF81lbvZb5RfOnfGHNrz3/NTa2HRhoHIslJUu45thrhrx/uo/Zmex2OytWrGDjxo3E43F++tOf8txzz2GM4bjjjuOUU06huLiYLVu28Nvf/pbbb7+dNWvW8Mtf/pInn3ySBx54gP/+7//m/vvvP2Df9fX1PPnkk2zcuJFzzz33gEyxoc4vwDopv/jii7n00ku59NJLuffeew94/oZ7Pnp7e1m3bt2QY+hwnn/+eTZs2EBtbe2Q43lmO5/Px5o1azj77LNZvXp1ej9/+ctfuP/++3nuuefw+XzpxzfcuJrtORvqNTXWOjU5yaAwxvzNGBNPXX0W69u84ZwGbDXG7JzYnk0cY0zWP9ZQt2c66aSTePXVV9OXzMGmfx9f+MIXWL58Oaeffjp79+6lsbGRZcuW8cgjj3DNNdfwz3/+k8LC4SvhP/bYY7zvfe9LD0QlJSXDthcRLrnkEv7v//6Pjo4OnnnmGd71rncNu02/M844I73/J598Mh19fcc73kFra2v6P/d5552H1+ulrKyMU089NR0J7ffII49w1VVXpdNN+/f597//neOOO45l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ev4yZT4fBxtDR2q48fzhhx+mra2Nnp4e7r//fk444YQDHl9mXZP+x3eo4+poxu6RmLBP6MaYYdekEpF/Bd4DnGaGDyW9C3jZGDOlq/aJCPfddx8f//jHuemmm0gmk7z73e/mv//7vwGrLkJmZCrT4DllX/ziFwfMlfrQhz7EOeecw+rVq1m5ciVLliwBrDlJn/3sZ7HZbDidzvSJ7JVXXsm73vUuqqurBxTIOuqoo7juuus45ZRTsNvtrFq1irvuumtAX9atW8dVV12F1+vlmWeewev18qEPfYjm5uZRVzK//vrrueyyy1i+fDk+n2/ACfKxxx7L2Wefza5du/jSl75ETU3NgHStyy+/nLq6OpYvX47T6eSKK67g6quvTk/XmDt37gFBjWw+/vGPc+GFF/Lb3/6WU089NWuGQ2lpKSeccAJLly7lXe96F7fccgvPPPMMK1asQES45ZZbqKqqOuTH/7Of/YyrrrqKSCTCvHnz+OlPf5q+r7i4mLe97W10dXVx5513HrDtrbfeypVXXslPfvIT7HY7P/zhDznrrLO47bbbWL58OYsXL2bt2rUH7cP111/PRRddxIwZM1i7di3bt28/5McxmUT64ry2u5PHNjbS1t2H12mnpigvVuNQYyECroB1Aatuxe7nYedTgED5IpixxvrpK7XaT3H63mM9B4NXUDoUN998M+95z3uYNWsWS5cuTdf6ufjii7niiiv47ne/y+9+9zvuvvtuPvaxj/GVr3yFWCzGxRdfzIoVK3jggQd48cUXufHGkZduuemmmzjuuOOYM2cOy5Yty3qS8NOf/pSPfOQj+Hw+3vnOd2bdz/Lly3E4HKxYsYJ169bx8Y9/nKuuuoply5bhcDi46667hvz7D8Xj8fDTn/6Uiy66iHg8zpo1awZU749Goxx33HEkk0l+9asDk19/8Ytf8G//9m98+ctfxul08tvf/nbI19JwRvIcqdzrL6wZcAVImARb2rewoWUDPoePY6uPZXnZcip8FWOes54vpvuY/aEPfQi32000GuX0009PF108+uijWbduXfqLwMsvv5xVq1YNOYVjrIY6v+j3ne98h4985CN87nOf47TTTsv6/GUa/HwMN4aO1HDj+Yknnsgll1zCli1b+OAHPzig/gTAWWedxauvvsrq1atxuVzp19ihjqujGbtHQnIxL0xEzgK+BZxi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fj9da9f29q647TY6nn6aeF0dxrImu7mT6p///CeBQIDLL78cALfbzY9+9CPuvPPOUX+57Ojo4OSTT2b16tUsX748/Uff2dnJ+973PlauXMmyZcu4//77+clPfkJdXR0nnngiJ554ItA3c/qrX/2KFStWsHLlyvSv/qlfkH73u9+xdu1aLrnkElatWsVf/vIXzjvvvHQ7HnnkEc4///z9tvfuu+/mAx/4AGeddRannXYazc3NnHvuuaxYsYKjjjqKV199Nf24H/nIRzjppJNYtGgRP//5z4G+vwYmk0k+//nPs3z5clasWMFPf/pTAL71rW9x+OGHs2zZMq6++ur0r6QnnHACX/rSlzjiiCNYvHgxTz75ZPqYxx57LKtXr2b16tUDBrfrrruOzZs3s2rVKr7whS9gjOELX/gCy5YtY/ny5dx///2DPuczzjiDv/zlLwDce++9XHxxb12wzF4Hl112GZ/61Kd417vexYIFC9IfKv1/Xbj22mu5++67B3w///73v3P00UezevVqPvCBD9DR0bFPey677DI+/vGPc+KJJ7JgwQL+7//+jyuuuIKlS5dy2WWXpbf7+Mc/zpo1azjkkEP4xje+kV5+wgknsHbtWgDuuusuFi9ezPHHH5/+sqfyw3SPSxdddBH33XcfAL///e/7bJcZZ+6++27OP/98Tj/9dBYtWsQXv/jF9HaZv4787ne/47LLLuOZZ57hoYce4gtf+AKrVq1i8+bNbN68mdNPP53DDjuMY489lo0bN+7Tnrvvvptzzz2Xs846i/nz5/Ozn/2MH/7whxx66KEcddRRNDc3A/Dzn/+cww8/nJUrV3LBBRek36vMX/vXrVvHypUrOfroo7n11lsHfP7XXXcdTz75JKtWreJHP/oR0WiUyy+/nOXLl3PooYfy2GOPDbhfMBhk6dKl6Rhw//3388EPfjC9PrMdg8Xc/r2tzjzzTB5//HGuu+46uru7WbVqFZdccgkA//M//8MRRxzBqlWr+Jd/+ReSyeQ+bTrhhBP47Gc/y3HHHcfSpUt58cUXOf/881m0aBFf/epX09ude+65HHbYYRxyyCHcfvvt6eWZ/95uuukmDjroIE455RTeeuutAV+DiWAlLfbsaGftw9t48S9b2bOjg3Cxn4ISP26Pnq7mklSyorC8gnBxMU07t/PSXx/in3f+Fy89/Ed2bX6HWHT6/nA33T9rUnw+H9/97nfZsWMHr7zyCgA//OEPWbZsGcuWLePHP/4xYH/+LFmyhKuuuoply5ZxySWX8Oijj3LMMcewaNEiXnjhBSC788dszplTuru7Of300/n5z38+4OuXqf/r0d3dzT/+8Q8OPfRQli9fzhVXXEFPz8BDzi6++OL08R5//HGOOeYYPJ7eKgupz9XHH3+cE044gfe///0sWbKESy65JH0+n/m+rV27lhNOOIFt27Zx22238aMf/YhVq1bx5JNPsmfPHi644AIOP/xwDj/88AHPUx9//HGOP/54PvjBD7J48WKuu+467rnnHo444giWL1/O5s2bAfjTn/7EkUceyaGHHsopp5zC7t2793kftm7dytFHH83hhx/ep6fhaGkNilFw+f24KisBMJZFoqmZNudLmfgDBA5eSmDpwfjmzsFdWDhp7dz1ne/Q8+a+J4ej4V+6hJlf+cqg619//XUOO+ywPssKCwuZO3cumzZtGvLYqRPIlAceeICFCxem7wcCAR588EEKCwtpbGzkqKOO4uyzz+Zvf/sbVVVV6S/Gra2tFBUV8cMf/pDHHnuM8vLyfdp400038fTTT1NeXp4+GU55//vfz89+9jO+//3vs2bNGowx/Nu//Rt79uyhoqKCu+66K/3hsz/PPvssr776KqWlpXzyk5/k0EMP5Q9/+AP//Oc/ufTSS1m/fj0Ar776Ks899xydnZ0ceuihvO997+tznNtvv52tW7fy8ssv4/F40m2+9tpr+frXvw7ARz7yEf785z9z1llnAXavjRdeeIGHH36Yb37zmzz66KNUVlbyyCOPEAgEeOedd7j44ovTJ98pN998Mxs2bEi37YEHHmD9+vW88sorNDY2cvjhh3Pccccxa9asfZ7vRRddxLe+9S3OPPNMXn31Va644or0iXp/9fX1PPXUU2zcuJGzzz57yK55n/rUp/q8n42NjXz729/m0UcfJRwO8+///u/88Ic/TL8Wmfbu3cs///lPHnroIc466yyefvpp7rjjDg4//HDWr1/PqlWruOmmmygtLSWZTHLyySfz6quvsmLFij5t/cY3vsG6desoKirixBNP5NBDDx20vWpwT/7mbRp37ptMGo3yORGO/eDiQddP97h08skn87GPfYxkMsl9993H7bffzo033jjgtuvXr+fll1/G7/dz0EEH8clPfpI5c+YMuO273vUuzj77bM4888z03+/JJ5/MbbfdxqJFi3j++ef5xCc+wT//+c999t2wYQMvv/wy0WiUAw88kH//93/n5Zdf5rOf/Sy/+tWv+MxnPsP555/Pxz72MQC++tWv8otf/IJPfvKTfY5z+eWX89Of/pTjjz+eL3zhCwO28+abb+b73/9+ujfED37wAwBee+01Nm7cyGmnncbbb79NIBDYZ99UcmfmzJm43W6qqqoG/SVtoJg7mJtvvpmf/exn6Tj75ptvcv/99/P000/j9Xr5xCc+wT333DNgDw2fz8cTTzzBLbfcwjnnnMO6desoLS1l4cKFfPazn6WsrIw777yT0tJSuru7Ofzww7ngggsoKytLH2PdunXcd999vPzyyyQSCVavXr3P38h4i/ck2b21la2vNhLrSuB16kvoEI784HK7CRUVA2BZSZrra9m9bQsuEUqr5zL7oIMpq56DPxSelPY9dvftNGzfMqbHrDxgASdedvWg66f7Z00mt9vNypUr2bhxI4lEgrvuuovnn38eYwxHHnkkxx9/PCUlJWzatInf/va33H777Rx++OH8+te/5qmnnuKhhx7iO9/5Dn/4wx/2Ofb+zh8HO2cGO9Fz0UUXcemll3LppZfywAMP7PP6DfV6RKNRLrvsMv7xj3+wePFiLr30Uv7zP/+Tz3zmM/u0c9GiRfzxj39k79693HvvvXz4wx/mr3/964Cv18svv8zrr79OVVUVxxxzDE8//TTvfve7B9x23rx5XHPNNUQiET7/+c8D8KEPfYjPfvazvPvd72bHjh285z3v4c0339xn31deeYU333yT0tJSFixYwFVXXcULL7zALbfcwk9/+lN+/OMf8+53v5vnnnsOEeGOO+7gu9/9bvpzM+XTn/40H//4x7n00ksH/XFgJDRBMUbE5cJdWJhORJhYjOiG1+l++WUw4KmsILB8Of4FC/FWz8Y1xYsLGWMGPLkYbHmmY489tk932oGO8ZWvfIUnnngCl8tFbW0tu3fvZvny5Xz+85/nS1/6EmeeeSbHHnvskI/zz3/+k/e///3poF1aWjrk9qnaCv/zP//D5ZdfzrPPPpv1uONTTz01ffynnnqKBx54AICTTjqJpqamdCA855xzCAaDBINBTjzxRF544YU+H1SPPvoo11xzTTrzmjrmY489xne/+126urpobm7mkEMOSScoUhnuww47jG3btgEQj8e59tprWb9+PW63m7fffnu/z+Gpp57i4osvtgtlzZjB8ccfz4svvsjZZ5+9z7YrVqxg27Zt3Hvvvbz3ve8d8rjnnnsuLpeLgw8+OJ2dzdZzzz3HG2+8wTHHHANALBbj6KOPHnDbs846CxFh+fLlzJgxg+XLlwNwyCGHsG3bNlatWsVvfvMbbr/9dhKJBPX19bzxxht9EhTPP/88J5xwAhUVFQBceOGFWb12KjdM97jkdrt597vfzf333093dzfz5s0b9Lgnn3wyRUVFABx88MFs37590ARFfx0dHTzzzDN84AMfSC8b7JelE088kYKCAgoKCigqKkrHreXLl6d7l23YsIGvfvWrtLS00NHRwXve854+x2htbaWlpYXjjz8esJO0g538ZXrqqafSiY4lS5ZwwAEH8Pbbb/f5m085/fTT+drXvsaMGTO48MILhzzuQDE3W//4xz9Yt24dhx9+OGD/wlfp/BDSXyr2Ll++nEMOOSSdLF6wYAE7d+6krKyMn/zkJzz44IMA7Ny5k3feeadPguLJJ5/kvPPOIxQK9TnmROhqi1HzVjM1G/diWYZg2EtB2b7JIZU/XC43oUI7bhjLom3Pbpp2bgegZNZsO1kxZy7Bgsn70W4iTPfPmoHaDHbMPe+88wiH7WTV+eefz5NPPsnZZ5/N/Pnz+5yXnXzyyelztsHi6P7OHwc7Zwb7fPuLX/xiuufacF+/t956i/nz57N4sf2jyEc/+lFuvfXWARMUqed633338fzzz/Nf//Vfgx73iCOOoLq6GoBVq1axbdu2QRMUA3n00Uf7DLdsa2ujvb2dgoKCPtsdfvjh6c+MhQsXctpppwH265DqTVhTU8OFF15IfX09sViM+fPn7/N4Tz/9dPo7zUc+8hG+9KUvZd3WoWiCYpyIz4fH+aM3xmC6uuh47DE6/vkYiOCfP4/AsmX4DjgAz4wZ4zqV6VA9HcbLIYcckv4Hm9LW1sbOnTtZuHAhTU1NIz72Pffcw549e1i3bh1er5d58+YRjUZZvHgx69at4+GHH+bLX/4yp5122oC/pKdk80HR3+WXX85ZZ51FIBDgAx/4QJ8uWkNJBePU4/aXakf/9vS/P1Cbo9Eon/jEJ1i7di1z5szhhhtuIBrtHQfq9/sB+8tJqgbGj370I2bMmMErr7yCZVkD/mLY33CLwp599tl8/vOf5/HHHx/y/U61L/MxPB4PVsYwqczn079Np556Kvfee+9+25N6HJfL1ecxXS4XiUSCrVu38v3vf58XX3yRkpISLrvssgEfV3/VGxtD9XQYLxqX7J4A5513HjfccMOQx8z8G8mMHZltG+zv0rIsiouL070Csn2czL/N1N8l2F15//CHP7By5UruvvtuHn/88T7HGMlrltovWz6fj8MOO4wf/OAHvP766/zpT38adNuBYu5wYtpHP/pR/t//+3/7bdP+Ytrjjz/Oo48+yrPPPksoFOKEE06Y9JhmjKG1oZvtrzfRuLMdcUEw4tMhHFOQuFwECwoJFhRijEVnSzMbHn8EAxSWV1K95GDK5hxAuLhkXP8NDtXTYbzoZ02vZDLJa6+9xtKlS/vUPeovm8+CofYZKJ4P9RyPOeYY/vrXv/KhD30IERnR6zccF110EatXr+ajH/0oriG+8w322Zv5GTLY5wfYn7/PPvsswf3MOpnN6/3JT36Sz33uc5x99tk8/vjjg543jMffr34iTAARwRUO4505C++sWXgqKojX77KLbf70Z+y68Ub23ncf3a+8QqK5eUrMDnLyySfT1dWVzq4mk0n+7d/+LV3NdjRaW1uprKzE6/Xy2GOPsX27nZ2vq6sjFArx4Q9/mM9//vO89NJLABQUFPSpnpvZxt/85jfpD4r+3dsG2reqqoqqqiq+/e1v96ldMBzHHXcc99xzD2CPAysvL6fQ6Xnzxz/+kWg0SlNTE48//nj6V7SU0047jdtuuy0dPJqbm9OBqry8nI6OjqyKA7W2tjJr1ixcLhf//d//PeAY5/7P/bjjjuP+++8nmUyyZ88ennjiCY444ohBH+OKK67g61//ejojPhwHHHAAb7zxBj09PbS2tvKPf/xjwHYdddRRPP300+kuk11dXSPu0dDW1kY4HKaoqIjdu3cP+AvskUcemU64xONxfvvb347osdTk0Lhk/zr35S9/uU9dmOGYMWMGb775JpZlpX+Z79+mwsJC5s+fn/77MMakxx+PRHt7O7NmzSIej6djZ6bi4mKKiop46qmnAAbcpn8boW8sfvvtt9mxYwcHHXTQoO34t3/7N/793/+9Tw+EbM2bN4/169djWRY7d+5Mj6kG8Hq9xONxwH7/f/e739HQ0ADY73/q39Jwtba2UlJSQigUYuPGjTz33HP7bHPcccfx4IMP0t3dTXt7+5CJl9FIJix2bW3l+Ye2sPav29hb30mkxE+kOKDJiWlAxEUgUkBhRSWF5RXEujt586n/48l7f8kTv76bTWufp21Pw5Sp36afNbZ4PM6Xv/xl5syZw4oVKzjuuOP4wx/+QFdXF52dnTz44IP77akwGgOdM6d861vfoqysjE984hPA4K9fpszXY8mSJWzbti19/vnf//3f6V58A5k7dy433XRT+vGGa968eaxbtw6gT/Kr/3t02mmn8bOf/Sx9P5sfCgbT2tqaLub5y1/+csBtjjnmmHRtq8E+e0dCPxUmgbjduIuL7WKbs2bhLigkuvEt9t53Pw3f+z4NN/87LX/8I9E33iDZ1jbZzR0REeHBBx/kt7/9LYsWLWLx4sUEAoF0tfJEItEne5cpNf4uden/hfuSSy5h7dq1rFmzhnvuuYclS5YA9jjiVGGxm266KV0o7Oqrr+aMM85IFwhKOeSQQ7j++us5/vjjWblyJZ/73Of2actll13GNddcky6Ik3r8OXPmjHhWhxtuuIG1a9eyYsUKrrvuuj5/9EcccQTve9/7OOqoo/ja175GVVVVn32vuuoq5s6dmy5q9Otf/5ri4mI+9rGPsXz5cs4999x9khoD+cQnPsEvf/lLjjrqKN5+++0+PTxSysrKOOaYY1i2bBlf+MIXOO+889KPe9JJJ/Hd736XmTNnDvoY1dXVfPrTnx7GK9Nrzpw5fPCDH2TFihVccsklfeo8ZL6fFRUV3H333Vx88cXpoqOpYnxf//rXeeihh7J+zJUrV3LooYdyyCGHcMUVV6SHjWSaNWsWN9xwA0cffTSnnHIKq1evHtHzU5ND45L9Gnz+85/fZzxytm6++WbOPPNMTjrppD71Zy666CK+973vceihh7J582buuecefvGLX7By5UoOOeSQdCG3hx56aMhfpQZy4403cuSRR3LqqaemX9f+7rrrLv71X/+Vo48+etBfjlasWIHH42HlypX86Ec/4hOf+ATJZJLly5dz4YUXcvfddw/6/oP93nz0ox8dVttTjjnmmHQX5s9//vN9YsfVV1+djnUHH3ww3/72tznttNNYsWIFp556avpXx6uuumqfWkFDOf3000kkEqxYsYKvfe1rHHXUUftss3r1ai688EJWrVrFBRdcMOZfFnq64mx7tZGnfvsOG/6vlng0SUGpn1ChT3ujTVMigj8UprCigsLyCoyVZNOLz/LM737NY7+6g43PPEFzXQ3JEcx6lium+2fNJZdcwooVK1i2bBmdnZ3p+L969Wouu+wyjjjiCI488kiuuuqqca3jNdA5c6Yf//jHRKNRvvjFLw76+mXKfD2MMdx111184AMfYPny5bhcLq655poh2/Mv//IvfeqJDMc3vvENPv3pT3PsscfidvfOZnTWWWfx4IMPpotk/uQnP0l/xzj44IO57bbbALuw5lVXXTWsx7zhhhv4wAc+wLHHHjvoOcMtt9zCrbfeyuGHH75P3Y7RkKnwa31/a9asMcP5EAeove7L9swcOfCBaUWjWO3tGOcXFXdZGcGDl+JbuBDv7Grckf0XGnrzzTdZunTpeDd1xG655RZqa2v57ne/O9lNGbZrr72WQw89lCuvvHJMj3vDDTf0KXSj8ttAf4Miss4Ys2aSmjShBorDGpfGz3jFJaVgeH+7xhg69vaw881m6je3AoZgxIvHO/ZThLY3RznhQ0twe7P/vW06xWEY/jmxMYa//cePKRqk9sl4SsRidLe3YywLl8fDzIUHMnPhYkpmVeH1Z1+fRD9rxo9+1qiRGO45sdagyEGuQACXUxPAGIPp7qbj6WfgqacwxuCtrCSwdCm+BQvwVs3OKmGRS6688ko2bNjAb37zm8luyrAddthhhMPhfarYKqXym8YlpUbHSlo013ey7dUmWhq6cLldhIt8uFyT/8OPyg8en48CZwhVMpFg95ZN1L31JiIuyqrnMmvxEkpnVxOMFOznSLlLP2uU2j9NUOQ4EUFCIVzOmLV0wc2nnoYnnrBnCKmoILDkILuHRVUV7oLcDty/+MUvJrsJI5Ya/zUe9le0TqmxJiI3AucAFtAAXGaM2WfuRBEpBu4AlgEGuMIY8+wENnXcaVxSamRi0QS7t7ay7bUmnSZUjRm3x0O4uASwC/+17tlFY812MIaC8gqqFi+lrHouBaVl41pofqzpZ41S+6cJijwjIkg4jMupGZBOWDz9DDxpFwhzl5ZgnXQSVnc34vWC260nCkqpgXzPGPM1ABH5FPB1YKBBlLcAfzPGvF9EfMDoqnwppfJeZ0sPNW/tpfbtvZikIRDRaULV+HClZwSxz3tj3d289eyTAPiCIWYduJjKeQsomjELj9c7ya1VSo2WJijy3IAJi2gUE4uRcCrzisuNBPyI3494vfZFExZKTXvGmMwqvGHs3hF9iEghcBxwmbNPDIhNRPuUUrnFsgx76zvZ/noTzXWduNxCqMCLy50/v2Cr/GYX2Qzhd3oWJ2Ixdrz+KttfXY/L7aJ87jx8s+dhJZO43GNf90QpNf40QTHFiAgSDILLjXh99kJjYUWj0NUFiP2fz4crEEB8PsTjQTSIKzUtichNwKVAK3DiAJssAPYAd4nISmAd8GljTOcAx7oauBrsKbWUUlODMYaat/ay/bVGujvieH0uHcahcoLH56Og1K5bYSWTNNfVUFo2g/amRlweDz5/ALfPh9vj0X+vSuUJTXlPB+JC3B7E67N7T3g8EE+QbG0jsaeReH098V27SLS0YHV1YcXjTMXZXZSajkTkURHZMMDlHABjzPXGmDnAPcC1AxzCA6wG/tMYcyjQCVw30GMZY243xqwxxqypqKgYp2eklJooyYRFtDNOT2eCt56tB2MoLAsQLNBpQlXucbndhAqLcLncuD0ejGUR7eygc28z7Y176GprJd4TxbKsyW6qUmoI496DQkTuBM4EGowxywZYfwnwJeduB/BxY8wrzrrTscc+u4E7jDE3j3d7p6qmX/yC+O7dQ29krN4O3oLdC8PtQlxuEAGXOCvAO2sWlZ/+1JCHu+KKK/jzn/9MZWUlGzZsGHS7W265hZ///OcYY/jYxz7GZz7zGQBeeeUVrrnmGjo6Opg3bx733HMPhYWFPP3003z84x/H7/dz7733cuCBB9LS0sKFF17I3/72twFPmuLxOF/72td44IEH8Pv9hEIhvvnNb3LGGWcwb9481q5dO+gcv0rlM2PMKVlu+mvgL8A3+i2vAWqMMc8793/HIAmK4Xr+oS20N0fH4lAAFJQGOPLsBUNuo3FJqaEZY0jGLWLRBImY/UVOXGh9CZV3XC4XuFy8+KcHaG9qAmPSp7kulyBuDy5xIcOcaaawvJJjLvzwkNvoZ41SI5d1DwoRWSsi/yoiJcN8jLuB04dYvxU43hizArgRuN15PDdwK3AGcDBwsYgcPMzHVo747t14Z80a+lI1G+9s51JVhXdGJZ7SMtzFxbiLinAXFuEpLcFTUUG8pgaTTA7Z0+Kyyy7jb3/725Dt2rBhAz//+c954YUXeOWVV/jzn//MO++8A8BVV13FzTffzGuvvcZ5553H9773PQB+8IMf8MADD/Cd73yH//zP/wTgxhtv5Ctf+cqgv+h87Wtfo76+ng0bNrBhwwb+9Kc/0d7ePpKXUqlJMYoYPNQxF2XcPRvY2H8bY8wuYKeIHOQsOhl4Yywev705SmFZYMwu2SQ7NC4pNTDLMsSiCTr39tDVFiMZt3B5BLfHRerHCWUbTTwWkdNF5C0R2SQi+yR7RaRERB4UkVdF5AURWZaxbpuIvCYi60Vk7Wifx3TR0dxEYXkFhRWVFDmXSGk5ocIiAgUFBMIRQkXFRErL7G0qZwx5aWts2O9j6meNUiM3nCEeFwFVwIsicp+IvEey6N9njHkCaB5i/TPGmL3O3eeAauf2EcAmY8wWpyjbfdjT4akJIfZPJm5370UEk0hiolGsnijx+noSu3aRaGoi2dGBFY32SVocd9xxlJaWDvkob775JkcddRShUAiPx8Pxxx/Pgw8+CMBbb73FcccdB8Cpp57KAw88AIDX66W7u5uuri68Xi+bN2+mtraW448/fsDH6Orq4uc//zk//elP8fv9AMyYMYMPfvCDY/JKKTVBRhSD9+NmZ7jHq8BpwKcBRKRKRB7O2O6TwD3OdquA74zycSeNxiWl+komLKIdcTr2Rol2xAFwe1y43C5EExODGVE8zvLHt68A650f7i7F7kmc6URjzCpjzJpRP4tpTERwuVx2LwsRrESCeE8PPV1dxLq7ScTiWEmLkY541s8apUYu6wSFMWaTMeZ6YDF2V+A7gR0i8k0RGfovMHtXAn91bs8Gdmasq3GWDUhErnYy2mv37NkzRs1RfYiAy0laiMuewlQEq6eHZEsLicYmO2lRX0+isZFkW5tdnNOYQXtaLFu2jCeeeIKmpia6urp4+OGH2blzZ3rdQw89BMBvf/vb9PIvf/nLXH311fz4xz/m2muv5frrr+fGG28ctNmbNm1i7ty5FBYWjvELoqYrM8S/6XF8zDGPwcaYC4wxy4wxK4wxZxljap3ldcaY92Zst96pLbHCGHNuRlJ5StK4pKY6YwzxWJLO1h46W3qI9SRwuezeEsPt7j5ZuttjdLb0TMpjjyIeZ/Pj28HAP5zH2QjME5EZY/4kVJqIIE6ywuVyYYwhEY8Ri3bT09VJLBolmUhgWSNPWAxEP2uUGtiwimSKyArgB8D3gAeA9wNtwD9H2xARORE7QZGqRzHQJ+SgYUGLs00G2bcAp9cHLhcmFifZ3k5ibwsmkSBeV0d8924Se/eS7OzE6unBJJMsWbKEL33pS5x66qmcfvrprFy5Eo/HLo1y5513cuutt3LYYYfR3t6Oz2fPSrJq1Sqee+45HnvsMbZs2UJVVRXGGC688EI+/OEPs3t/tTaUyoIxBpNIYPX0YHV1kWxrI9HURHz3buJ1dVid+0xiMe7GMwarXkuXLtW4pKYkyzL0dCfo2NtDd1sMK2HsYRxuV14UvYzHkuze2sbrT9Wx4Yk6dm1tm7Si3iOMx9n8+PYKcL7zGEcAB9Dbu9gAfxeRdc6sSYO1TX+0G4XM3hXiEkwySbynh1h3N7HuLpJxu7eFZSVH9Tj6WaPUwLIukiki64AW4BfAdcaYVNr6eRE5ZjSNcIL8HcAZxpgmZ3ENMCdjs2qgbjSPoyaIuMANgtueMUTEvrYstm/axPmXXQbAxz78Ya6+9KNcetZZfPSCCxCvj69+8waq587FGMOSJUv4+9//DsDbb7/NX/7ylz4PY4zh29/+Nvfffz/XXnst3/zmN9m2bRs/+clPuOmmm9LbHXjggezYsYP29nYKCgom7GVQuc0YY/fuSSYhmbSvEwlMPI5JJDCJJGDsnkPGAHahWBGXfX+Cq4CPZwye7nbu3MlZZ50FwDXXXMM111zDlVdeyZVXXgnAV77yFaqr7e8HGpdUvjHGYCXs+hLxHvsLlcstuDz5MZGbZRlaG7porOmktaELYyBU6GPO0hL8ocmZOnIU8TibH99uBm4RkfXAa8DLQMJZd4wxpk5EKoFHRGSjM5S67wGNuR2nptuaNWt0WrZRkNRnv3PfGEMymaCrtQUAt8eDx+/H43WmMnUN/nelnzVKZWc4s3h8wBizJXOBiMw3xmw1xpw/0gaIyFzg98BHjDFvZ6x6EVgkIvOBWuzxfh8a6eOoySbgcjN37gGs/edjGcsNDbt3U1Fayo6at/j973/PE3/4A/G6OvbsbWHG7CqM282N3/wmV3/sYxjLSgf/X/7yl7zvfe+jpKSErq6udLa7q6urzyOHQiGuvPJKPvWpT/Ff//Vf+Hw+6uvr+cc//sGHPzx0FWaVv/okICzLTkIkEvYlnsAkE06SQexTRmMnI8QZyiReD4MWhrMm5ZfGcYnBCubMmcP69ev7LGtoaKCyspIdO3bw+9//nmeffbbPcsuy+Pa3v80111zTZz+NSypXGMuQiCfp6U5iJSznY1jyoqeEMYbO1hhNNR001XWSjFt4/W4q5xVSXh0hVGj/mjyWswAN00jj8X5/fDPGtAGXO8cU7GLyW511dc51g4g8iD1kZJ8EhRo/du8Kwe30dLAsi57OTnqwe1W6vV68fj9ur2+f3j36WaNUdoaToPgdsHqAZYcNtZOI3AucAJSLSA32FHZeAGPMbcDXgTLgP5wPzYQzVCMhItcC/4s9zeidxpjXh9FelcE7Ywbx+voxPd7+fPiaf+GJZ56hsbmZ+Yeu4utf+AKXf+iSflsJF37sYzQ178Xr9fCTm2+mtKISMNz/4O/5z7vuAuDcM87gI6efQbyuDnG56YrHuPsXv+BvD/0JKxrlM5/6FBdccAE+n4977713n7Z8+9vf5qtf/SoHH3wwgUCAcDjMt771rTF4JdRkMZYFlmVfJ5P2dSoB4VxSSQd7h8xeEIKkir/mTxG4EcXgXFZQGqCtaWynGd2fiy++mMcff5zGxkaqq6v55je/mf71KtMFF1xAU1MTXq+XW2+9lZISu1j/vffey6233grA+eefz+WXX57ep6uri1/+8pfpX70+97nPaVxSE85KWsR6ksS77aLV4hJcHsmLgpc93Qmaajtoqukk2hlHXELJzBBls8MUlQdzqT7GSOPxfn98E5FioMupUXEV8IQxpk1EwoDLGNPu3D4N0ICRhUhpGe1NYzfUJVJalr6dmso0xUomiXZ0cOW/XMNTzzxDU3Mz1bNn841vfIOrPvaxfRKE+lmj1L5kf2P3RGQJcAjwXeALGasKgS8YYw4Zv+aNzJo1a8zatcObfan2ui/jrarKi18WsrH7iCM4aN68yW7GOLB/FccY+wtp6ktnap0znCR1weOxv4i6XL3XU+Q9nqqMM3wilYDAsuzZYRJJSDqJh1RCApwhGJB+/8WZgcYljFfywSTiuAsKcA9RdOrNN99k6dKlfZaJyLrhVl7PxxgMA8fhgV4TpdToGWNIxi1i0QSJmB0bx7K3xDub3yZWFx6TY/WXTFjs3dVFU01HOmEZKfVTPjtCyawwHu/gXebbm6Oc8KEluIfYpr+RxOGMfUcdj0XkvcCP6f3x7SYRuQbsH+5E5GjgV0ASe0rnK40xe0VkAfCgcxgP8GtjzE37PEA/wz0nNsbwt//4MUWVlVnvk2tC8w/iwAXzJ7sZGOxzVWM537UEPF4fHr8ft8drDwnRc1I1DQz3nDibHhQHAWcCxcBZGcvbgY+NrJlKjZTYX0gFxOUeYL395dbq6QFnBpH+v6CL25VOXIjHA263PWzE5UpfayJjbKWSSX2SDpYBK6P2QzIJSQuTKjrV530jI/lgDxeS/Or9MBoag5VSA7IsQ6InSU93AmMZOzzmQW8JYwztTVEaazrYu6sLK2nwhzxULSqmrDpMIOSd7CYOZtTx2BjzMPBwv2W3Zdx+Flg0wH5bgJXDbrGaNILY56pO/sxgSCbiJGKx1AZ2wsLnx+314HYPXcNCqelivwkKY8wfgT+KyNFO0FQqhzlfXgdd7/TASCSw4vF0b4x0HQJIfyHu0/PC7e69n0pipGoVpL80T+2kRqqmA5bVezvzfuZQi/S1k3BIJYpSHV5SPR6c1733NRTE7WWaJB6yojFYKZXJGEMyYYj3JIhHnaKXrvwoetndEbfrStR2EIsmcXuE0qow5dURIiX+nP8M1XisRmO/CQvsGhYenw+P14vL47WHkCg1zew3QSEiXzTGfBf4kIhc3H+9MeZT49IyNUrGHnua4x/2Ey+jB8aQ22V8+U5aGGIZyYzUcXo3TRfhdubSTiUsEGdOeWdZep24er+Yp46Veq8y37PBbu/T3AGGaqWWDXBtUm1OJRaM6U0yWAZj7GtMxv3Mx8hsS//l4vx2l7rtSYWZ6fNvcSynvZtqMVjjklIjYyxDPJYkFk1gJcyEFb0cbTxLxJI013XSWNtBZ4v9RayoIkj10gglM4K43PnzBWyqxeOpKz/OgfsnLMCuYWEX3bS53G4nYeHD5fHgcrtz/nkplWkknyHZDPF407keXlEHNam8nV3s7eygJBzRQDYivYkM514W+iUCkkkgiTVYoiDzsVLTWaYOM1ZvWWaPhdRMFf2l/31kJG4ykyUuQWT6JRlGyhhDU1MTgcD+CzZmacrE4EAgQFNTE2VlZRqXlMpSMmER77ETExgmtOilMYaWtr2Y+PCSCPbUoN001XbQstueGjRY4GXO0hJKq8L4AsOp0Z5Tpkw8nsqsnh5a2tspLijIu8+a/kU3jbGIRbuJdXcD9g9bbp8Pj8+e1tTl9mgvC5WzRnpOnM0Qjz85178cYdvUJCh6+y1agD3hEPqlUqkxZiWRQADXIAE3EAik5zIfrakUg6urq6mpqWHPnrGrpq7UVGSMwUoaEnELk3SGHbpgMj7PTdxFvMm//+2MoastRmNNB811nSRiFh6fa5+pQfPZVIrHU1l0Vw17gCa/n6l2Dmyc3q+Zv0qLy4Xb7fSucHpY5FtiRk1dIzknzjqFLSKPYM/73OLcLwHuM8a8Z1iPqCaEO56g9HWdlVWp8RDftYuCk0+i4KSTJuwxp0IM9nq9zJ8/+ZXVlcpVXW0xdm1uYefGvcRjSXx+H/5Qblf6j3UnaKrrpLGmg2hHHHFB8YwQ5bMjFFXk1NSgY2YqxOMpzUoSrds+2a2YEMYY4j1RYl1dWJYFCC63i+IZMymdPZeiikoipWUEIvnXm0RNX8PpY1eRCsQAzpRH+TsHkVJK5ReNwUpNQcmkxd76Tna80czeuk5wQTDiIxjJ2ZkseqcGre2grdGZGrTEzwHLyyidFcLjHWiWrSlF47HKCSKCLxDEFwiml1nJJB17m2muqyM1/Njj9VE8cxalVdUUllcQLinVpIXKWcNJUCRFZK4xZgeAiBxAetC9UkqpcaYxWKkppLsjRv3mVmrebCYeTeLxu4iU5u5MFsYY2pujNNV00lzfiZU0+IIeqhYVUTY7QiCcuwmVcaDxWOUsl9tNIBwhEI6klyUTCVr37KZxx/b0qBe3x0vxjJmUpJIWxSUECwtxuaZ8glHluOEkKK4HnhKR/3PuHwdcPfZNUkopNQCNwUrlOStp0Vzfxc43m2iq7URECBZ4cvrLfbQjTmOtMzVodxJXamrQ2ZGcTqiMM43HKq+4PR6CkQKCkYL0smQiQXvTHppqa0jl11ziIlJWTsmsKooqZxAqKiFcVIx37Ap/K7VfWScojDF/E5HVwFHYubfPGmMax61lSiml0jQGK5W/uttj7N7axo43moj3JPF4XRTk8Jf7RNyZGrSmk84We8LDooog1QeFKZ4Zwp1HU4OOB43Haipwezy4IwUEMpIWlmXR093JzjdeY/ur6xGXYCwLfyhMYeUMimfOIlJSRqioiFBhEW5P7iZXVf7ab4JCRJYYYzY6gRigzrme63Rve2n8mqeUUtObxmCl8pNdWyJ/ektYlqFtTzeNNR20NHRhLAhGvFQvKaFsdl5PDTpmNB6rqc7lcuEPhvAHQ+llxhiSiTgtu+rYs30b6dFMBoIFBRRWzKCocgbhklJChUUECwrx+PJ/1h41ebL5tPkcdre1HwywzgATV8ZeKaWmH43BSuWRrrYYu7bYM3Ekokk8vtztLZGaGrSppoOmzKlB5xZQ5kwNmovtnkQaj9W0IyJ4vD48Xh/B3s4WGGNIxGI01+5k95ZN2KFCMMbCH45QUFpGYUUlkdJyggUFBAoKCYTCiGt698BS+7ffBIUxJjWm7gxjTDRznYjogCSllBpHGoOVyn3JuEVzfSc73mhi7+4uROzeB8Ec7S0RiyZoqu2kqbaD7nZnatDKEOXVEQorgrim4NSgY0HjsVK9RASv34/X7yeYsTzV46KtsYGmuhpM0sLOXhhEhFBRMZHSMgrKKggXFxOIFBAIR/CHw1qgUwHDK5L5DLA6i2VKKaXGnsZgpXKIMYbOlh7qN7dS+9ZeEgkLn89NQUlu9pZIJi1adnXRWNtB2x77u3W42M8By0oprQpPh6lBx5LGY6UGkdnjon/WzliW3euiZicNWzZhDHadC2MPGwlGCgiXlBIpLSNcXEogEsEfChMIh/EGgjkZW9XYy6YGxUxgNhAUkUNJT05DIRAadEellFKjpjFYqdwSjyVp3NnOzjeaaWuK4nIJwQIvIU/udVs2xtDR3ENjbYc9NWjC4Au6mXVgEeWzIwQiudnDI1dpPFZqdMTlwhsIDDgriDEWiXictj27aa7diZVIIi4BEYxlELeLYEEhoaJiwkUlhItL8IfD+IMhfKEQ/lBIi3ZOEdn0oHgPcBlQjT3mLhWM24GvjE+zlFJKOTQGKzXJjGVobeymflML9ZtbMZbBF3DnbG2JaGecptoOmmo66elO4HILpbPClFWHKSgN5GSb84TGY6XGiYgLr8+P1+cfcL1lWSTjcdoadjkJjIQ9dEQEMQZjDB6fn0CkgGBhoV2ws7AQfyiMLxDCFwziDQTwBYK43NpjLJdlU4Pil8AvReQCY8wDE9AmpZRSDo3BSk2eaGecPTva2PnGXro7YojbRajAiysHp9lMxJM013fRVNNBx157atDC8gBVi4spmRnCnYM9PPKNxmOlJo/L5cLl1LwYiDEGy0qSiPfQsqueppodJBMJBLF7YjjbGMvg9fvxh8MEwhG7BkbEvvb6A/Yl4Mfjsx/L48vNRPRUNpwaFNUiUoidJf459ji764wxfx+XlimllMqkMVipCZCaHrT2rb001rRjgGDIQ0Fp7tVATPXsaKzpoGW3PTVoIDU1aFUYX3BqTg1qzx5g4Qxbnwwaj5XKMSKC2+3B7fawT/GLDMYYrGQSK5mgvbmR1oZdJBMJLMtCcHpk2FumJlTF6/fjC4bwBYL2cJJgCF8ojD8UwuOz6224vT48Pi8enx+P14vb68Xl9mhyYwSG88l1hTHmFhF5D1AJXA7cBWgwVkqp8acxWKlxkip4uWtLG7Vv7yXRY08PGin2p395yyVdbTEaazpoqusg0WPh8bqomFtA+ewIoaKpOTWoZRliXQnisSQAwQIfB66uwOWZlOc64ngsIqcDtwBu4A5jzM391pcAdwILgajzWBuy2VcptX8igtvjwe3x4B24M0YfmQmNrrYWOvY2YTkJDWNZzkFdZIZdYwwYe9YSj89vJzH8fry+AB6/D68/YPfQCNhDWtw+H26PB5fbk3HtxuWxEy7iduN2u51rD+JyTck4nzKcBEXqVXgvcJcx5hWZyq+MUkrlFo3BSo2xWDRhF7x8cy/tzU7By4iXYA4Wj4xHEzTVddJY40wNKlA8I0TZ7AhFlVNzatBE3CLaGbcL5IlQMivEjHmFFM8IEyzwTuYJ+ojisYi4gVuBU4Ea4EURecgY80bGZl8B1htjzhORJc72J2e5r1JqjGUmNIbLGAsraScy4j1RYl1dWFYSY1npBIfdcwNwem+kpmPtdyS7x5ixr0XA5fbgcrudhIadzEjfd3lwedy4XG772u3cdruR1DKXC3G5cLnczrXLrs0hYvckcUlvjxKx2yci6egn6RtCYUUlocKiEb7C+xrOK71ORP4OzAe+LCIFgDVmLVFKKTUUjcFKjQEradGyu5u6TXvZva0NLPAFPTlZ8NJKWuzd3U1TTQetjd1gIFzs44BDnKlBfVOr0Jsxhlg0Saw7AYA34KZqcQkV1RGKKoK59HxHGo+PADYZY7YAiMh9wDlAZpLhYOD/ARhjNorIPBGZASzIYl+lVA4RcY1L/R/jFAU1xgLLpHt5JBNxYlG794axjD1IxblO9eroc01vb4/0bbvhiAGTzkcIBuMkJZwMiQEEYt3dLDvhFBasPnzMnt9wEhRXAquALcaYLhEpw+7SNiQRuRM4E2gwxiwbYP0S7G5xq4HrjTHfz1i3DXt8XxJIGGPWDKO9Sik1lYwoBiulUkM4YjRsa6Xmrb3Ee5K4PS7CRf6c63lgjKFjbw9NNfbUoMmEwRtwM2tBEWXVYYIR32Q3cUxZSYtoV4Jk3P5+X1AaYO4hZZTOCufsEBtGHo9nAzsz7tcAR/bb5hXgfOApETkCOAB71pBs9gVARK4GrgaYO3duFs1SSuUTEac3Ay57wNckam/cM+bHzDpBYYyxRGQrsFhEhlMp6m7gZ8CvBlnfDHwKOHeQ9ScaYxqH8XhKKTXljCIGKzVt7TuEwy4iGQjn3hCOaFecpppOmmo76OmypwYtmRmivDpCQdnUmho0EUsS7UpgLHC5oaw6wox5RRTPCOHPg8Keo4jHA72J/Ut93gzcIiLrgdeAl4FElvum2nc7cDvAmjVrJq+UqFJKjUDWnwIichXwaews7nrgKOBZ4KSh9jPGPCEi84ZY3wA0iMj7sm2LUkpNNyONwfs55o3YXYQtoAG4zBhTN8B2nwWuwj4Zfg243BgTHenjKjWekkmLll1d1L69l8adHRgLfEF3Tg7hSMQt9tZ30ljbQUezPTVoQVmAqkVTa2pQYwyx7gSxqF3g0h/yMvfgUspmRygsD+bd8xxFPK4B5mTcrwb6xFxjTBtObwynrsVW5xLa375joaO5CSuZHOvDKqVU1oaTpv40cDjwnDHmRGdoxjfHp1lpBvi7iBjgv5yM8IC0O5tSaoobjxj8PWPM1wBE5FPA14FrMjcQkdnYvdwONsZ0i8hvgIuwe8cplROMMbQ3Rdm1tZX6d1pJxJK4vS5CRb7cG8JhGdoau2ms7WTvri6MZQiEPcw+qJiy2ZG86EGQDStpEe1MkEzYQzcKK4LMW1lE6czwVJhpZKTx+EVgkYjMB2qxY+mHMjcQkWKgyxgTw04MP2GMaROR/e47Fh7+2Q+oeeM1ApEIwYIiQoVFBAsLCRUWESgoHFGhQKWUGo7hRJmoMSbqjHnxO4V7Dhq3ltmOMcbUiUgl8IiIbDTGPDHQhtqdTSk1xY15DHZ+qUsJM0h3YezPiqCIxLF/xRvzX+2UGonujhgN29up3biX7o4YkpqFoyD3hnCkpgZtruu0a2B4XVTMiVBWHSGc/1/YgX2HbpTPKbBn3agM4ZsiiRfHiOKxMSYhItcC/4s9cvxOY8zrInKNs/42YCnwKxFJYhfAvHKofcf6ia1537lEOzqwkgm621pp2VXXWzgP8IcjhAoLCRamkhdFBDVxoZQaQ8OJJjVOVvcP2MmCvYzzSWqqq7ExpkFEHsSufjxggkIppaa4cYnBInITcCnQCpzYf70xplZEvg/sALqBvxtj/j7IsbQnmxp38Z4kTbXt1L7VQktDFwgEgh4KSnOvNEu8J0lTXQdNNZ10tcUQgaLKIOXVEYoqQrjc+Z2U6D/rhi/oYc7SUsqrIxRWBHG782voxjCMOB4bYx4GHu637LaM288Ci7Ldd6wtOOwI3n7+GYoqKwGwLItoRzvdba10tbU516207NplzyDg8IfDTo+LzORFIW5P7iULlVK5bThFMs9zbt4gIo8BRcDfxqVVgIiEAZcxpt25fRrwrfF6PKWUymUjjcEi8igwc4BV1xtj/miMuR64XkS+DFwLfKPf/iXYdSrmAy3Ab0Xkw8aY/xmgjdqTTY2LVF2Junda2LOjHWMMXr+bSEnu1ZWwkhYtDd001nTQuseeGjRU5GOuMzWoN3emyhwRyzL0dCVI9FiAIeLMulFWFSZcnHvvx3iY6HPiyeRyuQg5CYeyjOXpxEV7G92tdtKiu72V1oZdGCsjcREK270snGEiwcIiQgWFuL2auFBKDWy/CQoRKR1g8WvOdQR7Fo6h9r8XOAEoF5Ea7JNfL9gZYxGZCawFCgFLRD6DPQd0OfCg80HnAX5tjJmSwV8ppQYz2hhsjDkly4f6NfAX+iUogFOArcaYPU57fg+8C9gnQaHUWDKWoa2pm11b2qjf3Eoybk8NmpN1JVJTg9Z20FzXRTJh4fW7mbmgkPLZEYIF+T01aDJhEe2MYyUNIkJpVZgZ8wspmRnOyRlRxsto4/FUkpm4YHZv7U5jWUQ7O+yERUavi/6JC18oRKjASVg4vS6ChYV4vPn9t6KUGr1selCswx6XnHk2kLpvgAVD7WyMuXg/63dhVyLurw1YmUX7lFJqKhtVDB6KiCwyxrzj3D0b2DjAZjuAo0QkhD3E42TspLJSY84YQ1drjN3b26h9ay+x7kS6roQ7B+tK9HTFaaq1Z+Ho6bSnBi2eYU8NWlie31OD9taTMHi8bmbML6LygEKKK4N48rwXyCiMWzyeKsTlIlhQSLCgcIDERSfd7a10tdq9LbraWmnd3ICxemcN8QVD+/S2CBYW4fFp4kKp6WK/CQpjzPyJaIhSSql9jXMMvtkp7GYB23Fm8BCRKuAOY8x7jTHPi8jvgJeABPAyzjAOpcZKtCPOnp1t1L7VQkdLD+KCQNibk3UlknGL5l2dNNV00J6aGrQ0QNXCIkpmhfNuyswUYwzxaJIep56EP+Rl7iFllM+2ky2uqVtPImt6TjxyduKigGBBAaVVvb9LGmPR09np9LhoS/e82L1lU5/pTr2BYJ8ZRVJ1LjRxodTUk80Qj/RYYxE5xhjzdMa6a40xPxvPBiql1HQ2njHYGHPBIMvrgPdm3P8G+w79UGpUYtEETbUd1L7VQuueLgwQCHkoKM29OgbGGNoaozTWdNCyqwvLMvjDHmYvdqYGDeXnDAbG2PUk4tEkCERK/Mw5pJSyqgLCxVNjZpGxpOfEY0/ERSBSQCBSAFW9y40x9HR2poty2jUu2mjYunmAxEVGYU6nx4XX75+EZ6OUGgvZfKJ+jt6xxj8FVmesuwLQYKyUUuNHY7CaMhKxJM31ndS900pTbTvGgC+Qm8UuAbrb7alBm2qdqUE9LsqqI5RX529BSCtp6OmKk4hbIEJxZZBZC4sonRUhEMm9YTQ5RuPxBBERApEIgUiEkqrZ6eV2Uq03cdHd1kZ3WxsN27ZgJRLp7bz+QJ/eFqkEhiYulMp92SQoZJDbA91XSik1tjQGq7yWTFi07O6iblMLe7a3YxmD1+siUuxHcqzYJdhTgzbX2XUlulrtqUELK+ypQYsr83Nq0D5FLl1CeXWEmQuKKJ4RwhfIz94fk0Tj8SQTEQLhCIFwhJJZfRMXse4uu75FWytd7a10t7axZ/tWkhmJC4/f32eISLCgkFBREV5/7g0nU2q6yuZTyQxye6D7SimlxpbGYJV3kkmL1oZudm9tZdeWNqykZc/AUejLyS/4VtLQ0tBFkzM1qDEQKvQx5+BSyqrCeP35VxQyEbeTEsYyuD0uZswvYsa8Qooqg3i8+fd8coTG4xwlIvhDYfyhMCWzeseKpBMX6d4Wds+Lxu3bSCbi6e08Pv8+9S2ChYV4/fld7FapfJRNgmKJiLyKnRle6NzGuT/tqxUrpdQ40xis8oJlGdr2dLN7W++0oC63EIh4cedggUVjDJ0tPTTWdNJc30kybk8NOmN+IWXVEUJ5ODVoIpYk2pnAYPD63FQfVELF3AIKK4I5+R7kIY3HeaZP4mJm/8RFN91tqRlF7ORF487tJOOZiQtf394WTgLDG9DEhVLjJZsExdJxb8UkM7EYxmjiWymVk6Z8DFb5y7IM7U1OUmJTK4lY0q7WH/Hk5LSgAD3ddnHOppoOop32NKYlM0OUzw5TWB7MyWEngzHGkIhZRLviYOyZNw5YXkZ5dQEFZQFcefRc8oTG4ynCTlyE8IdCFM+clV5uz2bTnU5YpHpeNO7cQTIeS2/n9vr6Fud0el94A0FNXCg1StlMM7p9IhoymXb8y7/Q9fwLSCCAy++3rwMBxO9PXw+2TLxeDURKqXEzHWKwyi/GMrQ1Rdmzo426TS3Eo0nEJQTCXoI5WmQxmbDYu6uLxpoO2puiABSU+pm5sIjSmWHc3vzpXWCMId6TpKcrkR6KsnBVJWXVkZwtNjpVaDye+kQEXzCELxiieMbM9HL77y7qJC16kxfNtTtp2Lo5vZ3b680YJlJIsMC+7Qtq4kKpbGllJKDo7HNINDYhHg+mpwfT00OyrQ0TjWL19EBGcZ19uFy9SYuMBMdAyzSxoZRSKh8Zy9DeHKVhRzv177QQiyacpISHQCg3kxLG2ImUppoO9u7qwkoa/CEPVYuLKZ8dxp+j7R6IMYZYNEmsOwEGwsV+5qwpo3x2hFCRTgeq1HgTEXyBIL5AkKLKbBMXGT0uPF6C6R4XvT0vfMGQ/v0q1Y8mKIDi886l8/nn8VZVDRgkTCKB6enBikbTSQsTjdr3nYRGal2yvR3T2IgVjQ6d2BAZVkIjvZ1PT0SUUkqNvz5JiU0txLoTztR/HgpCuVvxvrs9RmNtJ021HcSjSdweoWx2mLLZ+dXDwB4jn6QnmkAMREoDzFteRtnsAoIF+iOHUrlgsMQFQLwnas8q0t7mDBVppaW+lj3btqS3cXk8hAqK9inQ6Qtp4kJNX8NKUIhIEJhrjHlrnNqTk8TjQTweXOHwsPYzyeS+CY3U/X5JDquzk2RzMyYaxWQU59m3MWInLbJMaPRJbLjypwurUmpf0zUGq4mTHr6xM6OnhNg9JQpKczcpEY/ZU4M21XTQ2RoDgaLyIOVLIxTPCOLKkwKRdlIiQSyaxBgoLAswf1UFZbPDBCP5V7RzKtN4rPbH6w9QVBmgqHJGn+Xxnp6M+hZ2z4uWXfXs2b41vY3L7emXtLB7XfhDYU1cqCkv6wSFiJwFfB/wAfNFZBXwLWPM2ePUtrwnbjcSDo8ssZHqlZHRO2PAZV1dxPfutW/HYkMed9DkxWC1NzSxoVTO0BisxotlGdoau9mzo536zS3Ee5K9SYkc7ilhWYbWhi4aazppbejCGAgWepmztMSeGjSQH51EM5MSAAXlQRYcWkxZVYRAjtb0mO40HqvR8Pr9eCsqKayo7LM83tNDd3tbn+RFy+7+iQv3PvUtQoWF+MMRTVyoKWM4n943AEcAjwMYY9aLyLyxb5IStxsJhXCFQsPaz1jWvj00+vfUSA1LiUaJt7Skh6gM2Z5BemxkFgwdqJioJjaUGlM3oDFYjREradHWGKVhuz0laCKWBBGCkdytKQHO1KCtMZpqOmiu6yThTA1aOa+Q8uoIocL86GUwaFJidoRAOHdff5V2AxqP1Rjz+v14/RUUllf0WR6P9dDt1LfobrOHi7Q27GbP9m3pbVxuN8GCvjUugoVFBMJhRPR8XOWX4SQoEsaYVs3O5S5xuUae2OhXS8Pql+DIvJ11YsPn22+djQGTHG73aF4GpaYqjcFqVJIJi9aGbhq2t7F7axuJeO7PvpHSOzVoJ9HOOOKCkhkhyqojFOXJ1KCZhS6NgcIKTUrkMY3HasJ4fX685fsmLhLxWDphkep10bangcYd29LbiMtNsLDAqXNRlB4yEoho4kLlruEkKDaIyIcAt4gsAj4FPDM+zVITSVwuJBiEYJDhpAaMZWFisb49NFIJjYGSHe3txJ11GDN4e7zeYRUOTSc7NLGhpjaNwWrYEvEkLbu7adjWxu5tbVhJC5dLCES8BAty+0txamrQppoO2pypQSMlfuYtKKNkVgiPN/djvjGGeDRJT7ddNLugNMD8FeWUVUe0pkR+03isJp3H66OgrJyCsvI+yxPxuNPbIjVUpI22pj007uydJVdcrn16XIQKiwiEI9oDWk264SQoPglcD/QAvwb+F/j2eDRK5QdxuZBAAAKB4SU2jOlNbAzQQ6P/cBSrsTGrxAYez+AJjcxkR//hKJrYUPlBY7DKSrwnScvuLnZtaWXPznZM0uDy2EkJd44XizTG0N4UpTFzatCgh6pFRXnT08AYQ6InSbTL7ikRKfFzwPIyyqsLCBZoUmKKGHE8FpHTgVsAN3CHMebmfuuLgP8B5mKfp3/fGHOXs24b0A4ksXtxrBmLJ6OmFo/XO2DiIhmP09WnxkUbHU2NNO2TuCjIqG9hzzASiBTg0sSFmiBZJyiMMV3Ywfj68WuOmg7EmYkEv3/EiY3M3hqDJjaam3sTG5Y1+IFTiY3M4qCD1dfITGx48qMAm5oaNAarofR0xWmu72TXllaa6zvBArfPRajAh8ud+93QuzviNNV00FTbQcyZGrS0Kkx5df5MDRqPJenpjNvFOgt8HLhmRrouRj60X2VvpPFYRNzArcCpQA3woog8ZIx5I2OzfwXeMMacJSIVwFsico8xJlUJ/URjTOPon4WabtxeLwWlZRSUlvVZnkzEM4aK2Ncde5toqtmR3kbERaCgoE9vC3uoSASXS3/oU2NrOLN4PAJ8wBjT4twvAe4zxrxnnNqmVB+ZiY3hMMZg4vFBh570nx3Fam5OrxsyseF2D5nQGKhwqCsQAI9HT1bVsGkMVpmMMXS320mJ+s0ttO3pBsDjcxMp8udFTYZELElzfSeNNR10ttjfvYoqglQvDVMyI5QXU4Mm4kmiHQmMMfhDXuavrKBibgHh4vxIqqiRGUU8PgLYZIzZ4ux3H3AOkJmgMECB2P+AIkAzkBjbZ6BUL7fHS6S0jMg+iYtEv1lF2ujYu5emmp3pbUSEgNPjInNK1EBBgSYu1IgN5yfg8lQgBjDG7BWRyiG2VyoniAji84FveF1rjTEQjw/aU6NPsiMaJekUD7WiUUgmBz+w2531TCiZQ1bwevWEd3rTGDzNGWPo2NtDU20Huza30tnagwH8AXfe9DKwLEPrnm6aajpo2e1MDVpgTw1aWhXGlwdTgyYTFt0dCYxlzyAy95BSKg8opKA0kBeJITUmRhqPZwM7M+7XAEf22+ZnwENAHVAAXGiMSf1aYoC/i4gB/ssYc/tADyIiVwNXA8ydOzeLZim1L7fHQ6SklEhJaZ/lyUSCaHubPVyktZWu9la6WvfSXJvxT1uEYKSAoDMdaqioyK55UVCIS4dWq/0YzpmAJSJzjTE7AETkAOxAqdSUJCLg8+H2+aCgIOv9jDGQSOw7E8pAhUOjUZJtbenbQyY2XK6hZ0IZpJioaGJjqtAYPA2lpgNtrGmnfnMrMafYoj/kyZukhDGGrrYYjampQWMWHp/Lnhp0dphQ0fB6xU0GK2mIdsZJJizcHhdVi4uZOa+QwoogLk1KTEcjjccD/WPpv997gPXAScBC4BERedIY0wYcY4ypc5Ihj4jIRmPME/sc0E5c3A6wZs0a/ZxQY8rt8RAuKSXcP3GRTBBtb0/3tuhua6WrtZXm2lp6/5kLgUikT32LUGGRJi5UH8NJUFwPPCUi/+fcPw4nOzsUEbkTOBNoMMYsG2D9EuAuYDVwvTHm+xnrhiwkpFQuEhHwenF7vRCJDGtfk0gM2kPD9Et4JNvbMY2NdmIjMUTvz8zExiAzoAy0Tnw6bjrHjCgGq/yTiCfT04E2bGvvnQ405KGgNDDZzctaLJqgqdYewhHtsKcGLZ4Ronx2JC++2BvLEO2Kk+ixEJdQOa+QWQuLKJ4Zyvlio2rcjTQe1wBzMu5XY/eUyHQ5cLMxxgCbRGQrsAR4wRhTB2CMaRCRB7GHjOyToFBqMrjdHsLFJYSLS/ost5JJujvaM4aK2AmMvfW1GcXvU4mLwoyhIkUECgpwu3O/Z50aW8Mpkvk3EVkNHIWdAf5slkV67sburvarQdY3Y0/PdG7mwiwLCSk1pYjHgzsSGVliY5CaGqZ/EdGODpJNTfa28fgQjZHhFw51ZkzRxMbYG0UMVnmgpzvB3l2d7N7SRlNtB8ZyZt4I5/50oJmSSYuWXV001nTQ1mhPDRou9nPAsjJKq3J/alBjDLHuBD3RJAKUzY5QtaiY0llhPL7cbruaOKOIxy8Ci0RkPlALXAR8qN82O4CTgSdFZAZwELBFRMKAyxjT7tw+DfjW2DwjpcaPy+0mXFRMuKi4z/LMxEVvkc5WWurr7N7IDn840re3hdPjwq3F6qes/b6zIrLEGLPRCcTQm+md63Rve2mo/Y0xT4jIvCHWNwANIvK+fquyKSSklMJJbHg8EA4Paz+TTA5dODRzOEpnJ8nmZjvhEYsNflAnsbFPQmOgYSmZCRCfT+feHsBoY7DKTalhD831neza3Epbo1Pk0usiVOTL+d4FmYwxtDf30FTTQfOuTqyEwRf0UHVgEWXV+TE1aLwnSbQzDgYKygIsXF1JWXUB/qCeAKteY3BOnBCRa7GnJXUDdxpjXheRa5z1twE3AneLyGvYyY8vGWMaRWQB8KDzA4AH+LUx5m9j/iSVmiCDJi6sJNH2Drrb7SEi3e2tdLW10bKrnt5yLOAPh53hIZnJi0Lcntz/zFFDy+aT93PY3dZ+MMA6gz1GbjxkU0goTQsCKTV84nYjoRCuUGhY+5lkEhOLDdxDo3+yIxol7hQQNT09Q7cnM7GRbZ0Nv3+qJzYmKwarMWZZhvYmu0Bk/ZY2oh1xwOAL5E89iUzRzjiNqalBu5O4PELpzDBl1REKSnP/+djFLuOYpCEQ8XLgYZVUzC0kVDi8gspqWhl1PDbGPAw83G/ZbRm367B7R/TfbwuwcpjtVSrvuFxuQkV2Yc2y6t7llmUR7Wjv09uiq62Vlt27MBmz7vlD4fRsIpm1LjRxkT/2m6AwxlztXJ84/s3pI5tCQr0rtCCQUhNG3G4kGMQVDA5rP2NZ+w496T87SsayrBMbPt+gtTSGrLORB4mNSYzBagzEY3Y9iT07MupJiDhFLvOvzksinqS5rsuZGtT+uywsD1B9UEle1GawLEO0I04ibuH1ualeUsLM+UUUlAXy7r1QE0/jsVKTx+VyEXISDmUZpVyMZRHt7OiTtOhua6W1YaDERb9ZRQqL8Hg1cZFrsu67KCKXDrTcGDNYbYnRyqaQkFIqj4jLNfLERiy2b0JjoF4bPT32zCipxIYZPF8pPt+wEhqpZZNhEmKwGqFoR5zmXZ3s3trK3voujDG43PlXTyLFsgxte7pprOmgpaELY0Ew4qV6SQlls3N/alBjDD1dCeI9dnKo4oACqg4szouEispNGo+Vyh3icqWnMGX2vomLVI+LrjZ7uEhrQwPG6p01zxcM7VOcM1hYiMervekmy3DOKg7PuB3ALuDzEoMXvxytbAoJKaWmAXG5kEAAAgGGU6bOGNOb2MhiOIrV0UHcuT1UYgOPB09lBQUnTejoiomOwSpLxjK0N0fT9SQ6W+2eBV6fO+/qSaSkamQ01XbSVNuRnhq0Ym4B5dURQoW53/sjs65EUWWI6iXFlM0uwOvXYpdq1DQeK5XjMhMXpbN7x4oYYxHt7HSKc9r1LbrbWtm9ZRNWMjNxEbR7W/Qr0OnxaeJivA1nFo9PZt4XkSLgv/e3n4jcC5wAlItIDfANwOsc8zYRmQmsBQqx55X+DHCwMaZtoEJC2bZXKaXEKdiJ34+7qCjr/dKJjYwkRmYPjURTE56ysnFs+YBtGlEMVuMjEUvSuqebPTva2b2tjUTMPqmxh27kfv2FwaSmBm2q7aC73ZkatDJEeXV+TA2aqithWYZg2K4rUXlAIcECPaFUY0fjsVL5S8RFMFJAMFIAVX0TFz2dXfsMFdm9tW/iwhsI9qtvYV9r4mLsjKZfZhewaH8bGWMu3s/6XdjDNwZat08hIaWUGm99EhuFhfusj+/ahbeqahJa1kdWMViNDWMM0c44e3d1sXtrG3vrO+2hGy5n6EYk/4ZupFhJi727umiq7aR1jz2bSLjYxwHLSvNiek1j7LoS8ZiF2+ti9uISZi4oorAsgOR4QkVNGRqPlcpzIi4CkQiBSASqZqeX28MEO+lubaWrvXdK1IatW7CSifR23kCgzzSoqdveSRoanM+GU4PiT/QWqXQBBwO/GY9GKaWU6ktj8MSzZ92I0lzXwa4trXS12dPr5vPQjRRjDB17e2is6WBvfSfJhMEXdDNroT01aK4nXIwx9hCOrgQClM2OMHtxCaWzwri9WldCjS+Nx0pNHyJCIBwhEI5QwgCJC2eIiN3joo2GbVuwEhmJC7/fTlr06XFRiNcfmIynkxeG04Pi+xm3E8B2Y0zNGLdHKaXUwMYtBovI54HvARXGmMYB1p8O3II93O4OY8zNY/G4uSgWTTizbrSzZ4c96wZAIM+HbqREO+M01XbQVNNJT3cCl1somRWifHYkL2aySA/hSBpCRT6WHDmT8jkFBMK5nVBRU46eEys1zfVJXMzq7VVrjCHW3ZVOWKSGijRu30oyI3Hh8fsJFRQRLCoiVNA7ZMTjz/9zjdEaTg2K/xvPhiillBrceMVgEZkDnArsGGS9G7jV2aYGeFFEHjLGvDEe7Zloxhi6WmPOrBtttDZ0AeB2C/48nXWjv0Q8yd56e2rQjr29U4NWLS6mZGYItye3exykhtfEe+whHNUH2UM48iGhoqYmPSdWSg3Gnko8jD8UpmRm/8RFd29vi/Y2ulpbady+jWQint7O4/P17W1RUEiwqAivf/p85u03QSEi7fR2Y+uvB9gMXG+M+cdYNkwppdSExOAfAV8E/jjI+iOATcaYLU577gPOAfI2QZGMW7Tu6aaxtp3dW9uIddu/aPgC7inRSwLsmUVaG7tpqulg7+5ujGUIhL1UH1RM2ewIvmBuTw0KGbNwAKVVYaoPKtUhHGpS6TmxUmqk7MRFCH8oRPHMWenlxhhi0W66W52kRarHxc7tJOO9iQu317fPjCKhwkK8geCUOG/JtN8zFGNMwWDrnF/WlgH3ONdKKaXG0HjGYBE5G6g1xrwyxIfbbGBnxv0a4MhBjnc1cDXA3Llzh9uccZP6Bb5lt13gsrm+E2MZxCUEQh4KSqfOONCuthiNNR001XWQ6LHweF1UzIlQVh0hXJT7U4NaSYvujgTJhEUw4uXANTOYcUAhgRyviaGmBz0nVkqNNRHBHwzhD+6buIhHo+neFqmeF821O2nYujm9ndvr7ZOwSNW78OVx4mJUP6EYY5LAKyLy0zFqj1JKqSxlE4NF5FFg5gCrrge+Apy2n4cZ6NNtwF8QjTG3A7cDrFmzZrBfGSdEMmnR3ugUuNzaRnd7DAN4fS5Chfld4LK/eDRBU10njbUddLfFEYGiyhDl1WGKKkM5/1ztbq8JYtEk4hJmLiiialExReVBnYVD5Q09J1ZKjSURwRcM4gsGKZ7RexpnF4mOOgmL/omLWHo7t9dLsKBonylRfcHcT1yMSR9PY8x/jcVxlFJKDd9QMdgYc8pAy0VkOTAf+4Qa7OmeXxKRI5zpn1NqgDkZ96uBulE3ehxEO+O0NnSze3srTTWdWEnL6VI5NQpcZrKSFnt320M4Whu7wdhTg849pJSyqtyfGhTsoTZdHTGMZdfEOHDNDMrnFODNg7YrNRg9J1ZKjScRwRcI4gsEKars+/tTusdFWytdTq+L5vpaEtu2pLdxezxOL4tCu0ink7zwhUI5c56U+4NQlVJKjTljzGtAZeq+iGwD1gwwi8eLwCIRmQ/UAhcBH5qodg7FSlq0N/ewt76TXVtb6dzbAwIer4tgxIPLPbVqFaSmBm2q6aDZmRrUG3Azc0ER5bPDBAt8k93E/TLGEO2IE49ZeP1uDlhWzsz5RYSLc3/4iVJKKZXLvIEARYEARZUz+iyP9/SkExepHhct9fXs2bY1vY3L4yFYkFnfwk5i+EPhCf98HlaCQkQOABYZYx4VkSDgMca0j0/TlFJKZZqoGCwiVdjTib7XGJMQkWuB/8WeZvROY8zrY/2Y2erpitO6p5uGbe001rSTTFgAdi+J0qnVSyKlpytOY20nTTUd9HQ5U4PODFFenR9TgwIkYkm6OzIKXi5xCl7m+AwiSg1Gz4mVUvnC6/dTVFFJUUVln+Xxnh47aZFRnLNldz17tmckLtwepzCnM1TEmRp1PBMXWScoRORj2MXPSoGF2N18bwNOHpeWKaWUShvvGGyMmZdxuw54b8b9h4GHx+Jxhiuzl8Tuba3paTLdHhf+sAf3FOslkZKIW+ytt+tKdDTbz7mgLEDVovyYGhTAsuzeEom4hT/kYeHqSmbMLyQYyf2eHkoNRc+JlVJTgdfvx1tRSWH/xEWsh+6M+hZ24mI3e7ZvS2/jcrsJFhbh9fmoOGDBmLZrOD0o/hV7urnnAYwx9vD+ewAAlhBJREFU74hI5dC7KKWUGiPTJgb3dMVpaehmz/YBeklMsVoSmYxlaGvsprG2k727upypQT3MdqYG9efB1KBgTw/a3RlHgMoDCpm9uITimblfrFOpYZg28VgpNf14fX685RUUllf0WZ6Ixfr0tuhqa6Vj714SsZ4xffzhnO30GGNiqRNDEfEw+FzQSimlxtaUj8EtDV1sfLaezpbp0Usipas9RlNNB021ncR7kri9LsqrI5RXR/KmNoNlGbrbYyQThkDEy+Ij7OlB/SGdHlRNSVM+HiulVH8en4+CsnIKysrTy9ob91A+d97YPs4wtv0/EfkKEBSRU4FPAH8a09YopZQazJSPwR3NUdobuymsyP0psEYr3pOkqc6uK9HVFnOmBg1SNjtCcWUIlzs/nn88miDalUBEqJxXYPeWqAzp9KBqqpvy8VgppSbLcBIU1wFXAq8B/4I9HvmO8WiUUkqpfUyLGCxumbLJCStp0dLQTWNNB6177KlBQ0U+5h5cSmlVGK8/P6bXzOwtEUz1lphXhC9PhqAoNQZGHI9F5HTgFuyiw3cYY27ut74I+B9gLvZ5+veNMXdls69SSk0FWZ9NGGMs4OfORSml1ATSGJyfjDF0tvTQWNNBc10XyYQ9vebMBYWUz47kxdSgKfGeJNHOuN1bYn4h1YtLKKoIam8JNe2MNB6LiBu4FTgVqAFeFJGHjDFvZGz2r8AbxpizRKQCeEtE7gGSWeyrlFJ5bzizeLzGvuPrWoG1wLeNMU1j2TCllFK9NAbnl56uOE219iwcPZ0JXC6hZFaIstkRCsvzY2pQ6DsTR6q3ROW8orwp2KnUeBhFPD4C2GSM2eIc5z7gHCAzyWCAArGDRARoBhLAkVnsq5RSeW84Zxh/xc7e/tq5f5Fz3QbcDZw1ds1SSinVj8bgHJdMWDTX23Ul2lNTg5YGmLWwiNJZ4byYGjQlHksS7YgD9kwc1Uu0toRSGUYaj2cDOzPu12AnHjL9DHgIqAMKgAuNMZaIZLMvACJyNfY0qMydO3f/z2YfBruTCMMr/Snp/6XaMYLHVkpNd8NJUBxjjDkm4/5rIvK0MeYYEfnwWDdMKaVUHxqDc5AxhrbGKI01HbTs6sKyDP6wh9mLiymbHc6rWSyMsXtLxGMW/pCHAw+rZMb8IgLh/HkOSk2Qkcbjgb6x908BvAdYD5wELAQeEZEns9zXXmjM7cDtAGvWrBn27CLhklI6mpxOIKkkw1DJBmP6XBtjMKb/w0rvIUScpktqDUjvffsgDPiM7cOa9DYGA8YgYtcvEpfLToy4XLjEhbhSy1z2tXPfJS6QqVvzSKl8NpwERUREjjTGPA8gIkdgdz0Du+uZUkqp8aMxOId0t8dozJwa1OOirDpCeXWYcLE/r056E3GL7vY4xhjKqyPMWVpKyawwLu0todRgRhqPa4A5GfersXtKZLocuNnY3/A3ichWYEmW+46aiHDchy4bk2MZYycP7CQCGGNhnGucJIaxDGBfW1YSjMGyLHtbK3VxlllJ59rCSibT15aVJJmIk4wnSMZjJBMJEvEYyXicRDxOMn2JZdyPYVmWHatFSCVQ0nkRY+y2Yic/XC4X4nbjcrlxuV240rfdiCt/escplQ+Gk6C4CrhTRCLYf7ttwFUiEgb+33g0TimlVJrG4EkW70nSXGfXlehqjYFAcUWQsuoIxZVBXO78OUk1xtDTlSAWTeL1u5m/soxZC4vzqminUpNopPH4RWCRiMwHarGHhnyo3zY7gJOBJ0VkBnAQsAVoyWLfnJL68t+b6sytmYrsxEYCK5EgmUjYiYv0tXOJxYn1RIn3RIl1dxHvjhLr6SYejRLv6SEe7cZYVkZvDHF6j9jJGURwu924PB47qeH24PZ4ent6KKX2MZxZPF4EljvTH4kxpiVj9W/GumFKKaV6aQyeHFbS0NLQRVNtB60N3RgDoUIfcw4uoawqkjdTg6Ykk3ZvCStpKK4MsfRdZZRW5Vd9DKUm20jjsTEmISLXAv+L/W39TmPM6yJyjbP+NuBG4G6nEKcAXzLGNAIMtO/YP7vpw+Vy4/K5wecf8TGMMVjJJIlYjESsx7m2b8djPcS6uujp6iTa2UFPVyexri6629tJxGL2cBMnSZHqbSIuF26PB5fHg9vjtW+78+tzRqnRGs4sHn7gAmAe4Mn4g/rWfva7EzgTaDDGLBtgvWDP6fxeoAu4zBjzkrNuG9COXYgoYYxZk217lVJqKhlpDFbDZ08NGqOptoOmuk6ScXtq0BnzCymb/f/Zu+84Oer68eOv98zW67lceiEBQk8IEIqoVFFABLEjloDCDxWxoaJYsH6xl6985QuKICJYUYroFwVERZSACUWKJARITy7J9dsy8/79MbN7e3d7l72yd3t37+eDYXdnZmfeu3d53+x7P6WGqrqJ1cpAVcl0e6S6gtlE5u0/jXlLGiZcVxRjKsVI8rGq/g74XZ91Vxfc3wS8stTnmvElIriRoFVEvKqq5Of5nhe0yujuItOdIpPqJtPdRVd7G91tbXS1tdLd0U5nayt+NtPTFSXsGiOuSyQSxY1GcKNRHDdi+dxMGkPp4vFbgimUHgZSQ3je9QQjEv94gO2nAUvC5Wjg+/QelfjEXOXYGGOmsOHmYFOiVFc2KEpsaKe7I4s4wrTZVTTNr6FuemLCzWDh+0pXWxovq1TXxznwsJnM2KuWaMy+jTNmhCwfmxFxXJd4VTXxqupB91NVvEyGdHcX6a4u0l2dpLs66WzZTWdrK50tu+lqayXT3RUUMMIiBqpB4SQWIxKN4UYjiFhLOTMxDKVAMV9VTx3qCVT1fhFZNMguZwE/DgcDelBEGkRkjqpuHuq5jDFmEhtWDjaD87I+u7Z0smNDO23N3QDUNMZZtHc4NWh04l3QZdMeXR0ZUJi1uI75+zdSPzNp364ZM3osH5sxISJEYjEisRhVdfUD7udls/kuJKnODrrb2+jYvStYWnbTWTgrix/MghKJRYMCRiyG6w7lI6Ex5TWU38YHRGSpqj42yjEUm9d5HrCZYDDd/xMRBf43nDapqJHP+WyMMRWtXDl4ylFV2pqDqUF3benE95R4VYS5SxqYPr+axASaGjRHVUl1ZEmnPGIJl30Om8nsvW2KUGPKxPKxqShuJEJVXf2ARQzf90h1dpLq6CDV0U5nawttzTto39lMx+6deJlMz3gYQCQaJRKLE4nFbAwMM+aGUqB4GbAynO4oRTBwj6rqshHGMNi8zi9V1U0iMpNgHuinVPX+YgcZ6ZzPxhhT4cqVg6eMrrY0OzZ20LyxnUy3hxsRps+rZvq8GmqmTczxGHzPpzM36OWsKg48eDqN86pxJ9CMIsZMQJaPzYTiOC7JmlqSNbX9tqkq2VSKrvZWutvb6WzdTev27bQ1b6dj165g+lcR8H3EcYjG40TicdxIdEL+3TSVbygFitPKFMOA8zqHAwWhqttE5FbgKKBogcIYYya5cuXgSS2b9mje1EHzhnY6wqlB65uSTD+whmmzJtbUoIUy3Vm6OzzEhXn7TWPefjbopTFjyPKxmTREhGgiQTSRoK5pZq9twZTUHfmBO9t27qB1+zbadmync/duRIJpVUWESDxBNGGFCzNyQ5lm9HmAsDVDYhRjuA24WERuIRgcs0VVN4dzSTuq2hbefyVgo9UbY6akMubgScf3lZZtnezY0EHLtk5UIVkXZcGB05g+t5poYmL2tVVVutozeGmfRE2U/V8ym1mL6ibcVKfGTHSWj81UISIkqmtIVNfQMHsOc9g/vy2TTtHV2kpXawttO5tp2bqF1u1bw8KFE8424hCLB8UP6ypiSjWUaUbPBL4BzAW2AXsBTwIH7+F5NwMnAE0isgH4LBCF/LRKvyOYYvRZgmlGzwufOgu4NazARYCfqurvS43XGGMmk+Hm4KlCVeloSdO8oZ2dmzrIZnwicYeZi+pomj/xpgYt5GV9utrSqA/T59ew8KDpTJtdNeFmFTFmsrB8bAxEY3GiTTOoa5rBrL33za/PpLrpbGkJu4psY/eWzbRs34bvZQl6Q/lEYnFiiSRu1FpbmP6G8jXSF4BjgD+q6mEiciJwzp6epKqD7hPO3vG+IuvXAYcOIT5jjJnMhpWDJ7t0ODXojo0ddLdnEAemzapi+vwa6puSE/pDfLorS6ori+M6LDx4OnOXTJvQhRZjJhHLx8YMIBpPUD8zQf3MWczZN2hxoap0t7fR2bKbtp3N7N6yiV1bNtPZsjs/NaobjRJLJonErLviVDeUAkVGVZtFxBERR1XvFZGvlC0yY4wxhSwHh3JTgzZvbKd1Rzg16LQ4i5ZOZ9qcKiLRiduMVFXpasuQzfhU18c58LCZzNyrlkhs4r4mYyYhy8fGDIGIkKytI1lbx/T5C2HZYQBkurvp2L2L9t072bVpI7u2bKJtx3bEcVBfcaMRYskqIrGYFS2mkKEUKHaLSA3BIJU3icg2IFuesIwxxvQxpXNwfmrQje3s2hxODZqMMHdJPdPn1Uz46TRz3Th8H2YsrGXhQY00zLRuHMZUqCmdj40ZLdFEgobZc2iYPYf5BwQ9pLLpNB27d9K2s5ldmzeya9NG2nZsB3FAlUg8FhQtohP7774Z2FAKFGcBXcCHgHOBemzQSmOMGStTMgd3t2fYsbGd5o3tpLs8nIjQOLeapvkTd2rQQunuLKnOsBvHIU3M3bfBunEYU/mmZD42ZixEYjHqZ86mfubsfNEik+qmfddO2nbsoHnjC+zctIGO3bvCawAhnkwSTSZxnIk5M5fpraQChYi4wG9V9RWAD9xQ1qjMpKKqoAq+j/o++H7vx7ntqv0ehwdAw9uiRJDwNve4cBERcJzgseP0PHYcpPDWmAo11XJwNu2xc3MHOza007E7DUD9jCTzD6imYVYV7gSdGjSnsBtHVV2MA4+da904jJkgplo+NqYSROMJps2ey7TZc1l4yLJg+tOODtp27qBl6xZ2vPg8Ldu2oqqo+kRiMeLJKhuEc4IqqUChqp6IdIpIvaq2lDsoUznU99FsFrJZ1POC+7lb3wcUKCgIQO9Cgmqwj+Mi0QgSjSHRKBKLIm4EiUUhEkUibvA44kIkEhQNXDdfQEDCwoLQc57c8QsKG+r5QXzqQ9ZDsxnU8yCTDe7nbtMZtLsbP5NG0xlQP3gd+ebUuVsNXmLuNTkOEokgkQiEtxKJgOtaAjRlMxVysOf5bF7bwsZndtOxO4X6kKwNpgZtnFtNbIJODVooPxuHQtMC68ZhzEQ0FfKxMZVOREjU1JCoqWHGwkXse+QxeNls0DVkxw6aN7xA84YX6Gxtye8fr6oimkja9foEMJQrvm7gMRG5G+jIrVTVS0Y9KlMWqhoUGrJZNJMJlvCx5Fsc5HcGXyHi4iSrcKqrcKuqcKqqcaoLlmQiKDrEYkHRobAAEQ2XSASp4LmPVTUoauTej3Q6WDIZNJXCT6fRVBq/uwu/vQO/vR2/ox2/vR2vowOvtQXt7qZXgaOgqJF/H6JRJBYLChuWHM3QTeoc/OITO/nn7c/hRoSZe9UxfV41VXWTY1CsTHeWro4sbkRYcNB05u1ns3EYM8FN6nxszETkRiLUNc2krmkm8w44KJg5pKOdth3b2bV5E9uffy4cyyK4roglk8SSVdYtpAINpUBxZ7iYCqO+31NwyGSCD9e5okP+H11QcJBEAre2FrdxGm5dHW5dHU59PW5VFZJIBgWHRAInmcSJx2EKNI0SkXxriOFSz8Pv6ka7u/C7uvA7O4OlrY3srt14u3fh7W7Bb9mN39kVFDLCwX5QP2hhEo/jxGJIPG4tMkwxkzoHLzi4kaPPWsyuzR3Uz6ga73BGLJhSLUMm7ZOsiXLAsXOYtaiOqHXjMGYymNT52JjJQERI1tSSrKll5qK92f8lLyOTTtG2Yzu7t25m+/rn2L11S9DqmmDAzniyCqeCv1SdKobyiexnwL4E3w2vVdXu8oRkCqnv93yjn1vQnjETfAURnNoaIvX1uNOm4U6bhjNtGm51DU5V0PrBqarCSSZH9CHcDExcF7emGmqq97ivZjL4HR147R35lhjZ5may27fj7dxJtrkZ7U6FRQxB/eDnLfE4TjyOxOMV3SLFlM2kzsGu6zB7cT27t3aOdygj4ns+nW0ZfE9pnFPNXodMZ9qcahzrxmHMZDKp87Exk1U0Fqdx7nwa585n78OOxMtmaGtupmXbZratX8euTZtQ30MJxr2IV1nBYjzs8dOqiESALwPnA88DDjBfRH4EXK6qmfKGOLmp56GpFJpO46dS4GWDb9aFsIuA4NbXE5k5E7dxGtGmGbgN9Tg1NcFSXY1TVWWDPE4gEo3iNjTgNjQMuI+fSuG3tuK1teG3tpLZsYPslq1kt28ju2N7MP6HOOGtBK1eEomgeGG/C5PKWORgEbkU+BowQ1V39Nm2APgxMJtgQLhrVPU7Iz3nZJNNe3S1ZxAR5u7XwPz9G6mZFh/vsIwxo8iuiY2ZXNxIlIZZs2mYNZu9lh6G73m0Ne9g97aghcXOjRvwfQ8UYskEsaoqHMcKFuVWytfpXwNqgcWq2gYgInXA18PlA+ULb+LLt4Do7u5fgPA1+LDa2Eh03lwiTU1EZszAqanFravFqa214sMU5cTjODNmEJkxA4BkwTb1/WD8i5YWvN27ye7YQWbjJjJbtpDdujUobImA+sGYIMlkULyw1jMTVVlzcFiAOAV4YYBdssBHVPUREakFHhaRu1X13yM572SgqqS6sqS7PGLJCPuumMWcveuJJe3fmjGT1IjzsYicCnwHcIEfqOqVfbZ/lGDqUgiu0w8kKB7vFJH1QBvgAVlVXTEaL8oYE3Bcl/qZs6ifOYu9DlneU7DYuoltz61j56aNoD4KxKuqiCWTiNjntNFWylXUGcB+qj1TM6hqq4i8B3gKK1AErSC6u/G7u9F0OviA6DjB2AIiuNOmEV2wgOismURmzsSprcWtr8etrUWSNpqsGRpxnPz4ISxY0Gubel5QuNi1i+zOnWQ2biSzcRPZrVvQTDboNhIWxqSqKihcWNO1SlfuHPwt4GPAb4ttVNXNwObwfpuIPAnMA6ZsgUJ9pbMtjZ9VahoT7H/0HJoW1Ez46U+NMXs0onwcTlF6FUFReAPwkIjcVljwVdWvERRCEJHXAB9S1Z0Fhzmxb0s3Y0x59CpYLD0ML5uhdcd2dm3eyNZ1z9KybSsQzhJSXU00nrDPdaOglAKFFibigpWeiPRbP1n1KkKkUj3TXYYf9iIzmogtXkx09izcxum4DfXBAJS1tdYCwowZcV0ijY1EGhuJ77MPHHkkEHzT67e2km3eSXZnM5kXXySzYSOZLVt6plhFg4FSq6qCWVkswVaKsuVgETkT2Kiqa0r5eYvIIuAw4B8DbL8QuBBg4cKFIwmtInnZYHwJVJm1qI4FBzVS12RFZmOmkJHm46OAZ1V1HYCI3AKcxcAF33OAm4cbrDFmdLmRKNNmz2Xa7LnsfdiRZFLdtG7fRvOGF9i67llad2xHENxohER1DW40Ot4hT0ilFCj+LSLvUNUfF64UkbcRVIsnD9Wg739XVzBtZEFLCIlEiMyYQWyfvYnOno3b2EikoQGnvgGnusouUE1FEwnGMnHr64nvvRhWBK1C1fPCbiLNZLdsIf3C86RffBGvuTkswPnB4JzV1UjCqsLjZEQ5WET+SDB+RF+XA58EXllKECJSA/wK+KCqthbbR1WvAa4BWLFixaQpYBdOE7rXIdOZt18DyRqbJtSYKWik18TzgBcLHm8Aji62o4hUAacCFxesVuD/wmLI/4Y5t9hzJ3Wx2JhKEY0nmD5/IdPnL2S/Y15Gd3s7Ldu2sG39OratX0umZTeoEk0miVdV25SmJSqlQPE+4Ncicj7wMEFyPJKgW/zZZYxtTLk1NWS3bsFtbCS+eDHRefOIzGjKD2bo1NTYhzMz6YjrEpk+ncj06bD/fvn1fkdHMLbF9u2k1z9P+vnnyW7eHM4q4uPEYkHRwroojYUR5WBVfUWx9SKyFFgM5FpPzAceEZGjVHVLn32jBMWJm1T11yN4LRNGMH96lkzKs2lCjTE5I70mLvYHc6Bi7muAv/Xp3vFSVd0kIjOBu0XkKVW9v98BJ2mx2JhKl6ipIVGzL7P23hf1fdp372TXpk1sXfcfdm7agKoiIiSqa4jE43YNPYA9FihUdSNwtIicBBxMkFzvUtU/lTu4sTTjgx/EScRtIEFjAKe6mlh1NbG99qI6bG3hp1Jkt+8gu20b6fXPkXruuaBo4Ti9W1pYwh1V5crBqvoYMDP3OBx8bUWRWTwE+CHwpKp+cyTnnAh8X+lszaCeT/2sKhYtbaJxrk0TaowZlXy8ASgcPGo+sGmAfd9Cn+4dqropvN0mIrcSdBnpV6Awxow/cRxqG5uobWxi4SHLyKbTtGzbyo4Xn2fL2mdo27EDUCLxOInqGpvOtEDJn8ZV9R7gnjLGMq7cmurxDsGYiubE48TmzyM2fx5Vhx8GgN/dTXbbNjJbt5Jet470uufI7twZdA9Bcaqqg6KFFf5GbCxzsIjMJRhd/nTgpcDbgcdEZHW4yydV9XdjEctY8TI+nW1pAObs08D8A6dR22jdmowx/Y0gHz8ELBGRxcBGgiLEW/vuJCL1wPHA2wrWVQNOOFhxNUH3vM8PIwZjzDiIxGJMn7+A6fMXsN8xL6WrrZVdWzaxde1/2PHC88F0pgjJGmtdYZ8ajDHD5iQSxBYuJLZwIdXhgJxeezvZLVvIbNxI93+eJfPC82g2CwoSjQbdpWw8i4qjqosK7m8CTg/v/5XizZInhXR3llRnFjfisPjQJuYumUai2ga1MsaMPlXNisjFwB8Iphm9TlWfEJGLwu1Xh7ueDfyfqnYUPH0WcGv4tzMC/FRVfz920RtjRouIUFVXT1VdPfP2OxAvm6Fl2zZ2bHiezf95mrYdO1BVYskE8epqHGdqta6wAoUxZlS5NTW4++5LfN99qTn+eNTzgkE4t24htXYtqWefJbN5U37eaKe6Oiha2MBBZowUji9RVRvLjy8RiU6tCwBjzNgLW5/9rs+6q/s8vh64vs+6dcChZQ7PGDMO3EiUxrnzaJw7jyVHviRoXbFpI1vWPsOOF19AfR9xHZI1tURik3+QbitQGGPKSlyX6KyZRGfNJLlsGQBeewfZLZtJv/AiqaefJv1iOKi5+kiyCre21rqFmFHn+0pnWwbNBuNLLF7WxLQ5Nr6EMcYYYypDr9YVBxwUjl0RzAyy+dln6GxtAVXiVdXEqibnTJL2CcAYM+bcmup8K4vak05E0+lgHIsNG0g98wzptevQbBZVHyeeCAoWU6BibMrDy/p0tmYAZfbe9Sw4qNHGlzDGGGNMxQvGrgimMj3gpcfTvrOZ5o0vsvmZJ2nZvg1VJRqLk6iZPANtlr1AISLXAWcA21T1kCLbBfgOQX/nTmClqj4Sbjs13OYSDNh2ZbnjNcaMPYnFiC1YQGzBAmpe8pKwW8gO0hs3kn76Gbr/8wy6ozvYNx7Hqa3FsYKF2YNMd5aujiyRqMPiZdOZu5+NL2GMMcaYiUlEqJ3eRO30JhYtO4xUZwe7Nm1k07NPs+P59fi+hzgOydpaItGJe508Fi0orge+B/x4gO2nAUvC5Wjg+wRTOLnAVcApBNMyPSQit6nqv8sesTFmXAXdQmYRnTWL6sMPR30fr7k5GHjzmWdIPf00meYdwcCb8bi1sDB5qkqqM0u62yNRE+WAY+cwe1Edkdjk+FbBGGOMMQYgXlXN7H33Y/a++5HNZGjZuoVt69ey6T9P0dnSAkCiuoboBBucvuwFClW9X0QWDbLLWcCPVVWBB0WkQUTmAIuAZ8NBgRCRW8J9rUBhzBQjjkNkxgwiM2aQXL4cVcXbsSMoWDz9NKmnn8Zv7kZVcRJJ3Lo6G8NiilFf6WxL42WV+hlJDnxpE9Pn1dj4EsYYY4yZ9CLRaH4a0wOOPY625h1sf/F5Nj3972BWEJR4sop4dVV+oPpKVQlX8POAFwsebwjXFVt/9EAHEZELgQsBFi5cOPpRGmMqhoj0Llj4PtntO0hveJHUk0+R+s8zaCYDCk5VFU5tLTJJ+uWZ3jzPp6stje/BrEV1LDy4kbqm5IT6psAYY4wxZrSI41A3YyZ1M2ay92Er6GprpXnDC2x8+kl2b9kICpF4OG5FBU5hWgkFimJXkTrI+qJU9RrgGoAVK1YMuJ8xZvIRx8nPFFJ9xBHBGBZbt5J6/nlSTzxB6rn1oD4ATm0dTnW1fYCd4LJpj672DOII8w9oZP7+jVTVWTcfY4wxxpic/KwgBy1lwUFLSXV2smvTBjb95ym2P78e9X3ciEuitg63QlofV0IUG4AFBY/nA5uA2ADrjTFmUOK6ROfOJTp3bjDoZjpNZtMmUs89R9djj5PdvDnYMRLBravDSSTGN2BTElUl3e2R6swSS7gsOXIWs/euJ5aohD9lxhhjjDGVLV5V1TNuRTrNrs0b2bL2P2x59hk8LxsOsllHJDp+g4pXwlXdbcDF4RgTRwMtqrpZRLYDS0RkMbAReAvw1nGM0xgzQUksRmzRImKLFlF74ol47R1kNm4Ixq94/AkyO3cG+yXD8SusO0hFUVW62zNk0j7V9XGWHD+LGQtqcSOV3YfSGGOMMaZSRWIxZuy1mBl7Leag405i99bNbHtuLZueeZLOlt2ICInaWqKx+NjGVe4TiMjNwAlAk4hsAD4LRAFU9WrgdwRTjD5LMM3oeeG2rIhcDPyBYJrR61T1iXLHa4yZ/Nyaatz99yex//7oa16D19xM6oUX6H7scdLP/gfNeiDg1NXjVFVZd5Bx4vtKZ2sG3/NpnFPNomVNTJtVhdjAl8YYY4wxo8aNRJg+bwHT5y1g/2NfTuu2bWxbv5aNT/2b1pYWECFZU0skHi/7dfFYzOJxzh62K/C+Abb9jqCAYYwxZSEiRJqaiDQ1BVOaZjJBd5C16+h6dA3ZzZtRFCcWx62vR8axydtU4WV9OlszgDJnnwYWHNRIbaN1wzHGGGOMKTfHcWmYPYeG2XNYctSxtDXvYNvz69j45BO07dgOQKKmlmiZukhXQhcPY4ypGBKNEttrL2J77UXtSSfitbaSfuFFuv/9BN3/fhJNp/BaW8c7zEkr1ZnFjTjstXQ68/ebRqLGCkLGGGOMMeOhcEaQfY44mvZdzWx//jk2PPkEbTt2kOpsH/VzWoHCGGMG4dbVkTzkYJKHHIx6HpnNW0ivXUt0wYI9P9kMSV1TkkNPWsCsxfVE4zYOiDHGGGNMpRARahubqG1sYvHyFXTs3sX255+jfubsUT2PFSiMMaZE4rrE5s8jNn/eeIcyKdU1JalrSo53GMYYY4wxZhAiQs20RmqmNY76sW0IdGOMMcYYY4wxxow7K1AYY4wxxhhjjDFm3FmBwhhjjDHGGGOMMePOChTGGGOMMcYYY4wZd1agMMYYY4wxxhhjzLgTVR3vGEadiGwHnh/i05qAHWUIZ6gqIY5KiAEqI45KiAEqI45KiAEmdhx7qeqMcgRTaSwPj4pKiKMSYoDKiKMSYoDKiKMSYgDLw3tkuXhSxACVEUclxACVEUclxAATO44Bc/GkLFAMh4isUtUVFkdlxFApcVRCDJUSRyXEYHFMbpXynloclRVDpcRRCTFUShyVEEMlxTHZVMr7WglxVEIMlRJHJcRQKXFUQgyTOQ7r4mGMMcYYY4wxxphxZwUKY4wxxhhjjDHGjDsrUPS4ZrwDCFVCHJUQA1RGHJUQA1RGHJUQA1gck1mlvKcWR49KiAEqI45KiAEqI45KiAEqJ47JplLe10qIoxJigMqIoxJigMqIoxJigEkah41BYYwxxhhjjDHGmHFnLSiMMcYYY4wxxhgz7qxAYYwxxhhjjDHGmHE3pQoUIvJGEXlCRHwRGXAqFBE5VUSeFpFnReSygvWNInK3iPwnvJ02jBj2eAwR2V9EVhcsrSLywXDbFSKysWDb6UONYSivRUTWi8hj4blWDfX5I41BRBaIyL0i8mT4s/tAwbYRvRcD/ZwLtouIfDfc/qiIHF7qc0cxhnPDcz8qIg+IyKEF24r+bMoUxwki0lLwXn+m1OeOYgwfLTj/4yLiiUhjuG1U3gsRuU5EtonI4wNsL/vvxGQnFZCHSz2OlDkXl/paBvr9HuP3oiy5uIR/92Pyb66EOMqei0uIoex5uMQ4LBdPAlIBubjE3GPXxD372DWxXRPntk/uPKyqU2YBDgT2B+4DVgywjwusBfYGYsAa4KBw21eBy8L7lwFfGUYMQzpGGM8WYK/w8RXApaPwXpQUB7AeaBrp6xhuDMAc4PDwfi3wTMHPY9jvxWA/54J9TgfuAgQ4BvhHqc8dxRiOBaaF90/LxTDYz6ZMcZwA3DGc545WDH32fw1wTxnei+OAw4HHB9he1t+JqbBQAXl4OMehDLm41BgG+v0ey/eCMuTiEnNP2f/NlRhHWXNxiTGcQBnz8HCOheXiCbtQAbl4qMfArontmtiuiYvtP+ny8JRqQaGqT6rq03vY7SjgWVVdp6pp4BbgrHDbWcAN4f0bgNcOI4yhHuNkYK2qPj+Mc41mHKP9/JKOoaqbVfWR8H4b8CQwbxjn6muwn3NhfD/WwINAg4jMKfG5oxKDqj6gqrvChw8C84dxnhHHUabnjuQ45wA3D+M8g1LV+4Gdg+xS7t+JSa9C8vBwjlOOXFwJebik45QpF1dCHi4pjjHIxZWQh4dzLMvFE1SF5OJKyMPDiWO0n1/SMeya2K6JBzDp8vCUKlCUaB7wYsHjDfT845+lqpshSBLAzGEcf6jHeAv9f+kuDpvSXDecZmRDjEOB/xORh0XkwmE8fzRiAEBEFgGHAf8oWD3c92Kwn/Oe9inluaMVQ6F3EVQqcwb62ZQrjpeIyBoRuUtEDh7ic0crBkSkCjgV+FXB6tF6L/ak3L8TJlDuPDyc45QjF1dCHh7ycUYxF1dCHi41jkLlyMWVkIeHdCzLxVOCXRP3ZtfE/fexa2K7Js4Ztd+JyIhDqzAi8kdgdpFNl6vqb0s5RJF1OloxDPE4MeBM4BMFq78PfCGM6QvAN4DzyxjHS1V1k4jMBO4WkafCilpJRvG9qCH4x/dBVW0NV5f8XhQ7ZJF1fX/OA+0z4t+RIcQQ7ChyIkEyflnB6hH9bIYYxyMETSrbJejX+BtgSYnPHa0Ycl4D/E1VC6u6o/Ve7Em5fycmhUrIw3uKY4jHGXYuroQ8PIpxjHYuroQ8XGocwY7ly8WVkIdLjSPHcnGFq4RcXAl5eBTjsGvi/vvYNbFdExcald+JSVegUNVXjPAQG4AFBY/nA5vC+1tFZI6qbg6bsGwbagwiUtIxQqcBj6jq1oJj5++LyLXAHQM9eTTiUNVN4e02EbmVoNnO/YzheyEiUYJEfJOq/rrg2CW/F0UM9nPe0z6xEp47WjEgIsuAHwCnqWpzbv0gP5tRj6PgDyCq+jsR+R8RaSr1NYxGDAX6fYMyiu/FcOMcrd+JSaES8vCe4hirXFwJeXi04ihDLq6EPFxqHOXOxZWQh0uKo4Dl4gpXCbm4EvLwaMVh18R2TRyew66JB49zxL8T1sWjv4eAJSKyOKzWvgW4Ldx2G/DO8P47gVKqz30N5Rj9+hSFSSvnbKDoyKqjEYeIVItIbe4+8MqC843JeyEiAvwQeFJVv9ln20jei8F+zoXxvUMCxwAtYbO7Up47KjGIyELg18DbVfWZgvWD/WzKEcfs8GeBiBxFkDuaS3nuaMUQnrseOJ6C35VRfi/2pNy/EyZQ7jw81OOUKxdXQh4uNY5y5OJKyMMlxTEGubgS8nBJcYTnt1w8Ndg1cc+57JrYrolz57Nr4kD5fid0hCN8TqSF4B/sBiAFbAX+EK6fC/yuYL/TCUbGXUvQDC63fjrwJ+A/4W3jMGIoeowiMVQR/LLX93n+jcBjwKPhD3vOMN+LPcZBMPrqmnB5YjzeC4LmWxq+3tXhcvpovBfFfs7ARcBF4X0Brgq3P0bBKNcD/Y4M4z3YUww/AHYVvPZVe/rZlCmOi8PzrCEYmOjYsX4vwscrgVv6PG/U3guCi5/NQIYgV7xrrH8nJvtCBeThwY5TJI6y5eJSYhjs93ss3wvKlIv39O9+rP7NlRBH2XNxCTGUPQ+XEkf4eCWWiyf0QgXk4oGOUSQGuyZWuybGromnTB6W8CDGGGOMMcYYY4wx48a6eBhjjDHGGGOMMWbcWYHCGGOMMcYYY4wx484KFMYYY4wxxhhjjBl3VqAwxhhjjDHGGGPMuLMChTHGGGOMMcYYY8adFShMRRKRy0XkCRF5VERWi8jRQ3z+IhHZ47y/IjJHRO4I75+Qu18pROQWEVky3nEYY6Ymy8UBy8XGmPFieThgeXjqiIx3AMb0JSIvAc4ADlfVlIg0AbEyne7DwLVlOvZo+D7wMeCC8Q7EGDO1WC7uxXKxMWbMWR7uxfLwFGEtKEwlmgPsUNUUgKruUNVNInKkiDwgImtE5J8iUhtWhf8iIo+Ey7F9DyYiroh8TUQeCqvP/69g8+uB3xd5zhUicp2I3Cci60TkkoJt7wiPs0ZEbgzX7SUifwrX/0lEFobrrxeR74vIveFxjg+P+6SIXF9wzFeKyN/D1/ALEakJN/0FeIWIWDHRGDPWLBdbLjbGjC/Lw5aHpx5VtcWWilqAGmA18AzwP8DxBNXidcCR4T51BC2AqoBEuG4JsCq8vwh4PLx/IfCp8H4cWAUsDpeHC857AnBHeP8K4IFw/yagGYgCBwNPA03hfo3h7e3AO8P75wO/Ce9fD9wCCHAW0AosJSgOPgwsD49/P1AdPufjwGcK4robOGK8fy622GLL1FosF1sutsUWW8Z3sTxseXgqLlaBMhVHVdtF5Ajg5cCJwM+ALwGbVfWhcJ9WABGpBr4nIssBD9ivyCFfCSwTkTeEj+sJEnc7sH2QUO7UoGKdEpFtwCzgJOCXqrojjGNnuO9LgNeF928EvlpwnNtVVUXkMWCrqj4Wxv4EwR+N+cBBwN9EBII/PH8veP42YC5B8jbGmDFhudhysTFmfFketjw8FVmBwlQkVfWA+4D7wiT2PkCL7PohYCtwKEEFtrvIPgK8X1X/0GulyGFAYpAwUgX3PYJ/LzJAHP1eQpHj+H2O6YfH9IC7VfWcAY6VALpKOKcxxowqy8W9WC42xow5y8O9WB6eAmwMClNxRGR/6T1K73LgSWCuiBwZ7lMb9kGrJ6gi+8DbAbfIIf8AvEdEouFz9wurzM8QVGuH4k/Am0RkenisxnD9A8BbwvvnAn8dwjEfBF4qIvuGx6wSkcKq937AE0OM0xhjRsRyseViY8z4sjxseXgqshYUphLVAP8tIg1AFniWoM/cj8L1SYLq6SsI+uP9SkTeCNwLdBQ53g8Iku4jErQX2w68VlVbRGStiOyrqs+WEpiqPiEiXwL+LCIe8C9gJXAJcJ2IfDQ8/nmlvlhV3S4iK4GbRSQerv4U8IyIzAK6VHVzqcczxphRYrnYcrExZnxZHrY8POWIaiktc4yZnETkbILBdj413rEUIyIfAlpV9YfjHYsxxpSL5WJjjBlflodNpbAWFGZKU9Vbc03TKtRuggGGjDFm0rJcbIwx48vysKkUk7IFRVNTky5atGi8wzDGmF4efvjhHao6Y7zjGAuWh40xlWgq5WGwXGyMqUyD5eJJ2YJi0aJFrFq1arzDMMaYXkTk+fGOYaxYHjbGVKKplIfBcrExpjINlottFg9jjDHGGGOMMcaMOytQGGOMMcYYY4wxZtxZgcIYY4wxxhhjjDHjblKOQWGGJpPJsGHDBrq7u8c7FGMmhUQiwfz584lGo+Mdihljlk+NqQyWh00pLGcbU17DycVWoDBs2LCB2tpaFi1ahIiMdzjGTGiqSnNzMxs2bGDx4sXjHY4ZY5ZPjRl/lodNqSxnG1M+w83F1sXD0N3dzfTp0y0xG7MHqoqf8fA6Mvhpr+g+IsL06dPt25gpyvKpMeWlqmSzWbq7u+no6EBV++1jediUynK2McOj6uF5XaTTO/G8rqL7DDcXWwsKA2CJ2ZgBqK9o1kfTHprxQYMLZNcZuKma/Xua2uznb8zoyhUlMpkMmUwG3/fz26qqqoo+x/4dmlLZ74oxe6aqqGbx/RSe14Xvp8L1HiIRXDdZ9HnD+fdlBQpjjOlDfUUzBUUJAAEcAQHJjmt4xhgz6Xmeh+d5pNNpstksqoqIICK4rpvfxxhjTHmoKr6fxve78bxOVIOcK+IgEkUECurFo8a6eJiKsGHDBs466yyWLFnCPvvswwc+8AHS6TQA9913H2eccUa/59x3333U19ezfPny/PLHP/4RgJqammHF8e1vf5vOzs7849NPP53du3cPuP/VV1/Nj3/8YwCuv/56Nm3aVPK5zj77bJYvX86+++7b63U88MADw4odYNOmTbzhDW8Y9vOHa/fu3fzP//zPkJ/nui7Lly/n4IMP5tBDD+Wb3/xmr2/GRuIzn/lM/vdhILfddhtXXnllUBX2fPzuLF5rCm93Cr8jw3PrnmP5y46AiIAbFCeMqXRTMZ8CnHDCCSxcuLBXk//Xvva1+fhHmh9/85vf8O9//3vYzx+Owvek0Pr16znkkEOKrv/pT386pHOsX7+eZDLJYYcdxoEHHshRRx3FDTfcMOyY+3r3u9+9x/ft6quv5oYbbsh33WhtbaW1tZWOjg6y2Sx/+9vfOOecc3Acx77tNpPOVM7Z+++/P8uWLeOAAw7g4osvHvR8Q5G7vhtMKX8TFi1axI4dO4Z8/uG8HytXrmTx4sUceuih7LfffrzjHe9g48aNQz53MatWreKSSy7Z437HHnts2HWjk3S6me7uTaTT28lm2wB41avexL/+9QQiLmVNxUFzjcm1HHHEEWpK9+9//3tcz+/7vh555JF63XXXqapqNpvV888/Xy+99FJVVb333nv11a9+db/nDbReVbW6unpYsey11166ffv2YT33+OOP14ceemjIzxvodWQymWHFMR6ee+45Pfjgg4f8vMKf09atW/Xkk0/Wz3zmM6MZ2oB831c/46nXmdHM7m7NNHcFy66u4HFLt/7n0af04AMP0kxLd++luUu9zsF/PsX+XQGrtAJy5FgsUzUPWz7tMdb59Pjjj9elS5fqX/7yF1VV3bVrlx511FHDjr+vd77znfqLX/xiVI41UgPl3MF+jqUea+3atXrooYfmf4fKyfM8TaVS2t7errt27dKdO3fqzp07dffu3drS0pJf7rjjDn3Vq17Va11LS4vu3LlTfd8f8PhTPQ/rFM7FpbKc3WM8cnbuOalUSj/84Q/rcccdN6zzl8tw35PhvB+Ff2N839dvfvObumTJEk2lUkM+/1D4vq+el9J0plW7u7doZ+eL4bJBu7o2a3f3lvzy8pe/RP/2t9/3WtfZ+aKm0y2DnmOoudi6eJhedt++lvSmjlE9ZmxuNQ2v2WfA7ffccw+JRILzzjsPCL5V/9a3vsXixYv53Oc+N6Jzt7e3c9ZZZ7Fr1y4ymQxf/OIXOeuss+jo6OBNb3oTGzZswPM8Pv3pT7N161Y2bdrEiSeeSFNTE/feey+LFi1i1apVNDU18eMf/5ivf/3riAjLli3jxhtv5IorrqCmpia/37nnnksymeRLX/oSP/jBD7j11lsBuPvuu/n+97/Pr3/960Hjvf7667nzzjvzg3/98pe/5Pzzz2fdunVUVVVxzTXXsGzZMq644grWrl3Lxo0befHFF/nYxz7GBRdcwPr16znjjDN4/PHH8TyPj3/84/zhD39ARLjgggt4//vfz+c//3luv/12urq6OPbYY/nf//1fRIQTTjiBo48+mnvvvZfdu3fzwx/+kJe//OWsX7+et7/97XR0BL8X3/ve9zj22GN7xX3ZZZexdu1ali9fzimnnMJXv/pVPvaxj3HXXXchInzqU5/izW9+86CvfebMmVxzzTUceeSRXHHFFaRSKd7znvewatUqIpEI3/zmNznxxBO5/vrr+c1vfoPneTz++ON85CMfIZ1Oc+ONNxKPx/nd735HY2MjK1eu5IwzzuANb3gDixYt4p3vfCe33347mXSGW278KfsvXsINP7mRh1c/zHe//h22Nm/jfR9+P+vWPxe8zm9+l7mz5+TjW/fcOt709nP4/neuoiqe5IJL/h/pbNAX+le/+hVLliwZ8u9nJRCR64AzgG2q2v8r2Z79jgQeBN6sqr8cq/gmsrvuuostW7aM6jFnz57NaaedNuD2qZ5P3/KWt3DLLbfwspe9jF//+te87nWv44knngDolR+vv/56brvtNjo7O1m7di1nn302X/3qV4Hg28f29nYAfvnLX3LHHXdw4YUXctttt/HnP/+ZL37xi/zqV78C4H3vex/bt2+nqqqKa6+9lgMOOKBXPKXmq2uvvZZrrrmGdDrNvvvuy4033khVVVX+Pbn00kt5+OGHOf/886mqquJlL3tZ0Z/RZZddxpNPPsny5ct55zvfyXve856ieXQwe++9N9/85jf5yEc+wnnnncfOnTsH/Dv03HPPsXnzZp555hm++c1v8uCDD3LXXXcxb948br/9dqLRKCeccAJf//rXWbFiBTU1Nbz//e/nzjvvJB6P85Of/ISZM2fyla98hZqaGi655BLWrl3Lhz70IZqbm3Ecp19rjocffpgPfOAD3Hjjjbz44ot86lOfAoJ+zvfffz+1tbWDvj5jBvLMM1+grf3JUT1mbc2B7LffpwfcPtVzdk4sFuOrX/0q++67L2vWrMm3qr3uuuuAoCXWBz/4QdavX8+pp57Ky172Mh588EEOPfRQzjvvPD772c+ybds2brrpJo466iiuv/56Vq1axfe+9z1WrlxJXV0dq1atYsuWLXz1q1/lDW94Q0nXzDldXV2cffbZvP71r+etb31rv/ev8Br3l7/8Za/34+9//zsPPPAAl156KdlsliOPPJLvf//7xOPxAd8PEeFDH/oQt956K3fddRdnnXUWN998M1/+8pdRVV796lfzla98BQj+Zr3vfe/jj3/8I9OmTePLX/4yH/vYx3jhhRf49re/zZlnnsl9993H17/+de644w6uuOIKnn/+edatW8sLL7zAxRefz3vfez4AM2bsz44d6xCBb3zje/z0p7/EcRxe9aqT+OIXP5WPz/d9LrjgA8yfP49PfeqD/L//9x4eeWQNIsL555/Phz70oWH8xvawLh5m3D3xxBMcccQRvdbV1dWxcOFCnn322UGf+5e//KVX87a1a9f22p5IJLj11lt55JFHuPfee/nIRz6CqvL73/+euXPnsmbNGh5//HFOPfVULrnkEubOncu9997Lvffe2y/GL33pS9xzzz2sWbOG73znO722v+ENb2DFihXcdNNNrF69mtNPP50nn3yS7du3A/CjH/0o/8dnT/7+979zww03cM899/DZz36Www47jEcffZQvf/nLvOMd78jv9+ijj3LnnXfy97//nc9//vP9mpJdc801PPfcc/zrX//i0Ucf5dxzzwXg4osv5qGHHuLxxx+nq6uLO+64I/+cbDbLP//5T7797W/n/zDOnDmTu+++m0ceeYSf/exnRZuIXXnlleyzzz6sXr2ar33ta/z6179m9erVrFmzhj/+8Y989KMfZfPmzXt87XvvvTe+77Nt2zauuuoqAB577DFuvvlm3vnOd+ZHAX788cf56U9/yj//+U8uv/xyqqqq+Ne//sVLXvKSfs2h1Q+aezfWNvDPPz3Ahe98N9/45jdBBFyCcSUc+NDHP8LLX/pyHvnbQzx0/4McfMBB+WM8/Z9neNPbz+EH/3MNRx6xgmt+dC3vf9/7Wb16NatWrWL+/Pl7fG0V7Hrg1MF2EBEX+Arwh7EIyAzfVM+nJ598Mvfffz+e53HLLbcMWhhdvXo1P/vZz3jsscf42c9+xosvvjjgvsceeyxnnnkmX/va11i9ejX77LMPF154If/93//Nww8/zNe//nXe+973Fn1uKfnqda97HQ899BBr1qzhwAMP5Ic//GG/45x33nl897vf5e9///uAcV555ZW8/OUvZ/Xq1XzoQx8aNI8O5vDDD+epp54CGPTv0Nq1a7nzzjv57W9/y9ve9jZOPPFEHnvsMZLJJHfeeWd+v0wmQ0dHBx0dHSxbtow///nPHHvssfzkJz/Bdd1e3TYuuOACLrjgAv72t79x9913M3v27Py2f/zjH3zoQx/i5ptvZvHixXzve9/je9/7HqtXr+Yvf/kLyWTxQdqMqVRTPWcXcl2XQw89lKeeeoqHH36YH/3oR/zjH//gwQcf5Nprr+Vf//oXAM8++ywf+MAHePTRR3nqqaf46U9/yl//+le+/vWv8+Uvf7nosTdv3sxf//pX7rjjDi677LJ+2we6Zoag0POa17yGt771rVxwwQVF37/B3g8RYeXKlfm/N9lslu9///t7fD+gJxdv2rSJj3/849xzzz2sXr2ahx56iN/85jcAdHR0cMIJJ/Dwww9TW1vLpz71Ke6++25uvfVWPvOZzwC5HhM+2Wwb2WwHTz75GL/97Y+4//7b+fKXv43ngRMO/i4Cf/jDn7j99t/zl7/8joceuocPf/h9+ZiyWY93vvO9LFmyD5/73GWsWfMEmzZt4vHHH+exxx4r+fPOYKwFhellsJYO5aKqRfuUDrS+0Mtf/vJeH7CLHeOTn/wk999/P47jsHHjRrZu3crSpUu59NJL+fjHP84ZZ5zBy1/+8kHPc8899/CGN7yBpqYmABobGwfdX0R4+9vfzk9+8hPOO+88/v73vxftR1zMKaeckj/+X//61/w3dSeddBLNzc20tLQAcNZZZ5FMJkkmk5x44on885//ZPny5fnj/PGPf+Siiy4iEon0ivnee+/lq1/9Kp2dnezcuZODDz6Y17zmNUBwkQxwxBFHsH79eiC4sLz44otZvXo1ruvyzDPP7PE1/PWvf+Wcc87BdV1mzZrF8ccfz0MPPcSZZ565x+cGrb6CY+Sq1wcccAB77bVX/twnnngitbW11NbWUl9fn49/6dKlrFmzBvX8YEyJzgze7hT4ymtPOxMc4fAjDuc3d/6233gS995/Hz/63+BDgeu61NfXs2v3Lrbv2MHrz3kDP7vxFg4+MChaHHPk0Vz5ta+wadtmXve6103Y1hMAqnq/iCzaw27vB34FHFn+iCaPwVo6lMtUz6eu6/Kyl72Mn/3sZ3R1dbFo0aIBj3vyySdTX18PwEEHHcTzzz/PggULBo0lp729nQceeIA3vvGN+XWpVKrovoPlq0cffRQIihif+tSn2L17N+3t7bzqVa/qdYyWlhZ2797N8ccfD8Db3/527rrrrj3GOVAeXbZs2aDPy+Xh3DEG+jt02mmnEY1GWbp0KZ7nceqpp6KqHHzwwfznP/+htbWVbDZLV1cXmUyGWCzG6aefjoiwfPnyfh+E2tra2Lx5c/49SiQS+W1PP/00H/jAB7j11luZMydo3Xb00UfzkY98hHPPPZfXve51E71YbMbZYC0dymWq5+xiMUOQd84++2yqq6uB4Pr0L3/5C2eeeSaLFy9m6dKlABx88MGcfPLJiAhLly7NX7v29drXvhbHcTjooIPYunVrv+0DXTNDcL39sY99LF+0GOr79/TTT7N48WL2228/AN75zndy1VVX8cEPfrDk9+Ohhx7ihBNOYMaMGQCce+653H///bz2ta8lFovliyRLly4lHo8TjUY55JCDWL9+Pen0TtKZHfh+mkymBfA57bRTSCZrSCZrmDGjia1btzN//tz8ee+5537e/va35GdJamyclt928cUf5fWvP5PLLgviX7x4Ic89t573v//9vPrVr+aVr3zlHl/XnoxrCwoROVVEnhaRZ0WkXzlLRM4VkUfD5QEROXQ84jTldfDBB7Nq1ape61pbW3nxxRfZZ5+RFUxuuukmtm/fzsMPP8zq1auZNWsW3d3d7Lfffjz88MMsXbqUT3ziE3z+858f9Dil/KHo67zzzuMnP/kJN998M2984xvzSW9Pcsk4d96+cnH0jafv42Ixd3d38973vpdf/vKXPPbYY1xwwQW9vk3LNTdzXZdsNpiq4lvf+hazZs1izZo1rFq1Kj9w02CKxV2KdevW4bouM2fOHPQYhc3iHMchFovhZ3zIKpnONF5LGs0G/dhyg1vGqxIg4DouWa/0aTjq6+qYP28+DzzYM3jpOW94C7/5xa9JJpO86lWv4p577hnW650IRGQecDZwdQn7Xigiq0RkVe6bEzO2LJ8G3Tze//7386Y3vWnQYxbmkcKcVxjbQK0NfN+noaGB1atX55cnnyzeNLxvvso9dhwnf86VK1fyve99j8cee4zPfvaz/c47nPcs97zh+Ne//sWBBx444DFyscTj8Xyf4Wg0SkdHBy0tLWQyGbq6uvJxO46D4zhEo9H8c13X7TcLx2Dxzp49m3g8ni/qAHzwgx/k2muvpauri2OOOSbf6sOYicJydg/P83jsscc48MADh3QNWCynDvacYsce7DW+9KUv5a677so/bzjv33DlcvFgx8jl1eA1+EQiSndqK+n0VrLZDJ7XheCGuTgKCPF4LP981+3/vqkOPD3oMces4M9//lv+79S0aQ2sWvU3TjjhBK666ire/e53D/v15oxbgSJsMnwVcBpwEHCOiBzUZ7fngONVdRnwBeCasY3SjIWTTz6Zzs7OfHXV8zw+8pGPsHLlygHnNy9VS0sLM2fOJBqNcu+99/L8888Dwci9VVVVvO1tb+PSSy/lkUceAaC2tpa2traiMf785z+nubkZgJ07d/bbp+9z586dy9y5c/niF7/IypUrhxX/cccdx0033QQEIzY3NTVRV1cHwG9/+1u6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\",\n      \"text/plain\": [\n       \"<Figure size 1296x720 with 9 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Plot Oranje Juice elasticity as a function of income\\n\",\n    \"plt.figure(figsize=(18, 10))\\n\",\n    \"dic={0:\\\"Tropicana\\\", 1:\\\"Minute.maid\\\", 2:\\\"Dominicks\\\"}\\n\",\n    \"for i in range(3):\\n\",\n    \"    for j in range(3):\\n\",\n    \"        plt.subplot(3, 3, 3 * i + j + 1)\\n\",\n    \"        plt.plot(X_test, te_pred[:, i, j],\\n\",\n    \"                 color=\\\"C{}\\\".format(str(3 * i + j)),\\n\",\n    \"                 label=\\\"OJ Elasticity {} to {}\\\".format(dic[j], dic[i]))\\n\",\n    \"        plt.fill_between(X_test.flatten(),\\n\",\n    \"                         te_pred_interval[0][:, i, j],\\n\",\n    \"                         te_pred_interval[1][:, i,j],\\n\",\n    \"                         color=\\\"C{}\\\".format(str(3*i+j)), alpha=.5, label=\\\"1-99% CI\\\")\\n\",\n    \"        plt.xlabel(r'Scale(Income)')\\n\",\n    \"        plt.ylabel('Orange Juice Elasticity')\\n\",\n    \"        plt.legend()\\n\",\n    \"plt.suptitle(\\\"Orange Juice Elasticity vs Income\\\",fontsize=16)\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"file_extension\": \".py\",\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Doubly Robust Learner and Interpretability.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Doubly Robust Learner and Interpretability\\n\",\n    \"\\n\",\n    \"Double Machine Learning (DML) is an algorithm that applies arbitrary machine learning methods\\n\",\n    \"to fit the treatment and response, then uses a linear model to predict the response residuals\\n\",\n    \"from the treatment residuals.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"%matplotlib inline\\n\",\n    \"\\n\",\n    \"import seaborn as sns\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Generating Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import scipy.special\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n=2000 # number of raw samples\\n\",\n    \"d=10 # number of binary features + 1\\n\",\n    \"\\n\",\n    \"# Generating random segments aka binary features. We will use features 0,...,3 for heterogeneity.\\n\",\n    \"# The rest for controls. Just as an example.\\n\",\n    \"X = np.random.binomial(1, .5, size=(n, d))\\n\",\n    \"# Generating an imbalanced A/B test\\n\",\n    \"T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"# Generating an outcome with treatment effect heterogeneity. The first binary feature creates heterogeneity\\n\",\n    \"# We also have confounding on the first variable. We also have heteroskedastic errors.\\n\",\n    \"y = (-1 + 2 * X[:, 0]) * T + X[:, 0] + (1*X[:, 0] + 1)*np.random.normal(0, 1, size=(n,))\\n\",\n    \"X_test = np.random.binomial(1, .5, size=(10, d))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Applying the LinearDRLearner\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.LinearDRLearner at 0x2900f9fb488>\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from sklearn.linear_model import LassoCV\\n\",\n    \"from econml.dr import LinearDRLearner\\n\",\n    \"from sklearn.dummy import DummyClassifier\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = LinearDRLearner(model_regression=LassoCV(cv=3),\\n\",\n    \"                      model_propensity=DummyClassifier(strategy='prior'))\\n\",\n    \"est.fit(y, T, X=X[:, :4])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1.02346725])\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Treatment Effect of particular segments\\n\",\n    \"est.effect(np.array([[1, 0, 0, 0]])) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(array([0.66350818]), array([1.38342633]))\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Confidence interval for effect. Produces the (alpha*100/2, (1-alpha)*100/2)% Confidence Interval\\n\",\n    \"est.effect_interval(np.array([[1, 0, 0, 0]]), alpha=.05) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.023</td>\\n\",\n       \"      <td>0.184</td>\\n\",\n       \"      <td>5.573</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>0.664</td>\\n\",\n       \"      <td>1.383</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"0           1.023   0.184  5.573     0.0     0.664     1.383\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Other inference for effect, including point estimate, standard error, z score, p value and confidence interval\\n\",\n    \"est.effect_inference(np.array([[1, 0, 0, 0]])).summary_frame(alpha=.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[['A' '2.0632770380417167']\\n\",\n      \" ['B' '-0.0021408002029088546']\\n\",\n      \" ['C' '-0.130752418085345']\\n\",\n      \" ['D' '0.0860397486668365']]\\n\",\n      \"-1.039809787014317\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Getting the coefficients of the linear CATE model together with the corresponding feature names\\n\",\n    \"print(np.array(list(zip(est.cate_feature_names(['A', 'B', 'C', 'D']), est.coef_(T=1)))))\\n\",\n    \"print(est.intercept_(T=1))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the confidence intervals of the coefficients of the CATE model\\n\",\n    \"# together with the corresponding feature names.\\n\",\n    \"feat_names = est.cate_feature_names(['A', 'B', 'C', 'D'])\\n\",\n    \"point = est.coef_(T=1)\\n\",\n    \"lower, upper = np.array(est.coef__interval(T=1))\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style(\\\"darkgrid\\\"):\\n\",\n    \"    fig, ax = plt.subplots(1,1)\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    plt.errorbar(x, point, yerr, fmt='o')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(feat_names, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>A</th>\\n\",\n       \"      <td>2.063</td>\\n\",\n       \"      <td>0.143</td>\\n\",\n       \"      <td>14.431</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.828</td>\\n\",\n       \"      <td>2.298</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>B</th>\\n\",\n       \"      <td>-0.002</td>\\n\",\n       \"      <td>0.142</td>\\n\",\n       \"      <td>-0.015</td>\\n\",\n       \"      <td>0.988</td>\\n\",\n       \"      <td>-0.236</td>\\n\",\n       \"      <td>0.232</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>C</th>\\n\",\n       \"      <td>-0.131</td>\\n\",\n       \"      <td>0.143</td>\\n\",\n       \"      <td>-0.916</td>\\n\",\n       \"      <td>0.359</td>\\n\",\n       \"      <td>-0.365</td>\\n\",\n       \"      <td>0.104</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>D</th>\\n\",\n       \"      <td>0.086</td>\\n\",\n       \"      <td>0.143</td>\\n\",\n       \"      <td>0.603</td>\\n\",\n       \"      <td>0.546</td>\\n\",\n       \"      <td>-0.149</td>\\n\",\n       \"      <td>0.321</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"A           2.063   0.143  14.431   0.000     1.828     2.298\\n\",\n       \"B          -0.002   0.142  -0.015   0.988    -0.236     0.232\\n\",\n       \"C          -0.131   0.143  -0.916   0.359    -0.365     0.104\\n\",\n       \"D           0.086   0.143   0.603   0.546    -0.149     0.321\"\n      ]\n     },\n     \"execution_count\": 9,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the inference of the coefficients of the CATE model\\n\",\n    \"# together with the corresponding feature names.\\n\",\n    \"est.coef__inference(T=1).summary_frame(feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>cate_intercept</th>\\n\",\n       \"      <td>-1.04</td>\\n\",\n       \"      <td>0.146</td>\\n\",\n       \"      <td>-7.114</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>-1.28</td>\\n\",\n       \"      <td>-0.799</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"cate_intercept           -1.04   0.146 -7.114     0.0     -1.28    -0.799\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the inference of the intercept of the CATE model\\n\",\n    \"est.intercept__inference(T=1).summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>A</th>      <td>2.063</td>      <td>0.143</td> <td>14.431</td>   <td>0.0</td>    <td>1.828</td>    <td>2.298</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>B</th>     <td>-0.002</td>      <td>0.142</td> <td>-0.015</td>  <td>0.988</td>  <td>-0.236</td>    <td>0.232</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>C</th>     <td>-0.131</td>      <td>0.143</td> <td>-0.916</td>  <td>0.359</td>  <td>-0.365</td>    <td>0.104</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>D</th>      <td>0.086</td>      <td>0.143</td>  <td>0.603</td>  <td>0.546</td>  <td>-0.149</td>    <td>0.321</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>-1.04</td>      <td>0.146</td> <td>-7.114</td>   <td>0.0</td>    <td>-1.28</td>   <td>-0.799</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                  \\n\",\n       \"=======================================================\\n\",\n       \"  point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------\\n\",\n       \"A          2.063  0.143 14.431    0.0    1.828    2.298\\n\",\n       \"B         -0.002  0.142 -0.015  0.988   -0.236    0.232\\n\",\n       \"C         -0.131  0.143 -0.916  0.359   -0.365    0.104\\n\",\n       \"D          0.086  0.143  0.603  0.546   -0.149    0.321\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept          -1.04  0.146 -7.114    0.0    -1.28   -0.799\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where $T$ is the one-hot-encoding of the discrete treatment and for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and the designated treatment $j$ passed to summary. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.summary(T=1, feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Polynomial Features\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.LinearDRLearner at 0x29010c26908>\"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"from econml.dr import LinearDRLearner\\n\",\n    \"from sklearn.dummy import DummyClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = LinearDRLearner(model_regression=WeightedLassoCV(cv=3),\\n\",\n    \"                      model_propensity=DummyClassifier(strategy='prior'),\\n\",\n    \"                      featurizer=PolynomialFeatures(degree=2, interaction_only=True, include_bias=False))\\n\",\n    \"est.fit(y, T, X=X[:, :4])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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CyEEiouLeS6BiEhhqu4hFBYWoq6uDmazGbNnz0ZmZiaCgoIwZMgQjBgxQs1oREQBR/FC6NKlC9atWwcASEpKck9PTk5GcnKy0nGIiMhFikNGRESkPhYCEREBYCEQEZELC4GIiACwEIiIyIWFQEREAFgIRETkwkIgIiIAktzLSGnvmu+W4n4kREQy4R4CEREBYCEQEZELC4GIiACwEIiIyIWFQEREAFgIRETkwkIgIiIALAQiInJhIRAREQAWAhERubAQiIgIAAuBiIhcWAhERASAhUBERC6KF8LBgwcxefLkJtO3b9+OlJQUmM1mrFu3TulYREQBT9HxEN577z1s2rQJBoPBY7rNZsOSJUtQUFAAg8GA9PR0jBw5EhEREUrGIyIKaIruIURFReHtt99uMv3kyZOIiopC+/btERQUhIEDB2L//v1KRiMiCniK7iGMHj0aP/74Y5PpVqsVYWFh7p9DQ0NhtVqv+3w6nQYmU0iLsuh02hY/1peYQ64MzMEct0IOf2W4ZiF8//33uOOOO3y+0l8zGo2ora11/1xbW+tREFfjcIgWD4MpyxCazCFXBuZgjlshx81miIxs/v31moeMXnjhBQDAn/70pxav2Bs9evRAeXk5LBYLGhoa8M0336B///5+XScREXm65h5C165dMWTIENTU1GDo0KEe83bv3n3TKy8sLERdXR3MZjNefPFFPP744xBCICUlBR07drzp5yciIu9phBDiegstWrQIL730khJ5bojN5uAho1aUQ4YMzMEct0IOfx0y8uqk8nPPPYe//vWvOH/+POLj4xETE4Nu3bq1OAyRrLLyDkKv12JFyp1qRyFSnFeXnc6bNw9dunRBeXk5IiIiMH/+fH/nIiIihXlVCBaLBampqdDr9RgwYACcTqe/cxERkcK8/mLayZMnAQDnzp2DTqfzWyAiIlKHV4WwYMECzJs3D0ePHsXTTz+NF1980d+5iIhIYV6dVO7VqxdWrlyJH374AV26dEF4eLi/cxERkcK82kP417/+hQkTJmDlypUwm83YuHGjv3MREZHCvNpDWLt2LdavX+++x9CUKVMwbtw4f2cjIiIFebWHoNFoEBoaCuDKfYeCg4P9GoqIiJTn1R5C165dsXTpUtxzzz0oKSlBVFSUv3MREZHCvNpDMJvNaN++Pb766iusX78eEydO9HcuIiJSmFeF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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the confidence intervals of the coefficients of the CATE model\\n\",\n    \"# together with the corresponding feature names.\\n\",\n    \"feat_names = est.cate_feature_names(['A', 'B', 'C', 'D'])\\n\",\n    \"point = est.coef_(T=1)\\n\",\n    \"lower, upper = np.array(est.coef__interval(T=1, alpha=0.05))\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style(\\\"darkgrid\\\"):\\n\",\n    \"    fig, ax = plt.subplots(1,1)\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    plt.errorbar(x, point, yerr, fmt='o')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(feat_names, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.192</td>\\n\",\n       \"      <td>0.292</td>\\n\",\n       \"      <td>4.081</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.711</td>\\n\",\n       \"      <td>1.672</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>-1.057</td>\\n\",\n       \"      <td>0.189</td>\\n\",\n       \"      <td>-5.585</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.368</td>\\n\",\n       \"      <td>-0.746</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1.065</td>\\n\",\n       \"      <td>0.253</td>\\n\",\n       \"      <td>4.202</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.648</td>\\n\",\n       \"      <td>1.482</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>-1.057</td>\\n\",\n       \"      <td>0.189</td>\\n\",\n       \"      <td>-5.585</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.368</td>\\n\",\n       \"      <td>-0.746</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>-1.081</td>\\n\",\n       \"      <td>0.177</td>\\n\",\n       \"      <td>-6.095</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.372</td>\\n\",\n       \"      <td>-0.789</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>0.861</td>\\n\",\n       \"      <td>0.277</td>\\n\",\n       \"      <td>3.107</td>\\n\",\n       \"      <td>0.002</td>\\n\",\n       \"      <td>0.405</td>\\n\",\n       \"      <td>1.318</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>0.926</td>\\n\",\n       \"      <td>0.273</td>\\n\",\n       \"      <td>3.397</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.478</td>\\n\",\n       \"      <td>1.375</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>-0.892</td>\\n\",\n       \"      <td>0.186</td>\\n\",\n       \"      <td>-4.784</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.199</td>\\n\",\n       \"      <td>-0.585</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>0.926</td>\\n\",\n       \"      <td>0.273</td>\\n\",\n       \"      <td>3.397</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.478</td>\\n\",\n       \"      <td>1.375</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>0.861</td>\\n\",\n       \"      <td>0.277</td>\\n\",\n       \"      <td>3.107</td>\\n\",\n       \"      <td>0.002</td>\\n\",\n       \"      <td>0.405</td>\\n\",\n       \"      <td>1.318</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"0           1.192   0.292  4.081   0.000     0.711     1.672\\n\",\n       \"1          -1.057   0.189 -5.585   0.000    -1.368    -0.746\\n\",\n       \"2           1.065   0.253  4.202   0.000     0.648     1.482\\n\",\n       \"3          -1.057   0.189 -5.585   0.000    -1.368    -0.746\\n\",\n       \"4          -1.081   0.177 -6.095   0.000    -1.372    -0.789\\n\",\n       \"5           0.861   0.277  3.107   0.002     0.405     1.318\\n\",\n       \"6           0.926   0.273  3.397   0.001     0.478     1.375\\n\",\n       \"7          -0.892   0.186 -4.784   0.000    -1.199    -0.585\\n\",\n       \"8           0.926   0.273  3.397   0.001     0.478     1.375\\n\",\n       \"9           0.861   0.277  3.107   0.002     0.405     1.318\"\n      ]\n     },\n     \"execution_count\": 14,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the inference of the CATE at different X vector values\\n\",\n    \"est.effect_inference(X_test[:,:4]).summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th> <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>0.175</td>      <td>0.243</td>    <td>0.719</td>  <td>0.472</td>    <td>-0.225</td>         <td>0.574</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>0.982</td>        <td>-1.07</td>           <td>1.135</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.012</td>         <td>-1.25</td>          <td>1.389</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Note: The stderr_mean is a conservative upper bound.\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x29010c28f08>\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the population inference given sample X\\n\",\n    \"est.effect_inference(X_test[:,:4]).population_summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Polynomial Features and Debiased Lasso Inference\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.SparseLinearDRLearner at 0x29010cba348>\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"from econml.dr import SparseLinearDRLearner\\n\",\n    \"from sklearn.dummy import DummyClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = SparseLinearDRLearner(model_regression=WeightedLassoCV(cv=3),\\n\",\n    \"                            model_propensity=DummyClassifier(strategy='prior'),\\n\",\n    \"                            featurizer=PolynomialFeatures(degree=3, interaction_only=True, include_bias=False))\\n\",\n    \"est.fit(y, T, X=X[:, :4])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Parameter Intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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0qRJJj093Sxbtiym/rdt22auv/76srUZMGCAGTFihLnttttMVlZW2d/rxhtvNDt27PBU86GHHjJXX321+ctf/mI+/PBDs3HjRtOvXz/TuXNnM3DgQHP8+PGybY8ePWp69eplcnNzPdW2uSb79u0z3/ve98z1119vVqxYYc6dO3fBNqdOnTKLFy82PXv2NNdcc405cOCAp9rGGDNv3jyTlpZm5s+fX+V20WjUzJkzx6SlpZlnn33WU+0dO3aYjIwM079/f/Ovf/2r0u3efPNNc+utt5orrrjC7Nmzx3PvNteGdamb3qsTuMDPzMw06enp5tprrzXjx483+fn55tSpU2V//sknn9Q68G2G29ChQ83tt9/uadvS0lIzaNAgk5OT47l3Wy/WXr16mZkzZ5Z7bNOmTSYtLc28+OKLF2z/xz/+0Vx//fWeera5Jr/4xS9MZmamOXz4cLXbHjlyxHTr1s3k5eV5qm2MMdnZ2ebuu+/2vP3tt99uBg8e7Gnbe++91/Tq1avc67syp06dMr169TITJkzw3IvNtWFdKma79+oE7i6dwsJCJSUlKTs7W7fccou6desW9zcJ161bp+HDh2vEiBHq2LGjvv/97ysvL09ffvmlRo0apdTU1LJtW7RooWHDhmnXrl2ean/wwQe6+eabPW2bkJCgvn376r333vPc+7x585SUlKSlS5fq1ltvrfCSTUpKioYOHaolS5YoMTFR8+fPr7bu0aNH9e1vf7vcY9/5znck6YJf1SWpdevWOnHihKeeba7Jtm3bNHToULVq1arabS+55BINGjRIW7Zs8VRbkg4cOBDTexU33nhj2eXA6vz73//WoEGDPL2+U1JSlJ2dre3bt3vuxebasC4Vs917dQL3pu3ChQu1atUqrV69Wi+++KJCoZA6d+6sPn36KCsrKy77sBlu4XA4pjd5vvGNbyghwftxuSYv1tdee63abYuLiy94U+2iiy4q9/9fFwqFVFpa6qlnm2tSUFBwwfsBVenYsaOOHDniefukpCTPf09Jaty4see/a2FhoVq3bu25drt27XTs2DHP29tcG9alYrZ7r07gzvAzMzM1ffp0bdy4UXPnzlXv3r21Z88ezZo1S71799ZPfvIThUIhnTlzpsb7sBlul112mXbv3u25l127dlV4kKmM7YCzweaaFBcXKykpyXPtxMREFRcXe96+Y8eO2rFjh+ftt2/frksvvdTTtiUlJTHdudKoUaOYQtbm2rAuFbPde3UCF/jnNWrUSFlZWZo7d642bdqkhx9+WN26ddPBgwfL7vq48847lZ+fr6Kiorput8yAAQO0atUq7du3r9pt9+3bp1WrVumGG27wXN/mi7WwsFCHDh0q+9/hw4clSZ9//nm5xw8dOqTjx4977sH2mtg0ePBgrV271tOv9Nu2bdPatWvVt29fHzqrW6xL/RS4SzoVSUlJ0ZAhQzRkyBAdPXpU+fn5WrVqlTZv3qwtW7aoWbNm2rp1a0w1z4fbeecv2ZwPt6+LJdxycnK0aNEijR49WpMnT9aAAQMuuBUtGo0qPz9fjzzyiJo0aaI77rgjpt5tmTFjhmbMmHHB4/fff3+t6tpek//9WVYllp+l9FWwLVmyRHfffbdyc3M1bNgwffOb3yy3TUFBgRYvXqx58+bp0ksv1ciRIz3X379/v9566y1P2379fm6vbK0N61I5271XJdD34VfnwIEDZdf716xZ4/l56enpZffzf5352n3+FXn33Xc91d+/f7/GjRungwcPKjk5WVdccYVatmypaDSqgoIC7dmzR2fOnFHr1q31xBNPKCMjI6bep0yZ4vlN0FdffVWzZs2qtvcHHnjAcw9fN3PmTE/b2VqTyn6W1fH6s5SkY8eO6ec//7neeusthUIhtWnTplzvhw4dkjFGnTt31uzZsz1fjoq19/OvT6+9214b1qX2tWPtvToNOvBryna4SV99MOWFF15Qfn6+9u7dq5KSEklfvUdw/k3onJycmD/F50fA2WJjTfz4WZ63du1a5efn65133tGxY8eUkJCgFi1aqEuXLsrKytJNN90UU73HH3885h6krz506IVfa8O6/H+2e68OgV9PfP755wqHw7r44otrVcfPgLMtXmsC4CsEPgA4IrB36QAAYkPgI+6YQwDUTw3itkzUPb/mEBw9elQrVqzQ8uXLtXr16sDUBuoDAh+14sccApsHk4YwMAfwisBHzKqaQ/Czn/2sVnMIvs7mwcTPgTk2J4HZrC3ZnTTm+rr4MQnsAnH73k00aH7MITDGmGPHjpk//elPZuDAgWXf25+enm7S09PN448/boqLi+td7Wg0al5//XXzzDPPmDVr1pTVefPNN03//v3L9jF48GCzYcOGelP7vOeee84MHDiwwr//hAkTTPfu3c2CBQtirsu6VKyoqMjMnDnTdOvWrcL5D/fcc4+58sorzUMPPWS+/PLLmrReKc7w4UmPHj104sQJpaSkKCsrS1lZWbrhhhvKzqA+/fTTGtcuKSnRunXrtHTpUm3cuFElJSVq1KiRfvCDHygrK0tpaWkaOnSo0tPTY/7NwWZtqepJYGPHjlVSUpJ69+5dNgksNzfX8yQwm7WlCyeNHTp06IIv3mvbtq0SEhL0yCOP6O233/Y8aYx1qdj/TgIrKCi44BPG3bt318cff6znn39e7733XkyTwLz85YBqpaWlmWuuucZMmzbN/P3vfzcFBQXl/rw2g2dsDrWxPTDH5rAcm7WNsTtpjHWpmM1JYF4Q+PBky5YtZsqUKaZr164mPT3dZGRkmBEjRpgFCxaYTz75pFbBafNgYrO2MXYngdmsbYzdSWOsS8VsTgLzgvvw4YnNOQQLFy5U//79tXr1ao0fP149evTQyJEj9eyzz9bqUpHt2pLdYTk2a0t2J42xLhWzOQnMC67hIybn5xBkZWXp9OnTWrNmjVavXq2tW7eWXftcunSphg4dqqysLE9fdJaZmanMzExNnTpV69ev16pVq7R+/Xrt2LFDjzzyiDp06FDjg4nN2pLdYTk2a0t2J42xLhWzOQnMCwIfNRbvOQQ2DiZ+1A4q29PXgsrmupyfBPbjH//Y0/axTALzgsBHXLRs2VJjxozRmDFjys0hqCkbQ21s1bY1LMd27QEDBmjOnDm68847dfnll1e57flJY7fffrvn+qzLhQYPHqwHH3xQW7ZsUbdu3arc9vwksHh9NbLEt2UiYGo61MZWbZvDcmwP4vniiy/0ox/9SCdOnPA0aSwajWr58uW65JJL6rT3IK9LcXGxRo0apffff9/TJLCWLVtq8eLFatasmafeq0PgA7Vgc/6AH7MNbE0aY10qZ2sSmBcEPuA4W9PXgs72usR7EpgXBD6Acpg0VrGGsC4EPgA4gg9eAYAjCHwAdcrmhDSmr5XHffgAfNdQhtoEbUoagQ/ANw1hqE2Qp6QR+ACssjkhza/pa5J/BxSb07oIfABxF+ShNl9n44BijNEbb7yhffv2qX379rrpppsUiUS0efNmTZ8+vezbMTMyMjRhwoSYvl2zOgQ+gLizOSHNZm3J7gHF9rSu6hD4AOKusLBQycnJys7OVmZmprp27Rq3SxQ2a0t2Dyhz587V3r17NXXqVGVmZuqzzz7Tww8/rDvuuEMdOnTQc889p9TUVElffQXDsGHD9Oc//5nAB1B/LVy4sOyL6F588UWFQqGyryPIysqqt7UluweUdevWafjw4RoxYoSkr74uOS8vT3fddZdGjRpVFvaS1KJFCw0bNkzPPfdcXPYtEfgALAjyUBubBxTb07qqw1crAPDF/w6eiUajSkhIUGZmZq0Hz9ioXVRUVO6Acu7cOYVCIXXo0EEHDhzQb3/7W2VnZ8dUMz09XY8++mi55x0/flzdu3fXggUL1L1793Lbr1y5UpMmTfL81c7VIfAB+O7rg2f27NmjUChUq6E2tmvH64BS14HPJR0Avov3hDTbteM5Jc3mtK7qcIYPADUU65Q029O6qkPgA4BP/JjWVRUCHwAcwdcjA4AjCHwAcASBDwCOIPABwBEEPgA44v8BwSY0+F0hdRgAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the confidence intervals of the coefficients of the CATE model\\n\",\n    \"# together with the corresponding feature names.\\n\",\n    \"feat_names = est.cate_feature_names(['A', 'B', 'C', 'D'])\\n\",\n    \"point = est.coef_(T=1)\\n\",\n    \"lower, upper = np.array(est.coef__interval(T=1, alpha=0.05))\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style(\\\"darkgrid\\\"):\\n\",\n    \"    fig, ax = plt.subplots(1,1)\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    plt.errorbar(x, point, yerr, fmt='o')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(feat_names, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### CATE(x) intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import itertools\\n\",\n    \"# Getting the confidence intervals of the CATE at different X vector values\\n\",\n    \"feat_names = np.array(['A', 'B', 'C', 'D'])\\n\",\n    \"lst = list(itertools.product([0, 1], repeat=4))\\n\",\n    \"point = []\\n\",\n    \"lower = []\\n\",\n    \"upper = []\\n\",\n    \"fnames = []\\n\",\n    \"for x in lst:\\n\",\n    \"    x_test = np.array([x])\\n\",\n    \"    fnames.append(\\\" \\\".join(np.array(feat_names)[x_test.flatten()>0]))\\n\",\n    \"    point.append(est.effect(x_test)[0])\\n\",\n    \"    lb, ub = est.effect_interval(x_test, alpha=.05)\\n\",\n    \"    lower.append(lb[0])\\n\",\n    \"    upper.append(ub[0])\\n\",\n    \"\\n\",\n    \"fnames = np.array(fnames)\\n\",\n    \"point = np.array(point)\\n\",\n    \"lower = np.array(lower)\\n\",\n    \"upper = np.array(upper)\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style('darkgrid'):\\n\",\n    \"    fig, ax = plt.subplots(1,1, figsize=(20, 5))\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    stat_sig = (lower>0) | (upper<0)\\n\",\n    \"    plt.errorbar(x[stat_sig], point[stat_sig], yerr[:, stat_sig], fmt='o', label='stat_sig')\\n\",\n    \"    plt.errorbar(x[~stat_sig], point[~stat_sig], yerr[:, ~stat_sig], fmt='o', color='red', label='insig')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(fnames, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### CATE(x) inference\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.198</td>\\n\",\n       \"      <td>0.274</td>\\n\",\n       \"      <td>4.370</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.747</td>\\n\",\n       \"      <td>1.648</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>-1.087</td>\\n\",\n       \"      <td>0.271</td>\\n\",\n       \"      <td>-4.009</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.533</td>\\n\",\n       \"      <td>-0.641</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1.129</td>\\n\",\n       \"      <td>0.280</td>\\n\",\n       \"      <td>4.033</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.669</td>\\n\",\n       \"      <td>1.590</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>-1.087</td>\\n\",\n       \"      <td>0.271</td>\\n\",\n       \"      <td>-4.009</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.533</td>\\n\",\n       \"      <td>-0.641</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>-1.095</td>\\n\",\n       \"      <td>0.269</td>\\n\",\n       \"      <td>-4.065</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.537</td>\\n\",\n       \"      <td>-0.652</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>0.725</td>\\n\",\n       \"      <td>0.291</td>\\n\",\n       \"      <td>2.491</td>\\n\",\n       \"      <td>0.013</td>\\n\",\n       \"      <td>0.246</td>\\n\",\n       \"      <td>1.204</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>0.882</td>\\n\",\n       \"      <td>0.272</td>\\n\",\n       \"      <td>3.239</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.434</td>\\n\",\n       \"      <td>1.330</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>-0.803</td>\\n\",\n       \"      <td>0.273</td>\\n\",\n       \"      <td>-2.941</td>\\n\",\n       \"      <td>0.003</td>\\n\",\n       \"      <td>-1.251</td>\\n\",\n       \"      <td>-0.354</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>0.882</td>\\n\",\n       \"      <td>0.272</td>\\n\",\n       \"      <td>3.239</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.434</td>\\n\",\n       \"      <td>1.330</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>0.725</td>\\n\",\n       \"      <td>0.291</td>\\n\",\n       \"      <td>2.491</td>\\n\",\n       \"      <td>0.013</td>\\n\",\n       \"      <td>0.246</td>\\n\",\n       \"      <td>1.204</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"0           1.198   0.274  4.370   0.000     0.747     1.648\\n\",\n       \"1          -1.087   0.271 -4.009   0.000    -1.533    -0.641\\n\",\n       \"2           1.129   0.280  4.033   0.000     0.669     1.590\\n\",\n       \"3          -1.087   0.271 -4.009   0.000    -1.533    -0.641\\n\",\n       \"4          -1.095   0.269 -4.065   0.000    -1.537    -0.652\\n\",\n       \"5           0.725   0.291  2.491   0.013     0.246     1.204\\n\",\n       \"6           0.882   0.272  3.239   0.001     0.434     1.330\\n\",\n       \"7          -0.803   0.273 -2.941   0.003    -1.251    -0.354\\n\",\n       \"8           0.882   0.272  3.239   0.001     0.434     1.330\\n\",\n       \"9           0.725   0.291  2.491   0.013     0.246     1.204\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the inference of the CATE at different X vector values\\n\",\n    \"est.effect_inference(X_test[:,:4]).summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th> <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>0.147</td>      <td>0.277</td>    <td>0.531</td>  <td>0.595</td>    <td>-0.308</td>         <td>0.602</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>0.965</td>       <td>-1.091</td>           <td>1.167</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.004</td>        <td>-1.359</td>          <td>1.388</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Note: The stderr_mean is a conservative upper bound.\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x2901100c1c8>\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the population inference given sample X\\n\",\n    \"est.effect_inference(X_test[:,:4]).population_summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Non-Linear Models with Forest CATEs\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.ForestDRLearner at 0x29011010748>\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dr import ForestDRLearner\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"est = ForestDRLearner(model_regression=GradientBoostingRegressor(),\\n\",\n    \"                      model_propensity=DummyClassifier(strategy='prior'),\\n\",\n    \"                      cv=5,\\n\",\n    \"                      n_estimators=1000,\\n\",\n    \"                      min_samples_leaf=10,\\n\",\n    \"                      verbose=0, min_weight_fraction_leaf=.01)\\n\",\n    \"est.fit(y, T, X=X[:, :4])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([0.97459949, 0.00870163, 0.00810112, 0.00859776])\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_(T=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x223.2 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"shap_values = est.shap_values(X[:100, :4], feature_names=['A', 'B', 'C', 'D'], background_samples=100)\\n\",\n    \"shap.summary_plot(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### CATE(x) intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import itertools\\n\",\n    \"# Getting the confidence intervals of the CATE at different X vector values\\n\",\n    \"feat_names = np.array(['A', 'B', 'C', 'D'])\\n\",\n    \"lst = list(itertools.product([0, 1], repeat=4))\\n\",\n    \"point = []\\n\",\n    \"lower = []\\n\",\n    \"upper = []\\n\",\n    \"fnames = []\\n\",\n    \"for x in lst:\\n\",\n    \"    x_test = np.array([x])\\n\",\n    \"    fnames.append(\\\" \\\".join(np.array(feat_names)[x_test.flatten()>0]))\\n\",\n    \"    point.append(est.effect(x_test)[0])\\n\",\n    \"    lb, ub = est.effect_interval(x_test, alpha=.05)\\n\",\n    \"    lower.append(lb[0])\\n\",\n    \"    upper.append(ub[0])\\n\",\n    \"\\n\",\n    \"fnames = np.array(fnames)\\n\",\n    \"point = np.array(point)\\n\",\n    \"lower = np.array(lower)\\n\",\n    \"upper = np.array(upper)\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style('darkgrid'):\\n\",\n    \"    fig, ax = plt.subplots(1,1, figsize=(20, 5))\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    stat_sig = (lower>0) | (upper<0)\\n\",\n    \"    plt.errorbar(x[stat_sig], point[stat_sig], yerr[:, stat_sig], fmt='o', label='stat_sig')\\n\",\n    \"    plt.errorbar(x[~stat_sig], point[~stat_sig], yerr[:, ~stat_sig], fmt='o', color='red', label='insig')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(fnames, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### CATE(x) inference\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.160</td>\\n\",\n       \"      <td>0.336</td>\\n\",\n       \"      <td>3.452</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.607</td>\\n\",\n       \"      <td>1.713</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>-1.112</td>\\n\",\n       \"      <td>0.198</td>\\n\",\n       \"      <td>-5.610</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.438</td>\\n\",\n       \"      <td>-0.786</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>1.387</td>\\n\",\n       \"      <td>0.282</td>\\n\",\n       \"      <td>4.913</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.923</td>\\n\",\n       \"      <td>1.851</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>-1.112</td>\\n\",\n       \"      <td>0.198</td>\\n\",\n       \"      <td>-5.610</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.438</td>\\n\",\n       \"      <td>-0.786</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>-1.173</td>\\n\",\n       \"      <td>0.187</td>\\n\",\n       \"      <td>-6.257</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.481</td>\\n\",\n       \"      <td>-0.865</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>1.132</td>\\n\",\n       \"      <td>0.339</td>\\n\",\n       \"      <td>3.342</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.575</td>\\n\",\n       \"      <td>1.689</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>0.938</td>\\n\",\n       \"      <td>0.320</td>\\n\",\n       \"      <td>2.933</td>\\n\",\n       \"      <td>0.003</td>\\n\",\n       \"      <td>0.412</td>\\n\",\n       \"      <td>1.464</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>-0.890</td>\\n\",\n       \"      <td>0.219</td>\\n\",\n       \"      <td>-4.071</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>-1.250</td>\\n\",\n       \"      <td>-0.531</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>0.938</td>\\n\",\n       \"      <td>0.320</td>\\n\",\n       \"      <td>2.933</td>\\n\",\n       \"      <td>0.003</td>\\n\",\n       \"      <td>0.412</td>\\n\",\n       \"      <td>1.464</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>1.132</td>\\n\",\n       \"      <td>0.339</td>\\n\",\n       \"      <td>3.342</td>\\n\",\n       \"      <td>0.001</td>\\n\",\n       \"      <td>0.575</td>\\n\",\n       \"      <td>1.689</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   point_estimate  stderr  zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"0           1.160   0.336  3.452   0.001     0.607     1.713\\n\",\n       \"1          -1.112   0.198 -5.610   0.000    -1.438    -0.786\\n\",\n       \"2           1.387   0.282  4.913   0.000     0.923     1.851\\n\",\n       \"3          -1.112   0.198 -5.610   0.000    -1.438    -0.786\\n\",\n       \"4          -1.173   0.187 -6.257   0.000    -1.481    -0.865\\n\",\n       \"5           1.132   0.339  3.342   0.001     0.575     1.689\\n\",\n       \"6           0.938   0.320  2.933   0.003     0.412     1.464\\n\",\n       \"7          -0.890   0.219 -4.071   0.000    -1.250    -0.531\\n\",\n       \"8           0.938   0.320  2.933   0.003     0.412     1.464\\n\",\n       \"9           1.132   0.339  3.342   0.001     0.575     1.689\"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the inference of the CATE at different X vector values\\n\",\n    \"est.effect_inference(X_test[:,:4]).summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Uncertainty of Mean Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>mean_point</th> <th>stderr_mean</th> <th>zstat</th> <th>pvalue</th> <th>ci_mean_lower</th> <th>ci_mean_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"     <td>0.24</td>       <td>0.281</td>    <td>0.855</td>  <td>0.393</td>    <td>-0.222</td>         <td>0.702</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Distribution of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>std_point</th> <th>pct_point_lower</th> <th>pct_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"    <td>1.08</td>        <td>-1.145</td>           <td>1.285</td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Total Variance of Point Estimate</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>stderr_point</th> <th>ci_point_lower</th> <th>ci_point_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"      <td>1.116</td>        <td>-1.326</td>          <td>1.607</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Note: The stderr_mean is a conservative upper bound.\"\n      ],\n      \"text/plain\": [\n       \"<econml.inference._inference.PopulationSummaryResults at 0x29010b06688>\"\n      ]\n     },\n     \"execution_count\": 26,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the population inference given sample X\\n\",\n    \"est.effect_inference(X_test[:,:4]).population_summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Tree Interpretation of the CATE Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreeCateInterpreter at 0x29010f7ff08>\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=10)\\n\",\n    \"# We interpret the CATE models behavior on the distribution of heterogeneity features\\n\",\n    \"intrp.interpret(est, X[:, :4])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# exporting to a dot file\\n\",\n    \"intrp.export_graphviz(out_file='cate_tree.dot', feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# or we can directly render. Requires the graphviz python library\\n\",\n    \"intrp.render(out_file='dr_cate_tree', format='pdf', view=True, feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABYEAAAEeCAYAAADcsNowAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADO0klEQVR4nOzdd3xUVfrH8c+ZmUx6D6EFEiAQeu+9iNiwoCI2xF7Wsq7+Vl27u5a1u/augL0iYkFBeu+9hl6TkJDez++PiRMjhCIhA+H7fr3uy9x7z733ucHMnHnm3OcYay0iIiIiIiIiIiIiUjM5fB2AiIiIiIiIiIiIiBw/SgKLiIiIiIiIiIiI1GBKAouIiIiIiIiIiIjUYC5fByAiIiIiJzZjjAO4LCIiYqQxJgENJDghGGOysrKyxhcVFb1prd3h63hERERE5MRlNDGciIiIiFTGGGNCQkLGNGzY8Py7/u/u4OZJSTidTl+Hdcqz1pKensHXX39V+PFHH2fm5uZ2sdZu9nVcIiIiInJi0khgERERETmUNv7+/hfMnD0rKDg42NexyJ+cNvg0d0REROTrr71+P3C9r+MRERERkROTHuUTERERkUMZcuFFF7mUAD5xXXb55U6Hw3GOr+MQERERkROXksAiIiIiUimXyxVdv359t6/jkMrVqVOHoqKiMF/HISIiIiInLiWBRURERKRSxhiMMdV6zdMGDiI2phYFBQXVet0/27dvHxddeBERYeEkNm7CJ598Umnbxx59jKCAQCLDI7xLcnJytcRZ3f8+IiIiInLyURJYRERERE4YmzdvZsaMGRhjGD9+/F8+z549e445lttvux232832nTv4cPSH3Pa3W1m5cmWl7S8efjHp+zO8S+PGjY85BhERERGRqqAksIiIiIicMMaOGUu3bt0YOXIkY0ePOapjc3NzGTt2LKefNpjBpw0+pjhycnL45uuveeTRRwgJCaFX796cM/QcPhr70TGdV0RERETEF5QEFhEREZETxkdjx3LpZZdy6WWXMnHixCMa0Ttn9mxuuvFGEhrG89GYsYy65mrmzpvr3X/brbdSKzrmoEvHDh0Oes5169bhcrlo1qyZd1vbtu1YtWpVpXFM+H4CtWvF0q5tO958442juGsRERERkePL5esAREREREQAZs6YwZYtW7jo4ouJiYmhcZMmfPrJJ9zx978ftP0XX3zBo488irWWK6+8kkVLFhMXF3dAu5dfeYWXX3nlqGLJyc4hLKziXGvh4WFkZ2UdtP1FF1/EdddfR+3atZk3dy6XDL+E8IgIRowYcVTXFRERERE5HjQSWEREREROCGPGjGHw4MHExMQAMGLECMaMqbwkxI7t29m5Ywft2rWjbdu21KlTp8piCQ4JJjMzs8K2zMwsQkJDD9q+ZcuW1KtXD6fTSY+ePbn1ttv4+quvqyweEREREZFjoSSwiIiIiPhcXl4eX37xJdOmTaNB/Tga1I/jfy+9xLKly1i6dOlBj/n7nXeyeesWBg4cwFNPPkmj+ATu/sddLF68uEK7v91yC5HhEQdd2rVtd9BzN2vWjOLiYtavX+/dtmzZUlq2bHlE92OMwVp7hHcvIiIiInJ8KQksIiIiIj43btw4nE4nS5cvY/7CBcxfuIBlK5bTu3dvPhozttLjwsLCuO7665k2Yzq/Tp6Ef0AAw86/gCGDT/e2efW110jfn3HQZemygyeYg4ODOf+CC3j0kUfJyclh1syZjP9uPJdfcflB23/33Xekp6djrWX+vHm8+sorDD136LH9UkREREREqoiSwCIiIiLic2NHj+Gqq66iYcOG1KlTx7vc/Ldb+OSTTyguLj7sOZKSknj8icfZuCmZRx979JhjevmVl8nLy6N+3XpcecWVvPzqK7Rq1QqAGdNnEBke4W37+Wef0yKpOVERkVx99TXc/X93M3LkyGOOQURERESkKhg9piYiIiIilXG73U89+NBD99x7372+DkUqkZaWRqP4hNy8vLxgX8ciIiIiIicmjQQWERERERERERERqcGUBBYRERERERERERGpwZQEFhEREREREREREanBlAQWERERERERERERqcGUBBYRERGRk9K111zDQw8+5OswREREREROeEoCi4iIiIgco3v+75+0bN6CqIhIWrdqzZgxYyrsX7JkCd26diU8NIxuXbuyZMkS7z5rLffdex91YmtTJ7Y29917H9baIzpWRERERORIKAksIiIiInKMgoKD+frbb0jdl8Z7773LXXf+g9mzZgFQWFjIRcMu5LLLLmNvagpXXnklFw27kMLCQgDeefttvvvuOxYsWsjCxYuYMGECb7/11hEdKyIiIiJyJJQEFhEREZGj9szTz5DQMJ6oiEhatWzF5EmTAZg/bx59evWmVnQMDeMacMftt1dIWLpdfrzx+uveUbMPP/QwGzdupG/vPkRHRnHpiEu97adOmUqj+ASeevIp6tauQ9MmiXz88ceVxjTh+wl07tSJWtEx9O3dh2XLlh023qry8CMP07x5cxwOB127daNX797MmTPXex/FxcXcfscd+Pv7c+ttt2Gt5bfJvwEwZvQY7rzz78TFxVG/fn3uvPPvjP5w9BEdKyIiIiJyJJQEFhEREZGjsnbtWl5/7TVmzZnNvox0JvwwgfiEeACcTifPPvcsu/bsZtqM6Uye/BtvvP56heMnTvyFOfPmMn3mDJ579lluuelmPhj9IcmbN7Fy5Uo+/fRTb9vdu3eTlprK5q1bePe997jlpptZu3btATEtXryYG66/ntdee43de/dw3Q3Xc+EFwygoKDhkvH/29H+fplZ0TKXLkcjLy2PhggW0bNkSgFWrVtKmTRuMMd42bdq0YdWqVWX7V9G2bVvvvrZt2/5h36GPFRERERE5EkoCi4iIiMhRcTqdFBQUsHrVaoqKikhISKBJkyYAdOzUiW7du+NyuUhISOD6669j2rTpFY6/++67CAsLo1WrVrRq3YrTBg+mcePGhIeHc8aQISz9U83bRx57FH9/f/r268uZZ53Fl198eUBM777zDtddfz1du3XD6XQycuRI3P7+zJ0z95Dx/tk/7/knKWmplS5H4m+33ELbtm05fcjpAGRn5xAWHl6hTVh4GFlZWWX7syvsDwsPJzs7G2vtYY8VERERETkSSgKLiIiIyFFJTEzk2eef49+PPUb9uvW4/LLL2blzJwDr1q3j/HPPo0H9OKIjo3jwgQdJS62YPI2tXdv7c2BAILVrx3rXAwIDyc7O9q5HRkYSHBzsXY9v2JBdu3YeENPWLVt58YUXKoza3b5tGzt37TxkvFXt3n/ew8qVK/n400+8o3dDQoLJysys0C4zM4vQ0NCy/SEV9mdlZhISEoIx5rDHioiIiIgcCSWBRUREROSoXXrppUyZNpUNyRsxxvCv++4D4La/3UpSUhKr1qwmLX0f//7Pv7HW/uXrpKenk5OT413fum0bdevWO6BdXIM47r3vvgqjdvdnZTJixIhDxvtnTz35FJHhEZUuh/LoI4/y088/88OPPxIWFubd3rJlK5YvX17h97Bi+XJvuYiWLVtWqF+8bNmyP+w79LEiIiIiIkdCSWAREREROSpr167lt8m/UVBQQEBAAIGBATgcnm5lVlYWoWFhhISEsGbNGt58861jvt5jjzxKYWEhM6bP4IcJE7jwogsPaHPttdfy9ltvMW/uXKy15OTk8MOEH8jKyjpkvH927333kr4/o9KlMv996r989umn/PTzT0RHR1fY169/P5xOJ6+8/DIFBQW89uqrAAwYOACAK668ghdffIkdO3awc+dOXnjhRUZeNfKIjhURERERORJKAouIiIjIUSkoKOD+f/2LurXr0KB+HCl7U/jP448D8N+nn+bTTz8lKiKSm2+8iYsvvviYrlWnTh0iIiOJb9CQq0aO5JXXXqV58+YHtOvUuTOvv/EGd9xxB7ExtWiR1JzRo0cfNt6q8uADD7B161ZaJDX3jhp+6smnAHC73Xzx1ZeMHTuWWtExfPDBB3zx1Ze43W4Arr/hBs4++2w6tu9Ah3btOfPMM7n+hhuO6FgRERERkSNhjuXxPBERERGp2dxu91MPPvTQPffed2+1X3vqlKmMuuoqNm3ZXO3XPpmkpaXRKD4hNy8vL/jwrUVERETkVKSRwCIiIiIiIiIiIiI1mJLAIiIiIiIiIiIiIjWYksAiIiIickLq17+fSkGIiIiIiFQBJYFFREREREREREREajAlgUVERERERERERERqMCWBRURERKRaffLJJ3Tv1o3I8AgaxjVg6NnnMHPGjAptRn/4IW6XH59//jkAM6bPIDI8gsjwCCLCwnG7/LzrkeERbN26ldMGDiI0OKTC9vPPO98HdygiIiIicmJRElhEREREqs2LL7zA3f+4i3vuvZftO3ewcVMyN950E+O/G1+h3ZjRY4iKiuKjMWMB6N2nN+n7M0jfn8GSZUsBSElL9W5r2LAhAC/97yXvtvT9GXw77ttqvT8RERERkRORksAiIiIiUi3279/Po488yksv/48LLriA4OBg/Pz8OGfoOTz19H+97bZs2cK0adN47Y3XmThxIrt3767yWEZ/+CH9+vTl7n/cRa3oGJKaNmP2rFmM/vBDGic0on7deowePdrbvqCggHv+7580adSYuHr1+dstt5CXlwdAeno65597HvXq1CU2phbnn3se27dv9x572sBBPPzQw/Tr05eoiEjOOuNMUlNTq/yeREREREQqoySwiIiIiFSLObPnkJ+fz/nnn3/IdmPHjKVTp04MGzaM5i2a88nHnxyXeObNm0ebtm3YvXcPl4wYwRWXX8GCBQtYvXYNH3z4IX+//Q6ys7MBuP++f7Fu/XrmL/Ts37FjJ//5938AKC0tZeSoq9iQvJGNm5IJCAzkjtvvqHCtzz79lLfffYcdu3ZSWFjI8889f1zuSURERETkYJQEFhEREZFqkbYvjZiYGFwu1yHbfTR2LCMuHQHAiBGXMnbsmCO+xp1/v5Na0THe5eGHHq60baNGjbhq1CicTicXD7+Ybdu2cf8DD+Dv78/g0wfjdrvZsGED1lreeecdnn3uWaKioggNDeXee+/hi7J6xdHR0QwbNoygoCDPvvvuZfq0aRWuNfKqq2jWrBmBgYFcdPFFLFu69IjvSURERETkWB26By4iIiIiUkWio6JJTU2luLi40kTwrJkz2bRpE8MvuQSAEZeO4KEHH2TJkiW0b9/+sNd44cUXuObaa48ontjYWO/PgYGBANSuXbvCtpzsbFJSUsjNzaV7127efdZaSkpKAMjNzeXuu+5i4s8TSU9PByArK4uSkhKcTicAdeqUnzcoKMg7wlhEREREpDpoJLCIiIiIVIvuPbrj7+/PuHHjKm0zZswYrLV06dSZBvXj6N2zFwBjRx/5aOCqFhMTQ2BgIEuWLSUlLZWUtFRS96WRvj8DgBeef4F1a9cxY9ZM0tL3Mem3yYAnUSwiIiIiciJQElhEREREqkV4eDgPP/IId9x2O+PGjSM3N5eioiJ++vEn7r3nXvLz8/nyiy95/Y3Xmb9wgXd58aUX+fTTTykuLvZJ3A6Hg2uvu5a777qbvXv3ArBjxw4m/jwR8Iz6DQwMJCIign379nlrBYuIiIiInCiUBBYRERGRanPnP+7k6Wef4cknnqBenbo0TmjE66+9xnnnncu4ceMIDAzkiiuvpE6dOt5l1NVXU1xczM8//XzY899x+x1Ehkd4l25du1ZJ3E88+SRNmjShT6/eREdGccaQM1i3bi0At99xO3l5edStXYfevXozZMjpVXJNEREREZGqYvSYmoiIiIhUxu12P/XgQw/dc+999/o6FKlEWloajeITcvPy8oJ9HYuIiIiInJg0ElhERERERERERESkBlMSWERERERERERERKQGUxJYREREREREREREpAZTElhERERERERERESkBlMSWERERERERERERKQGUxJYREREREREREREpAZTElhERERE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0pJSSgqLsaUWW+pJzpaW9W//6PfEbWlZf7eksJiSopIjOs+uFdvYtzmV0tJSivIKWfTxLNzB/oTXi6iWexQRqek0ElhE5Djasz+Lq9740Ls+9NnXqR0WyuhbRgFw/+fjaB1Xj0t7dsHP6eThYWfzwo+TeG/qLBpGR/HwsLPxczoBWLl9Fx9MnU1eURERgYH0aZ7IVX27++K2REREROQUsmLcQlZ8u9C7vnnWelqf34kmfZsz4b7POPvJSwiOCSUnNYvv7vrY2+6z694hOCaE856/4pDnaTusC0W5hSwcM5Pcfdk43S6iG8fS/+6zcbqVthARqQrGWuvrGEREjooxZnjXJglv//vioWG+jkUqd/N7n+xP3ps61Fo73dexiIiIiJxsjDGxrgC/zcPfula1EHyotLSUT0e9Za21epJaRE5qehETERERERERERERqcGUBBYRERERERERERGpwZQEFhEREREREREREanBlAQWERERERERERERqcGUBBYROUUMeepldqRn+DoMEREREZEq9fHIN8jas9/XYYiInNBcvg5ARORkMHnlWr6ev4RtaekEuf1oXDuGS3t0oXWDet42E5et5rkffuW+84bQv0Uzlm/bwQOfjwfAYikoKibAz8/b/u3rLueZ739h9c7dOB3l38m1a1ifxy4eelTxDXnqZd678UrqR0Yc242KiIiIyCll86z1rPlpGZm70nEFuImMj6bV0I7EJtX1tkmevoY5b0+h1y2nEd89kb1rdzHl2QkAWAslhcW4/MvTC2c/eQmz35pM6sa9OBzGuz22RX36/+PMo4rv45FvMPSZSwmtHX6MdyoicmpTElhE5DC+mreYz+Ys5PYh/encKB6X08GC5K3MXp9cIQn8y4rVhAYEMGnFGvq3aEabBvUZd9dNAOzOyOSqNz7k6ztvqJDwBfjb6f04s12rar0nEREREZHVPy5l1feL6TqqL3XbNsDhdLBz+TZ2LNpcMQk8Yx3uYH82zVxHfPdEYpPqMvzt6wDITsnku7s+5qI3rsHhrNjP7XxlbxL7t6jWexIRkYNTElhE5BBy8gsYPX0ud509iN5Jid7t3Zs2onvTRt71PfszWb51B/effyZPjPuJfdk5RIUEV2ksO9IzeOGHSWzcm4rL4aB9fBz3n38md439CoCb3/sEg+HOswbSv0Uzvpi7iK/nLQZjGNWne5XGIiIiIiInt8LcApZ/PZ/u1w+gQZfG3u1xHRKI65DgXc9JzWLvmp30vvV0Zr76C3kZuQRGBFVpLFl79jP3nSmkb03D4XRQu2V9et86mF8eHwfAD/d/gTHQ7dr+xHdPZNWEJaz5aRnGQNsLu1ZpLCIiNZWSwCIih7Bq524Ki4vp1azJIdv9umINTevG0qd5Ig1nRjF55Vou6taxSmMZPW0OHRs15OnLhlFcUsK6XXsBeO6KCxny1Mu8fs2l3nIQ85O38OXcRfz30guoEx7GCz9NrtJYREREROTklrphDyVFJcR1anTIdskz1hHVqBYNuzRmeb1INs9eT4sz21VpLMu+mk+dNnEMuu9cSotLSNuUAsDg+8/j45FvcNbjF3vLQexctpU1Py5l4L1DCakVytx3p1ZpLCIiNZWSwCIih5CVl094UOABJRz+7NcVaxjasS0AA1o249cVa444Cfz6L9N4e/IM7/p5ndpxVd8DR+46HQ727s8iLSuHWmEhFUpR/Nm01es5vW0LEmpFA3Bl765MWbXuiOIRERERkZqvIDsf/9CAA0o4/NmmmWtpNqg1AAk9Etk0Y90RJ4EXjp3J4k9ne9ebndaadhcdOHLXOB3kpGaTl5FDUFRIhVIUf7Z17kYa90kiIi4KgDYXdGbLnA1HFI+IyKlMSWARkUMIDQxgf24eJaWllSaCV27fye6MTPq3aAp4ksAfTJ3Nxj0pNKld67DXuHlw3yOqCXzdgF58OH0Ot4/+nJAAfy7q0oEh7VoetG1adg5N68R612PDwg57fhERERE5dfiHBFCQlU9pSWmlieCUdbvISckivrunLFpCj6Ys/XIe6VtSiYyPOew1Ol3R64hqAne4pDvLvprHz498jTvYn+ZntKNJv+YHbZuXkUtUo/I+dnBM6GHPLyIiSgKLiBxSy3p18HM5mbUumT7NEw/a5pflawC45f1PD9h+JEngIxUVEsydZw4CYMW2ndz76be0bljPWwLiz21TsrK86ymZWQe0EREREZFTV0xibRwuJ9sXbqJh14OXPkuesQ4s/PjgF3/avpZOR5AEPlKBEUF0u7Y/AHvX7mLy098T27yutwTEn9vmpmV713PS1M8VETkSSgKLiBxCcIA/I3t345WJU3A6DB0bNcTlcLB48zaWbt3ByD7dmLZmPXecMYCuTRK8x81Yu5GPZs7j+oG9DltK4khNW7OeFvXqUisshJAAf4wBhzEARAYHsTsj05sQ7tc8ked+mMRprVtQOzyUsTPnVUkMIiIiIlKtnMfrxO4gf9pe2IUFo2dgnA7qto7D4XSwe+UO9qzeQdthXdg6byNdr+lLvXbx3uO2LUhmxbcL6TCix2FLSRyprfM2EpNYm6CoENzB/hjAlPVzA8IDyd6b6U0IN+zahDnv/Eaj3s0IjgllxbcLqyQGEZGaTklgEZHDuKhbR6JCgvl41gKeGj+RILebpnVqMaJHF2atS8bf5eK01s1xOcv76EPatmT09LnMT95C98RDT7bx6sSpvPHrdO96XFQEr1494oB263bt5Y1fp5NTUEhkcCA3n9aXuhGezvAVvbvy7Pe/UFBczB1nDKRfi6Zc0Lkd93zyDcYYRvXpzuSVa6voNyIiIiIix5MxpjPwNOB3PK/T4sx2BIQHsnLcIma9Pgm/QD+iEmrR6tyObFu0Gaefi0a9muFwlfdzG/dtzrKv5rNr2Tbqd4g/xNlhwZgZLPpopnc9tG4EZz520QHt0pL3svCjmRTlFhIQHkSnK3oREuspZ9bmgs7Mfus3SoqK6Xp1X+K7JZJ0elsmPTUeYwxtL+zK5lnrq+g3UiljjPkceMhau+Z4X0xE5Hgw1lpfxyAiclSMMZd2aRz/3n+Gnxvg61ikcje9+3HuppS0s6y1mrJZRERE5AgYY1oB/wa6AS+5AvweHf7Wterz+lBpaSmfjnrLAv8C7gImAI9aazf5NjIRkaNTNc9uiIhUA2OMyxhzNfCSxepJhhOcBX/gA2PMMPP783wiIiIicgBjTKIxZgwwGZgFNAU+ADRq6wRhrX0Kz7/LNmCBMeY1Y0w9H4clInLElAQWkROeMcZhjLkEWAGMAl52GEeub6OSw3EYkw28BjyAp6N8ppLBIiIiIuWMMQ2MMW8Cc4D1QFNr7bPWWvV1T0DW2gxr7YNAcyAPWGGMedYYU3Wz5ImIHCdKAovICct4nAMsAu4Gbgf6Aypue/KYA3QGngSeA6YZY/r6NiQRERER3zLG1DbGvAgsBdKBJGvtY9baTN9GJkfCWptirb0LaAMEA2uNMY8ZY8J9HJqISKWUBBaRE5IxZiCeR+GeBB4BulprJ1oVMj/pWGtLrbVf4ukkv42nRMTPxpguPg5NREREpFoZYyKNMU8Aq/B8Hm9prb3XWpvm49DkL7DW7rDW3oxn0ENDYIMx5l5jTLCPQxMROYCSwCJyQjHG9DDGTALeBF4G2ltrv1Xy9+RnrS2x1o7G8/jcN8A3xphvjDFtfByaiIiIyHFljAk1xjyAp+RDLNDRWnu7tXa3j0OTKmCt3WStHQX0BToB640xtxlj/H0bmYhIOU2sJCInBGNMe+A/QFvgMeBDa22RT4P6CzLz8nnhh0ks3LyV8MBAru7Xg4Gtkg5ot2TLdj6aOY8Ne1II9fdn9C2jKuzfuCeFV3+ZyqaUNILcfpzVvjWX9+rq3f/j0pV8Nnsh6Tm5tIqry11nDSI6NOR4316VsNYWAm8YYz4EbgZ+LUv8P2ytXe/b6ERERESqjjEmEE9/5594Jn3raa1d59uojl5Bdj5z353CruXb8Q8NoP3F3Ujo2fSAdntW7WD5uIWkb07FHezmvOevqLA/fUsqC8bMIGPbPlwBfiQOaEmb8zt59xcXFLH4k9lsnZdMaUkpEQ2jGXz/ecf9/qqKtXY1cLExpgOezzZ3G2P+DXxgrS32bXQicqrTSGAR8SljTHNjzGfAj8BEPJNhvHMyJoABXp04BZfTwWe3Xcs9Q0/n5YlT2Jxy4NN9AX4uhrRtyfUDeh30PE999zNtGtTnyzuu55nLLuT7RcuZvT4ZgKVbtvP+1Nk8cuHZfPn366kTEcaT3/18XO/reLDW5llrnwcS8TwSOdsY87YxpqGPQxMRERE5JsYYP2PMjXhG/vYFBltrLzsZE8AAC0bPwOF0MuyVq+h50yDmfzidjO37Dmjn9HfRpG9zOozoftDzzHx9ErFJdbnw9VGc9q9zWT9pJdsXbfbun/f+NApyCjj7qUu48PVRdLqs5/G6pePKWrvYWns2cClwObDaGHOZMUY5GBHxGb0AiYhPGGMSjDHvA9OBxUCitfZ/1toCH4f2l+UXFjFj7Uau6tudQLeb1g3q0SOxEZNWrjmgbfN6dTitdXPqRIQd9Fx79mcxsFUSToeDepHhtIqrx5ZUT0d77sbN9G2eSEKtaPycTi7v2YXl23ayM33/cb2/48Vam2Wt/Q/QDEgBFhtjXjLG1PZxaCIiIiJHxRjjNMZcCawBLgSGWWvPt9Yu93Fof1lxQRHb5ifT9sIu+AX4EZtUl/od4tk888B8dkyT2jTq1YyQWgfv4+akZpHQsykOh4PQ2uHUalaH/Ts8fdz9O9PZvmgz3a7pR0BYIA6Hg6hGtY7rvR1v1tpZwEDgJjyTXC81xpxnjDG+jUxETkVKAotItTLG1DPGvAosBLbhGfn7lLU2x8ehHbPt+zJwOhzERUV6tzWKjWFLyoGjJA7n/C7t+HXFaopLStiWls7qnbvokNDAu/+PFZJ///FgI45PJtbafdbafwEt8dzWKmPMk8aYKB+HJiIiInJIxhiHMeYiYDlwI3CNtfZ0a+08H4d2zDJ37cc4HYTVjfBui2wYTcaO9KM+V9KQNmyasY7S4hIyd2WQumEPdVrFAZCWvJfgmFCWfT2fr275gAn/+pyt85Or6jZ8xnpMAnoA/8JT+m6uMeZ0JYNFpDopCSwi1cIYE2OMeRZYAeQBza21D1lrM3wbWdXJKyokyN9dYVuwv5u8wqOvbNGtSSOmr9nI0Gdf57q3xzKkbUuS6noGxnZu3JBpa9aTvDeVgqJiPpo5DwMUFNeMMmPW2j3W2r8D7YFoYJ0x5iFjTKhPAxMRERH5E+NxJjAfuA+4C+hjrZ3q28iqTnFBEX6BfhW2+QW6Kc4vPOpz1W8fz9b5yXx23Tt8f8+nNOnXnOjGsQDk7cth//Z9+AW6Of9/V9J5ZG/mvDWZ/X8h2XwiKksGjwc6AM/hmQR7ijGmt28jE5FThSaGE5HjyhgTDvwDuBX4DGhtrd3p26iOj0A/N7kFFTvDuQWFBLr9Kjni4DLz8nng83HcMrgfA1slsS87l/98+wORwUEM7diWjgkNubJ3N/79zQ/kFhRyQZf2BPq7iQkNrsrb8Tlr7TbgBmPM08AjwIayn1+z1ub5NDgRERE55Rlj+gGPA1HAg8DX1v7xea2aweXvR1FexUENRflFuALclRxxcAXZ+fz2zAQ6j+xNQo+m5O/PZfrLEwkIC6TZaa1xup04nA5an9cJh9NB7eb1iG1Rn10rthFeP/LwFzhJWGtLgc+MMV8BI4GxxphVwAPW2kW+jU5EajKNBBaR48IYE2yMuQfPZBjxQGdr7S01NQEMEBcVQUlpKTv2ZXi3Je9NJb7W0VUz2J2xH4dxMLhNC5wOB7XCQujXohnzNm7xtjm3U1vev3Ekn91+Hb2TmlBSWkpCreiqupUTirV2g7X2CmAQ0AtYb4y52RhzdJ88RERERKqAMaarMWYi8B7wJtDGWvtVTUwAA4TVDceWlJK5O8O7LX1rGhFHmZjN3puJcRga907C4XQQFBVCfLdEdi7dCkBEgwP7sjW5WIK1ttha+x6QBEwAvjfGfGmMaenj0ESkhlISWESqlDHG3xhzG57kbyegn7V2lLV2k49DO+4C3H70SmrC6OlzyC8sYuX2nczesIlBrZof0LbUWgqLiykpKcUChcXFFJWUAFA/KhKLZfLKtZRay77sHKatXk+jWE/HuLC4mM0paVhr2bs/i5d+/I3zO7cjNCCgOm+32llrV1hrhwHnA+cBa4wxVxlj9FSLiIiIHHfGmDbGmG+Br4Gv8JQ3G2OtLfFtZMeXy9+PuM6NWP71AooLikhZt4sdizaT0KvZAW1tqaWksJjSklKshZLCYkqKPb+e32sKb561HltqycvIZcvcjUQ09PRxY5PqEhQdwsrxiyktKSVl3S72rN5J3TYNDrhOTWKtLbDWvgokAnPxlIgYbYxp4uPQRKSGMTX0y0oRqWZlibhReB6FWw48aK1dfJyuNbxrk4S3/33x0INPO+xDmXn5PP/DryzavI2wwACu6deTga2SWL5tBw98Pp5xd90EwNIt2/nnJ99UOLZtg/o8c/kwAJZs3sa7U2axPT0Df5eLbokJ3HxaXwL8/MjOL+Duj75iZ8Z+gtxuTm/Tgqv6dsfpOLG+17v5vU/2J+9NHWqtnX48zm+M6YPnEcxawMPAl2WP14mIiIhUGWNMU+BRPE8lPQW8UR2lqYwxsa4Av83D37o28Hhf63AKsvOZ+84Udq3Yjn9IAO2HdyOhZ1P2rt3FlGcnMPzt6wDYs3oHk54cX+HY2OZ1Oe1f5wGwe9UOlnw2h6zd+3G6ndRvH0+nK3rh8veUT8vYvo+5704lY1sawTGhtLuoKw06N6rem/2T0tJSPh31lrXWVktn2xgTBtwJ3Ibny4Z/W2u3V8e1RaRmUxJYRI6JMcYBXIJnltttwP3W2tnH+ZonbBJYyh3vJDB4JmMBTseTDHYCDwA/1NTHMUVERKT6GGMaAg/heQrpReAla21WNV7/hEkCn8qqOwn8O2NMNPBP4HrgA+Apa+3e6oxBRGqWE2vYmIicNMpmQj4PWALcAdxkrR14vBPAIn9UNsvyz0AXPF9E/BeYaYwZ4NvIRERE5GRljKljjPkfsBjYAzS11v6nOhPAItbaNGvtPUArwA9YbYz5jzEmwreRicjJSklgETkqZcnf0/HUq3oMuB/oYa2dVL2RaKDnia46/4XKksHfAO2AV4G3jTG/GmO6V2MYIiIichIzxkQZY54CVgIlQAtr7f3W2nRfhuXDawv4/GOHtXaXtfY2oCNQF88kyf8yxoT4NjIROdkoCSwiR8wY0xuYArwMPAd0sNaO98Gj97k5+YXVfEk5WnkFhQbIqc5rWmtLrLUfAS2Az4DPjTHjjTHtqjMOEREROXkYY8KMMQ8B64BIoL219s4T4NH73JKiEldpqaY88KWivEIcTofPP3xYa7dYa68FegFtgA3GmDuNMTV7dmgRqTJKAovIYRljOhpjfgDG4qlH1cpa+5kPJ+Gas273Xv/cAp/3xaQSe/dnkZad4wJW+OL61toia+3bQDPgV+AnY8ynxpgkX8QjIiIiJx5jTKAx5m5gPZ4+Q3dr7Y3W2m0+Dg0Aa222y9+1Ze+aXb4O5ZS2c+lWXP5+83wdx++steustZfimRejP56RwTcYY/x8G5mInOiUBBYRAIwx8WWTbP1xW0tjzJfAeGACkGStfd9aW+yTIMtYa1P9nM5P7v3029yV23dRVFLiy3DkDwqLi1myeRv3fvZtjtPheN5a69NMvbU231r7EtAUWArMMMa8Z4xJ+GM7Y4zTGNPAFzGKiIhI9TLGuI0xtwAbgB7AQGvtFdbaDT4O7QDFBcUPznjll7ztCzdRlF+E5r6tHtZaCnMK2DxrPfM/nJ5XmFvwqK9j+jNr7TJr7XnARcDFeGoGX2GMcfo4NBE5QRm9iYiIMaYj8BPQyFqbY4xpAjwMnAE8A7xqrc31ZYx/Zoxx+jmd9/q5nDfkFRTGWX2pdUJwGFMS6HYnFxQVvVRcWvqaD0qFHFLZRBp3AbcAnwCPW2t3GWPq45n8pZu1dpMPQxQREZHjxBjjAq7A089dCzxgrV3g26gOzzjMMHeQ//1FeYVtbal1+TqeU4VxOgr9AvzmF+YUPFz9858cPWNMf+BxIAJ4EPjmROuLi4hvKQkscoorm1BgEZ6Owsyy/16Ip+7vC9baTB+GJ3JcGGNqAfcCVwPvAv8FrgSGA32ttUU+DE9ERESqkDHGgWe05GPAXuB+a+1030YlUvXKnuw8E/gPUAo8APysZLCIgJLAJ72yIvCRaNZYObT91tqDTtBljHkfcAN7gFHA28DT1tq06gtPxDfKRgA/gCf5+wqeR0LnW2vvr6R9KBBafRHKSagU2OfrUigipxJjTBCekW9Sc2RXxUCEsoTY2cC/gWI87/kTlRCTmq7si49heL74SMPzxce0v3iuECCsCsOTE1sJnr6sBsXUQEoCn6SMMc1CAvzfyi8q6uHv8isxBv1DykFZIL+wyB3odq/Izs+/1Vo78/d9xpjrgKfwfInwMfAEsFsdYzmVlH1AbITn0dCz8HwpMsJa++PvbRwOc3aQn/vZguLiJm6Xs8joezepRKm1pqikxOHvck3KKSy83lq709cxidRUxpju7mD/V4rzi9q6/F1FGhNRU1iKC4r9XP5+mwrzCv5pS+24v3IWY8xAPKMhw/A86fat+rhyqimrD3w58AieCRAfsNbOL9uXADwPDD/YnC/GmAF+Qe6XiguKmzvd6v+eKqy1prS4xDj8nD8W5xVdr8FhNYuSwCchY0y0v59r3TWD+kWc06W9I8jf39chyQmusLiYaSvX8uy3E3IKioq7WWtXliW+CgDnH/77e42xLtbaRb6KV6S6GGPOAH7EM3qzCM8334FAlrU2vKxN30A/v5/uPr1vYKf4+jgdKj8th5aZl8+3S1YWj1+6eld+cXFTa22Br2MSqWmMMUkut2tBz2sHhjTq3gyXW2VSa5LSklJ2Lt/Kby//kFuYW3ju0dRjNcZ0x1MXNR7PF7yfWms1i7Cc0owxbuAaPKPh5wMPASvx9IPnWmsf+lP7jk63a3qna3sH1W3fAIdLc82dSgoy81jz3dLCrbM2JBcXFLey1pb6OiapGvoke3K6qHNiY//hvbspASxHxO1ycVq7Vlzcs6u/v5/rRoCykRBRZUstPKMk3IBLCWA5VVhrf8LzXuiP51Hi2nj+Jur+3ibY7b776l6dArs2aqAEsByRsMAARvbo5KofGRYOnO7reERqIqef87oWp7fzb9q3pRLANZDD6SCufQLdrugX5A7y/78/7zfGOIwxHxljOv1hWztjzHjgc+BToIW19iMlgEXAWltorX0DaApMB34FxuD5ouS6sknlvFwBrtuSzmkbUL9zghLApyD/sEDaXt7N7Q4LqA/08nU8UnX0afYkFBLgP6B7sybBvo5DTj6dEhu53C7XwN/XrbXZ1tr91toca22BtbZEj8nJqcZ6FFtr88v+JjKstbm/7y+1tnu7uHq+DFFOUl0bNQx1GNPD13GI1EQuf7+B9ds09PN1HHJ81W3dgNKSkm4H2XUH0ARYZoxJMsZ8BvyEJ7HVzFr7tupZihzIWptnrX0eSARWA98DS4GPjDHRv7czDkef2Jb1lC86hRljqNO2QQDQ3dexSNXRH/VJyGEcwQFut6/DqFZPfTWed3+Z4uswTnqBnv9vAnwdh8jJpNRat7/r1Bpl9sKv0xkzRw8EHKsAl8v4OR0hvo5DpIYKcAXUjBzwtNd/ZsFns3wdxgnJz98PW2orfPAxxnQE/gXcDbwFzACWAInW2pestfnVHqjIScQY0wV4FWgMTABi8TwF95u3kbUBTv+a1/9d+O50Vn2tPu6RcgX4uVD+oEapeX/VItUkMzePkS++QYOYaF6+YaR3+4QFS/h42mz2ZWfTJr4B/7zgbGLCQgH4YNI0xk6dhd8fHql599brqBcVWe3xi4icDF74dTrT1m3C5Sz/3vrT6y/D6XBQVFLCsxOnsWFvKnuzcnji/CG0ifNW8uDjuYv5fOEy/Jzlr7kvjziPOuGh1RK70fwpInKSKsjO58t/fEh4vUjOeWQ4ABtmrGHmO+Wlea21lBQWc97jlxLTuDaLvpzNkm/n4/xDP/eC/15BWO3wvx7In15HjTEhwBfAImAc8BrQ1Fqb8dcvInLK2QZMonxOmLlAJJ7SgFJNFr47nW1zN+Fwlfdxh75yGcbhoLS4hPlvTSNjcyq5aTn0/r8h1Gpe3sddPW4xaycsq1CqY9Cj5xFcq2r7uOrL1jxKAov8RW/9/BvxtWIo/UP1hCXJW3jnlyk8f83lxEVH8coPE/n359/y0nVXetsMaNOC+y8+zxchi4iclIZ1bM2V3TsedF/LurGc264l//1pykH390lsxF2n9z2O0YmI1DzzPp5BeP0o+EM/N7F3cxJ7N/eur5u6kiVfzyO6Uax3W+Puzeh/6xnHM7QfgUZADvAzkAC8Zox531r7y/G8sEhNYa3dDXzo6zgEmp3RmpbDDt7HjW4aS5PBLZn3+pSD7o/r0ojO16uPK0dHSWA5rE+mzebr2fPJKSgkJiyEO4YOoVOTRqzevpNXJvzClpRU/F0u+rZqzi1nnuYd5TrggSe4Y+gQvpw1j31ZOVzUswtDOrTlyS+/Y9PeFLo0bcz9F52Hn8vJkuQtPP7ld5zXtSNfzJpHoNvNtaf1Y3D71geNafaa9bz761R2Z+wnoVYMd553Jk3qxB4y3qq0Yut2Nu1N4ZzO7flh4dLyuNZuoF/r5jSqXQuAK/v35uKnX2ZHWjr1ozXaV0QO78uFyxm/bDV5hYVEBQdxc7/utGtQj3V7Unhr2jy2p2fgdrno2SSea3t38Y5yHfrKB9zUrzvjlqwkIzePc9u1ZFCLRJ7/ZTpb0jLoGF+fuwb3wc/pZPn2XTz3y3TOatOcb5esJNDPxZXdO9I/qclBY5q3aRtj5y5ib2Y2DaIiuKV/DxrFRB0y3urg53RyXvtWADg0VEFE/oKl381n1U9LKMorJCgyhJ7XDKBe64akbNjN7NFT2L9jH063i4SuTel2ZV/vKNd3L32RHlcPYOWPi8nLyKHVmR1o2q8lU1/9mfTtacS1jaffrWfgdDnZtWobU179mRaD27JiwiL8AvzodEmvCgnVP9q6KJmFn88iOyWTiPrR9Lp2IFHxtQ4Zb1Xas24n6dtTaT6wDeumrKy03YZpq0ns0wJTva+/X+F5fD0NKAGKy5a11RmEiBy9dT8sZ+Ok1RTnFRIQEUS7K7oT27Ie+5JTWPbJPLJ3ZeBwu6jfKZ42l3TxjnL95toPaHd5dzb8spKC/Xk0GdyShr0SWfjOdDJ3ZFC7dX06X98Hh8tJyppdLHhnOo0HNGfDxJW4/F20HNaRBt0P3sfdtXQbq79ZRG5qNqH1Imh/ZQ/CG0QdMt7q4HA5SRzs6eMah/q4UnWUBJZD2pqSxjdzFvD6zVcTExbK7vQMSko9IwIcxvC3s04jqV5dUjIzuWf0Z4ybt5CLenb1Hj9/fTJv3nwNe/dncuNr77Fi63b+dfG5hAUFcuubHzJp2UrO6NgWgH3Z2ezPzeOLf97Gqm07uG/05yTVr0vDWtEVYlq/czdPfzOBx6+4mKT6dfllyQruH/sFo/9+I7vT91ca7599PHUWH0+fXem9f//AXQfdXlJayv/G/8xd55/Fpj0pB+z/47Rqv/+4aW+KNwk8e80Gzn38eaJCQ7igWyfO69bpgHOIyKlpe/p+JixfzfMXn0N0SBB7MrO8Txs4jOG6Pl1oGhtDanYOj4z/lR+Wr/EmQQEWb93Bi5cMJSUrh79/Np7Vu1O4a3BfQgP8+b8vJzBt3SYGtUgEID03j8y8fD68ejhrdqfw6PhfSYyNIS6y4mO7G1PS+N/kmTx49iASY6OZsjaZ/0yYxBtXDGNPZnal8f7ZFwuX8dXC5ZXe+6c3XF7pvh+Wr+GH5WuoHRbKxZ3a0Csx4Uh/pczbvI1L3/6YyOAgzmnTnLPaHDzpIiKnnoyd+1j981LO/c+lBEeFkJWyH1vWbzQOQ/cr+xHTuDY5+7L4+alvWT1xKa3PKh+xtWPZFs57/FJy0rL59l8fs2fdLvr97QwCQgMY/9BnJM9cS9N+LQHIy8ghPyuPS1+7jr3rdzPx6W+JaRxLRL2oCjGlbtrL9Dd/YfD/nUtM49psnL6GX579jouev4qslMxK4/2zpePms+y7+ZXe+5Xv3nLQ7aWlpcx+/zd6X38a+7alVnp8Vkomu1fvoM+Ngyts37oomTHXvU5QRDAth7SjxeB2lZ7jr7DWvlilJxSRapG1ez/Jk1fT/4FzCIwMIic1q8LrbdsRXYhIiCEvPYdZL/5K8m9rvElQgD0rdzDgoaHk7cvht8fGs29DCp2v74s72J+pT0xg29xNxPfy9HEL9udRkJXPGc8OJz05hVkv/kpEQgyhdSr2cTO2pLHo/Zn0uH0QkQnRbJ2dzJyXJ3Ha48PITcuuNN4/W/vDMtb/UHkf95xXKu/jJv+2huTf1hBcK5RmZ7WhfueEI/2VsmvpNr6/7WMCIoJoPLA5jQeojyuHpySwHJLTYSgqKWHL3lQigoOoExnh3ZdUv7wmTZ3ICIZ26cDSTVsrJIFH9OlOcIA/jQJqkVC7Fl0SG3vr33Zt1oQNu/ZUuN41p/XF7XLRvlE83ZKaMGXFakYO6F2hzfcLFjO0SwdaNqgPwBkd2/LxtFms2raDWmGhlcb7Z5f168ll/Xoe9e/k69kLaNGgHkn16x6QBO7atDGPff4t53btSFx0JKMnT8cYKCj0TE7cv00LzunSgciQYFZv38nDH39FSEAAg9q1OtilROQU4zCGopJStqVnEB4YQO2w8rpeibEx3p9rh4VyRqtmrNi5p0ISeFjH1gS53cRHu4mPjqRDg3re+red4uNITk1jEIne9ld074Cf00mb+nXonBDHjA2bGdGl4gf2n1eu44xWzUiq4xmFNqhFIl8sXMaa3SlEBwdVGu+fXdypLRd3anvUv5OhbVtyba8uBPu7Wbx1J0//PIXI4EBa1q192GN7N23EkFZJRAQFsG5PKk/++BvB/m76NWt81HGISM3jcDgoKS4hY8c+AsMCCa1VniCIaVz+GhNaK5zmg9qwe/WOCkngtkM74w7yxx3kT2SDaOq3beitfxvXLoG0zXu9SWCAThf3xOnnom7LOBq0b8SmOevpMKxbhZjWTl5O80FtiE309LOb9mvJ0nHz2bt+N8FRIZXG+2ftzutCu/O6HPXvZNVPS6iVWIeYxrUPmQTeMH01tZvXIzS2PIZG3ZuRNLANgRFBpGzYzaQXvscd5E+TXkpMiJzqjDGUFJeStSsD/9AAgmPK+4yRCeV93OCYUBr1a0bq2j0VksDNzmiNX6Abv/puwupHEtuqnrf+be02cezfmga9yvu4LS/ogNPPSUxSHeq0jWPH/M00H1qxj7t52joa9WtGVGNPHze+VyLrJiwjPTmFgIigSuP9s6Sz2pJ01tH3cZuc1pLWl3TBL9DN3pU7mf/GFALCA4luevg+bv0ujUjom0RAeAD7klOZ+9pv+AW5adBNfVw5NCWB5ZDqR0fxt7MG88Hk6Wzem0qXpo245czTiAkLZVtqGq/9OIm1O3ZRUFRESWkpzerVqXB8VEiw92d/l4vIP63vy87xrocGBBDoLq9FXycinLSsrANi2pORyc+Ll/P1nAXebcUlJaRlZtO+UXyl8VaF1Mwsvp49nzdvueag+zslNmLUwD48/MlX5OYXcGHPrgS5/alVloRJiK3lbdu6YRwX9ujC1JVrlAQWEQDqRYRxXe+ufDxvCVv3ZdCxYT2u7dWV6JAgdqTv550Z89mQkkpBUQkltpTEPz0pEREY6P3Z7XISERRQYT09t9C7HuLvJsDPz7seGxrMvpzcA2Lam5XNpDUb+H7Zau+2otJS9uXk0qZ+nUrjrSqJseX32Dkhjn7NGjN749YjSgI3jIrw/tyibixD27Vg5oYtSgKLCABhdSLoPrIfi7+aw+TtadRvG0+3K/oSHBXC/l3pzB0zjdTkPRQXFlNaUkrMH2rfAgSGl7/WudyuCutOt4u8/eX9XP/gAPwCyl9zQ2qFkZuefUBM2alZrJ+2mlU/L/FuKykuJTc9m7ot4yqNtyrk7Mtm5U9LOP+Jyw7bdsP01QckmSPjyl+vazerR6szOrB53gYlgUWEkNphtB3RldXjlpC1M4PYVvVoc0lXAiODyNq9n+WfzSdjcyolhSXY0lIi4iv2cf3Dyvu4Dj8n/mHlfVynn5P8zPI+rl+QG5d/+ettYHQw+RkH9nFz07LZOmsDyZPK+7ilJaXkZeQSk1Sn0niryh/vsU7bOOK6N2bnoq1HlAQOqxfh/Tk6MZYmp7Vg54ItSgLLYSkJLId1WrtWnNauFTn5BTw/7kfe+vk3/nXxubzw3U80rVuHB4efR5C/P1/OmsfUFWv+8nWy8vPJKyz0JoL3ZGR6a+v+Ua2wUK7o14sr+vc6qnj/bOyUmXw0bVal8fz40P8dsG3N9p2kZWcz6n9vAVBYVExBcRHDnnqJL/55G06Hgwu6d+aC7p0B2JaaxtgpMw96H0BZDbWDP1YiIqem/kmN6Z/UmP9v777Do6qzx4+/p2Zm0nsjlVQgEFog9I4IIoJd7K5lbdtct+/+1v26rrvu2tcuFlYUERVE6T2ElpCQEAJJSEJ672Xq74/ghJAEogYC8byex+fJ3PuZe88d9ebkzOdzbovRyCvb97Fi3yF+OXcar+5MJtzLgyfmT8eg1fDFkUz25hZ87/M0tRtpM5nsheDKxmZCeuhd7uXkyI3jRnLTuJ6X9PYW77k+OZTO6sPpvcaz+oHlfYpboVBg66XlxAXfi9xzhRBdDZ0cw9DJMRhb2tn71lYOfrSHGQ9fxd63t+EZ6s2MRxeg1WvJ2JBC/oGc732e9uY2TG0meyG4qaoB9yCvbuMcPZ2IX5JA/HUJ3fadL95zHfn8AGmf994O4s4VD3fbVplbRmtdM2t+9T4AZqMZi9HM/x58g5tfvQ+lsuMJ9uXZJbTUNhE6IfL8F63ge9+vhRCDT9DEcIImhmNqNXLk/X1kfnqIcT+ZRtoHybgGezD+/ulo9BpyNmdSfOj757imFiPmdpO9ENxa04xLYPccV+/hSPTCkUQv6jnH7S3ec2V/lU72V73nuItfvTQ5rk1yXNEHUgQW51VYWU1VQyMjQoagVavRatRYz/TCaW03YnDQotdqKays4ssDKbgaftg3Yyu27ua+uTPIKiomOTuHu2dP7TZm0fjR/HHlp4wZGkrskADaTCaOnCpkVGgQVQ1NvcZ7ruUzei8k9yYhaiirftmZNG87eoyt6cf4v9uuR6VUYjSZKa6pIdTHm4r6Bp77/GuWJo7H+czsvD1ZJxgVGoSTTsfx4lI+23eQe+fO+E4xCCEGr6LaeqqbWxjm74NGpUKrVnXec40mDFoNeo2a07V1fJ2RjYted4Ejnt/K/Ue4I3EMJ8qrOJhfxK0T4ruNmT8siqe/3kb8kACifL1oN5s5WlzG8AA/appbeo33XDeOG8mN4777Urm9OfmMCQ7EQaPmyOkSdmTn8seFs+37TRaLPWE2Wa0YzWY0KhUKhYLkvEJGBPji6KDlZEUV69KzuGNiz09gFkL8+NSV1NBS04xvtD8qrRqVVm3v+WhqM6LVa9HoNNQV13B8y1F0Z81E+z5SPt3HuJsnU5lTxunUU4y5PrHbmOiZcWz99zoC4oLwHuqHud1M6bEi/GIDaalt6jXec8UvSSB+Sc+F5N4ExYdy44udq93y9p0gb+9x5vxqsb0ADHBy1zFCEyLR6rVd3l9wKBe/mEC0jg5U5ZZz7JsjjLvpu+XaQojBqbGsnrbaFjwifFBpVCg1Knv+Zm43odFrUOvUNJbWcWp7NlrnH5bjZn1+hOHLxlCTV0VZWhGx18Z3GxM6LYr9L2/De1gA7mFeWIxmqo6X4RnlR1t9S6/xnit64UiiF373HLf4UD6+IwJRadVUHCvh9L5cJj7WmeNaTBa+nbxgNVuxmMwo1R05bklqIV5RvmgMWmpPVZG7NYthSyXHFRcmRWBxXiaLhTc3baegshq1Ssnw4CH88toFADx41Wye+2IDq/YkE+nvy4wRsaTmff9v7DycnHDW67j+2RfRaTT8fPFVBHt3nyERHejPr5ZczYvrN1FUXYODWk1cSBCjQoPOG29/0KrVeDh3Lrlz0ulQK5X2bUazmb998gUlNXXoHbQsGDOSe+Z0flu4Pf0Y//zsK4wWM94uztw8LdH+YDwhhDBZLLyXdJii2jpUSiUxfj48MrOjd/k9k8fx8vYkPkvNINzLgymRYaQXlX7vc7kb9DjptNz57ic4qNX8dEYiQT30UY/09eKRmZN4bVcypXUNaNVqhvn7MDzA77zx9pcv047x4ra92Gzg6+LEIzMnETeksyf9gx9+RkVjx5LrP3+5GYC37liGr4szu0+e4sWtezFZLXg6Glg2ZoT9wXhCCGE1WTi4ag/1xTUoVEp8owKYfF/HH+AJt01l71tbSV93GM9Qb8ISoyjNPP29z6V3c8TBUcdHD72J2kHDpHtn4xbo0W2c91BfpvxkDvve3UFDWS0qrRrf6ED8YgPPG29/UGnUGNw6/zzUGrQo1SoMbp3t3MxGM6eSTzD754u6vT8vKZvdr2/GYrLg6OnEyMXjuvREFkL8eFlNFjLXHKaxpA6FSolHhA+j7+jIGUfcMI7U95M48U0GbsEeBCaEUZn1/XNcB1c9WkctX//yE1RaNfG3J+Ls79ZtnHuoF6PvnETaymSayxtQatV4RvjgGeV33nj7S+6WY6Ss2As2MHg5MfrOSXjHdOa4W37/GS3VHTlu0n86ctx5/1iGo5czxQdOkfLuXqxmC3p3A1ELRtgfjCfE+Shkic6Vx9VgWPfoonmL5gyiPrJH8gr4v0+/ZPWvHx3oUAa17OJSnljxUW5DS6v8hhCij3QaTd3ry5e69mef24F2tKiU5zbvZsXdNw50KIPa2tQMVu5PfanNZH5soGMRYrDROesz5z6xeJhvVMBAh3JBpcdOs+OVjdzyyn0DHcoVp62xlVUPv9ViNpodLzxaCNFftAZt0bTfLQw8u/fslaDyeCmH3trNgn9Jjtsfjq1NsWWvT/+zzWZ7aqBjEf1DeeEhQgghhBBCCCGEEEIIIa5UUgQWQgghhBBCCCGEEEKIQUyKwOKyEB8eIq0ghBDiEokb4i+tIIQQ4hLxHxYkrSCEEOIS8I7xl1YQQpyHFIGFEEIIIYQQQgghhBBiEJMisBBCCCGEEEIIIYQQQgxi6oEOQAw+W9IyWb13P4VV1Ri0WiL8fVk+fTJxoUH2Md+kpPOPz9bzx5uWMCtuGOn5hTz5/scdO23QZjKh02rs41c8dj9//3Qdx4qKUSk7v7sYHRbC07fLcg8hxI/Xjuw8vjiSSVFdPXqNhjAvD24cN5LhAb72MVuyTvLC1r38ev50pkaGkVlSzl/WbQbAZoN2sxmdpjMleOXWJfxn826yyyu73HPjAv3406I5l+7ihBDiMpO79zgZX6VQV1KLRq/BM8SbUUsS8IsJtI85sTOT3a9tZuZjCwhPjKbseDEbn/n8zF4b5nYzaofOPHfZv25n56sbqcwpQ3HWPdd/+BDmPXHtJboyIYS4vJxOziNnUyaNZfWodRrcgjyIWjQSr8jOHLdgz0lS3t3L+AemMyQhjKoT5SQ935HjYgOL0YzKoTPHnfPUEg6/vZua3EoUqs77rXeMH4mPSY4rBj8pAot+9cne/Xy0ax8/X3wV4yPD0ahUHDiZx97jJ7oUgTempuOi17Mp9Siz4oYxMjSYr//0BABltXXc8tyrrP/9L1Gpuk5Wf3zRfBaOi7+UlySEEJetz1Mz+TTlKD+dkciY4ADUShUphcXsP1XYpQi87Xguzg4ObDuey9TIMIYH+LL6geUAlDc0ct/7a1j1k1u7FHwBHpg2kfnDoy7pNQkhxOXq6FcppH95kMn3ziZwZAgqtZKitAIKD+d1KQLn7MrCwUnHyV1ZhCdG4xcTyJ0rHgagsbKeTx57l9vffgjlOXlu4l0ziZ414pJekxBCXI5ObszkxNdHib89Ed8RAShVKsoziilNLexSBC5MykXj6EBhUi5DEsLwivJl8asdOW5zVSObnlzDopdu7Xa/HXXbREKnSY4rfnykCCz6TVNbG+9u3cWTSxcxbXiMffukmEgmxUTaX5fV1pOWX8ifb17KXz9eS01jEx7OTv0ayzcp6aw/dITYIf58ndJRcP7dDYspqqrhnS07MVksPDB/FleNGQmA0Wzm7c072ZGRhclsZsqwaB6+eg4OGg2Nra08/ek6sk4XY7HaGBEyhF8svgpvVxcAfvbWh4wMDSIlr4C8sgqGBwXyhxuvxdXR0K/XJIQQZ2tuN7LyQCqPz57CpKEh9u0JYUEkhHV+6VbR0ERGcRlPXjWDZzfupLa5Bfd+vj9tyTrJpsyTRPp6sTXrJE46B345dxrFdfWs3J+KyWLl7knjmB0bAYDJYuH9fSnsycnHbLEwMTyY+6Ym4KBW09TWznObd3OivBKLzUasnw8Pz0zEy8kRgN9+9jXDA3xJLyojv7qGaD8ffjVvGq56Xb9ekxBCnM3Y0k7K6n1Me3AuoQkR9u3BY8MJHhtuf91Y2UBpVhGzHl/I9hc30FLXjMHNsV9jObEzk+xtGXgP9ePkzkwcnHRMf/gq6ktrSflkHxazhYRbpxI5fRgAFpOZQx8ncSr5JBaThdDxQ5lwx3TUWjXtTW32WchWqxXfqAAm3zsLR09nAL7662r8YgIpyTxNbWEV3pH+zHxkAToXfb9ekxBCfMvUYiTri1TG3j2FwLGdOa5/fBD+8Z05bktVE1Unykh4cAYHX99JW30LOtf+zXEL9pwkf/dJ3MO8KNxzEo2jA+N+Mo2msnqyPk/FYrYy4oZxhEzu+L1gMVk49lkKxYfysZot+I8OZuTNCai0aozN7Rx6aze1eZXYrDY8InwYfXsieo+O3xG7n/0az0hfKo+X0XC6Bo+hPoy7fxoOzpLjiv4jPYFFvzlWWIzRbGZqbPR5x206cpToAH+mD48hxNuLLWmZFyWerKJiwn19+OJ3P2f2yGE89fHnHC8u4cNfPMTvrl/Mi+s30dpuBODNTdspqq7hzYfv5cNfPERVQyPvb98DgNVm46oxI1n1q0f4+ImHcVCreWH9pi7n2pqWyZNLF7L2t49jslj4eM/+i3JNQgjxreNlFRjNFhLDg887blt2LhE+XkyOCCXI3ZUdJ/IuSjzZ5ZWEebqz8r5bmB4VzrMbd3Kyopo3bl/GL+ZO5fVdybQaTQCsSDpMSV0DL968mNdvX0Z1cwurDqQBHffcObERvH3nDbxz5w04qFW8tjO5y7l2njjF47Mn88G9N2O2WFibmnFRrkkIIb5VcaIUi8lMyPiI847L2Z2FV7gvYRMicQv0IHfP8YsST2VOGR7BXtz25oOET4ph+4tfU5Vbzg3P38X0h69i34rtmNo68tyDH+2lobSO6565jRuev4vm2iZS13TcV202G5HTh3HTS/dw00v3otKqSVqxvcu5cvdmM+3Bedz6+gNYzRaOfnX4olyTEEIA1ORWYDVZ8B9z/hy3cF8u7qFeBI4LxdnfldPJFyfHrc2rxHWIOwtfvIWgCeEcfH0ntfnVzP37MsbdN5X0lcmY2zpy3Mw1h2kqb2DWnxcz9+lltNW1cHxdR45rs9kImRzB/GdvYP6zN6DSqEhb2TXHLdp/ijF3T+bq52/GarFwcqPkuKJ/SRFY9Jv6llZcDYZuLRzOtenIUWaPGg7A7JHD2XjkaJ/P8dJXm1j0t+fs/7yzZWevY/3d3VgwdhQqpZKZccOoqG/gjplT0KrV9lYVxTW12Gw21h88wk8XzMHFoMfg4MBt0yexLf0YAK4GA9OHx6DTajA4OLB8xmTSThV2OddVY0YS5OWJg0bDjLhYcsrK+3xNQgjxfTS2teOid+jWwuFc247nMD0qDIDpUeFsO57b53O8sXs/N7+x0v7Ph8kpvY71dXFizrBIVEolUyPCqGpq5ubxo9CoVIwJDkStVFFa34DNZmNj5gnumzoeZ50DBq2GG8eOZNfJUwC46HVMjghFp1F37Bs3koySrvfUObERBLq74qBWMyUyjFNVNX2+JiGE+D7amtrQOeu7LSk+V87uLIZO6pgQMXRSNDm7s/p8jn3v7eCDe1+1/3P4k6Rexzr7uBI1YzhKpZLwxCiaqxsZvXQCKo2aISNDUKpVNJTVYbPZyN52lAl3TMPBSYdWr2XUtePJ23cCAJ2znrAJkagdNGj1WuKXjKcsq7jLuSKnD8PV3x21Vk3YxCiq8yv7fE1CCPFdGZvb0To5XPB+W5iUw5AJHTnukAnhFCb1PcdN/2g/6x9Zaf/n2Nrec1yDlxMhUyJRKJUEJoTRWtNMzDWjUGlU+I4IRKFW0VTRkePm7zxB3M3j0To5oNFriLp6JEUHOnJcBycdgeNCUTuo0eg1RC8aSdWJrjlu8OQInP1cUWnVBI4Lo/605Liif0k7CNFvXA166ltasFisvRaCjxacprS2jllxHcvTZo8czttbdpBTWk6Ev2+P7znbowvn9bknsLtj59I7hzMPPPJw6mw7odWoaW03UtfcQpvJxAP/fafzzTaw2KwAtBlNvLJhMwdP5tHY1gZAS7sRi9VqL76c3c5Cp9HYZxgLIcTF4qxzoKG1vcu96FzHSsspb2hiWmRnEfiD5BTyKqsJ9/a84Dnunzqhzz2B3QydS4O1ahUA7udsazWZqW9to91s5ucfr7Pvs9ExAxigzWTmrT0HSCkspunMLLZWk6nLdZ59LoczxxVCiItJ56SjrbEVq8Xaa2GiPLuExop6ws8UgcMnx3DokySq8yvwDPW54DkS75zR557A+rOWPKu1HXmu/qy2EyqtGlObibaGVsztZr743f/s+2w2sFk77rnmdhPJH+ykKK0AY3M7AKZWI1arFeWZe+7Z7SzUDmrM7aY+xSiEEN+H1tEBY1P7ee+31SfLaalqYkhCR44bNCGcY2tTqCusxi34wjnuyFsm9LknsMNZ7W9Umo4cV+d61jatCnO7GWNjGxajmR1/7Zrjdt5vzRz9+ADlR4sxtXTkuOY2Ezar1f5Q0G7HbZMcV/QvKQKLfjMsOBCtSs2erGymj4jtcczG1KNgg/teefuc7elE+M+9FGF242ow4KBR8+5j9+Pt4txt/yd793O6qoZXH7wLD2cnckrL+ckrb3fc0YUQYoDE+PmgUalIzitkckRoj2O2ZXXMiHjs4y+7bN96PLdPReCLwUWvQ6tW8cqtS/B06t4n8/MjmRTX1vPc9QtxdzSQV1nN42cVjIUQYiD4RPmj0qgoOJRL2ITIHsec3HUMbPD5b1aesz2rT0Xgi0HnrEelVbP0n3fg6NH9GRxHv0qhvqSWxU/djMHNker8Cj7/7f8kzxVCDBiPoT4o1SpKUwsJHBfa45jCpFxsNtj2ly+7be9LEfhi0DrpUGlVzH5qCXr37jluzqZMmsrqmfGHhehcDdQVVrP9/63DZgPFAMQrfpykCCz6jZNOx92zp/HCuo2olErGRYSjVik5nJtPal4B98yexo6MLH5x7QISozv7qe3MPM4H2/fw4PzZF2wlcTEolQoWjovnlQ2beXzRfNydHKlsaORUeSUJkeG0tBtx0Khx0uloaGnlvW27L3mMQghxLkcHLbdNiOe1nckolQpGBwWiVio5UlTC0aIybpsQz56cUzw8M5HxIUPs70vKLWDVwTTumTzugq0kLgalQsH8YVG8uecgD06bgJtBT3VTMwXVdYwJCaTVaEKrVuPooKWxrZ2PDqZd8hiFEOJcWoMDY65PJOmd7SiUio6WCyolxRmFlGYWMeaGRE4ln2DyT2YTNDrM/r78AzmkrtlPwm1TL7i0+WJQKBVEzxrB/vd3knj3TPSuBpprmqg9XcWQUaGYWo2otWq0Bgfam9pIXSPPtRBCDCyNQUvsknjSViajUCrwGR6IUqWkIquEquNlxC6Jp/jgKUbfmYjfyM4ct+RwAcfXpTHihnEDdr8NnRrF0VUHGXXbBBxc9LTWNtNQXIfviEDMbSZUGjUagxZjUzvHv5QcV1x6UgQW/erGKRNwd3Lkgx17+b/VX6J30BIV4MfyGZPZk5WNg1rN/NFxqFUq+3uuHjuKFVt3c+BkLokxPc+s+NYL6zfy8obN9tdBXp688dN7fnDcD8ybxXvb9/Dw6+9R39KCl4szixPGkBAZzvWTxvO3T77g2r//By9nZ26YnMCerBM/+JxCCPFDXTd6BO4GPZ8cTOe5TbvRa9VEeHtx47iRJOcVolWrmRUdgfqsRHjOsEhW7j/C4YJiEsKCznN0eH1XMm/tOWB/HejmyvM3XfOD475r0lhWHUzjV59+RUNrO55OBhaMiGZMSCCLRw3jX5t2ctvbq/AwGFgyejjJeYUXPqgQQlxkcYvGondzJG3tAXa+8g0anRbPMB/ir0ug4FAuKq2ayKmxKNWdeW7UjOGkrN5HUVo+wWPCz3v8fSu2k/x+5/MuXAPcWfL0rT847vG3TOHIZ/tZ96dVtDW2YXB3JHbuSIaMCmX4gtHsePlrVt7/OgZ3R+IWjqHgUN/7agohxMUQOX8EOlc92evTOfTmbtQ6NW4hXkQvGklpSiFKrZrgxAiU6s4cN2RKJMc+P0J5RjH+o86f46atTCZ9VWeO6+znysw//fAcd/gNYzn+ZRo7/u8rjE3t6NwNhM+IxndEIEPnDOPQmzv56vFV6NwMRM4bTmmq5Lji0lLYbLLW50rjajCse3TRvEVzzjxcTYi+yi4u5YkVH+U2tLSe/9HWQgg7nUZT9/rypa6eToYLDxbiLGtTM1i5P/WlNpP5sYGORYjBRuesz5z7xOJhvlEBAx2KuIjaGltZ9fBbLWajufvaaiHERaM1aIum/W5hoEuA20CHIgbQsbUptuz16X+22WxPDXQson9c+jnyQgghhBBCCCGEEEIIIS4ZKQILIYQQQgghhBBCCCHEICZFYCGEEEIIIYQQQgghhBjEpAgshBBCCCGEEEIIIYQQg5gUgcUll19RyQOvvoM8lPDiyC2r4JHX3xvoMIQQl4n61jYe/PAz2s3mgQ5lUDpVVcMTn3410GEIIS5z21/cQP7BnIEO47JkMZn59Jfv0drQMtChCCGuUKd2ZJP+0f6BDuOKVHrkNAde2zHQYYhLRD3QAYiLZ/XeA3y0ex/tJhPThsfw88VXoVX3/K/8q0NH+N+ufdQ0NREXEsSvr1uIl4uz/Thrkw9R39KCXqtlZlwsD86fjUrV+R3Cp0kHWJN0kLrmFnzcXPjbbdcT5OXZ47ne2bKLm6ZMQKFQ9Lj/VHkFr369lRMlZTS0tLL9b7/r9RpPV1Xz2jfbyCwswmqzER3oz6ML5xHs3XHuf3/xNZvTMuzjLRYrapWKDX/6FQBltXU8v24jmYXFaNQqpg+P4ZGr53a5tu8ip7ScZ9d+RWFlFcHeXvz6uoVE+Pv2OPZnb33IsaJiVMqOc3m7OPP+zx4EwGazsXJnEusOptLU1saEqKH88tqrcdQ5APDMmnVsTc9ErVLZj7f+D79EpVQy1M8HJ72OpOMnmRQT+b2uQwjx3RRU1/L2noPkVFbT2NbOukfuOu/4l7clkVFSRkldA4/Nnsyc2M7/Vy90rNM1dby2M5mcympc9TrunjSOxKEhvZ7r08NHmR0bgUMv9/+a5hZe2b6PnIoqalpaeeuOZfieuf+fz9HiMn639htuHDeS2yeOAWBrVg7r0rMoqWvAoNUwPSqcOxLH2O9z3yqpa+CRjz5n8tBQfjlv2gXP1Zsd2Xm8n3yYhtZ24oP8eXz2FJzP3CfPlVZUyjt7D1Ja14iL3oHrx8Rx1Yjo7/QZNLa18+CHnxHo7sqzy64GIMzLA0cHLQdOnSYhLOh7X4sQ4oc7tvEIJ3ceo+Z0NUMnRTHtofnnHZ+xIYX0Lw9hNpoJTYhg8r2zUGk67pUfP/o2rfUtKM7cv3yi/Fnwu6UA1Jyu4sCHu6jKq6C9qY17P/rZec9TU1BJTWEVMx5dYN+Wu/c4B1ftpb2xlYC4YKY9MA8HJ915j3Ny1zF2/XcTU34yh+hZI4COAmryezvJP5iL1WLBNzqAyffOxtHD6bzHArCYLex46Wuq8sppqmrk6j8uw3/Y+e9juUnZpK5Jprm6Eb2rI9MemodfTCAVJ0s5/Mk+qk6Vo1Qq8Rs2hMQ7Z2BwdwQgfd0hTu7KormqAQdnPbFzRzLymnEAqDRqoqYPJ/2LQ0y4/fv/ThBCXFy5W7Mo3JtDQ3EtQxLCGHvv1F7HNhTVcvSTg9QVVGNsaue6t+/qsv/Ln37Y5bXFaCF8ZjSjbpuI1Wzh4Bu7qMuvoqW6mSlPzMc7xr/Xc1nNFrLXpzH99wvt2+oKq0ldkURjaR3O/m6MvmsSbsE91yd2P/s1NbmVKM7UAPRuBuY+3XG/t9lsnPgqnVM7T2BqMeIbF8joOyeh0WsByFh9iKL9eZhaTWgMWsJmRBO9cGTvH+J3+IzOVnWinKTnN3f9zNrNJDw0g8BxoV227/nnRiqPl3LtG3egPHNN1TkVHF11gMaSOgzezoxaPhGvyI46hX98EJlrDlN/ugbXII8+xS6uXFIEHqQOnMzjo11JPHfPbXi5OPHHlWtYsXU398+f2W3skbwC3tq8g3/fcxtDPD14ecMmnvrkc16473YAJsVEsmDMSJz0OhpaWvnLR5+xJvkgN06eAHQUkL8+nMbf77iREG8vSmrqcNb3nMRWNzZx5FQBf7jh2l5jVylVzBgRy7UTxvLHlZ+e9zqb2tqZFBPJk0sXYXDQ8v72Pfxh5Wp7MfUX1y7gF9d2JtzPrFnXpfj8/LqNuDkaWPPkYzS1tfGrFR/x+YHDLEscf97z9sRktvCHD1ezbFIC104Yw7qDqfzhw9V88POH0KhVPb7n8UXzWTguvtv2jalH2XTkKC/95A6c9Tr+tvoLXly/id9ef419zM1TJnLv3Bk9Hnf2yOGsO5gqRWAhLhGVUsmUyFCujovh/zZsu+D4MC93pkaGsiLp8Hc6lsVq5W9fbWPBiGj+eu08MkrKeWr9Vl7wcCPQ3bXbsUwWC1uP5/DizYt7jUWhUDAmJJAbxsbxxJoNfbhaMFusvLl7P9G+Xl22t5vN/GRqAlG+XjS0tvHUV9v4LDWDG8Z2TYb/uzOZSJ+u7/2uCqpreXVHEn9aNIeh3p68vD2J/+7cx6/nz+gx3qc3bOOuSeO4angUJyuq+f3n3xDt502Yl0efP4MVSYcI8nDDes5KlhlR4XydkS1FYCEGmMHdiVHXJVCcXoDFeP7VD0Vp+aR9cYir/7AMg7sjW/69jpRPkxl/yxT7mLlPXEtgXHC39ypVSsImRhE7dxRbnlt3wbiObz3K0Mkx9hy09nQ1e9/aytxfX4tXmA973tzK3ne2Meuxq3s9RntTG2lfHMRtSNciRubXR6g4WcrSf9yGxuDA3re2sm/Fdub84ppejtSVb3QAwxeMZtsLF17RUJxewMGP9jDrsavxHupHS11zZ3zNbcTMHkHgyIUoVUqS3t3Ortc2cdVvr+sYYIPpP52PR7AXDeV1fPP3tTh6OjN0UseXcUMnR7P2NysZd/MkeyFeCHF50bkZiF40korMkgveYxVqJYHjQwmbGcP+l7vnxotfXW7/2dxmYsMvPu5SzPSM9GHo3GEc+O+OC8ZVmnoaJ39X9Ge+dLKaLSS/tI2IucMImxlD/s5skl/axry/L0XZy9/lo26bSOi0qG7bC5NyKdyXy7TfXo3WoOXgm7tI+99+xp0pgIdMjSRm8SjUDhpaa5vZ++/NOPm5Eji29wka37rQZ3Q2ryjfLp9Z5fFSkl/cim9cYJdxp5NzsVqsXbYZm9rZ9+JWRt+eSMDYYE7vP0Xyi1uZ98wytI4dkyeCJoSRv+sEo26beMG4xZVN2kEMUhtT01kwNp4wX2+c9XpunzmZb1LTexy7LzuH6SNiCPP1RqNWcfuMKaTnn6a4uhaAQE93nM4UdW3YUCgU9n1Wq433tu3mp1fPIdTHG4VCQaCnOy4GfY/nOpRzikh/P7TnSe6CvT1ZOC6esD4UCGKHBLBwXDwuBj1qlYrrJyVwuqqG+pbuy8lajUZ2ZWYzf3ScfVtpbR0zRsSi1ajxcHYiITKc/PLKC563J0dOFWCxWrl+0ni0ajXLEsdjA1Lz8r/zsfZln+TqsfH4uLmgd9Byy7REtmcco81o6tP748NDSMnNxyjLv4W4JIa4uzJvWBTBHm59Gr9wZCyjggJ6/ILofMcqqq2npqWFa+OHoVIqGTXEn1h/H7Zn5/Z4nuyySpwctHg5OfYai7tBz8K4GCJ9+16UXXskg9FBgd0Kz1fHxTA8wBeNSoWnkyMzosLJKq3oMmbXiTwcHbSMGtL7jI6+2Hkij/GhQYwI9EOv1bB84mj25RbS0sN9srG9nRajiZnRQ1EoFET5ejHE3ZXCmjqgb59BVmkFBdV1zImJ6LYvLtCP9KJSTBbLD7omIcQPE5oQQej4CByces5Dz3ZyVxbRM4fjHuSJg5OO0UsncHLnsT6dxy3Ag+iZI3Af0vOssnMVpeXjF9v5h3ru3uMEjQnHP3YIGp2WsTcmUnAgB2OrsddjHFq1l2Hz49E5d51o0VhZT+DIEPRujqi1asImRlFXVNOnuFRqFSOuHoNfTKB9xvP5pHyazOilE/CJ9EehVODo4WSfcRwUH0bYxCi0BgfUDhqGzY+n4kSJ/b0jF4/DK8wHpUqJW4AHIWOHUpHdud/R0xkHJx0VJ8v6FLsQ4tILHBtCwJgQe+HwfJz9XAmdGoVLgNsFxxYfLsDBWYdnVMfMVKVaRcTc4XhF+qJQ9rx6+GxlR4vwivKzv648XobNamPo3GGoNCqGzhnWsT2r9ILH6nbstNOETI3C4OGIWqchakEcxQdOYW43269T7aCxj1cooLmioU/H/i6f0bkKk3IJGBfa5dymFiNZX6Yx4oaxXcZW51agc9UTOD4UhVJJcOJQtM46SlIK7GO8ov0oSy/6znGIK48UgQep/Ioqhvr72F9H+PlS29TcY3EU4OxJTd/+eKqisxi6JS2ThU/9iyVPP09uWTnXjB8NQGVDA5UNjZwqr+TGZ1/iln+9wrtbd2G19tzv91R5BUHeF2+JQXp+IR5OjrgaDN327crMxs3RwKjQzhkdyxLHs+1oR3G1sqGR/SdySYga+r3OnV9RRbifT5eZxuF+PuRXVPX6njc3befap//DI2+8z5G8gi77bHR+hjabDZPZQlF1Z1L/xYEUFv/fv7n/1XfYmXm8y3u9XZxRq5ScrurbHwFCiCuZjYIzxcxzFVTXEujWfYbwD1HR0MSWYzncPH7UBcdmlJR1KWa3GI2s3H+E+6Z899UW5yqsqSPMq/P3ib+rC2qVkpK6+m5j3Q16pkWGsTXrJBarleOlFVQ2NjOsl3Y957JYrby2K5kHp0+AHv4W8XRyRKVUUlTb/dxCiMtTXVE1HiGdX/x4BHvTWt9CW2OrfduOl79h5f2v8/XTn1Fd8P0mCZjaTDRWNOAa4G7fVnvOuV183VCqVTSU1vZ4jMqcMqryyomd032JcdSMEZSfKKG5pglzu4ncvccZMurCM9C+K6vVSlVeOW0NrXzys3f56OG3SHp3O+ZeZgOWZRV1m7X8LZvNRtnx4m773QI8qCn8fp+zEOLKVZiUQ/Ckob22i7yQhuJanP06893Gkjpch7h3OZ7LEHcaSup6PUbmmsN89fhH7Pz7BiqPn1Ms7lIssWE1W7sUerM3pPPlTz/km1+txtxuJmhC+Pe6jr4yt5soOZRP8KSudYvMz1IInxGNg2sPX4Se+zwmm42G4jr7S2d/N1qqmjCd58tIMTjIWptBqq3diJND5zd03/aSbW03diuQJkSG89dPPmdxwhiGeLrz/rbdKBTQftZsqjmjhjNn1HCKqmrYdOQoHmdmlVU2NAIdM3zfefQnNLW18cSKVXi7OLPoTKH4bE2t7b3OEv6hKusbeGHdRn66YE6P+zempjMvfkSXXwajQoNZf+gIC//2L6xWG/NHxzEltvsykL5oNRrtn/O3HB0caGlv73H8/fNnEurjhVqlYlv6MX734WrefPheAj3dSYgcyqrdycwcEYuTXseq3ckAtJs6/p0sTRzPQwtm4+Sg42BOHn/9+HM8nByJC+lcimzQamlqbfte1yKEuDwFurniqtfxWWoG144aTnpxKRnF5cQF+vU4vsloRK/t31/1b+zez/KJo9FrNecdt/nYSXIqqnl01mT7tg+TU5k7LPK8M5P7qtVkxtGhawwGrZbWXlZMTI8K56Vte3lj9wEAfjojEW/nvsWxLj2LaF9vIny8yK/uuUij12pobpfEWYgrhanNhFbfmbdpDdoz243onPXMeGQBnmE+YLOR+XUqG/++lmXP3YGD4/n79p7L2NKRB2p02l7P/e35TW3d7yFWq5Wkd7aRePfMHmfEufq74ejpzKqH30KhVOAe5MWku5d9pxj7orWuBavFSv7+kyz6840oVUo2P/clR9buZ9xNk7uMrSmoJPWz/cz9Vc+tiFI/TQabjagZw7ps1+g1GJt7zpuFEINTS1UTVdnljLlr8oUH98LUYkSt68x3ze1m1PquOaJGr8Xc1nOOOPz6cTj7u6FUKyk60NEqYeZfFuPk44LviEBOfJNB4PhQtAYHTnydYT/Ht6KvHknUgjjqC2soTS1Erdf2eJ7+UnK4EK2zDq/ozvy/Nr+KmpxyRt6SQGttc5fxHkO9aatr4fT+PALHhnJ6fx7NlY1dWnqodR2fl6nFaO93LAYnKQIPApuPZPDvL78GYGRIEP+482Z0Dlqazyo+fvuz3qH7/9BjI8K4a9ZU/vzRGlra2lk2KQGD1gFv1+4PxRni5UGojxfPr/uGv956vf1BQzdPnYiTXoeTXsc140ez/0Ruj0VgJ72OFmNnXD3F/n3UNTfzxIqPuHbCWGaPGt5tf3ldPWmnCvnVks5ea1arjSffW8Wi8aN5+f47aDUaefazr3h943YevGrWBc+54K//tP+84rH70Wu1tJxTAGhpb8fg0PNymWFBncsCrxozkm1Hj7H/RA5LE8ezYMwoKuob+NnbK7FYrdw4eQJJx0/i7eICQFRA5w1/YnQEc0YNZ/ex7C5F4Baj0d7GQwjRf3Zk5/LKjn0ADPP35f8tnnvJzq1WKfn91bN4fdd+1hzOIMLHkykRoWhUPfc3c3JwoPWsBC+zpJy/rOt4qIS3sxOv3rrkO53/wKnTtBpNTI0MO++4fXkFvL/vME9dOx/XM/ehvMpqjhSV8sJNfetTebae4tZr1N1aP7QajT0Wp0/X1vHsxp38bsFM4oMDKKlr4K/rt+DhqGd86Pn7+FY3tbAuLYvnLxB3q9GEYw+/Y4UQlyeNTtOl/cK3P39brPWNDrDvG7UkgZO7syg/XkLw2O82w0tr6MgDTW1G1Ge+lNPoNN1mW5lajV0Kxd/K2pSOe7AXPpE9t9BJemc7VpOF5W8+iNpBTfq6w2x8Zi2L/3bLd4rzQr6Nfdj8ePvD3kZcPYYjaw90KQI3lNWx8R+fM/HOGfjFBHY7zrGNRzi5O4tFf76hW+9fU6upT8vMhRCDR+G+XDwjfXD0vvBDiXujdXTA3HZWQdNB3a3ga24z2gud5/II97b/HDI5gqIDeZQfLcZptgshUyJprWlmz7PfYLXaiJw3nLK00+g9uk4kUCgUuIV4Up5ZTNYXqYy8OeF7X8+FFCblEJzYOXPaZrWR9mEyI2+ZYH8Q3NkcnHRMfHQ2Rz85SNqHyfiOCMQnNsDeQxmwf14ag+Syg50UgQeBufEjmBs/osu2UB8vcssqmBnX8Q17bmkF7r20SQC4buI4rpvY8YTe01XVfLhjL2G+3j2OtVhtFJ9Zehzk5YlGpUJx9vrY86ziGOrnw8azehP3FPt31djayhMrVjEpJorlM3r+BnHzkQxGBA8hwMO9y/vK6xtYMnEsWrUarVrNgjEjeXvLzj4Vgb/+0xNdXof6ePHJ3v3YbDb7DTmvrIIlE8b29PZuFHS24lAqFdw9exp3z+54QvLBk3l4uTjj1cPT6qGj99DZKzwqGxoxWSwEecnTPYXobzOihzIj+vu1jekPYV4ePLO084GXT3z6FbN66FMLEOrpzhdHMu2vhwf4svqB5T2O7Yu0ohJOVlRz+zurAGhpN6FUKiioruUPC2cDcLigiJe3JfHna+YQ6tV5zz1aXEZFQxP3vLcagDaTGavVRuHHX/LCTb0/uK63uIM93DhV1Tkrt6y+EZPFSkAP7S8Kq+sIdHNhTEhHQWKIuyvjQ4dwuKD4gkXgExWV1La08NP/rQXAaLZgNFu4/Z1VrLjrRlRKJdVNzZitFob08HA+IcTlyW2IJzWFlYQndqwAqymoQu9qQOfc+4o127nLaftAo9Pg7OtKQ2kdepeOPNz9zLm/1VBej8VkwcXfvdv7SzILKcsq5n8PvgF0PCCuOr+S6oJKJt09k+qCSsbdNAkHp44v3IbNH0XK6n20NbSic+m/1XcOTrqO/r9np/znLN1urGzg6/9bQ/x1E4icGtvtGCe2Z5L25SEW/ukGHD2757R1JTWMWDim32IWQlz+CvflErUg7sIDz8NliDtN5Z0tuZwD3Di5KbPL3+X1p2sJnxnTp+Mp6PzjWqFUELtkNLFLOia4lWcUo3M3oHfrua5is9hormz8IZdzXi01zVRllxF/R6J9m6nNSG1+FQde29ERw5nWnN/86hMSHpqJV5QvXtF+zPxjx4QGq8XKpt+sIWJ+5+S5xtI6DF5OMgv4R0B6Ag9S8+Pj2HA4jfyKSppa2/hwx16uGt29jxiA0WTmVHkFNpuN8rp6nvv8a5YmjsdZ35E4fnXoCLVNHUsK8isqWbkriTHhoQDotBpmxMWyak8yLe3tVNY3sP5gKhOjey5IjI0I5WRJOUZT7w8ss9lsGE1m+wN2jCZzrw84a25r59crVjEieAj3z5/Z6zE3HTnK/DFdr9/V0YC/uxtf7k/BYrHS1NrGxtSjhPt19lK++V+v8E1Kzw/UO1d8WAgqhYI1+w5iNJtZm3wIgNFnPquzNbW2ceBkHkaTGYvFyuYjGaTnnyYhsmN2SUNLK8XVtdhsNvIrKnn16y3cMXMKyjPLAHdmZNHabsRqtXHwZB6bj2QyOSbSfvy0U4WMCQ9Fq5bveYS4FGw2G0azGbO142m8RrP5vA8JM1ksHfc1W8cXa0azGeuZZPNCxzpVVYPRbKbNZOazlAxqmluZE9vzPTfK14vmdiPVTc097v/W2ecwWay93nNvmzCG15dfx4s3LebFmxaTEBbEvGFRPD57CgBpRaU8t2k3v10wk6hzvkicPzyaN29fan/vVcOjGRc6hL8ungdAeUMj17y8gvKGviXO06PCOXDqNJkl5bSZTKzcn0ri0GAMPcwEDvf2oKS+gbSiUmw2G6X1DRzMLyLUs7Pg0ttnMC5kCG/fcb097tsmjCbc24MXb1qM6syDlI4WlzNyiH+vM7KFEJeG1WLFbDRjs1qxWm2YjeZuT0n/VuTUWE5sz6S2qJr25jaOrN1P5PSOyRNNVQ2UZ5dgMVswG82krztEe2ObfXawzdZxbIu5455hNpqxnCe3DYoPozSr84E7QyfHUJhyirLjxZjaTKSs3kdIQgTaHv74nvbgPJb96w6WPHMbS565Da9wX0Yvm8i4myYB4D3Ul5zdWRhb2rGaLWRtTsfg7mgvAO/670Z2/Xdjr7FZTGZ7X1+L+czn10uxO3LGcI5tTKO1voX2pjYyNqQQPKZjZUhzTRNf/20Nw+bHEzu3+98cOXuOc+jjvSz43VJcfLt/YdZc00R7Uxs+kT23NxJCDDyrxYrF1HGPsFltWEy932Nttq77LSYzFlPX3Lg6p4K22hYCx4V2e7/FZLHfV63mzvP2xDduCFXZ5fbX3jF+KBQKcrdkYTFZyN2a1bE9tvuKCmNLO+UZxfZYTyfnUnWiHJ8RHRMHjE3tNFU0YLPZaCip4+jHB4m5ZhQKpQKb1capHdkYm9ux2WzU5FWSt/04PmedZ+OvV1Ow5+T3/ozOdXpfLh5DfXDycbFv0+i1LHjuRmb9ZTGz/rKYST/rWKU480/X4BHe0X++rqAaq9mKqdVIxicH0Xs44juic7VG1YnyLq/F4CUVokEqIWooN0+dyC/eXkm72cy0YTHcNXuqff9dL77BbdMmMTd+BEazmb998gUlNXXoHbQsGDOSe+ZMs4/NKCji7c07aDWacHU0MGNEDPfMnm7f//ii+Tz3xQau/8dLOOkcWDgunqvH9vzAIA8nJ0aHh7Dn+AlmxQ3rcUx5XT23PPeq/fX8//csvm6urPrVwwA8+d4q4kKCWD5jMruPZXO8uJT8iiq+OWuG8YrH7sf3zGywzMIiKusbmTGi+zd/f711GS9/tZmPdiejVCoYHR7Cw1d39BQ2mS00tLQyLCig2/t6olGreOq26/nn5xt4c9MOQrw9eeq269GoO4oCH+7Yy9GC0/zjzpsxWy28s2UnhZXVKJUKgr06xgZ5dTwgo76lhd9/uJqK+gbcDAaWThpvfxgfwJp9B/nn2g3YsOHn7savliwgPrzzISBb0jK6jBdCXFwVjU3c9/4a++tlr32Ij7Mjb995AwB//nIzwwN8uXFcxx/Gf/piExklHclqVlkFL29P4ukl84kb4n/BY23PzmXTsY4HnA3z9+Wpa+f1WnzUqFTMjo1ge3Ye14/tfZbFstc+tP/80MqOGa/rHrkLgFe2JwHw8MxJGLSaLkVWrVqFTqPG+Uw/9I8PptFsNPL/1m+xj/m2ZYZOo0Z31tJfvUaNVqWyt4uoamrBx9kRT8e+9ekN8XTnpzMS+demXTS2tRMf5G8vRkPXz9zf1YXHZk3mjV37qWxswqDVMiM6nHnDO3vA9/YZaFQq3B07Z3sYtBpUSmWXbTtP5LFgRHSf4hZCXDxH1u4ndc1+++vcPccZvWwCY65PpKmqgTW/+oBl/7odJy8XhsSHEnfNODY8tQaLyUxoQgRjrp8IdLQl2Pv2Nhor6lBp1HiEeDPvySX2WcJNVQ188ti79vO8d+fLOHk5c9NL9/YYV/TsEWx/YQOjrh2PQqHAPciTyffOYsfL39De1ErAiGCmPTjPPn7jM2vxjQkkfklCtx7ESrUSrV5rbzORcNtUkt/bweqfr8BqtuAe5MWcX3S2r2mqbrLPdu7Jp794j6aqji/fNv69495344t34+ztypHPD1B+vJj5v7kOgNHXJdDW0Mqnv1iBSqMmbGIUo5Z0LHnO3pZBY0U9KZ8mk/Jpsv34d67oyN8Pf5JEW1MbX/z+I/u+iCkxTL6vYxVJ7t7jREyL7dYiQghx+chen8bxL9Psr08n5xGzeBSx146mpbqJLX/8nDlPLcHg6URLdRObnuzMZ7988EMMno7Mf/YG+7bCpBwCxgSj0Xf/An/L7z+jpbpjEkPSfzpags37xzIcvbqvIvAfFcTRVQdorW1B725AqVYx8ZFZpL6XROaawzj7uzLxkVkoz/xdnv1VOtUnypn087nYLDaOrU2hqbQehVKB05mx3z5orr2pjeQXt9Ja24zWScfQOcMIm96Z85WkFpC55jBWixWdm4Ghs2MJn92xEsJqtmBsasdjaM8rrC/0GSX9ZzOeUb5EL+z8Yq0wKYfIq7qupFYoFOhcO/PSbwvJDi56e3uIk99kUHa048tI3xGBTHy46wS6ov15jPvJNMTgp/g+y5rEwHI1GNY9umjeojk99L69EuRXVPLMmvX898G7vvcTQC+Fo/mn+Xz/Yf5405KBDuU7yS2r4N9ffM0rD9zZbV92cSlPrPgot6Gltedpg0KIbnQaTd3ry5e6ejr1vOzrclff2saTazbwws2L7X3cL0cfH0zDRa+74oqpp6pqeGX7Pv51w8Ju+9amZrByf+pLbSbzYwMQmhCDms5Znzn3icXDfKP69mX9QNv+0teETYwkdPylS8EsZgtrn/yQpf9Ybi9+XI4sJjNrf7OShX+6Ab1r19+1bY2trHr4rRaz0fzDnygqhOgzrUFbNO13CwNdAtwGOpQ+ObUzm8aSOkbeMmGgQ7GrOlnOqW3HGf/A9AsPHkClR05zel8uCQ/N6Lbv2NoUW/b69D/bbLanLn1k4mK4fP8aFINWqI83rz1090CHcUFxoUHEXaBX5OVoqJ9PjwVgIcSPk6tex2vLlw50GBd00/ieV5Bc7sK8PHosAAshxNlmPrrgwoP6mUqt4vrnLv+cUKVRXxFxCiEuX2fPzr1ceEX64hXpO9BhXJB/fBD+8Vde3UN8P9ITWAghhBBCCCGEEEIIIQYxKQILIYQQQgghhBBCCCHEICZFYCGEEEIIIYQQQgghhBjEpAgsxPcw8w9PU1xdM9BhCCHEj8I1L6+gpK5hoMMQQohB7+1bnqehrG6gwxBCiB+FtfeuoKlcclxx6ciD4cQltyUtk9V791NYVY1BqyXC35fl0yd3eQjbNynp/OOz9fzxpiXMihtGen4hT77/ccdOG7SZTOi0Gvv4FY/dz98/XcexomJUys7vNkaHhfD07Td+p/hm/uFpPvz5gwR6evywCxVCiMvAjuw8vjiSSVFdPXqNhjAvD24cN5LhAZ0PqtiSdZIXtu7l1/OnMzUyjMyScv6ybjMANhu0m83oNJ0pwyu3LuE/m3eTXV7Z5Z4bF+jHnxbN+U7xXfPyCl5fvpQAN5cfeKVCCDGwcvceJ+OrFOpKatHoNXiGeDNqSQJ+MYH2MSd2ZrL7tc3MfGwB4YnRlB0vZuMzn5/Za8Pcbkbt0JnjLvvX7ex8dSOVOWUozrrf+g8fwrwnrv1O8b19y/Pc8J+7cPFz+wFXKYQQl4fTyXnkbMqksawetU6DW5AHUYtGdnkYW8Gek6S8u5fxD0xnSEIYVSfKSXq+I8fFBhajGZVDZ44756klHH57NzW5lShUnfdc7xg/Eh/7bjnu2ntXMPfppTj5So4rLh9SBBaX1Cd79/PRrn38fPFVjI8MR6NSceBkHnuPn+hSBN6Ymo6LXs+m1KPMihvGyNBgvv7TEwCU1dZxy3Ovsv73v0Sl6jqZ/fFF81k4Lv5SXpIQQly2Pk/N5NOUo/x0RiJjggNQK1WkFBaz/1RhlyLwtuO5ODs4sO14LlMjwxge4MvqB5YDUN7QyH3vr2HVT27tUvAFeGDaROYPj7qk1ySEEJejo1+lkP7lQSbfO5vAkSGo1EqK0gooPJzXpQicsysLBycdJ3dlEZ4YjV9MIHeueBiAxsp6PnnsXW5/+yGU5+S4iXfNJHrWiEt6TUIIcbk6uTGTE18fJf72RHxHBKBUqSjPKKY0tbBLEbgwKReNowOFSbkMSQjDK8qXxa925LjNVY1senINi166tds9d9RtEwmdJjmuGHykCCwumaa2Nt7duosnly5i2vAY+/ZJMZFMiom0vy6rrSctv5A/37yUv368lprGJjycnfo1luLqGp5d+xW5pRWoVErGhIfy55uv4/E3PwDgvpffBgU8cd1CZsUNY9XuZFbv3Y9CoeCeOdP7NRYhhLgYmtuNrDyQyuOzpzBpaIh9e0JYEAlhnV+6VTQ0kVFcxpNXzeDZjTupbW7B3dHQr7GU1DXw4ra9nKqqQaVUMmqIP09eNYPffPY1AI+t+hKFAh6bNZmpkWF8lpLB50cyUQDLJ47p11iEEKK/GVvaSVm9j2kPziU0IcK+PXhsOMFjw+2vGysbKM0qYtbjC9n+4gZa6poxuDn2aywNZXXsfn0z1QWVKFVKAkYEMevxhaz/f6sBWPubDwEFUx+YQ3hiNOnrDpGxIQUFCsbeOKlfYxFCiIvB1GIk64tUxt49hcCxnTmuf3wQ/vGdOW5LVRNVJ8pIeHAGB1/fSVt9CzrX/s1xm8obSFmxl/rTNShVSrxj/Ul4cAa7nunIcbf95UtQwJi7JjMkIYwT32SQs6kjx429TnJccelJEVhcMscKizGazUyNjT7vuE1HjhId4M/04TGEeHuxJS2TG6dM6NdY3tmyi/ER4fznnuWYLRayi0sBeOEntzPzD0/z1iP32ttBHDiRyyd7knnunlvxc3fjX59v6NdYhBDiYjheVoHRbCExPPi847Zl5xLh48XkiFCCDhxhx4k8rhvdv7PNVu5PZXRwAE9fdxVmi4WTFdUAPLN0Ade8vIIXb15sbwdxuKCItakZ/G3JfHxdnHhpW1K/xiKEEP2t4kQpFpOZkPER5x2XszsLr3BfwiZEkhroQe6e48QtGtuvsRz+JInAkSFc/cfrsZgtVOWVA7Dozzfw9i3Pc90zy+3tIIqO5HN0fQoL/rAUZ29X9ry5pV9jEUKIi6EmtwKryYL/mPPnuIX7cnEP9SJwXCjHvzzC6eQ8Iuf3b46b9XkqvsMDmPrEVVgtFmrzO3Lcab9ZwNp7VzDrL4vt7SDKjxaRszGDKb+cj8HbidT3JMcVl54UgcUlU9/SiqvB0K2Fw7k2HTnKkgkdCfHskcPZeORon4vAL321if9+s9X+eunEcT3O3FWplJTV1VPd2Ii3q0uXVhTn2p6RxVVjRhHm6wPAXbOmsi39WJ/iEUKIgdLY1o6L3qFbC4dzbTuew8K4jtUZ06PC2XY8t89F4Dd27+fdvQftrxeNjO1x5q5KqaSyoZma5ha8nBy7tKI4156cfGbHRhDi6Q7ArQnx7Dp5qk/xCCHEQGhrakPnrO+2nPhcObuziJ07EoChk6LJ2Z3V5yLwvvd2cGDlLvvrYfPje5y5q1SraKpqoKW2CUdP5y6tKM6Vl3yCqBnD8AjyAmDM9RPJS8ruUzxCCDFQjM3taJ0cLnjPLUzKIXxWR447ZEI4hUm5fS4Cp3+0n4xPOnPc8NmxDOth5q5CpaSlupm2uhb0Ho5dWlGcq+hgPsGTI3AZ0pHjxiyOp2i/5Lji0pIisLhkXA166ltasFisvRaCjxacprS2jllxw4COIvDbW3aQU1pOhH/vN9RvPbpwXp96Aj84fxbvbNnFQ6+twEmv48bJE7h67Kgex1Y3NhEV4Gd/7evmesHjCyHEQHPWOdDQ2o7Fau21EHystJzyhiamRYYBHUXgD5JTyKusJtzb84LnuH/qhD71BL570lg+3J/KLz9Zj6POgevihzN3WGSPY2uaW4g469w+Lv3bDkgIIfqbzklHW2MrVou116JEeXYJjRX1hE/qWBEXPjmGQ58kUZ1fgWeozwXPkXjnjD71BB5/6xQOf7KPL/+wCq2jA3ELxxI1c3iPY1tqm/EK78yvnbycL3h8IYQYaFpHB4xN7ee951afLKelqokhCR05btCEcI6tTaGusBq34AvnuCNvmdCnnsAjbhjLsbWp7PjbejSODkTMG07o1J5z3Lb6FtxDO89t8JQcV1x6UgQWl8yw4EC0KjV7srKZPiK2xzEbU4+CDe575e1ztqcT4T+332LxcHbiV9ddDcDR/NP8csX/GBUaZG8BcTZPJycq6xvtryvqGvotDiGEuFhi/HzQqFQk5xUyOSK0xzHbsnIBeOzjL7ts33o8t09F4L5ydzTw6KzJAGSWlPPHLzYyPMDX3gKiy1iDgcqmZvvrysbmbmOEEOJy4hPlj0qjouBQLmETev7j/+SuY2CDz3+z8pztWX0qAveVwc2Rqfd3PMG+7Hgx3zz9GX6xgfYWEF3GujvSXN2Z4zZVNXYbI4QQlxuPoT4o1SpKUwsJHBfa45jCpFxstjM9ec/Z3pcicF/pXA2Muasjx606Wc7ef23EK8rX3gLi3LEtNZ15bWuN5Lji0pMisLhknHQ67p49jRfWbUSlVDIuIhy1Ssnh3HxS8wq4Z/Y0dmRk8YtrF5AY3dlTbWfmcT7YvocH58++YCuJvtqRkcXwoEC8XV1w0utQoEChUADg7uRISU2dvSA8Iy6Wf3y2nnmjR+Dn5sZ723f3SwxCCHExOTpouW1CPK/tTEapVDA6KBC1UsmRohKOFpVx24R49uSc4uGZiYwPGWJ/X1JuAasOpnHP5HEXbCXRV3ty8onx88bLyREnBy0KFCjP3HPdDDrKGhrtBeEpkaG8sHUPs2Ii8HF24qMDR/olBiGEuFi0BgfGXJ9I0jvbUSgVDBkZglKlpDijkNLMIsbckMip5BNM/slsgkaH2d+XfyCH1DX7Sbht6gWXNffVqeQT+ET64+jpjIOjrmPjmfut3tVAQ0W9vSAcNjGS3a9tJmJqLM7eLqSu2d8vMQghxMWkMWiJXRJP2spkFEoFPsMDUaqUVGSVUHW8jNgl8RQfPMXoOxPxG9mZ45YcLuD4ujRG3DCu3+65xQfz8Rjqjd7DEa1BCwoFCmXHPdfBRUdzZaO9IBw4PpSUd/YQPCkCg6cTx7880i8xCPFdSBFYXFI3TpmAu5MjH+zYy/+t/hK9g5aoAD+Wz5jMnqxsHNRq5o+OQ61S2d9z9dhRrNi6mwMnc0mM6Xl2xbdeWL+Rlzdstr8O8vLkjZ/e023c8aJSXvlqM03t7Xg4OvLIwrkEeHT05rlr1lSeWbOOdrOZX167gJlxw7g+cTy/eOd/KBUK7pkznS1pmf30iQghxMVz3egRuBv0fHIwnec27UavVRPh7cWN40aSnFeIVq1mVnQE6rMS4TnDIlm5/wiHC4pJCOu9XzrA67uSeWvPAfvrQDdXnr/pmm7jTpZX8ebuA7QYjbjp9fxkagJ+rh3Ljm9NiOf5LXswms08PHMSUyPDWDxqGL///BuUKFg+cQw7TuT10ycihBAXR9yisejdHElbe4Cdr3yDRqfFM8yH+OsSKDiUi0qrJnJqLEp1Z44bNWM4Kav3UZSWT/CY8PMef9+K7SS/v9P+2jXAnSVP39ptXGVuOcnv78TYYkTvamDinTNw8e1oZTZ62UR2/XcjFqOZyffNITwxiuELRvP139agUCgYe+Mkcvce76dPRAghLp7I+SPQuerJXp/OoTd3o9apcQvxInrRSEpTClFq1QQnRqBUd+a4IVMiOfb5EcozivEfdf4cN21lMumrOnNcZz9XZv6pe45bm19F+qoDmFqN6Fz0jLwlAUfvjhw39tp4Dr+zB6vRTPydkxgyPoyhc4ex55/foFAoiL1uDKeTJccVl5bCZrMNdAziO3I1GNY9umjeojmjeu7vJURvsotLeWLFR7kNLa3nf3y1EMJOp9HUvb58qaunk2GgQxFXmLWpGazcn/pSm8n82EDHIsRgo3PWZ859YvEw36iAgQ5FXERtja2sevitFrPR7DjQsQjxY6I1aIum/W5hoEuA20CHIgbQsbUptuz16X+22WxPDXQson/0zxx4IYQQQgghhBBCCCGEEJclKQILIYQQQgghhBBCCCHEICZFYCGEEEIIIYQQQgghhBjEpAgshBBCCCGEEEIIIYQQg5gUgYUQQgghhBBCCCGEEGIQUw90AEL0pKGllX+u/YpDOadwNei5b95M5owa3m1cal4+72/fw8mScpz0Olb96uEu+3/+9oecKq/EZLHg5+7G3bOnMSU2qttx/vHZer5JSefDnz9IoKfHRbsuIYS4HDW2tfPitr2kFpbgonfgjoljmREd3m1celEpqw6mkVtZjZODlrfvvKHL/qzSCt7cfYCi2jp8XZx5cPpEhgf4AlDT3MIr2/eRU1FFTUsrb92xDF8X50tyfUIIcTlrb2pj9+ubKT5agIOznvE3T2bo5Jhu42w2Gwc/2sOJ7ZkARM0czvhbpqBQKAAoyTjNgZW7aCivR+esY+Ti8cTMjruk1yKEEJcbY1M7KSv2UpFZgtbJgeHLxhI0sXuee+KbDAr35tBa3YTWWUfYzBiirhph37/72W9oKK7FarZi8HIidsloAkYHA1CWdprsDUdpLK5FqVHhNyqIuJsS0Og1l+w6hegLKQKLy9IL6zaiVqn47DePk1Nazm8/+IShfj6E+Xp3GafTalkwZhSzRppZuTOp23EeWTiPUG8vVColx04X86t3P+KDnz+Ip7OTfczR/NOU1NRe9GsSQojL1Ws7k1ErlXxwz03kVdXw1/VbCPNyJ8TTvcs4nUbNnNhIpkWGsfpwepd9jW3tPLV+Kz+dmUhieDC7Tp7iqa+28tbty3DSOaBQKBgTEsgNY+N4Ys2GS3l5QghxWUt6ZxtKtZJbX7uf6vxKNj37BR7B3rgHeXYZl731KIWH8rjumdtAoeCbpz/D2duV2LkjsZotbPn3OhJunUL07Diq8srZ8NQavCP88Azx7uXMQggx+KWtTEapVnL1f26i7nQN+17YgmuQOy6BXfNcbDbG3TcVlyHuNFc2sve5TRjcDQyZ0FEwHnlLAs4BbihVSmryKtn7r414PL0UnZsBU6uJmEUj8Yzyw2q2cOiNXWSsPsjoOyYNwBUL0TtpByEuO61GI7uOHeeeOdPQO2iJCw1iUkwkm49kdBsbOySAeaPjCHB36/FYQ/18UKk6/jNXKBSYrRYq6hvs+y0WKy9+tYnHFs2/KNcihBCXuzaTiaTcApZPGI1eq2F4gC8JYUFsz87tNjbK15tZMUPxc+0+gzertAI3Rz1TIkJRKZXMjB6Kq05HUl4BAO4GPQvjYoj09bro1ySEEFcKU5uJ/AM5jL1xEhqdFr+YQILHhpOzJ6vb2JO7shixcAyOns44ejgxYuEYTu46BnTMJja1GomYGotCocB7qB9ugR7UFVVf6ksSQojLhrndRPHhAmKXjEat0+AV6Yv/qCAK9/WQ5y6Iwy3EE6VKibOfK/6jg6nOqbDvdw3yQKnqLKFZLVZaapoBCJoYjm/cENQOarSODoRMi6LmrPcKcbmQmcDislNUVYNKqSTIq3P2w1B/H9JOFX6v4/32g084nHsKk9nC+MhwogP87ftWJx1gZGgQQ/18fnDcQghxJSqua0CpVBDo7mrfFubpQUZJ2Xc/mM3W9SU2CqrrfmCEQggxeNWX1qJQKXH175yR5hniTWlWUbextUXVeIR0fpHmEextL/Lq3RwJnxTNiZ3HiJkTR2VOGU1VDfjGBF78ixBCiMtUU1kDSpUCZ7/OPNc1yIOqE+fPc202G9Unygmb0bWVZNILW6g8VoLVbMVnRADuoT1Pbqg+UYZzgNsPjl+I/iZFYHHZaTUaMTg4dNnm6OBAS7vxex3v77ffiNli4XBuPgWVVSiVHX3TKuoaWHcwldd/evcPjlkIIa5UbSYzBm3XfmWODlpajabvdJwYP29qmlvYeSKPyUND2Xkij7L6RtrN5v4MVwghBhVzuwmtXttlm0avxdTaPe81t5nQ6jtzZK1Bi6nNhM1mQ6FQMHRSNLvf2ELyezsAmHTPLJw8pfe6EOLHy9xuRq3rmueq9VrMbefPc49/cQSbzUbw5Mgu2yc9Pger2UpFVgmNJfUoztQWzlaRWUJhUi7Tf7/wh1+AEP1MisDisqPXamlpb++yraXdiMFB28s7LkytUjEhaihr9h0k0MOdybFRvLxhM3fMnIKTTvdDQxZCiCuWTqOm5ZyCb4vRiF773R5k4aLX8fuFs3ln70Fe25nMmOBARgUF4OXk2J/hCiHEoKJ20GA8p+BrajWi0XfPe9U6TZfisKnViEanQaFQUFdcw/aXNjD754sIjAuhvqyWzf/8EoO7E8Fjwi76dQghxOVI7aDuVvA1txm7FYbPlrs1i8J9uUx7cgEqjarbfqVaiV/cEHK3HMPJ1xn/+GD7vprcCg6+sZOEh2Z0mX0sxOVCisDisjPEywOL1UpRVQ1DvDwAyCkrJ9Tnhz/UwmKxUlJTB0BKXj4ZBad5feM2+/6HX3+PRxbOY86o4T/4XEIIcSUIdHPBarVRUtdAgJsLAKeqagn2cPvOx4oL9OM/N14DgMVq5b7313BdvNxPhRCiN67+7tgsVupLa+0tIWoKq3Af4tltrPsQT6oLKvGO8OsYV1CF25lxtUXVuPi5M2RUKABuAR4ExYdSlJYvRWAhxI+Wk58LVouNpvIGnHw78tz607W9tmrI332SE18fZdqTC9B7nH8ig81io7mi0f66rqCafS9tY8zdU/AZFtBv1yBEf5IHw4nLjl6rZeqwaN7duotWo5GjBadJyjrJ3PgR3cZarTaMJjNmqxVsHT+bzBYACiur2H8il3aTCbPFwuYjGaQXFDIqrOObug9+9iBvPXIfbz18L289fC8AT99+I1OHRXU7jxBCDFY6jYbEocGs3J9Km8nEsdJy9p8qZGb00G5jrTYbRnPHPdcGGM1mTBaLfX9uZTVmi5UWo5F39h7E28mRMSGd/SjPHm+yWDFKqwghxI+cRqchJCGClNX7MLWZKM8uoeBQLhFTYruNjZgaS8aGFJprmmiuaeLoV4eJnDYMAM9QbxrK6ijJOI3NZqOhvI7C1FN4BMvDOIUQP15qBw0BY4LJ+jwVc7uJ6pPllB4pJDixe557OjmXY58dZvIv5uHo3bWVTmNpHWVHi7AYzVjNVgr35VJ1ohyv6I4v5RqKakl6fjOjbp2Af3zQJbk2Ib4PmQksLks/u+Yqnl37FUv//gIuBj0/W3wVYb7epOcX8uT7H/P1n54AID2/kJ+/s9L+vvn/71lGhQbz/H3LsdlgxbbdFFR09AEe4unBn266jqiAjhu1ew9LlF0Nehw0320JtBBCXOkemp7IC1v3sPztj3HWOfDQ9ERCPN3JLCnnL+s2s/qB5QBkFpfxu8832t+37LUPGRHgy9+XLgDgs5QMDhV0PMxoTHAgv7t6ZpfzLHvtw85zrlwLwLpH7rqYlyaEEJe9yffMYtfrm/jfg6/j4KRn8r2zcA/ypOx4MRuf+Zw7VzwMQMycOBor6vns1x8AED1zBDFz4gBw8XVj6gNz2ffeDpqrGtAYHBg6OZromd0nUQghxI9J/PJEUt7dw4affYzWyYH45Ym4BLpTdaKcpOc3s/jVjjz32NpUjM3t7Pjbevt7gyaGM/qOSdhsHX2CD5bUoVAqcPR1IeHB6biFdKzGOLkpk/bGNlJW7CVlxV4ADJ5OzHlqySW/XiHOR2E750ne4vLnajCse3TRvEXSskB8V9nFpTyx4qPchpbWiIGORYgrhU6jqXt9+VJXTyfDQIcirjBrUzNYuT/1pTaT+bGBjkWIwUbnrM+c+8TiYb5RsuR2MGtrbGXVw2+1mI1maTAvxCWkNWiLpv1uYaBLL20TxI/DsbUptuz16X+22WxPDXQson9IOwghhBBCCCGEEEIIIYQYxKQILIQQQghxEchiKyGE+IHkPiqEEANGctnBR4rAVyCrzdrcZjQOdBjiCtTa8d9N20DHIcSVRKlQGNvlAWbie2gzm20mi7VpoOMQYpBqM7eZBjoGcZGZ2k0olAr5w0eIS02haLO0S/77Y2duM5mR+sGgIkXgK1BTW/v25BO5zQMdh7jyHM45ZTaazdsGOg4hriRKBclpRSUDHYa4Ah04Vdhotdn2DXQcQgxG5nbTtuKjhVIFHuRKM06jVKn2D3QcQvzY2KzW3RXHSqwDHYcYODabjbL0021A8kDHIvqPFIGvTJ8eyslr/3hPsrW5rX2gYxFXAKPJzJa0TFYnHWhvN5lfH+h4hLiSNBtN/3p37+HWA6dOY7FKLiwurKG1jfeSDpuLaxvqgU0DHY8Qg5HFZHkra1Na+8ldxzAbZbbaYGO1WDl95BTJH+xsNba0/3Og4xHix8bcZn4pe316W/HBfKxmy0CHIy6xtvpW0lfuNxob2oqBvQMdj+g/Cps0+bgiKRSKKCedwxttJlOig1pjUSikY5bomQ1oM5q0eq32aFNb26M2m01u4kJ8RwqFYqGjg/af7SZzhFatMilQDHRI4jJltdkUJotFqVWrtrYYTT+x2WwyjVyIi0ShUEzUOjq8ZG4zjVJp1WaFQiH58KBgw9xu1qgdNHnG1vYnbVbbFwMdkRA/RgqFYqbGoH3e3G6OVWkl//2xsNlsCqvZolBqVBvMrab7bTZb9UDHJPqPFIGvcAqFQge4g9yRxXnV22w2aSEixA+kUCicAeeBjkNc1qxAjc1mkx6WQlwiCoXCALgi+fBg0miz2RoHOgghBCgUCkc67rHix8FCRy4rLZcGISkCCyGEEEIIIYQQQgghxCAmPYGFEEIIIYQQQgghhBBiEJMisBBCCCGEEEIIIYQQQgxiUgQWQgghhBBCCCGEEEKIQUyKwEIIIYQQQgghhBBCCDGISRFYCCGEEEIIIYQQQgghBjEpAgshhBBCCCGEEEIIIcQgJkVgIYQQQgghhBBCCCGEGMSkCCyEEEIIIYQQQgghhBCDmBSBhRBCCCGEEEIIIYQQYhCTIrAQQgghhBBCCCGEEEIMYv8fJZAUm9hWJC8AAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# or we can also plot inline with matplotlib. a bit uglier\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Tree Based Treatment Policy Based on CATE Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.cate_interpreter import SingleTreePolicyInterpreter\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreePolicyInterpreter at 0x290122895c8>\"\n      ]\n     },\n     \"execution_count\": 33,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=2, min_samples_leaf=1, min_impurity_decrease=.001)\\n\",\n    \"# We find a tree based treatment policy based on the CATE model\\n\",\n    \"# sample_treatment_costs is the cost of treatment. Policy will treat if effect is above this cost.\\n\",\n    \"# It can also be an array that has a different cost for each sample. In case treating different segments\\n\",\n    \"# has different cost.\\n\",\n    \"intrp.interpret(est, X[:, :4],\\n\",\n    \"                sample_treatment_costs=0.2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# exporting to a dot file\\n\",\n    \"intrp.export_graphviz(out_file='cate_tree.dot', feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import os\\n\",\n    \"os.environ[\\\"PATH\\\"] += os.pathsep + 'D:/Program Files (x86)/Graphviz2.38/bin/'\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# or we can directly render. Requires the graphviz python library\\n\",\n    \"intrp.render(out_file='dr_policy_tree', format='pdf', view=True, feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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1vMa3vvvjUrPxeG9Nll47TAy8YLvqjwJXG9mWWb2VFUzHO/n4yR+FqbgjbzdY2aVX4eT9UO8m8btwQu63+Jwn17M7HMze7SaukvwPhy6HcgG7gauDjyPmT1qZod+Dzi81g87Avv4V7y+3Yfes83xWoTk4o10LubI3tvX4PUgz8V7Lf4V+BIRERE5L1jV99wQERERkZMVGAX7rHPu6FYFJ7PsY0BL59xtZ7yw42/3JWCXc+5XNVjmlPdTTo2Z3Q581zl3cbBrORvM7C9APefcHSecWUREREROmkYCi4iIiNSQmUWZ2RWBlgQNgN9y+CZ05zzzbpx3LfDiCeY7r/fzfGdm0Xijhf8b7Fq+LWbW1sw6V2qzcA96j4mIiIiccQqBRURERGrO8NoDZOG1SViNdzn/Oc/Mfo93ufsTzrnNJ5qd83Q/z3eBnrX78VowjD3B7OezOnitNfKBd/BaT3wU1IpEREREaiG1gxARERERERERERGpxTQSWERERERERERERKQWUwgsIiIiIiIiIiIiUospBBYRERERERERERGpxRQCi4iIiIiIiIiIiNRiCoFFREREREREREREajGFwCIiIiIiIiIiIiK1mEJgERERERERERERkVpMIbCIiIiIiIiIiIhILaYQWERERERERERERKQWUwgsIiIiIiIiIiIiUospBBYRERERERERERGpxRQCi4iIiIiIiIiIiNRiCoFFREREREREREREajGFwCIiIiIiIiIiIiK1mEJgERERERERERERkVpMIbCIiIiIiIiIiIhILaYQWERERERERERERKQWUwgsIiIiIiIiIiIiUospBBYRERERERERERGpxRQCi4iIiIiIiIiIiNRiCoFFREREREREREREajGFwCIiIiIiIiIiIiK1mEJgERERERERERERkVpMIbCIiIiIiIiIiIhILaYQWERERERERERERKQWUwgsIiIiIiIiIiIiUospBBYRERERERERERGpxRQCi4iIiIiIiIiIiNRiCoFFREREREREREREajGFwCIiIiIiIiIiIiK1mEJgERERERERERERkVpMIbCIiIiIiIiIiIhILaYQWERERERERERERKQWUwgsIiIiIiIiIiIiUospBBYRERERERERERGpxRQCi4iIiIiIiIiIiNRivmAXICIiIiKHmZkB6UBMsGsROUXlwE7nXFGw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9DAA7h92CX//+AvenjmXVvXqcknHtizevPWUt5UUG0OdqEhu+Ou/iQzz8eCooTROTT5mvjYN6vPIVcN56tNJ7DiQRYTPR8cmDenctOFx6z1TXvhqGmGhodz25H8rnrt1gBcoh/lC+f0t1/LX8Z/z/KSpNE5N5ve3XEuYLxSAUT27svtANvf++yUArujemVE9uwKccFkRERERkZNhrppRECIiIiJy9vhCQ0smPPpgWGR4WLBLOWcs2byNP74/gXd/8oNglyKn6LG3x+dNW7X2Aefc68GuRURERORCFhLsAkRERERERERERETk26MQWERERERERERERKQWUwgsIiIiIuekrs0aqxWEiIiIiMgZoBBYREREREREREREpBZTCCwiIiJyDnt+0lTemzX/pObdlpHJfc+8zMg//IMP5iyguLSUR994j1GP/4PH3hn/7RZ6Dvjt2x8yd93GYJchIiIiInLO8QW7ABERERGpWnZ+AROXrOCNB797UvO/M2MuXZs15vkH7gJg4pIVZOUXMP4XPyY09NQ/+39lygx2Hcji0etHnfI6zrSqarrp4j78c8JE+rRuEcTKgutgQSFPfPQ5CzdsIS46ivsuH8SQzu2rnX/drj38+/PJrN+9l6iwMG4Z2I/r+vUEYMW2Hfz78yls259J/cR4fnzlUDo1aQiAc443p83mkwVLyCsqpk+r5jw8ejgxkRFnZT9FREREpGY0ElhERETkHPXF4uX0ad2ciLCwk5p/b/ZBmqalHPG4UXLiaQXA55N2DdMpKC5h7c7dwS4laJ78dBJhoaG8/7Mf8svrR/HPCV+yed/+KufNyS/gF6+PY1TProz/xY94/cHv0rNlU8ALk3/15vvceFFvPn70x9x4cR9++eZ75BYWAd4HDJOWruSpe29j3E9+QHFZGf/67KuztZsiIiIiUkMaCSwiIiJyjpq3fhMjunc+4rnZazfw0uTp7MnOoUlqMg+NGkaLemk8/PJbLNuyneXbdvDvzyfTr01Lpq9ai3MwY816fjhiCFf06MLni5bxzoy5HMjLp22D+jx81XDqJcQDsHnffp75bDLrdu/FFxLCtX170iq9LmOnz65YT3piAi/84O4a70txaSkvTZ7O1JVryS8qolndVJ6440YiwsKYuWY9L0yaSkZuHi3rpfHgqKE0SfXC7Lemz+GDOQspKC4huU4sD155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4Xh2fgEzV68HvMA1zOcjLiqKotJSXvhq2mlt67NfPVztV1UBcFWiwsMZ0K41L0+ZQWFJCSu27mDWmvVc3rXqgH54t07MWL2ODbv3UlZezutTZ9GpccOKkczrA8/nFxXzny+nkBoXR6/AsT1YUMjOA1k459iyL4P/fDGF2wdfREjICT4xEBEREZGg0EhgERERkXPU0K4due8/L1NcWkpEWBhtGtTnkauG89Snk9hxIIsIn4+OTRrSuemxI1WrMqB9awpLSvjDux+zN+cgMRER9GjRlMEd2xIdEcETd9zI059N5rVvZhLm83Fd3560a5TOoA5t+WrpSq7+85PUS0zgv9+/s8b7cv+wS3h+0lS+/9xrFJWU0LxeGv93+xgapyTzP9ddyb8++4qMg7m0qFeXP9x6HWG+UErLynl+0lS27c/EFxpCh0YNeHj0MIAqa1qzczeR4eEVfXhP13V9e4Jz/OzVd8nMzSMhJppLOrblonatGNqlI/M3bGbMX5+hTlQkdw8ZwMfzF5+R7Z6OH185lCfGf851f3mauOhIHhw1jGZp3sjoZVu284s3xvHZrx4GoHvzJtxz2SD+5433KC4tpWPjhvzyhsM32nt7xlzmrdsIeD2Af3fzNRXTcgoK+eWb77P/4EHio6O5rm8PruzZ9eztqIiIiIjUiDl3itesiYiIiMgZ4wsNLZnw6INhkeFhRzz/wqSpJMREc33gMnyp3m/f/pAR3TvTt3WLYJciAY+9PT5v2qq1DzjnXg92LSIiIiIXMo0EFhERETmH3Xv5oGCXcN7435uuOfFMIiIiIiIXIPUEFhEREREREREREanFFAKLiIiIiIiIiIiI1GIKgUVERERERERERERqMYXAIiIiIiIiIiIiIrWYQmARERERERERERGRWkwhsIiIiIiIiIiIiEgtphBYREREREREREREpBZTCCwiIiIiIiIiIiJSiykEFhEREREREREREanFFAKLiIiIiIiIiIiI1GIKgUVERERERERERERqMYXAIiIiIiIiIiIiIrWYQmARERERERERERGRWkwhsIiIiIiIiIiIiEgtphBYREREREREREREpBZTCCwiIiJyjnC4YJcgckbpPS0iIiJyblAILCIiInIOCA2xksKS0mCXIXJG5RcV+4HCYNchIiIicqFTCCwiIiJyDojwhS1YsGFzsMsQOWNKSstY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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# or we can also plot inline with matplotlib. a bit uglier\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# SHAP Interpretability with Final Tree CATE Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.DRLearner at 0x29012664b48>\"\n      ]\n     },\n     \"execution_count\": 38,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# We need to use a scikit-learn final model\\n\",\n    \"from econml.dr import DRLearner\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = DRLearner(model_regression=GradientBoostingRegressor(max_depth=3, n_estimators=100, min_samples_leaf=30),\\n\",\n    \"                model_propensity=GradientBoostingClassifier(max_depth=3, n_estimators=100, min_samples_leaf=30),\\n\",\n    \"                model_final=RandomForestRegressor(max_depth=3, n_estimators=100, min_samples_leaf=30))\\n\",\n    \"est.fit(y, T, X=X[:, :4], W=X[:, 4:])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"shap_values = est.shap_values(X[:, :4], feature_names=['A', 'B', 'C', 'D'], background_samples=100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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V65kzpw5Gb131qxZrF+/fjdXmH2OXJIkSZIkScqSpUuXMmzYMK699lqOOuooHnzwQSZNmpTRez/2sY+xcOHC3Vxh9hkuSZIkSZIkZUlNTQ377rsvAK+//jqbN29m8ODBGb33oIMOYvXq1WzatGl3lph1pbtjp6+//jrz58+nrq6OMWPGMG3aNEpLS3n//fe55557WLt2LU1NTQwdOpRp06ZRWVkJwJ/+9CcWL15MfX09vXr1YurUqRx66KEArFixgqVLl7Jp0yYGDRrEaaedxt57773TsX/1q18xevRojjzyyJbnbrnlFqZMmcLYsWOZP38+L7zwAg0NDfTt25eTTjqJqqqqnfazevVq5s6dy9e//vWW526++WZOP/10RowYQRRFLF26lCeffJLNmzczYsQIpk2bRs+ePbPcmpIkSZIkKQ1+/vOfs3r1al577TUWLFjAsccey7Bhw1peX7NmDbfffjtf/OIX6dOnD2+++SazZ8/mC1/4Av3796e0tJQDDjiAlStXMmHChLydR1ftlpFLzzzzDBdccAGXX345GzduZMmSJQBEUcSECRO44ooruOKKKygtLeX3v/89AFu2bGH+/Pmcf/75XHvttVxyySXsv//+ALz44os89NBDnHPOOVx11VVUVVVx9913t3nsQw45hGeeeabl8dtvv01NTQ2jRo0CYNCgQXzpS19ixowZHHLIIfzmN7+hsbGxy+e4fPlyXnzxRS666CKuvPJKysvLue+++7q8H0mSJEmSVBw+97nPUVVVxSmnnMK1117LW2+9Rb9+/VpeHzJkCIcddhj33nsvW7duZe7cuUydOpX+/fu3bDNgwADeeuutfJSf2G4Jl4488kj69OlDz549mTx5ckvY06tXLw4++GC6d+9OWVkZkydPZvXq1S3vCyGwfv16tm7dSkVFRcswsieeeIJJkyYxYMAASkpKOO6443jzzTd59913dzr2mDFjdnjt6aefZuzYsZSWxoO0Dj30UHr16kVJSQkf+9jHaGxsZMOGDV0+xyeeeIKpU6dSWVlJaWkpU6ZM4fnnn6epqanL+5IkSZIkScVn8+bNlJWV7fDclClT2Lx5M7NmzaKyspIjjjhih9d79OjB5s2bc1nmLtst0+K2T3MD6NOnD3V1dQBs3bqVBQsWsHLlypaGamhooKmpiR49enD22WezbNky5s2bx5AhQzjxxBPp378/NTU1LFiwgPvvv79lv1EUUVdXt9PUuLKyMkaPHs2zzz7LpEmTePbZZznttNNaXl+2bBlPPfUUdXV1hBBoaGjgvffe6/I51tTUcMcddxBCaHmupKSETZs27XD+kiRJkiRpz9SzZ08aGhp2eK5bt25MmDCB+fPnc+KJJ+6QK0A8s6u8vDyXZe6y3RIu1dbWttyvqamhoqICiIOdjRs3cumll9K7d2/efPNNbr311pZtDzzwQA488EC2bt3Kgw8+yLx587j44ouprKzkuOOOa1l/qTPjx49n8eLFVFVV0djYyPDhwwGorq5m6dKlXHjhhey7776EELjhhhva3Ef37t3ZunVry+Ompibq6+tbHldWVnLGGWcwdOjQzBtGkiRJkiTtMfbbbz82bty4w3O1tbUsXryYiRMncv/993PppZe2zLaCeHmfTPOPQrFbpsU99thj1NbW8v777/PQQw8xfvx4IE7fSktLKS8v5/3332fRokUt79m0aRMvvvhiyzY9evRoSe8OP/xwHn74YdavXw/Ew8qee+65do8/atQo3n33XRYuXMi4ceNa9rNlyxZKSkrYa6+9aGpqYvHixTsliNv169ePxsZGXn75ZbZt28aSJUvYtm1by+uHH344Dz74YMv0u/r6el588cXEbSZJkiRJkorLqFGjqK6ubnkcRRH33nsvEydO5PTTT6d3794sXLiw5fXGxkbeeOMNRo4cmY9yE9stI5cOOeQQfvnLX1JXV8dBBx3E5MmTATj66KO5++67ufHGG6moqOCYY45pCWSiKOKRRx7hnnvuIYTA/vvvz7Rp0wAYO3YsW7Zs4a677qKmpoaysjJGjhzJuHHj2j6p0lLGjh3LihUrOOGEE1qeHzlyJAceeCA/+MEP6N69O8cccwx9+vRpcx/l5eWceuqpzJs3jyiKOPbYY3eY7nb00UcDtJznXnvtxfjx4xkzZsyuN6AkSZIkSUq9Aw44gLKyMtauXcvgwYNZvnw59fX1TJ06lRACZ555JrfccgujR4+mqqqKl156iWHDhrXMAEuLEEXRrrx/l968BwmdbyJJkiRJklKm01xk1apVPP7440yfPr3Tnc2aNYszzjij5QvO2lFwGYPhUm4U3IWXJEmSJEm7LB+5SMFlDLtlzSVJkiRJkiTtGQyXJEmSJEmSlJjhkiRJkiRJkhIzXJIkSZIkSWrfm8RrK7V1y4f2aomIa805F/TOjYJbbEuSJEmSJGUkbdlHzjOIXR259FZWqihutpEkSZIkSSpauzpySZIkSZIkqZilLThJ3cglSZIkSZIk7cEMlyRJkiRJkrpoyZIlTJs2jf32248QAiEErr/++ozeu3HjRr72ta8xfPhwevToQd++fZk8eTIrVqxo2WbKlCkt+219mzRp0m46o+RK812AJEmSJElS2jz11FMsWLCAUaNGsX79+ozft3HjRo466ihWrVpFt27dGDVqFKWlpaxYsYJVq1YxceLEHbYfMWIEAwYMaHk8bty4rJ1DthguSZIkSZIkddFnP/tZLrvsMpqamqioqMj4fddddx2rVq1i0KBBLFy4kFGjRgGwbds2Ghoadtr+G9/4Bp///OezVfZu4bQ4SZIkSZKkLurXrx+9evXq0nuiKOLOO+8E4hFJ5513Hr179+bggw/mJz/5CT179tzpPVdccQVlZWWMGDGCyy67jLfeKrwvpTdckiRJkiRJyoG3336bv/71rwA89NBDVFdXM2DAAF544QW+/OUv86Mf/WiH7Xv27MmgQYMYMGAAr776KrNmzeKYY46hvr4+H+W3y3BJkiRJkiQpBxobG1vu9+vXj1WrVrFy5UqOOeYYAH74wx+2vP7973+fd955h2effZY1a9ZwzTXXAPDqq69yzz335LbwThguSZIkSZIk5cCAAQPo0aMHAKNHj6aiooJu3bpx2GGHAbB69eqWbSdOnEhZWRkAIQTOO++8ltdee+213BWdAcMlSZIkSZKk3eCEE05gzJgxLaOOunfvzpQpUwB4+eWX2bRpE01NTaxYsQKIAyeA9evXc9NNN1FXV9eyrzvuuKPl/rBhw3JzAhkKURTluwZJkiRJkqRC1WZwMnfuXK666iqiKOKVV14BYJ999qFv374cddRR3HbbbQwbNozq6mo+97nPMXv2bAAef/xxjjvuOBoaGth3333p1atXy4ilu+66i7POOovVq1czfPhwSktLOfDAA6mvr2fNmjUAjB07lqeeeory8vL26g3ZPPlMFM3Ipbq6uqiurs6kTJIkSZIk7Xa1tbWsWrWqJVgCeOedd1i1ahWvv/56u+874ogjWLRoESeccAL19fXU1NRw/PHH8+CDD3LWWWcB8fS5f/qnf2LixImsX7+eDRs2MGbMGK6++mqWLl3aUbCUF0Uzcml7sFRRUZHzhE6SJEmSJBWttAUnjlySJEmSJElSehguSZIkSZIkKTHDJUmSJEmSJCVmuCRJkiRJkqTEDJckSZIkSZKUmOGSJEmSJEmSEjNckiRJkiRJat9b+S6gC/JSayrCpRDCSSGEl0IIK0MIV7fx+tdb3f9jCKEqtxUqTTrrT622OyuEEIUQDs9lfUqfTPpUCOEzIYTnQwjPhRB+nesalS4Z/H9vaAhhYQhhRQjh6RDCKfmoU+kQQvhZCGF9COHZdl4PIYT/bO5vT4cQPprrGpUuGfSp85v70jMhhGUhhI/kukalR2f9qdV2R4QQGkMIZ+eqNqVTJn0qhDAlhPCn5r/NF2ew2/2BkK1bXV0ddXV1ZHOfrW77Z3A+WVfw4VIIoRvwI+Bk4GDg3BDCwR/abEWr+3cBN+aoPKVMhv2JEEIFcDmwPLcVKm0y6VMhhFHANcCxURSNA76W6zqVHhn+nroOuDOKoonAdODHua1SKTMbOKmD108GRjXfLgNuyUFNSrfZdNynXgWOj6LoEOCbwE9yUZRSazYd96ft/2+cCdyfi4KUerPpoE+FEPYm/tvp9Oa/zT+dm7KKW8GHS8CRwMooil6JomgLMAc4o/UGURQtbPXwUWBwDutTunTan5p9k/h/YJtzWZxSKZM+dSnwoyiK3gGIomh9jmtUumTSpyKgsvl+H2BdDutTykRRtAT4awebnAH8Ioo9CuwdQjggN9UpjTrrU1EULdv+/zz821ydyOB3FMBXgbsB/4ZSpzLoU+cBc6Moeq15e/tVFqQhXBoErGn1eG3zc+25BJi/WytSmnXan5qnAwyJoui+XBam1Mrkd9RoYHQIYWkI4dEQQof/Oqc9XiZ96nrgghDCWuD3xH90S0l19W8tqSv821y7JIQwCPhbHFWp7BkN7BNCWBRCeDKEcGG+CyoGpfkuYDc4HDg+30UonUIIJcBNwOfzXIqKSynxdJMpxP96uySEcEgURe/msyil2rnA7CiKvhdCOAb4ZQhhfBRFTfkuTJK2CyF8nDhcmpTvWpRqNwMzoihqCiHkuxYVh1LgMOAEoCfwSAjh0SiKXs5vWemWhnDpdWBIq8eDm59rz+lRFDXs3pKUYp31pwpgPLCo+X9e+wPzQginR1H0RM6qVJpk8jtqLbA8iqKtwKshhJeJw6bHc1OiUiaTPnUJzWsJRFH0SAihHOiP0wWUTFf/1pI6FUI4FPgpcHIURRvzXY9S7XBgTvPf5v2BU0IIjVEU3ZvXqpRma4GNURTVA/UhhCXARwDDpV2QhmlxjwOjQgjDQwg9iBcundd6gxDCxO33nS+pTnTYn6IoqomiqH8URcOiKBpGvE6AwZI60unvKOBe4lFLhBD6Ew/FfSWHNSpdMulTrxH/axshhLFAOfB2TqtUMZkHXNj8rXFHAzVRFL2R76KUXiGEocBc4LOOBNCuiqJoeKu/ze8CvmywpF30W2BSCKE0hNALOAp4Ic81pV7Bj1yKoqgxhPAV4H+BbsDPoih6LoTwr8ATURTNA76zffsQwp+A16IoOj0vBaugZdifpIxl2Kf+F/hkCOF5YBvwj/4rrtqTYZ+6EpgVQriCeHHvz0dRFOWvahWyEMLtxAF3/+Z1uv4Z6A4QRdGtxOt2nQKsBN4DLspPpUqLDPrU/wX6AT9uHm3SGEXR4fmpVoUug/4kdUlnfSqKohdCCAuAp4Em4KdRFD2br3qLRSiWv0Xr6uoigIqKCifiSpIkSZKkglSM+UUapsVJkiRJkiSpQBkuSZIkSZIkKTHDJUmSJEmSJCVmuCRJkiRJkqTEDJckSZIkSZKUWKrDpRDCZfmuQcXFPqVssj8p2+xTyjb7lLLNPqVssj8p2+xTu0+qwyXAjqFss08pm+xPyjb7lLLNPqVss08pm+xPyjb71G6S9nBJkiRJkiRJeRSiKGr3xZNOOinasGFDDsvpmrfffpsBAwYA0NTUBEBJiXmZkmvdp6RdZX9SttmnlG32KWWbfUrZZH9SthVKn2pqaqJv37488MADId+1ZEuH4RLQ4YuFpK6uDoCKioo8VyJJkiRJktS2VvlF0YRLDvORJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCmx0nwXkC0u5C1JkiRJkpR7jlySJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCkxwyVJkiRJkiQlVhzfFhdF8MIaWPcO/LUOfrUo3xW1bWBfOGYM9CqD6vWw5Ll8V1R4SgKceTRU9oSGRrh9Sb4rUnvGDY1vpSXw59Xw3Gv5rkiSJEmSCt9tl+e7gqwrjnApBHi3Hsq7xwHOIy9Bw9Z8V7WzI0bBBVPi+2s3wKJn81pOwfr6mXHIBHEA1xTltRy1Y3B/GLZvfH/xc/ZnSZIkSdpDFc+0uJJWp1LePX91dGTzlg/ul/fIXx2FrnU7lRXotZTXSZIkSZIEFFO41K3VqfQs0OBmc6vRVIUagBWC1u1UqNdSXidJkiRJElCs4VKhjgpy5FJmbKd02OE6GZZKkiRJ0p6qeMKl7Wv0QOFO0Wlw5FJGDC3SwRBQkiRJkkQxhUuOXCoeO0wftJ0KVuvrVKiBriRJkiRptyuecCkVC3o7cikjDYYWqWAIKEmSJEmimMKlbikIl7Y0QlMU3+9euuNUPn3AaXHp0OB1kiRJkiQVbbhUwKMonBrXOUfEpIMj8SRJkiRJFFO4lIZpceConEzYRulgUCpJkiRJopjCpW6tvy2ugD/oOiqnc7ZROrigtyRJkiSJYgqXWo9c6lnAgYSjPTrXYLiUCq37ciH/NydJkiRJ2q2KJ1yKog/uN27LXx2dKe32wf1tBVxnPrUOCm2jwtV6nbPGpvzVIUmSJEnKq+IJl5pahUutR74UmtZrCG0u4DrzyTZKh9ajylp/c5wkSZIkaY9SPOHStlYjJzYX8Afd1utBFXKd+bRDuGQbFSxDQEmSJEkSxRQuNbUOlwr4g64fyDvXekSMbVS4yg1KJUmSJEnFFC6lYeRSSdjxW7W2GJy0yQAuHcq8TpIkSZKkYgqX0jByqexD072i9jfdo5W5lk8qOMJMkiRJkkQxhUvbWiU1hfpB1xE5mbGd0qH1dTIElCRJkqQ9VhGFS61GLhXqB10X885MT9spFXo6ckmSJEmSVEzhUutpce8XaCDht6BlpnU7Feq11I7TPL1OkiRJkrTHKp5waVsK1lxyjZrMlNlOqeC3xUmSJEmSKNpwqUA/6LqWUGZcyycddrhO9mdJkiRJ2lMVT7jU1ASbNsf3CzW4cVpc50rCB9OtmiJoaMxvPWqfI/EkSZIkSUCIoqij1zt8sWBs2wb/8wT88c8wYThsrMt3RW3rXgoVPeH+FXDCoVDzXr4rKkz79IYH/gwnfRTersl3NWpPzx7QqxwWPAXHj4P3GvJdkSRJkiQVvLovfQKAioqKkOdSsqY03wXssvrNcOdSqF4PUw+NR1MM7Jfvqjq2VzkM3TffVRS2XmWw/z7xTYWtdzmMPCDfVUiSJElSKlQs/Qt85sYbqJ2T71KyJt3h0usb4ZcL42lUR4+Jp1SlQQhQUjwzEncL2yg9vFaSJEmStEdLZ7gURfDkKrj3URg1EAYX+EilDysJ0C0lQVi+2Ebp4bWSJEmSpD1a+sKlLY3wu8fg6dVwxKh4DaM0Cn4Y75RtlB5eK0mSJEnKXJF9hEpXuLSxDm5bFH/t+XEHQ2m3fFeUTAjpmcKXL7ZRenitJEmSJKmLiuszVHrCpZdehzkPwZB+8JHh6R4p4Ro1nbON0sNrJUmSJEl7tMIPl5qa4I9Pw8PPw8QR0L8y3xXtuoAjPTpjG6WH10qSJEmSuqbIPkIVdri0aTPc+TCsfxeOHw/l3fNdUXY4jahztlF6eK0kSZIkaY9WuOHSmg1w22LouxdMHldc026cRtQ52yg9vFaSJEmS1DVpXuqnDYUXLkURPP4XuO9J+MgwGNwv3xVln9OIOmcbpYfXSpIkSZL2aIUVLm1phHmPwUtr4fhxUNEz3xXtHiEUXUqZdbZRenitJEmSJGmPVjjh0oZa+PVi6FYCn5gA3brlu6Ldx2lEnbON0sNrJUmSJEldU2T/Pl8Y4dILa+CuZTB6EIwemO9qdj+nEXXONkoPr5UkSZIkdVFxfYbKb7i0rQke+DM8/jJ8bAz0r8xrOTnjt2t1zjZKD6+VJEmSJO3R8hcu1b0Pdz4c/zzpMCjrnrdScs5pRJ2zjdLDayVJkiRJXVNk/z6fn3Cpej3c8TAM6gtHjd7zFgN2GlHnbKP08FpJkiRJ0h4tt+FSFMGjL8Mf/xSHSoP75/TwBcNpRJ2zjdLDayVJkiRJXVRcn6FyFy41bIXfLofXNsDJH4XePXN26ILjSI/O2Ubp4bWSJEmSpK4pso9QuQmX3q6B25dAZS849TAo7ZaTwxYs16jpnG2UHl4rSZIkSdqj5SZcuvsRGL4fjB2Sk8MVvrDnrTPVZbZRenitJEmSJGlPlptwaWsjVO3r1JntnEbUOdsoPbxWkiRJktQ1RfYRKndrLpU4daaF04g6Zxulh9dKkiRJkrqouNKlHIdLxdV4ifntWp2zjdLDayVJkiRJezTDpXxwGlHnbKP08FpJkiRJUtcU2UeoHIZLJU6d2c5pRJ2zjdLDayVJkiRJezRHLuWD04g6Zxulh9dKkiRJkrqmyL5xO3fhkl9X/oGAbdEZ2yg9vFaSJEmStEfLXbjUrSS+Kf4gblt0zDZKD6+VJEmSJO3RCnta3LFXw4ZaKG1er2nUQPjU0XDe5Oyv8fLzB+GuZfDS63DaEfC9izve/qd/gFsXwOYtcPJh8G/nQ1n3zI61u6YR/XZ5XNeqN2Gvcjh4CHzlFDhiVPaO0bAVrrsN5j8J5T3gSyfCFz7Z/vZJ26lYp1pt79PdSqC0Gxw2Ev79AhjYN7vHebcerpoNDz0PfXvDVZ+CM45qe9soghvuhjsejh+fMwmuPivz0UjFeq0kSZIkFZZzvgMvrIXHv5v55++uyGkusOvlFpLchUshwbS4APzsqzDpYKh9D5a/DNfPgT+/Ct/t5CJ31X57w1enwZJnYfPWjmtd/CzcOh9u/4f4fZf9CG6eB1efndmxdsc0oln3wy3z46Di+PHQvVtc5x/+DEeOzt5x/uN3sHo9LJsJ62vg3O/CqEEwZfzO2+5KOxXrVKvWfXrzVrjuV3D97TDrK9k9zv/9NfQohSdvgufXwEX/GYeNowftvO2vl8Af/gQL/jlu8/NvgqED4IIpmR2rWK+VJEmSpMKxZgM8/heo6Al/fBpOPTz7x8hlLlBk6VLhf1vc9m+i2rs3nPhR2HdvOOPf4bKTYMzg7NV36hHxz2eq4Y13Oq717kfgnMkwZkj8+PLT4e9/Atd+JrNjZfvbtWrfg5t+G6eq288D4JMfjW/ZdNcyuOkS2Kcivp07OX5u6qE7b7sr7VTM30C2/dx6lcG0I+JwKZvn+l5DPLLsgW9CRS846iD4xAS451G45tM7b3/3MrjsRBjUP378xRPjwOnCqZkdr5ivlSRJkqTCcM+j8NGRMGFE/BnmtCOzf4xc5gJFprCnxcHOU24OGwkH7BMnlgcP2Xn7a34B9z7a9r4G9Ys/cHd4vOZbR7W+vA5OnPjBNuOHwtu18VSkvr073j9kfxrRilfi6WqnHJb5fn94H/zovvZff+HHOz/3bn08Wmn80A+OM24o3L+i7ePuSjsV81Sr7ef2fgP87rH4F2R755qkP69+C7p1gwMP+OC5cUPgkZfav07jPnRNX16XefsX87WSJEmSVBjuXgaXnggfHQGn/RtsrIUBfdreNhW5QOebpEnhh0ttvW//vaGmvu39zfxcfEsqhM470XuboU+vD7bp0yv++f5mKKnI4Bid7L+r3t0Ud94eXbicfz8tvnXF+w3xzw+f+6bNbZ/PrrRTttuokFzyg3gdsfe2QL8KuP3K9s81SX9+rwEqynfcZ2UvqG/nOtW3cZ3qN2c+3a2Yr5UkSZKk/Fv+MqzdCGccGX+GqhoA9y6PZ120JQ25QJEp7Glx29dp+vD73nwX+lbsnqk47R2ztb3Kob7hg23qm0OXil6Z1ZTtaUT9KuGvm6ApiheJ3l0qmv9jqd8Cvcqb7zdA755tn8+utFOxTrUKAWZfHq+Lta0JFjwJn7oBHvp2POUzGyp6Ngd+rdqvq9dpr/J49FMmivVaSZIkSSoMv1kar/O7faTSWR+Ln/s/J++e4+UiFyiyoUvpG7m04pV47uPRB7W9v3/477iTtWVIf3j4ho6Pt32XHdU6ZnC8SPLfHh0/fmFN3Mn7V3a875ZjZHka0ZGjoKwUFjwFp2c47/T78+LFxtpT/dOdn+vbO16o7IXXYL9D4ueeXwNjBrV9PrvSTsU81Wp7ny7pFs8T/sfZ8Nhf2r52SfrzgQdA4zZ49S0YuX/83POvxdejzes0KL42hx/YvG0H17QtxXytJEmSJOXX+1tg3mPxP86P/2r83JatUPNe/DlnfNXO70lFLpDZZmmRw2+LY9fWXKp9L14z5tpfwqePjecztuWmi+NbVzVui29NUXzbsjUeBdTWSKDpk+ArP4nrOGBvuGkenHtcFz6Mk90P43vvFa9If/XP42+J+/ghzd8W9xw8/Dxcf+7O77nyjPjWVedMioOpj46M11/61UL4wWVtn8+utFMxT7Xa3qejCOY/Fc/JbS/MSdKfK3rGC4XfeDfc/AV49rX4OAv+ue1jnHMc3LIgXvQ7hPhbBy/9ZP76syRJkiRtt+BJ6FYCD38bureKMC75QRwgHTps5/ekIRcoMoU/cun878UXMoT4A/iXT4aL/yb7F+ym38LMuR88/s1SmPEpuPqs+CsPj7kKHrkxTjk/MSFer+jMf4fNW+LRJ9eend+RHl89NR5VdNNv4Uu3QO9y+MjwOEDK5rGuPRuu/G+YcDmU94DLT4vbA7LbTsU8Gub878W/HEOAwf3hx19qe3H6XfG9i+JfdGP+DvbpHT/efoxlL8JnboS1P4sfX3wCVK+H466JH392SvxcJustQXFfK0mSJEn5dcfDcP5kGDpgx+cv/SRc/Qv4l3OztzxMLnOBIhOiKOro9Q5fzNgP/gcu/Hi8qLDg23fBNWfnu4rCZhulh9dKkiRJkrpm8MU38Pp/X5PvMrIlh9PiQuYjIfYEtkXnbKP08FpJkiRJ0h7Lr3iSJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCkxwyVJkiRJkiQlZrgkSZIkSZKkxEpzcpS/O8WvKpckSZIkSSpCIYqijl7v8EVJkiRJkiR12d5ATb6LyBanxUmSJEmSJCkxwyVJkiRJkiQlZrgkSZIkSZKUWw35LiCbXHNJkiRJkiQpt4rqW88cuSRJkiRJkqTEDJckSZIkSZKUmOGSJEmSJEmSEjNckiRJkiRJUmKGS5IkSZIkSUrMcEmSJEmSJEmJGS5JkiRJkiQpMcMlSZIkSZIkJWa4JEmSJEmSpMQMlyRJkiRJkpSY4ZIkSZIkSZISM1ySJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCkxwyVJkiRJkiQlZrgkSZIkSZKkxAyXJEmSJEmSlJjhkiRJkiRJkhIzXJIkSZIkSVJihkuSJEmSJElKzHBJkiRJkiRJiRkuSZIkSZIkKTHDJUmSJEmSJCVmuCRJkiRJkqTEDJckSZIkSZKUmOGSJEmSJEmSEjNckiRJkiRJUmKGS5IkSZIkSUrMcEmSJEmSJEmJGS5JkiRJkiQpMcMlSZIkSZIkJWa4JEmSJEmSpMQMlyRJkiRJkpSY4ZIkSZIkSZISM1ySJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCkxwyVJkiRJkiQlZrgkSZIkSZKkxAyXJEmSJEmSlJjhkiRJkiRJkhIzXJIkSZIkSVJihkuSJEmSJElKzHBJkiRJkiRJiRkuSZIkSZIkKTHDJUmSJEmSJCVmuCRJkiRJkqTEDJckSZIkSZKUmOGSJEmSJEmSEjNckiRJkiRJUmKGS5IkSZIkSUrMcEmSJEmSJEmJGS5JkiRJkiQpMcMlSZIkSZIkJWa4JEmSJEmSpMQMlyRJkiRJkpSY4ZIkSZIkSZISM1ySJEmSJElSYoZLkiRJkiRJSsxwSZIkSZIkSYkZLkmSJEmSJCkxwyVJkiRJkiQlZrgkSZIkSZKkxAyXJEmSJEmSlJjhkiRJkiRJkhIzXJIkSZIkSVJihkuSJEmSJElKzHBJkiRJkiRJiRkuSZIkSZIkKTHDJUmSJEmSJCVmuCRJkiRJkqTEDJckSZIkSZKUWGknr4ecVCFJkiRJkqRUcuSSJEmSJEmSEjNckiRJkiRJUmKGS5IkSZIkSUrMcEmSJEmSJEmJGS5JkiRJkiQpMcMlSZIkSZIkJfb/ATfn6sbAtO+UAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"][0], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x223.2 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"])\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Dynamic Double Machine Learning Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Dynamic Double Machine Learning: Use Cases and Examples\\n\",\n    \"\\n\",\n    \"Dynamic DoubleML is an extension of the Double ML approach for treatments assigned sequentially over time periods. This estimator will account for treatments that can have causal effects on future outcomes. For more details, see [this paper](https://arxiv.org/abs/2002.07285) or the [EconML docummentation](https://www.pywhy.org/EconML/).\\n\",\n    \"\\n\",\n    \"For example, the Dynamic DoubleML could be useful in estimating the following causal effects:\\n\",\n    \"* the effect of investments on revenue at companies that receive investments at regular intervals ([see more](https://arxiv.org/abs/2103.08390))\\n\",\n    \"* the effect of prices on demand in stores where prices of goods change over time\\n\",\n    \"* the effect of income on health outcomes in people who receive yearly income\\n\",\n    \"\\n\",\n    \"The preferred data format is balanced panel data. Each panel corresponds to one entity (e.g. company, store or person) and the different rows in a panel correspond to different time points. Example:\\n\",\n    \"\\n\",\n    \"||Company|Year|Features|Investment|Revenue|\\n\",\n    \"|---|---|---|---|---|---|\\n\",\n    \"|1|A|2018|...|\\\\$1,000|\\\\$10,000|\\n\",\n    \"|2|A|2019|...|\\\\$2,000|\\\\$12,000|\\n\",\n    \"|3|A|2020|...|\\\\$3,000|\\\\$15,000|\\n\",\n    \"|4|B|2018|...|\\\\$0|\\\\$5,000|\\n\",\n    \"|5|B|2019|...|\\\\$100|\\\\$10,000|\\n\",\n    \"|6|B|2020|...|\\\\$1,200|\\\\$7,000|\\n\",\n    \"|7|C|2018|...|\\\\$1,000|\\\\$20,000|\\n\",\n    \"|8|C|2019|...|\\\\$1,500|\\\\$25,000|\\n\",\n    \"|9|C|2020|...|\\\\$500|\\\\$15,000|\\n\",\n    \"\\n\",\n    \"(Note: when passing the data to the DynamicDML estimator, the \\\"Company\\\" column above corresponds to the `groups` argument at fit time. The \\\"Year\\\" column above should not be passed in as it will be inferred from the \\\"Company\\\" column)\\n\",\n    \"\\n\",\n    \"If group memebers do not appear together, it is assumed that the first instance of a group in the dataset corresponds to the first period of that group, the second instance of the group corresponds to the second period, etc. Example:\\n\",\n    \"\\n\",\n    \"||Company|Features|Investment|Revenue|\\n\",\n    \"|---|---|---|---|---|\\n\",\n    \"|1|A|...|\\\\$1,000|\\\\$10,000|\\n\",\n    \"|2|B|...|\\\\$0|\\\\$5,000\\n\",\n    \"|3|C|...|\\\\$1,000|\\\\$20,000|\\n\",\n    \"|4|A|...|\\\\$2,000|\\\\$12,000|\\n\",\n    \"|5|B|...|\\\\$100|\\\\$10,000|\\n\",\n    \"|6|C|...|\\\\$1,500|\\\\$25,000|\\n\",\n    \"|7|A|...|\\\\$3,000|\\\\$15,000|\\n\",\n    \"|8|B|...|\\\\$1,200|\\\\$7,000|\\n\",\n    \"|9|C|...|\\\\$500|\\\\$15,000|\\n\",\n    \"\\n\",\n    \"In this dataset, 1<sup>st</sup> row corresponds to the first period of group `A`, 4<sup>th</sup> row corresponds to the second period of group `A`, etc.\\n\",\n    \"\\n\",\n    \"In this notebook, we show the performance of the DynamicDML on synthetic and observational data. \\n\",\n    \"\\n\",\n    \"## Notebook Contents\\n\",\n    \"\\n\",\n    \"1. [Example Usage with Average Treatment Effects](#1.-Example-Usage-with-Average-Treatment-Effects)\\n\",\n    \"2. [Example Usage with Heterogeneous Treatment Effects](#2.-Example-Usage-with-Heterogeneous-Treatment-Effects)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Main imports\\n\",\n    \"from econml.panel.dml import DynamicDML\\n\",\n    \"from econml.tests.dgp import DynamicPanelDGP, add_vlines\\n\",\n    \"\\n\",\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"from sklearn.linear_model import LassoCV, MultiTaskLassoCV\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 1. Example Usage with Average Treatment Effects\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.1 DGP\\n\",\n    \"\\n\",\n    \"We consider a data generating process from a markovian treatment model. \\n\",\n    \"\\n\",\n    \"In the example bellow, $T_t\\\\rightarrow$ treatment(s) at time $t$, $Y_t\\\\rightarrow$outcome at time $t$, $X_t\\\\rightarrow$ features and controls at time $t$ (the coefficients $e, f$ will pick the features and the controls).\\n\",\n    \"\\\\begin{align}\\n\",\n    \"    X_t =& (\\\\pi'X_{t-1} + 1) \\\\cdot A\\\\, T_{t-1} + B X_{t-1} + \\\\epsilon_t\\\\\\\\\\n\",\n    \"    T_t =& \\\\gamma\\\\, T_{t-1} + (1-\\\\gamma) \\\\cdot D X_t + \\\\zeta_t\\\\\\\\\\n\",\n    \"    Y_t =& (\\\\sigma' X_{t} + 1) \\\\cdot e\\\\, T_{t} + f X_t + \\\\eta_t\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"with $X_0, T_0 = 0$ and $\\\\epsilon_t, \\\\zeta_t, \\\\eta_t \\\\sim N(0, \\\\sigma^2)$. Moreover, $X_t \\\\in R^{n_x}$, $B[:, 0:s_x] \\\\neq 0$ and $B[:, s_x:-1] = 0$, $\\\\gamma\\\\in [0, 1]$, $D[:, 0:s_x] \\\\neq 0$, $D[:, s_x:-1]=0$, $f[0:s_x]\\\\neq 0$, $f[s_x:-1]=0$. We draw a single time series of samples of length $n\\\\_panels \\\\cdot n\\\\_periods$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define DGP parameters\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n_panels = 5000 # number of panels\\n\",\n    \"n_periods = 3 # number of time periods in each panel\\n\",\n    \"n_treatments = 2 # number of treatments in each period\\n\",\n    \"n_x = 100 # number of features + controls\\n\",\n    \"s_x = 10 # number of controls (endogeneous variables)\\n\",\n    \"s_t = 10 # treatment support size\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Generate data\\n\",\n    \"dgp = DynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(\\n\",\n    \"            s_x, random_seed=12345)\\n\",\n    \"Y, T, X, W, groups = dgp.observational_data(n_panels, s_t=s_t, random_seed=12345)\\n\",\n    \"true_effect = dgp.true_effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.2 Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DynamicDML(\\n\",\n    \"    model_y=LassoCV(cv=3, max_iter=1000),\\n\",\n    \"    model_t=MultiTaskLassoCV(cv=3, max_iter=1000),\\n\",\n    \"    cv=3)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.panel.dml._dml.DynamicDML at 0x19d2abd6a00>\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=None, W=W, groups=groups)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Average effect of default policy: 1.40\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"A scalar was specified but there are multiple treatments; the same value will be used for each treatment.  Consider specifyingall treatments, or using the const_marginal_effect method.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Average treatment effect of all periods on last period for unit treatments\\n\",\n    \"print(f\\\"Average effect of default policy: {est.ate():0.2f}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Effect of target policy over baseline policy: 1.40\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Effect of target policy over baseline policy\\n\",\n    \"# Must specify a treatment for each period\\n\",\n    \"baseline_policy = np.zeros((1, n_periods * n_treatments))\\n\",\n    \"target_policy = np.ones((1, n_periods * n_treatments))\\n\",\n    \"eff = est.effect(T0=baseline_policy, T1=target_policy)\\n\",\n    \"print(f\\\"Effect of target policy over baseline policy: {eff[0]:0.2f}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Marginal effect of a treatments in period 1 on period 3 outcome: [0.04000235 0.0701606 ]\\n\",\n      \"Marginal effect of a treatments in period 2 on period 3 outcome: [0.31611764 0.23714736]\\n\",\n      \"Marginal effect of a treatments in period 3 on period 3 outcome: [0.13108411 0.60656886]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Period treatment effects + interpretation\\n\",\n    \"for i, theta in enumerate(est.intercept_.reshape(-1, n_treatments)):\\n\",\n    \"    print(f\\\"Marginal effect of a treatments in period {i+1} on period {n_periods} outcome: {theta}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"             <td></td>             <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_0$</th>      <td>0.04</td>       <td>0.041</td>  <td>0.977</td>   <td>0.328</td>  <td>-0.027</td>    <td>0.107</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_0$</th>      <td>0.07</td>       <td>0.04</td>   <td>1.74</td>    <td>0.082</td>   <td>0.004</td>    <td>0.136</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_1$</th>      <td>0.316</td>      <td>0.036</td>  <td>8.848</td>    <td>0.0</td>    <td>0.257</td>    <td>0.375</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_1$</th>      <td>0.237</td>      <td>0.036</td>  <td>6.608</td>    <td>0.0</td>    <td>0.178</td>    <td>0.296</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_2$</th>      <td>0.131</td>      <td>0.003</td> <td>45.665</td>    <td>0.0</td>    <td>0.126</td>    <td>0.136</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_2$</th>      <td>0.607</td>      <td>0.003</td> <td>210.244</td>   <td>0.0</td>    <td>0.602</td>    <td>0.611</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            CATE Intercept Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"                        point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"cate_intercept|(T0)$_0$           0.04  0.041   0.977  0.328   -0.027    0.107\\n\",\n       \"cate_intercept|(T1)$_0$           0.07   0.04    1.74  0.082    0.004    0.136\\n\",\n       \"cate_intercept|(T0)$_1$          0.316  0.036   8.848    0.0    0.257    0.375\\n\",\n       \"cate_intercept|(T1)$_1$          0.237  0.036   6.608    0.0    0.178    0.296\\n\",\n       \"cate_intercept|(T0)$_2$          0.131  0.003  45.665    0.0    0.126    0.136\\n\",\n       \"cate_intercept|(T1)$_2$          0.607  0.003 210.244    0.0    0.602    0.611\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Period treatment effects with confidence intervals\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"conf_ints = est.intercept__interval(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1.3 Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Some plotting boilerplate code\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)-.04, est.intercept_, yerr=(conf_ints[1] - est.intercept_,\\n\",\n    \"                                                    est.intercept_ - conf_ints[0]), fmt='o', label='DynamicDML')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments), true_effect.flatten(), fmt='o', alpha=.6, label='Ground truth')\\n\",\n    \"for t in np.arange(1, n_periods):\\n\",\n    \"    plt.axvline(x=t * n_treatments - .5, linestyle='--', alpha=.4)\\n\",\n    \"plt.xticks([t * n_treatments - .5 + n_treatments/2 for t in range(n_periods)],\\n\",\n    \"           [\\\"$\\\\\\\\theta_{}$\\\".format(t) for t in range(n_periods)])\\n\",\n    \"plt.gca().set_xlim([-.5, n_periods*n_treatments - .5])\\n\",\n    \"plt.ylabel(\\\"Effect\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 2. Example Usage with Heterogeneous Treatment Effects on Time-Invariant Unit Characteristics\\n\",\n    \"\\n\",\n    \"We can also estimate treatment effect heterogeneity with respect to the value of some subset of features $X$ in the initial period. Heterogeneity is currently only supported with respect to such initial state features. This for instance can support heterogeneity with respect to time-invariant unit characteristics. In that case you can simply pass as $X$ a repetition of some unit features that stay constant in all periods. You can also pass time-varying features, and their time varying component will be used as a time-varying control. However, heterogeneity will only be estimated with respect to the initial state.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.1 DGP\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define additional DGP parameters\\n\",\n    \"het_strength = .5\\n\",\n    \"het_inds = np.arange(n_x - n_treatments, n_x)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Generate data\\n\",\n    \"dgp = DynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(\\n\",\n    \"            s_x, hetero_strength=het_strength, hetero_inds=het_inds, random_seed=12)\\n\",\n    \"Y, T, X, W, groups = dgp.observational_data(n_panels, s_t=s_t, random_seed=1)\\n\",\n    \"ate_effect = dgp.true_effect\\n\",\n    \"het_effect = dgp.true_hetero_effect[:, het_inds + 1]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.2 Train Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DynamicDML(\\n\",\n    \"    model_y=LassoCV(cv=3),\\n\",\n    \"    model_t=MultiTaskLassoCV(cv=3),\\n\",\n    \"    cv=3)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.panel.dml._dml.DynamicDML at 0x19d2ae7e5e0>\"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(Y, T, X=X, W=W, groups=groups, inference=\\\"auto\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"       <td></td>       <th>point_estimate</th> <th>stderr</th>  <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T0)$_0$</th>      <td>0.009</td>      <td>0.045</td>  <td>0.203</td>   <td>0.839</td>  <td>-0.065</td>    <td>0.083</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T1)$_0$</th>      <td>0.017</td>      <td>0.042</td>  <td>0.416</td>   <td>0.677</td>  <td>-0.051</td>    <td>0.086</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T0)$_1$</th>     <td>-0.001</td>      <td>0.041</td> <td>-0.035</td>   <td>0.972</td>  <td>-0.069</td>    <td>0.067</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T1)$_1$</th>     <td>-0.031</td>      <td>0.041</td>  <td>-0.76</td>   <td>0.447</td>  <td>-0.099</td>    <td>0.036</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T0)$_2$</th>     <td>-0.306</td>      <td>0.008</td> <td>-36.667</td>   <td>0.0</td>    <td>-0.32</td>   <td>-0.292</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0|(T1)$_2$</th>      <td>0.158</td>      <td>0.008</td> <td>19.656</td>    <td>0.0</td>    <td>0.145</td>    <td>0.171</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T0)$_0$</th>      <td>0.017</td>      <td>0.044</td>  <td>0.378</td>   <td>0.706</td>  <td>-0.056</td>    <td>0.09</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T1)$_0$</th>     <td>-0.007</td>      <td>0.045</td> <td>-0.164</td>   <td>0.87</td>   <td>-0.082</td>    <td>0.067</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T0)$_1$</th>     <td>-0.034</td>      <td>0.042</td> <td>-0.821</td>   <td>0.412</td>  <td>-0.103</td>    <td>0.034</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T1)$_1$</th>     <td>-0.025</td>      <td>0.042</td>  <td>-0.6</td>    <td>0.549</td>  <td>-0.095</td>    <td>0.044</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T0)$_2$</th>     <td>-0.302</td>      <td>0.008</td> <td>-35.72</td>    <td>0.0</td>   <td>-0.316</td>   <td>-0.288</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X1|(T1)$_2$</th>      <td>0.156</td>      <td>0.008</td> <td>18.801</td>    <td>0.0</td>    <td>0.142</td>    <td>0.169</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"             <td></td>             <th>point_estimate</th> <th>stderr</th>   <th>zstat</th>  <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_0$</th>      <td>0.024</td>      <td>0.036</td>   <td>0.653</td>   <td>0.513</td>  <td>-0.036</td>    <td>0.084</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_0$</th>     <td>-0.033</td>      <td>0.036</td>  <td>-0.929</td>   <td>0.353</td>  <td>-0.092</td>    <td>0.025</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_1$</th>     <td>-0.105</td>      <td>0.034</td>  <td>-3.067</td>   <td>0.002</td>  <td>-0.162</td>   <td>-0.049</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_1$</th>      <td>0.037</td>      <td>0.034</td>   <td>1.079</td>   <td>0.281</td>  <td>-0.019</td>    <td>0.093</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T0)$_2$</th>     <td>-0.743</td>      <td>0.005</td> <td>-140.503</td>   <td>0.0</td>   <td>-0.752</td>   <td>-0.734</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|(T1)$_2$</th>      <td>0.48</td>       <td>0.005</td>  <td>91.061</td>    <td>0.0</td>    <td>0.472</td>    <td>0.489</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                       Coefficient Results                        \\n\",\n       \"==================================================================\\n\",\n       \"            point_estimate stderr  zstat  pvalue ci_lower ci_upper\\n\",\n       \"------------------------------------------------------------------\\n\",\n       \"X0|(T0)$_0$          0.009  0.045   0.203  0.839   -0.065    0.083\\n\",\n       \"X0|(T1)$_0$          0.017  0.042   0.416  0.677   -0.051    0.086\\n\",\n       \"X0|(T0)$_1$         -0.001  0.041  -0.035  0.972   -0.069    0.067\\n\",\n       \"X0|(T1)$_1$         -0.031  0.041   -0.76  0.447   -0.099    0.036\\n\",\n       \"X0|(T0)$_2$         -0.306  0.008 -36.667    0.0    -0.32   -0.292\\n\",\n       \"X0|(T1)$_2$          0.158  0.008  19.656    0.0    0.145    0.171\\n\",\n       \"X1|(T0)$_0$          0.017  0.044   0.378  0.706   -0.056     0.09\\n\",\n       \"X1|(T1)$_0$         -0.007  0.045  -0.164   0.87   -0.082    0.067\\n\",\n       \"X1|(T0)$_1$         -0.034  0.042  -0.821  0.412   -0.103    0.034\\n\",\n       \"X1|(T1)$_1$         -0.025  0.042    -0.6  0.549   -0.095    0.044\\n\",\n       \"X1|(T0)$_2$         -0.302  0.008  -35.72    0.0   -0.316   -0.288\\n\",\n       \"X1|(T1)$_2$          0.156  0.008  18.801    0.0    0.142    0.169\\n\",\n       \"                             CATE Intercept Results                            \\n\",\n       \"===============================================================================\\n\",\n       \"                        point_estimate stderr  zstat   pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------------------\\n\",\n       \"cate_intercept|(T0)$_0$          0.024  0.036    0.653  0.513   -0.036    0.084\\n\",\n       \"cate_intercept|(T1)$_0$         -0.033  0.036   -0.929  0.353   -0.092    0.025\\n\",\n       \"cate_intercept|(T0)$_1$         -0.105  0.034   -3.067  0.002   -0.162   -0.049\\n\",\n       \"cate_intercept|(T1)$_1$          0.037  0.034    1.079  0.281   -0.019    0.093\\n\",\n       \"cate_intercept|(T0)$_2$         -0.743  0.005 -140.503    0.0   -0.752   -0.734\\n\",\n       \"cate_intercept|(T1)$_2$           0.48  0.005   91.061    0.0    0.472    0.489\\n\",\n       \"-------------------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Average effect of default policy:-0.42\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"A scalar was specified but there are multiple treatments; the same value will be used for each treatment.  Consider specifyingall treatments, or using the const_marginal_effect method.\\n\",\n      \"A scalar was specified but there are multiple treatments; the same value will be used for each treatment.  Consider specifyingall treatments, or using the const_marginal_effect method.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Average treatment effect for test points\\n\",\n    \"X_test = X[np.arange(0, 25, 3)]\\n\",\n    \"print(f\\\"Average effect of default policy:{est.ate(X=X_test):0.2f}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Effect of target policy over baseline policy for test set:\\n\",\n      \" [-0.37368525 -0.30896804 -0.43030363 -0.52252401 -0.42849622 -0.48790877\\n\",\n      \" -0.34417987 -0.51804937 -0.36806744]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Effect of target policy over baseline policy\\n\",\n    \"# Must specify a treatment for each period\\n\",\n    \"baseline_policy = np.zeros((1, n_periods * n_treatments))\\n\",\n    \"target_policy = np.ones((1, n_periods * n_treatments))\\n\",\n    \"eff = est.effect(X=X_test, T0=baseline_policy, T1=target_policy)\\n\",\n    \"print(\\\"Effect of target policy over baseline policy for test set:\\\\n\\\", eff)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(array([ 0.02374269, -0.03302781, -0.10526464,  0.03675719, -0.74294675,\\n\",\n       \"         0.48025068]),\\n\",\n       \" array([[ 0.00914226,  0.01675409],\\n\",\n       \"        [ 0.01732804, -0.00741467],\\n\",\n       \"        [-0.00143705, -0.03431712],\\n\",\n       \"        [-0.03136295, -0.02536834],\\n\",\n       \"        [-0.30581311, -0.30189654],\\n\",\n       \"        [ 0.15773252,  0.15564665]]))\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Coefficients: intercept is of shape n_treatments*n_periods\\n\",\n    \"# coef_ is of shape (n_treatments*n_periods, n_hetero_inds).\\n\",\n    \"# first n_treatment rows are from first period, next n_treatment\\n\",\n    \"# from second period, etc.\\n\",\n    \"est.intercept_, est.coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Confidence intervals\\n\",\n    \"conf_ints_intercept = est.intercept__interval(alpha=0.05)\\n\",\n    \"conf_ints_coef = est.coef__interval(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2.3 Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# parse true parameters in array of shape (n_treatments*n_periods, 1 + n_hetero_inds)\\n\",\n    \"# first column is the intercept\\n\",\n    \"true_effect_inds = []\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    true_effect_inds += [t * (1 + n_x)] + (list(t * (1 + n_x) + 1 + het_inds) if len(het_inds)>0 else [])\\n\",\n    \"true_effect_params = dgp.true_hetero_effect[:, true_effect_inds]\\n\",\n    \"true_effect_params = true_effect_params.reshape((n_treatments*n_periods, 1 + het_inds.shape[0]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# concatenating intercept and coef_\\n\",\n    \"param_hat = np.hstack([est.intercept_.reshape(-1, 1), est.coef_])\\n\",\n    \"lower = np.hstack([conf_ints_intercept[0].reshape(-1, 1), conf_ints_coef[0]])\\n\",\n    \"upper = np.hstack([conf_ints_intercept[1].reshape(-1, 1), conf_ints_coef[1]])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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SpL8+te/zjHHHJNbbrklU6ZMyfnnn5/rrrsuX/3qV3PBBRcMq+OP//iPM23atNx6661ZtmxZXvnKV2623qlTp+bggw/OnXfeuXHZm970plx55ZVZsWJFxo8fn5kzZ47kP9FzjMQRGEcn+Vmt9a5a61NJrkxyymbW+8MkVyd5cAS2CQAAADvH6hXbt7wHtdYkyRve8IZ885vfzLp16/LZz342b3/72zeu85rXvCaTJk3KPvvskxkzZuSBBx5IkixcuDBHHnlkXvrSl+aee+7Z2FjYZZddctJJJyVJjjjiiLziFa/IxIkTc8QRR2T58uXDarj++utz5plnbpyf3uVCsc/U+4yTTjop1113Xb785S/njW984w79G2yrkWhgHJDknmfNrxhatlEp5YAk/yHJJ0dgewAAALDzTJu1fct30F133ZXx48dnxowZ2W233XLCCSfkmmuuyaJFi3LaaadtXG/SpEkb748fPz7r16/P97///Vx//fW56aab8i//8i958YtfnDVr1iRJJk6cmFJKkmTcuHEbf37cuHFZv379sDpqrRvX7+axxx7L8uXL88IXvnDjsl122SVHHXVU/uIv/iKvf/3rd+wfYhuNRANjc3tZN5n/H0neX2t9eqtPVsq7SilLSilLVq5cOQLlAQAAwHY47oJk4q7PXTZx187yEbJy5cq8+93vzllnnbWxeXDGGWfk7LPPzkte8pLstddeXX9+9erVmT59enbbbbf85Cc/yT/90z/tcC0nnnhiPvGJT2ycf+SRR4at8/jjj+c973lPTj311GFHaJxzzjn5yEc+kr333nuHa9gWI9HAWJHkwGfNz0py3ybrzE9yZSlleZL/lOSvSimnbu7Jaq2X1Vrn11rn7+urgehXe+/dmQAYTkYCdCcnd765C5LXLkzGDx35MO3Azvzc3i5Q+eSTT278GtXjjz8+J554Yi688MKNjx911FGZOnVqTj/99K0+10knnZT169dn7ty5+eAHP5iXvvSlO1zX+eefn0ceeSSHH354jjzyyHzve9/b+Nixxx6bww8/PEcffXQOOuigfOpTnxr284cddlje9ra3bfa5L7nkksyaNWvj1Iuy6fkr2/0EpUxIckeS45Lcm+SHSU6rtd62hfUvT/LNWutVW3vu+fPn12euZgrAzvE3/3BXkuSdL5/TcCUA7SQnoT/cfvvtOeSQ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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(het_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='*', label='Ground Truth')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(het_inds) + 1) * n_treatments),\\n\",\n    \"             param_hat.flatten(), yerr=((upper - param_hat).flatten(),\\n\",\n    \"                                        (param_hat - lower).flatten()), fmt='o', label='DynamicDML')\\n\",\n    \"add_vlines(n_periods, n_treatments, het_inds)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/ForestLearners Basic Example.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ForestDML, ForestDRLearner, OrthoForest and CausalForest: Basic Example\\n\",\n    \"\\n\",\n    \"We depict the performance of our `ForestDML`, `ForestDRLearner`, `OrthoForest` and `CausalForest` estimators on the same data generating process as the one used in the tutorial page of the grf package (see https://github.com/grf-labs/grf#usage-examples). This is mostly for qualitative comparison and verification purposes among our implementation of variants of Causal Forests and the implementation in the grf R package.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DGP\\n\",\n    \"\\n\",\n    \"We use the following data generating process (DGP) from [here](https://github.com/grf-labs/grf#usage-examples):\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"X \\\\sim& \\\\text{Normal}(0,\\\\, I_{p})\\\\\\\\\\n\",\n    \"T =& \\\\text{Binomial}(1, .4 + .2 \\\\cdot 1\\\\{X[0] > 0\\\\})\\\\\\\\\\n\",\n    \"Y =& (X[0] \\\\cdot 1\\\\{X[0] > 0\\\\}) \\\\cdot T + X[1] + X[2] \\\\cdot 1\\\\{X[2] < 0\\\\} + \\\\epsilon, &\\\\; \\\\epsilon \\\\sim \\\\text{Normal}(0, 1)\\\\\\\\\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"We use $p=10$ and draw $n=2000$ samples from this DGP.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n = 2000\\n\",\n    \"p = 10\\n\",\n    \"X = np.random.normal(size=(n, p))\\n\",\n    \"def true_propensity(x):\\n\",\n    \"    return 0.4 + 0.2 * (x[:, 0] > 0)\\n\",\n    \"def true_effect(x):\\n\",\n    \"    return x[:, 0] * (x[:, 0] > 0)\\n\",\n    \"def true_conf(x):\\n\",\n    \"    return x[:, 1] + np.clip(x[:, 2], -np.inf, 0)\\n\",\n    \"T = np.random.binomial(1, true_propensity(X))\\n\",\n    \"Y =  true_effect(X) * T + true_conf(X) + np.random.normal(size=(n,))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Cross-Validated Forest Nuisance Models\\n\",\n    \"\\n\",\n    \"We use forest based estimators (Gradient Boosted Forests or Random Forests) as nuisance models. For the meta-learner versions of our forest based estimators, we also use a generic forest estimator even as a final model. The hyperparameters of the forest models (e.g. number of estimators, max depth, min leaf size) is chosen via cross validation. We also choose among Gradient or Random Forests via cross validation\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.sklearn_extensions.model_selection import GridSearchCVList\\n\",\n    \"from sklearn.linear_model import Lasso, LogisticRegression\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\\n\",\n    \"from sklearn.base import clone\\n\",\n    \"from econml.sklearn_extensions.linear_model import WeightedLasso\\n\",\n    \"\\n\",\n    \"def first_stage_reg():\\n\",\n    \"    return GridSearchCVList([Lasso(),\\n\",\n    \"                             RandomForestRegressor(n_estimators=100, random_state=123),\\n\",\n    \"                             GradientBoostingRegressor(random_state=123)],\\n\",\n    \"                             param_grid_list=[{'alpha': [.001, .01, .1, 1, 10]},\\n\",\n    \"                                               {'max_depth': [3, None],\\n\",\n    \"                                               'min_samples_leaf': [10, 50]},\\n\",\n    \"                                              {'n_estimators': [50, 100],\\n\",\n    \"                                               'max_depth': [3],\\n\",\n    \"                                               'min_samples_leaf': [10, 30]}],\\n\",\n    \"                             cv=5,\\n\",\n    \"                             scoring='neg_mean_squared_error')\\n\",\n    \"\\n\",\n    \"def first_stage_clf():\\n\",\n    \"    return GridSearchCVList([LogisticRegression(),\\n\",\n    \"                             RandomForestClassifier(n_estimators=100, random_state=123),\\n\",\n    \"                             GradientBoostingClassifier(random_state=123)],\\n\",\n    \"                             param_grid_list=[{'C': [0.01, .1, 1, 10, 100]},\\n\",\n    \"                                              {'max_depth': [3, 5],\\n\",\n    \"                                               'min_samples_leaf': [10, 50]},\\n\",\n    \"                                              {'n_estimators': [50, 100],\\n\",\n    \"                                               'max_depth': [3],\\n\",\n    \"                                               'min_samples_leaf': [10, 30]}],\\n\",\n    \"                             cv=5,\\n\",\n    \"                             scoring='neg_mean_squared_error')\\n\",\n    \"\\n\",\n    \"def final_stage():\\n\",\n    \"    return GridSearchCVList([WeightedLasso(),\\n\",\n    \"                             RandomForestRegressor(n_estimators=100, random_state=123)],\\n\",\n    \"                             param_grid_list=[{'alpha': [.001, .01, .1, 1, 10]},\\n\",\n    \"                                              {'max_depth': [3, 5],\\n\",\n    \"                                               'min_samples_leaf': [10, 50]}],\\n\",\n    \"                             cv=5,\\n\",\n    \"                             scoring='neg_mean_squared_error')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"GradientBoostingRegressor(min_samples_leaf=30, n_estimators=50,\\n\",\n       \"                          random_state=123)\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"model_y = clone(first_stage_reg().fit(X, Y).best_estimator_)\\n\",\n    \"model_y\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"RandomForestClassifier(max_depth=3, min_samples_leaf=10, random_state=123)\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"model_t = clone(first_stage_clf().fit(X, T).best_estimator_)\\n\",\n    \"model_t\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DML Estimators\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x1a07d0cd188>\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dml import CausalForestDML\\n\",\n    \"\\n\",\n    \"n_samples, n_features = X.shape\\n\",\n    \"subsample_fr_ = (n_samples/2)**(1-1/(2*n_features+2))/(n_samples/2)\\n\",\n    \"est = CausalForestDML(model_y=model_y,\\n\",\n    \"                      model_t=model_t,\\n\",\n    \"                      discrete_treatment=True,\\n\",\n    \"                      cv=3,\\n\",\n    \"                      n_estimators=4000,\\n\",\n    \"                      random_state=123)\\n\",\n    \"est.tune(Y, T, X=X).fit(Y, T, X=X, cache_values=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.NonParamDML at 0x1a07cee4708>\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dml import NonParamDML\\n\",\n    \"est2 = NonParamDML(model_y=model_y,\\n\",\n    \"                   model_t=model_t,\\n\",\n    \"                   cv=3,\\n\",\n    \"                   discrete_treatment=True,\\n\",\n    \"                   model_final=final_stage())\\n\",\n    \"est2.fit(Y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_test = np.zeros((100, p))\\n\",\n    \"X_test[:, 0] = np.linspace(-2, 2, 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"pred = est.effect(X_test)\\n\",\n    \"lb, ub = est.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"pred2 = est2.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAaoAAAEvCAYAAAAU8oWdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd5idVbnw/+/afU/vmcmUzKSHZCYhjWAgiYB0EFAURYoKCHrUoz8Rfr4e64EXlSOKqMhRaYINpAoK0VRISM+Qnkmm97pn97rePyYZUqbP3lPvz3XNxczzrOdZa0+Gfe+11v2spbTWCCGEEGOVYbQbIIQQQvRFApUQQogxTQKVEEKIMU0ClRBCiDFNApUQQogxTQKVEEKIMc002g3oS0ZGhi4sLBztZgghhIixnTt3tmitM3s6N6YDVWFhITt27BjtZgghhIgxpVRlb+dk6E8IIcSYJoFKCCHEmCaBSgghxJg2pueoehIMBqmpqcHn8412U8QkYbPZyMvLw2w2j3ZThJiUxl2gqqmpITExkcLCQpRSo90cMcFprWltbaWmpoaioqLRbo4Qk9K4G/rz+Xykp6dLkBIjQilFenq69OCFGEXjLlABEqTEiJK/NyFG17gMVCL6vve97/Hwww8P6pqEhIQYtUYIIT4ggWqcCofDo90EIYQYERKoBqmiooJ58+Zx5513Mn/+fC699FK8Xi979uxhxYoVlJSUcP3119Pe3g7AmjVruO+++1i+fDmzZ89m06ZNADz11FN89KMf5fLLL2fOnDl8//vf767juuuuY8mSJcyfP58nnnii+3hCQgLf+c53OO+889iyZQs/+MEPWLZsGQsWLOCuu+7i5G7Na9as4Wtf+xqrVq1i3rx5bN++nRtuuIFZs2bx7W9/u/t+DzzwAHPmzOGSSy7h8OHD3ccHer0QQowIrfWY/VqyZIk+04EDB846NpLKy8u10WjUu3fv1lprfeONN+pnn31WFxcX6/Xr12uttf6v//ov/dWvflVrrfXq1av117/+da211n//+9/1xRdfrLXW+sknn9TZ2dm6paVFezwePX/+fL19+3attdatra1aa919vKWlRWutNaD//Oc/d7flZDmttf7MZz6jX3311e46v/nNb2qttf7Zz36mc3JydF1dnfb5fDo3N1e3tLToHTt26AUL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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test), '--')\\n\",\n    \"plt.plot(X_test[:, 0], pred2, label='nonparamdml')\\n\",\n    \"plt.plot(X_test[:, 0], pred, label='forestdml (causal forest)')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb, ub, alpha=.4, label='honestrf_ci')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/latex\": [\n       \"$\\\\displaystyle 0.02469985268609504$\"\n      ],\n      \"text/plain\": [\n       \"0.02469985268609504\"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"np.mean((true_effect(X) - est.effect(X))**2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/latex\": [\n       \"$\\\\displaystyle 0.041538512990649396$\"\n      ],\n      \"text/plain\": [\n       \"0.041538512990649396\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"np.mean((true_effect(X) - est2.effect(X))**2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### First Stage Learned Models\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Model T\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('honestrf')\\n\",\n    \"for mdls in est.models_t:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict_proba(X_test)[:, 1])\\n\",\n    \"plt.plot(X_test[:, 0], true_propensity(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('rf')\\n\",\n    \"for mdls in est2.models_t:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict_proba(X_test)[:, 1])\\n\",\n    \"plt.plot(X_test[:, 0], true_propensity(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Model Y\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('honestrf')\\n\",\n    \"for mdls in est.models_y:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict(X_test))\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test) * true_propensity(X_test) + true_conf(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('rf')\\n\",\n    \"for mdls in est2.models_y:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict(X_test))\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test) * true_propensity(X_test) + true_conf(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Interpretability of CATE Model of NonParamDML with SHAP\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \" 97%|=================== | 97/100 [00:41<00:01]       \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"import string\\n\",\n    \"\\n\",\n    \"feature_names = list(string.ascii_lowercase)[:X.shape[1]]\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"shap_values = est.shap_values(X[:100], feature_names=feature_names)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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jlHARrJu79693HPPPfz4xz9m9erVbNiwgUWLFmXU9r777qO8vLybeygiIiIiItJ33HXXXWzcuDHb3TgkL730Eo899li2u9EjFLCRrFu5ciUjR47k1ltv5cQTT+SFF15g5syZGbU9+eSTefHFF7u5hyIiIiIiIiI9SwEbybrq6mpKSkoA2L59O42NjQwbNiyjthMmTGDTpk3U1NR0ZxdFREREREREepRu6y1Z9cADD7Bp0ya2bNnC0qVLmTFjBiNHjkwt37p1Kw899BA33HAD/fr1Y9euXfzxj3/ki1/8IkVFRbhcLoYMGcKGDRs45phjsrcjIiIiIiIivcj27dtZsmQJNTU1TJw4kfPOOw+Xy0VDQwOPP/4427ZtI5FIMGLECM477zyCwSAAb775JitWrKCurg6/38/pp5/OlClTAHjjjTdYuXIltbW1DB06lM985jP079//gPd+8MEHGT9+PCeccELqtbvvvpvZs2czadIklixZwgcffEA4HGbgwIHMnTuXsrKyA7azadMmHnvsMb75zW+mXrvrrrs4//zzGT16NJZlsXLlStauXUtjYyOjR4/mvPPOIy8vr6uHs1sow0ay6uqrr6asrIx58+Zx6623snv3bgoLC1PLhw8fznHHHccTTzxBNBrl8ccf5/TTT6eoqCi1TnFxMbt3785G90VERERERHqld955hyuvvJKvf/3r7Nu3j5dffhkAy7I45phj+MY3vsE3vvENXC4XzzzzDACRSIQlS5bwuc99jltvvZXrrruOwYMHA7B+/XpeeeUVLr/8cr7zne9QVlbGo48+etD3njx5Mu+8807q+Z49e6iurmbcuHEADB06lBtvvJEFCxYwefJkHn74YWKxWIf3cfXq1axfv55rr72Wb33rW/h8PhYvXtzh7WSLAjaSUxobG/F6vS1emz17No2Njdx3330EAgGOP/74Fss9Hg+NjY092U0REREREZFe7YQTTqBfv37k5eUxa9asVADF7/dzxBFH4Ha78Xq9zJo1i02bNqXaGWMoLy8nGo0SCARS5S3WrFnDzJkzKS4uxuFwcMopp7Br1y6qqqoOeO+JEye2WPb2228zadIkXC57EtCUKVPw+/04HA5OPvlkYrEYe/fu7fA+rlmzhtNPP51gMIjL5WL27Nm8//77JBKJDm8rGzQlSnJKXl4e4XC4xWtOp5NjjjmGJUuWcPbZZ2OMabE8Eong8/l6spsiIiIiIiK9WtMUJ4B+/fql6oJGo1GWLl3KJ598kvpiPBwOk0gk8Hg8XHrppaxatYqnnnqK4cOHc/bZZ1NUVER1dTVLly7l2WefTW3XsixqamoOmBbl9XoZP3487777LjNnzuTdd9/lM5/5TGr5qlWrWLduHTU1NRhjCIfD1NfXd3gfq6ur+dvf/tbiGtLhcFBbW9ti/3OVAjaSUwYNGsS+fftavBYKhVixYgXHHnsszz77LNdff30q8gp2+lzTnEkRERERERFpXygUSv1cXV1NIBAA7GDJvn37uP766ykoKGDXrl3cc889qXXHjh3L2LFjiUajLF++nKeeeoovfOELBINBTjnllIyvzY466ihWrFhBWVkZsViMUaNGAbB582ZWrlzJVVddRUlJCcYYfvKTnxx0G263m2g0mnqeSCSoq6tLPQ8Gg1xwwQWMGDEi84HJIZoSJTll3LhxbN68OfXcsiyeeOIJjj32WM4//3wKCgpa3MY7Fouxc+dOxowZk43uioiIiIiI9EqvvfYaoVCIhoYGXnnlFY466ijAnsHgcrnw+Xw0NDTw0ksvpdrU1tby4YcfptbxeDw4HHZYYdq0afzzn/+kvLwcsMtdvPfee62+/7hx46iqquLFF1/kyCOPTGXBRCIRHA4H+fn5JBIJVqxYccAsjCaFhYXEYjE++ugj4vE4L7/8MvF4PLV82rRpLF++PDX1qq6ujvXr1x/6oPUwZdhIThkyZAher5dt27YxbNgwVq9eTV1dHaeffjrGGC688ELuvvtuxo8fT1lZGR9++CEjR45MRYNFRERERESkfZMnT+bPf/4zNTU1TJgwgVmzZgEwffp0Hn30Ue68804CgQAnnXRSKshhWRarVq3isccewxjD4MGDOffccwGYNGkSkUiERx55hOrqarxeL2PGjOHII4886Pu7XC4mTZrEG2+8wRlnnJF6fcyYMYwdO5Zf/epXuN1uTjrpJPr163fQbfh8Ps4991yeeuopLMtixowZLaY6TZ8+HSC1n/n5+Rx11FFMnDix8wPYA4xlWdnugxxe2j3gNmzYwOuvv878+fPb3dh9993HBRdckCp01QrT1kIREREREZE+TBf9mcupa0cFbKSnZeOAy6lfOhERERERkR6ki/7M5dS1o2rYiIiIiIiIiIjkGAVsRERERERERERyjAI2IiIiIiIiIiI5RgEb6Sq7sOdGtvfIhkz6tStLfRMRERERERE5gIoOS1fpCwdSThWYEhERERER6QJ94Vqtp+TUNaEybERERERERET6rt3Z7kAvkXPjpAwb6Sp94UDKqWiqiIiIiIiIHL6UYSMiIiIiIiIikmMUsJEeFY1Guf322xk9ejQej4dhw4Zx8803U1NT02VtX3jhBebMmcOgQYPwer0MGTKEiy66iLVr13bXbomIiIiIiIh0KU2Jkq6S0YH0+c9/ngcffBCHw8G4cePYuHEj0WiUU089leXLl+NwtB5DzKTt+vXrOfroo4lEIgwYMICRI0fy3nvvEYlECAaD7N69G5/P19pbaEqUiIiIiIiI5ARl2EiPWbduHQ8++CAAv/jFL1i/fj2PPvooACtWrOCJJ57odNtXX32VSCQCwOLFi1m3bh233XYbADU1NVRWVnbLvomIiIiIiIh0JQVspMcsWbIk9fMll1wCwLnnnpvKeFm2bFmn206fPh23251aPnXqVG677TYCgQB33nknQ4YM6cI9EhEREREREekeCthIj9m6dWvq55KSEgAcDgdFRUUAbNmypdNtJ06cyHPPPUdxcTGVlZW88cYbRCIRhg4dylFHHdW1OyQiIiIiIiLSTRSwkW6xbt06pk+f3uLRWr2kTOooZdp2+/btXHfddezZs4c///nP1NbWsmDBAtavX8/555/Pp59+2vGdEREREREREelhCthItwiFQqxevbrFY8SIEanl5eXlACQSCfbt2wfA8OHDW91epm1/+9vfsmHDBvx+P1deeSX5+flcffXVgH2XqRUrVnThXoqIiIiIiIh0DwVspFvMnj0by7JaPObOnZta3lQwePHixTQ2NgKklm/fvp2JEycyceJEHn/88RbL2mtbXV0NQH19Pe+99x4Aa9asSbXNz8/v+p0VERERERER6WK6rbd0lYwOpCuuuIKHHnoIh8PB+PHj2bBhA9FolJkzZ7JixQocDgebNm1i1KhRAPzhD3/gmmuuybjtCy+8wJw5c7AsC7/fz5gxY3j//feJx+MMHjyYDz/8kGAw2Fr3dFtvERERERERyQnKsJEe9cADD/CDH/yAESNGsGHDBoqKirjppptYvHgxDkfbh2Mmbc844wyeeeYZzjzzTAKBAB999BHDhg3j6quvZuXKlW0Fa0RERERE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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"][0], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DRLearner\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"GradientBoostingRegressor(min_samples_leaf=30, n_estimators=50,\\n\",\n       \"                          random_state=123)\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"model_regression = clone(first_stage_reg().fit(np.hstack([T.reshape(-1, 1), X]), Y).best_estimator_)\\n\",\n    \"model_regression\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.ForestDRLearner at 0x1a07f5b6248>\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dr import ForestDRLearner\\n\",\n    \"\\n\",\n    \"est = ForestDRLearner(model_regression=model_y,\\n\",\n    \"                      model_propensity=model_t,\\n\",\n    \"                      cv=3,\\n\",\n    \"                      n_estimators=4000,\\n\",\n    \"                      min_samples_leaf=10,\\n\",\n    \"                      verbose=0,\\n\",\n    \"                      min_weight_fraction_leaf=.005)\\n\",\n    \"est.fit(Y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dr._drlearner.DRLearner at 0x1a006e87688>\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dr import DRLearner\\n\",\n    \"est2 = DRLearner(model_regression=model_y,\\n\",\n    \"                 model_propensity=model_t,\\n\",\n    \"                 model_final=final_stage(),\\n\",\n    \"                 cv=3)\\n\",\n    \"est2.fit(Y, T.reshape((-1, 1)), X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_test = np.zeros((100, p))\\n\",\n    \"X_test[:, 0] = np.linspace(-2, 2, 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"pred = est.effect(X_test)\\n\",\n    \"lb, ub = est.effect_interval(X_test, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"pred2 = est2.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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XwAJIYQYvY51evEGR+ZZxVhmx60H+l3XRCn1S0D+5D/JLbfcwi233JLsagghRNz2N7tG7F6yYoIQQogeTn+ITk9wxO4nISSEEKKH2z+yj2hICAkhhOjhCUgICSGESBLPCE1IOEFCSAghRA9pCSXZz3/+c2bPns2NN944LNevra3lueee6/P4ypUrOf35qf6sXbuWK6+8stdj27dv59Zbb427jonU155EI/1z3rVrl8xWFCIGbgmh5Pr1r3/Nq6++yrPPPhtT+XjXWRsohBLpgQce4Mtf/vKI3CteI/1znjdvHvX19Rw7diyu6wgx3niDEkJJc8cdd1BdXc1VV13Fww8/TGdnJ9dccw2VlZUsXbqUnTt3AtFdSm+//XZWrVrFzTffTFtbGx/96EdZvHgxixcv5p133gHgX//6FwsWLGDBggWcc845uFwu7r33XtatW8eCBQt4+OGH8fl8fOITn6CyspKPf/zj+Hy+nvqkpaVxzz33sGjRIi6++GI2bdrEypUrmTJlCq+88kq/78XlcrFz507mz58PgNvt5jOf+Qzz5s2jsrKSF154AYA777yTqqoqKioquO+++3rOLysro709uurSli1bWLlyZZ/vye12c9FFF7Fw4ULmzZvHyy+/POp+zgAf+chHeP755wf+RRBinIroCl9QH9F7xrWK9kj64aYfsr9zf0KvOStnFvcsuafP44888givvfYab731Fnl5eXz5y1/mnHPO4aWXXuKf//wnN998Mzt2RBeN2Lp1K+vXr8dut3PDDTfw9a9/nQsuuIBjx46xevVq9u3bx0MPPcSvfvUrli1bhtvtxmaz8eCDD/LQQw/x17/+FYCf/OQnpKSksHPnTnbu3MnChQt76uPxeFi5ciU//OEPufbaa/n2t7/NG2+8wd69e/n0pz99xvYMJ9uyZQtz587t+f4HP/gBmZmZ7NoV3R7jxKZ8999/Pzk5OUQiES666CJ27txJZWVln9ft7T0BvPjii2RkZNDe3s7SpUu56qqr+lzFOxk/Z4CqqioefPBB7r777j7fnxDjmWeEW0EwikNoNFi/fn1Pi+HDH/4wHR0dOBwOILofj91uB2DNmjXs3fvB9kpOpxOXy8WyZcv4xje+wY033sh1111HSUnJGfd4++23+cpXvgJAZWXlKQFgsVi49NJLgWh3ktVqxWw2M2/evFP2LepNU1MT+fn5Pd+vWbPmlFZAdnY2AH/4wx949NFHCYfDNDU1sXfv3n5DqLf3FAqF+Na3vsXbb7+NwWCgoaGBlpYWCgsL+63jCSPxcwYoKCigsbExpjoJMR6N9KQEGMUh1F+LZaT0tvzdib/uU1M/WNBP13U2bNjQ82F5wr333ssVV1zBq6++ytKlS1mzZk2v9+mrxWA2m3uOnbzvTyx7/tjt9lP2H1JKnXGfmpoaHnroITZv3kx2dja33HJLzzkmkwldjzbLT75Ob+9p48aNtLW1sXXrVsxmM2VlZaecM5CR+jn7/f4zzhVCfMATGNnp2SBjQv1asWJFz8D52rVrycvLIyMj44xyq1atOmW17BNdSUeOHGHevHncc889VFVVsX//ftLT03G5PliX6eR77N69u2c8ZKhmz57N4cOH+6xjV1cXTqeT1NRUMjMzaWlp4e9//3vP8bKyMrZu3QrQ00rp6z05HA4KCgowm8289dZbHD16NK66jsTPGeDgwYOndFEKIU6VjJaQhFA/vvvd77JlyxYqKyu59957eeqpp3ot9/Of/7yn3Jw5c3jkkUcA+OlPf8rcuXOZP38+drudyy67jMrKSkwmE/Pnz+fhhx/mzjvvxO12U1lZyY9+9COWLFmSkLrPmjULh8PR80H87W9/m66urp76vPXWW8yfP59zzjmHiooKPvvZz7Js2bKe8++77z6++tWvsnz58p7dXvt6TzfeeCNbtmyhqqqKZ599llmzZsVV15H4OUN0u/QrrrgirroJMZ4kI4QG3E9ouJzt+wmNBg8//DDp6elJf1ZoNAgEAlx44YWsX78ek+nMXmj53RMC3tjbQpsrcMprw72fkLSEzmJ33nlnzzjSeHfs2DEefPDBXgNICBElExNEQtlsNm666aZkV2NUmD59OtOnT092NYQYtXRd4QvJxAQhhBBJ4AmGScbojISQEEKIEdvO+3QSQkIIIUZ84dITJISEEEL0PilBKczt+4b1vqN6YsJz7yV2xeMbzi0dsExtbS1XXnklu3fvTui9B/LAAw/wrW99q8/jf/zjH/nOd75DYWEhb731VszXvfXWW/nGN77BnDlzElFNIcRZ6vTVEgyRAEv2fJ+JTa/C59+GCRXDcl9pCY0SDzzwQK+vK6XQdZ3HH3+cX//613EFEMBjjz0mASSEGNDJLSGbv42LN32WKQ2v0F31VcgfvmfoJIR6EYlEuO2226ioqGDVqlX4fD527NjB0qVLqays5Nprr+1ZhXrlypXcc889LFmyhBkzZrBu3bqea9x1110sXryYyspK/ud//geILiy6YsUKFixYwNy5c1m3bh333nsvPp+PBQsWcOONN1JbW8vs2bP5whe+wMKFC/nBD37A+vXrueOOO7jrrrv6rPM3v/nNnq0afvGLX/TUL55N8oQQ49OJFbSzHXu49N1PkOU6xLoF/4/uJf8OhuGLCgmhXhw6dIgvfvGL7Nmzh6ysLF544QVuvvlmfvjDH7Jz507mzZvH9773vZ7y4XCYTZs28dOf/rTn9ccff5zMzEw2b97M5s2b+e1vf0tNTQ3PPfccq1evZseOHbz//vssWLCABx98ELvdzo4dO3rWUDtw4AA333wz27dv57777utZEufHP/5xr3V+9NFHqampYfv27ezcuXPYdiwVQpx9lFL4js+OO//9/0BpGq8vfZq6olXDfu9RPSaULOXl5SxYsACARYsWceTIEbq7u7nwwgsB+PSnP83111/fU/66667rKXtii4XXX3+dnTt38qc//QkAh8PBoUOHWLx4MZ/97GcJhUJcc801Pfc53eTJk1m6dGnMdV6zZg133HFHz4oAOTk58b1pIcS45Q1G0I8/I5Tib+bwpOvpzohvDcjBkhDqxclL3RiNRrq7u2MqbzQae7ZYUErxi1/8gtWrV59R/u233+Zvf/sbN910E3fddRc333zzGWVO3sIgFr1t1SCEELE4MR6k6SHMER9B85mr2A8X6Y6LQWZmJtnZ2T3jPc8880xPq6gvq1ev5je/+Q2hUAiIbiPg8Xg4evQoBQUF3HbbbXzuc59j27ZtQHTvoBNlB2PVqlU88sgjPSHY2dk56GsJIcaXE88IWUJOgBENoVHdEoplSvVIeeqpp7jjjjvwer1MmTKFJ554ot/yt956K7W1tSxcuBClFPn5+bz00kusXbuWH//4x5jNZtLS0nj66acBuP3226msrGThwoXcf//9cdfv1ltv5eDBg1RWVmI2m7ntttv40pe+NKj3KoQYX06slmANRXc0DpozR+zespWDEMjvnhjfNhzpoKbdQ17XDlZtvIm3qn5DU/4FgGzlIIQQYpg1O32AdMeJGPzjH//gnnvuOeW18vJyXnzxxSTVSAgxlnW4A/iCOgCWJHTHSQiN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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test), '--')\\n\",\n    \"plt.plot(X_test[:, 0], pred2, label='nonparamdml')\\n\",\n    \"plt.plot(X_test[:, 0], pred, label='forestdml (causal forest)')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb, ub, alpha=.4, label='honestrf_ci')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### First stage nuisance models\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Model T\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('honestrf')\\n\",\n    \"for mdls in est.models_propensity:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict_proba(X_test)[:, 1])\\n\",\n    \"plt.plot(X_test[:, 0], true_propensity(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('rf')\\n\",\n    \"for mdls in est2.models_propensity:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict_proba(X_test)[:, 1])\\n\",\n    \"plt.plot(X_test[:, 0], true_propensity(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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c+blkX/d9cSMHUvm734XsH5qmmvIrc1lXNq4gPURaErUREQCoOr116n7/HMAIhK6ueSirTS/zlATEZEezN3cTO68+dDSwpB77yEiNjZgfW2o2ACgGTUREflO47p1FPz+JsqefBK/1FYq9Qw2Ks0vIiI9WeOqVTStW8eg227rehVkL/X0io/gh/L8IiLyHVdtLXlz5xGZksLg22/3z9r70k2QOBBi+3W/LRERkRCJnzaNUe+/hyMzM+B95ZTnkBqbSnpcu8c7e+XzzWWs2FnR4fUDMhI5cULgfhYlaiIifrLrvLSdOxn+9ye7ty9td2UbtT9NRER6rKYtW2nauJHkk04MSpIGnhm1salju/zC1O22XP3c15TWNnd4z+kTBylRExHpCeo++eS789KmTfNfw6UbYPyZ/mtPREQkSNwNDeTNmUNLaSkJs2YSmZgY8D6dbiebKjfxk/E/6XIbOUU1lNY2c8fZB3PmlKx274kIYMVKUKImIuI3CUceSda995J04gn+a7SuDBoqVJpfRER6HGsthX+4haZNmxj62GNBSdIAtlRuwel2MrZ/1/enfbapFICjx2QQ64j0V2g+UTEREZFuctXW0ZybizGG5JNP6vp5ae1pKySipY8iItLDVL70ElWvv076L39J4hGzgtKntZaHVz1MlIli8oDJXW7n002ljMpIYFC/OD9G5xslaiIi3WCtpfDmm9l27g9xVVf7v4NdpfmVqImISM/hLCig6I9/ImHmTNJ/eUXQ+v1nzj/5YMcHzDlkDoMTB3epjeYWN8u2lHPEAV0vROIPWvooItINlf98keq33iJj7hwik5P930HpBoiMgZRh/m9bREQkQByDBjHotttImDkDExmcpYMbKjaw8H8LmZU1i4smXNTldlbsqKDB6WKmEjURkZ6pcf16im69lYSZM0mbPXv/N1fuhJL1vney83+QNgoi/DfIba7czNqytV7ff/yw44l3xPutfxER6b2stThzc4keOpR+p58WtH4bWhq49qNrSY5J5tZZtxJhur5w8LNNpUQYmD4yzY8R+k6JmohIF7hq68ibM5fIfv0YvGjh/velWQtPnwllm7rW2cTzuvZcO3ZW7+T8N8+n0dXo9TPvn/u+EjUREfFK+ZN/p+Tee8l+8Z/EHnigz88/v/553t/+vu/9NpaztWorj5zwCGlx3UuwPt1UysQh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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Model Y\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('honestrf')\\n\",\n    \"for mdls in est.models_regression:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict(np.hstack([X_test, np.ones((X_test.shape[0], 1))])))\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test) + true_conf(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('rf')\\n\",\n    \"for mdls in est2.models_regression:\\n\",\n    \"    for mdl in mdls:\\n\",\n    \"        plt.plot(X_test[:, 0], mdl.predict(np.hstack([X_test, np.ones((X_test.shape[0], 1))])))\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test) + true_conf(X_test), '--', label='truth')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Interpretability of CATE Model of DRLearner with SHAP\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \" 98%|===================| 98/100 [00:24<00:00]        \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"shap_values = est.shap_values(X[:100], feature_names=feature_names)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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Td3jOE7y6w5jzMPYpt/94g+qLLWn3rtjX8my/nTPd1q76t0YczBwJ/Bpx3HKO7KvtCibutc9n50O3buO47xojBlvjCnt6L6SoVN1Z4wpdRxnV3++53t7N7RHgQsT8xcC/2i8gTHGAP8DvO84zm86ur80K6t6azS2xdnAOy1tK01ke8/qnu+89tTdSmCiMWasMSYAzE/sp/u+Y1qsR5dHgQuMdRRQkege2J59pWWdrntjTL4xphDAGJMPnIzu8/bK5r7VPZ+dTtef7vmstFnvxpjRwEPAlx3HWdORfaVVna573fNZa0/dT0h8fsXYp40GgPL27Cst6lC9u5T3+3u+q0fM3pcTUAL8G/gw8bU4sXw48K/E/NHYZmZvAW8mptNa219T9vWeeH0vsBU7IOQm4NLE8r8DbyeuyaPAsJ4+p94ydUHd657v/ro/DfvUxbXA913L+91939mnobVUj8CVwJWJeQP8IbH+bWBGW9dAU/fWPfYpI/9JTO+q7ru83ocmfp5XAnsT86GW9tXU/XWve77b6/1OYA/pv99Xtbavpu6ve93z+6TuFyTq9k3gZeDo1vbV1PX17v77tb/f88nH8omIiHSpZJ/vwsLC5vqKi4iIiIjsV/T3a1pv74YmIiIiIiIiIiJdSGGRiIiIiIiIiIikKCwSEREREREREZEUhUUiIiIiIiIiIpKisEhERERERERERFL6bFhkjPlKT5ehv1Ld9wzVe89R3fcc1X3PUL33HNV9z1C99xzVfc9R3fcM1XvPUd1n6rNhEaAL3XNU9z1D9d5zVPc9R3XfM1TvPUd13zNU7z1Hdd9zVPc9Q/Xec1T3Ln05LBIRERERERERkQ4yjuP0dBnadOqppzq7du3q0D47d+5k0KBB3VQiaY3qvmeo3nuO6r558XgcAI+n+/4vobrvGar3nqO67xmq956juu85qvueoXrvOTt37qSkpATo3r9f9zevvfbaU47jnNp4ea8Ii4BeUUgREUmrqqoCoLCwsIdLIiIiIiLStn7696tpbmH/ictERERERERERKRNCotERERERERERCRFYZGIiIiIiIiIiKQoLBIRERERERERkRRfTxdARERERERERKSn9bOBrVullkUiIiIiIiIiIpKisEhERERERERERFIUFomIiIiIiIiISIrCIhERERERERERSVFYJCLSW8UdiMWbLncc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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"][0], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values[\\\"Y0\\\"][\\\"T0_1\\\"])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# OrthoForest\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:   45.3s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 112 tasks      | elapsed:   48.1s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 272 tasks      | elapsed:   53.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 496 tasks      | elapsed:  1.0min\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 784 tasks      | elapsed:  1.2min\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:  1.4min finished\\n\",\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:    0.9s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 112 tasks      | elapsed:    5.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 272 tasks      | elapsed:   12.9s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 496 tasks      | elapsed:   25.0s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 784 tasks      | elapsed:   44.6s\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed:  1.1min finished\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.orf._ortho_forest.DROrthoForest at 0x1a00ac3db48>\"\n      ]\n     },\n     \"execution_count\": 32,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.orf import DROrthoForest\\n\",\n    \"from sklearn.linear_model import LogisticRegressionCV\\n\",\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"\\n\",\n    \"est3 = DROrthoForest(model_Y=Lasso(alpha=0.01),\\n\",\n    \"                     propensity_model=LogisticRegression(C=1),\\n\",\n    \"                     model_Y_final=WeightedLassoCV(cv=3),\\n\",\n    \"                     propensity_model_final=LogisticRegressionCV(cv=3),\\n\",\n    \"                     n_trees=1000, min_leaf_size=10)\\n\",\n    \"est3.fit(Y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 8 concurrent workers.\\n\",\n      \"[Parallel(n_jobs=-1)]: Done  16 tasks      | elapsed:  1.2min\\n\",\n      \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:  1.4min finished\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"pred3 = est3.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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XNiwnt3s2bO54447mDlzJsOHD2fLli1ceumlDB48mPvuu6/hen//+98ZOnQoZ511Fvv37294ffbs2fzlL39h1qxZPPfcc+36+xRCdC92l4RQpzt48CC33HILu3fvJioqig8++IDrrruOxx57jJ07dzJ69OhGoeLxeNi8eTPPPvtso9c3b97MypUr2b59O++9917Drqmvvvoq27ZtY+vWrSxdupSKigoAbDYbo0aNYtOmTUyfPp1bb72VLVu2sGvXLhwOB5988knDtQMCAvj+++9ZtGgRF110Ec8//zy7du3i9ddfp6Kigm3btvHOO+/w008/8e9//5stW7Y0eo/V1dV899133Hnnne35qxRCdCNeXeFw6R16zxatot2RHtv8GPsq9/n1msNihnHPpHuaLZeamkp6ejoA48ePJzMzk+rqambNmgXAb3/7W371q181lL/00ksbyubk5DS8fvbZZxMbG9tQZt26dUyYMIGlS5fy4YcfApCXl8fBgweJjY09bvuGNWvW8Pjjj2O326msrGTkyJFccMEFQP12EgCjR49m5MiRJCYmAjBgwADy8vJYu3Ytl1xyCSEhIY3KH3HFFVf4+FsTQvQUtg5uBUEXDqHOFBj4y6qxRqOR6upqn8objcZGz1iO3aZB0zS+/fZbVq9ezcaNGwkJCWH27Nk4nU6g8fYNTqeTm2++ma1bt9KvXz+WLFnSUO7oexoMhkb1NRgMDXU40TYR0Hg7CiGEgI4flABdOIR8abF0lMjISKKjo1m7di0zZszgrbfeamgVncxXX31FZWUlwcHBfPTRR7z66qsUFBQQHR1NSEgI+/bt44cffmjy3COBExcXh9Vq5f333+fyyy/3uc4zZ85k/vz5LF68GI/Hw3//+19+//vf+3y+EKLnsdV17PBs6MIh1NW88cYbLFq0CLvdzoABA3jttdeaPWf69Olce+21ZGRkcPXVVzNhwgRGjx7NihUrSEtLY+jQoUyZMqXJc6OiorjxxhsZPXo0KSkpTJw4sUX1HTduHFdccQXp6en079+fGTNmtOh8IUTP0xktoWa3cmgvp/pWDq+//jpbt25l2bLut67rqfT/IITw3YaMcnIq7I1ea++tHGR0nBBCCKDjV0sA6Y5rN/Pnz2f+/PmdXQ0hhPBZZ3THSUtICCEEuq5wuDu+JSQhJIQQApvLQ2cMEZAQEkII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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(X_test[:, 0], true_effect(X_test), '--')\\n\",\n    \"plt.plot(X_test[:, 0], pred, label='forestdr')\\n\",\n    \"plt.plot(X_test[:, 0], pred2, label='nonparamdr')\\n\",\n    \"plt.plot(X_test[:, 0], pred3, label='discreteorf')\\n\",\n    \"plt.fill_between(X_test[:, 0], lb, ub, alpha=.4, label='forest_dr_ci')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Generalized Random Forests.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Generalized Random Forest Module: Use Cases and Examples\\n\",\n    \"\\n\",\n    \"Causal Forests and [Generalized Random Forests](https://arxiv.org/pdf/1610.01271.pdf) are a flexible method for estimating treatment effect heterogeneity with Random Forests. The `econml.grf` module implements a high-performance Cython version of the [`grf`](https://github.com/grf-labs/grf) R-package, with support for CausalForests, IVForests and RegressionForests. The module provides estimators that adhere to the scikit-learn fit and predict API, as well as providing methods for uncertainty quantification and confidence intervals.\\n\",\n    \"\\n\",\n    \"Within the EconML SDK we use these estimators as final models for CATE estimation, such as in the case of `econml.dml.CausalForestDML`, where we combine a Causal Forest with Double Machine Learning, to residualize the treatment and outcome and call the `econml.grf.CausalForest` on the residuals. Similarly, the `econml.dr.ForestDRLearner` uses an `econml.grf.RegressionForest` as a final stage estimator on the doubly robust targets estimated by the first stage. The estimators here should primarily be used in conjunction with CateEstimators and not as standalone, but we provide here examples of their direct usage functionality.\\n\",\n    \"\\n\",\n    \"The EconML SDK implements the following Generalized Random Forest variants:\\n\",\n    \"\\n\",\n    \"* `CausalForest`: suitable for many continuous or discrete treatments, when there is no unobserved confounding\\n\",\n    \"\\n\",\n    \"* `CausalIVForest`: suitable for many continuous or discrete treatments, when there is unobserved confounding and access to an instrument\\n\",\n    \"\\n\",\n    \"* `RegressionForest`: an analogue of `sklearn.ensemble.RandomForestRegressor`, but with support for confidence intervals.\\n\",\n    \"\\n\",\n    \"If you also have multiple outcomes, then the class `econml.grf.MultiOutputGRF`, is a wrapper class that wraps any generalized random forest and enables support for multiple outcomes by fitting a separate forest for each target outcome.\\n\",\n    \"\\n\",\n    \"Our estimators provide support for the heterogeneity criterion as outlined in [Generalized Random Forests](https://arxiv.org/pdf/1610.01271.pdf), using `criterion='het'`, as well as a mean squared error criterion that penalizes high-variance splits, using `criterion='mse'`.[Generalized Random Forests](https://arxiv.org/pdf/1610.01271.pdf).\\n\",\n    \"\\n\",\n    \"Uncertainty quantification and confidence intervals is computed via the Bootstrap-of-Little-Bags approach outlined in [Generalized Random Forests](https://arxiv.org/pdf/1610.01271.pdf).\\n\",\n    \"\\n\",\n    \"The tree data structure that is used to store each tree is compatible with `sklearn.tree._tree.Tree` and so scikit-learn functionalities on trees can be applied to our trained trees (e.g. tree plotting).\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"## Notebook Contents\\n\",\n    \"\\n\",\n    \"1. [Causal Forest: Heterogeneous causal effects with no unobserved confounders](#1.-Causal-Forest:-Heterogeneous-causal-effects-with-no-unobserved-confounders)\\n\",\n    \"2. [Causal IV Forest: Heterogeneous causal effects with unobserved confounders](#2.-Causal-IV-Forest:-Heterogeneous-causal-effects-with-unobserved-confounders)\\n\",\n    \"3. [Regression Forest: Random Forest Regressor with confidence intervals](#3.-Regression-Forest:-Random-Forest-Regressor-with-confidence-intervals)\\n\",\n    \"4. [Combining with Double Machine Learning](#4.-Combining-with-Double-Machine-Learning)\\n\",\n    \"6. [Customer Linear Moment Forest](#5.-Custom-Linear-Moment-Forest)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.grf import CausalForest, CausalIVForest, RegressionForest\\n\",\n    \"from econml.dml import CausalForestDML\\n\",\n    \"import numpy as np\\n\",\n    \"import scipy.special\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from sklearn.tree import plot_tree\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Causal Forest: Heterogeneous causal effects with no unobserved confounders\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n_samples = 2000\\n\",\n    \"n_features = 10\\n\",\n    \"n_treatments = 1\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]**2 + 1, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]>0, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([(X[:, [0]] > 0) * X[:, [0]],\\n\",\n    \"                       np.ones((X.shape[0], n_treatments - 1)) * np.arange(1, n_treatments).reshape(1, -1)])\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"T = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    T[:, t] = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"y = np.sum(true_te(X) * T, axis=1, keepdims=True) + np.random.normal(0, .5, size=(n_samples, 1))\\n\",\n    \"X_test = X[:min(100, n_samples)].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), min(100, n_samples))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = CausalForest(criterion='het', n_estimators=400, min_samples_leaf=5, max_depth=None,\\n\",\n    \"                   min_var_fraction_leaf=None, min_var_leaf_on_val=True,\\n\",\n    \"                   min_impurity_decrease = 0.0, max_samples=0.45, min_balancedness_tol=.45,\\n\",\n    \"                   warm_start=False, inference=True, fit_intercept=True, subforest_size=4,\\n\",\n    \"                   honest=True, verbose=0, n_jobs=-1, random_state=1235)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"CausalForest(criterion='het', min_var_leaf_on_val=True, n_estimators=400,\\n\",\n       \"             random_state=1235)\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(X, T, y)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"point, lb, ub = est.predict(X_test, interval=True, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"point = est.predict(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for t in range(n_treatments):\\n\",\n    \"    plt.plot(X_test[:, 0], point[:, t])\\n\",\n    \"    if est.inference:\\n\",\n    \"        plt.fill_between(X_test[:, 0], lb[:, t], ub[:, t], alpha=.4)\\n\",\n    \"    plt.plot(X_test[:, 0], true_te(X_test)[:, t])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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u+++G4CbbrqJVCrFjBkzePbZZ8nLy9vlOCVJqioWaiRJklQhX375Jf/xH/9B165dyc/PL3v+F7/4Bd27d+eEE05g4sSJAIwbN457772XVCrFggULdnqbLVq0oEGDBt/b5l//+heHHXYYAJ07d+bpp58GoH379qxatQqAVatW0aJFCwCmTp3Kyy+/TM+ePfnJT37C2rVrdzo+SZKqmoUaSZIkVcgHH3zALbfcwgsvvMB7773H66+/ztNPP82yZcuYPXs2c+bMYcKECXz66aeMGjWKc845p6w3yzcVFhaSSqW2WaZMmbJTcbVu3Zp58+YB8Pjjj1NcXAzAGWecwc9//nPat2/P3Llz6d+/PwBvv/02RxxxBLNmzeLggw8uNy23JEnplp3uACRJklQztG3bliZNmgBw8MEHs3LlShYuXMj8+fNJpVJA0uvm/fff/971FBQUUFBQUGVx3X333Vx11VVs3LiRDh06UFpaCiTThM+YMYPDDjuMSZMmcdVVV3HHHXeQk5PDaaedBkC/fv0YNWpUlcUiSdKuslAjSZKkCgmh/CzUMUaOPvpo8vLymDBhAgCbNm0iOzubt9566zsH/y0sLKSwsHCb5y+99FIGDhxY6bjatWvH448/XraOs88+u+y1Zs2aAdCyZcuynjYnnngi8+fP5+STT2bevHm0bdu20tuUJKm6WKiRJEnSTjvllFNYsGAB3bp1Izs7m4YNGzJ16lRyc3P53e9+x8CBA7n22ms59thjy95TmR4106ZN4ze/+Q0rVqzg5JNPZsiQIVx00UWMGzeOY489lj59+vDb3/6WqVOnEkKgf//+9OrVC4Dx48dzyimn0KhRI0pKSsqKSePGjePCCy/k5ptvpnHjxtstGkmSlC4hxpjuGCRJkrQbhRCiOWDVCCEQYww7bilJUsU4mLAkSZIkSVKGsFAjSZIkSZKUISzUSJIkabdr3br1bt/mNddcU267BQUFdOjQoWx68I0bNwLw0Ucf0bt3b7p37875559f9rwkSbuDhRpJkiTVekuXLt3utOHjx4+nqKiIoqIi6tevD8CoUaO47LLLmD17Nk2bNuW+++7b3eFKkuowCzWSJEkC4L333iM3N5dUKkX37t15/fXXATjjjDPo2bMnHTt25JFHHgGgqKiIVCrF4MGDOfroo7ntttu44oor6NatG71792bTpk0A7Lffflx++eWkUin69evH2rVry23z888/Z9iwYfTs2ZPc3FwWLFgAwM0338zxxx9PKpXiyiuv3OXPNnr0aMaOHbvN86NGjSI3N5fbbrut7Lm5c+fSt29fAAYMGMDMmTN3efuSJFWU03NLkiQJgFmzZtG5c2fGjx8PQGlpKQD3338/P/jBDyguLuaEE07grLPOAuBf//oXTz/9NJs2baJ58+YUFRXxv//7vwwePJiZM2fSp08fVqxYwcUXX0y7du249tpr+eMf/8hVV11Vts1x48Zx0kkncf755/PJJ59w5plnMn/+fO666y5eeuklcnJyyuL4psLCwu1Oq33ppZcycODAcs/NnDmT1q1bc9hhh5V7/le/+hXNmzfnyy+/5PTTT+eII46gV69ebN68mays5HpmTk4OxcXFO/+lSpJUSRZqJEmSBMCQIUNYtmwZw4cPJycnh+uvv54999yTK6+8ksWLF1OvXj0+/PBDSkpKAOjYsSP169enfv365OTk0KlTJwAOPPBAVq5cCSSFjnbt2gGQm5vLo48+Wm6bCxcuZObMmfzpT38CYM2aNQDcfffdXHXVVWzatIkBAwYwYMCAcu8rKCigoKBgh5+ppKSEsWPH8thjj23zWvPmzQH4wQ9+wFlnncWCBQvo1asX2dnZlJaWkpWVxapVq2jWrFlFv0JJknaZhRpJkiSV+eUvfwnA2LFjufvuu2nTpg3r16/n+eefZ8WKFRxyyCHEGAEIIZR77zcff93ms88+4+233+bwww9n7ty5tG3bttx7jj76aDp06MDZZ58NUDZwb6dOncjLy2P9+vUceOCB2xRqKtqjZvny5axevZphw4YBUFxczLnnnss999zD6tWradKkCaWlpcyaNYvhw4cD0LVrV6ZPn07fvn157LHH6NmzZ+W+REmSdkH4+iAqSZKkuiGEELeXAz700EPcfvvtZGVlUVJSwqRJk2jcuDFnnHEGjRo14phjjmHKlCm89957zJkzh7vuuqtsoN3WrVvz4YcfAnD11Vdz7LHHMnz4cPbbbz8GDRrEa6+9xl577cUDDzxA48aNy9p//vnnjBgxgk8++YQYIx07duTXv/41p5xyCuvXr2fdunWceuqpXHfddVXy2b8Z54knnsi6devYtGkT3bt351e/+hUhBD744APOP/981q9fz6GHHsqECRPKBhrezndJjDFs90VJ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WrXi5JNPBmDChAnk5+czf/78bdrecccdXHzxxcQY6dKlC7169arQNlq2bMkll1zCJZdcwocfflguWajolZ/DDz+cgQMH0q1bN2KM3HbbbdSrV4/ly5dz+eWX8+CDD9KmTRsGDx5MXl4eGzZsYOTIkTRv3rxC65ckSdpVlcmrRo8ezYsvvkgIgREjRtC2bdsKbaMq8iqAwYMHs2jRIr766itefPFFpk2bxurVq8vyqu9qs3HjRvr160dWVhY//OEP+eMf/wjALbfcUrbuG264gdatW1ukqQVCMtCzJKkyQgixuvafV199NXPmzOGGG26gT58+39kuPz+fl19+maeeeoqDDqqyW7wzRgiBGGNIdxySJCk9qiLfMq/6fuZbmclCjSTthOos1Chh4iBJUt1mvlX9zLcyk9NzS5IkSZIkZQgLNZKUBsuWLSM3N7fC7V999VVmzZq1y9stLCykXbt2ZGdns3nz5u22ufTSS+nevTtdu3blnHPOYePGjQCcd955dOnSha5du/Lzn/+cb1/huuaaa2jduvUuxyhJklRV0pVz7ShvAvjoo4/o3bs33bt35/zzzy/LuTZs2MBll13GiSeeSI8ePXjuuecAuPDCC0mlUqRSKQ444ACuvvrqXY5TmclCjSTVAFWVNPTt25eFCxd+b0Hl17/+NbNnz+aFF14AKBssb+TIkbz44ou88MILfPzxx0yfPr3sPUuXLuX999/f5fgkSZLSqapyru/Lm742atQoLrvsMmbPnk3Tpk257777ALjppptIpVLMmDGDZ599lry8PADuuusuioqKKCoqolWrVgwbNmyX41RmslAjSWny5Zdf8h//8R907dqV/Pz8sud/8Ytf0L17d0444QQmTpwIwLhx47j33ntJpVIsWLBgp7fZokULGjRo8L1t6tevD0BpaSmbN28umw2hXbt2ZW2ys7PJytp6CBk9ejRjx47d6bgkSZKqSzpyru/Lm742d+5c+vbtC8CAAQOYOXMmAFOnTuXll1+mZ8+e/OQnP2Ht2rXl3vfGG2+wbt06/u3f/m2n41Nmc3puSUqTDz74gGeffZYmTZqQm5vL66+/zscff8yyZcuYPXs2JSUldO3alX79+jFq1CiWLFnCjTfeuM16CgsLKSws3Ob5Sy+9lIEDB+5UbD/72c944oknOOyww9h///3LvTZt2jSWL1/OiSeeCMDMmTNp3bo1hx122E5tS5IkqTqlM+f6dt70TZs3by4r4OTk5FBcXAzA22+/zRFHHMFNN93ETTfdxC233FLugtikSZM477zzduarUA1hoUaS0qRt27Y0adIEgIMPPpiVK1eycOFC5s+fTyqVApIrQDu6paigoICCgoIqje13v/sdt956K9dddx233HILN998MwDPPPMMN910E0888QT16tWjpKSEsWPH8thjj1Xp9iVJkqpKunKub+dN35adnU1paSlZWVmsWrWKZs2aAUnR5rTTTgMoKx59raSkhAcffJC///3vFY5DNY+FGklKkxDKz4QYY+Too48mLy+PCRMmALBp0yays7N56623vnPw36ruUbN+/XoaNmxICIF99tmHzz//HICioiJGjx7Nk08+SdOmTQFYvnw5q1evLrtHuri4mHPPPZd77rmn0tuVJEmqDunIubaXN31b165dmT59On379uWxxx6jZ8+eAJx44onMnz+fk08+mXnz5pXdhg4wffp0jjvuOFq0aFHhz6+aJzgvvSRVXggh7sr+c9myZQwfPpw5c+YAMHz48LKR/H/5y18yY8YMsrOzadiwIVOnTmXFihUMGTKE/fffn2uvvZZjjz12p7Y7bdo0fvOb3zB37ly6du3KkCFDuOiiixg3bhzHHnssffr0oW/fvnz11VfEGGnVqhV33nknjRs3Zt9992WfffZhn332AbaflLRu3ZoPP/xwp7+XbwohEGMMO24pSZJqo13NtyB9Odd35U3fzLk++OADzj//fNavX8+hhx7KhAkTqF+/Ph9//DEXXnghX331FY0bN6awsLBsPQMHDmT48OGceeaZu/S9fM18KzNZqJGknVAViYO+n4mDJEl1m/lW9TPfykzO+iRJkiRJkpQhLNRIkiRJkiRlCAs1klQLtG7derdv85prrim33Y8++ojevXvTvXt3zj//fDZu3AjAeeedR5cuXejatSs///nPsQuzJEmq6TIh95o/fz5dunQhlUpx6qmnlk0AoZrPQo0kqdKWLl26zRSWo0aN4rLLLmP27Nk0bdqU++67D4CRI0fy4osv8sILL/Dxxx8zffr0dIQsSZJUY20v9xo7diy33HILRUVFHH/88dx9991pik5VzUKNJFWT9957j9zcXFKpFN27d+f1118H4IwzzqBnz5507NiRRx55BEimcEylUgwePJijjz6a2267jSuuuIJu3brRu3dvNm3aBMB+++3H5ZdfTiqVol+/fqxdu7bcNj///HOGDRtGz549yc3NZcGCBQDcfPPNHH/88aRSKa688spd/myjR49m7Nix5Z6bO3cuffv2BWDAgAHMnDkTgHbt2pW1yc7OJivLQ48kSap6dS33at++PatWrQJg1apVTtldm8QYXVxcXFwquSS7z+939913xyuvvLLscUlJSYwxxrVr18YYY/z0009jmzZtYowxPvvss/GII46IGzZsiGvXro2NGjWK8+fPjzHGOGjQoPjkk0/GGGMMIcQ33ngjxhjjmDFj4v/8z//EGGPcf//9Y4wxjh49Ok6cODHGGOPHH38cjz/++BhjjD/60Y/iypUry8XxTZMmTYp5eXnbLA8//PA2bWfMmBGvuOKKctuNMcYDDjig7N+LFy+OvXv3Lve+v/3tbzGVSsXNmzfv6KuLMca45TtO+/+1i4uLi4uLS3qWiuRb31TXcq958+bFAw88MB599NHxxz/+cfzqq68q9X3FGM23MnTJTmeRSJJqsyFDhrBs2TKGDx9OTk4O119/PXvuuSdXXnklixcvpl69enz44YeUlJQA0LFjR+rXr0/9+vXJycmhU6dOABx44IGsXLkSgJycnLIeKrm5uTz66KPltrlw4UJmzpzJn/70JwDWrFkDwN13381VV13Fpk2bGDBgAAMGDCj3voKCAgoKCnb4mUpKShg7diyPPfbYNq9lZ2dTWlpKVlYWq1atolmzZmWvPfPMM9x000088cQT1KtXryJfnyRJUqXUtdwrPz+fGTNmcNhhhzFp0iSuuuoq7rjjjkp8Y8pUFmokqRr98pe/BJJ7iO+++27atGnD+vXref7551mxYgWHHHLI11eMCCGUe+83H3/d5rPPPuPtt9/m8MMPZ+7cubRt27bce44++mg6dOjA2WefDVA2oG+nTp3Iy8tj/fr1HHjggdskC4WFhRQWFm4T/6WXXsrAgQPLHi9fvpzVq1czbNgwAIqLizn33HO555576Nq1K9OnT6dv37489thj9OzZE0i6Fo8ePZonn3ySpk2bVu4LlCRJqoS6lHsBZRfGWrZsSXFxcSW+KWUyCzWSVE2mTZvG7bffTlZWFiUlJUyaNInGjRtzyy230KNHD4455phKFy5atmzJbbfdxmuvvcZee+3FAw88UO71MWPGMGLECO666y5ijHTs2JFf//rXnHXWWaxfv55169bxs5/9bJv1VvSqzv7778+rr75a9rh169ZlicLNN9/M+eefz80338yhhx7KTTfdBMDQoUPZZ599GDRoELBtAiJJklQV6lruNX78eE455RQaNWpESUkJEyZMqNRnU+YKX1cKJUkVF0KI6dh/tm7dmg8//HC3bzcdQgjEGMOOW0qSpNooXfnWN9X23Mt8KzM59YYkSZIkSVKGsEeNJO2ETLjCU9t5hUeSpLrNfKv6mW9lJnvUSJIkSZIkZQgLNZK0mxUUFDBjxozdtr3CwkIOOuggxo0bV7b9Dh06MH36dAAWLVpE9+7dyc3NZeTIkdu8v7S0lFNOOYWuXbvSuXPnsvUATJ8+nS5dupCXl8f111+/w/b5+fk0adKEJUuW8Omnn5JKpWjdunV1fnxJklRHZVrOdfPNN3PYYYdVKPcZPHgwubm5ZY9TqRSdO3cmlUqVm0Hqu54356rZLNRIUh1wzjnnMGrUqLLH48ePp0+fPgCMGDGC22+/nTlz5rB06VJmzZpV7r0hBH7729/ywgsv8MILL/DYY4/xxhtvUFpayqWXXsrjjz/Oc889x9tvv83s2bO/sz3A5MmTOfbYYwFo3rw5RUVFu+cLkCRJ2g2+L+cqKCgoy4m+z/PPP8/mzZu3eX7y5MkUFRXx6KOP7vB5c66azUKNJO2i0aNHU1hYWPY4NzeXpUuXMnfuXE466STy8vJIpVJ88skn5d63bNmycldKhg8fXnYQ/cMf/kBubi65ubmMHTu22mLfuHEjK1asoH379gD079+fmTNnlmsTQuDwww8HoF69emRlZZGVlUVxcTFNmjShWbNmAHTu3Jmnn376O9tLkiTtipqccwHst99+ZGdnf2+b0tJS/uu//ovrrruu3PMhBM4991zy8vJ4+OGHd/i8arbv/5VIknboggsu4IILLqCgoIA333yThg0bcuihh7LvvvvyzDPPAHDHHXdw2223cdNNN+1wfW+++SYPP/wws2fPJisri379+rFw4UI6dOhQ1mb58uUMHTp0m/e2adOGu+66q8Kxr1y5kqZNm5Y9zsnJobi4+Dvb//73v+dHP/oRbdu2JcbImjVrePfddznwwAOZPn06Bx988He2lyRJ2hU1OeeqqEmTJnHaaaeVy88AHnroIZo3b05xcTG9evXimGOOoW3btt/5vGo2CzWStIvatGlDVlYW77zzDhMnTuSCCy4AYPHixVx33XWsW7eONWvWlPVa+VoI5QfY/3pWg3/+858sWbKEnj17ArB69WqWLVtWLmnYd999q6QLa05ODqtWrSp7vGrVqrIeMt/2pz/9ib/+9a9MnTq1LP577rmHiy66iOzsbA455BBatWr1ne0lSZJ2RU3OuSriiy++oLCwkFmzZvHRRx+Ve6158+YA7LPPPvTu3ZtXXnmFtm3bfufzqtks1EhSFTj//PP54x//yOOPP86NN94IwI033sjIkSPp0aMHt956KwsWLCj3nqZNm/LRRx9RWlrK5s2b+cc//gHAkUceyZFHHsnjjz9OVlYWpaWllJaWlntvVV3dadCgAS1atGDRokUcddRRTJ06lYsuumibdg888ACFhYVMmzaNBg0alD3ftWtXZsyYwebNmxkyZAiXX37597aXJEnaFTU156qIxYsXs379ek4//XTWrVvHokWLuOaaaxg3bhxffvkle+21Fxs2bOD5559n2LBhlJaWbvd51XwWaiSpCgwcOJArrriC/Pz8ssLE2WefzU9/+lMOP/xw9t9//23es/feezN48GA6derEEUccUdbmqKOO4swzzyQvL4/s7Gz22GMPJk2aVG4dVXl154477uDiiy8mxkiXLl3o1asXAJdffjkFBQW0adOG//N//g8dOnSgb9++QJIQ5ebmMnr0aF588UVCCIwYMYK2bduydu3a72wvSZK0K2pyzjVx4kQeeOABiouLOfHEE/nZz37GGWecUZZzde7cmZdeeglIxtUZPnw4//3f/8369etJpVI0atSIDRs2MHToUI477rjvfF41X/i625ckqeJCCLGm7D+nTJnCjTfeyNChQxk1ahRXX301c+bM4YYbbiibhWB3yc/P5+WXX+app55izz33ZNCgQWzYsIF58+Zt0zaEQIwxbGc1kiSpDqhJ+RbUzJzLfCszWaiRpJ1Q0xKHmsjEQZKkus18q/qZb2Um50uVJEmSJEnKEBZqJEmSJEmSMoSFGkmSJEmSpAzhrE+StBMaNmy4IoTQMt1x1GYNGzZcke4YJElS+phvVT/zrczkYMKSVEkhhGOBW4HGwGUxxjlpDqlWCCE0A/4LGAhcD9wZYyxJb1SSJKkuCyH8CfhnjPFXVbjOlsCbwKExxs+qar2qPSzU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s927d1uzZs2q3F6VkvfS8/9TNTW1+GmHyvDSgs3zb7/91goKCqxp06bljhEJeV5ZPufn51txcbGZmW3cuNHat29vZpXnf7CU7WpqauFo1cnz0qLhXL26Ofzyyy9bv379zMxs8+bNtmfPHjMz+/TTT61z587Vfv4DDs7zw33PJXix/BmqK2rEU2PHjmXDhg3079+fW2+9tdxfWAHy8/PZtm0b7du3B+Cyyy7jjTfeCPo5du/ezfz587nsssvIysqqdo1vvvkm/fv354gjjqBJkyaccMIJfP3112X2cc5VWPuJJ55IYmIiBQUF7N69m9TU1Cq3i4hEq2DyHOD4448nMfHw1jIIR55Xls916tTBOf/UA3l5eXTs2BGoPP9FRGJBNJyrVzeH586dy6hRowBo1qwZdevWBfw5n5CgX48lMmjVJ/GUc46LL76YqVOn8vLLL1e4z44dO2jYsGHg69TUVLZv337IYz/33HO88MIL7N69mwEDBjB79myaNGkS+L7P5yv3mHr16pGTk1Nm2/bt28sMpBx4/tatWx+yhtTUVFq0aEGbNm3Yu3cvM2fOrHK7iEi0CibPD1c487yqfP7www+56aab+PLLL5k1a1YtvkIRkcgUDefq1ZGXl8fKlSt55plnymz/5ZdfGDt2LFOnTj3sY4vUJg3UiKe++eYbsrOzmThxIpMnT+bBBx8st09qaip5eXmBr/Py8jj22GMPeewnnniCgoICxo4dS79+/ahXr16Z7+fm5gZVY2pqKj/++GO1nx/g6aefpqioiI0bN/Lzzz+TkZFBeno6f//73yvcrr/Kiki0CibPD1c487yy3G7WrBnnnHMOK1euZMuWLXTp0oU+ffpw9NFH1/j1iYhEqmg4V6+OBQsWMHDgQJKSkgLb8vPzGThwICNGjKBPnz61/pyHa9OmTYwYMYJ33nknqP3XrFnDjz/+yHnnnVej592yZQujRo1i//79tGrVitmzZ5d5v8A/R9HHH38cGKB79dVXSUpKYtWqVdx8880kJydTt25dFi5cSP369bn66qsD8xR9/fXXDBkyhPvvv79GdcY6XdslnrrmmmuYMWMGkydP5sMPP+S9994rt8+RRx5J48aNWb9+PQBLliwJKoBef/11nn/+eXbs2MHll1/OoEGDWLRoUeD7ByYUK9369etX7jg9e/bkpZdeoqioiO+//54tW7bQsmXLoF5fYWEhxx13HAkJCRx11FEkJSWxa9euSreLiESrYPL8cIUzzyvL5/379wf2OeaYY0hJSSl34ioiEmui4Vy9Okrf9gT+iYgHDx5Mnz59GD16dI2O7bU1a9awfPnyGh9n0qRJ3HTTTaxYsYKGDRvy7LPPVrjfjBkzyM3NJTc3N/B5ePfddzN9+nRyc3Pp3LkzTz31FABz5swJ7HvCCScwdOjQGtcZ87yeJEctthtVTKI1Z84cy8rKCny9fv1669ixo/3yyy/lJij75JNPLC0tzXr06GHjx48PTOhoFvwEZZs3b7bHHnvskPtVZMaMGdatWzfr2rWrLV++3MzMvvvuOxsyZEhgn8GDB1u7du2sRYsW1qtXL9u3b5/t3bvXBg4caGlpaXbuuefalClTzMwq3V4VYniyLDU1tchsVWV4adXJ8zlz5livXr3syCOPtF69etmSJUsC34uEPK8snxctWmQZGRnm8/msR48e9uKLLwaOWVH+B0vZrqamFo4WbJ6XFk3n6hXl8MHn6uvWrbMOHTqUedxjjz1mdevWtczMTMvMzLSLL774sJ7fzGp9MuF//etf1rFjR7v22mutW7duNmzYsMD3pkyZYunp6da1a1ebM2eOmZm1adPGmjdvbpmZmbZq1arDft6TTz45MNH+O++8U+Z5Dxg5cqSdc8451qNHD3v44YcD2ydNmmSLFy82M7Obb77Z5s+fX+ZxGzZsCEzGXxti+TPU+V+fSGg45+xw+thvf/tb3nnnHe68884qL0EcPnw4H374IX//+9856aSTalJqxHPOYWbO6zpEJH4cboaXpjyvmrJdRMKhNvK8NGV7eQfneU3f802bNnHuueeyceNGGjRoQFpaGrNnz+bbb7/l2WefDdyq2717d3Jycli6dCkbN27knnvuKXesuXPnMnfu3HLbx40bx6BBg8psa968Od988w0An332Gbfccgt///vfy+zzww8/0KhRI/bu3Uv//v2ZPHkyvXr14h//+AdDhgyhfv36JCcns2LFClJSUgKPmzBhAscffzy33nrrYb8vpcXyZ6gGaiSkavtDIZ7FchCJSGRShoeesl1EwkF5HnqhGKgZPnw4K1euBGDEiBFcc801rF69mjlz5nD88ccD/ony582bx6efflrpQE11nHLKKWzcuJGEhATeffddHnnkERYsWFDp/o8+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OWpEREREREREIsSQIUPYtGkTI0aMIDU1lalTp3LUUUdx2223sWHDBo444gj+85//UFRUBMBZZ51FUlISSUlJpKam0qlTJwCaN2/Ojh07AP/S5W3btgUgLS2NF198scxzrl27ljfeeIOnn34agJ9++gn47+q2BQUFXH755Vx++eVlHledOYcqWnFx1qxZh/cmxTgN1EjMC+d9l+PGjeOTTz6hsLCQli1b8uSTT5KUlERWVhYff/wxDRs2BODVV18lKSmJLVu2MGrUKPbv30+rVq2YPXs2SUlJYalVRCSahTPbK8vwUaNG8dlnn5GQkECnTp2YOXNmuVVRRESkauHM8wMmTJjAggULAs8biefkd911FwB33303Tz31FK1atWL//v28/fbbbNu2jZNPPpkDV+wc/NlT+usD+/z44498+eWXnHrqqaxcuZI2bdqUecwZZ5xBhw4dAqvX5ufnA9CpUycyMzPZv38/zZs3LzdQU91Vdg9ecVEqpoEakVr0wAMPBEL9qquuIicnJxBmM2bM4Pzzzy+z/6RJk7jpppvo168f48eP59lnn2X06NFhr1tERKpWUYZPnDgx8NfJwYMHs2zZMi666CIvyhMRkSB9/fXXfPPNN2W2Rdo5eU5ODo8++igJCQkUFRWRnZ1NvXr1mD59Oj179uTMM88M/PEgWE2aNOGRRx7hk08+4eijj2bhwoVlvj958mTGjh3LnDlzMDPOOussHnjgAQYOHMj+/fvZt28fN954Y7njVueKmopWXJSKaY4aCanK7s3897//zfDhw0lMTKS4uJhZs2ZxxhlncMkll7B7927y8vK44447GDhwILm5udx55500btyYDRs2cP311/P111/zwQcfkJKSwtKlS6lTpw7HH388Q4YMYc2aNdSvX58FCxZQr169wCj9rl27uO6669i2bRv5+fk88MADdO7cmWnTprF48WKOOuoozj77bB544IEav+7i4mKGDx/OHXfcwemnn05WVhbr1q0jOTmZK6+8knHjxgFwyimnsHHjRhISEli5ciWzZs1i/vz5lb2XMXsPpohEpureXx+r2V5Zhpc2dOhQsrKyuPDCC6t1bGW7iISD8vy/rrjiCu6991569uwZuKKmOufklYn0VZ+8uHIp1GL6M9TM1NRC1vxdrLynnnrKbrvttsDXRUVFZma2Z88eMzP74YcfrFWrVmZm9uabb9ppp51mv/zyi+3Zs8dSUlJs1apVZmY2ePBge+WVV8zMzDlnn332mZmZTZ482e6//34zM2vatKmZmd1+++325JNPmpnZt99+a507dzYzs1NOOcV27NhRpo7SsrOzLTMzs1xbtGhRha9t3Lhxdsopp9iFF15oeXl5Zmb2/fffB15fz5497fXXXzczsxNPPDHwuA0bNljv3r0rPKaZWcl76fn/qZqaWvy0yjK8MrGa7ZVl+AEvvfSS+Xw+KywsrNb7ZWbKdjU1tbA05bnf66+/brfeemuZ5zWr3jl5ZQ7O8+q+56FW+vXGilj+DNWtT+KJWJ0gC+Dhhx/moYceYsqUKUyfPp1p06bRqFEjAOrWrcvAgQNZvXo1vXr1CvyVIiEhgby8vMA9myIi0ShWs72yDAd47bXXuPfee3n55Zc54ogjqvuWiYhEpFjM86KiIu6++24WL15c7nvxcE4ea1fTxDoN1IhnYnGCrP3795OcnIxzjuOOO45du3YBsHPnTho0aEBxcTHLly9nxIgRAHTv3p1ly5bRt29fFi9ezHnnnRf8GygiEoFiMdsry/Dc3Fxuv/12XnnllWrPFSAiEuliLc+3bt3Kzp07GTp0KADbt29n5MiRzJs3T+fkEnE0UCOeiNUJsi6//HJ+/vlnzIwTTjiBJ554AoBBgwaxb98+CgoKyMjI4NJLLwVg2rRpjB49mmnTptGyZUvuvffear1mEZFIEqvZXlmGX3nllRx33HEMHjwYqHyFCxGRaBOLed60aVPWrFkT+LpZs2bMmzcPiLxz8qysLEaMGFFuEvtQmTt3LlOnTmXs2LFMmjQpsNrh9OnT6dOnD9OmTeOpp55i3759lV6ZM3DgQLZv386+fftIT09nxowZAPh8Pvbt20dKSgqpqamBK6lycnK46667SE5Opnnz5sybN4/ExESGDx/O0qVL+eCDDzjmmGMYPHgwGzdujLsrgjSZsIRUOCfRisUJskqL6cmyRCQiRcJEiMp2EZGaU56HXm1OJuzFQM3GjRu55557Knz+7777jkaNGtGiRYtK/w/z8/NJSkrCzMjMzGTmzJmcffbZ+Hw+5syZQ6tWrcrsf8YZZ7B06VJOOukkRo0axSWXXBL4Q8jBj6ms78TyZ2iC1wWIiIiIiIiIxKrbb7+9zO1ZaWlpfP3116xcuZILLriAzMxMfD4f3333XZnHbdq0ibS0tMDXI0aMIDc3F4DZs2eTlpZGWload999d0jrP/7440lMrPpmnKSkJMA/YJOSksKJJ54I+AdTRo4cSWZmJosWLQrs3759e/Ly8jAzfvrpJxo3bhy6FxCFdOuTxIxYHqEXEYlXynYRkdgQz3k+ZswYxowZQ1ZWFp9//jnJycm0bNmSX/3qV7z22msAzJo1i0ceeSSo264+//xzFi1axIoVK0hISGDAgAGsXbuWDh06BPbZunUrV155ZbnHtmrVijlz5tTeiytl8ODBvPvuu/Tq1Yv69esD8Pzzz9OoUSO2b99Or169OPPMM2nTpg3Dhg2jb9++1K9fnzZt2tClS5eQ1BStNFAjIiIiIiIiEiKtWrUiISGBr776iieffJIxY8YAsGHDBqZMmcK+ffv46aefaN++fZnHHTxJ84FbqT799FM2btwYmPR4586dbNq0qcxAza9+9avA1TfhsmjRIgoLCxkzZgxz587luuuuC6yceNxxx9G7d28++ugjmjZtyo033siaNWto3LgxU6dOZcaMGUyYMCGs9UYy3fokESsrK4vXX389bM83d+5cTjrpJO67774cWVdEAAAgAElEQVTA83fo0IFly5YBsH79ejIyMkhLS2PixIkVHmPatGm0bt2aZs2aldk+cOBAMjMz6dy5M+PHjw9sHz58OA0aNGDjxo388MMP+Hy+co8VEYlG0ZjhOTk5dOrUifT0dIYPH05hYSEA/fr1w+fz4fP5aNSoEY888ghQeeYr20UklkRanleWvaX5fD66dOmCz+crs0pUZefk4cjz0aNH85e//IWcnJxATffccw8TJ07krbfeYvTo0Rw8p03Dhg3ZsmULxcXF5Ofn8/HHHwPQrl072rVrx/Lly8nNzeWjjz7i4osvLvPYrVu3Bj67Srerr776sOqvSnFxMQUFBYB/qfOGDRuSkpJCcXExu3fvBuCXX37h7bffpk2bNjjnSEhI4JhjjgH8E01v37691uuKZrqiRqSUq666ikmTJgW+njFjRmASrbFjx/Loo4/Svn17Bg0axPLly8st3ZeVlcXvfvc7WrRoUWb7woULy0yu9dFHH3H22Wczf/58fD4fAI0aNSI3N1cn8yIih6mmGT5p0qQyExvm5ORw6aWXkpOTA0BRURGnnHJKYJWnyjJf2S4iUjNV5Xll2Xuw+fPnl5vA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UZ6LRA/luVRFeR6/dEVNfPEBJwJnA9cCSZ5WI5HmHeBB4BlgM/5+IiKRyYfyXCqnPBeJHj6U51I55Xmc0kBNnHDOpeIfqR8IbChp53talEQM51wd4F38l1huB44GenpalIhUSHkuVVGei0QP5blURXke3zRQEz+GASmAAz4D2prZS96WJJHCzAqAtsD9+PvIicA1nhYlIpVRnkullOciUUV5LpVSnsc3zVETJ5xz5+K/tPLBkh96kUo557oA6WZ2v9e1iEhZynOpDuW5SORSnkt1KM/jiwZqREREREREREQihG59EhERERERERGJEIleFxAqKSkpW/fv39/E6zriSXJy8rZ9+/b9yus64pH6e+ipf3tP/Tz01M+9p34eeurn3lM/Dz3188ijfl8z8danY/bWJ+ecxepri1TOOczMeV1HPFJ/Dz31b++pn4ee+rn31M9DT/3ce+rnoad+HnnU72sm3vq0bn0SEREREREREYkQGqgREREREREREYkQGqgpsWnTJtq3b8+ePXsAeOWVV+jbty8AWVlZdOjQgWXLlgGwc+dORo4cSa9evfD5fHzxxRcADB8+nAYNGrBx48aQ1jpz5ky6d+9O9+7deeutt6q9z7Zt2zjmmGOYM2cOAO+88w4+nw+fz0d6ejp16tQhLy8vpK9BvFGdfr5s2TK6du1KZmYmU6dODRwjkvr5O++8Q+/evenZsyejRo2qcvvatWvp1q0bPp+Pzp078+qrr4a0fvFWdfp6v379AhnYqFEjHnnkESB8fb209evXk5GRQVpaGhMnTiz3/eLiYi666CK6d+9Oly5duO+++6rcLrGrOn28sn4VKXluZtxwww1069aNzp07s2DBAgAKCgpIT0+nUaNG3HHHHYH9dd4S+6rTv3NycujUqRPp6ekMHz6cwsJCIDIzvLQrrriCtLS0oB978P4S/aLp98/Sgunn1e3PAwcOJDMzk86dOzN+/PiQ1R5VzCwmm/+lVc+jjz5qv/nNb2znzp3Wrl0727x5s5mZjRw50l577bXAfqNGjbLVq1dXeIzMzEz76quvgnq+Xbt2VbvGr776yrp27WqFhYW2detWa9eunRUVFVVrn6uvvtoGDBhgTzzxRLnjv/zyy9avX79q12VmVvKee/5/H4+tOv09mH5eVFRkLVu2tO3bt5uZ2ZVXXmlvvfVW4BiR0M9//PFH6927t/38889Bbc/Pz7fi4mIzM9u4caO1b9++WjWpf3vfqpvrwWb6AYWFhda8eXPbunVrYFuo+/rB0tPT7ZNPPjEzs4EDB9obb7xR5vvFxcX2xRdfBOrt3LmzbdiwodLt1aV+7n2r7Tw3q7pfRUKev//++9azZ08zM9u9e7c1a9bMzPz9ffPmzZadnW2TJ0+u8PiHc96ifu59C6afB9u/Tz/9dNu0aZOZmWVlZdnixYsD34u0DD9gxYoVdtlll1mPHj2CemxF+x+K+nnktYr6fTT8/nmwYPp5dfvzL7/8Ymb+3E9PT7cPP/yw3DHjrU/rippSxo4dy4YNG+jfvz+33norzZo1K7dPUVERq1evJjs7G5/Px4QJEygqKgr6OXbv3s38+fO57LLLyMrKqnaNb775Jv379+eII46gSZMmnHDCCXz99ddB7/PRRx9hZpx11lkVHn/u3LllrkyQ2BNMP9++fTsNGjTg2GOPBaBLly7VugIlHP08JyeHJk2aMHjwYHw+H6+88kqV2+vUqYNz/vnH8vLy6NixY7XrkugSTF8v7dVXX6VDhw40aRL8ggw17eul5efns23bNtq3bw/AZZddxhtvvFFmH+ccp556KgBHHHEECQkJJCQkVLpdYlswfTyYflWVcOT5iSeeSGJiIgUFBezevZvU1FTA398P9XOr85bYFWyGt2/fnry8PMyMn376icaNGwf9HOHOcPBfAfnHP/6RKVOmBPXYivaX2BENv3+WFkw/P5z+nJSUFHhsSkoKJ554Yo3qjAUxuzz34XDOcfHFFzN16lRefvnlCvf54YcfWL9+PY899hjp6elce+21zJ07lzFjxlR57Oeee44XXniB3bt3M2DAAGbPnl3mlwGfz1fuMfXq1SMnJ6fMtu3btwdOYABSU1PZvn07rVu3DmqfyZMn8+STT/L444+Xe768vDxWrlzJM888U+VrkegWTD9v1KgRP/30E//85z9p3rw5y5Yto0WLFoc8djj7+ZYtW1i7di3vvvsuP//8Mz169KBbt26Vbm/QoAEffvghN910E19++SWzZs065OuR6BZMXy8tOzs76F/4aquvl7Zjxw4aNmwY+PpAv6/MY489ximnnEKbNm2C2i6xJ5g+Xt1+dUA48zw1NZUWLVrQpk0b9u7dy8yZMw9ZH+i8JdYFm+HDhg2jb9++1K9fnzZt2tClS5dDHtvLDM/OzqZfv35l9q3qsRXtL7EjGn7/LC2Yfn64/Xnw4MG8++679OrVi/r161f52uKBBmpK+eabb8jOzmbixIlMnjyZBx98sNw+DRs2pEGDBqSnpwPQv39/li1bdsgflCeeeIKCggLGjh1Lv379qFevXpnv5+bmBlVjamoqP/74Y+DrvLy8wFUPh9rn+eefp2vXrpxwwgkVHnvBggUMHDgwMKIpsSmYfu6cY968eVx77bUkJiZy8sknV9pvSgt3P+/Zsyd169albt26tG/fnq+++qrS7Z06deKcc85h5cqVbNmyhS5dutCnTx+OPvrooGqS6BNMXz8gLy+Pd999l/nz5wd17Nrq63/84x9Zvnw5J598MrNnzy4zz0ZF/f6Ap59+mr/97W8sWbIkqO0Sm4Lp46mpqUH3q9LCmedPP/00RUVFbNy4kZ9//pmMjAzS09MPeTWNzltiWzD9e8+ePdx4442sWbOGxo0bM3XqVGbMmMGECROqPLZXGb57927mzp3L8uXL2bJlS2B7ZT+nle0vsSMafv+sbj8/3P68aNEiCgsLGTNmDHPnzuW6664Lqr5YpYGaUq655hpmzJjBBRdcQEZGBu+99x7dunUrs8+RRx7JmWeeyeeff07btm157733gvqr5euvv862bdt44YUXuPzyy6lfvz5Dhgxh8ODBQPAjmj179iQrK4sJEyawY8cOtmzZQsuWLYPa58knn+T999+nT58+bNy4keTkZE466SQuuOACwH/58BNPPFGdt0yiUDD9HKB79+68/vrrFBYWMmTIEG655ZZDHjuc/fy8887j2Wefpbi4mPz8fD777DNatGhBw4YNK9y+f/9+kpOTATjmmGNISUnRyX2MC7avg/8XvkGDBlGnTp2gjl1bff0Pf/gDf/jDHwJfN27cmPXr13P66aezZMkSrr322nLHWbhwIXPnziUnJ4cjjzzykNsldgV73hJMvzpYOPO8sLCQ4447joSEBI466iiSkpLYtWvXIWvUeUtsC6Z/O+dISEjgmGOOAaBJkyZs2rTpkMf2KsM3bNjA/v376d+/P/v27WP9+vVMmDCB//mf/6nwsVXtL7EhGn7/rG4/r+xzp7L+fN9991FUVESdOnVITEykYcOGpKSkBPsWxi6vJ8kJVaOak07OmTPHsrKyAl+vX7/eOnbsaL/88ku5yZzWr19vPXv2tIyMDLvyyitt3759ge8FO5nT5s2b7bHHHqtWjQfMmDHDunXrZl27drXly5ebmdl3331nQ4YMqXKf0qZOnVpmMuF169ZZhw4dDqueA4izCZ4iqQXb36vTzydNmmQ+n8969uxpzz//fJnjREo/f/jhhy0tLc06depkc+fOrXL7okWLLCMjw3w+n/Xo0cNefPHFatWj/u19q06uV6evm5mdc8459vHHH5c7Tjj6emmffPKJpaWlWY8ePWz8+PGBCbBvvvlm+/jjj2337t2WmJho55xzjmVmZlpmZqa9/fbblW6vLvVz71so8ryyfmUWGXm+d+9eGzhwoKWlpdm5555rU6ZMCTx28ODB1q5dO2vRooX16tUrcM5Vk/MW9XPv26H6eXX69+zZs61Tp06WkZFh559/vn333XeB70Vahpf2r3/9q8xkqlX9nFa0/6Gon0deO7jfR9Pvn6UF08+r05937doVOHfp0aOH3XDDDVZQUFDueeOtT3teQMhe2GGs+lSZ8ePHW5cuXeyVV16pcr9hw4ZZmzZtAjPPx5t4++GJpFYb/V39vGrq39632sp19fXKqZ9735Tnoad+7n2rST9X/w6O+nnkter0e/Xz8uKtTzv/a449zjmL1dcWqZxzmJnzuo54pP4eeurf3lM/Dz31c++pn4ee+rn31M9DT/088qjf10y89Wmt3SkiIiIiIiIiEiE0UHMImzZtIi0tLej916xZw/Lly2v8vHPnzqVt27YkJiZSWFhY4T5btmyhd+/eZGRkMHr0aPLz86vcfvXVV+Pz+fD5fJx44on89re/rXGdEhsiuZ9Xtk9l27OysujQoUOgrx/o/yJe9fPKMrm0VatW0bVrV3w+HxdffHFgItUPPviAtLQ0evbsydixYwN9PZifHYlPkdzPK8vnyvr5ARMmTDjkClASX7zq56NGjaJr1650796dm2++mYqujjjUz8LB/XncuHFkZGTQvXt3rrrqKp23yCFFcs4Hs48ERwM1tay2fhD69u3L2rVrqzwxmTRpEjfddBMrVqwIrHRT1fY5c+aQm5tLbm4uJ5xwAkOHDq1xnRKfwtnPK9unqsfOmDEj0Ne1spMcrtrq55Vlcml3330306dPJzc3l86dO/PUU08BcP3115Odnc2bb75JgwYN/n979x5dVXnnf/zzhCA4SgeQq1AUBQEBKVpuMZAj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FAKZoraek53zgUw0evRobdmy5Zi/TMyaNUs333yz1q1bp1atWukXv/hFSCsEGi7ZeXvJkiVau3at1q5dq9NPP736alFAJkp2Pp8/f77WrVunDRs2SJJWrlwZxvIii0GNpPfff1+5ublKJBIaNmyY3njjDUnSlVdeqeHDh6t///767W9/K6nysnyJRELXXHON+vTpo0WLFunWW2/V0KFDNWrUKB0+fFiS1LFjR91yyy1KJBK64oortG/fvhqP+emnn+o73/mOhg8frtzcXG3atEmSlJ+fr4EDByqRSOi2225r0PfVs2fP6v/Ozs5WVlbl/+6+ffuqtLRUklRaWlp9qe4nn3xSf/rTnzR8+HB9//vfP2bNiI+4Nl9Xw7Nnz9bcuXMbdP/ILHHtXKq952TnfMRbXDtv166dmjVrdszn169fr9GjR0uSxowZozVr1jTocZAZ4tr58c7bb731lvbv368LLrigQY+DzBDXzpOdz0866SRJUkVFhcrKytSjR48GPU7shH3ZqXTdVI/Lny1btsxuu+226o/Ly8vNzGzfvn1mZvbJJ59Yt27dzMzsxRdftF69etnBgwdt3759dvLJJ9vGjRvNzOzqq6+uvjSZc87eeustMzO744477L777jOzLy/HN3v2bFu6dKmZme3YscMGDhxoZmZnnXWW7d69u8Y6jlZQUFB9ScCjb1WXB6zN008/bYlEwsrKyszM7OWXX7YuXbpYnz597Jvf/KZ98cUXZmbWrFkze+yxx8zM7O6777Yf/ehHKe+hmX+XTIvSrT69m8W3+WQNr1692m699dYa66kv+g7/RueVjtfzV8/59UHn4d/ovKYzzjjDDh8+XP3x17/+9er/Li4utlGjRqW2UUeh8/BvdF5TsvP2v/3bv9n8+fNT3qej0Xn0bsfrPu6df/V8bmY2bdo0O+uss+ziiy+20tLSOvfHt6azgx4MRdH48eO1bds2XXvttWrdurXuvPNO/cM//INuu+02FRcXq0mTJvrwww9VXl4uSerfv79OOukknXTSSWrdurUGDBggSerSpYt2794tSWrdunX1lDw3N1e/+93vajzmli1btGbNGj366KOSpL1790qSli1bphkzZujw4cMaM2aMxowZU+PrpkyZoilTpqT8vT3//POaN2+enn32WTVp0kSSNGnSJK1evVrdu3dXQUGBZsyYocWL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\",\n      \"text/plain\": [\n       \"<Figure size 1440x720 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 10))\\n\",\n    \"plot_tree(est[0], impurity=True, max_depth=3)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15,5))\\n\",\n    \"plt.plot(est.feature_importances(max_depth=4, depth_decay_exponent=2.0))\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"explainer = shap.Explainer(est, shap.maskers.Independent(X, max_samples=100))\\n\",\n    \"shap_values = explainer(X[:200])\\n\",\n    \"shap.plots.beeswarm(shap_values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(<1x47712 sparse matrix of type '<class 'numpy.int64'>'\\n\",\n       \" \\twith 3902 stored elements in Compressed Sparse Row format>,\\n\",\n       \" array([    0,   119,   234,   355,   476,   597,   712,   837,   956,\\n\",\n       \"         1079,  1198,  1321,  1440,  1565,  1686,  1809,  1930,  2055,\\n\",\n       \"         2166,  2283,  2404,  2519,  2638,  2759,  2880,  3001,  3120,\\n\",\n       \"         3237,  3358,  3477,  3600,  3719,  3840,  3965,  4076,  4201,\\n\",\n       \"         4314,  4435,  4562,  4691,  4808,  4931,  5054,  5169,  5288,\\n\",\n       \"         5409,  5524,  5643,  5756,  5877,  5992,  6115,  6238,  6357,\\n\",\n       \"         6474,  6593,  6706,  6825,  6942,  7063,  7182,  7299,  7412,\\n\",\n       \"         7523,  7644,  7763,  7890,  8013,  8136,  8255,  8370,  8485,\\n\",\n       \"         8606,  8733,  8856,  8979,  9102,  9221,  9334,  9453,  9578,\\n\",\n       \"         9697,  9820,  9939, 10056, 10173, 10282, 10395, 10516, 10633,\\n\",\n       \"        10752, 10877, 11004, 11119, 11246, 11367, 11484, 11597, 11716,\\n\",\n       \"        11837, 11954, 12075, 12186, 12305, 12430, 12545, 12668, 12791,\\n\",\n       \"        12910, 13029, 13146, 13269, 13390, 13511, 13632, 13749, 13866,\\n\",\n       \"        13979, 14106, 14219, 14328, 14449, 14566, 14685, 14808, 14937,\\n\",\n       \"        15052, 15169, 15288, 15409, 15532, 15647, 15762, 15879, 16000,\\n\",\n       \"        16117, 16240, 16359, 16482, 16605, 16722, 16841, 16962, 17077,\\n\",\n       \"        17196, 17313, 17426, 17549, 17674, 17797, 17916, 18031, 18144,\\n\",\n       \"        18257, 18370, 18487, 18598, 18723, 18834, 18953, 19076, 19197,\\n\",\n       \"        19320, 19439, 19560, 19673, 19790, 19911, 20026, 20151, 20274,\\n\",\n       \"        20393, 20512, 20631, 20744, 20865, 20980, 21101, 21224, 21335,\\n\",\n       \"        21458, 21583, 21708, 21831, 21950, 22069, 22188, 22305, 22430,\\n\",\n       \"        22551, 22666, 22785, 22904, 23031, 23148, 23269, 23388, 23499,\\n\",\n       \"        23612, 23731, 23842, 23967, 24088, 24205, 24322, 24443, 24568,\\n\",\n       \"        24679, 24802, 24925, 25042, 25165, 25286, 25405, 25524, 25643,\\n\",\n       \"        25764, 25885, 26008, 26135, 26266, 26385, 26508, 26623, 26746,\\n\",\n       \"        26859, 26978, 27091, 27212, 27329, 27450, 27573, 27696, 27819,\\n\",\n       \"        27930, 28045, 28172, 28293, 28408, 28521, 28636, 28749, 28872,\\n\",\n       \"        28991, 29112, 29233, 29352, 29471, 29592, 29709, 29826, 29945,\\n\",\n       \"        30068, 30189, 30306, 30429, 30544, 30653, 30774, 30891, 31014,\\n\",\n       \"        31131, 31252, 31369, 31490, 31609, 31728, 31851, 31960, 32077,\\n\",\n       \"        32190, 32309, 32426, 32543, 32662, 32787, 32908, 33023, 33138,\\n\",\n       \"        33265, 33390, 33509, 33632, 33751, 33878, 34003, 34124, 34241,\\n\",\n       \"        34364, 34481, 34598, 34719, 34836, 34959, 35076, 35189, 35312,\\n\",\n       \"        35421, 35540, 35661, 35784, 35897, 36020, 36137, 36258, 36383,\\n\",\n       \"        36508, 36625, 36750, 36873, 36990, 37119, 37236, 37355, 37472,\\n\",\n       \"        37593, 37710, 37827, 37936, 38049, 38168, 38287, 38408, 38533,\\n\",\n       \"        38648, 38759, 38876, 38989, 39108, 39229, 39348, 39467, 39594,\\n\",\n       \"        39713, 39832, 39957, 40068, 40181, 40300, 40421, 40548, 40669,\\n\",\n       \"        40786, 40897, 41014, 41137, 41258, 41371, 41490, 41613, 41736,\\n\",\n       \"        41861, 41982, 42103, 42218, 42341, 42462, 42585, 42698, 42821,\\n\",\n       \"        42938, 43059, 43180, 43295, 43416, 43543, 43660, 43771, 43892,\\n\",\n       \"        44019, 44134, 44251, 44370, 44501, 44622, 44745, 44866, 44991,\\n\",\n       \"        45108, 45233, 45350, 45469, 45586, 45701, 45812, 45933, 46048,\\n\",\n       \"        46169, 46288, 46411, 46520, 46645, 46764, 46885, 47008, 47129,\\n\",\n       \"        47252, 47371, 47484, 47595, 47712], dtype=int32))\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.decision_path(X_test[:1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([[31, 24, 47, 17, 15, 61, 13, 34, 53, 29, 21, 54, 23, 44,  8,  9,\\n\",\n       \"         8, 52, 12,  6, 12, 16, 53, 68, 46, 29, 13, 15, 11, 30, 15, 19,\\n\",\n       \"        36, 58, 20,  9, 52, 80, 33, 75, 46, 14, 19, 37, 64, 32, 58, 29,\\n\",\n       \"        65, 42, 66, 21,  8, 68, 26, 23, 32, 23, 73, 51, 39, 21, 16,  9,\\n\",\n       \"        12, 74, 20, 39, 13, 20, 37, 16,  8,  6, 74, 18, 24, 26, 50, 26,\\n\",\n       \"        30, 23, 64, 34, 18, 73, 34, 45, 51, 50, 15, 31, 56, 20, 89, 55,\\n\",\n       \"         8, 72, 24, 28, 14, 60, 72, 30, 27, 37, 22, 22,  6, 56,  7, 69,\\n\",\n       \"        28, 67, 43,  6, 54, 32,  9, 36, 10, 19, 28, 12, 91, 10, 36, 88,\\n\",\n       \"        13, 27, 24, 46, 11, 29, 17, 46, 27, 54, 17,  9, 45, 10, 12, 58,\\n\",\n       \"        37,  6, 65, 16, 71, 26, 66,  7,  8,  6, 32, 18, 12, 45, 27, 17,\\n\",\n       \"        19, 34, 68, 68, 40, 28, 33, 23, 83, 12,  7, 46, 28, 23, 82, 54,\\n\",\n       \"        11, 44, 20, 36, 29, 47, 26,  9, 10, 49, 40, 54,  8, 45, 24, 43,\\n\",\n       \"        10,  6, 36, 15, 29, 33, 73,  9, 51, 27, 27, 45, 41, 42, 41, 46,\\n\",\n       \"        12, 12, 22, 13, 53,  9, 50, 11, 47,  7, 44, 12,  9, 69, 77, 19,\\n\",\n       \"        71, 59, 29, 53, 45, 18, 19, 33, 75, 16, 10, 73, 33, 10, 29, 46,\\n\",\n       \"        28, 35, 56, 34, 27, 29, 35, 28, 24, 66, 51, 74, 10, 18, 70, 35,\\n\",\n       \"        10,  9, 73, 21, 27, 68, 48,  6, 47, 20, 42,  5,  6,  9, 12, 47,\\n\",\n       \"        54, 17, 60, 34, 18, 53, 21, 40, 25, 45, 31, 45, 10, 17, 20, 23,\\n\",\n       \"         6, 39, 25, 63, 76, 68,  7,  4, 34, 14,  5, 59, 17, 62, 55, 16,\\n\",\n       \"        18, 22, 23, 13, 55, 11, 44, 38,  7, 68,  6, 42, 15, 37,  9, 70,\\n\",\n       \"        17, 19,  8, 64, 42, 50,  8,  8,  8, 12, 44, 53,  4, 45, 45, 12,\\n\",\n       \"        46, 45, 63,  5, 45, 31, 30, 57, 40, 33,  9, 16, 70, 48, 27, 16,\\n\",\n       \"        65, 20, 60, 20, 28, 22, 29, 23, 55, 49, 22, 56, 85, 13, 29, 74,\\n\",\n       \"        52, 45, 52, 22, 44, 48, 68, 23, 35, 44, 56, 65, 51, 39, 28, 10,\\n\",\n       \"        38, 37, 45, 25, 39, 14, 55, 27, 56, 68, 25, 75, 48, 29, 44, 86]],\\n\",\n       \"      dtype=int64)\"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.apply(X_test[:1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Causal IV Forest: Heterogeneous causal effects with unobserved confounders\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(1227)\\n\",\n    \"n_samples = 2000\\n\",\n    \"n_features = 10\\n\",\n    \"n_treatments = 2\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]**2 + 1, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([X[:, [0]] > 0, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"# true_te = lambda X: np.hstack([(X[:, [0]]>0) * X[:, [0]],\\n\",\n    \"#                                np.ones((X.shape[0], n_treatments - 1))*np.arange(1, n_treatments).reshape(1, -1)])\\n\",\n    \"Z = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"U = np.random.normal(0, .2, size=(n_samples, 1))\\n\",\n    \"T = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    T[:, t] += U[:, 0] + Z[:, t]\\n\",\n    \"y = np.sum(true_te(X) * T, axis=1, keepdims=True) + 10 * U[:, [0]]\\n\",\n    \"X_test = X[:1000].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), 1000)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = CausalIVForest(criterion='mse', n_estimators=400, min_samples_leaf=40,\\n\",\n    \"                     min_var_fraction_leaf=0.1, min_var_leaf_on_val=True,\\n\",\n    \"                     min_impurity_decrease = 0.001, max_samples=.45, max_depth=None,\\n\",\n    \"                     warm_start=False, inference=True, subforest_size=4,\\n\",\n    \"                     honest=True, verbose=0, n_jobs=-1, random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"CausalIVForest(min_impurity_decrease=0.001, min_samples_leaf=40,\\n\",\n       \"               min_var_fraction_leaf=0.1, min_var_leaf_on_val=True,\\n\",\n       \"               n_estimators=400, random_state=123)\"\n      ]\n     },\n     \"execution_count\": 15,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(X, T, y, Z=Z)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"point, lb, ub = est.predict(X_test, interval=True, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for t in range(n_treatments):\\n\",\n    \"    plt.plot(X_test[:, 0], point[:, t])\\n\",\n    \"    if est.inference:\\n\",\n    \"        plt.fill_between(X_test[:, 0], lb[:, t], ub[:, t], alpha=.4)\\n\",\n    \"    plt.plot(X_test[:, 0], true_te(X_test)[:, t])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABGoAAAIuCAYAAADnru5GAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3yO1//H8dcVJEEisWMmdmwS1Ba/Ulp7tKpp0aWEVpW2qLZUdVJUiw6rNVt7xqqoGDFi1apvRfAVmxAkRM7vjzT3190kJJFIyvv5eJxHOedc5/pcF+ktn5xhGWMQEREREREREZHM55DZAYiIiIiIiIiISDwlakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsgglakREREREREREsojsmR2AiIjI3eTMmfN0dHR04cyOQySjODs7n7lx44ZHZschIiIiWYNljMnsGERERJJlWZbRZ5U8zCzLwhhjZXYcIiIikjVo6ZOIiIiIiIiISBahRI2IiIiIiIiISBahRI2IiIiIiIiISBahRI2IiIiIiIiISBahRI2IiIiIiIiISBahRI2IiIiIiIiISBahRI2IiDwyfvjhByzLokGDBiR35HdSfYKCgrAsy65ER0cnuvb69esMGTKEMmXK4OzsTIkSJejTpw8XLlxI1Dc2NjbRmEFBQen6vFnB5MmT8fHxIVeuXBQoUIAOHTqwd+/eNI114cIF+vTpQ4kSJXB2dqZMmTIMGTKE69evJ+p7+fJlZsyYwTPPPIO3tzc5c+bE3d2dpk2bMnfu3Hvea9++fXTr1o3ixYvj5OSEh4cHzZo1Y86cOWmKXURERCSlrOT+oSoiIpIVWJZl0uuzyhhD48aNCQ4OZtKkSbz22mt27WfPnsXb25uoqChCQ0OpUqUKEJ+oadq0KaVLl6ZevXoATJ06lRw5ctiuvXHjBk2aNGH79u14enri6+vLgQMHOHToEKVKlSIkJISCBQva+sfFxdGtWzcAtmzZwtGjR1m/fj1+fn7p8qxZweuvv84333xDnjx5aNq0KefPn2fTpk04Ozuzdu1aGjRokOKxzp07x2OPPUZYWBje3t5UqlSJnTt3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FRUVlSxb4j+q0k9ISIhxcHAwhQsXNpcuXbLVR0VFmZIlSxrArFu3zu6a9evXG8B07949yTFjYmJMnjx5jKOjozl9+rRdW3R0tClYsKBxcHAwp06dSvL67t27G8CsX78+zc919epVM3nyZNOgQQMDGMC4ubmZV155xWzcuDHN46ZVixYtDGAWLFiQqK1t27YGMHPnzk3RWP/973+Ng4ODKVSokImOjrZrO336tMmRI4dxc3MzN2/etGs7e/asKV++vAHMhx9+eM/7REVFmZw5cxpnZ+dEf47GGNOsWTMDmOnTp6co7pT6++94pn+tqaioqKioqGSNoj1qRETkkREbG8trr71GXFwcY8aMwd3d3daWO3duvv76awACAgK4efNmisd1dHS0XdO7d29u3bplaxs4cCDnzp2jS5cuKVqSlFYuLi689NJLBAcH8+effzJ48GBcXFz48ccfadSoEd9++22G3Tsp/fv3B+Cdd96x7acD8XsDLVmyBE9PTzp06GB3zTfffIO3tzeDBw+2qy9atCjPPPMMZ8+e5e2337bV37p1i169enHr1i0CAgLsZu5ERUXx1FNP8eeff9KrVy+GDRt2z5hz585N7969iY6OJiAggOjoaFvblClTWLt2Lfnz56djx46pehciIiIiqaGlTyIi8sgYO3Ysu3fvpnnz5raNYe/Url072rZty5IlS/jss8/44IMPUjz2+++/z5o1a1i4cCHly5fH19eXAwcOcPDgQTw9PRk7dmx6PspdlStXjk8++YSPP/6Y1atXM3Xq1Lse1Z0RWrRoQe/evZk4cSIVKlSgadOmXLhwgeDgYJycnPjpp58SLYk6f/48hw8fJiIiItF4Y8eOZcuWLYwfP561a9dSqVIldu7cybFjx/D19WXo0KF2/d977z127NhB9uzZiYyM5Pnnn080ZsGCBRkzZoxd3UcffcSGDRtYsGABZcqUwdfXlxMnTrB7926cnJz4+eef021TaBEREZEkZfaUHhUVFRUVlbsV0mnp07Fjx0zu3LmNs7OzOXLkSLL9wsPDE/W719KnBFFRUWbQoEGmVKlSxtHR0RQtWtT06tXLnDt37q7XpcfSp6zq+++/NzVq1DDOzs4mb968pm3btmb37t1J9v3www/v+p7PnTtnevfubYoWLWocHR1NqVKlzLvvvmuioqIS9U14p3crnp6eSd7n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doqiSGm3d1HpYmNjISKKqcdB+mGcG4ZxblkY54ZhnFsWxrlhGOeWhXFuGMa5ZWGcG8YW45x31BARERERERERmQkWaoiIiIiIiIiIzAQLNUREREREREREZoKFGiIiIiIiIiIiM8FCDRERERERERGRmWChhoiIiIiIiIjITLBQQ0RERERERERkJlioISIiIiIiIiIyEyzUEBERERERERGZCRZqiIiIiIiIiIjMBAs1RERERERERERmgoUaIiIiIiIiIiIzwUINEREREREREZGZYKGGiIiIiIiIiMhMsFBDRERERERERGQmWKghIiIiIiIiIjITLNQQEREREREREZkJFmqIiIiIiIiIiMwECzVERERERERERGaChRoiIiIiIiIiIjPBQg0RERERERERkZlgoYaIiIiIiIiIyEywUENEREREREREZCZYqCEiIiIiIiIiMhMs1BARERERERERmQkWaoiIiIiIiIiIzAQLNUREREREREREZoKFGiIiIiIiIiIiM8FCDRERERERERGRmWChhoiIiIiIiIjITLBQQ0RERERERERkJhQRMfUYql2NGjWuFhQUNDL1OCyNg4NDxv379xubehykH8a5YRjnloVxbhjGuWVhnBuGcW5ZGOeGYZxbFsa5YWwxzm2yUENEREREREREZI746BMRERERERERkZlgoYbo/9uxYwEAAACAQf7W09hRGAEAAMCEqAEAAACYEDUAAAAAE6IGAAAAYELUAAAAAEyIGgAAAIAJUQMAAAAwIWoAAAAAJkQNAAAAwISoAQAAAJgQNQAAAAATogYAAABgQtQAAAAATIgaAAAAgAlRAwAAADAhagAAAAAmRA0AAADAhKgBAAAAmBA1AAAAABOiBgAAAGBC1AAAAABMiBoAAACACVEDAAAAMCFqAAAAACZEDQAAAMCEqAEAAACYEDUAAAAAE6IGAAAAYELUAAAAAEyIGgAAAIAJUQMAAAAwEdXhHcH2DOgfAAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 1440x720 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 10))\\n\",\n    \"plot_tree(est[0], impurity=True, max_depth=2)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15,5))\\n\",\n    \"plt.plot(est.feature_importances(max_depth=4, depth_decay_exponent=2.0))\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\\n\",\n    \"explainer = shap.Explainer(est, shap.maskers.Independent(X, max_samples=100))\\n\",\n    \"shap_values = explainer(X[:200])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.plots.beeswarm(shap_values[:, :, 0])\\n\",\n    \"shap.plots.beeswarm(shap_values[:, :, 1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<1x15 sparse matrix of type '<class 'numpy.int64'>'\\n\",\n       \"\\twith 4 stored elements in Compressed Sparse Row format>\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est[0].decision_path(X_test[:1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([3], dtype=int64)\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est[0].apply(X_test[:1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3. Regression Forest: Random Forest Regressor with confidence intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n_samples = 2000\\n\",\n    \"n_features = 10\\n\",\n    \"n_outputs = 2\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([X[:, [0]] ** 2 + 1, np.ones((X.shape[0], n_outputs - 1))])\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]>0, np.ones((X.shape[0], n_outputs - 1))])\\n\",\n    \"# true_te = lambda X: np.hstack([(X[:, [0]]>0) * X[:, [0]],\\n\",\n    \"#                                np.ones((X.shape[0], n_outputs - 1))*np.arange(1, n_outputs).reshape(1, -1)])\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"y = true_te(X) + 0.0 * X[:, [0]] + np.random.normal(0, .1, size=(n_samples, 1))\\n\",\n    \"X_test = X[:min(100, n_samples)].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), min(100, n_samples))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = RegressionForest(n_estimators=400, min_samples_leaf=5, max_depth=None,\\n\",\n    \"                       min_impurity_decrease = 0.0, max_samples=0.45, min_balancedness_tol=.45,\\n\",\n    \"                       warm_start=False, inference=True, subforest_size=4,\\n\",\n    \"                       honest=True, verbose=0, n_jobs=-1, random_state=1235)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"RegressionForest(n_estimators=400, random_state=1235)\"\n      ]\n     },\n     \"execution_count\": 26,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(X, y)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"point, lb, ub = est.predict(X_test, interval=True, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for t in range(n_outputs):\\n\",\n    \"    plt.plot(X_test[:, 0], point[:, t])\\n\",\n    \"    if est.inference:\\n\",\n    \"        plt.fill_between(X_test[:, 0], lb[:, t], ub[:, t], alpha=.4)\\n\",\n    \"    plt.plot(X_test[:, 0], true_te(X_test)[:, t])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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51i8eDH169dPsd+lmTOxsbGEh4d7648ePepz/VoEBAQQGhrKgQMHOHbsGEePHuXs2bNXTNTcdtttVKpUKcWxs2TJcs3xXK+8efNSq1Ytfvzxx0TXIiMjiYyM5O677/Yekf72228zZswYDh06RL9+/Xj//feJi4sjLi6O48ePA3D69GmOHTvmM/tGREREMjYtfRIREclkZsyYwZIlS/jggw949tlnqVu3Li+88AJxcXEp9i1Tpgzw/3vVXHJpuc/tt99+zfHky5ePLVu28O2331K6dGleeuklwsPDadWqFf/85z9JSEhI1CctLH1KytXsiZMjRw5iYmLYtm0bAHv37uXkyZO0adOGsLAwwsLCuOOOOwD405/+RPHixW9qzCIiIpK2aEaNiIhIJhIbG0u3bt148sknqVu3LgBjx46lQoUKDBo0iLfeeuuK/UuWLElMTAyzZs3i8ccf99bPnDmTu+6666r3uknKvffey7333suoUaOYO3cukydPpn79+hQqVIhWrVrRsWNH71KmtLD06XKHDh3iq6++olGjRldsFxsby/r162nZsiUAUVFRLF++3KfNvn37eOqpp+jXr99VncYlIiIiGYcSNSIiIplIjx49OHfuHO+99563Lioqit69e/PWW2/RunVr76yZ5AwYMICWLVsSGRlJnTp1+PTTT1myZAmff/55qsSYPXt22rRpQ5s2bdi5cyeTJ09m6tSpZM+enX79+gGQM2dOqlatesP3OnjwIN988433zydPnmTu3LkAPPjgg97EU+3atdm9e7d3FszMmTNZuHAh9evXp3DhwuzatYthw4Zx9uxZXn31Ve/4r7zyCgEBAdxzzz3kzZuXnTt38t577xEfH89LL70EeJZxXX4c965duwDPaVo1atS44ecUERGR9EOJGhERkUzi22+/5aOPPuKDDz7w2V8G4NVXX+Xjjz+mU6dOiWZ3XK5FixacPn2awYMHM2LECCIjI/n444+vao+ba1WyZEkGDBhAv379OHToUKqPv3HjRlq0aOFTd+nr5cuXexMoCQkJxMfH+8T122+/0a1bN2JjY8mdOzcPPvggc+fOJSYmxtuuatWqjB07lkmTJnHq1CmKFCnCAw88wIIFCyhVqlSqP4+IiIikf+5q1lKLiIhI2uacs9T8mb5r1y5KlizJrFmzaNq0KVmzXvvvduLj45k2bRrPP/88Bw8eJF++fKkWnyTNOYeZXfvRWyIiIpJmaEaNiIiIJOvSPiq//PILUVFRV91vw4YNVKhQ4WaFJSIiIpJhKVEjIiIiiURERPhs1lu0aNFr6h8VFeXTPzQ0NNViExEREcnItPRJREQkA0jtpU+SPmnpk4iISPoX4O8ARERERERERETEQ4kaERERSaRt27aUL18+VcZat24d/fr14/Tp06ky3tVas2YNNWrUICQkhMKFC9O3b18SEhJS7HfixAk6duxIgQIFCAkJoXr16qxYsSJRu59//pnGjRuTM2dOcuXKRdOmTdmzZ49Pmzlz5tCkSROKFClCjhw5uOOOO5g4cSKa/SQiIiLJUaJGREREbqp169bRv3//W5qo2bFjBw8//DB58uRh4cKF9O7dm+HDh/P666+n2Pexxx5j3rx5DB06lLlz55IzZ07q1avHunXrvG0OHjzIAw88wO+//8706dMZP34869ato1atWpw6dcrb7p133iEkJISRI0fyj3/8gwYNGtC+fXv69et3Mx5bREREMgBtJiwiIiIZzvDhwwkNDWXOnDkEBQVRu3Ztjh8/zoABA+jZsyd58uRJst+KFStYvnw5n332GY0bNwagVq1alCpViv79+7NgwQIAPvjgA44fP86iRYsoUKAAALfffjtVqlRh4sSJdO3aFYB//OMfPseS16pVi8OHD/Pee+/Rt29fAgL0OzMRERHxpbcDERERSdaKFSuoUqUK2bNnp3LlykkuAZo+fTqVKlUiODiYggUL0q1bN86ePQvAlClTePbZZwHInz8/zjlKlChx0+NetGgRTZo0ISgoyFv39NNPc/bsWb766qtk+61ZswbnHHXr1vXWhYSE8OCDD7J48WLOnz/vbVepUiVvkgagcuXKhIeH89lnn3nr/pik+WO748ePc+bMmRt6RhEREcmYlKgRERGRJO3bt4/OnTvz8ssvM2/ePLJly0aTJk04ceKEt83o0aNp27YttWrV4rPPPqNfv35MmTKFF198EYCGDRvSp08fAL744gtWrVrlnZWSFDMjPj4+xXKlPV5OnTrFnj17KFu2rE99iRIlyJ49O1u2bEm2b5YsWQgICCBLliw+9UFBQZw9e5YdO3Z422XLli1R/6CgIDZt2pTs+AArV670xiIiIiJyOS19EhERkSQdOXKE5cuXU6FCBQAKFSpE5cqV+fLLL70Jmz59+tC9e3eGDRvm7RcaGkrr1q3p3bs3JUqUIDIyEoA777wzyRkmf/TNN9/w0EMPpRjb5MmTadu2bZLXjh496o3jcmFhYRw5ciTZcaOjo0lISODf//43d999N+BJHq1ZswbA2zc6OpqPPvqIuLg4QkJCANi7dy979+4la9bkX6++/fZbZs2a5fN5iYiIiPyREjUiIiKSpEKFCnmTNIB3hsrevXsBWLVqFSdOnKBly5bEx8d729WuXdub7LjWZU533nkna9euTbFdyZIlU2zjnEtUZ2ZJ1l9St25dSpcuTYcOHZg6dSrh4eEMHz6cX375BcC7p0y7du0YNWoU7du3Z8iQIZw5c4b27dvjnEt235m9e/fSsmVLHnzwQV5++eUU4xcREZHMSYkaERERSVJYWJjP15eW+lzaW+XgwYOAJ7mSlMuPqr4at912G5UqVUqx3eVLk/7oUtyxsbGJrh09ejTRc/1RYGAgs2fPpmXLllSsWBGAihUr8tJLLzFy5EgKFSoEQOnSpZk8eTJdunThb3/7GwDNmzenQYMGbNiwIcn71q9fnzx58rBgwYIrxi8iIiKZmxI1IiIicl0unZw0b948ihUrluh60aJFr3nM1Fj6lD17dooVK8bmzZt96nfv3s3p06eJiYm54tiVKlViy5YtbNu2DTMjOjqazp07ExER4fOcrVq1okWLFvz888/kyZOHiIgIypUrR/Xq1X3Gi4uLo1GjRhw7doxVq1aRO3fuFJ9PREREMi8lakREROS63HvvveTIkYP//e9/NG3aNNl2l8/EuZLUWvrUoEEDPvnkE4YPH+69/8yZM71HdafEOUfp0qUBz8yhWbNm0aVLl0TtsmXLRvny5QH46quv2LRpE2PHjvVej4+P54knnmDz5s2sXLmSwoULp3hvERERydyUqBEREZHrkjt3bgYNGkSvXr3Yu3cvDz30ENmyZWPnzp0sXLiQsWPHUqRIEcqUKQPAX//6V5o2bUr27Nl99r75o5w5c1K1atUbjq1Hjx7MmDGDJ554gi5durB161YGDhzISy+95LP0qXbt2uzevZtt27Z56wYNGkTp0qUJDw9n69atDB48mOLFi9OzZ09vm1OnTtGvXz8eeOABgoODWb16NUOGDKFjx47UrFnT265Tp04sXLiQkSNHcvz4cVavXu29VrZsWXLlynXDzyoiIiIZixI1IiIict1eeuklihQpwsiRIxk7dixZs2alRIkS1K9f35sQqVy5Mv369WPixImMGDGCokWLsmvXrpsaV6lSpVi2bBkvv/wyDRs2JE+ePHTv3p2+ffv6tEtISPDZCBk8+8n06NGDffv2ER4eTosWLejXr5/3dCfwbCq8YcMGJk+ezIkTJ4iKimLYsGF07tzZZ6wlS5YA0L1790QxLl++3CepIyIiIgLgzMzfMYiIiMgNcs6ZfqaLcw4zS/5YKxEREUnzkj4/UkREREREREREbjklakRERERERERE0gglakRERERERERE0gglakRERERERERE0gglakRERERERERE0gglakRERCTNmDJlCs45Dh065O9QrsuPP/5IlixZuO222xJdc84lKkm127dvHy1btiR37tyEhobSunXrdPt5iIiIyLXL6u8ARERERDKCCxcu0LFjR/Lnz8/JkyeTbNOlSxeefvpp79dZsmTxuR4fH88jjzzCuXPnmDZtGufPn6dnz548+uij/Otf/8I5nbwtIiKS0SlRIyIiIpIKJkyYwLFjx3juuecYPXp0km2KFStGtWrVkh1j3rx5/PTTT2zYsIFy5coBEBERwX333cfixYtp0KDBTYldRERE0g4tfRIREckENm/eTMOGDcmbNy/Zs2endOnS9O/f33v9+++/57HHHiMiIoIcOXJQsWJFJk6c6DPG119/jXOOJUuW8PTTT5MzZ04iIiKYMGECAJMmTaJUqVLkzp2bli1bcvz48UR9Fy9eTPPmzbntttsoWLAggwcPTjH2c+fO8cYbb1CyZEmCgoKIjo5m/Pjx1/R8N9uhQ4d47bXXeO+998iWLdt1j7No0SIqVKjgTdIA3HvvvRQvXpxFixalRqgiIiKSxmlGjYiISCbQuHFj8ufPz6RJk8idOzc7duzgl19+8V7fvXs31atXp127dmTPnp3Vq1fzwgsvcO7cOTp16uQzVocOHWjTpg3z589n2rRptGvXju3bt/P9998zevRoDhw4QNeuXenTp0+imSXt2rWjZcuWzJs3j2XLlvH666+TJ08eOnTokGzsTz75JMuXL+fNN9+kQoUKfPXVV3Ts2JGcOXPy1FNPXdXzJeXChQtcuHAhxc8ua9aUX5d69epFjRo1qF+/Pt9//32y7YYOHUrv3r3JkSMHtWvX5u233yYyMtJ7ffPmzZQt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4eHh5M+fX4kaERGRTEBLn0RERDK4KVOmkCVLFn777Tef+ri4OHLmzMngwYMB2Lp1K0899RTFihUje/bslClThiFDhhAfH3/F8UuUKMELL7zgU/f111/jnPNJbpgZ7733HjExMQQFBVGsWDHeeust0uomyAEB1/eatHbtWsyMevXqeeucc9StW5d169bxv//9L9m+M2bMoEyZMlSpUuW67i0iIiLpnxI1IiIiGVzTpk3Jli0bf//7333q//GPf3Dy5EmefPJJAH7//XdKly7NmDFjWLRoEZ06dWL48OG89tprqRJH9+7d6d27N08//TSff/45L7zwAoMGDWLo0KFX7GdmxMfHp1jSSsInS5YsAGTLls2nPigoCIBNmzYl2W/nzp189913PrNpREREJPPR0icREZEMLleuXDRs2JCZM2fSrVs3b/3MmTOpVq0apUqVAjyb6tasWRPwJEdq1KjBhQsX6Nu3L8OGDcO56z/1eceOHYwaNYoxY8bQsWNHAB5++GEuXLjAkCFDePHFF8mRI0eSfadOncqzzz6b4j2WL1/ujd+foqOjAVizZg0lSpTw1q9evRqAI0eOJNlv+vTpOOdo1arVTY9RRERE0i4lakRERDKBp59+mmbNmvHLL79QunRpjh07xuLFixk+fLi3zZkzZxg6dCgzZsxgz549nDt3zntt//79FCxY8Lrvv2zZMsyMFi1a+Cylevjhh+nduzdbt25NdrlP48aNWbt2bYr3uP322687vtRUrlw5atasSa9evShSpIh3M+Evv/wSSH5J1YwZM6hRowbFixe/leGKiIhIGqNEjYiISCbQsGFDcufOzcyZM3nzzTeZP38+8fHxPPHEE942vXr1Yvz48bzxxhvcddddhIaGsnTpUl5//XXOnDlzQ/c/ePAgZpZo89xL9uzZk2yiJk+ePOTOnTvFe1xacpQWTJkyhRYtWnDfffcBnn18+vbty5tvvkmhQoUStf/hhx/YunWrz4wnERERyZyUqBEREckEgoKCePzxx72JmpkzZ1KrVi3Cw8O9bebMmUP79u199qRZsWJFimMHBwf7zL6BxMt78uTJg3OOb7/9NtHeLUCi47L/KL0tfQIoXrw4a9asYdeuXcTFxREdHc0777xDUFAQlStXTtR++vTpBAUF0aJFCz9EKyIiImmJEjUiIiKZxNNPP82UKVP44osv+Oqrr5g4caLP9bi4OO+Gt+DZp+bjjz9OcdyiRYsm2iD3n//8p8/XtWvXBjwzay4deX210tvSpz+6tEdNXFwckyZN4qmnniJnzpw+bRISEpg1axYNGzYkLCzMD1GKiIhIWqJEjYiISCZRq1YtChYsyPPPP09gYCBNmzb1uV6nTh3GjRtHTEwM4eHhTJgwgdjY2BTHfeKJJ2jXrh19+/bl/vvvZ+nSpSxZssSnTXR0NC+++CJt2rShe/fuVK9enYSEBLZv384nn3zC0qVLkx0/b9685M2b9/oe+gacPn2aRYsWAbB7926OHz/O3LlzATGC1wQAACAASURBVLjrrru8e8k8//zzTJ061WfvnTFjxpArVy6KFSvGrl27eOeddzh79mySJ1wtW7aMffv26bQnERERAZSoERERyTSyZMnCE088wejRo2nWrBm5cuXyuT5mzBg6dOjASy+9RFBQEK1ataJ58+YpJhCee+45duzYwYQJE3j33Xd5/PHHGT16NI8++qhPu/fee4+YmBg+/PBDBg8eTEhICFFRUTRu3DjVnzU1HDhwINFSpEtfT548mbZt2wKeGTEJCQk+7c6ePUv//v3Zu3cvoaGhNGrUiLfeestnqdklM2bMIDQ0lAYNGtycBxEREZF0xZmZv2MQERGRG+ScM/1Mv7ISJUrQsGFDRo0aRZYsWbzHjdesWZMcOXLw6aefEhAQkOypTP5iZiQkJPD888/z448/smHDhmTbOucws+s/R11ERET8Lm29iYiIiIjcRO+//z6BgYFMmjTJp37RokUEBgby5ptv+imy5I0dO5bAwECmTZvm71BERETkFtCMGhERkQxAM2pStn79es6ePQt4Ztfky5cPgK1bt3LixAkAIiIiiIiI8FuMSTl48CC7d+8GICQkhHLlyiXbVjNqRERE0j8lakRERDIAJWoElKgRERHJCLT0SUREREREREQkjVCiRkREREREREQkjVCiRkRERFJd27Ztcc7hnPM53nvfvn20bNmS3LlzExoaSuvWrTl06NBVjfnOO+8QGRlJUFAQt99+Ox9++GGiNidOnKBjx44UKFCAkJAQqlevzooVKxK1+/nnn2ncuDE5c+YkV65cNG3alD179vi0eeWVV7zP0KhRoxTrRURERFKDEjUiIiJyU5QqVYpVq1bRv39/AOLj43nkkUdYv34906ZNY+LE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eZg6dSoSEhLQsWNHVKtWDdevX8eePXvw5Zdfon79+nBzcwMArFixAn369IG5ubnKfeVPs7S0RKtWrcocW3BwMCIiIvDuu+9i7NixuHz5MubOnas87LeAj48Pbt68iT/++EOl/+XLl3Hy5EksWbJE4/h2dnYYN24cli9fDisrK7z++uv44YcfsHfvXmzevLnM8RMREVHpvcg5yuuvvw4/Pz+MHDkSixcvRo0aNTBjxgw0bNhQZaVPXFwcYmNj4enpiczMTOzevRvr1q1TXvlNRFWclJKFhaUCS/6vWeUaOnSodHd3V6sHIBcuXKhSt23bNtmmTRtpZmYmLS0tZfPmzWVISIhMTU1V2syaNUvWr19fGhgYSEdHx4oOX0op5fHjx2W7du2kiYmJrFu3rgwLC5M5OTkqbby8vDTGExYWJg0NDeWdO3cKHT8nJ0fOnj1b1q9fXxobG0t3d3cZERFR3odRIk9+VnT+M8vCwsLC8uKWis5bmKMUn6M8fPhQBgQESGtra2lubi79/PzktWvXVNr89ttv8vXXX5cWFhbS3Nxctm/fXv7000/lcnzaYt7CwlJxRUgpdTdLRPQCEEJI/p6RNoQQkFJq/8oIIiKicsa8hbTFvIWo4vDdbUREREREREREeoITNUREREREREREeoITNUREREREREREeoITNUREREREREREeoITNUREREREREREeoITNURUKuvXr4cQAvfv39d1KKVy6tQpGBoawsLCQqX+ypUrGDt2LJo2bYrq1aujUaNGCAgIQFJSksZxfvrpJ3To0AHVq1dHzZo10b59e1y6dKkyDoGIiIjKoKrlMg8fPsSsWbPw+uuvw8rKCnXq1IGfnx/++9//FtlvyZIlEEKgR48elRQpEZUVJ2qI6IWTl5eHoKAg1K5dW23bvn37cPjwYXz44YfYu3cvZs+ejZ9++gnt27dHZmamSttvv/0Wfn5+eOWVV7Br1y5s3rwZHTt2RHp6emUdChEREb0gbt26hVWrVqFz587YunUr1q5di0ePHqFNmzb4/fffNfb566+/MGfOHNSpU6eSoyWisjDSdQBERJVtzZo1ePDgAUaMGIHly5erbHvvvfcwevRoCCGUOhcXF7zxxhvYu3cv+vbtCwBITk5GYGAgQkJC8Mknnyht/fz8KucgiIiI6IXSuHFjxMfHw9zcXKnr1KkTHB0d8fXXX2PFihVqfSZPnozevXvj+vXrlRkqEZURV9QQ6ZmLFy/Cz88Ptra2MDc3h4uLC2bPnq1sP378ON555x04ODigevXqaNGiBdauXasyxsGDByGEwL59+zBo0CBYWlrCwcEBa9asAQB88803eOmll1CzZk0MGDAADx8+VOsbHR2Nfv36wcLCAvb29iqTEYV5/PgxwsLC0LhxY5iYmMDV1RWrV68u0fFVtPv372P69OlYunQpqlWrprbd1tZWZZIGADw9PQEA9+7dU+q2bt2KBw8eYMyYMRUbMBERURXDXKZiVK9eXWWSBgAsLCzg7OyskqMUOHDgAKKjo7FgwYIKj42IyhdX1BDpmZ49e6J27dr45ptvULNmTVy7dg1Xr15Vtt+8eRNt27ZFQEAAzM3NcezYMYwZMwaPHz/GqFGjVMYKDAyEv78/duzYgY0bNyIgIADx8fE4fvw4li9fjnv37mH8+PEIDQ1VW1kSEBCAAQMG4LvvvkNMTAw+/vhj2NjYIDAwsNDYBw4ciNjYWMyYMQPNmzfHgQMHEBQUBEtLS7z33ntaHZ8meXl5yMvLK/azMzIq/pQ2depUtG/fHt26dcPx48eLbQ8Av/zyCwCgadOmSt3Ro0dha2uLuLg4hISE4Nq1a3B2dsbMmTOVYyUiInoRMZdRV565zNNSUlJw/vx5dO/eXaU+Ozsbo0ePxsyZM2FnZ1eiMYlID0gpWVhYKrDk/5ppJykpSQKQu3fv1qp9Xl6ezM7OlhMnTpTNmzdX6mNjYyUAOWXKFKUuLS1Nmpuby9q1a8vU1FSlfvTo0dLe3l6t7/vvv6+yryFDhsj69evL3NxcKaWU69atkwBkUlKSSr+oqCiVfh9++KF0cnIq1fEVmDlzpgRQbLl+/XqR4/z666/SzMxMxsfHK+NWr169yD4ZGRmyRYsWsnnz5sqxSymlr6+vNDU1lTY2NnLlypUyJiZGDhkyRAKQBw8eLNHxFXjys6Lzn1kWFhYWlhe3lCRv0YS5jGbllcs864MPPpDm5ubyxo0bKvXh4eHSzc1NZmdnSyml9PLykn5+fiUauzjMW1hYKq5wRQ2RHrG1tYWjoyOmTZuG//3vf/Dx8UGDBg1U2iQnJ2PWrFnYtWsXEhISkJubCwAwMTFRG69Lly7K1+bm5qhXr57yNqMCrq6uSExMxOPHj1VuBerdu7fKWH369MGmTZuQkJCAhg0bqu1r3759sLa2RufOnZGTk6PUv/XWW1i1ahX+/vtvrY5Pk4CAAK3eVODg4FDottzcXIwaNQqTJk3CSy+9VOxYBQIDA3Ht2jUcOXIEBgb/3C2am5uLzMxMLF68GEFBQQDy7xP/73//iwULFsDLy0vrfRARET0vmMtoVh65zLPWrVuHNWvW4JtvvoGjo6NSf+vWLcybNw87d+4s8QodItIP/M0l0iMF92KHhoZi7NixSE1NxSuvvILFixfDx8cHADBs2DAcOXIEYWFhaN68OWrUqIENGzbgiy++UBvP2tpa5ftq1arByspKrU5KqZbcPPt2gILv79y5ozG5SUpKQnJyMoyNjTUe261bt2BjY1Ps8Wlib2+v1dsKikpG1qxZgzt37mDUqFFISUkBAOUtTikpKTAxMYGZmZlKn9DQUERERGDPnj1o0aKFyjYbGxsA+ZMzBYQQ6NixI77//vtiYyUiInoeMZfRrDxymadFR0cjICAAYWFhGDFihMq2kJAQdOjQAa1atVJynpycHOTk5CAlJQXVq1cv9BiJSD9wooZIz7i6umLr1q3IycnBsWPHMGPGDLz99tu4desWqlevjr1792LRokUYP3680mfDhg3lHsezD6Ur+L5u3boa29vY2KBWrVqIjo7WuN3V1VX5b2HHZ2trq7HvnDlztHpI3/Xr19GoUSON2y5duoTExETUq1dPbZu1tTXGjx+PpUuXKnUrVqzAJ598gnXr1sHX11etj7u7u8b9SCnVXuNNRET0ImEuo648cpkCx44dQ79+/eDv7485c+aobb906RLOnj2rNskF5Oc833//PXr16lVsLESkO5yoIdJTRkZGaN++PUJDQ+Hj44ObN2/CyckJubm5KkuDMzMzsWPHjnLf//fff6+yZHjHjh1wcHBA/fr1Nbbv3LkzPvvsMxgZGcHDw6PY8TUdX2HJTXksFx4zZoxaUrJ+/Xps2bIF0dHRKscVGRmJ8ePHIzw8HEOHDtU4Xo8ePTBz5kzExMSgSZMmAPInaWJjY/Hqq68WGysREdHzjrnMP8rr1qcLFy7Az88PnTp1wqpVqzS2Wbt2LVJTU1XqJkyYADMzM4SHh6NZs2bFxkFEusWJGiI98t///heTJk3CgAED4OTkhNTUVHz22WdwcHBA06ZNYWpqitatWyM8PBy2trYwMTHB4sWLNd7TXVaxsbGYMmUKunTpgv3792PTpk348ssvVZ7T8rS33noLvXr1Qrdu3RAcHAwPDw9kZGTg0qVLiIuLw5YtW4o9vsI4ODiU6J5tTZydneHs7KxSd/DgQRgaGsLb21upO3ToEIYOHYqOHTvCy8sLx44dU7bVrl0bTk5OAICWLVuib9++mDZtGqSUcHV1xfr163HhwgWsXLmyTLESERFVVcxlNCuPXObevXvw9fWFmZkZJk6ciJMnTyrbTExM4OnpCQBo1aqVWl8rKytYWFio5DxEpL84UUOkR+zt7eHg4IAFCxbgr7/+gqWlJd544w2sWbMGpqamAIDNmzcjMDAQI0aMgJWVFQIDA2FiYoKQkJByjWXVqlVYs2YNevfuDQsLC8ydO1ftlZnP2rp1KxYuXIjVq1fj2rVrqFGjBpo0aYLBgwdrfXy6Fhsbi+zsbBw4cABt27ZV2TZ06FCsX79e+X7jxo2YPn065s2bh5SUFLzyyiuIiopC+/btKzlqIiIi/cBcpuJcuHABCQkJAKD2PBxHR0fcuHGjQvdPRJVHSCl1HQPRc00IIavS79nBgwfRsWNHnDhxQuMVGao4QghIKYWu4yAiohdXVctbNGEuUzmYtxBVHM3r/oiIiIiIiIiIqNJxooaIiIiIiIiISE/w1ieiCvY8LCGmysElxEREpGvMW0hbzFuIKg5X1BARERERERER6QlO1BA9J4QQWLRoka7DKLFGjRpBCAEhBNauXavUe3t7K/WhoaFK/R9//IHAwEB4eHjAyMgIzZo103pfaWlp+Oijj+Dk5ARzc3O4uLhgzpw5ePz4sUq77OxsTJs2DQ4ODjA3N4eXlxfOnDmj0mbYsGFKfM+WwMBApV2/fv2U+jFjxpT04yEiInouvSh5y9Nyc3PRsmVLCCGwffv2Yvelbd6iKRexsLAocuy3335b4/8D5i1E+oGv5yYinevXrx8mT54MJycnlfo33ngDixYtQv369ZW633//HXv37sXrr7+OvLw85OXlab2foKAg7Ny5E/Pnz0ezZs0QFxeHsLAwJCcn4/PPP1faTZw4ERs3bsTixYvRqFEjfPbZZ/Dx8cG5c+fg4OAAAAgLC1OZkAGAmJgYhIWFoXv37kpdeHg4pkyZgt69e5foMyEiIiL9VJK85WlfffUV/vrrL633o23eAgBjx47FoEGDlO8NDQ0LHXfPnj2Ii4vTuI15C5F+4EQNEemcnZ0d2rRpo1ZvZWWlVt+zZ0+88847APJXtZw8eVKrfeTk5GDbtm0ICQnB2LFjAQAdO3bEzZs3ERkZqSQ8t2/fxtdff43ly5fjgw8+AAC0adMGjRs3xtKlS/HZZ58BAJycnNQStCVLlsDW1hbdunVT6lxcXODi4gITExOt4iQiIiL9VpK8pUBiYiLCwsLw+eefY/jw4cXuQ9u8pUDDhg0L3ffTMjIyMG7cOHz66acYNmyY2nbmLUT6gbc+EenI+vXrYWhoqHZlJSMjA5aWlvjkk08AAJcvX8Z7772Hhg0bwtzcHG5ubggPD0dOTk6R4zdq1EhtyerBgwchhFCZ3JBSYunSpWjSpAlMTEzQsGFDzJ8/H/r6IEEDg9KdtqSUyMnJQc2aNVXqraysVFbl7Nu3D7m5uRgwYIBSZ2lpiR49eiAqKqrQ8R8+fIgffvgB7777LoyNjUsVIxERkb5i3lI2wcHB8PX1hbe3t1bttc1bSio8PBx2dnbw9/cv9RhEVPE4UUOkI3369EG1atXw7bffqtT/8MMPSE1NxcCBAwEAd+7cgYuLC7744gtERUVh1KhRWLhwIaZPn14ucUyePBnTpk3DoEGDsHfvXowZMwbz5s3DggULiuxXkEAUV/QlcTI2Nsbw4cOxYsUKHD9+HKmpqYiNjcWaNWtUEsOLFy/Czs4Otra2Kv3d3d1x5cqVQpOj7777DpmZmRgyZEiFHgcREZEuMG8pvcOHD2PHjh1YuHCh1n20zVsKLFiwAMbGxrCyskLfvn0RHx+v1uaPP/7AokWLsGLFCgjBlzUR6TPe+kSkIzVq1ICfnx8iIyMxadIkpT4yMhJt2rTBSy+9BCD/4XQFV1+klGjfvj3y8vIwc+ZMfPrpp2X6h/batWtYtmwZvvjiCwQFBQEA3nrrLeTl5SE8PBzjxo1D9erVNfbdsGGDVkt3Y2Njtb56VNG++uorBAYGqiwNnjhxImbMmKF8n5ycDCsrK7W+1tbWyM7ORmpqKmrUqKG2fdOmTXjppZfQrl27igmeiIhIh5i3lE5OTg5Gjx6NadOmoUGDBrhx44bWfbXJWwDA398fPXr0gL29PS5evIh58+bhjTfewNmzZ2FnZ6e0GzNmDAYPHoxWrVqV+biIqGJxooZIhwYNGoS+ffvi6tWrcHFxwYMHDxAdHa1yxSUzMxMLFixAREQEbt26pfKk/8TERNjb25d6/zExMZBSon///ipLkt966y1MmzYNly9fRsuWLTX27dmzJ06cOFHsPl5++eVSx1fePvroI+zZswdr1qyBq6srjh07htmzZ8Pe3h4hISFKO01JZMEVNk3b/vrrLxw8eBAff/xxxQVPRESkY8xbSm7ZsmXIyMjAlClTStxX27xlw4YNytcdOnSAt7c3mjdvji+//BJz5swBkL/y9/jx4/j3v/9d9oMiogrHiRoiHfLz80PNmjURGRmJGTNmYMeOHcjJycG7776rtJk6dSpWr16NsLAwtG7dGlZWVti/fz8+/vhjZGZmlmn/SUlJkFKidu3aGrffunWr0ITHxsZG7b5pTYp660BlOn/+PBYtWoRdu3bh7bffBgC8+eabyM7OxowZMxAUFARLS0tYW1sjOTlZrX9KSgqMjY01XqnbvHkz8vLyeNsTERE915i3lMz9+/cxa9YsrFy5EhkZGcjIyMDDhw8BAOnp6Xjw4EGhMWmbt2ji6uoKDw8PnDp1CgCQnZ2NiRMnYsqUKTA2NkZKSorSNjMzEykpKahZsyZvhyLSI3xGDZEOmZiYoHfv3oiMjASQv3y4U6dOKstUt23bhg8//BDTp09H586d0bp1a62exG9qaqpyFQsA/v77b5XvbWxsIITAkSNHcOLECbXi5eVV6PgbNmyAsbFxseXQoUMl+UgqzIULFwAAHh4eKvWenp7IyspCQkICAMDNzQ337t1T+6wuXLgAV1dXjQ8z3rRpE1q3bg1XV9cKip6IiEj3mLeUTEJCAlJTU+Hv7w9ra2tYW1vjlVdeAQAMHToUjo6OhfbVNm8pzNPP2klLS8Off/6J0NBQJQ5ra2sAQFhYGKytrfHgwYNSHSMRVQyuqCHSsUGDBmH9+vX48ccfceDAAaxdu1Zle0ZGhkqCI6XE5s2bix23QYMGyj/yBX766SeV7318fADkX6EqeOW1tqrarU8FydCpU6fQsGFDpf7UqVMQQijbu3TpAgMDA2zduhWBgYEAgNTUVPzwww8YMWKE2rgXLlzA2bNnsWzZsko4CiIiIt1i3qI9Z2dnxMbGqtTdvXsX7733HmbNmqUcjyba5i2aXL58GWfPnsW0adMAABYWFmpxAPmv+w4MDMSAAQNgYWFRomMjoorFiRoiHevUqRPs7e0xcuRIGBsbo0+fPirbO3fujFWrVqFJkyaws7PDmjVrNN6a86x3330XAQEBmDlzJjp06ID9+/dj3759Km1cXV0xbtw4+Pv7Y/LkyWjbti1yc3MRHx+PnTt3Yv/+/YWOb2trq/ZmpMqQnp6uvCb75s2bePjwIbZv3w4AaN26tZK4jBw5Ehs2bFDuYW/VqhVee+01BAYG4t69e3BxccHx48cRHh6OESNGwNzcHABQr149BAYGYurUqTAyMoKjoyMWLVoEKSUmTJigFs+///1vGBkZKW+7ICIiep4xb9GehYWF2oOJCx4m7O7ujvbt2yv1pc1bFi1ahPj4eHh7e6NOnTq4ePEi5s+fj1q1amHUqFEAACMjo0IfkOzk5KQ3L30goqdIKVlYWCqw5P+aFW3cuHESgOzbt6/atsTERNm7d29Zo0YNWbt2bTlhwgS5adMmCUBev35daQdALly4UPk+JydHfvTRR7Ju3brS0tJS+vv7y927d0sA8sSJEyr7+Oqrr+Qrr7wiTUxMpJWVlWzVqpWcPXt2sXGXB0dHRzl69Gi1ei8vL+nn56dWf/36dQlAY1m3bp3SbujQofLZzz4xMVEGBARIR0ftfjbPAAAgAElEQVRHaWpqKl1cXGRYWJhMT09Xaff48WM5depUaWdnJ01NTWWHDh3k6dOn1WLJy8uTjo6Osnv37qU+zqc9iVfnP7MsLCwsLC9uYd5StJLmLc8qyGO2bdumUl/avGX37t2yTZs20sbGRhoZGUl7e3vp7+8vb926VWwsz/4/0OY4n+0v9eBnloXleSxCyn/uXySi8ieEkPw9K1yjRo3g5+eHZcuWwdDQUHmQnbe3N6pXr45du3bBwMBA47NhqoK8vDzk5eXB2dkZPXr0wBdffFFoWyEEpJR8kh8REekM85aiMW/5B/MWoopTNc8gRPRcWblyJYyNjfHNN9+o1EdFRcHY2BgzZszQUWRl9+6778LY2Bg3b97UdShERERUDpi3EFFF44oaogrGK1NFO3fuHLKysgDkX6WqVasWgPwH4T169AgA4ODgAAcHB53FWBbXrl1T3lpRp04dlQcCPotXpoiISNeYtxSNecs/mLcQVRxO1BBVMCY8pC0mPEREpGvMW0hbzFuIKg5vfSIiIiIiIiIi0hOcqCEiIiIiIiIi0hOcqCF6wQ0bNgxCCAghMGTIEKX+7t27GDBgAGrWrAkrKysMGTIE9+/f12rMJUuWwMnJCSYmJnj55Zfx9ddfq7V59OgRgoKCUKdOHZiZmaFt27Y4fPiwWrsrV66gZ8+esLS0RI0aNdCnTx/cunVLpc2UKVOUY+jRo0ex9URERFQ1acpbkpKSMH78eLz++uswMTGBhYVFicaMjo5Gy5YtYWpqCicnJ6xYsUJju0WLFqFx48YwMzNDq1at8PPPP6tsv3HjhhLb06VZs2Yq7Zi3EFFxOFFDRHjppZdw9OhRzJ49GwCQk5ODrl274ty5c9i4cSPWrl2LX3/9FW+//TaKu299zpw5mDp1Kvz9/bFnzx74+voiKCgIq1atUmn3zjvv4LvvvsOCBQuwfft2WFpawtfXF2fOnFHaJCUl4c0338SdO3ewadMmrF69GmfOnEGnTp2QlpamtBs3bhyOHj0KT09PlX0UVk9ERERV17N5y+3bt/Htt9+iTp06aNWqVYnGOnbsGN5++214enoiOjoaw4cPx4QJE9QuMi1atAjTp0/H6NGjsXfvXri4uMDPzw9nz55VG/OTTz7B0aNHlbJ582aV7cxbiKhYUkoWFpYKLPm/Zvpr6NCh0t3dXaXu22+/lQDk+fPnlbojR45IAHLv3r2FjpWeni6rV68uJ02apFL/zjvvyFq1asns7GwppZSHDh2SAOTu3btV+trb28tevXopdbNnz5ZmZmYyMTFRqTt9+rQEIJcuXaq2fy8vL+nn56d1vb558rOi859ZFhYWFpYXt1TFvCU3N1f5eubMmbJ69epaj9e1a1f52muvqdR98MEH0t7eXhk3MzNT1qxZUwYHByttcnJypJubm+zfv79Sd/36dQlAbtu2Tat9M29hYWEprHBFDRGpiYqKQvPmzeHu7q7UtWvXDo6OjoiKiiq03++//460tDT4+vqq1Hft2hX379/H0aNHAQBxcXEQQqBLly5KGzMzM3h5eSE6OhrZ2dlKOw8PD9SpU0dp5+npCTs7O+zevbtcjpWIiIiqNgOD0v1Jk5WVhQMHDmDAgAEq9YMGDcLdu3dx+vRpAMCvv/6KBw8eYODAgUobQ0NDvPvuu4iOjoaUfEsWEZUvTtQQkZqLFy+iadOmavXu7u64dOlSof0MDQ0BANWqVVOpNzExAQBcuHBBaWdgYKC0f7pdVlYWrl27prR7dqyCdgVjEREREZVGfHw8Hj9+rJbzFFyoKsh5Ll68CABwc3NTa5eamorbt2+r1I8aNQpGRkaoVasWhg8fjnv37lXUIRDRc4oTNUSkJjk5GVZWVmr11tbW+Pvvvwvt5+zsDAMDA8TFxanUHzt2DACUvq6ursjNzVWuVAH5t2EW9Hu63blz55CRkaG0S0hIQEJCQpFxEBERERUnOTkZANRyHmtrawD/5CPJyckwMTGBmZlZke1MTEwQFBSE1atX4+eff8b06dOxe/dueHl5qeQyRETF4UQNEWkkhFCrk1JqrC9gaWmJ999/H59++imio6ORnJyMTZs2YdOmTQD+WZrcpUsXuLi4IDAwEOfOncO9e/cQEhKCq1evqrQLCAjAo0eP8OGHH+L27duIj49X3vZQ2mXORERERE8rLLd5ur6wvOjpbXXr1sXKlSvRq1cveHl5YdKkSdixYwcuXbqEyMjICoiciJ5X/EuHiNRYW1srV5melpKSolw9KsySJUvQunVrdO/eHTY2Npg0aRLmzp0LID+BAQBjY2Ns3boVaWlpaNGiBezs7LBv3z5MmDBBpZ2LiwvWrVuHPXv2oH79+nB2doa1tTW6d++utCEiIiIqjYKc5tmcp+D7gu3W1tbIzMxEZmamSruUlBSVdpp4eXmhTp06OHXqVLnFTUTPP07UEJEaNzc35X7sp124cAFNmjQpsq+NjQ1+/PFH3L59G+fOnUNCQgIaNGgAAGjTpo3SzsPDA5cuXcKVK1dw+fJlnD17FhkZGXBwcEDDhg2VdoMHD8bdu3dx7tw53L59G9u2bUN8fDzatm1bTkdLRERELyInJydUq1ZNLecpeA5eQc5T8GwaTe0sLS1Rr169IvfDhw0TUUlxooaI1HTv3h3nzp1TSUiOHTuGGzduoHv37lqN4eDggGbNmsHQ0BBfffUVvL294erqqtJGCAEXFxe4uroiKSkJW7ZsQUBAgNpY1apVQ7NmzeDg4IADBw7gwoUL+OCDD8p2kERERPRCMzExQadOnbB161aV+sjISNjb26Nly5YA8t98WbNmTWzZskVpk5ubi61bt6Jr165F3hYeGxuLpKQktG7dumIOgoieS0a6DoCI9E/fvn3RokUL9OvXD+Hh4cjJyUFwcDDatm2Lbt26Ke3mzJmDOXPmID4+Ho6OjgCAiIgIpKenw9nZGXfu3MGqVatw7tw5/Prrryr7mDdvHlxcXGBnZ4fLly/jk08+gaOjI0JCQpQ2aWlpmDVrFt58802Ympri2LFjCA8PR1BQELy9vSvlsyAiIiL9t337dgD5q1xyc3OV75s2baq81UlT3jJjxgy8+eab+OCDDzB48GAcOXIEa9aswZdffqk8D8/ExAShoaGYPn06ateujZYtW2Lt2rWIj4/H5s2blRgmT54MAwMDtGnTBtbW1jh58iTCw8PRrFkzlVd7ExEVhxM1RKTGyMgIP/74I8aPH48hQ4ZACIEePXpg2bJlKleN8vLykJubq7ak9/PPP8f169dhZmYGHx8fHD9+HC4uLiptUlJSEBwcjLt378LOzg79+/fHrFmzVN6oYGBggPPnz2PdunV49OgRnJ2d8emnn2L06NEV+wEQERFRldK/f3+N38+cOROzZs0CoDlvadu2LXbt2oXp06dj48aNcHBwwOeff47AwECV8aZMmQIAWL58ORITE+Hu7o69e/filVdeUdo0bdoUK1euxJo1a5CWlgYHBwcMGTIEc+bMgampaUUcNhE9pwTvmSSqWEIIqc+/Z8OGDcPJkydx5swZGBgYVMm3KeXl5SEvLw8+Pj6wtLTEnj17iqzXV0IISCkLXz9NRERUwZi3VDzmLURUnKp3ZiOicvf777/D2NgY/v7+ug6lVEJCQmBsbIzDhw9rVU9ERERVF/MWInrecUUNUQXT9ytTN27cwP379wEAtra2aNy4sY4jKrmEhATcvXsXAGBlZQVnZ+ci6/UVr0wREZGuMW+peMxbiKg4nKghqmD6nvCQ/mDCQ0REusa8hbTFvIWo4vDWJyIiIiIiIiIiPcGJGiIiIiIiIiIiPcGJGiIiIiIiIiIiPcGJGiIiIiIiIiIiPcGJGiIiIiIiIiIiPWGk6wCInnempqaJQgg7XcdB+s/U1DRR1zEQEdGLjXkLaYt5C1HF4eu5ifScEKI/gC8A+EkpT+o6HvqHEMIUwHYAjwEMlFI+1nFIREREOsW8RX8xbyGqOnjrE5EeE0IMArAcgC+THf0jpcwE0AeAALDjSQJERET0QmLeot+YtxBVHZyoIdJTQoihABYB6CylPKPreEizJ1ej3gWQBmCXEMJMxyERERFVOuYtVQPzFqKqgRM1RHpICPEBgPkAOkkpz+s6HiqalDIbwGAASQD2CiGq6zgkIiKiSsO8pWph3kKk/zhRQ6RnhBCjAYQC6CilvKTreEg7UsocAEMB3AQQLYSw1HFIREREFY55S9XEvIVIv3GihkiPCCEmAZgCwFtKeVXX8VDJSClzAYwEcAHAPiGElY5DIiIiqjDMW6o25i1E+osTNUR6QggxDUAQAC8p5XVdx0OlI6XMQ/7/xxMAYoQQNjoOiYiIqNwxb3k+MG8h0k+cqCHSMZFvJvKXn3pLKW/pOiYqGymlBDAewEEAB4QQtXQbERERUflg3vL8Yd5CpH84UUOkQ0IIAWAe8p++7y2lvK3jkKicPEl6ggHsBXBQCGGn45CIiIjKhHnL84t5C5F+MdJ1AEQvqifJzkIAbyE/2UnScUhUzqSUUggRCiAL+UmPj5TyL13HRUREVFLMW55/zFuI9Acnaoh04EmyswxAO+S/yvJvHYdEFeTJFao5QojHAA4JITpJKf/UdVxERETaYt7y4mDeQqQfOFFDVMmEEAYAVgJ4BcBbUsoUHYdElUBKuUAIkYV/kp4buo6JiIioOMxbXkzMW4h0ixM1RJVICGEIYA0AFwC+UsqHOg6JKpGU8vOnrlD5SCn/0HVMREREhWHe8mJj3kKkO5yoIaokQggjAOsBOADoJqVM1W1EpAtSyi+FENkAYoUQnaWUl3QdExER0bOYtxDAvIVIVzhRQ1QJhBDGACIAWAHoIaVM13FIpENSytVPrlAdEEJ0kVKe13VMREREBZi30NOYtxBVPk7UEFUwIUQ1AFsAGAN4W0qZqeOQSA9IKdc/SXr2CyG6SinP6jomIiIi5i2kCfMWosrFiRqiCiSEMAWwHUA2gD5Sysc6Don0iJRy85PlxD8JIfyklKd0HRMREb24mLdQUZi3EFUeTtQQVRAhhDmA7wE8ADBYSpmt45BID0kptz25QhUlhHhHSnlM1zEREdGLh3kLaYN5C1HlMNB1AETPIyFEdQB7ACQBGMRkh4oipdwFYDiA3UKI9rqOh4iIXizMW6gkmLcQVTxO1BCVMyFEDQA/ArgJYKiUMkfHIVEVIKWMAjAYwPdCiI66joeIiF4MzFuoNJi3EFUsTtQQlSMhhBWAnwBcADBSSpmr45CoCpFS7gfQH8BWIUQXXcdDRETPN+YtVBbMW4gqDidqiMqJEMIGQAyAkwACpZR5Og6JqiAp5UEAvQFsEkJ013E4RET0nGLeQuWBeQtRxeBEDVE5EELUBnAAwEEA46SUUrcRUVUmpfwPgJ4A1gkheuk6HiIier4wb6HyxLyFqPzxrU9EZSSEsEf+FaldAEKZ7FB5kFIef3Jlaq8QwlhKuU3XMRERUdXHvIUqAvMWovLFiRqiMhBCOCD/itRmAHOZ7FB5klKeEkL4AvhRCFFNShmh65iIiKjqYt5CFYl5C1H54UQNUSkJIRogP9n5l5QyXNfx0PNJSnlWCPEWgH1PrlCt13VMRERU9TBvocrAvIWofHCihqgUhBCNAfwM4Asp5RJdx0PPNynl70KITgBinlyhWq3rmIiIqOpg3kKViXkLUdlxooaoGEIIKyllylPfOyM/2VkopfxCd5HRi0RKeVkI0RHAz0+SHuVnTwhhBiBPSpmluwiJiEgfMG8hfcC8hahs+NYnoiIIIVwBHH3q+ybIf0PCfCY7VNmklH8A8AIwSQgx+alNowHM1U1URESkL5i3kD5h3kJUepyoISraewB+AgAhRDPk39sdyiWcpCtSyhvIT3oChRDTnlRHA3hPCMFzOhHRi415C+kV5i1EpcNfDqJCCCEE8hOeSCHEKwD2AwjmQ9FI16SUfyI/6fEXQswEcAFAMoD2Og2MiIh0hnkL6SvmLUQlx2fUEBXOA4AxgFwA+wCMkVJu021IRPmklH8JIbwBxAAwARCJ/AT9sC7jIiIinWHeQnqLeQtRyQgppa5jINJLQoiFAGoB8APwAYDjAHoB6IL85OcvHYZHLzAhRDgAAWAHgOvIT8hPIv/n00FKma3D8IiISAeYt5C+Yt5CVHKcqCHS4Mk9s3eQP+O/DYAbAHcAUcj/R2aH5C8P6YgQwg3AEAB9AFgi/+fyTQDWAIZJKaN1GB4REVUy5i2kz5i3EJUcJ2qINBBC9EZ+YpMCYPuTrw/wNYKkb54kP70B9Ef+svdTUspWuo2KiIgqE/MWqiqYtxBphxM1RBoIIawB+AD4XkqZq+t4iLTx5DWsDlLKA7qOhYiIKg/zFqqKmLcQFY4TNUREREREREREeoJvfSoFMzOzu5mZmXa6joP0n6mpaWJGRoa9ruOgqoHnFtIWzy1UVjzfEM8jVFY8j5C2eL4pOa6oKQUhBJ/HRloRQkBKKXQdB1UNPLeQtnhuobLi+YZ4HqGy4nmEtMXzTckZ6DoAIiIiIiIiIiLKx4kaIiIiIiIiIiI9wYkaIiIiIiIiIiI9wYkaIiIiIiIiIiI9wYkaIiIiIiIiIiI9wYmaStCtWzc4OTkhIyNDpf7y5cswNTVFWFgYAODGjRsQQijljz/+UGm/ceNGNGnSBKampnB3d8eWLVtUtp8/f16l//379yv2wMrRlStXMHbsWDRt2hTVq1dHo0aNEBAQgKSkJK36X716FV27doWFhQVq166NsWPHIj09XaXNsGHDVD6fgrJ9+3alzcGDBzW2EULAxMSkXI+ZqDzxPKMuLi4O7du3h5mZGerVq4eZM2ciNze32H6PHj1CUFAQ6tSpAzMzM7Rt2xaHDx9WaTNr1qxCzxVdu3ZV2v3xxx8IDAyEh4cHjIyM0KxZs3I/TqKKxHOLqpMnT2L48OFwc3ODgYEBevToUaL+d+7cwYgRI1CnTh2YmprC1dUVK1euVGlz5coV9OzZE5aWlqhRowb69OmDW7duFTpmbm4uWrZsqZbTEOmb8jifjB49Gm5ubrC0tETNmjXx2muv4dtvv1UZr6qcTwqTnZ2NadOmwcHBAebm5vDy8sKZM2e06qvN30T79+/HoEGD4OTkBCEExowZo3GsRo0aacxzqtrnWWVJKVlKWPI/Nu1du3ZNmpmZyalTp6rUe3l5SWdnZ5mRkSGllPL69esSgPzkk0/k0aNHZWZmptJ227ZtEoD86KOP5IEDB+S4ceOkEEJGRUUpbdLT0+XRo0dlaGioBCCTkpJKFKcurVixQrZo0UIuXbpUxsbGyvXr18uGDRtKV1dX5fMpTHJysqxXr55s166djI6Olhs2bJC2trZywIABKu2GDh0qX3rpJXn06FGV8r///U9p8+DBA7Xtv/zyizQ3N5e9e/cu8XE9+VnR+c8sS9UoJT23PI3nGVXx8fHS0tJS9uzZU8bExMgVK1Zo/Hw06dixo6xdu7b85ptv5J49e2Tnzp2lqamp/O2335Q2f/75p9q5Yu3atRKAXLZsmdJu586dsn79+rJv376yefPm0t3dvVyOj+cWlrIWbc83PLeoWrp0qXRycpKDBg2Sjo6O0s/PT+u+d+/elY6OjrJ169Zyy5Yt8sCBA/Krr76Sy5cvV9rcu3dP2tnZyVdffVXu3LlTRkZGysaNG0snJyeZmpqqcdwVK1ZIOzs7CUBu27ZN63h4HmEpa9HF30TDhg2Ty5Ytkz/++KOMjo6W//d//ycByIiICKVNVTmfFGb06NHS0tJSrl69Wu7bt0++9dZb0sbGRt6+fbvIftr+TTRx4kTp5uYmhw8fLq2srOTo0aM1jufo6Cj79eunlu9kZ2eX+Jh4vinF75euA6iKpTR/TIWHh0sjIyN59uxZKaWU33zzjQQgY2JilDYFJyVN/8g2adJE9u/fX6WuS5cusnXr1mpt161bVy4npaysLHnr1q0yjaGt+/fvy7y8PJW6I0eOSABy+/btRfZdsGCBNDc3VzneiIgICUCeP39eqRs6dGip/kjau3evBCC/++67EvflSYmlJKUsEzVS8jzztMDAQNmgQQOV5G7+/PnSxMREZXL2WYcOHZIA5O7du5W69PR0aW9vL3v16lXkPoODg6WRkZFMTExU6nJzc5WvS3sO0oTnFpaylpKcb3hu+cfTv9NeXl4lmqjx9/eXTk5OMj09vdA2s2fPlmZmZirnkdOnT0sAcunSpWrt7969K62srJTPjRM1LJVZdPE3kSbt2rWTnTt3VqvX9/OJJgkJCdLQ0FB++eWXSt3Dhw+lra2tDA4OLrKvtn8TPX0ec3R0LHKiprBtJcXzTckLb32qJJMnT0aTJk0QEBCAxMREBAcH4/3334ePj0+xfa9fv45Lly5h4MCBKvXvvfceTpw4ofXtQdr67bffMH78eDg4OOCbb74p17ELY2trCyGESp2npycA4N69e0X2jYqKgo+PD2rVqqXU9e3bFyYmJoiOji5zbBEREbCysoKfn1+ZxyKqSDzP/CMqKgq9evVSuWVx0KBByMrKwoEDBwrtFxcXByEEunTpotSZmZnBy8sL0dHRyM7O1thPSonIyEh07twZderUUeoNDPjPLFV9PLf8o7S/0w8fPsSWLVswcuRImJmZFdouLi4OHh4eKucRT09P2NnZYffu3Wrtg4OD4evrC29v71LFRVTZynI+KYytrW2h/z6XhS7+Jtq3bx9yc3MxYMAApc7S0hI9evRAVFRUkX21/ZuIuUnVwP9LlcTY2BirV69GXFwc2rRpAwBYvHixVn0vXrwIAGjatKlKvbu7O4D8+zrL6v79+1i2bBk8PDzQsmVLxMTEIDg4GIGBgUobKSVycnKKLfmTpmX3yy+/AFA/7mddvHhRrY2JiQmcnJxw6dIllfr4+HhYWVnB2NgYnp6eavfIPystLQ27du1C//79+Ywa0ns8z+RLS0vDrVu31I6lUaNGMDc3VzsvPM3Q0BAGBgYwNDRUqTcxMUFWVhauXbumsd/BgweRkJCAIUOGaPNREFUpPLeU3enTp5GVlQVra2v06NEDJiYmsLW1RVBQkMrzIwwNDVGtWjW1/iYmJrhw4YJK3eHDh7Fjxw4sXLiwQmImqghlOZ8UKPh9Tk5OxsaNG7Fv3z6MHj26XOLT9fnk4sWLsLOzg62trUq9u7s7rly5gry8vCL7avs3kbYiIiJgamqK6tWrw9fXF6dPny7VOFRynKipRG3btkXPnj1x48YNzJ07F7Vr19aqX3JyMgDAyspKpd7a2hoA8Pfff5cqnpycHOzZswd9+/aFg4MD5s6di/bt2yMuLg6///47pk6dCnt7e6X9oUOHYGxsXGzZsGFDqeJ5WmZmJoKDg9G8eXN06NChyLbJyclqnw2Q//k8/dl4enpi0aJF2LlzJ7Zv34769etj4MCBWL9+faFj79ixA2lpafzji6oMnmeAlJQUjcdScDxFHYurqytyc3NVEhEpJeLi4gAU/jls2rQJFhYW6NWrV9EfCFEVxXNL2dy9exdA/gqYOnXqICoqCrNmzcK///1vlQd5urq64ty5cyoPW01ISEBCQoLKZ5WTk4PRo0dj2rRpaNCgQYXETFRRSns+KbBr1y4YGxvDxsYGI0eOxLJly9CvX79Sx6NP55Oi/q7Jzs5GampqqfqW5lz79ttv44svvsD+/fuxatUqJCQkoEOHDmqTxlQxjHQdwIvk2rVr2L9/P4QQiI2NxahRo0rU/9lbgwpmaZ+t18a9e/fQokUL/O9//0P37t3x7bffokePHhqv4hR49dVXceLEiWLHbty4caHbpJQqb10xMDDQuPwuMDAQ165dw5EjR7RanqfpM5BSqtSPHz9eZfs777yDTp06YcaMGRg2bJjGcSMiIuDo6FjsZBGRvuB55h/anBee1aVLF7i4uCAwMBAbNmyAnZ0dFi5ciKtXrwLQvFw4KysL3333HXr37g1zc/Ni4yKqinhuKZuC3MfNzQ3/+te/AAA+Pj7Izs5GcHAw5s+fj7p16yIgIADLli3Dhx9+iPDwcGRmZuLDDz+EEELl/LNs2TJkZGRgypQpFRIvUUUq6/nE29sbJ06cQEpKCqKjozFmzBgYGRlh5MiRJY5FH/8mKix/KWzb00qT+xRm+fLlytcdOnRAt27d0KRJEyxYsAAbN24s8XhUMpyoqURBQUGoW7cuQkNDMWLECERHR6Nbt27F9iu46pScnAw7OzulvuCqccH2kjAwMICVlRXu3buHBw8eICUlBVlZWUWelCwsLODh4VHs2M/eMvC0DRs2YPjw4cr3Q4cOVVvREhoaioiICOzZswctWrQodn/W1tbKFbunpaSkwM3Nrci+/fv3x6hRo5CUlKQ2m5+YmIiYmBiEhISU6uRGpAs8z6gey7NSUlKKPBZjY2Ns3boVAwYMUM4/LVq0wIQJE7B48WLUrfv/7N13VBTX2wfw79B7RxAVrAiiERU1GguCCmJHLGhsIbFETdRYYmyAGkw0GjV282InNmyxRFGMGruJBgOoUdCgohgRpAksz/sHPyauu8Auy7KAz+ece064e+fOnQ18nb17Z6amzDaHDx9GWloar7xj1Rpni2qsrKwAAF5eXlL1Xl5eKCgoQHx8PGrWrIlGjRohPDwckyZNwrZt2wAAAQEB8PPzw61btwAUXpoRHByMNWvWIDs7G9nZ2UhPTwcAZGVlIS0tDebm5mo5DsbKQ1nzpIiFhQU8PDwAAF27dkVubi6mTp2KUaNGKf03XNk+E5X0uUZXVxfGxsbF9qnKZyJFWFtbw8vLC9evX1e5L1Y6vvSpguzYsQMnTpzA2rVrMXr0aHTv3h0TJ06UWtpanKI/rKLrvIsULTtr3Lix0uOxsbFBfHw8zp8/j0aNGmHy5Mmws7PDsGHD8Msvv0jN8BYpj2V+vXv3xtWrV8USHBws9fqqVavw9ddfYx/ZcbAAACAASURBVNOmTfDx8VHoWFxdXWXem9evX+PevXtwcXEpcduSrh2NiIiARCLhD1+syuCcKWRkZARHR0eZY3nw4AGysrJKzQV3d3fEx8fjzp07uH37Nm7evIns7Gw4ODjA0dFRpv327dtRs2ZNlW6EyFhlxtmiuuLut1d0HpKTkyPWDRs2DMnJyYiJicGjR4+wZ88e3Lt3D+3atQNQeClURkYGRowYAUtLS1haWqJ58+YACj/sOTk5qeUYGCsPquRJcVq1aoX09PQy3Zy8sn0mcnV1xbNnz2QuVYqNjYWzs3OJVxqo8plIUeq6jxeTQ9OPnaqKBUo+iu7FixdUo0YNGjJkiFh39+5dMjAwoK+++kqsK+3RloMHD5aq8/HxKbdHW2ZmZtKWLVvI09OTBEEgBwcHmj59Ot2/f19sk56eTlevXi21PH/+XOH9vmnnzp0kCAItXrxYqe0WL15MxsbGUvuNiIggAPTXX38Vu11BQQF5enqSk5OT3Nc9PDyoZcuWSo3lbeBH0XFRoiibLW/inJE2btw4cnR0pNevX4t1YWFhpK+vTy9evFB4zEREz549I2trawoODpZ57cWLF6Snp0dTpkwptR9+PDeXylQUzRvOluIp+3juZs2akYeHh1TdkiVLSEtLix4/flzsdqdOnSIAFB0dTUREr169oujoaKlSdN4THBxM586dU2g8nCNcVC2a+Ewkz+jRo8nMzIzy8vKk6qtSnhQpejz32rVrxbpXr14p/HhuZT8TKfMI7pSUFLK2tqaRI0cq1P5NnDdl+PvS9ACqYlE2lIKCgsjCwoKSk5Ol6kNCQkhPT49iY2OJqORQ2r17NwmCQF999RVFR0fT5MmTSRAEOnr0qEzbsoTSm+7fv09z584lR0dHmj9/fpn6UNaZM2dIV1eXvLy86OLFi1Ll77//lmqnra1NW7ZsEetSU1OpVq1a9MEHH9Dx48dp69atZGNjI3VSmJiYSJ07d6Z169ZRVFQU7d27l3x9fQkAbdu2TWY88fHxBICWLVum0nFxKHFRpqgyUcM5I+3evXtkampKffv2paioKFq9ejUZGRnRzJkzpdp5eXlRgwYNpOoWLFhAP/30E0VHR9O6devI0dGRWrZsSVlZWTL7WbduHQGg69evyx1HZmYm7dmzh/bs2UOenp5Up04d8efExMQyHx9nCxdVi6J5w9ki7dmzZ+LfcJMmTahVq1biz8+ePRPbycuWQ4cOkSAINHz4cPrll19o+fLlZGRkRGPHjhXbZGRk0LRp0+jQoUN04sQJCg0NJUNDQxo/fnyJ41L2gy0RcY5wUblU9Geis2fPUp8+fSg8PJxOnz5NBw4coNGjRxMAuV/0VvY8Kc6ECRPIzMyMNm7cSCdOnKDu3buTlZUVPXr0SGxT1s9ERIWfi4pyy9bWlnx9fcWfMzMziajwC/ShQ4fStm3b6PTp0/R///d/1LhxYzIxMaG4uDilj4nzpgx/X5oeQFUsyoTSuXPnSBAEWrduncxrr1+/psaNG5OnpycRlf6P7ObNm8nZ2Zn09PTI1dWVIiIi5LZTNZSKSCQSevr0qUp9KGr+/PkEQG55c9Y2OjqaAFB4eLjU9rdv3yYfHx8yMjIia2trmjBhghg0RET//vsv9enTh2rXrk16enpkbGxMHTt2pEOHDskdz9y5c0lbW5uePHmi0nFxKHFRppR1ooZzRr7Lly9T+/btSV9fn2rWrElz586l/Px8qTadO3eWWVX3xRdfUJ06dUhXV5dq165NU6ZMobS0NLn76NixI7m6uhY7hqL3W155O8eUwdnCRdWiSN5wtsgqOg+RV4pWvBDJzxaiwkmrpk2bkp6eHtWqVYtmz54ttQogKyuLfH19ydramvT09KhJkya0cuVKkkgkJY6LJ2q4aKJU9GeihIQECggIoDp16pCenh7Z2dmRp6cnHThwQO4+K3ueFCc3N5dmzpxJdnZ2ZGBgQB07dqTff/9dqk1ZPxMR/fe+yCsJCQlERHTx4kXy9PQkW1tb0tHRIWtra/L396eYmJgyHRPnjfJFKHzfmDIEQSB1vG+JiYmoV68edu3aBX9/f+joKH+v5/z8fGzduhVBQUFISUmBjY1NuY+TKU4QBBAR34mYKURd2fImzpnqgbOFqaq884azperhHGGq4s9ETFGcN8rjpz5VQoMHDwYA3L17Fw0bNlR4u1u3bqFZs2bqGhZjrBrhnGGMqQNnC2OsvHCesHcZr6gpA3XNHufm5uLPP/8Uf27WrBn09fUV3j4nJ0d8dCNQ+OSSssxAs/LDs8dMGRWxooZzpnrgbGGqKu+84WypejhHmKr4MxFTFOeN8niipgwq4sMUqx44lJgyOFuYojhbmKo4bxjnCFMV5whTFOeN8op/EDtjjDHGGGOMMcYYq1A8UVNJjRo1Ck2bNi2Xvm7cuIHg4GBkZWWVS3+KWL9+PXx8fGBvbw8zMzO0bdsW+/fvV7qfyMhICIIg817k5uZixowZ6NSpE4yNjSEIAp4/fy63jwMHDqBt27YwMzODvb09BgwYgLt375bpuBirjqp63gDAlStX0KFDBxgaGqJWrVqYP38+JBJJqdutWbMGvXr1gq2tLQRBwN69e+W2u3PnDnr37g1TU1OYmZnB398fDx8+LO/DYKzK4hwpOUcSExMhCIJMKek9k0gkaNmyZYnZxFh1965my5MnTzBjxgy4u7vD1NQUtWrVwpAhQ5CQkCDT9tWrVxg3bhxsbGxgYmKC3r17IzExUapNZGQkOnToABsbGxgYGKBBgwaYNm0a0tLSyvNQWTniiZp3wI0bNxASElKhobRo0SI4Ojpi7dq12LdvH5o3bw5/f3+Eh4cr3EdWVhamTJkCOzs7ua9t3LgRBgYG6NixY7F9nDp1Cv7+/mjcuDH27duHVatWIT4+Hl27dkV6enqZjo0xVjxN5M39+/fRtWtXWFlZ4eeff8asWbOwZMkSzJ49u9Rtt27diufPn8PPz6/YNikpKejUqROePHmC7du3Y8OGDbhx4wa8vLyQmZlZnofCGEP1zJEiX3/9NS5evCiWnTt3Ftt27dq1ePz4sVLHwRgrXlXKluvXryMyMhKDBg3CwYMHsXz5cvz1119o27Ytnj17JtU2MDAQhw4dwqpVq7Br1y48fvwY3t7eUsf54sULdOrUCRs2bMDx48cxefJkbN68GQMHDlTLcbNyoOnng1fFUvi2qdfIkSPJzc2tXPoKDw8nAJSSklIu/SlC3r66detGTZs2VbiPL7/8kjw9PYt9LwoKCoio5OMLCgqiunXrim2JiC5fvkwA6OjRowqPpaz+97ui8d9ZLlWjVES2yFPV82bcuHFUp04dysnJEesWLVpE+vr69O+//5a4rUQiISKihIQEAkB79uyRaRMSEkKGhob09OlTse73338nAPT999+X01Eoh7OFi6qlvPOGc6TkHCnpNXmSk5PJwsJCfC8U3U4ZnCNcVC38mah0Zc2W1NRUysvLk6r7559/SBAEWrp0qVh36dIlAkBHjhwR6x48eEA6Ojq0evXqEse2YcMGAkCPHj1S9rCUxnmjfOEVNZXc2bNn0bJlSxgZGaFFixY4e/asTJvt27fD3d0dBgYGsLe3x9SpU/H69WsAwObNmzF69GgAEJfk1q1bV+3jtrGxkalr0aKFzAxwceLj47Fy5UqsWrWq2DaCUPr9qPLy8mBqairV1sLCAgCK/oFhjP1PVc2bo0ePol+/flJPhBg6dChev36N06dPl7itllbp/wxeuXIF7u7uqFGjhljXokUL2NnZ4dChQ2UfOGPVEOdI+Zg+fTp8fHzg6elZ7n0zVhW9a9liYWEh86Sq2rVrw9bWVurz1NGjR2Fubg5fX1+xztHRER988AGOHj1a4tisra0BFH5eYpUPT9RUYsnJyZgwYQKmTJmCffv2QU9PD/369cOrV6/ENitXrsSoUaPg5eWFQ4cOITg4GJs3b8Znn30GAOjZsyfmzJkDADh+/DguXrxY4r1iiAj5+fmllrJMcpw7dw5NmjRRqO3EiRPx8ccfq3xNalBQEOLi4rBq1Sq8fPkSiYmJmDZtGlxdXeHt7a1S34xVJ1U1bzIzM/Hw4UOZbKlbty6MjIwQHx+vytsCANDW1oaenp5Mvb6+PmJjY1Xun7HqgnOkdJ9++il0dHRgY2OD0aNHy/0C6+zZs4iMjMSSJUvKbb+MVWWcLYXu3LmDZ8+eSfUXFxcHFxcXmQljNzc3uf1LJBLk5OTg+vXrCA0NRe/eveHk5KTUOFgF0fSSnqpYUEHL/ARBoD///FOs++OPPwgA7d+/n4iI0tPTydTUlGbMmCG1bUREBGlra1NCQgIRKbfMLzo6mgCUWsLDw5U6nh07dii8dDciIoJsbW0pNTWViEpf8lja8R0+fJhMTU3FsTdt2pSSkpKUGn9ZgZf5cVGiVES2yFOV8yYpKYkAUEREhMxrtWrVoilTpijwDpR8WcK0adPIysqKsrKyxLp//vmHtLS0SE9PT6H+yxtnCxdVS3nnDedIyTny+PFjGj9+PO3fv5/OnDlD3333HVlZWZGLi4tUtuTl5VHTpk1p4cKFpfapKs4RLqoW/kxUMdlCVHjLBx8fH7K3t6f09HSxvmvXruTj4yPTfvbs2WRpaSlTb25uLo7d19eXMjIyFB6DKjhvlC/S66lYpVKzZk00a9ZM/Llo9jQpKQkAcPHiRbx69QqDBw9Gfn6+2M7b2xsSiQS///670kv6WrVqhatXr5barl69egr3+eeff2LcuHEYPnw4AgICSmz76tUrfPHFF/j666/FS5RUceHCBXz44YcICgpCnz598O+//2LBggXo06cPzp8/D0NDQ5X3wVh1UNXzRt6lkESk0CWSpRkzZgxWrFiBsWPHIiwsDDk5ORg7diwEQVDLJQ+MVVWcI8WrWbMm1qxZI/7cuXNntGrVCp6enoiIiMBHH30EAFixYgWys7Mxbdo0lffJWHXB2QIEBwcjKioKR48ehampaZn7P3PmDLKysnDr1i0sXLgQvXv3xsmTJ6Gtra3wWFjF4ImaSszS0lLq56Kl9zk5OQAKn0QCFAaJPGV5dKyJiQnc3d1LbafoH/ODBw/Qo0cPtGnTBps2bSq1/aJFi2BlZQV/f3+8fPkSQOGjuAsKCvDy5UsYGhpKXeNZms8++wxeXl5Yvny5WPf+++/D0dER27Ztw5gxYxTui7HqrKrmTdG4U1NTZV57+fKlzHGVRaNGjRAeHo5JkyZh27ZtAICAgAD4+fnh1q1bKvfPWHXBOaKczp07o0aNGrh+/To++ugjPH/+HMHBwVizZg2ys7ORnZ0tPqEyKysLaWlpMDc3V8tYGKvM3vVs2bhxI0JDQ7Fp0yZ0795dZh/yjq+4/ouOqX379mjVqhU8PDywf//+Ur9MZxWPJ2qqMCsrKwDAvn374OjoKPN6nTp1lO7z119/RZcuXUptFx4ejlGjRpXY5vnz5/Dx8UGNGjUQGRkp9x4Pb4uPj8etW7fEm1u9ydLSEsuXL8fkyZNL7adIbGws+vTpI1VXu3Zt2NjY4N69ewr3w9i7rrLmjZGRERwdHREXFydV/+DBA2RlZcHFxUXpcckzbNgwDBw4EHfu3IGVlRUcHBzg5uaGdu3alUv/jL0L3vUckafwioBCSUlJyMjIwIgRI2TajRw5Eubm5uKXWIyx/1TnbNm/fz/Gjx+P0NBQBAUFybzu6uqKkydPyqygiY2NLbV/d3d3aGlp4e+//y51HKzi8URNFda+fXsYGxvjn3/+gb+/f7Ht3p51Lkl5LfPLyMhAjx498Pr1a0RHR8PMzKzUPgFg4cKFMhMxixcvxu3btxEeHo6GDRsq1E8RJycnXL9+XaruwYMHeP78eYXc6Z2x6qIy542fnx8OHDiAJUuWiPuPiIiAvr5+ud40XE9PT7zB+enTpxEbG4vVq1eXW/+MVXecI9Kio6ORkpKC1q1bAwAaNmyI6OhoqTbJyckIDAxEcHAwPwSBsWJU12w5c+YMAgMD8cknn2Du3LnF9h8aGopffvlFfPLTP//8g/Pnz2PFihUl9v/bb7+hoKAA9evXL7Ed0wyeqKnCzM3NsXDhQsycORNJSUno0qUL9PT0kJCQgJ9//hmrV69G7dq14erqCgBYtWoV/P39YWRkJHWd55tMTU3h4eGh8tj8/f1x48YN/N///R8ePHiABw8eiK+1aNFCvHzJ29sbDx48EGdy5T3lafPmzUhKSpJ5ROWxY8eQmZmJa9euAQAOHz4MU1NT1K1bVzyGCRMmYNKkSZg0aRL69u2Lf//9FwsXLoStrS0GDRqk8nEy9q6ozHkzffp07NixA4MGDcKkSZNw+/ZtLFiwAJMnT5Za9vt23gDAtWvXkJiYKC6bvnTpEgDA2NgYPXr0AFD41Ibg4GB06tQJBgYGuHTpEsLCwjB+/Hh+dC5jSniXc+SLL76AlpYW3n//fVhaWuLatWsICwtD06ZNMWTIEACFl1q8nSmJiYkACp/g0qFDB5WPk7HqqDpmS3x8PPr164dGjRph+PDhYq4AgJmZmXifnrZt26Jnz54ICgrCd999BzMzM8ybNw+Ojo5SK318fHzg7e0NNzc36Ovr448//sCSJUvw3nvvoV+/fiofJ1MDTd/NuCoWVNAdzuU96QgALVmyRKpuz5499P7775OhoSGZmppSs2bNaMaMGVJ38Q4ODqbatWuTlpYWOTk5qXv4Jd4dvejO60REnTt3LnU8xb0XTk5OcvsfOXKk2KagoIDWr19PzZs3J2NjY7K3t6d+/fpRbGxsOR1pycB3OOeiRKmIbJGnqucNEdHly5epffv2pK+vTzVr1qS5c+dSfn6+VBt5eTNy5Ei5OfJmu6ysLPL19SVra2vS09OjJk2a0MqVK0kikVTAkcnH2cJF1VLeecM5UnKObNq0iVq2bEnm5uako6NDjo6ONHHiRHrx4kWJY+KnPnGpzIU/EymmLNlS9IQqeaVz585S26anp9OYMWPI0tKSjIyMqGfPnnT//n2pNnPnzqVmzZqRiYkJmZiYUNOmTWn+/PmUlpamrsOWwnmjfBEK3zemDEEQiN83pghBEEBEqj8ugr0TOFuYojhbmKo4bxjnCFMV5whTFOeN8vi5oowxxhhjjDHGGGOVBE/UMMYYY4wxxhhjjFUSPFHDGGOMMcYYY4wxVknwRA1jjDHGGGOMMcZYJcETNaxUmzdvhiAIeP78uaaHorAJEybA1dUVpqamMDc3R5s2bfDTTz/JbXv37l0EBATAyspKfEzfvn37KnjEjFVv1TlHkpOTMWzYMFhaWsLY2Bhdu3ZFTEyM3HaDBw+Gubk5LCws8OGHH1ap94OxqqIq5s2uXbswYMAA1KpVC4IgYOnSpaVus2zZMgiCgF69elXACBlj1Tlb8vLyMGvWLDg4OMDIyAidO3fGjRs3Kni07E08UcOqpaysLIwfPx579+7Frl270Lx5cwQGBmLnzp1S7eLi4tC2bVu8evUK4eHhOHz4MIKCgpCTk6OhkTPGKgtFciQnJwdeXl64dOkS1q5di507dyI1NRVdunTBo0ePxHb5+fnw9fVFTEwMtm7dik2bNuHChQvo06cP+IkZjLG9e/fi/v376N27t0LtHz9+jNDQUNSoUUPNI2OMVWWKZsuUKVOwevVqhISE4ODBg9DT04O3tzceP35cQSNlb9PR9AAYU4fw8HCpn319fREbG4vNmzdj6NChYv24cePg5uaGY8eOQUurcN7S29u7QsfKGKucFMmR3bt3Iy4uDn/++SeaNWsGAGjTpg3q16+PpUuXYvny5QCAffv24ebNm7h16xbc3NwAAA4ODvjggw9w7Ngx+Pn5VeCRMcYqm127donnIevXry+1/RdffIH+/fsjISFB3UNjjFVhimTLo0ePsG7dOqxcuRKffPIJAOD9999HvXr18P333+Pbb7+tsPGy//CKGg2Ki4tDz549YW1tDSMjIzRq1AghISHi65cvX0bfvn3h4OAAY2NjvPfee9i0aZNUH2fOnIEgCDhx4gSGDh0KU1NTODg4YOPGjQCAH3/8EfXr14e5uTkGDx6M9PR0mW2PHTuGgIAAmJiYwN7eHl9//XWpY8/NzcXcuXNRr1496Ovrw9nZGRs2bFDq+CqatbU18vLyxJ/v3LmDs2fP4tNPPxUDjLGqhnOkYr2dI1euXEHNmjXFSRoAqFmzJpo3b45Dhw6JdUePHkWzZs3ESRoAaN++PZycnHD06NGKGTxjKuK8UR9lzkNOnz6NY8eOYfHixWocEWMVh7NFfRTJlhMnTkAikWDw4MFinampKXr16sXnKBrEK2o0qHfv3rC1tcWPP/4Ic3Nz3L9/H3fv3hVff/DgAdq1a4cxY8bAyMgIly5dwsSJE5Gbm4tPP/1Uqq9x48ZhxIgRiIyMxNatWzFmzBjcu3cPly9fxsqVK/Hs2TN8/vnnmDNnDlauXCm17ZgxYzB48GDs27cPUVFRmD17NqysrDBu3Lhixz5kyBBER0dj3rx5aNasGU6fPo3x48fD1NQUgYGBCh2fPAUFBSgoKCj1vdPRKf1Xl4ggkUjw6tUrHD58GCdOnMD27dvF1y9cuACgMMA6duyIS5cuwcbGBkFBQQgJCYG2tnap+2BM0zhHZFVkjmhra0NPT09mO319fSQkJCA7OxuGhoaIi4tDkyZNZNq5ubkhPj6+1HEwVhlw3sgqz7xRRF5eHiZMmID58+fDzs6uXPpkTNM4W2RVZLbExcXBzs4O1tbWUvVubm7YuXMnCgoK+EttTSAiLkqWwrdNNSkpKQSADh06pFD7goICysvLoylTplCzZs3E+ujoaAJA06ZNE+syMzPJyMiIbG1tKSMjQ6yfMGEC2dvby2w7fPhwqX19+OGHVLt2bZJIJEREFB4eTgAoJSVFarujR49KbTd27Fhq0KBBmY6vyPz58wlAqSUhIaHUvvbv3y+219HRoXXr1km9HhYWRgDIzMyMpk+fTqdPn6YFCxaQjo4OhYSEKDXu4vzvd0Xjv7NcqkZRNls4R+SryBz54YcfSFtbmx49eiTWZWZmkqWlJQGgx48fExFRw4YNaezYsTL9Dxs2jFq0aKHU8RERZwsXlQvnTeXLmyIAaMmSJXJfCwsLI1dXV8rLyyMios6dO1PPnj2VGvOb+6FK8LvIpeoW/kwUXS2y5eOPP6bGjRvL1G/cuJEAUFpamlJjL27fVAl+Z6tS4RU1GmJtbQ0nJyfMmjUL//77L7y9vVGnTh2pNqmpqQgODsbBgweRlJQEiUQCoPCb2rd1795d/G8jIyPUqlULTZo0gbGxsVjv7OyMp0+fIjc3V+ob4P79+0v15e/vj+3btyMpKQmOjo4y+zpx4gQsLS3RrVs35Ofni/Vdu3bF+vXr8eLFC4WOT54xY8Yo9PQCBweHUtt4enri6tWrePnyJY4dO4aJEydCR0cHQUFBACC+nz4+PuK1l126dMGzZ8+wZMkSzJ49m1fVsEqNc0S+isyRoUOHYt68eRg1ahTWrl0LAwMDzJgxQ1xS/eY3UIIgyPRPRHLrGatsOG/kK8+8Kc3Dhw+xcOFCHDhwoNxW6DCmaZwt8lVktgDFn6MU9xpTP055DSm6hnLOnDmYNGkSMjIy0Lx5c3z33XfizWxHjRqF3377DXPnzkWzZs1gZmaGLVu24IcffpDpz9LSUupnPT09WFhYyNQRkUwovf3EgKKfnzx5IjeUUlJSkJqaCl1dXbnH9vDhQ1hZWZV6fPLY29sr9AQDRU5QLCws4OHhAaAwMHNzczF16lSMGjUK2trasLKyAgB4eXlJbefl5YVVq1bh4cOHqFevXqn7YUxTOEfkq8gcsbS0xE8//YTRo0ejYcOGAAond0aOHInt27eLOWNpaYnU1FSZ/l++fCnzvjNWGXHeyFeeeVOaGTNmoGPHjvDw8MDLly8BFD5RLj8/Hy9fvoSxsXGxx8hYZcXZIl9FZktJ5yi6urpSk1ys4vDFZhrk7OyM3bt3IzU1FefOnYOVlRX69OmDf//9Fzk5OThy5AjmzJmDzz//HF5eXuKHhfL27NkzuT/XrFlTbnsrKyvY2Njg6tWrcouzs3Opx1ec0NBQ6OrqlloSExOVPs5WrVohPT0dKSkpACB1U883Fc0e8yO6WVXAOSKrInMEALp164YHDx4gNjYWCQkJiI6ORnJyMjw8PMSTN1dXV8TFxcn0FxsbCxcXF6XHwZgmcN7IUmfevC0+Ph7Hjx+HpaWlWH777Tf88ssvsLS0xJEjR1TeB2OawNkiqyKzxdXVFc+ePcOLFy+k6mNjY+Hs7Mz3p9EQXlFTCejo6KBDhw6YM2cOvL298eDBAzRo0AASiURqSV9OTg4iIyPLff/79++XWuoXGRkJBwcH1K5dW277bt264dtvv4WOjg7c3d1L7V/e8b19s6oi6lzmd/bsWZiZmcHGxgYA0K5dO1hbWyMqKkrqJmGnTp2CmZmZ+O04Y1UB58h/KjJHimhra8PV1RVA4YepqKgoqac++Pn5Ydu2bYiLixPbXbp0CYmJifxoblblcN78pyIvT9i0aRMyMjKk6iZPngxDQ0OEhYWhadOmKu+DMU3ibPlPRWZL9+7doaWlhd27d4ufiTIyMnD48GF89NFHKvfPyoYnajTkzz//xNSpUzF48GA0aNAAGRkZ+Pbbb+Hg4IAmTZrAwMAArVu3RlhYGKytraGvr4/vvvtO7rWYqoqOjsa0adPQvXt3nDx5Etu3b8fq1auLnT3t2rUr+vXrhx49emD69Olwd3dHdnY24uPjceXKFezatavU4yuOg4ODyoFz7tw5LF26FP3794eTkxPS09Nx8OBBhIeHY/HixeISQV1dXQQHB2PSpEmYOnUq/Pz8cP78eaxbtw4LFy7k5cOs0uMcka8icwQovByhXbt2MDc3x82bN7Fw4UJ07doVI0aMENsMGDAAx4A8lQAAIABJREFU7733HgICAhAWFob8/HxMnz4d7dq1Q48ePVQaK2MVgfNGvvLIG6Dwm+vY2Fjx55iYGOzduxcAEBAQAAByVxFYWFjAxMQEnp6eKo+BMU3gbJGvIrOlVq1aGDduHGbOnAkdHR04OTlh6dKlICJMnjxZ5TGwMtL03YyrYkE53OH86dOnNHz4cKpfvz4ZGBiQra0t9evXj2JjY8U2d+/eJW9vbzI2NqZatWrRggUL6Ntvv6U39190t/GrV69K9e/m5kYjR46Uqlu7di0BoFevXklte+TIEerXrx8ZGRlRjRo1aMGCBVLbvX2HcyKi3NxcWrRoETVu3Jh0dXXJ2tqaPvjgA1qzZo3Cx6cuCQkJFBAQQHXq1CE9PT2ys7MjT09POnDggNz2q1evpoYNG5Kuri7Vr1+fli9fXm5jAd/hnIsSRdls4RxRH2VyZOjQoWRvby9mSEhICOXk5Mi0e/LkCQ0aNIhMTU3JzMyMhg4dKvV+KIOzhYuqhfOm8uQNUclPeCkJP/WJiyYLfyaqPtmSm5tLM2fOJDs7OzIwMKCOHTvS77//Xm7j4LxRvgiF7xtThiAIVB3etzNnzqBLly64evWq2q71fNcJggAi4lulM4VUxWzhHNEMzhamKs4bxjnCVFUVc0Qezhb147xRHt8ZiDHGGGOMMcYYY6yS4IkaxhhjjDHGGGOMsUqCL30qg+qyzI+pHy/zY8rgbGGK4mxhquK8YZwjTFWcI0xRnDfK4xU1jDHGGGOMMcYYY5UET9QwxhhjjDHGGGOMVRI8UVOJCYKApUuXanoYSqtbty4EQYAgCNi0aZNY7+npKdbPmTNH7rYSiQQtW7aEIAjYu3evQvtLT0/HlClTULt2bejr66Nu3bqYN2+eVJvExEQEBgbCwcEBJiYmaNWqFX766SepNlFRUQgMDES9evVgZGSEJk2a4JtvvkFubq5Uu4CAAPE4Jk6cqNAYGatM3pVs+fvvvzFu3Di4u7tDR0cHTZs2VXhfb/b5Zrl27Vqx2yxbtgyCIKBXr15S9Zwt7F32ruRNZGQkOnToABsbGxgYGKBBgwaYNm0a0tLSSt1XXl4eZs+ejTp16sDAwADNmzfHvn37ZNopci7zww8/iONTJvMYq8zelRwpsnPnTrRq1QqGhoawtrZGt27d8Pz581L3t3XrVri4uMDAwABubm7YtWuX1OubN2+We24jCAJcXFzEdqNGjSq23bhx48R2fN6iXjqaHgCrngICAvDFF1+gQYMGUvUffPABli5ditq1a8vdbu3atXj8+LHC+8nOzkaXLl2QkZGBRYsWoW7dukhISMCDBw/ENjk5OfDx8QEALF++HNbW1oiIiEBgYCAMDAzQr18/AMD69euRlZWFkJAQODo64tKlSwgJCUFsbCy2bNki9hcWFoZp06ahf//+Co+TMVY+lMmWv/76C0eOHEHbtm1RUFCAgoICpfZV1OebXF1d5bZ9/PgxQkNDUaNGDZnXOFsYq5qUyZsXL16gU6dOmDp1KqysrBATE4OQkBD8+eefOHHiRIn7GTt2LHbv3o1FixbBxcUFW7ZswcCBA3HkyBH06NEDgOLnMgMHDoSHhwcWLFggdS7EGNMMZT8TffPNN5g3bx6mT5+OpUuXIj09HWfOnMHr169L3M/evXsxcuRIfPnll+jevTsOHDiAwMBAmJmZiTnSs2dPXLx4UWq7f//9F7169YKfn59YN3fuXKkJGaDwS6e5c+dKtePzFjUjIi5KlsK3Tf0A0JIlSypkX+XJycmJJkyYIFPfuXNn6tmzZ7HbJScnk4WFBYWHhxMA2rNnT6n7mjdvHllYWFBycnKxbc6dO0cA6PTp01L1TZo0oUGDBok/p6SkyGy7aNEiEgRB7mvFHeeb/ve7ovHfWS5Vo3C2lEzZbJFIJOJ/jxw5ktzc3BTeV2l59bYhQ4bQqFGj5G7H2cKlMhbOm5KV9VzmTRs2bCAA9OjRo2LbJCYmkiAItHLlSrGuoKCAWrRoQe7u7mKdoucyRRTJPM4RLqoWzpGSKZsjt2/fJh0dHVq/fr3S+3JxcaGBAwdK1XXv3p1at25d4narV68mAHT9+vUS2w0cOJCsra0pNzdX5jU+b1FP4UufytHmzZuhra0tsyIkOzsbpqam+PrrrwEAt2/fRmBgIBwdHWFkZARXV1eEhYUhPz+/xP7r1q0rs6zszJkzMsvxiQjff/89XFxcoK+vD0dHRyxatKgoUCut6dOnw8fHB56engpvs3HjRgwaNAh2dnbFtsnLywMAmJubS9Wbm5tLvSc2NjYy27Zo0QJEhJSUFIXHxFh542wpGy2tivkn7vTp0zh27BgWL14s93XOFlaVcN6UH2trawD/nYfIc/XqVRCRuFoGKLzMo3v37rhx4wb++ecfqT5KO5dhrDLgHCmb8PBwGBgYYNSoUUptl5CQgPj4eAwZMkSqPjAwEFevXi3xXGPHjh1wdXVFy5Yti22Tnp6Ow4cPY9CgQdDV1VVqbKzseKKmHPn7+0NPT0/meuHDhw8jIyND/ON58uQJGjVqhB9++AFHjx7Fp59+iiVLluCrr74ql3F88cUXmDVrFoYOHYojR45g4sSJWLhwYbEfIooQEfLz80st6gi3s2fPIjIyEkuWLFF4m8TERDx58gR16tTB8OHDYWRkBFNTUwQGBkoFUocOHdCkSRN89dVXuH//PtLS0rBhwwZcv35dZlnf286dOwc9PT2Z5YqMVSTOFs349ddfYWJiAgMDA3To0AGnTp2SaZOXl4cJEyZg/vz5JU4Yv42zhVVWnDeqkUgkyMnJwfXr1xEaGorevXvDycmp2Pba2toAAD09Pal6fX19AEBsbCwA1c5lGKtonCNlc/HiRTRu3BibN2+Go6MjdHR00LJlS0RFRZW4XVxcHACgSZMmUvVubm4ACifE5ElISMCFCxfw4Ycfltj/vn37kJOTU2o7Vs40vaSnKhaUsMxvwIAB5OHhIVXXr18/ev/99+W2LygooLy8PPr+++/J3NycCgoKxNfw1jI/ecvKoqOjCQBdvXqViIju3btHWlpatGbNGql2YWFhZGZmRhkZGcWOveiSo9JKdHR0sX0UN06i4pf55eXlUdOmTWnhwoVERJSQkKDQpU8XL14kAGRiYkK9evWiX375hTZv3ky2trbUpUsXqbZPnz6ltm3bisegr69Pu3btKrH/O3fukLGxcbFL+XiZH5fyLpwt0cX2Udw4iRS7FEHZS5/mzZtHmzZtol9//ZV2795N7du3Jy0tLTp16pRUu7CwMHJ1daW8vDyFx8LZwqUyFM6b6GL7KG6cRKX/jZubm4v78PX1LXGsRES3bt0iADLnJN27dycAtHPnTrFOmXMZvvSJS0UUzpHoYvsobpxExedI48aNycTEhGrWrElbt26l48ePk4+PD+np6dHdu3eL3c/27dsJAD158kSq/u7duwSADh48KHe70NBQEgSBEhMTSzwOLy8vql+/frGv83mLegrfTLicDR06FAMGDMDdu3fRqFEjpKWl4dixY1IrRXJycrB48WLs2LEDDx8+lHryx9OnT2Fvb1/m/UdFRYGIMHDgQKllg127dsWsWbNw+/btYpe29e7dG1evXi11H40bNy7z+ORZsWIFsrOzMW3aNKW2k0gkAAALCwvs27dP/DbK1NQUAwYMwOXLl9G2bVtkZ2cjICAAEokEkZGRMDc3x549ezBq1CjY2dmhc+fOMn2np6fD398fTk5OCAsLU/0gGVMRZ0vFCgkJkfq5T58+aN68OYKDg+Hl5QUAePjwIRYuXIgDBw5AR0exf045W1hVwHlTdmfOnEFWVhZu3bqFhQsXonfv3jh58qS4cuZtbm5u8PT0xMyZM1G7dm3xZsJFK/iKLuEsy7kMY5rEOaI8iUSCjIwM7Nq1S7xpb6dOnVCvXj189913WLt2bYnbC4Ig9XPh/IhsfZEdO3agQ4cOJa76e/z4Mc6cOYPZs2crcyisHPBETTnr2bMnzM3NERERgXnz5iEyMhL5+fkYNGiQ2GbmzJnYsGED5s6di9atW8PCwgInT57E7NmzkZOTo9L+U1JSQESwtbWV+/rDhw+LDSUrKyuZa5/lKe5koyyeP3+O4OBgrFmzBtnZ2cjOzkZ6ejoAICsrC2lpacWOycrKCkDhXdPfXDJc9CEqNjYWbdu2xY8//ojLly8jKSlJfF+8vLzw999/Y9asWbhw4YJUv7m5uejfvz9SU1Nx4cIFmJqaltvxMlZWnC2apa+vj759++KHH34Q62bMmIGOHTvCw8MDL1++BABxOfTLly9hbGwsdS03ZwurKjhvys7d3R0A0L59e7Rq1QoeHh7Yv38/AgICit1m8+bNGDhwID744AMAhfffmD9/PubNm4eaNWsCgNLnMoxpGueI8oo+23Tp0kWsMzQ0xPvvvy9eBimPpaUlACA1NVXqMuyic5Oi19907do13L59G1OnTi1xTDt37kRBQQFf9qQBPFFTzvT19dG/f38xlCIiIuDl5SX1R7Nnzx6MHTtW6vrLs2fPltq3gYGB1EwzUPg4yDdZWVlBEAScP39e5npnACXeD2HLli0YPXp0qeOIjo5W6oa/JUlKSkJGRgZGjBgh89rIkSNhbm4uhszbGjRoIF7DLU9RwMfGxqJWrVoyQd2iRQupR+MCQEFBAYYNG4br16/j3LlzcHR0VPaQGFMLzhbNK/pmqkh8fDxu3rwp9wTI0tIS+/fvFx+Zy9nCqhLOm/Lh7u4OLS0t/P333yW2c3JywpUrV5CYmIjs7Gw4Oztj2bJl0NfXR4sWLQAody7DWGXAOaI8Nzc3uSt5iKjEiStXV1cAhfeqcXFxEeuLJnfkrfzZvn079PX1MXDgwBLHtH37drRu3RrOzs4KHQMrPzxRowZDhw7F5s2bcfz4cZw+fRqbNm2Sej07O1tqgoGIsHPnzlL7rVOnjsxs6i+//CL1s7e3N4DCWeS+ffsqNW5NLPNr2LAhoqOjpeqSk5MRGBiI4OBg8Xjk0dPTQ/fu3XH+/Hm8fv1afE+LbrjVqlUrAIUnQI8ePcKzZ89Qo0YNcfvr16+jbt26Un1OmDABhw8fxvHjx9GsWbPyOETGyg1ni+a8fv0aBw8eROvWrcW6TZs2ISMjQ6rd5MmTYWhoiLCwMDRt2lSs52xhVQ3njep+++03FBQUoH79+gq1Lzonyc7Oxo8//ojAwEBx5Z0y5zKMVRacI8rp1asXwsPDcerUKfTq1QtA4RUGFy9eLHFVXr169eDi4oJdu3ahf//+Yn1ERARat24tM8ErkUiwa9cu9OzZU+6XTUViY2Nx8+ZNrFixQsUjY2XBEzVq4OXlBXt7ewQFBUFXVxf+/v5Sr3fr1g3r16+Hi4sL7OzssHHjRqSmppba76BBgzBmzBjMnz8fHTt2xMmTJ3HixAmpNs7Ozvjss88wYsQIfPHFF2jXrh0kEgnu3buHAwcO4OTJk8X2b21tLT5KsqKYmJjIzEQnJiYCKJxV7tChg1gfFBSELVu2SF1nOn/+fLRv3x79+/fHpEmT8PjxY3z55Zfw8fFBmzZtAADDhg1DWFgYevTogVmzZsHMzAx79uzB6dOnsW3bNrGvr7/+GuvWrcP06dNhYGCAS5cuia81aNCg2KWTjFUUzhblZGVl4ejRowCABw8eID09HXv37gUAtG7dWrwm++1sOXfuHJYsWYL+/fujbt26SE5OxooVK3D//n2sX79e7N/Dw0NmnxYWFjK5xtnCqiLOG+X4+PjA29sbbm5u0NfXxx9//IElS5bgvffeE1fWAfLPZX744QeYmZnB0dERiYmJWLZsGV6/fi31ZBpFz2UYq0w4R5TTr18/tGnTBh9//DEWL16MGjVqYPny5cjKypK6RElejoSGhmLw4MFo0KABunXrhoMHD+LEiRM4cuSIzH6ioqKQnJxc6uVM27Ztg46Ojsxjv1kF0fTdjKtiQQl3OC/y2WefEQAaMGCAzGtPnz6l/v37k5mZGdna2tLkyZPFu3UnJCSI7fDWHc7z8/Ppyy+/pJo1a5KpqSmNGDGCDh06JHWH8yJr166l5s2bk76+PllYWJCHhweFhISUOu7yoMqTWYiKf+rTyJEjSd57f/r0aWrTpg3p6+uTra0tffrpp/Tq1SupNn/88Qf17NmT7OzsyMTEhFq0aEFbt26VGR+Kuat7eHi4wsf5JvAdzrkoUThbSqZsthRlSWl/029ny927d8nHx4fs7e1JV1eXzM3NycfHh86fP1/qGOWNhbOFS2UsnDclUzZv5s6dS82aNSMTExMyMTGhpk2b0vz58yktLU2qnbxzmaVLl1L9+vVJT0+PatSoQR999JHM01uIFDuXeXM//NQnLuounCMlK8tnopSUFBo5ciRZWFiQgYEBeXp6yhxTcZ+JNm/eTM7OzqSnp0eurq4UEREhdx/Dhw8nCwsLysnJKXbsBQUF5OTkRH5+fiUdIhHxeYu6ilD4vjFlCIJA/L4Vr27duujZsydWrFgBbW1t8U7jnp6eMDY2xsGDB6GlpSU+yaCqKSgoQEFBARo2bIhevXpJ3Vz0bYIggIjk32qdsbdwtpSMs+U/nC1MVZw3JauqeUNEkEgkCAoKwvXr13Hr1q1i23KOMFVxjpSsquaIovi8Rb2q5m8Fq/TWrFkDXV1d/Pjjj1L1R48eha6uLubNm6ehkalu0KBB0NXVxYMHDzQ9FMbeOZwtjLGKUhXzZvXq1dDV1cXWrVs1PRTGGKpmjiiKz1vUi1fUlAHPHpcsJiYGr1+/BlA4k2xjYwMAuH37Nl69egUAcHBwgIODg8bGqIr79++Ld5avUaNGiU9v4dljpgzOlpJxtvyHs4WpivOmZFU1b1JSUsQPTYaGhnBzcyu2LecIUxXnSMmqao4ois9b1IsnasqAQ4kpikOJKYOzhSmKs4WpivOGcY4wVXGOMEVx3iiPL31ijDHGGGOMMcYYqyR4oqYaGjVqFARBgCAI4mPXUlJS8Pnnn6Nt27bQ19eHiYmJUn0eO3YMLVu2hIGBARo0aIBVq1bJbbd06VLUq1cPhoaG8PDwwKlTp6Rej4uLg5+fH2rVqgV9fX04ODhg8ODBuHPnjlS7adOmicfQq1evUusZY+onL1sAIDk5GYMHD4a5uTksLCzw4Ycf4vnz5wr1uWzZMjRo0AD6+vpo3Lgx1q1bJ9Pm1atXGD9+PGrUqAFDQ0O0a9cOZ8+elWl3584d9O7dG6ampjAzM4O/vz8ePnwo1YazhbHKRxPnLU+ePMGMGTPg7u4OU1NT1KpVC0OGDEFCQoLc/q5duwZfX1+YmZnBxMQEHh4eOHfunPg6ZwtjlY8mzlvOnDkj7vPtoq+vL7YLDg4utp2vr6/YjrPl3cUTNdVU/fr1cfHiRYSEhAAAHj16hJ9++gk1atSAh4eHUn1dunQJffr0QYsWLXDs2DGMHj0akydPlgmmpUuX4quvvsKECRNw5MgRNGrUCD179sTNmzfFNunp6XB0dMS3336LX375Bd999x3i4uLQpUsXqYD87LPPcPHiRbRo0UJqH8XVM8YqxtvZkp+fD19fX8TExGDr1q3YtGkTLly4gD59+qC05dChoaGYOXMmRowYgZ9//hk+Pj4YP3481q9fL9Wub9++2LdvHxYvXoy9e/fC1NQUPj4+uHHjhtgmJSUFnTp1wpMnT7B9+3Zs2LABN27cgJeXFzIzM8V2nC2MVU4Vfd5y/fp1REZGYtCgQTh48CCWL1+Ov/76C23btsWzZ8+k+vv111/RoUMHWFlZYdeuXYiMjMSAAQOQlZUltuFsYaxyqujzlpYtW+LixYtS5dy5czAyMkLPnj3Fdh9//LFMu02bNgEA/Pz8xHacLe8wTT8fvCoWyHlufWUycuRIcnNzk6qTSCTif8+fP5+MjY0V7s/X15fatGkjVffJJ5+Qvb292G9OTg6Zm5vT9OnTxTb5+fnk6upKAwcOLLH/O3fuEADasWOHzGudO3emnj17Klxf2fzvd0Xjv7Ncqkapitny008/EQC6deuWWPfbb78RADpy5EixfWVlZZGxsTFNnTpVqr5v375kY2NDeXl5RET066+/EgA6dOiQ1Lb29vbUr18/sS4kJIQMDQ3p6dOnYt3vv/9OAOj777+X2T9nC5d3vVSmvNHEeUtqaqqYM0X++ecfEgSBli5dKtbl5+dT/fr1KTAwUKF9V6Vs4RzhomqpTDkijybOW+Q5cuQIAaB9+/aVON7p06eTjo6O1LlMkaqULfJw3ihfeEXNO0JLq2z/q1+/fo3Tp09j8ODBUvVDhw5FcnIyfv/9dwDAhQsXkJaWhiFDhohttLW1MWjQIBw7dqwozOWytrYGAOTl5ZVpjIwxzTl69CiaNWsm9WSR9u3bw8nJCUePHi12u7/++guZmZnw8fGRqvf19cXz589x8eJFAMCVK1cgCAK6d+8utjE0NETnzp1x7NgxMTeuXLkCd3d31KhRQ2zXokUL2NnZ4dChQ+VyrIyxiqPu8xYLCwvo6OhItalduzZsbW2lVtRERUXh/v37mDRpUpnGwxirXNR93iLPjh07YGFhIbWi5m1EhIiICHTr1k3qXIa9u3iihpXo3r17yM3NRZMmTaTqi8ItPj4eQOG9ZwDA1dVVpl1GRgYePXokVV9QUIC8vDwkJCRg4sSJqFOnDvr166euw2CMqUlcXJxMPgCFf/tF+SCPtrY2AEBPT0+qvuj67djYWLGdlpaW2P7Ndq9fv8b9+/fFdm/3VdSuqC/GWPWn6HmLPHfu3MGzZ8+kti368JWWlgZ3d3fo6Oigbt26WLFihRpGzxhTN3Wft7wtMzMTBw8exMCBA6XuUfO2M2fOICkpSepeOuzdxhM1rESpqakACr95epOlpSUA4MWLF2I7fX19GBoaltiuiL+/P/T09FC/fn1cuXIFUVFRMDc3V8sxMMbUJzU1VSYfgMK//bf/7t/UsGFDaGlp4cqVK1L1ly5dAvBfZjg7O0MikYjfggOF3zoVbfdmu5iYGGRnZ4vtkpKSkJSUVOI4GGPVi6LnLW8jInz22Wewt7eHv7+/WJ+cnAwAGDZsGAYPHoyTJ0+if//+mDx5MrZu3aqOQ2CMqZG6z1veFhkZiczMzFInYLZv3w4TExP+4pqJeKKGKUQQ5D/2/s16eW2KLnl6+7XvvvsOly9fxp49e2BnZ4euXbvKPJ2FMVY1FPe3X1xuAICpqSmGDx+Ob775BseOHUNqaiq2b9+O7du3A/jvsofu3bujUaNGGDduHGJiYvDs2TPMmDEDd+/elWo3ZswYvHr1CmPHjsWjR49w79498WkPZb2EgjFWdSly3vKm4OBgREVFYcuWLTA1NRXrJRIJACAoKAizZs1Cly5dsHz5cvTu3RthYWHlP3DGmNqp87zlbTt27ICTkxM6duxYbN+vX7/Gvn370L9/fxgZGSl5NKy64rNXVqKib6CKvqEqUvRz0euWlpbIyclBTk6OVLuXL19KtSvSoEEDtGnTBgEBAThx4gRyc3Px7bffquUYGGPqY2lpKZMPQOHf/tt/929btmwZWrduDT8/P1hZWWHq1KlYsGABAKBmzZoAAF1dXezevRuZmZl47733YGdnhxMnTmDy5MlS7Ro1aoTw8HD8/PPPqF27Nho2bAhLS0v4+fmJbRhj1Z+i5y1v2rhxI0JDQ7F+/Xqp+2EBgJWVFQDAy8tLqt7Lywt3797l++sxVsWo+7zlTU+fPkVUVBSGDh1a4iTQ4cOHkZaWxpc9MSk8UcNK1KBBA+jp6Yn3oClSdB2mi4sLgP/uTSOvnampKWrVqlXsPoyNjeHi4oK///67PIfOGKsArq6uMn/3QOHfflE+FMfKygrHjx/Ho0ePEBMTg6SkJNSpUwcA8P7774vt3N3dER8fjzt37uD27du4efMmsrOz4eDgAEdHR7HdsGHDkJycjJiYGDx69Ah79uzBvXv30K5du3I6WsZYZafoeUuR/fv3Y/z48QgNDUVQUJBMf2/ecPRNRASJRIL8/PxyGjljrCJUxHlLkYiICEgkEoUue6pZsya8vb2VOBJW3fFEDSuRvr4+vLy8sHv3bqn6iIgI2Nvbo2XLlgAK75Zubm6OXbt2iW0kEgl2794NX1/fEmeRU1NTERMTg/r166vnIBhjauPn54eYmBipk55Lly4hMTERfn5+CvXh4OCApk2bQltbG2vXroWnpyecnZ2l2giCgEaNGsHZ2RkpKSnYtWsXxowZI9OXnp4emjZtCgcHB5w+fRqxsbH45JNPVDtIxliVoeh5C1B4887AwEB88sknmDt3rtz+fHx8oKuri6ioKKn6U6dOwdXVVebefIyxyq2izluAwsueWrZsKffmxUVSU1Nx7NgxDBkyRObBCezdplN6E1Zd7N27F0DhjLFEIhF/btKkiRggoaGhCA0Nxb179+Dk5AQAmDdvHjp16oRPPvkEw4YNw2+//YaNGzdi9erV4vWY+vr6mDNnDr766ivY2tqiZcuW2LRpE+7du4edO3eKY5g2bRq0tLTQtm1bWFtbIyEhAd9//z3y8/PFSxkYY1XHgAED8N577yEgIABhYWHIz8/H9OnT0a5dO/To0UNsJy9bduzYgaysLDRs2BBPnjzB+vXrERMTgwsXLkjtY+HChWjUqBHs7Oxw+/ZtfP3113BycsKMGTPENpmZmQgODkanTp1gYGCAS5cuISwsDOPHj4enp2eFvBeMsfKlzvOW+Ph49OvXD40aNcLw4cPFG4ICgJmZmdi/nZ0dPvvsM6xcuRIWFhZo27YtDh8+jCNHjkid3zDGqoaKOG8BgNu3b+PatWtYtmxZiePZvXs3cnNz+bInJoMnat4hAwcOlPvz/PnzERwcDKDwsdkSiUS8CTAAtGvXDgcPHsRXX32FrVu3wsHBAcuXL8e4ceOk+ps2bRoAYOXKlXj69Cnc3Nxw5MgRNG/7wH2/AAAUc0lEQVTeXGzj4eGB1atX48cff0RmZiZq166NTp06Yf/+/byihrEqSEdHB8ePH8fnn3+ODz/8EIIgoFevXlixYoXUSjp52QIAy5cvR0JCAgwNDeHt7Y3Lly+jUaNGUm1evnyJ6dOnIzk5GXZ2dhg4cCCCg4OlvsnW0tLCrVu3EB4ejlevXqFhw4b45ptvMGHCBPW+AYwxtVHneculS5eQlpaGtLQ0fPDBB1L76dy5M86cOSP+/M0338DMzAzr169HaGgonJ2dsWPHDgQGBpbzETPG1K0izluAwkkdbW3tUnNix44dcHV1lVrtxxgACG//8rHSCYJAlfl9GzVqFK5du4YbN25AS0urSj7xpKCgAAUFBfD29oapqSl+/vnnEusrK0EQQETFX/fF2Bs4W9SPs4WxQpUpbzhbNINzhKmqMuWIPJwtlQfnjfKq3m8rU8hff/0FXV1djBgxQtNDKZMZM2ZAV1cXZ8+eVaieMVYxOFsYY+rA2cIYUwfOFlZV8YqaMqjss8eJiYl4/vw5AMDa2hr16tXT8IiUl5SUhOTkZACAhYUFGjZsWGJ9ZcWzx0wZnC3qx9nCWKHKlDecLZrBOcJUVZlyRB7OlsqD80Z5PFFTBpU9lFjlwaHElMHZwhTF2cJUxXnDOEeYqjhHmKI4b5THlz4xxhhjjDHGGGOMVRI8UcMYY4wxxhhjjDFWSfBEDWOMMcYYY4wxxlglwRM1jDHGGGOMMcYYY5UET9QwxhhjjDHGGGOMVRI6mh5AVWRgYPBUEAQ7TY+DVX4GBgZPNT0GVnVwtjBFcbYwVXHeMM4RpirOEaYozhvl8eO5qzlBEHoBCAPQnIgKND0eVQiC8DkALyLqq+mxMPau42xhjKkDZwtjTB04W1hVwxM11ZggCFoArgFYQET7NT0eVQmCYADgLgB/Irqq6fEw9q76X7ZcBxDK2cIYKy983sIYUwfOFlYV8T1qqrf+AAjAAU0PpDwQUQ6ARQAWaHosjL3j+gMoAGcLY6x88XkLY0wdOFtYlcMraqopQRC0AdwEMJOIjmh6POVFEAQ9ALcBDCei85oeD2PvmjeyZQYRHdX0eMoLZwtjmsXnLYwxdeBsYVUVr6ipvgYDeAWg2nyQAgAiygUQCp5BZkxTirLlmKYHUp44WxjTOD5vYYypA2cLq5J4RU01JAiCDoBYAJ8SUZSmx1Pe3ji+cUR0WtPjYexdwdnCGFMHzhbGmDpwtrCqjFfUVE8fAngM4JSmB6IORJQPIBjAAkEQBA0Ph7F3CWcLY0wdOFsYY+rA2cKqLJ6oqWb+d73ifABzqXovl9oFwAKAr6YHwti7gLOFMaYOnC2MMXXgbGFVHU/UVD+jAdwhonOaHog6EZEEheHLM8iMVQzOFsaYOnC2MMbUgbOFVWk8UVONCIJgAGAOgLmaHksFiQSgDaCvpgfCWHXG2cIYUwfOFsaYOnC2sOqAJ2qqlzEAbhDRFU0PpCIQUQGAeQBCBUHg32XG1IezhTGmDpwtjDF14GxhVR7/j6wmBEEwAvAlCv9I3yU/A8gGEKDpgTBWHXG2cLYwpg6cLZwtjKkDZwtnS3XBEzXVxwQAF4joD00PpCL97+ZgcwGECIKgrenxMFYNcbZwtjCmDpwtnC2MqQNnC2dLtSBU75tgvxsEQTAF8DcALyL6S9PjqWj/u3HWWQAbiP6/vfsP1fO8ywB+3U1i27W0WVvXTJbSsq5tVlZMJ4oiDQoKq+KoIPgLtKKif6gMQXFsM93KmPNHjVOUqZthOirTjU6d6CZWUUZYx5xZuzmNZbKUds6mbdYfM+m5/eOcLZZDOM9z3vc99/287+cD+aOH9uFLztWLcPG8J/U9re+BZaFbdAssgm7RLbAIukW3LBNDzRIopbwhyYFa6w+1vqWVUsqhJO9KclOt9Uzre2AZ6BbdAougW3QLLIJu0S3LxFAzcaWUvVlfjr+l1vrZ1ve0VEr5SJJ7a61/0PoWmDrdco5ugfnRLefoFpgf3XKOblkOhpqJK6W8OcnLaq0/1vqW1kop35zk3iQ31Fq/3PoemDLdco5ugfnRLefoFpgf3XKOblkOhpoJK6VcleTfknxDrfXh1vf0oJTyV0k+VGv9nda3wFTpls10C8xOt2ymW2B2umUz3TJ9hpoJK6X8SpLLa60/1fqWXpRSXp3kg0mur7U+2/oemKKNbrms1vrTrW/phW6B2flzy2a6BWanWzbTLdNnqJmoUsq+JA8luaXW+vnW9/SklPL+JP9Ua/2N1rfA1OiW89MtsH265fx0C2yfbjk/3TJthpqJKqX8Zta/fz/X+pbelFJeleTDWV+Qv9T6HpgS3XJ+ugW2T7ecn26B7dMt56dbps1QM0GllJcl+WSSm2utj7a+p0ellHuT/Eut9W2tb4Gp0C1b0y0wnm7Zmm6B8XTL1nTLdBlqJqiU8rtJTtdaf6H1Lb0qpdyU5B+TvKLW+mTre2AKdMvWdAuMp1u2pltgPN2yNd0yXYaaiSmlXJvk40lurLV+se01fSulHE3yn7XWu1rfAr0rpVyX5IHoli3pFhjOn1uG0y0wnG4ZTrdMk6FmYkopf5jkkVrrG1vf0rtSysuTHEtyQ6318db3QM9KKe9KclK3bE23wHD+3DKcboHhdMtwumWaDDUTUkp5RZKPZv3VtVOt75mCUso7k3yx1vr61rdAr3TLeLoFtqZbxtMtsDXdMp5umR5DzYSUUv44yWdqrXe3vmUqSinXJPlEkgO11i+0vgd6pFvG0y2wNd0ynm6BremW8XTL9BhqJqKUcnOSv0/y8lrr6db3TEkp5R1J/rfW+vOtb4He6Jbt0y1wfrpl+3QLnJ9u2T7dMi2GmokopbwvycdqrW9vfcvUlFJemuRTSV5Va32k9T3QE92yfboFzk+3bJ9ugfPTLdunW6bFUDMBpZSvT/LXSa6vtT7d+p4pKqX8epKvqbX+TOtboBe6ZXa6BTbTLbPTLbCZbpmdbpkOQ80ElFI+mOTvaq1HWt8yVaWUlyT5dJKDtdb/an0P9EC3zE63wGa6ZXa6BTbTLbPTLdNhqOlcKeUbk/x51n+q+XOt75myUspbk1xVa/3J1rdAa7plfnQLnKNb5ke3wDm6ZX50yzQYajpXSvmbJB+otf5e61umrpRyRZLPJvmmWuuJ1vdAS7plfnQLnKNb5ke3wDm6ZX50yzRc0PoAzq+U8q1Jbkjyrta3LINa6+NJ3pHkTa1vgZZ0y3zpFlinW+ZLt8A63TJfumUavFHTqVJKyfpfPXe01vru1vcsi1LK5Un+PclttdbPtL4HdppuWQzdwqrTLYuhW1h1umUxdEv/vFHTr29P8nVJ3tP6kGVSa30yyT1JDjc+BVrRLQugW0C3LIJuAd2yCLqlf96o6dDGcvzPSX671vre1vcsm1LKpUn+I8l31lr/tfU9sFN0y2LpFlaVblks3cKq0i2LpVv65o2aPr0myeVJ/rT1Icuo1vqlJG9PclfrW2CH6ZYF0i2sMN2yQLqFFaZbFki39M0bNZ3ZWI4/luRttdY/a33PsiqlXJz1Bfl7aq0fb30PLJpu2Rm6hVWjW3aGbmHV6JadoVv65Y2a/rw2ya4k7299yDKrtT6b5K1J3tz6FtghumUH6BZWkG7ZAbqFFaRbdoBu6Zc3ajpSSrkgySeTvL7W+het71l2pZQLk3w2yffXWj/a+h5YFN2ys3QLq0K37CzdwqrQLTtLt/TJGzV9+b4kzyT5y9aHrIJa65eTvGXjFywz3bKDdAsrRLfsIN3CCtEtO0i39MkbNZ0opexO8qkkP1tr/dvW96yKUsqeJJ9O8uO11vsbnwNzp1va0C0sO93Shm5h2emWNnRLf7xR048fTPLfST7c+pBVUms9k/XPZL5l44eWwbLRLQ3oFlaAbmlAt7ACdEsDuqU/hpoObCyYv5zkDdUrTi38SZKrknxH60NgnnRLc7qFpaRbmtMtLCXd0pxu6YihppFSyh+VUq7Y+McfTfJwrfUfGp60smqtzyc5nOTuryzIpZS3l1JubHoYbINu6YduYZnoln7oFpaJbumHbumLoaad25K8eOOnbL9x4xftvC/JRUm+e+OfX51kf7tzYNt0S190C8tCt/RFt7AsdEtfdEsnDDXt7EryfJKfSHL8K38Vms8E7rxSSqm1riV5U9Y/l3lB1r83u9peBtuiWzqhW1gyuqUTuoUlo1s6oVv6YqhpZ1eS3Ul+KcmbSikvKaV8KMkvtj1rtZRSrk7y+VLKa5Lcl+Rsku/Nein5/4Mp0i0d0C0sId3SAd3CEtItHdAt/fGb3s6uJD+c5FiSFyf5xMavX2t51KqptT6W5AeSvDPJrya5a+OX9Zip0i0d0C0sId3SAd3CEtItHdAt/Sl+oHYbpZQvJClJPpDku5L8SK31I22vWl2llCuTvDvJS3NuwHxzrfW+dlfBeLqlL7qFZaFb+qJbWBa6pS+6pR/eqGnnkqy/5ndNkoMKqa1a6/8keW2S9yR5eZJbsv79ganRLR3RLSwR3dIR3cIS0S0d0S39MNS0U5P8fpLba61faH0MSV33W0m+LclzSb628UmwHbqlM7qFJaFbOqNbWBK6pTO6pQ8++tTIxk/V9pvfKd8fpkp2++b7w1TJbt98f5gq2e2b7087hhoAAACATvjoEwAAAEAnJv+Dgfbs2fPo2bNnr259x6Lt3r37sTNnzuxrfceUrUpWEnmZh1XJi6zMblWyksjLPKxKXmRldquSlURe5mFV8iIrs1uVrCTTzsvkP/pUSqmHDx9ufcbCHT58OLXW0vqOKVuVrCTyMg+rkhdZmd2qZCWRl3lYlbzIyuxWJSuJvMzDquRFVma3KllJpp0XH30CAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4aaDWfPns0999yThx56aOZnPf7447n77rtz6tSpOVxGb2SFMeSFoWSFMeSFoWSFMeSFoWRlsQw1Gx544IHs2bMnBw4cmPlZV1xxRQ4cOJD7779/9sPojqwwhrwwlKwwhrwwlKwwhrwwlKwslqEmSa01x44dy6233ppSylyeefDgwRw/fjxPP/30XJ5HH2SFMeSFoWSFMeSFoWSFMeSFoWRl8Qw1ST73uc/l1KlTufnmm+f2zGuvvTYXXXRRjh8/Prdn0p6sMIa8MJSsMIa8MJSsMIa8MJSsLJ6hJsmJEydy2WWX5fLLL5/bMy+44ILs378/J06cmNszaU9WGENeGEpWGENeGEpWGENeGEpWFs9Qk+SRRx7J1VdfPffn7tu3LydPnpz7c2lHVhhDXhhKVhhDXhhKVhhDXhhKVhbPUJPk9OnTueSSS+b+3Be96EV55pln8vzzz8/92bQhK4whLwwlK4whLwwlK4whLwwlK4tnqMn6Xy22a9euuT939+7dX30+y0FWGENeGEpWGENeGEpWGENeGEpWFs9Qk+Tiiy/Oc889N/fnPvvss9m1a1cuvPDCuT+bNmSFMeSFoWSFMeSFoWSFMeSFoWRl8Qw1Sa666qo88cQTc3/uE088kSuvvHLuz6UdWWEMeWEoWWEMeWEoWWEMeWEoWVk8Q02S/fv357HHHtv0Wbj77rsvd9111wu+dvTo0Rw5cuQFXzty5EiOHj266bknT57MNddcM/+DaUZWGENeGEpWGENeGEpWGENeGEpWFs9Qk+Smm27K2tpaHn744Rd8fW1tLbXWTV9bW1vb8munT5/Oo48+mle+8pWLOZomZIUx5IWhZIUx5IWhZIUx5IWhZGXxdrc+oAeXXnppbrzxxhw/fjzXX3/9V79+xx135I477njBv3vnnXdu+u9f97rXbfragw8+mL179+a6666b/8E0IyuMIS8MJSuMIS8MJSuMIS8MJSuL542aDYcOHcqDDz6Yp556auZnra2t5dixYzl06FBKKXO4jp7ICmPIC0PJCmPIC0PJCmPIC0PJymIZajbs27cvt99+e5588smZn/XUU0/l4MGDueWWW+ZwGb2RFcaQF4aSFcaQF4aSFcaQF4aSlcXy0af/59Zbb53Lc/bu3ZvbbrttLs+iT7LCGPLCULLCGPLCULLCGPLCULKyON6oAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOl1tr6hpns2bPn0bNnz17d+o5F271792NnzpzZ1/qOKVuVrCTyMg+rkhdZmd2qZCWRl3lYlbzIyuxWJSuJvMzDquRFVma3KllJpp2XyQ81AAAAAMvCR58AAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6IShBgAAAKAThhoAAACAThhqAAAAADphqAEAAADohKEGAAAAoBOGGgAAAIBOGGoAAAAAOmGoAQAAAOiEoQYAAACgE4YaAAAAgE4YagAAAAA6YagBAAAA6MT/AQEKVaX7quWUAAAAAElFTkSuQmCC\",\n      \"text/plain\": [\n       \"<Figure size 1440x720 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 10))\\n\",\n    \"plot_tree(est[0], impurity=True, max_depth=2)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15,5))\\n\",\n    \"plt.plot(est.feature_importances(max_depth=4, depth_decay_exponent=2.0))\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\\n\",\n    \"explainer = shap.Explainer(est, shap.maskers.Independent(X, max_samples=100))\\n\",\n    \"shap_values = explainer(X[:200])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.plots.beeswarm(shap_values[:, :, 0])\\n\",\n    \"shap.plots.beeswarm(shap_values[:, :, 1])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4. Combining with Double Machine Learning\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n_samples = 5000\\n\",\n    \"n_features = 10\\n\",\n    \"n_treatments = 3\\n\",\n    \"n_outputs = 2\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]**2 + 1, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"# true_te = lambda X: np.hstack([X[:, [0]]>0, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([(X[:, [0]] > 0) * X[:, [0]],\\n\",\n    \"                      np.ones((X.shape[0], n_treatments - 1)) * np.arange(1, n_treatments).reshape(1, -1)])\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"W = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"T = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    T[:, t] = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"y = np.sum(true_te(X) * T, axis=1, keepdims=True) + 5.0 * X[:, [0]] + np.random.normal(0, .1, size=(n_samples, 1))\\n\",\n    \"y = np.tile(y, (1, n_outputs))\\n\",\n    \"for j in range(n_outputs):\\n\",\n    \"    y[:, j] = (j + 1) * y[:, j]\\n\",\n    \"X_test = X[:min(100, n_samples)].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), min(100, n_samples))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 11.3 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x1f17fd04c48>\"\n      ]\n     },\n     \"execution_count\": 34,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = CausalForestDML(cv=2,\\n\",\n    \"                      criterion='mse', n_estimators=400,\\n\",\n    \"                      min_var_fraction_leaf=0.1,\\n\",\n    \"                      min_var_leaf_on_val=True,\\n\",\n    \"                      verbose=0, discrete_treatment=False,\\n\",\n    \"                      n_jobs=-1, random_state=123)\\n\",\n    \"%time est.fit(y, T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"res = est.const_marginal_effect_inference(X_test)\\n\",\n    \"point = res.point_estimate\\n\",\n    \"lb, ub = res.conf_int(alpha=.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for t in range(n_treatments):\\n\",\n    \"    for j in range(n_outputs):\\n\",\n    \"        plt.plot(X_test[:, 0], point[:, j, t])\\n\",\n    \"        plt.fill_between(X_test[:,0], lb[:, j, t], ub[:, j, t], alpha=.4)\\n\",\n    \"        plt.plot(X_test[:, 0], (j + 1) * true_te(X_test)[:, t])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th>Y</th>\\n\",\n       \"      <th>T</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">0</th>\\n\",\n       \"      <th rowspan=\\\"3\\\" valign=\\\"top\\\">Y0</th>\\n\",\n       \"      <th>T0</th>\\n\",\n       \"      <td>0.066</td>\\n\",\n       \"      <td>0.025</td>\\n\",\n       \"      <td>2.660</td>\\n\",\n       \"      <td>0.008</td>\\n\",\n       \"      <td>0.025</td>\\n\",\n       \"      <td>0.107</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T1</th>\\n\",\n       \"      <td>1.077</td>\\n\",\n       \"      <td>0.040</td>\\n\",\n       \"      <td>26.652</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.011</td>\\n\",\n       \"      <td>1.144</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T2</th>\\n\",\n       \"      <td>2.071</td>\\n\",\n       \"      <td>0.039</td>\\n\",\n       \"      <td>53.520</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>2.007</td>\\n\",\n       \"      <td>2.134</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">Y1</th>\\n\",\n       \"      <th>T0</th>\\n\",\n       \"      <td>0.132</td>\\n\",\n       \"      <td>0.050</td>\\n\",\n       \"      <td>2.660</td>\\n\",\n       \"      <td>0.008</td>\\n\",\n       \"      <td>0.050</td>\\n\",\n       \"      <td>0.213</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T1</th>\\n\",\n       \"      <td>2.155</td>\\n\",\n       \"      <td>0.081</td>\\n\",\n       \"      <td>26.652</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>2.022</td>\\n\",\n       \"      <td>2.288</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">99</th>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">Y0</th>\\n\",\n       \"      <th>T1</th>\\n\",\n       \"      <td>0.842</td>\\n\",\n       \"      <td>0.087</td>\\n\",\n       \"      <td>9.706</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>0.699</td>\\n\",\n       \"      <td>0.985</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T2</th>\\n\",\n       \"      <td>1.887</td>\\n\",\n       \"      <td>0.074</td>\\n\",\n       \"      <td>25.641</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.766</td>\\n\",\n       \"      <td>2.008</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"3\\\" valign=\\\"top\\\">Y1</th>\\n\",\n       \"      <th>T0</th>\\n\",\n       \"      <td>4.139</td>\\n\",\n       \"      <td>0.187</td>\\n\",\n       \"      <td>22.148</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>3.832</td>\\n\",\n       \"      <td>4.447</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T1</th>\\n\",\n       \"      <td>1.684</td>\\n\",\n       \"      <td>0.174</td>\\n\",\n       \"      <td>9.706</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>1.399</td>\\n\",\n       \"      <td>1.970</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>T2</th>\\n\",\n       \"      <td>3.774</td>\\n\",\n       \"      <td>0.147</td>\\n\",\n       \"      <td>25.641</td>\\n\",\n       \"      <td>0.000</td>\\n\",\n       \"      <td>3.532</td>\\n\",\n       \"      <td>4.016</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>600 rows × 6 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"          point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X  Y  T                                                             \\n\",\n       \"0  Y0 T0           0.066   0.025   2.660   0.008     0.025     0.107\\n\",\n       \"      T1           1.077   0.040  26.652   0.000     1.011     1.144\\n\",\n       \"      T2           2.071   0.039  53.520   0.000     2.007     2.134\\n\",\n       \"   Y1 T0           0.132   0.050   2.660   0.008     0.050     0.213\\n\",\n       \"      T1           2.155   0.081  26.652   0.000     2.022     2.288\\n\",\n       \"...                  ...     ...     ...     ...       ...       ...\\n\",\n       \"99 Y0 T1           0.842   0.087   9.706   0.000     0.699     0.985\\n\",\n       \"      T2           1.887   0.074  25.641   0.000     1.766     2.008\\n\",\n       \"   Y1 T0           4.139   0.187  22.148   0.000     3.832     4.447\\n\",\n       \"      T1           1.684   0.174   9.706   0.000     1.399     1.970\\n\",\n       \"      T2           3.774   0.147  25.641   0.000     3.532     4.016\\n\",\n       \"\\n\",\n       \"[600 rows x 6 columns]\"\n      ]\n     },\n     \"execution_count\": 37,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"res.summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"res = est.effect_inference(X_test,\\n\",\n    \"                           T0=np.zeros((X_test.shape[0], n_treatments)),\\n\",\n    \"                           T1=np.ones((X_test.shape[0], n_treatments)))\\n\",\n    \"point = res.point_estimate\\n\",\n    \"lb, ub = res.conf_int(alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for j in range(n_outputs):\\n\",\n    \"    plt.plot(X_test[:, 0], point[:, j])\\n\",\n    \"    plt.fill_between(X_test[:,0], lb[:, j], ub[:, j], alpha=.4)\\n\",\n    \"    plt.plot(X_test[:, 0], (j + 1) * np.sum(true_te(X_test), axis=1))\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point_estimate</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>pvalue</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th>Y</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">0</th>\\n\",\n       \"      <th>Y0</th>\\n\",\n       \"      <td>3.214</td>\\n\",\n       \"      <td>0.072</td>\\n\",\n       \"      <td>44.951</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>3.097</td>\\n\",\n       \"      <td>3.332</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Y1</th>\\n\",\n       \"      <td>6.428</td>\\n\",\n       \"      <td>0.143</td>\\n\",\n       \"      <td>44.951</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>6.193</td>\\n\",\n       \"      <td>6.663</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">1</th>\\n\",\n       \"      <th>Y0</th>\\n\",\n       \"      <td>3.212</td>\\n\",\n       \"      <td>0.086</td>\\n\",\n       \"      <td>37.447</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>3.071</td>\\n\",\n       \"      <td>3.353</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Y1</th>\\n\",\n       \"      <td>6.424</td>\\n\",\n       \"      <td>0.172</td>\\n\",\n       \"      <td>37.447</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>6.142</td>\\n\",\n       \"      <td>6.706</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <th>Y0</th>\\n\",\n       \"      <td>3.194</td>\\n\",\n       \"      <td>0.074</td>\\n\",\n       \"      <td>43.012</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>3.072</td>\\n\",\n       \"      <td>3.317</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>97</th>\\n\",\n       \"      <th>Y1</th>\\n\",\n       \"      <td>9.551</td>\\n\",\n       \"      <td>0.413</td>\\n\",\n       \"      <td>23.151</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>8.872</td>\\n\",\n       \"      <td>10.229</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">98</th>\\n\",\n       \"      <th>Y0</th>\\n\",\n       \"      <td>4.798</td>\\n\",\n       \"      <td>0.185</td>\\n\",\n       \"      <td>25.954</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>4.494</td>\\n\",\n       \"      <td>5.102</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Y1</th>\\n\",\n       \"      <td>9.596</td>\\n\",\n       \"      <td>0.370</td>\\n\",\n       \"      <td>25.954</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>8.988</td>\\n\",\n       \"      <td>10.204</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"2\\\" valign=\\\"top\\\">99</th>\\n\",\n       \"      <th>Y0</th>\\n\",\n       \"      <td>4.799</td>\\n\",\n       \"      <td>0.183</td>\\n\",\n       \"      <td>26.212</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>4.497</td>\\n\",\n       \"      <td>5.100</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Y1</th>\\n\",\n       \"      <td>9.597</td>\\n\",\n       \"      <td>0.366</td>\\n\",\n       \"      <td>26.212</td>\\n\",\n       \"      <td>0.0</td>\\n\",\n       \"      <td>8.995</td>\\n\",\n       \"      <td>10.199</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>200 rows × 6 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"       point_estimate  stderr   zstat  pvalue  ci_lower  ci_upper\\n\",\n       \"X  Y                                                             \\n\",\n       \"0  Y0           3.214   0.072  44.951     0.0     3.097     3.332\\n\",\n       \"   Y1           6.428   0.143  44.951     0.0     6.193     6.663\\n\",\n       \"1  Y0           3.212   0.086  37.447     0.0     3.071     3.353\\n\",\n       \"   Y1           6.424   0.172  37.447     0.0     6.142     6.706\\n\",\n       \"2  Y0           3.194   0.074  43.012     0.0     3.072     3.317\\n\",\n       \"...               ...     ...     ...     ...       ...       ...\\n\",\n       \"97 Y1           9.551   0.413  23.151     0.0     8.872    10.229\\n\",\n       \"98 Y0           4.798   0.185  25.954     0.0     4.494     5.102\\n\",\n       \"   Y1           9.596   0.370  25.954     0.0     8.988    10.204\\n\",\n       \"99 Y0           4.799   0.183  26.212     0.0     4.497     5.100\\n\",\n       \"   Y1           9.597   0.366  26.212     0.0     8.995    10.199\\n\",\n       \"\\n\",\n       \"[200 rows x 6 columns]\"\n      ]\n     },\n     \"execution_count\": 40,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"res.summary_frame()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([[0.98217628, 0.00347145, 0.00153771, 0.00260605, 0.00102379,\\n\",\n       \"        0.00138967, 0.00223861, 0.00133064, 0.0030675 , 0.00115831],\\n\",\n       \"       [0.98217628, 0.00347145, 0.00153771, 0.00260605, 0.00102379,\\n\",\n       \"        0.00138967, 0.00223861, 0.00133064, 0.0030675 , 0.00115831]])\"\n      ]\n     },\n     \"execution_count\": 41,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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ac517txZRETmzJkjUVFRmcohIrJ27VpZu3Ztpu1artN0fTviyMymIo61a+q2fHx8Mv1Mnz59rP+Pi4uToKAgERE5f/68jB8/PlMZUqNtas69ei+7pNj0+PHjMm/evDSfTUhIkF69et2z7RSbenp6ngHEHQ9PT88z4gRjSh/60Ic+9KEPVzucMgFFZrRq1YqpU6dSr149YmJirOfv3LlDwYIFqVixInv2ZF6b09vbmyJFihAYGMhjjz0GwA8//JBmxbpJkyZ4eXllWZ533nmHwMBArl69SpkyZTKV4/bt23z11VfMmjUrB1ecN3CkXePj46lYsSJguG6lZ8GCBXTt2tX6evny5dbvzpgxg+DgYIKCgnJ3wXkAZ7pXU9t03rx5TJ48OU3f69evp23btllqy50TbuSlxCmugqtny3T1zKaurH+te/PQujcPM3XvEm5+t2/fZuXKlXTr1o2NGzemeS9//vwkJiYSHx/Pww8/nOn3BwwYQIECBfj444+Jioq6b39btmxhwIABHD169K6fadOmDbNnz6ZmzZrUqFEjgxx37twhKCiIDz/8kCJFdFmZzHC0XcuXL098fDxg7Mim5osvviBfvny8/vrr1nN79+7lmWeeAeCXX35h1KhR7Ny5kx07dmTrOvMSjrbpvUht07NnzxIbG8vQoUPZuXMnv/32GwBfffUVbdq0yVU/9iYmJoaePXvSo0ePNO7G58+fx9vb2+q2eOXKFfz9/enSpQuLFy++q6ujxjVImby76uGqD2QpuLL+te617nOK1n0OMfviMztI5z40duxY2bt3ryQnJ0v37t3lyJEjVtehXbt2Se/evaVXr15y5coVEbm7y8/Vq1dl/vz5curUqUzfz4w1a9bIM888Iz169JAzZ85ISEiInD59WhYvXiz9+vWT9957L1M5QkNDpVmzZuLn5yfbt2/PtG3yuEuYo+2amJgo3t7e0q9fP9m4caOIiPj6+srx48flkUceET8/P5k6daqIiOzbt0/Gjx+foQ3t5udcNhURGT58uNSsWVMmT54sIne3aQopfZ47d04CAgLu236KTTO73hSWLFki/fr1k549e8r06dNlyJAhMnPmTPnll1+ka9euEhQUJOfPn5dly5bJoEGDxNfXVxISEu7bt4jhZhwXFyfR0dEybty4DO+n12FiYmKG60rtvnqva9SH8xz3Gm+u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fsnJyYwZM4Z333032/24CmbqvmXLlnz33Xf88ssveHh4MHXqVIKCgli2bBmgx30KttB9ZmzdupWmTZsCUK1aNebMmWP1Jho1apT1OcNZcOqYKbPjEsqXL299aE4dkFe+fHnrluTdAvVSZtqBgYFUqVIlV3K4E85q08wYNmwYAF5eXpQqVUrb9C6YbdOsklntsGLFivHVV185tIhuaGgo+fLlI3/+/Jw5c4bKlStbd5fA2EkqWLAgxYoVY/LkyXz//fckJiYSEhJCWFgYW7du5ZVXXmHTpk056j/9KqDG+WndujUNGzZk06ZNfP/99zzwwANpdn0rVarEwoULiYuLY8iQIXz55ZeUK1eOEiVKAFCvXj3q1at3336aN2/OpEmTUEoxYcIEIiIieP3119OcGzt2LOfOnePtt98GnDvDli0wU/ft27fnyy+/BOC5555Lk9lv9OjRXLlyhaioKDp37myfizcZM3XfqlUrChQowOOPP86TTz7JlClTOHv2rNUFW4972+j+xo0bacb4unXr6NatG99//z1jxowB4NixY4wePZp69eqxdu1aDh06RL58TrYXJCJOdxhiGXh7e8uUKVNERGTatGkyevRo6dChg0RGRkpISIjExsbK3LlzZezYsdKpUyfZtm2b/PTTT/LOO+/IoEGDZNu2bZIVIiMjZdmyZdY+RUQSExPF29tb+vXrJxs3bhQREV9fXxERGTJkiAwYMEAWL14sIiILFy6UmjVrip+fnyQmJsqUKVPE29tb/v3vf6e5ltRYrtN0fTvicAWbTp48WWrWrCnDhw8XEZHhw4fLO++8I8uXLxcR0TZ1UpuKGLaqWbOmTJ48WUQyt2lycrJ4e3tL//79pXfv3pKcnCznzp2TgICANH3czaaprzc3hISESExMjLXf/v37S2JiovX9d999V/z8/GT69OkiItK5c2cREZkzZ45ERUVlKmNuyUvj1lUOW423exERESFRUVGyefNmWbNmTa7aun79uowYMcL62tXHlL31r3Wvde+Mh9Z9DvVmVsf3FMoBf0TSc7eHNFuiH7wdi7aptmlOcMRk6tSpUxISEiIiIh988IGcO3fO+n5ycrKIiAwbNkyio6Plq6++kgEDBkivXr1k1apVmcqYW/LSuHWVw4z7y5a4+phyZf1r3ZuH1r15mKl7J9snMw9bxyWkZ+3atZQrV86m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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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pgclP/30E19++aV5m7Zt29K3b99b9i1TxlS3rl27NmfPnsXFxcX83p49e/i///s/AN566y0GDBjA+vXr+eKLL6hXrx5NmjTht99+K/C5C5Ep40fL5Yxl/922t1a5yapp06Z88803jB49mv/9738ALFy4kOnTp9/22EKURMU94maWyJq9MM2HFyMVKZGV1vqIUuo88DTQRCn1mtb6ayh+179Eki0YaZkqYpKTk/niiy948803+eGHH7K9Z2NjQ0pKCrGxsTz44IO57j9s2DDKli3LvHnziIyMvOvxIiIiGDZsGH/++SdpaWmA6Ql9zvRXrFhh/iGZOd2Co6Mj8fHx7Nixg23btrFx40aMRuO9nrIQBXa/y83tlClThuDgYGbOnEmtWrU4f/48Z86cYfTo0ezevZujR4/mO20hipPExMRaWmuK65L5Q1hrfVhrfUYqUuI2Xge6AAbgcObK4nb9F6eKX5Fk7f/A0rxgbi3+1+TJk/W+fft0enq67tevnz58+LCePHmy1lrrX375RXt4eOiBAwfqa9euaa21Hjx48C1paK319evX9aJFi/Tp06dzfT83ixYt0sOGDdP+/v5aa62DgoL02bNndXJysu7bt695u08//VS//fbbunfv3vrixYvm9UFBQfrMmTO3pJtxnlb/vGUpOUvOsmONchMQEKAbNmyop0+frrXWesiQIea033zzTb1ly5Zs22ce89tvv9XNmzfX/fv31+fOncu2jZQVWUrKktv9rTiRsihLQZbidv3L9V6wReaZsqK8zJUTHR1NeHg4gYGBub7v5eXFkiVLCiN7FiNz5whLu1vZKa7lRsqKKClyltHMLuFbtmxh0KBBjB49mlmzZrFu3Tri4uJ49NFHadSoESEhISxcuPCW9FJTU7G1vfPIhOPHj2M0GilfvjwffPABAOfPn+fTTz/FyckJLy8vevbsSdu2bfHy8mLVqlXmnhiDBw/OmX8piyLfsl7/hXntX7hwgYCAADw8PGjXrh0AiYmJzJgxg8qVK/Puu+8SHBzMhQsX8PX15dq1awQEBBAREZEzv3K9F4B08yvi7OzsOHHiRLYxIJmioqJISEi4/5kSooiTciNE0dKnTx/CwsJwdnamVq1aNGjQAEdHR2JiYhgzZgxRUVHUq1cPJ6d/h22kpKTw3XffMXXqVDZu3MjFixeZPXu2eUlMTMx2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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for tree_id, tree_per_output in enumerate(est[:2]):\\n\",\n    \"    plt.figure(figsize=(15, 5))\\n\",\n    \"    for j in range(n_outputs):\\n\",\n    \"        plt.subplot(1, n_outputs, j + 1)\\n\",\n    \"        plot_tree(tree_per_output[j], max_depth=2)\\n\",\n    \"        plt.title(\\\"Tree #{} for output y{}\\\".format(tree_id, j))\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"[GRFTree(max_features='auto', min_var_leaf=0.020617404788809485,\\n\",\n       \"         min_var_leaf_on_val=True, random_state=914636141),\\n\",\n       \" GRFTree(max_features='auto', min_var_leaf=0.020617404788809485,\\n\",\n       \"         min_var_leaf_on_val=True, random_state=914636141)]\"\n      ]\n     },\n     \"execution_count\": 43,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est[0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\\n\",\n    \"shap_values = est.shap_values(X[:20])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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JPB1v7uvX1Jaa/PgCovyANw93cPorLYdrJfU2jy43KIiYPOTM72MauN6nSBu0kXA+E6zx+A++y9xsw/xSrmsqdD2fGp/8xFGVgopP5uFp5t7p935NALrjlL1+Go8/dPpdv95GClNPwcC+TXsfWgTdsBi6E8nkTLks0+DJR0r7z+HOfz6AXpMzmL4d8dgGO74N1t5sIqtf9yON8nDxDvGk9wzPv52K0qCLH0pDytsc+GX+tK9V/PT9n0a+4vC/O97NSQnGPz0shR6p3ucKT9/s5a67cX0uHk86bNazrBxl81eX+XMJuIfCf91hTOS8jhH1xSy8+X9dBuSztRvj+7SKdwBtq8sZeuyEvqPTOWsq7M77O/v1a0hXt8W5oyBHm47K7aPz49U2jy8wsK24f6zPfRP79z/QUcrbR5eFsay4b6ZXgZkuON/HjjTRD60JEDYgvtm+RjYPbYz+Wf15m6LV3bZnN7H4I7TjTb//byRYzFvp8W0vga3T/NE63Mvrt54bs1mbeq48vv9ScAaYL5pmvf6/f5ngGHALCAJJwxdaZrmkvrlZwFv4dK51EVExBF34UhEJLbFTbAIGLe2EI7+HDf7EI+Uy0REpCXKZiIiHSauMo1bs1lbu3Z/BQSAB+pv3w4MBu40TbMG+AfwoN/vz/b7/dnAgzjTVnR2OBIRERERkS7m1nnU44BymYiIiIiINHBrNmu148rv918EfBu40TSdq8iZplkB3AT8vH6qijuAXY1+dgI/7KyiRURERERETiXKZSIiIiIicqpo/qIljZimuRg4YaJr0zSXAWmN7rql/kdEREREREQ6kHKZiIiIiIicKlrtuBIREREREWnMDVNPiIiIiIiIxDu3ZjN1XImIiIiISDu5MxyJiIiIiIjEF3dmM3VciYiIiIhIu7h1VJ+IiIiIiEg8cWs2U8eViIiIiIi0kzvDkYiIiIiISHxxZzZTx5WIiIiIiLSLW0f1iYiIiIiIxBO3ZjNPtAsQERERERERERERERERAXVciYiIiIiIiIiIiIiISIzQVIEiIiIiItIubp2OQkREREREJJ64NZup40pERERERNrJneFIREREREQkvrgzm6njSkRERERE2sWto/pERERERETiiVuzmTquRERERESkXdwajkREREREROKJW7OZJ9oFiIiIiIiIiIiIiIiIiIDOuBIRERERkXZy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bKdnXDmOMwXIa2H5J8CWSWbn0njUn4iIiIiIpLEUnRPuY+B3wB+bLLsK+DA55XQu5TIREREREdlaumaz1k4VKCIiIiIiksp+DUy0LOsSIN+yrMVANaCLfYiIiIiIiHSfDmczDVyJiIiIiEibpMDUE9swxmywLOtg4BBgGImpKWYZY9zkViYiIiIiItI10jWbaeBKRERERETaJEWno8AYY4DP628iIiIiIiJpLV2zmQauRERERESkTVLxqD7LstawndxmjBnWzeWIiIiIiIh0uXTNZhq4EhERERGRNknFcAScv9X9gcDVwPNJqEVERERERKTLpWs208CViIiIiIi0SSpeNMoY89HWyyzLmga8A/y12wsSERERERHpYumazTRwJSIiIiIibWI8KXlUX0vCwMhkFyEiIiIiItIV0jWbaeBKRERERER6PMuy7thqUQ5wMvB2EsoRERERERHZJXVGNtPAlYiIiIiItIlJzYP6hm51vxZ4AHg6CbWIiIiIiIh0uXTNZhq4EhERERGRNknF6SiMMRcluwYREREREZHulK7ZTANXIiIiIiLSJsaT7AoSLMsa15r1jDFTu7oWERERERGR7pau2UwDVyIiIiIi0ibGmzJH9f2rFesYYLeuLkRERERERKS7pWs208CViIiIiIi0iZsi01EYY0YmuwYREREREZFkSddspoErERFJHc9/Am99CUfuBZedkOxqdmrF5LWsmrKBfgcWs8/5o5JdjohIt0mV6ShERESkC5RVwx0vQjACN50JI/snu6IdClWE+fqRRcSCccZetgcFw/OSXZKISLdJ12ymgSsREUkNH82HnzyQaD/zERTmwrlHJremHShxyph69SwwsOyNNfjzMhh9+rBklyUi0i1S8QLAlmUVALcBRwN9gIYijTH6Ay0iItJaP3kAPpiTaE+bD0v/L7n17MRH1zms/XgjABtmbOKcD09MckUiIt0nXbNZmo7HiYhIj7NgzY7vp5jKbwOJmXkb7lcnrxgREQH4O3AQcAdQDPwaWA08mMyiREREepz5TbLYtxsgEk1eLa1QsbQxiwXW1BELxpJYjYiI0AnZTANXIiKSGk6xoX9Rop2fDWcdltx6dmLo9weQ0y8LgIxcHyNOGpLkikREuo+xWr4l2fHAmcaYN4B4/b8/Bi5IblkiIiI9zC+ObWyffzT4M5JXSyvscfaI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TFVxAzAPWAaUACOA82zbDne8VxERERERiVVhq+Ob9B7lMhERERER+bJ4zWadThVo2/ZMYLcLvNi2PQ9ofy7yj1puIiIiIiISx+J1Oor+TLlMRERERES+LF6zWZeucSUiIiIiIvIFJz6zkYiIiIiISEyJ12zW1WtciYiIiIiIiIiIiIiIiPQqnXElIiIiIiLdEg8X+xUREREREYl18ZrNVLgSEREREZFuCcfpPOoiIiIiIiKxJF6zmQpXIiIiIiLSLfE6j7qIiIiIiEgsiddspsKViIiIiIh0SzhOp6MQERERERGJJfGazVS4EhERERGRbgnHZzYSERERERGJKfGazVS4EhERERGRbnHidB51ERERERGRWBKv2UyFKxERERER6ZZ4vQCwiIiIiIhILInXbOaKdgdEREREREREREREREREQGdciYiIiIhIN4Wi3QERERERERGJ22ymwpWIiIiIiHRLvE5HISIiIiIi8v/bu+84uar6/+Ovz8yWdBISSANCYugEEA4KAgoiCig2voj+QJqKqAhSFFREhK/KF1CwfsUvgvQuvYcQECWGQyCEQID0Aulla3annN8f926Y3WyvM7Pv5+Oxj9yZ2z53TnZ33nvOPVNIijWbqeNKREREREQ6JF2c2UhERERERKSgFGs202dciYgI6x5ewhtHPsa733ie9Kb6Frdb/dBSXj7qad745r9JV7S8nYiIFLc01uyXiIiIdE42BC55McMRd2e41mdb3XbuM6u587zXefq6+aTqMr1UoYiI5KNizWa640pEpJ+rW17F2ydMJdRH4chKEky+/rCttqtdVs1rJ75ASMXblSbY638P6tVaRUQkP6QKPweJiIjklf97PfDLGQGA6csCe4yEoyduPd58zaJqHvv124QsLH11E+WDS/jEt3bu5WpFRCRfFGs2U8eViEg/l1pVu6XTCqB+WXWz29Wvqt3SaQWwuYXtRESk+KWKdB51ERGRvrKsMjR53Px2VWvrCTk3ZFWuruvBqkREJN8VazbTVIEiIv3c4P1GMuLYHQFIDEwy7ry9m91u2Ie3ZdTR47dsN+HcPXqtRhERERERkWJ2xt4Jxg6OlnfbFr68S/N/iNxx323YYcowAMoGJ9n/S2N7q0QREZFe0+YdV865MmAm8Kz3/oKc588Fzgf2AR4CDgZSObt+1Xv/aPeWKyIi3c2SCfZ4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FnZZC+HossIOR4VAuUxEpLApl4mI5L2CyjTFms3aNfzdOVcO3A5c572/GHgAuMU5lwDw3s/z3h/jvd/ee787UAO8B7zTQ3WLiIiIiEhfMWv+S3qUcpmIiIiIiDRSpNmsvXNW/RqoBy6LH58DzAbOB66JR/0tAjYDhwOXAhd57/WJjyIiIiIiIt1DuUxERERERIpem3dcOeeOBM4ETvLepwC895XAKcAv4nD0ZaKAVEE0NcV53vu/91TRIiIiIiLSh4r0A4DzmXKZiIiIiIhspUizWZt3XHnvnwWGNPP8i8Dg+OEc4BfdW5qIiIiIiIiAcpmIiIiIiPQf7Z0qUEREREREJFYEQ/hEREREREQKXnFmM3VciYiIiIhIxxRnNhIRERERESksRZrN2vyMKxEREREREREREREREZHeoDuuRERERESkY4p0VJ+IiIiIiEhBKdJspjuuREREREREREREREREJC/ojisREREREekYK9JhfSIiIiIiIoWkSLOZOq5ERERERKRjijMbiYiIiIiIFJYizWaaKlBERERERERERERERETygjquREREREREREREREREJC9oqkAREREREemYIp2OQkREREREpKAUaTZTx5WIiIiIiHRQkaYjERERERGRglKc2UwdVyIiIiIi0jHFmY1EREREREQKS5FmM33GlYiIiIiIiIiIiIiIiOQF3XElIiIiIiIdU6Sj+kRERERERApKkWYz3XElIiIiIiIiIiIiIiIieUEdVyIiIiIiIiIiIiIiIpIXNFWgiIiIiIh0TJFORyEiIiIiIlJQijSb6Y4rERERERHpMWa22Mz27us6RERERERE+qtCy2W640pERERERDrGinRYn4iIiIiISCEp0mymO65ERERERKRjrIWv9u5udoqZzTGz183sATPbPn7++vv0CQAAE9NJREFUJTM7MF7+s5nNjZdLzGytmQ3u5isREREREREpXF3IZvmcywr+jiszewoY1dvnLSkpGZVOp9f29nmlZWqT/KM2yT9qk/yjNsk/apP80s/a48kQwtF9XUR7hAtLOj2sL56e4krggBDC+2Z2BfAH4ETgWeBI4GXgUKDWzMYCOwNvhRCqu1q79Iy+ymXFpJ/9vJOY2r1/Urv3T2r3/kttX3AKJpdB57NZvueygu+46qv/RM457713fXFuaZ7aJP+oTfKP2iT/qE3y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\",\n      \"text/plain\": [\n       \"<Figure size 1800x1080 with 12 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(25, 15))\\n\",\n    \"for j in range(n_treatments):\\n\",\n    \"    for i in range(n_outputs):\\n\",\n    \"        plt.subplot(n_treatments, n_outputs, i + j * n_outputs + 1)\\n\",\n    \"        plt.title(\\\"Y{}, T{}\\\".format(j, i))\\n\",\n    \"        shap.plots.beeswarm(shap_values['Y' + str(i)]['T' + str(j)], plot_size=None, show=False)\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 5. Custom Linear Moment Forest\\n\",\n    \"\\n\",\n    \"We can even easily create an estimator class that solves a customer linear moment that we want to define on the fly. The `BaseGRF` class can handle the estimation of any linear moment problem of the form:\\n\",\n    \"\\\\begin{equation}\\n\",\n    \"E[\\\\text{pointJ} \\\\cdot (\\\\theta(x); \\\\beta(x)) - \\\\alpha \\\\mid X=x] = 0\\n\",\n    \"\\\\end{equation}\\n\",\n    \"\\n\",\n    \"The user simply needs to create a child class that inherits from the `BaseGRF` and implement the abstract methods `_get_alpha_and_pointJ` and `_get_n_outputs_decomposition`. The first function takes as input all the variables passed at fit time (i.e. `X`, `T`, `y`, and any other keyword based variables the user passes) and returns for each sample the $\\\\alpha$ vector of the linear moment and a flattened version of the $\\\\text{pointJ}$ matrix in the linear moment (in Fortran contiguous form, i.e. the first row is first, the second row next etc). The second function returns two numbers, the first number corresponds to the size of the concatenated parameter vector $(\\\\theta(x); \\\\beta(x))$ and the second number corresponds to the size of the prefix $\\\\theta(x)$ that we care about ($\\\\beta(x)$ is a nuisance parameter).\\n\",\n    \"\\n\",\n    \"As a simple expository example let's see how we can create a forest that solves a moment of the form:\\n\",\n    \"\\\\begin{equation}\\n\",\n    \"E[(y - \\\\theta(x)' (T; T^2)) (Z; Z^2) \\\\mid X=x]\\n\",\n    \"\\\\end{equation}\\n\",\n    \"i.e. where we expand the treatments and instruments to include their squares and solve this quadratic in treatment heterogenous IV model.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(1227)\\n\",\n    \"n_samples = 2000\\n\",\n    \"n_features = 10\\n\",\n    \"n_treatments = 2\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([X[:, [0]] > 0, np.ones((X.shape[0], n_treatments - 1))])\\n\",\n    \"Z = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"U = np.random.normal(0, .2, size=(n_samples, 1))\\n\",\n    \"T = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    T[:, t] += U[:, 0] + Z[:, t]\\n\",\n    \"y = np.sum(true_te(X) * T, axis=1, keepdims=True) + 10 * U[:, [0]]\\n\",\n    \"X_test = X[:1000].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), 1000)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.grf._base_grf import BaseGRF\\n\",\n    \"from econml.utilities import cross_product\\n\",\n    \"\\n\",\n    \"class CustomGRF(BaseGRF):\\n\",\n    \"\\n\",\n    \"    def _get_alpha_and_pointJ(self, X, T, y, *, Z):\\n\",\n    \"        T = np.hstack([T, T**2])\\n\",\n    \"        Z = np.hstack([Z, Z**2])\\n\",\n    \"        if self.fit_intercept:\\n\",\n    \"            T = np.hstack([T, np.ones((T.shape[0], 1))])\\n\",\n    \"            Z = np.hstack([Z, np.ones((T.shape[0], 1))])\\n\",\n    \"        return y * Z, cross_product(Z, T)\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"    def _get_n_outputs_decomposition(self, X, T, y, *, Z):\\n\",\n    \"        n_relevant_outputs = T.shape[1] * 2\\n\",\n    \"        n_outputs = n_relevant_outputs\\n\",\n    \"        if self.fit_intercept:\\n\",\n    \"            n_outputs += 1\\n\",\n    \"        return n_outputs, n_relevant_outputs\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = CustomGRF(criterion='mse', n_estimators=400, min_samples_leaf=40,\\n\",\n    \"                     min_var_fraction_leaf=0.1, min_var_leaf_on_val=True,\\n\",\n    \"                     min_impurity_decrease = 0.001, max_samples=.45, max_depth=None,\\n\",\n    \"                     warm_start=False, inference=True, subforest_size=4,\\n\",\n    \"                     honest=True, verbose=0, n_jobs=-1, random_state=123)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"CustomGRF(min_impurity_decrease=0.001, min_samples_leaf=40,\\n\",\n       \"          min_var_fraction_leaf=0.1, min_var_leaf_on_val=True, n_estimators=400,\\n\",\n       \"          random_state=123)\"\n      ]\n     },\n     \"execution_count\": 49,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(X, T, y, Z=Z)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 50,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"point, lb, ub = est.predict(X_test, interval=True, alpha=0.01)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"for t in range(n_outputs):\\n\",\n    \"    plt.plot(X_test[:, 0], point[:, t])\\n\",\n    \"    if est.inference:\\n\",\n    \"        plt.fill_between(X_test[:, 0], lb[:, t], ub[:, t], alpha=.4)\\n\",\n    \"    plt.plot(X_test[:, 0], true_te(X_test)[:, t])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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eukl3N3dmTt3LtHR0Xh4eBASEkJMTEyWTUoppZRSKnV5oW4pUqQIX3/9NWPHjmXChAmcPXuWChUqMHLkSIYPH27X9/a6pVq1anz++eesXLmSCxcu4OPjQ2hoKJMmTaJKlSq2fjVq1GDevHl8/PHHXLp0iVKlStG+fXsmT55sV7cAXLp0iTVr1hAWFoarq2v2XrxSKluZtO67VErdG2OM6M+YyihjDCKSsRvTlVJKqSymdYvKDK1blMo+Tul3UUoppZRSSimllFI5QSdqlFJKKaWUUkoppXIJnahRSimllFJKKaWUyiV0okYppZRSSimllFIql9CJGqXUXTPGMGPGDEenkSlTpkyhZcuWFCtWDGMMMTExKfrs2rWLF198kWrVquHp6UnFihUZMGAAZ8+etesXFhaGMSbV6N+/fw5dkVJKKaUyIq/VLQcPHmTQoEHcf//9FC5cmPLly9OjRw9+++23VPvv3r2btm3b4u3tTZEiRQgJCeHrr7+2vX7mzBkGDx5Mw4YNcXd3xxjdB1ip3EonapRSBcr7779PYmIirVq1umOfJUuWcODAAV5++WU2bNjAuHHjWLt2LQ8//DCJiYm2fuPGjSM2NtYupkyZAlgfM66UUkopdbe+/PJLtm7dygsvvMC6det4/fXX2bNnD/Xr1+fUqVN2fbdt28ZDDz2El5cXn332GatWreKZZ57h8uXLtj7Hjx8nOjqa4sWL06BBg5y+HKVUJrg4OgGllMpJx44dw8nJiR07drBs2bJU+4wYMYISJUrYvm7atClVq1blkUceYc2aNTz99NMAVKpUiUqVKtmNfeONN/Dz86NNmzbZdxFKKaWUyve6detGeHi43cqXxo0bExAQwMKFCxk+fDgAFouFsLAwOnbsyNKlS219H3vsMbvjPfDAA5w+fRqAGTNm8M033+TAVSil7oauqFEql9m/fz8dOnSgePHieHh4EBgYyODBg22vHzx4kB49euDv74+HhwfVqlVj7NixXL161e44xhimT5/OhAkTKF26NN7e3oSHh2OxWNi+fTv169encOHCNG7cmIMHD6YYO23aNMaMGUOpUqUoXLgwXbp04cyZM+nm/+WXX/Lwww/j6emJj48PvXr1SnHL0KxZs6hatSru7u74+fnx8MMP8+23397Du5ZxTk7p/9q7dZImWd26dQHrp1F3cuHCBdauXcvT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9thjGjlypMaOHas9e/boueeeU0jIr3/yxhj99a9/1cCBA3X69Gn169dP11xzjQ4ePKj169fr7rvvVseOHQv8DieKFhUqVNCUKVOUmJioGjVqqF27dlq6dKm2b9+u559/3mdsSEiIRowYoUWLFnn71q5dq4yMDH3yySfen6tXr6769et7j6dNmzYaPHiwJk+erOzsbDVr1kzLli3Tv//9b5/QePr0aa1Zs0aStHfvXp0+fVpvvPGGJKldu3aKjY0N6O8CAICSRm4pnqvJLXfffbdeeukl9erVSxMnTlR4eLiWL1+uzZs3a+nSpd7tHnjgAUlSQkKC92HC//u//6uYmBiNGzfOO65fv35KSEjQnXfeqaSkJMXExOiZZ55RWlqa9/XqAFzEWkuj0QLUcv7ECvfwww9bSbZXr155PktNTbUDBw6011xzja1ataodPXq0ffvtt60km5KS4h0XGxtrR48e7bPt66+/bps0aWLDwsJsx44d7Y4dO2yFChXs1KlTfca9//77tnv37jYyMtKGh4fbpk2b2rFjx9qDBw9edu5Xa/HixVaSPXz4cJ45XXqMF5szZ46NjY21Ho/HtmnTxq5duzbPGEl2xIgRPn2xsbFWUp526bjTp0/biRMn2po1a1qPx2Pj4uLsP//5T58x+/bty3dfkuzixYvzzKdz58721ltvLfT3ceHfi+P/bmk0Go1WPhu5pXAlnVs+/PBD261bN1utWjUbGRlp27Zta5ctW+YzZtGiRTY+Pt5WrlzZhoSE2Dp16thRo0bZQ4cO5fmO48eP2zvuuMNGR0d7f88FzZncQqM524y1toRKQkD5Y4yx/I0VbMmSJbrjjjt08OBBxcTEKDg4WJK0efNmdenSRR999JFuuOEGnzNqpU12drays7PVrVs3hYeH69133y1wrDFG1lr/PskQAIAiIrcUjtzii9wCBE6Q0xMAgN/85jeqU6dOnv6bbrpJoaGhpfohd/fff79CQ0P14YcfOj0VAADgB+QWAIHGFTVAAHFmqnDHjx/33rseGhqq3/72t5KkkydP6ptvvvGOi4+P9/srM0vK999/r6NHj0qSoqKidO211xY4ljNTAAAnkVsKR27xRW4BAodCDRBABB4UB4EHAOAkcguKg9wCBA63PgEAAAAAALgEhRoAkqSRI0fKGCNjjIYMGSJJOnbsmO677z797ne/U1hYWLEv4926datuuukmRUREqHbt2vrLX/6izMzMPOOeeeYZNWnSRBUqVFDDhg01e/ZsXXpG7+L5Xdzmzp3rM65y5crez5YvX17M3wIAACit8ssyknTkyBENGTJEUVFRioqK0pAhQ5SamlqkfVpr9dxzz6l169YKCwtT9erV1bt3b50/f947JjMzU7Nnz1bz5s0VERGhevXqafTo0Xm+o02bNt75PfHEE/45aABlUul9JDkAv4uNjdXy5ctVrVo1SdKhQ4eUnJys9u3b64YbbijWg+X27t2rbt26qWPHjlq9erV2796tBx98UBkZGXr66ae942bNmqVp06Zp8uTJ6tSpk/71r38pMTFRJ0+e1MyZM/Od36V9F9uwYYO+//57/f73vy/u4QMAgFLu0iyTmZmpnj176syZM1qyZIkkadKkSbrtttv06aefet/cVJDx48frlVdeUWJiohISEpSWlqb169crKyvLO2batGl68sknNXXqVN14443as2ePpkyZoi+//FIpKSneca+++qoyMjKUkJDg/wMHULY4/X5wGq0st5w/sdJhxIgRtmnTpj59WVlZ3v+flJRki3M8Y8aMsbVr17Znzpzx9s2bN8+GhITYH374wVpr7enTp23FihXtvffe67Pt+PHjbYUKFWxqamqh8yvIvn37rCSbnJxc5Pm6wYXfr+P/bmk0Go1WPltpyi35yS8rLF++3EqyX3zxhbfv888/t5Ls3//+90L3t3nzZivJrlmzptBx9evXtyNGjPDpW7RokZVk9+7dm2e8JJuUlHSZo3E/cguNFrjGrU8AChQUdOVLxJo1a9S/f3+FhYV5+4YOHarMzEytX79ekrRjxw5lZGSoR48ePtv26NFD586d07p16674+wEAANasWaMWLVrouuuu8/bFxcWpWbNmeueddwrd9oUXXlDjxo112223FTru/PnzioyM9OmLioqSlHNSHACKi0INAL/LyMjQd999p+bNm/v0x8TEqEqVKtq1a5ckeS839ng8PuMqVKggKaeQc7H9+/crOjpaoaGhatWqlV588cVAHQIAACgDdu3alSePSFKLFi28eaQgH3/8sa677jrNmjVLNWvWlMfj0Y033qhPPvnEZ9zo0aP16quvat26dTp58qS++OILzZgxQ3379lXDhg39ejwAygeeUQPA79LT0yXlPNj3UtHR0Tpx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Bp/+jRs3et8SBQAAyj4nc0uPHj0UHBzsM+7MmTNatWqVevfu7e0jtwC4ElxRA6BIHnvsMXXq1EmjRo3S8OHD9emnn+rZZ5/VnDlzfIot3bp104EDB7R7925JOWFpypQpSkxMVI0aNdSuXTstXbpU27dv1/PPP+/d7oMPPtCf//xn3XDDDerfv7+2bNni/ax69epq1KiRJKlGjRqaOHGinnrqKUVFRSkhIUFr1qzRm2++qUWLFpXQbwMAALhZoHNLnTp1NGbMGCUmJsrj8ahRo0aaP3++MjIy9NBDD3nHkVsAXAkKNQCKJCEhQatXr1ZiYqJee+011apVS0888YQmTJjgMy4rKyvPg/0efPBBSdLChQt1+PBhtWjRQqtXr1b79u29Y95//32dP39eKSkpec50jRgxQkuWLPH+/Pjjj6tSpUp68cUXNXPmTDVq1EhLlizRiBEj/HzUAACgNAp0bpGk+fPnKzIyUlOnTlV6erri4+O1YcMGxcbG+owjtwAoLnPx5YAA/MsYY938NzZy5Eht2bJF27dvV1BQkIKCys7dkNZaZWVlacaMGZo9e7bOnj3r9JQuyxgja23hr6IAACBAyC3OIbcAuFjZWd0AXJFvvvlGoaGhGjp0qNNT8atVq1YpNDRUM2fOdHoqAADAT8gtAMoDrqgBAsjtZ6b279+vH3/8UVLO6yMvfQNTaZaenu693zwoKEhxcXEOz+jyODMFAHASucU55BYAF6NQAwSQ2wMP3IXAAwBwErkFxUFuAQKHW58AAAAAAABcgkINAAAAAACAS1CoAcqZkSNHyhgjY4yGDBly2fFr165VXFycwsLC1KBBAz311FNF/q558+apQYMGCgsLU1xcnNatW5dnzP79+zV06FDVqVNHFStW1HXXXae//e1vecZ9+eWX6tu3r2rWrKlrrrlG7du315tvvukz5h//+If32MLCwrz927Zt8/YbY3TkyJEiHwMAAHCO23LLL7/8osTERNWuXVsRERHq2LGjPvvsszzjLs4dF7fcZ+xI5BYABaNQA5RDsbGxSklJ0axZswodt2XLFvXr10/XXXed1q5dq9GjR+vhhx/W008/fdnvmDt3rh555BGNGTNGa9euVevWrdW3b19t3brVO+bMmTPq0aOHPv/8c82dO1erV69W165dNXr0aL3wwgvecUeOHFG3bt2Umpqq559/Xm+88YauvfZaDRo0SGvXrvWO69y5s1JSUjRq1CifuTRp0kQpKSmaMmVKUX9FAADAJdySWyRp4sSJeuaZZzR16lStXr1akZGR6t69uw4cOJBnn2PHjlVKSopPq1y5svdzcguAAllraTRagFrOn5i7jBgxwjZt2rRIY3v27Gnj4+Ntdna2t2/8+PE2Ojranjt3rsDtzp49a6OiouzEiRO9fVlZWbZNmza2d+/e3r7NmzdbSfb999/32b5jx462U6dO3p+XLFliJdl9+/b57K9+/fp2+PDheb5/6tSptkKFCnn6Fy9ebCXZw4cPF3rcTrnw78Xxf7c0Go1GK5+N3FJ4bjl48KANDg62CxYs8PZlZGTYmJgYO27cOJ99SrJJSUlFmje5hUajXdq4ogZAvs6dO6dNmzZp8ODBMubXB/oPGzZMaWlpSklJKXDbjz/+WD/99JNuv/12b19QUJCGDBmi9957T+fPn5ck7/9GRkb6bB8VFSVrf33rRH7jgoKCVKlSJZ9xAACgfCqJ3LJ+/XplZWX53IIVERGh/v3765133gnAUQEoryjUAMjXnj17dP78eTVv3tynv0WLFpKkXbt2Fbht7mf5bXv+/Hnt3btXUs4lv82aNdPkyZO1e/du/fzzz1q2bJnWr1+ve++917vdgAEDVL16dd133306ePCg0tLSNG/ePH377bcaM2aMX44XAACUXiWRW3bt2qWqVauqRo0aecYdOHBAp0+f9umfO3euPB6PIiMj1adPH3355ZdXdnAAyp0QpycAwJ3S0tIkyedeainnqpbg4GCdOHGi0G2Dg4NVqVIln/7o6GhJ8m7r8Xi0efNm9evXT9dee60kKTg4WAsXLtTAgQO921WrVk0fffSR+vTpo7p160rKOYO1YsUKdejQ4SqPFAAAlHYlkVvS0tLy7D93nLVW6enpioiIkCT9+c9/Vp8+fVSrVi3t2bNHSUlJuummm7R161Y1bdr0yg8UQLlAoQaAMjMzfX4OCfl1abj48uGLFdRf2Oe5tynlfnbmzBkNGjRIZ8+e1cqVK1WtWjW9++67uvfee1W5cmXvpcWpqakaMGCAateurXnz5ik8PFzJyckaOnSo1qxZo86dOxf9YAEAQKnmVG4pzrhXXnnF+/87duyo2267Tc2bN1dSUpKWLFlS6FwAgEINUM7t379fDRo08Omz1nrPIuWeocp18uRJZWVleT/PT3R0tDIzM3Xq1Cmfs1Pp6enezyVp0aJFSklJ0XfffadatWpJkrp06aJjx45pwoQJ3kLN7NmzdezYMX366aeqWLGiJKl79+7at2+fJk2apC1btlzNrwAAAJQSTuaW6OjoPPvPHWeMyfdqm1w1a9bUzTffnOctUgCQH55RA5RztWvX1tatW32aJDVq1EgejyfPPd07d+6UlPc+7ovlfpbfth6PRw0bNvT+XKtWLW+RJld8fLyOHj2qkydPesc1a9bMW6S5eNy3335b3EMGAACllJO5pXnz5jp+/LiOHTuWZ1xsbKzCw8MvO//LXdkDABKFGqDc83g8atu2rU+TpAoVKqhr165auXKlz5uVkpOTFR0drYSEhAL32aFDB0VFRWnFihXePmutVqxYoVtuuUUej0eSVL9+fR0+fFg//PCDz/afffaZqlat6n3LU/369fX1118rIyMjz7hLz6oBAICyy8nc0qNHDwUHB/uMO3PmjFatWqXevXsXOu8jR45o8+bNat++/RUdN4DyhVufABToscceU6dOnTRq1CgNHz5cn376qZ599lnNmTPHG1okqVu3bjpw4IB2794tKScsTZkyRYmJiapRo4batWunpUuXavv27Xr++ee92w0bNkxJSUnq2bOnEhMTvc+oWbp0qaZNm+Ydd/fdd+ull15Sr169NHHiRIWHh2v58uXavHmzli5dWmK/DwAA4F6Bzi116tTRmDFjlJiYKI/Ho0aNGmn+/PnKyMjQQw895B03d+5c/ec//1HXrl0VExOj3bt368knn1R2drYmT55ccr8QAKUWhRoABUpISNDq1auVmJio1157TbVq1dITTzyhCRMm+IzLysrK82C/Bx98UJK0cOFCHT58WC1atNDq1at9ziTVqVNHH3zwgR599FFNnDhRJ0+eVMOGDbVgwQKNHTvWO65NmzbauHGjpk+frrvuukvnzp1T06ZNtWzZMg0bNiyAvwEAAFBaBDq3SNL8+fMVGRmpqVOnKj09XfHx8dqwYYNiY2O9Y5o2baq33npLb775pn7++WdFR0era9eumj59uvctlwBQGHPxpYEA/MsYY932NzZy5Eht2bJF27dvV1BQkIKCys4dkNZaZWVlacaMGZo9e7bOnswTNggAAA9kSURBVD3r/SwzM1OvvPKKRo0apcOHDysmJsbBmebP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\",\n      \"text/plain\": [\n       \"<Figure size 1440x720 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 10))\\n\",\n    \"plot_tree(est[0], impurity=True, max_depth=2)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 53,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import shap\\n\",\n    \"explainer = shap.Explainer(est, shap.maskers.Independent(X, max_samples=100))\\n\",\n    \"shap_values = explainer(X[:200])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 54,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 4 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 4 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    plt.subplot(1, n_treatments, t + 1)\\n\",\n    \"    plt.title(\\\"T{}\\\".format(t))\\n\",\n    \"    shap.plots.beeswarm(shap_values[..., t], plot_size=None, show=False)\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    plt.subplot(1, n_treatments, t + 1)\\n\",\n    \"    plt.title(\\\"T{}**2\\\".format(t))\\n\",\n    \"    shap.plots.beeswarm(shap_values[..., t + n_treatments], plot_size=None, show=False)\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/Interpretability with SHAP.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Interpreting Heterogeneous Effect Models with SHAP\\n\",\n    \"\\n\",\n    \"[SHAP](https://shap.readthedocs.io/en/latest/) is a popular open source library for interpreting black-box machine learning models using the [Shapley values methodology](https://proceedings.neurips.cc/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html).\\n\",\n    \"\\n\",\n    \"Similar to how black-box predictive machine learning models can be explained with SHAP, we can also explain black-box effect heterogeneity models. This approach provides an explanation as to why a heterogeneous causal effect model produced larger or smaller effect values for particular segments of the population. Which were the features that lead to such differentiation? This question is easy to address when the model is succinctly described, such as the case of linear heterogeneity models, where one can simply investigate the coefficients of the model. However, it becomes hard when one starts using more expressive models, such as Random Forests and Causal Forests to model effect heterogeneity. SHAP values can be of immense help to understand the leading factors of effect heterogeneity that the model picked up from the training data.\\n\",\n    \"\\n\",\n    \"Our package offers seamless integration with the SHAP library. Every `CateEstimator` has a method `shap_values`, which returns the SHAP value explanation of the estimators output for every treatment and outcome pair. These values can then be visualized with the plethora of visualizations that the SHAP library offers. Moreover, whenever possible our library invokes fast specialized algorithms from the SHAP library, for each type of final model, which can greatly reduce computation times.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"## Notebook Contents\\n\",\n    \"\\n\",\n    \"1. [Single Treatment - Single Outcome](#1.-Single-Treatment---Single-Outcome)\\n\",\n    \"2. [Many Treatments - Many Outcomes](#2.-Many-Treatments---Many-Outcomes)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"## Ignore warnings\\n\",\n    \"from econml.dml import CausalForestDML, LinearDML, NonParamDML\\n\",\n    \"from econml.dr import DRLearner\\n\",\n    \"from econml.metalearners import DomainAdaptationLearner, XLearner\\n\",\n    \"from econml.iv.dr import LinearIntentToTreatDRIV\\n\",\n    \"import numpy as np\\n\",\n    \"import scipy.special\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import shap\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 1. Single Treatment - Single Outcome\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n_samples = 5000\\n\",\n    \"n_features = 10\\n\",\n    \"def true_te(X):\\n\",\n    \"    return (X[:, 0] > 0) * X[:, 0]\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"W = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"y = true_te(X) * T + 5.0 * X[:, 0] + np.random.normal(0, .1, size=(n_samples,))\\n\",\n    \"X_test = X[:min(100, n_samples)].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), min(100, n_samples))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = CausalForestDML(random_state=123)\\n\",\n    \"est.fit(y, T, X=X, W=W)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = LinearDML(random_state=123)\\n\",\n    \"est.fit(y, T, X=X, W=W)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = NonParamDML(model_y=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                  model_t=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                  model_final=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                  random_state=123)\\n\",\n    \"est.fit(y.ravel(), T.ravel(), X=X, W=W)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAeEAAAFfCAYAAAB5inQLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA+40lEQVR4nO3dd5xcVf3/8ddnaxoJSSCEAKlUKUE4oBQRiQiisWFHEBSQr34FCSpKE/ArQURQQH9IL9JEBA1VSQhNQzi0ACaUkEY6qZvNbrbM+f1xb5LJluxMsrP3zuz7+XjMY8+9c+fM587O3M8959xiIQRERESk65UlHYCIiEh3pSQsIiKSECVhERGRhCgJi4iIJERJWEREJCFKwiIiIglREhYRkZJhZrPNbJ8W87yZHWlml5rZ13Ko42Izu7JwUW5U0RVvIiIikrQQwkVJx9CSWsIiItItmNltZva/cbmfmT1gZjPMbKKZ3dGi9buTmT0aP/+ImfUqRExqCYuISKn5q5nVZ03v3sYyFwErQgh7mtkA4CXggaznHXAQsAp4AjgBuLGzAy2FJKzrbuZpwoQJAIwdOzbhSESkBFlhav1S6219+Ft77/XlEMIbG15q5ttY5hPADwFCCMvN7KEWzz8RQlgZv/4FYFT+QXdM3dEiIlIErI1HQWW3pJspUKNVSVhERIpApyfhycBJAGa2LfD5ra1wSygJi4hIEej0JHwpMMjMZgAPAp5o/LdLlcKYsIiIlLzckm4IYXgb81xcnJw1uxb4Rgih3sz6As8BN8TLX9zi9ZtMdyYlYRER6Y76A4+ZWTnQA7g7hPBkVwehJCwiIt1OCGEJcGDScSgJi4hIESj40dCJUBIWEZEioCQsIiKSECVhERGRhCgJi4iIJKQ0k7Au1iEiIpIQtYRFRKQIlGZLWElYRERSL7SRhEshLas7WkREJCFqCYuISBEohXZva0rCIiKSeqXaHa0k3MKK+sCNrwV6V8Jpow0DbnqxkdXrAqe6Kgb2LoV/u4iIpIGScAuf/EszLy+OylMXGVX1jdz0YiMAd7/axKtn9sJMiVhEpGuV5nZXSThLTUPYkIABJs8LVNU0bZietijD8rUwsHcCwYmIdGulmYS79dHRc1YFpiwINDYHALapMg4dsvH5Tw41jtkt2k8ZVLeOI/s1Et5Zwer3apIIV0Sk2wpYq0cp6LYt4QkzM3z5HxkamuETuxj//EoZFWXGLw4xPvtAM41N8MoC45lvVTHiv0tY/voyeBf+fP8yBi1dzsHjD2TXE0YlvRoiIt1EaSTdljpMws65KmAqMNF7f07W/LOAccBooAG4DvhS/PQDwP967+s6PeJO8sdXAg3NUfmpeYHXlsCBg+HPbwQaoyFgXlkceHZeYOWUZRtet3z7bRm0ZDlv3fKOkrCISBcJSQdQIB12R3vvG4ATgDOcc0cBOOf2BS4DTvLerwR+D+wJ7AHsDuwFXFWgmDvFyG03lntUwI59Ws8vNxi+bRn9B1VvmFfZEGXo3kM1MCwi0nWsjUfxy2lM2Hv/JnAecJtzbjBwF3Cd9/5p51xP4FvAhd77xd77JcCFwLedcz0KFfjW+vHQen7+8nR+/uzr/HGbDxjSJ/qHfnUPY2B5M2VNzQzpHTjg9iaedMPY89BtGTIAdpq/GNu2ij1/sFdisTfWNPLvL05iwo738eLJz5JpzORdh81p4t+7P8hTfe5i9hVvFCDKzpdpaGbulx7mzZ7XMfvYh8jUNiYdUk4ytQ18cOxdzO95Gcu+9BdC3AUT1jaw+tO3saznRaz+wp2EdU0d1CRFZ1kNHH4e9Pw6nHItZPL/rXaZ3z8M23wTRv0PvPJe0tF0G/kcmHUNMB2YBjQRJVqIWr89gJeyln0Z6EnUKk6lybfNp3xlA+WNGWb9bT6rP2gA4Bf/Wsey5Y1kGjPMqyujvgkeW1nF+3sPpGrKbJpDYM26wKs3vJ1Y7LNuepulkxeRqW9mwd/nMf+BOXnXUXlLHWvfWU1zbRPvnvsS9XPXFCDSzrXyzumsfnAmob6ZNU/MYfmfXk86pJzUXv8S656YCfVN1D84g7V/ngZA/Q0v0vj421DfROPfp7PujlcSjlQ63W8egudnQH0D3PYUPPJShy9JxJKVcPatsKYe3lsclVOmVA/MyjkJe+8DMBnYHrgz7qYG2Cb+uypr8fXlvlsbYEdqamq2uJxtTW1+Sai5qblTYuis+PN9bVlZ21/gpNYll3J9/bqiizmX/1d781UujXK2tXV1bS6ThnL2mGtT85Zv3wqnNLujLYTchrvjceApwLXAGcB+3vu5zrn9gVeA/vH4MM65/sByYLT3floB4s62ReP1i2at5Z5fvceaFY0cdcIQDvvSDgBc8PBa/vDcOuoysOuoXrxbY+xQnuFD/QOfWr6Ebe94jd479OToP3yE/rsWfB+jTY01jbx40rMsm7KUwccM4cAbD6OsMvdOjQkTJmBzmhhwDaxbsJYRF41m+E/3KWDEnSPT0Mz7X3+Mmsfn0PuInRj6wGco612ZdFgdytQ2sPz4+2l4Zg7Vx+7KgHuPx6rKCWsbqPny3TQ+9R6Vx+zGNvd9A6vuticslKZlNfD58fDye/C1w+DmH0BZSs8MveYROP8uGNQP/voT+PDILa2pINmxwb7XaltfFf5U9Jk4pyTsnKsGXgQmeO/Pd87dCgwHxgDVRAn3M977SfHyRwEPAwO89/UFin29Tjto7v6X1/GtOza2iO//7ja8sBAuezoae6wogzfP6snu26X0R5SjCRMmADB27NiEIxGRElSgJHxGG0n4+qJPwrlmk/FEpyFdHE+fSZSEx8WnIf0ZuNQ5N8g5Nwi4FLijCxJwp5q1LNNiupn3Vmyc15SBeatK9UB5EZH06rZjws65McDpwAne+0YA730NcCJwSdxN/SPg7azHW8DZBYq5YL5yQBWD+0b/2J36lXH8/lV876BKelbCsNo6ji1by+j+SsIiItI5ch4TTrFOXYEVazPMWNzMXjuUs22vaB/ljrs/4KlHVwIweMdKLr1sKJWVxbsXpu5oESmggmwc19n/tNrWV4f/V7wb4lhxD24WQP9eZRwyonJDAgaY+/bGIxoXLWzkg6XFcX6qiEip6Lbd0QJ77NVzQ3n77SsYuJ2OYBUR6VqleYqSskkOjv/KQAYPrmLVqiYO+1hfqqq07yIi0pVKpeXbkpJwDsrKjI99PJlzgkVEBEql5duSkrCIiKReqbaE1a8qIiKSECVhERGRhKg7WkREUq9Uu6OVhEVEpAgoCYuIiCRCLWEREZGElGoS1oFZIiIiCVFLWEREUk8tYREREelUagl3I7PunsnC615hhxXvU3ZcNehOhiJSNNQSliK25JlFvHzWVBa+08i8D3ag/x8WkPnPzKTDEhHJiW5lKEVtzXs1m0yvLe8J7y5JKBoRkfwoCUtR2/HYnei5XRUAlZlGBvRZjX16n4SjEhHJVTe9n7BzrgqYCkz03p+TNf8sYBxwMHApcBQwGFgB3Adc6L2vL0TQkr+eg3vxyf+MZeUz85jxwjNM2/dgdtpum6TDEhHJSUg6gAKxEDpeNefc3kSJeKz3fpJzbl9gCnAc4IHzgDuBd4Cdgb8Bz3vvzyxU4FlK9X+Tt9r5a7nn/6bzh+2G0meXPlz7hR5s3xNOe7yZV96spceCGsa8O49dmpt5bZcd6LNuDW7+DL7/1pOU77IDfOdI7MxPdU4wr86Cc24DM7j6FNh3WOfUKyJpV5Am6nL7Watt/YBwedE3h3NKwrCh5XsOUcv3n8Bj3vtz21n2DOD73vv9OivQzVASjv3rm09z0oj9WNQ/auGO6At7DTQefbUe6poAKMtk+P6rM3hxz5EbXnfBpDv4zFsvAL3g+QuxQ3fb+mBG/g/MWhyVdx8Cb1239XWKSDFQEs5DPmPC1wDTgWlAE3DhZpYdA7y2FXHlrKamRuW4XP9BPat7VW+Yt6g2sLCmGZo3fnczZWXU9Ni4DMCyXn1Zvy9TN3tRp8QTFq/YWF60osPlVVZZ5dIoF05pjgnn3BIGcM79HLgMGOe9v7qdZX5E1D3tvPdzOyPIDqglHJv98DwuvHkpdx26LwBXHFnOqH7wtQcaaf6gjowZH16whC/Mms+kfXajvrKCnVYt5fqHrmS7tevg0A/Bk+diPau2PpgrH4Kf3hmVrzoZfqSTkkW6iYJkx2V2Xqtt/cBwWdFn4ny6o9ePA18LnAHs1zLJOufOBs4FPum9f6OTY22PknCW+uXreH9ZE7127MWQPtH3c1ldYP7qAMvqaH5lMX7WDKr6wUf3OYAhq5bQZ/8doSkDw7fDKso7L5gFy6Of444DOq9OEUm7giTGD+z8Vtv67cKvukcSds5VAy8CE7z35zvnbgWGA2O895l4mQuB78Xz3ipcyK0oCecg05jh1TNfYOkzi6gf2Yh9twef+8Lnkg5LREqPknAech0THg80ABfH02cSJeFxAM653wCnAh/v4gQsOZp713vMu3cW9Qvq4LkmeLYx6ZBERHJWqhfryOU84THA6cCB3vtGAO99jXPuROAJ59yLwI+JkvRrzrn1L53jvd+7MGFLvprjo6M3aEgmDhGRLVEqSbelDpOw934i0KeN+c8BvePJ0vx0SsjQE0Yx/8E5rHhxGexaBh+rTDokEZFuT3dR6iYq+1ZyxD+PoWltE49NfCzpcERE8lSabT0l4W6mopf+5SJSfEr1CFxtkUVEJPW67ZiwiIhI0pSERUREEqMkLCIikohSbQnncwMHERER6URqCYuISOrp6GgREZGElGp3tJKwiIgUASVhERGRRKglLCIikhCNCYuIiCSkVFvCOkVJREQkIWoJi4hI6pVqS1hJWEREioCSsIiISCK67YFZzrkqYCow0Xt/Ttb8s4BxwGjgIeAQoDHrpV/33j/cqdGKiEi3VKrd0RZCx/sXzrm9iRLxWO/9JOfcvsAU4Djv/dPOucnAk977/ytotG0r1R2krRZq6mke/zi1k+aw+JUmejYsZ7DNZm1FTyaNOoymwTuxtqaJ2p7VUFHBsv12oN+3d+eHHzbeenE106esZJc9euOO2S7pVRGR4lGQbDnTrmi1rR8Vflr0mTmn7mjv/ZvOufOA25xzBwN3Add5758uaHSyVZpOuZ3wwCv0BHaijF4swUKGfo11HD5rCo/WH02Puia2X96IASOen8vVi40VJw+j6Q8zCRl46YllVFQa+x81MOnVEZFurFRbwvmconQNMB2YBjQBF7Z4/kfOueXOuTedcz93zlV2VpCbU1NTo3I75TBt/oZ5FTRhZDZMb9NYQ1kmUN606Vd75MKVvDQ/Q9i4KItm1SW+LiqrrHJxlCU/OXVHr+ec+zlwGTDOe3911vxDgBnAauAgopbyX7z3P+/ccNuk7uh2NF/6CM2/mABALT3py0LKaQBgRr/d+c/Ag+hR10Tf5Q2UZaChooyLTj2KX3x3IG9fMYM1K5uoqDK+O353dtmzd5KrIiLFoyBN1nfsN6229buFnxR98zjnJJw1DnwtcAawn/d+bjvLngBc7r3fpbMC3Qwl4c3IPPMO66YvZcFfFhIWrmKn5ndYsi7DS4cfwLCP7k/trBqW7LItPSrKaNx9AHsc0I8PbWfULG9k7vQ1DB7Rk4FDeiS9GiJSPAqUhK9sIwn/uOiTcE5jws65aqLW7e+89+c753YAbnfOjfHeZ9p4SYZSPamryJQdsRs9j9iNUd/bOG/ahAlUAgeO3aPd120zoJK9D+tf+ABFRHJQqmPCuZ4nPB5oAC6Op88kGhse55y7CTgcmAzUAvvHy93XeWGKiEh3VqpJuMMDs5xzY4DTgRO8940A3vsa4ETgEmBf4AJgPtGY8H3A3UBXjAeLiEg3ENp4lIIOW8Le+4lAnzbmPwesP1rno50cl4iIyAbdtiUsIiIihaFrR4uISOqVaktYSVhERFKvVMaAW1ISFhGR1FNLWEREJCFKwiIiIglRd7SIiEhCSrUlrFOUREREEqKWsIiIpF6ptoSVhEVEJPU0JiwiIpIQtYRFREQSoyQsIiKSCLWEpehNfG4Ni5Y0UR3K6FHbxNIHZ9NnvwH0HNU36dBERDZLY8JS1K78fx/w0pQaDCgv24OT/vE8by6fRFnPcvZ/6tP0/cigpEMUEel2dJ5wN/Haa7UbOnOaM+WsDj0AyNQ1s+T+2YnFJSKSi4C1epQCJeFuov+ArE6PEOhVt27DZJ/9+icQkYhI7kIbj1LQYXe0c64KmApM9N6fkzX/LGAcMNp7v9I593XgPGAUUANc673/VWHClnz933mDueLapdTUNLPr0HcJw3oxeOFg+h68HYNP2i3p8ERENitTIi3fljpMwt77BufcCcBU59wj3vtJzrl9gcuA4+IEfCJwBfAt4GmgJzC8gHHLZkxblOHp2RkOG1rGAUOizo5QYdQM6EH96hoq/lzL3wYOp7lHBQe9Wse31zTTe+JLMHNhtHu580D46mFgpfmlF5HiUyrdzy1ZCLk16uOW7znAwcA/gce89+c658qAecAvvffXFyzS9pVKr0SneG1Rho/euI76Jqgsh2dOqeagnYzDLlzBNkvrOfyd2Tw4eiSvDRkIwNBVtZz4xrv84uFfU5lp3ljR2WPhqlMSWgsRKWIFyZb/thtabesPDacXfWbOZ0z4GmA6MA1oAi6M5+8ODAEGO+dmOOeWOOceds7t2rmhSi4mvZehvikqNzbDv2Y2s3gtsKoRQqDSAm9t32/D8vP69mJ5jz4s791iXPjRl7suaBGRDnT7A7O89wGYDGwP3Om9b4if2i7+ezzwaaJu6LnABOdcwU+BqqmpUTmrfOjQMsot2mE0gwO2X8egXtDcpwLMaA4wfMXG1+24pp6+62rpv3YlmzjiQ4mvi8oqq1x8ZclPPt3R+wJTgGuBM4D9vPdznXOjgVeB07z3N8XLbgusAPb23v+3AHFnU3d0C8/OaebJmRmOGF7GmJHlACxYneHcG1bSPK+Gg198i3/vtCNN1WV81Nbynd/sy3aPPg9vzYdMgOGD4PSjoVKnkYtI3grSRH3Obmq1rT88nJpoc9jMjga+DgwKIYw1Mwf0DSFMyrWOnLayzrlq4C7gd977851zOwC3O+fGAG8BdbSdDJUgE/CxYeV8bFj5JvOG9C3jzh8PAAYwYcI0RjGbsWPHblzgO2O6NkgRkTykLZmY2Q+Bs4CbgC/Hs+uIhm4PzbWeXLujxwMNwMXx9JlE3c7jvPf1wK3AWc65XeKE/UvgTeDtXAMRERFpTwrHhH8EfDKEcDmQiefNAPbIp5IOk3Dc2j0dOMF73wjgva8BTgQuibupxwHPAa8B84FhwFjvfXPbtYqIiOQuhUl4G6Izg2BjQ72SqMGas1zOE54I9Glj/nNA76xZ348fIiIinSpt3dHAM8DPgOyLUp0JPJVPJTryRkREUi8FLd+WfghMMLPTgG3M7C2iq0V+Np9KlIRFRETyFEJYaGYHEV3AaihR1/TUEEJm86/clJKwiIikXgq7ownROb4vxI8toiQsIiKpl7buaDObRzv7BiGEobnWoyQsIiKpl7YkTHTDomw7Ep03fG8+lSgJi4hI6uU10NoFQghPt5xnZpOBx4Hf51qPkrCIiKReKEtdS7gt64AR+bxASVhERFIvpCwHm9mlLWb1Ao4DHsunHiVhERGR/O3SYroWuAq4M59KlIRFRCT10tYdHUI4pTPqURIWEZHUC7nebqiAzOyoXJbr9FsZioiIJCmUp6IlfHMOywRgZK4VKgmLiEjqZVLQHR1CyOvI51ykoIEvSVjdWMG8lWk7805EpG2hrPWjFJTIakg+nlm6PSdPPYSh49fw00frkw5HRKRDocxaPZJkZn3N7Coze8nM5pjZ3PWPfOpREu6G7p07jKZ4N/I3Tzewqi6Nl0YXEUm1PwIHAJcCA4hubTgXuDqfSjQm3A31q2zk/bqo3LcaelQmG4+ISEfSdrEO4FPAXiGEZWbWHEL4u5l5YAJ5JOIOk7BzrgqYCkz03p+TNf8sYBwwGni/xcsq47p38N5/kGsw0jXO2v0t/jRzV6r7DuJXx1RTXZG+b7eISLaku5/bUAasistrzKwfsBDYNZ9KOkzC3vsG59wJwFTn3CPe+0nOuX2By4DjvPcrgT7Zr3HO3QX0VwJO0MvvRQfKHzgS3pwLMxdD354s7DsYe3gdn1v+NnN2amDWvMCKzw3lw3v1YPi2Gp0QkXTKpC4H8xrwcWAi8CxR9/Qa4O18KsmpO9p7/6Zz7jzgNufcwcBdwHXe+1Z3kXDODQSOB76aTyDSic67G8Y/FJU/sRc89Ub8RKChaiT7NO7G6BBosLnUhkpm3TKD0acdxT3f7s1xu5UnFbWISLtS2BI+DTbcX/EsoobptsBJ+VSST9PnGmA6MA1oAi5sZ7lTgKXAI/kEIp3o2sc3lie/mfWEUd/Qn/IQHYhVFZopJzBiySr2mvUBN7zc3LVxiojkKFjrR8LmhBBmAoQQloQQTg0hfC2E8N98Ksk5CXvvAzAZ2B6403vf0HIZ55wBpwM3ee+7ZIteU1Ojcoty86hBG8qhdzUbBapYmzUFGYzmMmNR/97sNsBSEb/KKqtcvOVCCWatHglbZGZ/NLPDt6YSCyG301PiceApwLXAGcB+3vu5LZY5CngCGO69n781geVB59e0NGcpXHQfZAKcdRz86Qn4z9tktu/L05V78cGMMpZXVrG8uhc912WYeuhIBp8wgss+WUkPHaQlIlunIBuRv+x4X6tt/VcXfi2xDZaZfRj4BvB1oBm4F7g7hPB6XvXkkoSdc9XAi8AE7/35zrlbgeHAGO99Jmu5vwCV3vsv5hPEVlISztOECRMAGDt2bMKRiEgJKkhivHdI6yT89QXJJeFsZvZxooR8PLAwhLBfrq/NtTt6PNAAXBxPn0mUhMetX8A5twPwBeD6XN9cREQkF2m7YlYLM4iOmZpLlBtz1mESds6NIRrnPcF73wjgva8BTgQuibupITogax7wz3wCEBER6UjaDswys23N7LtmNhF4DzgS+DUwaLMvbCGX84Qn0uI84Hj+c0DvrOnLgcvzeXMREZFcpOBArJYWAP8G7gaODyGs3JJKdNlKERFJvRRerGNUCGHh1laiJCwiIqmXtpZwZyRg0F2UREREEqOWsIiIpF7SB2IVipKwiIikXiZl3dGdRd3RIiKSeik8RcnM7DQzm2Rm0+J5R5hZXjcvUhIWEZHUS+G1oy8FvgvcAAyN570PnJtPJUrCIiKSeilMwicDnw0h3MvGyyfPAkbmU4nGhEVEJPWS7n5uQzmwJi6vT8J9sublRC1hERGR/D0GXGVm1RCNEQO/BCbkU4mSsIiIpF4Kb+BwNjAYWAX0I2oBDyPPMWF1R4uISOqlYAx4AzMrB74MfBPoS5R854UQFuVbl5KwiIikXgpavhuEEJrN7KoQwi1APbBkS+tSd7SIiKSfWetHsiaY2ditrUQt4W4q82wDE066m9AcGPK14bgbD0s6JBGRdqWpJRzrAfzVzP4DzGPjEdKEEE7KtRIl4W7Kbq2HJjBgwb2zqb1gNL2HtbpttIhIKqRpTDj2RvzYKkrCEgmh42VERASAEMIlnVFPh0nYOVcFTAUmeu/PyZp/FjAOGA2cBJwA7Ass8N7v2hnBSeGEb/fAbl5HaArs+JVh9B6+TdIhiYi0K1i6DmEys6Paey6EMCnXejpMwt77BufcCcBU59wj3vtJzrl9gcuA47z3K51zC4ArgD2BU3J9c+lCa+oIi1dT17MnNdMyrN2tJ19+6zgyZUZoCIQQsPR194iIAKkcE765xfT2QBXR9aNzvnRlTt3R3vs3nXPnAbc55w4G7gKu894/HT//VwDn3Mm5vrF0oYvvJVzyFwJl3HroN5jfZyh7vjWHR371MBWNGV4auTMzd9uRW367M/0GViUdrYhIK2kbEw4hjMiejs8dvgCoyaeefNr31wDTgWlAE3BhPm8kCVm9lnDpXzCgjAz7Ln6HYfMWU56JxoCbKsv4yNtzWU45914/P9lYRUTaY208UiSE0Az8CvhpPq/LOQl77wMwmajJfaf3viGfNyqUmpoalTdXrq+Dyo0dHhmguSzr3x4CGYym8jJ69y5PR8wqq6xy0ZYLJYV3UWrL0USb2ZxZyPGo2HgceApwLXAGsJ/3fm6LZU4GLujiA7N0WG9HHnqBcOI1NKwN3HrQl3mv/1B2e28BPeoaCMALuw9jmz225f+uGUVFeboOfhCRolOQ7Pj7j/yr1bb+rBeOTiwTm9km5wYDvYjOHf5BCOH2XOvJaUzYOVdNNA78O+/9+c65HYDbnXNjvPd5ZX1JwBc+gtXcRTXR3tOECRMAY+zYLwPRoe0iIpKXb7WYrgXeDiGszqeSXM8THg80ABfH02cSjQ2PA650zlXEdVUC5pzrAeC9r88nGBERkbaksPv5oBDClS1nmtm4EMJVuVbSYd+jc24McDpwgve+EcB7XwOcCFwSd1NfANQBNxAdml0XP0RERLZaCseEL2pn/gX5VJLLecITgVbXM/TePwf0jidfZ2MrWUREpFOlIOkCm1yko9zMPsGmY+AjyfMUJV22UkREUi8tSZiNF+noAdySNT8Ai4Af5lOZkrCIiKReWpLw+ot0mNkd+dwtqT1KwiIiknppScLrdUYCBiVhERGRvJlZX6JjoT4ObEfW2HAIYWiu9ejKDCIiknqhzFo9EvZH4ADgUmAA0VjwXODqfCpRS1hERFIvbd3RwKeAvUIIy8ysOYTwdzPzwATySMRKwiIiknopTMJlwKq4vMbM+gELgbwu26wkLCIiqZfCJPwa0XjwROBZou7pNcDb+VSiMWEREUm9FF4x6zRgdlw+i+gqkduS5+X41RIWERHJUwjhvazyEuDULalHLWEREUm9tLWELXKamU0ys2nxvCPM7Kv51KMkLCIiqZe2JEx0atJ3iW5ctP684PeBc/OpRElYRERSL1jrR8JOBj4bQriX6LrRALOIbuKQM40Ji4hI6qWg5dtSOdHR0LAxCffJmpcTtYS7kbvuW8bpP5jDY/eMZNmFAb/jnbz73ck0r21KOjQRkc1KYXf0o8BVZlYN0Rgx8Euii3XkTEm4m/j3C7U8/Ohq1qzJsLKyF//ad28+WANLb3mb93/5ctLhiYhsVsas1SNh44AdiS7Y0Y+oBTyMPMeE1R3dTaxcuWlrN5SVUVddSb81dTQuWptQVCIixcXMBocQFoUQVgNfNLNBRMl3XghhUb71dZiEnXNVwFRgovf+nKz5ZxHtCYwm2gv4PXA40Z0k7gPO9t6vyzcgKYzDD+nDI4+vYsWyJjBjxLwl7LBsNeXbVrHjmfskHZ6IyGYFEm/5rvc20Ddr+voQwpe2tDILIXS4kHNub6JEPNZ7P8k5ty8wBTgOeA54BXga+AnRLZ0mAM977/93SwPLQ8crIAA0NGSY934j/35mMgNq13Dk4R+nekRfKvpWJR2aiJSOgmTLC497qdW2/pePHtjlmdnMakII22RNLw8hDNjS+nIaE/bevwmcB9zmnBsM3AVc571/GtgD2Be4wHtf771/H/gdcIpzrseWBiada/aMGq745LMsOPA23GmvcuhZ/6TukJ/xmy8+wGf+0siqdQFWr4XPj4ddToOf3pF0yCIiG6TowKxObfjlMyZ8DVHLdxrRCckXxvOtxV+IknsvYPd4eUnY7T+bzgEz5zJk5Sq2Yy79WAF18PNJD3LAvo7xg0dy+T8fgn+8GL3gNw/B0fvB0fsnGLWISCQFR0OvV2Fmn2Bjzms5TQhhUq6V5Xx0tPc+AJOB7YE7vfcN8VNvAe8ClznnejnnhhFdzBo27TcviJqaGpVzKTc2UxEyAJSRIVvvhnXUNgJrNx3Cr/tgZXriV1lllYuiXCgpuljHEuAW4Ob4sazF9E35VJbTmDBA1jjwtcAZwH7e+7nxc3sS3cT4QGB5HMgVwF7e+xn5BLQFNCacg/9M+oAXzn2Jj7/xFgPrV7KDvUN1WMedBxzOJad+j4nfrGJYzTIYczG8vQDGOvjbuVBRnnToIlJcCpIef/a5V1tt6y//x/6paR5vqVwPzKoGXgQmeO/Pd87dCgwHxnjvM20s/wOiMeRd2nq+kykJ5yjTHJi7oI5XH3ucipDhmM8cTcOgvvSuavE9rq2H3hrOF5EtoiSch1zHhMcDDcDF8fSZRGO944Ar41byLKAeOBK4CDi3CxKw5KGs3Bi+Sy9e37GSAFTu3I/KthZUAhaRlEnRmHCn6nBM2Dk3BjgdOMF73wjgva8BTgQuiRPwl4hubryaqFv6bO/9bQWKWUREupkUHR3dqTpsCXvvJxJdlLrl/OeA3vHk68AlnRuaiIhIJAWXqSwIXbZSRERSLwW3LiwIJWEREUm9FF22slMpCYuISOqVane0bmUoIiKSELWERUQk9UrlaOiWlIRFRCT1lIRFREQSkinNHKwkLCIi6aeWsIiISEIyOkVJREQkGaXaEtYpSiIiIglRS1hERFJPB2aJiIgkpFSvmKUkLCIiqVeqY8JKwt3EunUZHpuwgto1GcpXltHn6VreevU1Ro3bm4re+hqISLqpO1qK2p23LOU/z9VgmQzHPrkGW9vIu/98nbrZa9j/5sOSDk9EZLN0FyUpavPmrAOgel0TPdc2bpi/etqKpEISEclZqY4J6xSlbuKjh20DQH2PSlbs1HvD/CFfG55QRCIi0mFL2DlXBUwFJnrvz8mafxYwDhgNXAUcDfQDaoHHgHO892pmpcSnx/Zn1G49WLOmmbmzZ5CZ1ovDjjmcAYcNSjo0EZEOdduWsPe+ATgBOMM5dxSAc25f4DLgJO/9SqIkvKf3vi+wF9AL+EOhgpb8fbAmwy9uWsGN42cx67c9Kb9tFWuO+B0LT7oRPvtrGk+/k7Vjb6b+pw8T1jUlHa6IyCYy1vpRCnIaE/bev+mcOw+4zTl3MHAXcJ33/un4+TdavCQD7NGpkcpWOfuKpfSau4oRH6ygsaqKN0aMomd9YO87X6eZxdSxBDB4eDpUV9Djl8cmHbKIyAaleu3ofMaErwGmA9OAJuDC7Cedcz9zztUAK4AvAL/qpBg3q6amRuUcynUrGqluaiZbbc9qApUEKiDrC555b1kqYlZZZZWLr1wowazVoxRYCCHnhZ1zPyfqhh7nvb+6nWVGAN8B7vfeT+uUKDcv9xXoxq59uIYp9y5mrwWLqWpuprqhgSNffZ2+NofhdYuorRpCpqEMelXS67FTqThiVNIhi0hxKkh2/Mopc1pt6++/dVjRZ+Kck3A8DjwFuBY4A9jPez+3nWUPBv4GDPXeZzop1vYoCefopXca+OuTq9n+ySl8ZOrbbP/53dj9kiPhrQWEXQfTPHMFZcP6UzakX9KhikjxKkhiPP47c1tt6x+4ZWjRJ+GcxoSdc9VE48C/896f75zbAbjdOTemnSRbAewE9AYK308hOTlwtyoO3G07JuwcWH7ybhw2dmz0xKF7YEDFICVfEZGulOvFOsYDDcDF8fSZRGPD45xzdwDHAv/w3q90zu0OXAE8571XAhYRka3WbQ/Mcs6NAU4HTvDeNwLEyfVE4BKio6BPBt5zztUC/wLeAL5coJhFRKSbabbWj1LQYUvYez8R6NPG/OeIupsBjurkuERERDYo1Yt16NrRIiKSeqVycY6WlIRFRCT1SnVMWElYRERSr7lEu6N1FyUREZGEqCUsIiKppzFhERGRhDRrTFhERCQZpXJecEtKwiIikno6T1hERCQhpXp0tJKwiIikXlPSARSITlESERFJiFrCIiKSeuqOFhERSUhTaeZgJeHuprE5MGnlEJY1VjPrpWYO3akMN7hEv90iUjKadJ6wlIJvTmjmrwv2A+DOJzNUVAYmfbWcj+1cml9wESkNjSW6idKBWd3MIzPDJtNNGXhidiahaEREctNo1upRCpSEu5nD22jxHr5TaXyZRaR0NbbxKAUddkc756qAqcBE7/05WfPPAsYBo4EdgKuBjwABeB44y3s/uwAxy1b42xfL+d+73mRxY09G7zGMI4eWcewI7YuJiCShwyTsvW9wzp0ATHXOPeK9n+Sc2xe4DDjOe7/SOTcJeAPYBTDgT8BdwGEFjF1ysGpBHf/9x3x6D6pm26pmwml/5lfLV/L4yH24d3QDvXsvZbemmYw65SA4cp+kwxURadPaEul+bimnA7O89286584DbnPOHUyUYK/z3j8dL7Ir8DPv/VoA59ydwAOFCFhy17C2iftPf5HapesA+NzrzzKwrhaAr8+YyoB1zUzZaRCjnptA5s+PUPb8r+CjeyQZsohIm+pKMwfnNSZ8DTAdmEZ0BbELs567HDjJObeNc64vcDLwYGcFuTk1NTUqt1NevbB+QwIG6F9fu6HcTDWD6payuqofAGWZDEx9N/GYVVZZ5eIuF0oD1upRCiyE0PFSMefcz4m6ocd576/Omn8AcAPwYaLu6GnAMd77xZ0bbptyX4FupmldM/ec9ALLZ0fJ99jpU9ixZiUA5dTyj10PYcb2vbjkP/fQ1KOaCv9r2HtoghGLSAkoSHa0s5e32taHqwcUfSbOOQnH48BTgGuBM4D9vPdznXP9gfeA38YPA34KfDNepr4QgWdREt6M+lWNvPvUYvoM6kHffuWs+tafKX93Pn/Z3THhwAP4ys5r+FyYx9Cvjoa9dk46XBEpfoVJwuNWtE7CV/XvHknYOVcNvAhM8N6f75y7FRgOjAEOiJ/r5b2vi5ffBlgNfNh7/2phQt9ASTgPDQtr+fepf8MCHHLjF6naqU/SIYlIaVESzkOuY8LjgQbg4nj6TKIkPA6YASwHznLOVcUJexxREn63M4OVrffuF56g96O19Hqslnc+93jS4YiIdGsdJmHn3BjgdOAE730jgPe+BjgRuAQYAXwWOBZYFD8+CXzWe7+mQHHLFqp7c3lWeUWCkYiI5MGs9aME5HVgVkoV/Qp0pTlnPseSa98AYPv/+RDD/3hEwhGJSIkpTHf0j1e27o6+ctuiz8S6gUM3M+yaw5m+4yIswEHnKQGLSLEo+nzbJiXhbqhxn+qkQxARyU9p5mAlYRERKQJKwiIiIkkpzSys2+eIiIgkRC1hERFJv9JsCCsJi4hIMSjNLKwkLCIi6VeaOVhJWEREioCSsIiISFJKMwsrCYuISPqVZg7WKUoiIiJJUUtYRETSr0TumtSSWsLdzLK3V1F3byP2rzoyjZmkwxER6dbUEu5G3n5yEXdcPZ9M2Qh6LahjmwP/zsde/jxlFdoXE5GUK82GsFrC3cnzd8wjUxb9y9f26cm81RnWvL4i4ahERHJhbTyKn5JwN7LdLj02lC0T6F3fSPWQXglGJCKSo9LMwR13RzvnqoCpwETv/TlZ888CxgGjvfcr43m9gWnAMO+9urpT5tMX783aU1/k/XfrGLx8OYfdcjjVO/RMOiwRkY6VSNJtqcOWsPe+ATgBOMM5dxSAc25f4DLgpPUJOHY5MKsAcUonaH5nOW7OdI7573M0bdPM9P/WcuVT9Zz8SBM3vtREfWNIOkQRkW7FQshtwxu3fM8BDgb+CTzmvT836/kjgGuAn8TPdVVLWJkjB2snz2X+UX+h2Yx/HH4wy7btC8ATo3bktSEDIAQ+um0zz3+3mrKyEt3lFJGuUJANiF1U12pbHy7tWfQbq3zGhK8BphN1NzcBF65/wjnXC7gROBVo7MwApXOseeAdCLCyT+8NCRhgrw9WRQUzpiyEhWu0TyMiKVSiY8I5J2HvfQAmA9sDd8bd1OuNByZ4733nhtexmpoalXMoVx8wCIA+a+upXrfxX7e4TzwmHAI79Ar0yNSmJmaVVVa5+MqSn3y6o/cFpgDXAmcA+3nv5zrnDgduAfb33q91zh0JPKnu6PRZ/sdXWH7O46ytLsPvugcrh+/EQ5/Yi/esmgMGBK7+VAWjBuiAeRHZKoXpjr64je7oi4u/OzqnJOycqwZeJGrtnu+cuxUYDowBLgLOBdY3oSqBvsAy4BTv/YQCxJ1NSThPEyZE/5KxY8cmHImIlKDCJOFL6lsn4V/0KPoknGtrdTzQAFwcT59JNDY8DrgKuClr2UOAe4D9iRKxiIiItCGX84THAKcDB3rvGwG89zXOuROBJ4AnvPevZy2/NF7m/cKELCIiUho6TMLe+4lAnzbmPwf0bmP+5FzqFRERyVnRdzy3TclSRESKQGlmYSVhERFJv9LMwbqBg4iISFLUEhYRkfRTS1hEREQ6k5KwiIhIQtQdLSIi6Wel2R+tJCwiIulXmjlY3dEiIiJJUUtYRETSr0RbwkrCIiJSBEozCysJi4hI+pVmDtaYsIiISFKUhEVERBKi7mgREUk/dUeLiIhIZ1JLWERE0k8tYRERkXQzs9lmtk/SceRKLWEREUm/Er12tFrCIiJS0szsJDN73cymmdmDZjYonv8fMzsoLv/RzN6MyxVm9oGZ9S50bErCIiKSftbGI5eXRV3TlwOfCiHsB7wBXBs/PREYE5cPB+rMbEfgIGB6CKG2s8JvT9F3R5vZE8B2ScZQUVGxXVNT0wdJxpCvYowZijPuYowZijPuYowZijPuzcT8eAjh2M5+v/Djii3tj/4E8GgIYWE8/Sfgtbg8ETjfzO4ClgFPEyXlEcCkrQg3dyEEPbbyceCBB/qkY+gOMRdr3MUYc7HGXYwxF2vcaY0ZmA3skzX9Q+CmrOmdgWVxuRpYDpwBXAB8DLgVmAwc0RXxqjtaRERK2VPAcWY2OJ4+DfgXQAhhHfAy8DPgSWAKcBiwX1wuuKLvjhYREWnhSTNrypr+OfAvMwvAe8D3sp6bSDQG/GIIodnM3gVmhRAauiJQJeHOcUPSAWyBYowZijPuYowZijPuYowZijPuVMYcQhjezlO3t7P8eGB81vRxBQirXRb3i4uIiEgX05iwiIhIQtQdvQWcc72IjqA7EGgCfuy9f7iN5T4PXER0BJ4Bt3jvf9uFce5O1AUzkOjw+5O89++0WKYcuAY4FgjA5d77m7oqxrbkGPeFwNeBZqAROM97/0RXx5oVT4cxZy27B/AK8Efv/Y+7Lso2Y8kpbufcV4ELib7HAfik935xV8aaFUsu349BRL/RXYBKooNzzvTeN5EA59yVwPHAcGBf7/0bbSyTxt9iLnGn6rdYbNQS3jI/BlZ773cFxgI3Oef6tLHcImCs934f4FDgf5xzH+vCOK8H/uC93x34A9H5cS2dAOwK7AYcAlzsnBveZRG2LZe4pwIHee/3A74D3Oec69mFMbaUS8zrN7R/Ah7qutA2q8O4nXMOuBg4Ov4uHw6s6sogW8jlsz4PmB5/P/Yj2mH+UteF2MpDwBHAnM0sk8bf4kN0HHfafotFRUl4y3yN+Icf74F74NMtF/Lev+C9XxCXVwHTgWFdEWDcEjgAuCeedQ9wgHNu+xaLfg240Xuf8d4vJfrRfaUrYmxLrnF775/w3q+NJ6cRtdAGdlmgWfL4rCE6FeJh4O0uCq9decR9NnCl934RRN9l731910W6UR4xB2Ab51wZUU9UFTC/ywJtwXv/nPd+XgeLpeq3CLnFnabfYjFSEt4yQ9l0z3AuUbdXu5xzewIfpauuwhLFM9973wwQ/11A6zjzXpcCyzXubCcBM73373dBfG3JKWbn3GjgGODqLo+wbbl+1h8CRjrnnnHOveycu8A5l9TV9HON+ZfA7sBCoh6pJ7z3z3dloFsgbb/FLZH0b7HoaEy4Dc65l4l+EG3ZYQvq2xH4O/D99S1j6RzOuY8TbXCPTjqWzXHOVRKd0nGK97456uEtGuVEXbpHE7UoHydKEHckGVQHvkLUKhsDbAM85pz7svf+r8mGVbqK5beYNmoJt8F7f4D3frt2Hs1EG6DsbuWhQJtdNnH32ZPAFd77+wsf/QbzgJ3iMcj1Y5FDaB1nzuvSRXKNG+fcIcCfgS9479/q0ig3lUvMOwKjgEedc7OBHwGnOeeSPNcyn+/IX73367z3NUQ7lAd3aaQb5RrzD4G74q7dVUQxf6JLI81f2n6LOUvRb7HoKAlvmfuJr7jinNuN6Gorj7dcyDk3kOjyaNd572/uygC990uAV4FvxLO+AbwSjzVlu58oGZTF42pfABJrLeQat3PuIOA+4Mve+5e7NMgWconZez833okb7r0fDvyOaPzv9C4Od4M8viN3A59yzlncoh/Dxgvgd6k8Yp5FdJQxzrkq4JNEd89Js1T9FnOVpt9iMVIS3jK/AbZ1zr1LdJDN6XELAefcpc65M+LlfkY0LvU959yr8eOULozzDOCHzrm3iVoGZ8QxPuo29ofeSXQZt3eIrpV6qfd+VhfG2JZc4v4j0BP4U9Znu28y4QK5xZxGucR9L7AE+C9RAnwT6NKdyhZyiflHwMecc68Txfw2cGPXhxpxzl3jnHuf6OYBTzrn3oznp/q3mGPcafstFhVdMUtERCQhagmLiIgkRElYREQkIUrCIiIiCVESFhERSYiSsIiISEKUhCURZjbczIKZ7Vzg9znDzO7Mmn7MzH5ayPeUtpnZu2Z2co7Ldsn3oyuYWXW87nsmHYukj5JwypnZSDO738wWmdkaM5tnZg+aWVX8/Mlm9m4br2tv/gnxxu0XbTw32czWxe+zysxeMbPjC7NmhWdmvYFLie4ABEAI4dMhhCsSC6oD8f/m8KTj6A4K8Vmb2ZFmtsntEkMI64iuLfCbznwvKQ1Kwun3KNFF6PcgugbuIcATRHcq2RLfA5YD3zWz8jae/2UIoQ/RXVDuAe4zs9238L2S9i3g9RDCzKQDkW7vHuAoM9s16UAkXZSEU8zMBhIl3+tDCKtC5P0QwvXx3nW+9e0FfAz4NtG1jFvdfnG9EEIT0ZVwyoFWV78xsx+Y2ast5o0ws2YzGx5P3xq33GvM7L9m9s3NxHaxmT3ZYt5kM7sga3ofM3vCzJaa2VwzG29mlZtZ5S8QXTa0zTqzujy/HcdXa2aPmll/M7vczJbEPRA/yHr9yXHX4rlmtjBe5rfZcXS03ma2n5k9Hq/H8vXrbWbrLwX5z7g3os0buptZLzP7ffweH5jZQ2Y2NOv5yXFMD8QxzDSzz7f3IWWt09lm9n78mivNbGBcx2ozm5HdajSzCjO7yMzeM7MVZjbRzPbJer7SzK7K+gzPbeN9P2Zmz8WfwUwzO8fMct65NLPjzey1uNfmNTP7Yst1arH8bes/0/Y+azObHa/Xc/F8b2YHtVVH1rzZZvYtMxsCPAaUx69dY2bfBgghrAZeBD6X6/pJ96AknGIhhGVElwi8ycxOMrMP5bORasPpwLQQwsNELezvtbegRd3dPwAaafs6wXcDe5rZ/lnzTgYmhxBmx9PPAfsD2xJ1C99mZh/aksDNbBDwNPA3YCeiHoGjgZ9v5mUHEF1qsSPHE92ofigwHHgBmEl0Y4BTgN9lJzmii+wPBUbGcYwFfpL1fLvrbWY7xuvxdPxeg4HLAUIIo+PXfyqE0CeEcGo78V5NdFvMj8axfABMsE17Nr4N/BboB1wH3G5mvTbzGQyL4x0ZfxY/JEoovwH6E33ut2Yt/xOi29YdF6/Ds8C/zKxv/PzPgM8ChwIj4nXdcHOC+PN4NK5/e+AzwP8CJ24mxg3M7FDgrvh9BgLnAfeY2UdyeX0Hn/UZwFnAAKJrNz+atV6bq3MB0Y5tc1xnnxDC7VmLvE70nRTZQEk4/Y4EJhNdC/dVYLGZXdgiGY8ws5XZD6JW7AZm1oNoo7l+Q3oz8GlrfeDL+fHr3wc+DxwfQmg1thxCWEF0Z5pT4vqNaMN/S9YyN4cQloUQmkMI9xLdWu7IPNd/vZOA10IIfwohNIQQ5gPj4/nt6Q+szqHuX4YQlsc7PQ8DjSGEG0MITSGEx4AVwIezls8APwkh1MVd3VcQ7YAAHa73icC7IYTxIYTaeF026QHYHDMrI/qcLwghzA8h1BJ9N/Zi0zsb3RdC+HcIIUN0C8V+wG6bqboOuCSO5zWiHa8XQwhTQgjNRHfI2dXM+sXLnwL8OoQwI+6VuRRoJkqmEP1ffh1CeDeEUAf8GMi+Ru73gftDCH+PP6cZRDsLm/t/ZjsZeCCE8Fj8f3oEeBD4To6v35ybQwgvhRAagF8TfTaf7YR6VxMldpENlIRTLoTwQQjhvBDCAUQtlZ8CFxEnv9isEMK22Q+ijVy2rwB9iDamELVClgItW1u/iusYFEI4NIQwYTPh3Qp8M+6KPSqO728QJQszu9TM3oq7C1cCo4laPVtiBHBYix2NW4haYe1ZAXTYgiEac19vbYvp9fO2yZpeEkJYmzU9m+gC97ms93Cimwlsqe2BaqK7BAEQQlhDdIOF7BvAL8x6vjYuZq9DS0vihL1ey89h/fqur2OXFjFkiD6H9THsHE9nx7Akq74RwDda/D9/QTRMkotN3j82k00/gy01e30hRBfXn0v8/91KfYmOxxDZQEm4iIQQ1oYQbiNqWe2f58tPJxrffcPMFhG1dPvT/gFaufgXsI6oO/Zk4N641QPRLeZOJerq7R/vGLxG+weU1QC9W8wbklWeAzzZYmejX3wQWXteAbao+7sDg1p07Q4n+jyh4/WezeZbpB3dUWUp0Wc+fP0MM+sDDKJr7z07r0UMZfH0+hjmt3i+N5vugM0Bbmnx/+wbQth7S94/NjLr/Tv6PkH7n3V23EY09LD+/7tJvWZWQfTZr5e9I9PSPkTfSZENlIRTzKIDhMZbdEBSZXwwzPFEP+Zn86jnQ0TjfF8kSt7rHwcTtSSP25L44m7KO4AzgS+R1RVNtNffRJQ0yszsO0Qtwva8BBxgZgfG6/m/RK2l9e4AnJl9x8x6xC3OkWZ27GbqfIjoPrKdrQz4tZn1NLORRF2t68f+OlrvPwN7WHRgVy8zqzKz7BgXsZkkHbc47wB+aWZD4p2B3wIzgKmdtH65uA34qZntHh8/cD5QATwSP38n8BMzG2VmPYm67LO3N38Evm5mY7O+2x8ys4/n+P63A8eb2TFmVm5mnyb6Dq4fbnmVaGfps/F35YvAES3qaO+z/o6ZHRD38PwE6JW1Xi8BYyw6CLEa+BWQfXDgIqIDs7K/u5jZNkS/t3/kuH7STSgJp1sD0V7234i6sZYCFwBnhhDuz6Oe7wEvhxAmhBAWZT2mEd1IvN0DtHJwK/Bxoi7x7CRwO9EBTu8StYo+xGZ2HEIIk4GrgMeJukF3AJ7Pen4R8AmiI55nE3U1P0jU+mnPncDoOFF2pjlELaNZROv4OFGSgQ7WOz5450iig8reJ9poZx/UdT5wqUVHHP+pnfc/G/BER9vOJerC/Vy8U9RVfkN02s0/gcVEwxGfio8Chmi8/gmi++LOiuOcs/7FIYQ3iMZZf0T0/15ClNhzGq4IITxPNDZ+JdF34QrgWyGEKfHzM4kOrrqB6LdzLPBAi2ra+6xvAK6J6/0a8JkQwqr4ubuIEunLRN3fc4n+z+vjehv4f8DUuJt9/YFm3wCeCiG8k8v6Sfeh+wlLSTOzM4DDQgg5HXWbQ30nEx0UpfM9S5CZzSb6//65o2XzqLMaeINoR2l6Z9UrpaEi6QBECimEcD1wfdJxSPcVHz2+ueMApBtTd7SIiEhC1B0tIiKSELWERUREEqIkLCIikhAlYRERkYQoCYuIiCRESVhERCQhSsIiIiIJ+f/X64uGAi4BIAAAAABJRU5ErkJggg==\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = DRLearner(model_regression=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                model_propensity=RandomForestClassifier(min_samples_leaf=20, random_state=123),\\n\",\n    \"                model_final=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(y.ravel(), T.ravel(), X=X, W=W)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = DomainAdaptationLearner(models=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                              final_models=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                              propensity_model=RandomForestClassifier(min_samples_leaf=20, random_state=123))\\n\",\n    \"est.fit(y.ravel(), T.ravel(), X=X)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Exact explainer: 21it [00:25,  1.20s/it]                                                                               \\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Xlearner.shap_values uses a slow shap exact explainer, as there is no well defined final model\\n\",\n    \"# for the XLearner method.\\n\",\n    \"est = XLearner(models=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"               cate_models=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"               propensity_model=RandomForestClassifier(min_samples_leaf=20, random_state=123))\\n\",\n    \"est.fit(y.ravel(), T.ravel(), X=X)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est = LinearIntentToTreatDRIV(model_y_xw=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                              model_t_xwz=RandomForestClassifier(min_samples_leaf=20, random_state=123),\\n\",\n    \"                              flexible_model_effect=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                              random_state=123)\\n\",\n    \"est.fit(y.ravel(), T.ravel(), Z=T.ravel(), X=X, W=W)\\n\",\n    \"shap_values = est.shap_values(X[:20])\\n\",\n    \"shap.plots.beeswarm(shap_values['Y0']['T0_1'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 2. Many Treatments - Many Outcomes\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n_samples = 5000\\n\",\n    \"n_features = 10\\n\",\n    \"n_treatments = 2\\n\",\n    \"n_outputs = 3\\n\",\n    \"def true_te(X):\\n\",\n    \"    return np.hstack([(X[:, [0]] > 0) * X[:, [0]],\\n\",\n    \"                      np.ones((X.shape[0], n_treatments - 1)) * np.arange(1, n_treatments).reshape(1, -1)])\\n\",\n    \"X = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"W = np.random.normal(0, 1, size=(n_samples, n_features))\\n\",\n    \"T = np.random.normal(0, 1, size=(n_samples, n_treatments))\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    T[:, t] = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"y = np.sum(true_te(X) * T, axis=1, keepdims=True) + 5.0 * X[:, [0]] + np.random.normal(0, .1, size=(n_samples, 1))\\n\",\n    \"y = np.tile(y, (1, n_outputs))\\n\",\n    \"for j in range(n_outputs):\\n\",\n    \"    y[:, j] = (j + 1) * y[:, j]\\n\",\n    \"X_test = X[:min(100, n_samples)].copy()\\n\",\n    \"X_test[:, 0] = np.linspace(np.percentile(X[:, 0], 1), np.percentile(X[:, 0], 99), min(100, n_samples))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x251b9903d88>\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = CausalForestDML(n_estimators=400, random_state=123)\\n\",\n    \"est.fit(y, T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \" 98%|===================| 391/400 [00:22<00:00]        \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"shap_values = est.shap_values(X[:200])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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HqoqAeCZaafxwDX6tRMRERF5idNt8obPzBi533fBn4g37AegyOom5+9vxnlSZarKExEREZmUXC6D69790mVLSrn77n4ALrnkktQVJSIimKkuQCSdzck3mJpz4P4FNek7bVZE0ku6XsxWRCY/14WzRtqRYg+OObqOm4hMfofLTspPIiIiIoeXztlJU25ExlGWx2Dt25189bZNFLvDfPKk5akuSURERGRS833iVBw1+bxwz2o6Ty2gIkvXIhEREREREZFjgzrdRMZZaabBxQV1qS5DROQ1SZfRRSJybHJfMpcWdqe6DBGRUVN2EhERERm9dM5OWl5SRERERERERERERERE5ChpppuIiIgcRvqOOBIREREZe8pOIiIiIqOXvtlJM91EREREREREREREREREjpJmuomIiMgh0nltbREREZGxpuwkIiIiMnrpnJ00001ERERERERERERERETkKGmmm4iIiBzCTnUBIiIiIscQZScRERGR0Uvn7KSZbiIiIiIiIiIiIiIiIiJHSTPdRERE5BDpvLa2iIiIyFhTdhIREREZvXTOTup0ExERkcNI3/AjIiIiMvaUnURERERGL32zk5aXFBERERERERERERERETlKmukmIiIih0jnaf4iIiIiY03ZSURERGT00jk7qdNNZJxFbt/K4g++QNJjEi9ejOvkqlSXJCIiIjJp2bbNU9/cTPPdNq5KiJ0Vx53pSnVZIiIiIpNWcs0eFvzkBcIlPuzXJTDcOuUrIpIqWl5SZBzZcYu+t/0LT0cMX2OEvvfdmeqSRERGxT7MTURkIux/rJUX/1FLchCiO+CFv+xJdUkiIkd0uOyk/CQiE8Fu6SV+/i8of6yR6f/YjfWlu1JdkojIEaVzdtKwB5HxZNvYMWtksmy0L57SckREREQmO6u172X3k9FkiioRERERmbzCWzrpf7wRrzuKZzA6sj35YnMKqxIREc10ExlHttPBPcuWkTBNwi4X/z7xpFSXJCIyKjbGITcRkYkw7aknmNq3H4CCcCeLaqJH+AkRkdQ7XHZSfhKR8RLe3Mn2k/5Jw8dWs/tDz9JvZABDs0Q6kvmpLU5EZBTSOTtpppvIOIrs7WNd9XTWTpmBbRgU+ROpLklERERk0rLjFqEHdrLqhNfzfPksZnTWc77XhS/VhYmIiIhMIv2PNmBHLABs22Ans8iinyhuolsg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RrqJ9LPQpfuz/OyJpMYFCexaSezaY4meu9dgF0tERERkSApEAxxwz+Hs5K6lhFZ2P6iMU78wZbCLJSIiIjJkFRy3U8eNSJDgfuMHrzAiIjs4jXQT6WfGcVj6sSks/dgUTjnllMEujoiIiMiQV75PJYVfCrATTZxyyvTBLo6IiIjIkBY+eRfevXpXiuY1sccXTiU4c/RgF0lEZIelRjcRERHZVB4P8xcRERHpc8pOIjLI6meXUT+7jL330Sg3ERkG8jg7aXpJERERERERERERERERkV5So5uIiIiIiIiIiIiIiIhIL6nRTURERERERERERERERKSXdE03ERER2ZTJ48m1RURERPqaspOIiIhIz+VxdtJINxEREREREREREREREZFe0kg3ERER2VT+djgSERER6XvKTiIiIiI9l8fZSSPdRERERERERERERERERHpJjW4iIiIiIiIiIiIiIiIivaRGNxEREREREREREREREZFe0jXdREREZFN5PLe2iIiISJ9TdhIRERHpuTzOThrpJiIiIiIiIiIiIiIiItJLGukmIiIi3cjjLkciIiIifU7ZSURERKTn8jc7qdFNRERENpW/2UdERESk7yk7iYiIiPRcHmcnTS8pIiIiIiIiIiIiIiIi0ktqdBMRERERERERERERERHpJTW6iYiIiIiIiIiIiIiIiPSSrukmIiIim8rjubVFRERE+pyyk4iIiEjP5XF20kg3ERERERERERERERERkV5So5uIiIiIiIiIiIiIiIhIL6nRTURERERERERERERERKSXdE03ERER2VQez60tIiIi0ueUnURERER6Lo+zk0a6iYiIiIiIiIiIiIiIiPSSGt1EREREREREREREREREeknTS4qIiMimTB6P8xcRERHpa8pOIiIiIj2Xx9lJI91ERERkuxljlhpjZg52OURERESGA2UnERERkW0z3PKTRrqJiIjIpvK3w5GIiIhI31N2EhEREem5PM5OGukmIiIifcoYc4Ex5i1jzFxjzD+NMSNz979gjNknt/w7Y8w7ueWgMabaGFM4mOUWERERGQzKTiIiIiLbZijnp2E/0s0Y8yhQOdjl6EvBYLAym81WD3Y5BoLqmp92pLrCjlVf1XVQPWKtPX6gXsxeGdyuPke54f7XA3OstauNMd8Dfg18FHgSOAp4BTgYaDPGjAEmA+9Za1v6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0kg3ERERERERERERERERkV5So5uIiIiIiIiIiIiIiIhIL6nRTURERERERERERERERKSX1OgmIiIiIiIiIiIiIiIi0ktqdBMRERERERERERERERHpJTW6iYiIiIiIiIiIiIiIiPSSGt1EREREREREREREREREekmNbiIiIiIiIiIiIiIiIiK9pEY3ERERERERERERERERkV5So5uIiIiIiIiIiIiIiIhIL6nRTURERERERERERERERKSX1OgmsoMwxvzFGPOnje47zBhTY4wZk7v9BWPMGmNMozHmFmNMpAfb/boxpjn3L2mMcTvdfie3zveMMW8ZY7LGmKv7pYIiIiIifWhr2ckYM9MY86gxptoYY7dhu+d2ykptxhiv0+3m3DqfNcYkjDEpY8ytfVw1ERERkX7Rg/x0oTHm1dx5pxXGmB8ZY4I92K7yk4gMG2p0E9lxXAGcYIw5BsAYEwVuAr5krV1tjDkO+CpwFDAJmApcs7WNWmuvtdYWWWuLgMuAFzbcttbunlttIfBl4ME+r5WIiIhI/9hidgIywF3AJ7Zlo9bav3bKTicAqzplp6LcaquA7wO39FFdRERERAbC1vJTDPg8UAnsh38O6sqtbVT5SUSGEzW6iewgrLU1wOeAPxhjCoHvAIustbfmVrkQ+KO19h1rbR3wPeCiPnrt26y1DwNNfbE9ERERkf62texkrZ1nrf0j8E4/vPY/rLX3ATV9vW0RERGR/tKD/PR7a+1/rbVpa+1K4K/AQX302spPIjIkbHX4rojkD2vt3caYs4E78UPNXp0e3h24v9PtN4FRxpiKXGgSERER2aFsJTuJiIiIyEa2MT8dSj90YBIRGUxqdBPZ8XwaWAR8w1q7vNP9RUBDp9sblotRLyERERHZcW0uO4mIiIhI97aan4wxFwNx4JMDWTARkf6m6SVFdjDW2rVANZv2JGoGSjrd3rCsKSFFRERkh7WF7CQiIiIi3dhafjLGnAZcB5xgra0ewKKJiPQ7NbqJyAbvAHt2ur0nsFZTS4qIiIiIiIiISF8wxhwP3AScYq19a7DLIyLS19ToJiIb3A58whizmzGmDPgmcOuGB40xTxtjrt6eDRtjQsaYKP5vTtAYEzXGBHpfZBEREZHBYXxRIJy7HTXGRDo9fqsx5tbt3HYwt+0AEMhtW5cGEBERkWHNGHMk8FfgTGvty908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3Bz3yTJK61sA8DuinHO6rkkiIiIi8n5mXT2HysKxeIjhwCLt+ydjeDUXVERERGR/qjNKaEj3YrqitPg91LuyCby8ma5NrXZHE5H3oXc3IiJDMO+6efzishAPPvYcviyTstKpdkcSGRamkbozjkRExD75ywpZtusynrjzIRzpBqdfdLzdkUSGhbqTiIgcDL5iP5XppVSm99wvaOrAZYCnwGdvMJEhSuXupJVuIiJD5Cv0k56bwOm07I4iMmwsw+hzExERGQ6uNBdmqYd4lvvATxYZJfbXndSfRERkqMaeUcbs6+aSyHVgeSBtUgaB247BP0bbc8volsrdSSvdRERERERERERERESS0Oyr57Jj2i4ATj3rLJvTiMiBaNBNRERE+kiV2UUiIiIiI0HdSURERKT/Urk7aXtJERERERERERERERERkSHSSjcRERHpw0zdCUciIiIiw07dSURERKT/Urk7aaWbiIiIiIiIiIiIiIiIyBBppZuIiIj0kcp7a4uIiIgMN3UnERERkf5L5e6klW4iIiIiIiIiIiIiIiIiQ6SVbiIiItKHSerOOBIREREZbupOIiIiIv2Xyt1JK91EREREREREREREREREhkgr3URERKSPVN5bW0RERGS4qTuJiIiI9F8qdyetdBMREREREREREREREREZIq10ExERkT7M1J1wJCIiIjLs1J1ERERE+i+Vu5MG3URERKQPM4WX+YuIiIgMN3UnERE5mOK7TaxOi8SpJk6PNq+T0S+Vu5MG3UREhqD24d2s+/gLuEwLazyYp5s4XCo/IiIiIvtjNXVRsfgWFla3UZ5RQvVDtYw5tsTuWCIiIiJJa/Nt2+n8eRSAZ9e+xEl3HYvhSN0BC5HRTp8Mi4gMkhk32XDec7i6E3jDJuyGdV940e5YIsPCMow+NxERkaFqvOAf5FVUkxPvYn7rDt786FN2RxIZFvvrTupPIiIyHHb8q3zvce0r9XTt6bYvjMgwSeXupEE3EZFBsiIJjLi1974zYRGu7rIxkYiIiEhys2o79h47AHc0al8YERERkVHAqmsjO9JGp9ekalwuvgKv3ZFE5ANo0E1EZJASu1ooS29gCrvJo4WObDdFGypovvQhEnWddscTGRLT6HsTEREZiu6YxYNHH07McBDFxUbHZML+LP5y3RbeWq3uJKPb/rqT+pOIiAxVxQM7mf3m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\",\n      \"text/plain\": [\n       \"<Figure size 1800x1080 with 12 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(25, 15))\\n\",\n    \"for j in range(n_treatments):\\n\",\n    \"    for i in range(n_outputs):\\n\",\n    \"        plt.subplot(n_treatments, n_outputs, i + j * n_outputs + 1)\\n\",\n    \"        plt.title(\\\"Y{}, T{}\\\".format(i, j))\\n\",\n    \"        shap.plots.beeswarm(shap_values['Y' + str(i)]['T' + str(j)], plot_size=None, show=False)\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/Metalearners Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Metalearners Estimators: Use Cases and Examples\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Metalearners are binary treatment CATE estimators that model the response surfaces, $Y(0)$ and $Y(1)$, separately. To account for a heterogeneous propensity of treatment $P(T\\\\mid X)$, the two modeled responses $E(Y(0)\\\\mid X)$ and $E(Y(1)\\\\mid X)$ are weighted in different ways in the final CATE estimation. For a detailed overview of these methods, see [this paper](https://arxiv.org/abs/1706.03461). \\n\",\n    \"\\n\",\n    \"The EconML SDK implements the following `metalearners`:\\n\",\n    \"\\n\",\n    \"* T-Learner\\n\",\n    \"\\n\",\n    \"* S-Learner\\n\",\n    \"\\n\",\n    \"* X-Learner\\n\",\n    \"\\n\",\n    \"* DomainAdaptation-Learner\\n\",\n    \"\\n\",\n    \"* DoublyRobust-Learner\\n\",\n    \"\\n\",\n    \"In this notebook, we compare the performance of these four CATE estimatiors on synthetic data and semi-synthetic data.\\n\",\n    \"\\n\",\n    \"**Notebook contents:**\\n\",\n    \"\\n\",\n    \"1. Example usage with synthetic data\\n\",\n    \"\\n\",\n    \"2. Example usage with semi-synthetic data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Main imports\\n\",\n    \"from econml.metalearners import TLearner, SLearner, XLearner, DomainAdaptationLearner\\n\",\n    \"\\n\",\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"from numpy.random import binomial, multivariate_normal, normal, uniform\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, GradientBoostingRegressor\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Example Usage with Synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.1. DGP\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We use the data generating process (DGP) from [Kunzel et al.](https://arxiv.org/abs/1706.03461). The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"$\\n\",\n    \"Y = \\\\mu_1(x) \\\\cdot T + \\\\mu_0(x) \\\\cdot (1-T) + \\\\epsilon \\\\\\\\\\n\",\n    \"T \\\\sim Bern(e(x)), \\\\; e(x) = P(T=1|X=x)\\n\",\n    \"$\\n\",\n    \"\\n\",\n    \"where \\n\",\n    \"\\n\",\n    \"$\\n\",\n    \"\\\\mu_0(x) = x^T\\\\beta,\\\\; with \\\\;\\\\beta\\\\sim Unif([-3, 3]^d),\\\\; X_i \\\\sim N(0, \\\\Sigma)\\\\\\\\\\n\",\n    \"\\\\mu_1(x) = \\\\mu_0(x) + 8 \\\\mathbb{I}(x_2>0.1) => CATE(x) = 8 \\\\mathbb{I}(x_2>0.1)\\n\",\n    \"$\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Define DGP\\n\",\n    \"def generate_data(n, d, controls_outcome, treatment_effect, propensity):\\n\",\n    \"    \\\"\\\"\\\"Generate population data for given untreated_outcome, treatment_effect and propensity functions.\\n\",\n    \"\\n\",\n    \"    Parameters\\n\",\n    \"    ----------\\n\",\n    \"        n (int): population size\\n\",\n    \"        d (int): number of covariates\\n\",\n    \"        controls_outcome (func): untreated outcome conditional on covariates\\n\",\n    \"        treatment_effect (func): treatment effect conditional on covariates\\n\",\n    \"        propensity (func): probability of treatment conditional on covariates\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    # Generate covariates\\n\",\n    \"    X = multivariate_normal(np.zeros(d), np.diag(np.ones(d)), n)\\n\",\n    \"    # Generate treatment\\n\",\n    \"    T = np.apply_along_axis(lambda x: binomial(1, propensity(x), 1)[0], 1, X)\\n\",\n    \"    # Calculate outcome\\n\",\n    \"    Y0 = np.apply_along_axis(lambda x: controls_outcome(x), 1, X)\\n\",\n    \"    treat_effect = np.apply_along_axis(lambda x: treatment_effect(x), 1, X)\\n\",\n    \"    Y = Y0 + treat_effect * T\\n\",\n    \"    return (Y, T, X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# controls outcome, treatment effect, propensity definitions\\n\",\n    \"def generate_controls_outcome(d):\\n\",\n    \"    beta = uniform(-3, 3, d)\\n\",\n    \"    return lambda x: np.dot(x, beta) + normal(0, 1)\\n\",\n    \"def treatment_effect(x):\\n\",\n    \"    return (1 if x[1] > 0.1 else 0) * 8\\n\",\n    \"def propensity(x):\\n\",\n    \"    return 0.8 if x[2] > -0.5 and x[2] < 0.5 else 0.2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# DGP constants and test data\\n\",\n    \"d = 5\\n\",\n    \"n = 1000\\n\",\n    \"n_test = 250\\n\",\n    \"controls_outcome = generate_controls_outcome(d)\\n\",\n    \"X_test = multivariate_normal(np.zeros(d), np.diag(np.ones(d)), n_test)\\n\",\n    \"delta = 6/n_test\\n\",\n    \"X_test[:, 1] = np.arange(-3, 3, delta)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"Y, T, X = generate_data(n, d, controls_outcome, treatment_effect, propensity)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.2. Train Estimators\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate T learner\\n\",\n    \"models = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"T_learner = TLearner(models=models)\\n\",\n    \"# Train T_learner\\n\",\n    \"T_learner.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"T_te = T_learner.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate S learner\\n\",\n    \"overall_model = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"S_learner = SLearner(overall_model=overall_model)\\n\",\n    \"# Train S_learner\\n\",\n    \"S_learner.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"S_te = S_learner.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate X learner\\n\",\n    \"models = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"propensity_model = RandomForestClassifier(n_estimators=100, max_depth=6,\\n\",\n    \"                                                  min_samples_leaf=int(n/100))\\n\",\n    \"X_learner = XLearner(models=models, propensity_model=propensity_model)\\n\",\n    \"# Train X_learner\\n\",\n    \"X_learner.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"X_te = X_learner.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Instantiate Domain Adaptation learner\\n\",\n    \"models = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"final_models = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"propensity_model = RandomForestClassifier(n_estimators=100, max_depth=6,\\n\",\n    \"                                                  min_samples_leaf=int(n/100))\\n\",\n    \"DA_learner = DomainAdaptationLearner(models=models,\\n\",\n    \"                                     final_models=final_models,\\n\",\n    \"                                     propensity_model=propensity_model)\\n\",\n    \"# Train DA_learner\\n\",\n    \"DA_learner.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"DA_te = DA_learner.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"The sklearn.ensemble.forest module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.ensemble. Anything that cannot be imported from sklearn.ensemble is now part of the private API.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Instantiate Doubly Robust Learner\\n\",\n    \"from econml.dr import DRLearner\\n\",\n    \"outcome_model = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"pseudo_treatment_model = GradientBoostingRegressor(n_estimators=100, max_depth=6, min_samples_leaf=int(n/100))\\n\",\n    \"propensity_model = RandomForestClassifier(n_estimators=100, max_depth=6,\\n\",\n    \"                                                  min_samples_leaf=int(n/100))\\n\",\n    \"\\n\",\n    \"DR_learner = DRLearner(model_regression=outcome_model, model_propensity=propensity_model,\\n\",\n    \"                       model_final=pseudo_treatment_model, cv=5)\\n\",\n    \"# Train DR_learner\\n\",\n    \"DR_learner.fit(Y, T, X=X)\\n\",\n    \"# Estimate treatment effects on test data\\n\",\n    \"DR_te = DR_learner.effect(X_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1.3. Visual Comparisons\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 504x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"### Comparison plot of the different learners\\n\",\n    \"plt.figure(figsize=(7, 5))\\n\",\n    \"plt.plot(X_test[:, 1], np.apply_along_axis(treatment_effect, 1, X_test), color='black', ls='--', label='Baseline')\\n\",\n    \"plt.scatter(X_test[:, 1], T_te, label=\\\"T-learner\\\")\\n\",\n    \"plt.scatter(X_test[:, 1], S_te, label=\\\"S-learner\\\")\\n\",\n    \"plt.scatter(X_test[:, 1], DA_te, label=\\\"DA-learner\\\")\\n\",\n    \"plt.scatter(X_test[:, 1], X_te, label=\\\"X-learner\\\")\\n\",\n    \"plt.scatter(X_test[:, 1], DR_te, label=\\\"DR-learner\\\")\\n\",\n    \"plt.xlabel('$x_1$')\\n\",\n    \"plt.ylabel('Treatment Effect')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"expected_te = np.apply_along_axis(treatment_effect, 1, X_test)\\n\",\n    \"plt.violinplot([np.abs(T_te - expected_te),\\n\",\n    \"                np.abs(S_te - expected_te),\\n\",\n    \"                np.abs(DA_te - expected_te),\\n\",\n    \"                np.abs(X_te - expected_te),\\n\",\n    \"                np.abs(DR_te - expected_te)\\n\",\n    \"               ], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks([1, 2, 3, 4, 5], ['T-learner', 'S-learner', 'DA-learner', 'X-learner', 'DR-learner'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Example Usage with Semi-synthetic Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1. DGP\\n\",\n    \"\\n\",\n    \"We use the Response Surface B from [Hill (2011)](https://www.tandfonline.com/doi/pdf/10.1198/jcgs.2010.08162) to generate sythetic outcome surfaces from real-world covariates and treatment assignments (Infant Health Development Program data). Since the original data was part of a randomized trial, a subset of the treated infants (those with non-white mothers) has been removed from the data in order to mimic the observational data setting. For more details, see [Hill (2011)](https://www.tandfonline.com/doi/pdf/10.1198/jcgs.2010.08162).\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"The DGP is described by the following equations:\\n\",\n    \"\\n\",\n    \"$\\n\",\n    \"Y(0) = e^{(X+W)\\\\beta} + \\\\epsilon_0, \\\\;\\\\epsilon_0 \\\\sim N(0, 1)\\\\\\\\\\n\",\n    \"Y(1) = X\\\\beta - \\\\omega + \\\\epsilon_1, \\\\;\\\\epsilon_1 \\\\sim N(0, 1)\\\\\\\\\\n\",\n    \"$\\n\",\n    \"\\n\",\n    \"where $X$ is a covariate matrix, $W$ is a constant matrix with entries equal to $0.5$ and $w$ is a constant calculated such that the CATT equals $4$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.data.dgps import ihdp_surface_B\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"Y, T, X, expected_te = ihdp_surface_B()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2. Train Estimators\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# T-learner\\n\",\n    \"T_learner.fit(Y, T, X=X)\\n\",\n    \"T_te = T_learner.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# S-learner\\n\",\n    \"S_learner.fit(Y, T, X=X)\\n\",\n    \"S_te = S_learner.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# X-learner\\n\",\n    \"X_learner.fit(Y, T, X=X)\\n\",\n    \"X_te = X_learner.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Domain adaptation learner\\n\",\n    \"DA_learner.fit(Y, T, X=X)\\n\",\n    \"DA_te = DA_learner.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Doubly robust learner\\n\",\n    \"DR_learner.fit(Y, T, X=X)\\n\",\n    \"DR_te = DR_learner.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.3. Visual Comparisons\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Visualization of bias distribution\\n\",\n    \"plt.violinplot([np.abs(T_te - expected_te),\\n\",\n    \"                np.abs(S_te - expected_te),\\n\",\n    \"                np.abs(DA_te - expected_te),\\n\",\n    \"                np.abs(X_te - expected_te),\\n\",\n    \"                np.abs(DR_te - expected_te)\\n\",\n    \"               ], showmeans=True)\\n\",\n    \"plt.ylabel(\\\"Bias distribution\\\")\\n\",\n    \"plt.xticks([1, 2, 3, 4, 5], ['T-learner', 'S-learner', 'DA-learner', 'X-learner', 'DR-learner'])\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/OrthoIV and DRIV Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# OrthoIV and DRIV: Use Cases and Examples\\n\",\n    \"\\n\",\n    \"OrthoIV, DMLIV, and DRIV are a suite of algorithms that use Double Machine Learning approach and Doubly Robust machine learning approach to estimate the heterogeneous treatment effect with an endogeneous treatment and an instrument.\\n\",\n    \"\\n\",\n    \"The EconML SDK implements the following  classes:\\n\",\n    \"\\n\",\n    \"* **OrthoIV classes**: solve the moment equation $E[(Y-E[Y|X]-\\\\theta(X) \\\\cdot (T-E[T|X]))(Z-E[Z|X])] = 0$\\n\",\n    \"* **DMLIV classes**: minimize the square loss   $E[(Y- E[Y|X] - \\\\theta(X) \\\\cdot (E[T|X, Z] - E[T|X]))^2]$\\n\",\n    \"* **DRIV classes**: minimize the square loss\\n\",\n    \"$$E[(\\\\theta_{pre}(X) + \\\\frac{(Y- E[Y|X]-\\\\theta_{pre}(X) \\\\cdot (T- E[T|X]))(Z-E[Z|X])}{E[T\\\\cdot Z|X]-E[T|X] \\\\cdot E[Z|X] }-\\\\theta(X))^2]$$\\n\",\n    \"* **Intent to Treat DRIV classes**: a special case of DRIV where the instrument is the assignment in a randomized controlled trail with non-compliance\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"In ths notebook, we show the performance of OrthoIV and DRIV on estimating average treatment effect and heterogeneous treatment effect.\\n\",\n    \"\\n\",\n    \"**Notebook contents:**\\n\",\n    \"\\n\",\n    \"1. [Example Usage with Average Treatment Effects](#Example-Usage-with-Average-Treatment-Effects)\\n\",\n    \"2. [Example Usage with Heterogeneous Treatment Effects](#Example-Usage-with-Heterogeneous-Treatment-Effects)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 2;\\n\",\n       \"                var nbb_formatted_code = \\\"# Helper imports\\\\nimport numpy as np\\\\nfrom scipy import special\\\\nfrom sklearn.linear_model import LinearRegression, LogisticRegression\\\\nfrom sklearn.ensemble import RandomForestRegressor\\\\nimport matplotlib.pyplot as plt\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"from scipy import special\\n\",\n    \"from sklearn.linear_model import LinearRegression, LogisticRegression\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor\\n\",\n    \"import matplotlib.pyplot as plt\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Example Usage with Average Treatment Effects\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## DGP\\n\",\n    \"We construct the DGP as below. The instrument corresponds to a fully randomized recommendation of treatment. Then each sample complies with the recommendation to some degree. This probability depends on both the observed feature $X$ and an unobserved confounder that has a direct effect on the outcome.\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"W \\\\sim \\\\; & \\\\text{Normal}(0,\\\\, I_{n_w})   \\\\tag{Observed confounders}\\\\\\\\\\n\",\n    \"Z \\\\sim \\\\; & \\\\text{Bernoulli}(p=0.5)   \\\\tag{Instrument}\\\\\\\\\\n\",\n    \"\\\\nu \\\\sim \\\\; & \\\\text{U}[0, 5] \\\\tag{Unobserved confounder}\\\\\\\\\\n\",\n    \"C \\\\sim \\\\; & \\\\text{Bernoulli}(p=0.8 \\\\cdot \\\\text{Sigmoid}(0.4 \\\\cdot X[0] + \\\\nu))   \\\\tag{Compliers when recommended}\\\\\\\\\\n\",\n    \"C0 \\\\sim \\\\; & \\\\text{Bernoulli}(p=0.006)   \\\\tag{Non-Compliers when not recommended}\\\\\\\\\\n\",\n    \"T = \\\\; & C \\\\cdot Z + C0 \\\\cdot (1-Z)  \\\\tag{Treatment}\\\\\\\\\\n\",\n    \"y \\\\sim \\\\; & \\\\theta \\\\cdot T + 2 \\\\cdot \\\\nu + 5 \\\\cdot (X[3]>0) + 0.1 \\\\cdot \\\\text{U}[0, 1]  \\\\tag{Outcome}\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"Moreover, the constant treatment effect is presdefined here, that's what we want to learn from the model.\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta = \\\\; & 10 \\\\tag{ATE}\\\\\\\\\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 3;\\n\",\n       \"                var nbb_formatted_code = \\\"# test performance\\\\ndef dgp(n, p, true_fn):\\\\n    X = np.random.normal(0, 1, size=(n, p))\\\\n    Z = np.random.binomial(1, 0.5, size=(n,))\\\\n    nu = np.random.uniform(0, 5, size=(n,))\\\\n    coef_Z = 0.8\\\\n    C = np.random.binomial(\\\\n        1, coef_Z * special.expit(0.4 * X[:, 0] + nu)\\\\n    )  # Compliers when recomended\\\\n    C0 = np.random.binomial(\\\\n        1, 0.006 * np.ones(X.shape[0])\\\\n    )  # Non-compliers when not recommended\\\\n    T = C * Z + C0 * (1 - Z)\\\\n    y = (\\\\n        true_fn(X) * T\\\\n        + 2 * nu\\\\n        + 5 * (X[:, 3] > 0)\\\\n        + 0.1 * np.random.uniform(0, 1, size=(n,))\\\\n    )\\\\n    return y, T, Z, X\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# test performance\\n\",\n    \"def dgp(n, p, true_fn):\\n\",\n    \"    X = np.random.normal(0, 1, size=(n, p))\\n\",\n    \"    Z = np.random.binomial(1, 0.5, size=(n,))\\n\",\n    \"    nu = np.random.uniform(0, 5, size=(n,))\\n\",\n    \"    coef_Z = 0.8\\n\",\n    \"    C = np.random.binomial(\\n\",\n    \"        1, coef_Z * special.expit(0.4 * X[:, 0] + nu)\\n\",\n    \"    )  # Compliers when recomended\\n\",\n    \"    C0 = np.random.binomial(\\n\",\n    \"        1, 0.006 * np.ones(X.shape[0])\\n\",\n    \"    )  # Non-compliers when not recommended\\n\",\n    \"    T = C * Z + C0 * (1 - Z)\\n\",\n    \"    y = (\\n\",\n    \"        true_fn(X) * T\\n\",\n    \"        + 2 * nu\\n\",\n    \"        + 5 * (X[:, 3] > 0)\\n\",\n    \"        + 0.1 * np.random.uniform(0, 1, size=(n,))\\n\",\n    \"    )\\n\",\n    \"    return y, T, Z, X\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 4;\\n\",\n       \"                var nbb_formatted_code = \\\"func = lambda X: 10\\\\nn = 5000\\\\np = 10\\\\ny, T, Z, X = dgp(n, p, func)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"def func(X):\\n\",\n    \"    return 10\\n\",\n    \"n = 5000\\n\",\n    \"p = 10\\n\",\n    \"y, T, Z, X = dgp(n, p, func)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Train Estimators\\n\",\n    \"We train multiple estimators from OrthoIV and DRIV classes, and see whether they could all recover the true estimate\\n\",\n    \"### OrthoIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 5;\\n\",\n       \"                var nbb_formatted_code = \\\"model = lambda: LinearRegression()\\\\nmodel_clf = lambda: LogisticRegression()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"def model():\\n\",\n    \"    return LinearRegression()\\n\",\n    \"def model_clf():\\n\",\n    \"    return LogisticRegression()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect:  10\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>10.04</td>      <td>0.138</td> <td>72.517</td>   <td>0.0</td>    <td>9.768</td>   <td>10.311</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept          10.04  0.138 72.517    0.0    9.768   10.311\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 6;\\n\",\n       \"                var nbb_formatted_code = \\\"from econml.iv.dml import OrthoIV\\\\n\\\\nest1 = OrthoIV(projection=False, discrete_treatment=True, discrete_instrument=True)\\\\nest1.fit(y, T, Z=Z, X=None, W=X)\\\\nprint(\\\\\\\"True Treatment Effect: \\\\\\\", func(X))\\\\nest1.summary(alpha=0.05)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from econml.iv.dml import OrthoIV\\n\",\n    \"\\n\",\n    \"est1 = OrthoIV(projection=False, discrete_treatment=True, discrete_instrument=True)\\n\",\n    \"est1.fit(y, T, Z=Z, X=None, W=X)\\n\",\n    \"print(\\\"True Treatment Effect: \\\", func(X))\\n\",\n    \"est1.summary(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Projected OrthoIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect:  10\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>10.026</td>      <td>0.138</td> <td>72.874</td>   <td>0.0</td>    <td>9.756</td>   <td>10.295</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept         10.026  0.138 72.874    0.0    9.756   10.295\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 7;\\n\",\n       \"                var nbb_formatted_code = \\\"est2 = OrthoIV(projection=True, discrete_treatment=True, discrete_instrument=True)\\\\nest2.fit(y, T, Z=Z, X=None, W=X)\\\\nprint(\\\\\\\"True Treatment Effect: \\\\\\\", func(X))\\\\nest2.summary(alpha=0.05)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est2 = OrthoIV(projection=True, discrete_treatment=True, discrete_instrument=True)\\n\",\n    \"est2.fit(y, T, Z=Z, X=None, W=X)\\n\",\n    \"print(\\\"True Treatment Effect: \\\", func(X))\\n\",\n    \"est2.summary(alpha=0.05)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### DMLIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect:  10\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>10.232</td>    \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"    CATE Intercept Results   \\n\",\n       \"=============================\\n\",\n       \"               point_estimate\\n\",\n       \"-----------------------------\\n\",\n       \"cate_intercept         10.232\\n\",\n       \"-----------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 8;\\n\",\n       \"                var nbb_formatted_code = \\\"from econml.iv.dml import DMLIV, NonParamDMLIV\\\\n\\\\nest3 = DMLIV(discrete_treatment=True, discrete_instrument=True)\\\\nest3.fit(y, T, Z=Z, X=None, W=X)\\\\nprint(\\\\\\\"True Treatment Effect: \\\\\\\", func(X))\\\\nest3.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from econml.iv.dml import DMLIV, NonParamDMLIV\\n\",\n    \"\\n\",\n    \"est3 = DMLIV(discrete_treatment=True, discrete_instrument=True)\\n\",\n    \"est3.fit(y, T, Z=Z, X=None, W=X)\\n\",\n    \"print(\\\"True Treatment Effect: \\\", func(X))\\n\",\n    \"est3.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Linear DRIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect:  10\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>     <td>10.034</td>      <td>0.139</td> <td>72.211</td>   <td>0.0</td>    <td>9.762</td>   <td>10.306</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept         10.034  0.139 72.211    0.0    9.762   10.306\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 9,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 9;\\n\",\n       \"                var nbb_formatted_code = \\\"from econml.iv.dr import LinearDRIV, SparseLinearDRIV, ForestDRIV\\\\n\\\\nest4 = LinearDRIV(discrete_instrument=True, discrete_treatment=True)\\\\nest4.fit(y, T, Z=Z, X=None, W=X)\\\\nprint(\\\\\\\"True Treatment Effect: \\\\\\\", func(X))\\\\nest4.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from econml.iv.dr import LinearDRIV, ForestDRIV\\n\",\n    \"\\n\",\n    \"est4 = LinearDRIV(discrete_instrument=True, discrete_treatment=True)\\n\",\n    \"est4.fit(y, T, Z=Z, X=None, W=X)\\n\",\n    \"print(\\\"True Treatment Effect: \\\", func(X))\\n\",\n    \"est4.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Linear Intent-to-Treat DRIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect:  10\\n\",\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>10.03</td>      <td>0.14</td>  <td>71.638</td>   <td>0.0</td>    <td>9.755</td>   <td>10.304</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                       CATE Intercept Results                       \\n\",\n       \"====================================================================\\n\",\n       \"               point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"cate_intercept          10.03   0.14 71.638    0.0    9.755   10.304\\n\",\n       \"--------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 10;\\n\",\n       \"                var nbb_formatted_code = \\\"from econml.iv.dr import LinearIntentToTreatDRIV\\\\n\\\\nest5 = LinearIntentToTreatDRIV(model_t_xwz=model_clf())\\\\nest5.fit(y, T, Z=Z, X=None, W=X)\\\\nprint(\\\\\\\"True Treatment Effect: \\\\\\\", func(X))\\\\nest5.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"from econml.iv.dr import LinearIntentToTreatDRIV\\n\",\n    \"\\n\",\n    \"est5 = LinearIntentToTreatDRIV(model_t_xwz=model_clf())\\n\",\n    \"est5.fit(y, T, Z=Z, X=None, W=X)\\n\",\n    \"print(\\\"True Treatment Effect: \\\", func(X))\\n\",\n    \"est5.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Example Usage with Heterogeneous Treatment Effects\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## DGP\\n\",\n    \"In this section, we keep the same data generation process, but only change the treatment effect $\\\\theta(X)$ to a function of $X$, and learn the heterogeneous treatment effect. We'd like to see the effect interval learnt from each model could recover the true estimate and the coefficient estimates in the final linear model could recover the true coefficient.\\n\",\n    \"\\n\",\n    \"The true effect function is as below:\\n\",\n    \"\\\\begin{align}\\n\",\n    \"\\\\theta = \\\\; & 10 \\\\cdot X[0] \\\\tag{CATE}\\\\\\\\\\n\",\n    \"\\\\end{align}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 11;\\n\",\n       \"                var nbb_formatted_code = \\\"func = lambda X: 10 * X[:, 0]\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"def func(X):\\n\",\n    \"    return 10 * X[:, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 12;\\n\",\n       \"                var nbb_formatted_code = \\\"n = 5000\\\\np = 10\\\\ny, T, Z, X = dgp(n, p, func)\\\\n# Generate test data\\\\nX_test = np.linspace(-2, 2, 100).reshape(-1, 1)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"n = 5000\\n\",\n    \"p = 10\\n\",\n    \"y, T, Z, X = dgp(n, p, func)\\n\",\n    \"# Generate test data\\n\",\n    \"X_test = np.linspace(-2, 2, 100).reshape(-1, 1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 13;\\n\",\n       \"                var nbb_formatted_code = \\\"# save output for visualization\\\\nres_pred = []\\\\nres_lb = []\\\\nres_ub = []\\\\nname_list = [\\\\n    \\\\\\\"OrthoIV\\\\\\\",\\\\n    \\\\\\\"ProjectedOrthoIV\\\\\\\",\\\\n    \\\\\\\"NonParamDMLIV\\\\\\\",\\\\n    \\\\\\\"LinearDRIV\\\\\\\",\\\\n    \\\\\\\"ForestDRIV\\\\\\\",\\\\n    \\\\\\\"LinearIntentToTreatDRIV\\\\\\\",\\\\n]\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# save output for visualization\\n\",\n    \"res_pred = []\\n\",\n    \"res_lb = []\\n\",\n    \"res_ub = []\\n\",\n    \"name_list = [\\n\",\n    \"    \\\"OrthoIV\\\",\\n\",\n    \"    \\\"ProjectedOrthoIV\\\",\\n\",\n    \"    \\\"NonParamDMLIV\\\",\\n\",\n    \"    \\\"LinearDRIV\\\",\\n\",\n    \"    \\\"ForestDRIV\\\",\\n\",\n    \"    \\\"LinearIntentToTreatDRIV\\\",\\n\",\n    \"]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Train Estimators\\n\",\n    \"### OrthoIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect: 10\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>     <td>10.043</td>      <td>0.142</td> <td>70.962</td>   <td>0.0</td>    <td>9.765</td>    <td>10.32</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.245</td>      <td>0.137</td> <td>1.793</td>  <td>0.073</td>  <td>-0.023</td>    <td>0.513</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                   \\n\",\n       \"========================================================\\n\",\n       \"   point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------\\n\",\n       \"X0         10.043  0.142 70.962    0.0    9.765    10.32\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.245  0.137 1.793  0.073   -0.023    0.513\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 14,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 14;\\n\",\n       \"                var nbb_formatted_code = \\\"est1 = OrthoIV(projection=False, discrete_treatment=True, discrete_instrument=True)\\\\nest1.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\\nprint(\\\\\\\"True Treatment Effect: 10\\\\\\\")\\\\nest1.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est1 = OrthoIV(projection=False, discrete_treatment=True, discrete_instrument=True)\\n\",\n    \"est1.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\n\",\n    \"print(\\\"True Treatment Effect: 10\\\")\\n\",\n    \"est1.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 15;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred1 = est1.effect(X_test)\\\\nte_pred1_lb, te_pred1_ub = est1.effect_interval(X_test, alpha=0.05)\\\\nres_pred.append(te_pred1)\\\\nres_lb.append(te_pred1_lb)\\\\nres_ub.append(te_pred1_ub)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred1 = est1.effect(X_test)\\n\",\n    \"te_pred1_lb, te_pred1_ub = est1.effect_interval(X_test, alpha=0.05)\\n\",\n    \"res_pred.append(te_pred1)\\n\",\n    \"res_lb.append(te_pred1_lb)\\n\",\n    \"res_ub.append(te_pred1_ub)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Projected OrthoIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect: 10\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>     <td>10.052</td>      <td>0.142</td> <td>70.695</td>   <td>0.0</td>    <td>9.773</td>    <td>10.33</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.22</td>       <td>0.137</td> <td>1.604</td>  <td>0.109</td>  <td>-0.049</td>    <td>0.488</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                   \\n\",\n       \"========================================================\\n\",\n       \"   point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------\\n\",\n       \"X0         10.052  0.142 70.695    0.0    9.773    10.33\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept           0.22  0.137 1.604  0.109   -0.049    0.488\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 16;\\n\",\n       \"                var nbb_formatted_code = \\\"est2 = OrthoIV(projection=True, discrete_treatment=True, discrete_instrument=True)\\\\nest2.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\\nprint(\\\\\\\"True Treatment Effect: 10\\\\\\\")\\\\nest2.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est2 = OrthoIV(projection=True, discrete_treatment=True, discrete_instrument=True)\\n\",\n    \"est2.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\n\",\n    \"print(\\\"True Treatment Effect: 10\\\")\\n\",\n    \"est2.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 17;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred2 = est2.effect(X_test)\\\\nte_pred2_lb, te_pred2_ub = est2.effect_interval(X_test, alpha=0.05)\\\\nres_pred.append(te_pred2)\\\\nres_lb.append(te_pred2_lb)\\\\nres_ub.append(te_pred2_ub)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred2 = est2.effect(X_test)\\n\",\n    \"te_pred2_lb, te_pred2_ub = est2.effect_interval(X_test, alpha=0.05)\\n\",\n    \"res_pred.append(te_pred2)\\n\",\n    \"res_lb.append(te_pred2_lb)\\n\",\n    \"res_ub.append(te_pred2_ub)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Non-Parametric DMLIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.iv.dml._dml.NonParamDMLIV at 0x12b3f873608>\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 18;\\n\",\n       \"                var nbb_formatted_code = \\\"est3 = NonParamDMLIV(\\\\n    model_final=RandomForestRegressor(),\\\\n    discrete_treatment=True,\\\\n    discrete_instrument=True,\\\\n)\\\\nest3.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est3 = NonParamDMLIV(\\n\",\n    \"    model_final=RandomForestRegressor(),\\n\",\n    \"    discrete_treatment=True,\\n\",\n    \"    discrete_instrument=True,\\n\",\n    \")\\n\",\n    \"est3.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 19;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred3 = est3.effect(X_test)\\\\nres_pred.append(te_pred2)\\\\nres_lb.append(np.array([]))\\\\nres_ub.append(np.array([]))\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred3 = est3.effect(X_test)\\n\",\n    \"res_pred.append(te_pred2)\\n\",\n    \"res_lb.append(np.array([]))\\n\",\n    \"res_ub.append(np.array([]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Linear DRIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect: 10\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>     <td>10.058</td>      <td>0.141</td> <td>71.339</td>   <td>0.0</td>    <td>9.781</td>   <td>10.334</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.245</td>      <td>0.137</td> <td>1.791</td>  <td>0.073</td>  <td>-0.023</td>    <td>0.513</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                   \\n\",\n       \"========================================================\\n\",\n       \"   point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------\\n\",\n       \"X0         10.058  0.141 71.339    0.0    9.781   10.334\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.245  0.137 1.791  0.073   -0.023    0.513\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 20;\\n\",\n       \"                var nbb_formatted_code = \\\"est4 = LinearDRIV(discrete_instrument=True, discrete_treatment=True)\\\\nest4.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\\nprint(\\\\\\\"True Treatment Effect: 10\\\\\\\")\\\\nest4.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est4 = LinearDRIV(discrete_instrument=True, discrete_treatment=True)\\n\",\n    \"est4.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\n\",\n    \"print(\\\"True Treatment Effect: 10\\\")\\n\",\n    \"est4.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 21;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred4 = est4.effect(X_test)\\\\nte_pred4_lb, te_pred4_ub = est4.effect_interval(X_test, alpha=0.05)\\\\nres_pred.append(te_pred4)\\\\nres_lb.append(te_pred4_lb)\\\\nres_ub.append(te_pred4_ub)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred4 = est4.effect(X_test)\\n\",\n    \"te_pred4_lb, te_pred4_ub = est4.effect_interval(X_test, alpha=0.05)\\n\",\n    \"res_pred.append(te_pred4)\\n\",\n    \"res_lb.append(te_pred4_lb)\\n\",\n    \"res_ub.append(te_pred4_ub)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Forest DRIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.iv.dr._dr.ForestDRIV at 0x12b3f8bcb48>\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 22;\\n\",\n       \"                var nbb_formatted_code = \\\"est5 = ForestDRIV(discrete_instrument=True, discrete_treatment=True)\\\\nest5.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est5 = ForestDRIV(discrete_instrument=True, discrete_treatment=True)\\n\",\n    \"est5.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 23;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred5 = est5.effect(X_test)\\\\nte_pred5_lb, te_pred5_ub = est5.effect_interval(X_test, alpha=0.05)\\\\nres_pred.append(te_pred5)\\\\nres_lb.append(te_pred5_lb)\\\\nres_ub.append(te_pred5_ub)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred5 = est5.effect(X_test)\\n\",\n    \"te_pred5_lb, te_pred5_ub = est5.effect_interval(X_test, alpha=0.05)\\n\",\n    \"res_pred.append(te_pred5)\\n\",\n    \"res_lb.append(te_pred5_lb)\\n\",\n    \"res_ub.append(te_pred5_ub)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Linear Intent-to-Treat DRIV Estimator\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True Treatment Effect: 10\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>Coefficient Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"   <td></td>  <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>X0</th>      <td>9.894</td>      <td>0.162</td> <td>61.058</td>   <td>0.0</td>    <td>9.577</td>   <td>10.212</td> \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th> <th>stderr</th> <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>      <td>0.267</td>      <td>0.155</td> <td>1.728</td>  <td>0.084</td>  <td>-0.036</td>    <td>0.57</td>  \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$<br/>where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                  Coefficient Results                   \\n\",\n       \"========================================================\\n\",\n       \"   point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"--------------------------------------------------------\\n\",\n       \"X0          9.894  0.162 61.058    0.0    9.577   10.212\\n\",\n       \"                       CATE Intercept Results                      \\n\",\n       \"===================================================================\\n\",\n       \"               point_estimate stderr zstat pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"cate_intercept          0.267  0.155 1.728  0.084   -0.036     0.57\\n\",\n       \"-------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = \\\\phi(X)' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"where $\\\\phi(X)$ is the output of the `featurizer` or $X$ if `featurizer`=None. Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 24;\\n\",\n       \"                var nbb_formatted_code = \\\"est6 = LinearIntentToTreatDRIV()\\\\nest6.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\\\nprint(\\\\\\\"True Treatment Effect: 10\\\\\\\")\\\\nest6.summary()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"est6 = LinearIntentToTreatDRIV()\\n\",\n    \"est6.fit(y, T, Z=Z, X=X[:, :1], W=X[:, 1:])\\n\",\n    \"print(\\\"True Treatment Effect: 10\\\")\\n\",\n    \"est6.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 25;\\n\",\n       \"                var nbb_formatted_code = \\\"te_pred6 = est6.effect(X_test)\\\\nte_pred6_lb, te_pred6_ub = est6.effect_interval(X_test, alpha=0.05)\\\\nres_pred.append(te_pred6)\\\\nres_lb.append(te_pred6_lb)\\\\nres_ub.append(te_pred6_ub)\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"te_pred6 = est6.effect(X_test)\\n\",\n    \"te_pred6_lb, te_pred6_ub = est6.effect_interval(X_test, alpha=0.05)\\n\",\n    \"res_pred.append(te_pred6)\\n\",\n    \"res_lb.append(te_pred6_lb)\\n\",\n    \"res_ub.append(te_pred6_ub)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"##  Performance Visualization\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1296x864 with 6 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"application/javascript\": [\n       \"\\n\",\n       \"            setTimeout(function() {\\n\",\n       \"                var nbb_cell_id = 26;\\n\",\n       \"                var nbb_formatted_code = \\\"plt.figure(figsize=(18, 12))\\\\nfor i in range(6):\\\\n    plt.subplot(3, 2, i + 1)\\\\n    plt.plot(X_test[:, 0], res_pred[i], label=name_list[i], alpha=0.6)\\\\n    if res_lb[i].size != 0:\\\\n        plt.fill_between(X_test[:, 0], res_lb[i], res_ub[i], alpha=0.4)\\\\n    plt.plot(X_test[:, 0], func(X_test), \\\\\\\"b--\\\\\\\", label=\\\\\\\"True effect\\\\\\\")\\\\n    plt.xlabel(\\\\\\\"X[0]\\\\\\\")\\\\n    plt.ylabel(\\\\\\\"Treatment Effect\\\\\\\")\\\\n    plt.legend()\\\\nplt.show()\\\";\\n\",\n       \"                var nbb_cells = Jupyter.notebook.get_cells();\\n\",\n       \"                for (var i = 0; i < nbb_cells.length; ++i) {\\n\",\n       \"                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\\n\",\n       \"                        nbb_cells[i].set_text(nbb_formatted_code);\\n\",\n       \"                        break;\\n\",\n       \"                    }\\n\",\n       \"                }\\n\",\n       \"            }, 500);\\n\",\n       \"            \"\n      ],\n      \"text/plain\": [\n       \"<IPython.core.display.Javascript object>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(18, 12))\\n\",\n    \"for i in range(6):\\n\",\n    \"    plt.subplot(3, 2, i + 1)\\n\",\n    \"    plt.plot(X_test[:, 0], res_pred[i], label=name_list[i], alpha=0.6)\\n\",\n    \"    if res_lb[i].size != 0:\\n\",\n    \"        plt.fill_between(X_test[:, 0], res_lb[i], res_ub[i], alpha=0.4)\\n\",\n    \"    plt.plot(X_test[:, 0], func(X_test), \\\"b--\\\", label=\\\"True effect\\\")\\n\",\n    \"    plt.xlabel(\\\"X[0]\\\")\\n\",\n    \"    plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n    \"    plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Policy Learning with Trees and Forests.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"designed-drain\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"id\": \"retired-asbestos\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import numpy as np\\n\",\n    \"from econml.policy import PolicyTree, PolicyForest\\n\",\n    \"from econml.policy import DRPolicyTree, DRPolicyForest\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from econml.cate_interpreter import SingleTreePolicyInterpreter\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"neither-nudist\",\n   \"metadata\": {},\n   \"source\": [\n    \"# PolicyTree and PolicyForest\\n\",\n    \"\\n\",\n    \"These are basic tree and forest classes, that accept `X, y` where `y` is `(n_samples, n_outputs)` and\\n\",\n    \"trains a tree to maximize the linear welfare criterion: `<f(X), y>`, where the maximization is over functions from `X` to `{e_1, ..., e_{n_outputs}}`, representable by either a tree or a forest. The `predict` method returns the coordinate that achieves the maximum `y[i]` for each `X` based on the tree policy. The `predict_value` method returns the conditional mean value of all coordinates, conditional on `X`, for the leaf that `X` falls in. These classes can be used as building blocks for other functionalities, such as the `SingleTreePolicyInterpreter` or the `DRPolicyTree` or `DRPolicyForest`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"id\": \"narrow-dutch\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = np.random.normal(size=(1000, 10))\\n\",\n    \"y = np.hstack([X[:, [0]] > 0, X[:, [0]] < 0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"id\": \"included-payday\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = PolicyTree(min_impurity_decrease=.001, honest=True).fit(X, y)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"id\": \"reserved-lover\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"id\": \"accepted-collar\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"est.plot(treatment_names=['A', 'B'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"id\": \"chemical-coverage\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = PolicyForest(honest=True).fit(X, y)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"id\": \"compatible-audience\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"id\": \"premium-screening\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('Policy')\\n\",\n    \"plt.scatter(X[:, 0], est.predict(X))\\n\",\n    \"plt.scatter(X[:, 0], est.predict_proba(X)[:, 1])\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('Conditional Values')\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 0])\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 1])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"id\": \"cultural-harbor\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"est[0].plot(max_depth=2)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"revolutionary-germany\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Using Them for CATE Policy Interpretation\\n\",\n    \"\\n\",\n    \"We can use the `PolicyTree` to interpret a CATE model, in terms of actionable insights. This functionality is wrapped in the `SingleTreePolicyInterpreter` class.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"id\": \"hazardous-shelf\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = np.random.normal(size=(1000, 10))\\n\",\n    \"T = np.random.binomial(2, .5, size=(1000,))\\n\",\n    \"y = (X[:, 0]) * (T==1) + (-X[:, 0]) * (T==2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"id\": \"affected-static\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = LinearDML(discrete_treatment=True).fit(y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"id\": \"suspended-person\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreePolicyInterpreter at 0x1adb89db3c8>\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(include_model_uncertainty=True, max_depth=2, min_impurity_decrease=.001)\\n\",\n    \"intrp.interpret(est, X, sample_treatment_costs=.2 * np.ones((X.shape[0], 2)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"id\": \"first-drunk\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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nOXPX5Njr6L1bsUb+OB4vG5eC4BDK5huBd5J5i14yckKvBP+CP/f9XitTJvxuj9dUcPt/gjv/pHJeBdYeuGNhlYjVcVV3XeAc+57vNHwHsIbiOIzyrfu1SSGmr53VX3v/hVvEI4svBPw18vMez9wm7/8G+oQ4xt4A9hM9D8Xv+J9J9TEx3gtNWvNbCOU1EyqrvWmrNPxBpbIAP4GjHbObb/4cpCZZYdNewPexZsFeO/rMXgX2MAbtfI4vMQ403bUbTrI39b1ZX6DATY65/IqiesKvO+F9Xjv4+XOudl+XF39ZXfdPrGZDcPrEVFqSHTnXG6Z9WYD+du30Z83Dq8Hi7r4SaO1fVQoEQnjX5F9wjlX6xMFM7sT7+bds+s9sKrX+xzelcjbajFPnbdTpLEzs+fxBjqo8WdCJAhmNg8vUXzDOXdeddMLmNkdwHV4rakJ/kVHkQanlikRvPu3zOwYv7tPJ7wr2eW6ODRW5hU+PgWv9aOq6Zr0doqINEfOub7+PWFKpGrIOfdX/x7POCVSEiQlUyIew+s2koHX/e03vGLCjZ6Z3Y3XBeUB59yS6ianiW6niIiISGOjbn4iIiIiIiJ1oJYpERERERGROlAyJSIiIiIiUgdKpkREREREROpAyZSIiIiIiEgdKJkSERERERGpAyVTIiIiIiIidaBkSkREREREpA6UTImIiIiIiNSBkikREREREZE6UDIlIiIiIiJSB0qmRERERERE6kDJlIiIiIiISB0omRIREREREakDJVMiIiIiIiJ1oGRKRERERESkDpRMiYiIiIiI1IGSKRERERERkTpQMiUiIiIiIlIHSqZERERERETqQMmUiIiIiIhIHSiZEhERERERqQMlUyIiIiIiInWgZEpERERERKQOlEyJiIiIiIjUgZIpERERERGROlAyJSIiIiIiUgdKpkREREREROpAyZSIiIiIiEgdKJkSERERERGpAyVTIiIiIiIidaBkSkREREREpA6UTImIiIiIiNSBkikREREREZE6UDIlIiIiIiJSB0qmRERERERE6kDJlIiIiIiISB0omRIREREREakDJVMiIiIiIiJ1oGRKRERERESkDpRMiYiIiIiI1IGSKRERERERkTpQMiUiIiIiIlIHSqZERERERETqQMmUiIiIiIhIHSiZEhERERERqYOooAMQEZHgmVkssDu6yFZT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\",\n      \"text/plain\": [\n       \"<Figure size 1080x576 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 8))\\n\",\n    \"intrp.plot(treatment_names=['None', 'A', 'B'])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"generous-internship\",\n   \"metadata\": {},\n   \"source\": [\n    \"# StandAlone Policy Learning\\n\",\n    \"\\n\",\n    \"We can also learn optimal policies directly from data without the need to train a CATE model first. This is achieved by our `DRPolicyTree` and `DRPolicyForest`, which trains a `PolicyTree` and `PolicyForest` correspondingly, on the doubly robust counterfactual outcome targets. This is the policy learning analogue of the `DRLearner`, but rather than now trying to learn a good model of the treatment effect heterogeneity, we are learning a good treatment policy directly.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"id\": \"superior-pocket\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = np.random.normal(size=(4000, 10))\\n\",\n    \"T = np.random.binomial(2, .5, size=(4000,))\\n\",\n    \"y = (X[:, 0]) * (T==1) + (-X[:, 0]) * (T==2) + np.random.normal(0, 2, size=(4000,))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"id\": \"educational-preference\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"T = pd.DataFrame(T, columns=['A'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"id\": \"floral-packing\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"est = DRPolicyTree(max_depth=2, min_impurity_decrease=0.01, honest=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"id\": \"chicken-consultancy\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.policy._drlearner.DRPolicyTree at 0x1adb89d2630>\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.fit(y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"id\": \"sunrise-africa\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"PolicyTree(max_depth=2, max_features='auto', min_impurity_decrease=0.01)\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.policy_model_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"id\": \"commercial-lodge\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 720x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10,5))\\n\",\n    \"est.plot(feature_names=['a'+str(i) for i in range(10)])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"id\": \"level-outside\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1., 0., 0., 0., 0., 0., 0., 0., 0., 0.])\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"id\": \"immediate-environment\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('Policy')\\n\",\n    \"plt.scatter(X[:, 0], est.predict(X))\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('Conditional Values')\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 0])\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 1])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"id\": \"monthly-milton\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.policy._drlearner.DRPolicyForest at 0x1adb843d358>\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = DRPolicyForest(n_estimators=1000,\\n\",\n    \"                     max_depth=2,\\n\",\n    \"                     min_samples_leaf=50,\\n\",\n    \"                     max_samples=.8,\\n\",\n    \"                     honest=True,\\n\",\n    \"                     min_impurity_decrease=0.01,\\n\",\n    \"                     random_state=123)\\n\",\n    \"est.fit(y, T, X=X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"id\": \"proper-strand\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([ 9.99822982e-01, -9.69839399e-19,  2.32900716e-18,  1.13384495e-20,\\n\",\n       \"        3.81744321e-06,  6.77744462e-05, -1.00826898e-18,  5.86452468e-05,\\n\",\n       \"       -3.68359212e-18,  4.67812812e-05])\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.feature_importances_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"id\": \"commercial-quantum\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"PolicyForest(max_depth=2, max_samples=0.8, min_impurity_decrease=0.01,\\n\",\n       \"             min_samples_leaf=50, random_state=123)\"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.policy_model_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"id\": \"regulation-breakdown\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.title('Policy')\\n\",\n    \"plt.scatter(X[:, 0], est.predict(X))\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.title('Conditional Values')\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 0])\\n\",\n    \"plt.scatter(X[:, 0], est.predict_value(X)[:, 1])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"postal-industry\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.11.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "notebooks/Scaling EconML using Ray.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"99b19cd3-a348-4194-9bd0-dd0830b5268c\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Scaling EconML Using Ray \\n\",\n    \"[Ray](https://docs.ray.io/en/latest/index.html) is an open-source distributed computing framework that allows you to easily parallelize and scale your Python applications. It's designed to make it simple to write efficient, high-performance, and scalable code for various workloads, including machine learning, deep learning, data processing, and more. Ray provides a range of tools and libraries to manage distributed computing tasks, making it easier to utilize resources efficiently and speed up the execution of your code.\\n\",\n    \"\\n\",\n    \"Our library calculates the nuisance estimators using cross-fitting for robustness. By default, the cross-fit operation is computed sequentially, which is suitable for smaller datasets. However, when dealing with large datasets, sequential computation may not be efficient and can take a long time. To address this challenge of scaling Ortholearners with large datasets or increasing Folds for cross-validation, our Package seamlessly integrates with the Ray library. This integration allows for parallelization of the cross-fit operations by utilizing Ray remote functions, known as Ray tasks. With this approach, each of the K folds can be invoked remotely and asynchronously on separate Python workers.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<div>\\n\",\n    \"    <img src=\\\"images/seq_cv.png\\\" style=\\\"width: 500px; height: 250px; display: block; border: 1px solid black; margin-bottom: 20px;\\\">\\n\",\n    \"</div>\\n\",\n    \"\\n\",\n    \"<div>\\n\",\n    \"    <img src=\\\"images/ray_parellel_cv.png\\\" style=\\\"width: 500; height: 250px; display: block; border: 1px solid black;\\\">\\n\",\n    \"</div>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"dbd587cb-7b6c-4882-9063-5013e8cb85cb\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"## Imports\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"id\": \"01b70101-d4ad-40fc-baa6-565795ee897a\",\n   \"metadata\": {\n    \"ExecuteTime\": {\n     \"end_time\": \"2023-08-16T18:32:09.629351Z\",\n     \"start_time\": \"2023-08-16T18:32:09.627091Z\"\n    },\n    \"tags\": []\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import ray\\n\",\n    \"import numpy as np\\n\",\n    \"import scipy\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n    \"import warnings\\n\",\n    \"warnings.filterwarnings(\\\"ignore\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"b50eba2d-c42c-4cdb-8ba4-ca5116f15064\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"## Ray Setup\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"id\": \"8fd7865a-5542-4b95-8428-96a54f158ba2\",\n   \"metadata\": {\n    \"ExecuteTime\": {\n     \"end_time\": \"2023-08-16T18:32:22.645930Z\",\n     \"start_time\": \"2023-08-16T18:32:13.437840Z\"\n    }\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"2023-08-17 00:02:20,082\\tINFO worker.py:1621 -- Started a local Ray instance.\\n\",\n      \"2023-08-17 00:02:20,284\\tINFO packaging.py:518 -- Creating a file package for local directory '/Users/vishal.verma/Projects/poc/personal/EconML-Ray/notebooks'.\\n\",\n      \"2023-08-17 00:02:20,359\\tINFO packaging.py:346 -- Pushing file package 'gcs://_ray_pkg_0eadd018dd5d6e1e.zip' (8.52MiB) to Ray cluster...\\n\",\n      \"2023-08-17 00:02:20,383\\tINFO packaging.py:359 -- Successfully pushed file package 'gcs://_ray_pkg_0eadd018dd5d6e1e.zip'.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"application/vnd.jupyter.widget-view+json\": {\n       \"model_id\": \"7b14e01c1e6f4b5e83d6ef95ab12369d\",\n       \"version_major\": 2,\n       \"version_minor\": 0\n      },\n      \"text/html\": [\n       \"<div class=\\\"lm-Widget p-Widget lm-Panel p-Panel jp-Cell-outputWrapper\\\">\\n\",\n       \"    <div style=\\\"margin-left: 50px;display: flex;flex-direction: row;align-items: center\\\">\\n\",\n       \"        <div class=\\\"jp-RenderedHTMLCommon\\\" style=\\\"display: flex; flex-direction: row;\\\">\\n\",\n       \"  <svg viewBox=\\\"0 0 567 224\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" style=\\\"height: 3em;\\\">\\n\",\n       \"    <g clip-path=\\\"url(#clip0_4338_178347)\\\">\\n\",\n       \"        <path d=\\\"M341.29 165.561H355.29L330.13 129.051C345.63 123.991 354.21 112.051 354.21 94.2307C354.21 71.3707 338.72 58.1807 311.88 58.1807H271V165.561H283.27V131.661H311.8C314.25 131.661 316.71 131.501 319.01 131.351L341.25 165.561H341.29ZM283.29 119.851V70.0007H311.82C331.3 70.0007 342.34 78.2907 342.34 94.5507C342.34 111.271 331.34 119.861 311.82 119.861L283.29 119.851ZM451.4 138.411L463.4 165.561H476.74L428.74 58.1807H416L367.83 165.561H380.83L392.83 138.411H451.4ZM446.19 126.601H398L422 72.1407L446.24 126.601H446.19ZM526.11 128.741L566.91 58.1807H554.35L519.99 114.181L485.17 58.1807H472.44L514.01 129.181V165.541H526.13V128.741H526.11Z\\\" fill=\\\"var(--jp-ui-font-color0)\\\"/>\\n\",\n       \"        <path d=\\\"M82.35 104.44C84.0187 97.8827 87.8248 92.0678 93.1671 87.9146C98.5094 83.7614 105.083 81.5067 111.85 81.5067C118.617 81.5067 125.191 83.7614 130.533 87.9146C135.875 92.0678 139.681 97.8827 141.35 104.44H163.75C164.476 101.562 165.622 98.8057 167.15 96.2605L127.45 56.5605C121.071 60.3522 113.526 61.6823 106.235 60.3005C98.9443 58.9187 92.4094 54.9203 87.8602 49.0574C83.3109 43.1946 81.0609 35.8714 81.5332 28.4656C82.0056 21.0599 85.1679 14.0819 90.4252 8.8446C95.6824 3.60726 102.672 0.471508 110.08 0.0272655C117.487 -0.416977 124.802 1.86091 130.647 6.4324C136.493 11.0039 140.467 17.5539 141.821 24.8501C143.175 32.1463 141.816 39.6859 138 46.0505L177.69 85.7505C182.31 82.9877 187.58 81.4995 192.962 81.4375C198.345 81.3755 203.648 82.742 208.33 85.3976C213.012 88.0532 216.907 91.9029 219.616 96.5544C222.326 101.206 223.753 106.492 223.753 111.875C223.753 117.258 222.326 122.545 219.616 127.197C216.907 131.848 213.012 135.698 208.33 138.353C203.648 141.009 198.345 142.375 192.962 142.313C187.58 142.251 182.31 140.763 177.69 138L138 177.7C141.808 184.071 143.155 191.614 141.79 198.91C140.424 206.205 136.44 212.75 130.585 217.313C124.731 221.875 117.412 224.141 110.004 223.683C102.596 223.226 95.6103 220.077 90.3621 214.828C85.1139 209.58 81.9647 202.595 81.5072 195.187C81.0497 187.779 83.3154 180.459 87.878 174.605C92.4405 168.751 98.9853 164.766 106.281 163.401C113.576 162.035 121.119 163.383 127.49 167.19L167.19 127.49C165.664 124.941 164.518 122.182 163.79 119.3H141.39C139.721 125.858 135.915 131.673 130.573 135.826C125.231 139.98 118.657 142.234 111.89 142.234C105.123 142.234 98.5494 139.98 93.2071 135.826C87.8648 131.673 84.0587 125.858 82.39 119.3H60C58.1878 126.495 53.8086 132.78 47.6863 136.971C41.5641 141.163 34.1211 142.972 26.7579 142.059C19.3947 141.146 12.6191 137.574 7.70605 132.014C2.79302 126.454 0.0813599 119.29 0.0813599 111.87C0.0813599 104.451 2.79302 97.2871 7.70605 91.7272C12.6191 86.1673 19.3947 82.5947 26.7579 81.6817C34.1211 80.7686 41.5641 82.5781 47.6863 86.7696C53.8086 90.9611 58.1878 97.2456 60 104.44H82.35ZM100.86 204.32C103.407 206.868 106.759 208.453 110.345 208.806C113.93 209.159 117.527 208.258 120.522 206.256C123.517 204.254 125.725 201.276 126.771 197.828C127.816 194.38 127.633 190.677 126.253 187.349C124.874 184.021 122.383 181.274 119.205 179.577C116.027 177.88 112.359 177.337 108.826 178.042C105.293 178.746 102.113 180.654 99.8291 183.44C97.5451 186.226 96.2979 189.718 96.3 193.32C96.2985 195.364 96.7006 197.388 97.4831 199.275C98.2656 201.163 99.4132 202.877 100.86 204.32ZM204.32 122.88C206.868 120.333 208.453 116.981 208.806 113.396C209.159 109.811 208.258 106.214 206.256 103.219C204.254 100.223 201.275 98.0151 197.827 96.97C194.38 95.9249 190.676 96.1077 187.348 97.4873C184.02 98.8669 181.274 101.358 179.577 104.536C177.879 107.714 177.337 111.382 178.041 114.915C178.746 118.448 180.653 121.627 183.439 123.911C186.226 126.195 189.717 127.443 193.32 127.44C195.364 127.443 197.388 127.042 199.275 126.259C201.163 125.476 202.878 124.328 204.32 122.88ZM122.88 19.4205C120.333 16.8729 116.981 15.2876 113.395 14.9347C109.81 14.5817 106.213 15.483 103.218 17.4849C100.223 19.4868 98.0146 22.4654 96.9696 25.9131C95.9245 29.3608 96.1073 33.0642 97.4869 36.3922C98.8665 39.7202 101.358 42.4668 104.535 44.1639C107.713 45.861 111.381 46.4036 114.914 45.6992C118.447 44.9949 121.627 43.0871 123.911 40.301C126.195 37.515 127.442 34.0231 127.44 30.4205C127.44 28.3772 127.038 26.3539 126.255 24.4664C125.473 22.5788 124.326 20.8642 122.88 19.4205ZM19.42 100.86C16.8725 103.408 15.2872 106.76 14.9342 110.345C14.5813 113.93 15.4826 117.527 17.4844 120.522C19.4863 123.518 22.4649 125.726 25.9127 126.771C29.3604 127.816 33.0638 127.633 36.3918 126.254C39.7198 124.874 42.4664 122.383 44.1635 119.205C45.8606 116.027 46.4032 112.359 45.6988 108.826C44.9944 105.293 43.0866 102.114 40.3006 99.8296C37.5145 97.5455 34.0227 96.2983 30.42 96.3005C26.2938 96.3018 22.337 97.9421 19.42 100.86ZM100.86 100.86C98.3125 103.408 96.7272 106.76 96.3742 110.345C96.0213 113.93 96.9226 117.527 98.9244 120.522C100.926 123.518 103.905 125.726 107.353 126.771C110.8 127.816 114.504 127.633 117.832 126.254C121.16 124.874 123.906 122.383 125.604 119.205C127.301 116.027 127.843 112.359 127.139 108.826C126.434 105.293 124.527 102.114 121.741 99.8296C118.955 97.5455 115.463 96.2983 111.86 96.3005C109.817 96.299 107.793 96.701 105.905 97.4835C104.018 98.2661 102.303 99.4136 100.86 100.86Z\\\" fill=\\\"#00AEEF\\\"/>\\n\",\n       \"    </g>\\n\",\n       \"    <defs>\\n\",\n       \"        <clipPath id=\\\"clip0_4338_178347\\\">\\n\",\n       \"            <rect width=\\\"566.93\\\" height=\\\"223.75\\\" fill=\\\"white\\\"/>\\n\",\n       \"        </clipPath>\\n\",\n       \"    </defs>\\n\",\n       \"  </svg>\\n\",\n       \"</div>\\n\",\n       \"\\n\",\n       \"        <table class=\\\"jp-RenderedHTMLCommon\\\" style=\\\"border-collapse: collapse;color: var(--jp-ui-font-color1);font-size: var(--jp-ui-font-size1);\\\">\\n\",\n       \"    <tr>\\n\",\n       \"        <td style=\\\"text-align: left\\\"><b>Python version:</b></td>\\n\",\n       \"        <td style=\\\"text-align: left\\\"><b>3.9.12</b></td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"        <td style=\\\"text-align: left\\\"><b>Ray version:</b></td>\\n\",\n       \"        <td style=\\\"text-align: left\\\"><b>2.6.2</b></td>\\n\",\n       \"    </tr>\\n\",\n       \"    \\n\",\n       \"</table>\\n\",\n       \"\\n\",\n       \"    </div>\\n\",\n       \"</div>\\n\"\n      ],\n      \"text/plain\": [\n       \"RayContext(dashboard_url='', python_version='3.9.12', ray_version='2.6.2', ray_commit='92ad4bab9e93c7a207a44c65ab51295f92566cb4', protocol_version=None)\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Initialize Ray\\n\",\n    \"ray.init()\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"cc26ab23-65a6-4a0f-ac3c-440ac1456a32\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Synthetic Data\\n\",\n    \"To demonstrate scaling using ray we will generate a synthetic dataset\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"id\": \"12402243-a5ee-45f9-863f-2c48a2f42690\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(123)\\n\",\n    \"n = 5000\\n\",\n    \"X = np.random.normal(size=(n, 5))\\n\",\n    \"T = np.random.binomial(1, scipy.special.expit(X[:, 0]))\\n\",\n    \"y = (1 + .5*X[:, 0]) * T + X[:, 0] + np.random.normal(size=(n,))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"0715b81d-cf01-4dac-b540-1bd9be925e7f\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Using the SDK\\n\",\n    \"In the econml package, function `_crossfit`  is implemented in the `_OrthoLearner` class, and any estimator having baseclass as `_OrthoLearner` has option to use the parallel computation using Ray which can be used in following way .\\n\",\n    \"\\n\",\n    \"1. Set the flag use_ray to True:\\n\",\n    \"    * All the estimators having base class as `_OrthoLearner` takes an argument `use_ray` , which is set to `False` by default and can be set to `True` in order to leverage the Ray's parallel processing\\n\",\n    \"2. Pass Ray Remote function options:\\n\",\n    \"    * To optimize the performance of the Ray Remote task , argument `ray_remote_func_options` which taked input in form of dict (default {}) , can be passed to esitmator. (https://docs.ray.io/en/latest/ray-core/api/doc/ray.remote.html)\\n\",\n    \"\\n\",\n    \"    \\n\",\n    \"We will be using DML estimator for our demonstration in this notebook\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"id\": \"ea04b68d-1911-48c7-9367-2d899f699347\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([0.45315363, 1.6549579 , 0.91669949, ..., 1.16562133, 0.16146495,\\n\",\n       \"       0.95911527])\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"\\n\",\n    \"ray_opts = {'num_cpus':2,'scheduling_strategy':'SPREAD'}\\n\",\n    \"\\n\",\n    \"est = LinearDML(\\n\",\n    \"    model_y=RandomForestRegressor(random_state=0),\\n\",\n    \"    model_t=RandomForestClassifier(random_state=0),\\n\",\n    \"    discrete_treatment=True,\\n\",\n    \"    use_ray=True, #setting use_ray flag to True to use ray.\\n\",\n    \"    ray_remote_func_options=ray_opts,\\n\",\n    \"    cv=2, #Determines the cross-validation splitting strategy\\n\",\n    \"    mc_iters=2 # The number of times to rerun the first stage models to reduce the variance of the nuisances.\\n\",\n    \"               # Note: When use_ray=True will also parallelize the iteration depending upon the ray cluster config.\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"est.fit(y, T, X=X, W=None)\\n\",\n    \"est.effect(X)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"af19a53f-9836-4b03-871f-b0ce5fac9815\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"## Performance Comparison \\n\",\n    \"We will compare the runtime of DML esitmator varying with different values of CV , to see the how using ray can significantly speed up the results.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"id\": \"43960663-e24b-4704-8b34-b9802888ecc2\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import time\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def compare_runtime(cv_values, use_ray=True):\\n\",\n    \"    runtimes = []\\n\",\n    \"    for cv in cv_values:\\n\",\n    \"        ray_opts = {'num_cpus': 2, 'scheduling_strategy': 'SPREAD'} if use_ray else None\\n\",\n    \"        est = LinearDML(model_y=RandomForestRegressor(random_state=0),\\n\",\n    \"                        model_t=RandomForestClassifier(random_state=0),\\n\",\n    \"                        discrete_treatment=True,\\n\",\n    \"                        use_ray=use_ray,\\n\",\n    \"                        ray_remote_func_options=ray_opts,\\n\",\n    \"                        cv=cv,\\n\",\n    \"                        mc_iters=1)\\n\",\n    \"\\n\",\n    \"        start_time = time.time()\\n\",\n    \"        est.fit(y, T, X=X, W=None)\\n\",\n    \"        runtime = time.time() - start_time\\n\",\n    \"        runtimes.append(runtime)\\n\",\n    \"    return runtimes\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"id\": \"42bc7de3-a7af-4112-afa0-707ee1fb3759\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"cv_values = [2,4, 8, 10]\\n\",\n    \"runtime_ray = compare_runtime(cv_values, use_ray=True)\\n\",\n    \"runtime_without_ray = compare_runtime(cv_values, use_ray=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"id\": \"83b03341-7645-41eb-ad5e-066692c0a877\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABM0AAAHWCAYAAABkA34HAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAACQ1UlEQVR4nOzdeXxU5dn/8e9kkpnsCQlZ2AIBAgkBFVERUVEEEVlFwbXi9lBbxUfRWunPXYta6/a0LrUqtFjrDrKoiAiiiBZxKRJ2giBLwpadTJKZ8/vjTObMJCxJSJgsn/frxQty7smZa5Kw5Mt13bfNMAxDAAAAAAAAAHxCgl0AAAAAAAAA0NwQmgEAAAAAAAA1EJoBAAAAAAAANRCaAQAAAAAAADUQmgEAAAAAAAA1EJoBAAAAAAAANRCaAQAAAAAAADUQmgEAAAAAAAA1EJoBAAAAAAAANRCaAQDQAtlsNj344IPBLgN+li1bJpvNpmXLlgW7lMMqKSnRTTfdpNTUVNlsNt1+++3BLqmWw31dr1q1SmeddZaioqJks9n0ww8/SJI+/vhjnXLKKQoPD5fNZlNBQcEJrxembt266brrrgt2GQAANDpCMwAAjmDWrFmy2Wy+H6GhoerUqZOuu+467dy5s8mf/8MPP2xxwdiyZcs0YcIEpaamyuFwKDk5WWPGjNH7778f7NLavBkzZmjWrFn6zW9+o9mzZ+tXv/pVkz5ft27dfL93QkJCFB8fr379+mnKlCn65ptv6nSPyspKTZw4UQcOHNAzzzyj2bNnq2vXrtq/f78mTZqkiIgIPf/885o9e7aioqKa9PU01K5du/Tggw/6wr5gevrpp2Wz2fTpp58e8TF///vfZbPZNG/evBNYGQAAzZPNMAwj2EUAANAczZo1S9dff70efvhhpaenq7y8XF9//bVmzZqlbt266aefflJ4eHiTPf+tt96q559/Xof7q7q8vFyhoaEKDQ1tsuevrwceeEAPP/ywMjIydOWVV/rCjQ8//FDLli3Tv/71L1111VXBLrPJeDweVVRUyOFwKCSk+f2/5JlnnqnQ0FB9+eWXJ+T5unXrpnbt2unOO++UJBUXF2vdunV65513tGfPHt1xxx16+umnA96n5tf1+vXrlZWVpb///e+66aabfI/7+OOPNXLkSC1evFjDhg07Ia+nob799ludfvrpmjlzZtC7sXbt2qUuXbpo8uTJeu211w77mPPPP19r1qzR7t27FRYWVqf7duvWTeedd55mzZrViNUCABB8zedf2gAANFMjR47UaaedJkm66aab1L59ez3xxBOaN2+eJk2aFJSamjKsa4h3331XDz/8sC677DK98cYbAd9s/+53v9OiRYtUWVkZxAqbTnl5uS8oa26fF3/5+fnq06dPo92vqqpKHo9HDofjiI/p1KmTrrnmmoBrTzzxhK666io988wzysjI0G9+8xvfWs2PX35+viQpPj6+TtePR2lpabPtVmssHTt21Pnnn6/3339fL774opxOZ8D6zp07tXz5ck2ZMqXOgRkAAK1Z8/tvUAAAmrlzzjlHkrRlyxbftfPOO0/nnXdercded9116tatm+/tbdu2yWaz6c9//rNefvll9ejRQ06nU6effrpWrVoV8H7PP/+8JAWMiFaruffTgw8+KJvNpo0bN+qaa65RXFyckpKSdN9998kwDO3YsUPjxo1TbGysUlNT9dRTT9Wq1eVy6YEHHlDPnj3ldDrVpUsX3X333XK5XMf8mNx3331KSEjQa6+9dthvtkeMGKHRo0f73s7Pz9eNN96olJQUhYeH6+STT9Y//vGPgPfx/1g9//zz6t69uyIjI3XhhRdqx44dMgxDjzzyiDp37qyIiAiNGzdOBw4cCLhHt27dNHr0aH3yySe+/a/69OlTa1z0wIEDuuuuu9SvXz9FR0crNjZWI0eO1I8//hjwuOp9y958803de++96tSpkyIjI1VUVHTYPc02bdqkSy+9VKmpqQoPD1fnzp11xRVXqLCw0PeYqqoqPfLII76vhW7duukPf/hDrY979Wv58ssvdcYZZyg8PFzdu3fXP//5z6N+bqrrys3N1cKFC31fS9u2bWvQ5+LZZ5/11ZqTk3PU5z6ciIgIzZ49WwkJCfrjH/8Y0Enp/3V93XXXaciQIZKkiRMnymaz+X6fTZ48WZJ0+umny2azBXRwffPNN7rooosUFxenyMhIDRkyRCtWrAioofr3S05Ojq666iq1a9dOZ599tm/99ddf14ABAxQREaGEhARdccUV2rFjR8A9zjvvPPXt21c5OTk6//zzFRkZqU6dOulPf/pTwMf+9NNPlyRdf/31vo/9sTqydu7cqRtvvFEdO3aU0+lUenq6fvOb36iiokLffvutbDZbrc+RJC1atEg2m00LFiw44r2vueYaFRYWauHChbXW3nzzTXk8Hl199dWSpD//+c8666yzlJiYqIiICA0YMEDvvvvuUWuXrI9vTdUj79Vfe9U++ugjnXPOOYqKilJMTIxGjRqltWvXBjxmz549uv7669W5c2c5nU516NBB48aNq3UvAAAaE51mAADUU/U3ae3atWvwPd544w0VFxfr17/+tWw2m/70pz9pwoQJ2rp1q8LCwvTrX/9au3bt0uLFizV79uw63/fyyy9XVlaWHn/8cS1cuFCPPvqoEhIS9Le//U1Dhw7VE088oX/961+66667dPrpp+vcc8+VZI4Wjh07Vl9++aWmTJmirKwsrVmzRs8884w2btyouXPnHvE5N23apPXr1+uGG25QTEzMMWs8dOiQzjvvPG3evFm33nqr0tPT9c477+i6665TQUGB/vd//zfg8f/6179UUVGhqVOn6sCBA/rTn/6kSZMmaejQoVq2bJl+//vfa/PmzfrLX/6iu+66q9bY2aZNm3T55Zfr5ptv1uTJkzVz5kxNnDhRH3/8sYYPHy5J2rp1q+bOnauJEycqPT1deXl5+tvf/qYhQ4YoJydHHTt2DLjnI488IofDobvuuksul+uw3VYVFRUaMWKEXC6Xpk6dqtTUVO3cuVMLFixQQUGB4uLiJJndi//4xz902WWX6c4779Q333yjxx57TOvWrdOcOXMC7rl582ZddtlluvHGG30jdtddd50GDBig7Ozsw368s7KyNHv2bN1xxx3q3Lmzb1wyKSmp3p+LmTNnqry8XFOmTJHT6VRCQsKxPt2HFR0drUsuuUSvvvqqcnJyDlv7r3/9a3Xq1EkzZszQbbfdptNPP10pKSmSpN69e+vll1/2jU736NFDkvTZZ59p5MiRGjBggB544AGFhIRo5syZGjp0qL744gudccYZAc8xceJEZWRkaMaMGb7w7o9//KPuu+8+TZo0STfddJP27t2rv/zlLzr33HP1/fffB3S3HTx4UBdddJEmTJigSZMm6d1339Xvf/979evXTyNHjlRWVpYefvhh3X///ZoyZYovcD/rrLOO+LHZtWuXzjjjDBUUFGjKlCnKzMzUzp079e6776qsrEynnXaaunfvrrffftsXHlZ766231K5dO40YMeKI958wYYJ+85vf6I033tCECRMC1t544w117dpVgwcP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QSEhIbr99ttrdSdJOmaXWbWnnnpK1113nT744AN98sknuu222/TYY4/p66+/DuhUrGsI0VRfN3VV19ddFz/99JMk1QoMG6r68/Tkk0/qlFNOOexjqn+/Vqv5ejwej2w2mz766KPDfqxrvn8wPx+XX365/vjHP2rfvn2KiYnRvHnzdOWVVwZ0Xx5JWFiYJk2apL///e/Ky8vT9u3btWnTpoBDDL744guNHTtW5557rl544QV16NBBYWFhmjlzpq8r7UiO9PVc88/D6s/Z7NmzDxt++b+W22+/XWPGjNHcuXO1aNEi3XfffXrsscf02WefqX///sd8zQAANAShGQAA9WC32/XYY4/p/PPP11//+lfdc889kszuksONZNXs1KmPxurmqIsePXroxx9/1AUXXFDv5+3Vq5d69+6tDz74QM8991ytYKGmrl276r///a88Hk9Ah9P69et9641p8+bNMgwj4HVt3LhRknwbiL/77rs6//zz9eqrrwa8b0FBQa0uvfrq16+f+vXrp3vvvVdfffWVBg8erJdeekmPPvqounbtKo/Ho02bNvm6uyQpLy9PBQUFjf6xqOlEfy6qlZSUaM6cOerSpUvA6z4e1YcBxMbGatiwYQ2+h2EYSk9P93UjHq/6/H5KSkpSbGysL1A8mssvv1wPPfSQ3nvvPaWkpKioqEhXXHFFnZ/r6quv1ksvvaS33npLubm5stlsAWO67733nsLDw7Vo0aKAztqZM2ce897V3XwFBQUBByfU/POw+nOWnJxcp89Zjx49dOedd+rOO+/Upk2bdMopp+ipp57S66+/fsz3BQCgIdjTDACAejrvvPN0xhln6Nlnn1V5ebkk85u59evXa+/evb7H/fjjj1qxYkWDnycqKkqS+Y1nU5s0aZJ27typv//977XWDh06pNLS0qO+/0MPPaT9+/frpptuUlVVVa31Tz75RAsWLJAkXXzxxdqzZ4/eeust33pVVZX+8pe/KDo6WkOGDDnOVxNo165dAadQFhUV6Z///KdOOeUUX3eL3W6v1R30zjvv1NofrT6KiopqfSz69eunkJAQ36jbxRdfLEl69tlnAx5X3fHXWCcUHsmJ/lxI5tfTr371Kx04cED/7//9v0YLhwcMGKAePXroz3/+s2/005//780jmTBhgux2ux566KFaXw+GYQSMNNdVfX4fh4SEaPz48Zo/f76+/fbbWuv+NWVlZalfv35666239NZbb6lDhw6+03DrYvDgwerWrZtef/11vfXWWxoyZEhA96PdbpfNZgvoDtu2bdtRT9KtVh2GLV++3HettLRU//jHPwIeN2LECMXGxmrGjBmqrKysdZ/qz1lZWZnvz1r/54iJiQkYGwUAoLHRaQYAQAP87ne/08SJEzVr1izdfPPNuuGGG/T0009rxIgRuvHGG5Wfn6+XXnpJ2dnZvo3y62vAgAGSpNtuu00jRoyQ3W6vVydJffzqV7/S22+/rZtvvllLly7V4MGD5Xa7tX79er399ttatGjRYTcmr3b55ZdrzZo1+uMf/6jvv/9eV155pbp27ar9+/fr448/1pIlS3wjXVOmTNHf/vY3XXfddVq9erW6deumd999VytWrNCzzz7baHtcVevVq5duvPFGrVq1SikpKXrttdeUl5cX0DEzevRoPfzww7r++ut11llnac2aNfrXv/6l7t27N/h5P/vsM916662aOHGievXqpaqqKs2ePVt2u12XXnqpJHNvqsmTJ+vll19WQUGBhgwZov/85z/6xz/+ofHjx+v8888/7td/NE39udi5c6evC6ikpEQ5OTl65513tGfPHt1555369a9/3RgvQ5IZOL3yyisaOXKksrOzdf3116tTp07auXOnli5dqtjYWM2fP/+o9+jRo4ceffRRTZ8+Xdu2bdP48eMVExOj3NxczZkzR1OmTNFdd91Vr7p69Oih+Ph4vfTSS4qJiVFUVJQGDhx4xP3hZsyYoU8++URDhgzRlClTlJWVpd27d+udd97Rl19+GdC5dfnll+v+++9XeHi4brzxxlp70x2NzWbTVVddpRkzZkiSHn744YD1UaNG6emnn9ZFF12kq666Svn5+Xr++efVs2fPY+7ZduGFFyotLU033nijfve738lut+u1115TUlKStm/f7ntcbGysXnzxRf3qV7/SqaeeqiuuuML3mIULF2rw4MH661//qo0bN+qCCy7QpEmT1KdPH4WGhmrOnDnKy8trsj8TAQCQdIRz7AEAgDFz5kxDkrFq1apaa2632+jRo4fRo0cPo6qqyjAMw3j99deN7t27Gw6HwzjllFOMRYsWGZMnTza6du3qe7/c3FxDkvHkk0/Wuqck44EHHvC9XVVVZUydOtVISkoybDab4f/Xds3HPvDAA4Yk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UlRUlAYOHKhly5bV6XlnzZql+Ph4zZs3T3369JHT6dT27du1atUqDR8+XO3bt1dcXJyGDBmi7777zvd+N9xwg0aPHh1wr8rKSiUnJ+vVV1+t8+uuKT4+Xqmpqb4fCQkJ2r9/v6688kp16tRJkZGR6tevn/79738f9T4vvPCCMjIyFB4erpSUFF122WW+NY/Ho8cee0zp6emKiIjQySefrHfffbfBNQMAAAAAWpDKcmn9Qum9m6Qne0pvXSOtfd8MzOLTpMH/K01ZJt32gzTsQanDSQRmrQidZv4qy6QZHYPz3H/YJTmijvs27733np555hm9+eabys7O1p49e/Tjjz/61m+99Vbl5OTozTffVMeOHTVnzhxddNFFWrNmjTIyjn1iR1lZmZ544gm98sorSkxMVHJysrZu3arJkyfrL3/5iwzD0FNPPaWLL75YmzZtUkxMjG666Sade+652r17tzp06CBJWrBggcrKynT55ZdLkmbMmKEZM2Yc9blzcnKUlpZ21MeUl5drwIAB+v3vf6/Y2FgtXLhQv/rVr9SjRw+dccYZtR7/7bff6rbbbtPs2bN11lln6cCBA/riiy9864899phef/11vfTSS8rIyNDy5ct1zTXXKCkpSUOGDDnmxwsAAAAA0MJUuaQtS81wbP2HUkWxtRbb2TzxMnuC1OlUArJWjtCsldm+fbtSU1M1bNgwhYWFKS0tzRcWbd++XTNnztT27dvVsaMZDt511136+OOPNXPmzGOGVpLZIfbCCy/o5JNP9l0bOnRowGNefvllxcfH6/PPP9fo0aN11llnqXfv3po9e7buvvtuSeZo5cSJExUdHS1JuvnmmzVp0qSjPnd1zdWuvPJK2e1239uvv/66xo8fr7vuust3berUqVq0aJHefvvtw4Zm27dvV1RUlEaPHq2YmBh17dpV/fv3l2R25c2YMUOffvqpBg0aJEnq3r27vvzyS/3tb38jNAMAAACA1qKqQtq6zNyjbP1CyVVorcV09I5eXiJ1GiAFaYsinHiEZv7CIs2Or2A9dyOYOHGinn32WXXv3l0XXXSRLr74Yo0ZM0ahoaFas2aN3G63evXqFfA+LpdLiYmJdbq/w+HQSSedFHAtLy9P9957r5YtW6b8/Hy53W6VlZVp+/btvsfcdNNNevnll3X33XcrLy9PH330kT777DPfekJCghIS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\",\n      \"text/plain\": [\n       \"<Figure size 1500x500 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.plot(cv_values, runtime_ray, label='use_ray=True')\\n\",\n    \"plt.plot(cv_values, runtime_without_ray, label='use_ray=False')\\n\",\n    \"plt.xlabel('cv')\\n\",\n    \"plt.ylabel('Runtime (seconds)')\\n\",\n    \"plt.title('Runtime Comparison for Different cv Values')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.11\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "notebooks/Solutions/Causal Interpretation for Ames Housing Price.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"# Causal Interpretation for Ames Housing Price\\n\",\n    \"\\n\",\n    \"This notebook uses the Ames Housing dataset to showcase how we can interpret a blackbox model from both the **correlation and causation** perspective by leveraging the power of model interpretation tools like [SHAP](https://shap.readthedocs.io/en/latest/index.html) and [EconML](https://aka.ms/econml). This housing dataset collects house prices and characteristics for homes sold in Ames, Iowa from the period of 2006 to 2010. We start with a linear regression to build intuition. We then train a fine-tuned predictive ML model and use SHAP to better understand the correlations between features and target and which features are the strongest predictors. Finally, we train a separate causal model using EconML, which identifies features that have a **direct causal effect** on housing price, instead of just predicting the housing price given a set of characteristics.\\n\",\n    \"\\n\",\n    \"Note: A previous version of this notebook used the Boston Housing dataset. Due to ethical concerns with the Boston Housing dataset, we have decided to redo the analysis on the similar Ames Housing dataset. More details can be found on the sklearn page for the [Boston Housing dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html).\\n\",\n    \"\\n\",\n    \"This notebook includes the following sections:\\n\",\n    \"1. [A Gentle Start: Linear Regression](#A-Gentle-Start:-Linear-Regression)\\n\",\n    \"2. [Train a Fine-tuned Predictive ML Model](#Train-a-Fine-tuned-Predictive-ML-Model)\\n\",\n    \"3. [Correlation Interpretation](#Correlation-Interpretation)\\n\",\n    \"    * Feature Importance -- Learn the top predictors for a given ML model\\n\",\n    \"4. [Causal Interpretation](#Causal-Interpretation)\\n\",\n    \"    * Direct Causal Effect -- Do certain house characteristics have a direct effect on home value?\\n\",\n    \"    * Segmentation -- How do different type of houses respond differently to having a fireplace?\\n\",\n    \"    * Policy Analysis -- What is the best policy considering cost?\\n\",\n    \"    * What If Analysis -- How does the overall housing price change if every home had a fireplace?\\n\",\n    \"    * Cohort Analysis -- What is the causal effect on a new dataset?\\n\",\n    \"    \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"from lightgbm import LGBMRegressor\\n\",\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import statsmodels.api as sm\\n\",\n    \"import shap\\n\",\n    \"\\n\",\n    \"%matplotlib inline\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# A Gentle Start: Linear Regression\\n\",\n    \"\\n\",\n    \"### Data Description\\n\",\n    \"\\n\",\n    \"The data contain features of Ames homes sold between 2006 and 2010 and was originally introduced by Dean De Cock. [Ames, Iowa: Alternative to the Boston Housing Data as an End of Semester Regression Project](http://jse.amstat.org/v19n3/decock.pdf), Journal of Statistics Education Volume 19, Number 3(2011)\\n\",\n    \"\\n\",\n    \"Below is a sample of the features and their descriptions:\\n\",\n    \"\\n\",\n    \"Feature Name|Description\\n\",\n    \":--- |:---\\n\",\n    \"**Neighborhood**|Physical locations within Ames city limits\\n\",\n    \"**BsmtFullBath**|Basement full bathrooms\\n\",\n    \"**Alley**|Type of alley access to property\\n\",\n    \"**BsmtFinType1**|Rating of basement finished area\\n\",\n    \"**Fence**|Fence quality\\n\",\n    \"**MiscFeature**|Miscellaneous feature not covered in other categories\\n\",\n    \"**RoofStyle**|Type of roof\\n\",\n    \"**GrLivArea**|Above grade (ground) living area square feet\\n\",\n    \"**SalePrice**|Sale price of home\\n\",\n    \"\\n\",\n    \"A more complete data dictionary can be found on the [OpenML page for the dataset](https://www.openml.org/d/42165).\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We start with a linear regression to learn the conditional correlation between each predictor and the outcome variable. The coefficients  tell us how the housing price will change with one unit increase of each feature (holding all other features constant), and the p-value tells us the variable significance.\\n\",\n    \"\\n\",\n    \"Under certain strong assumptions, the coefficients from linear regression can lead us to a causal interpretation too. But as we will see later in this notebook, techniques like DoubleML can allow us to use the predictive power of machine learning to do causal inference while also minimizing assumptions about the functional form of our data (e.g. additive separability).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.datasets import fetch_openml\\n\",\n    \"\\n\",\n    \"ames_housing = fetch_openml(name=\\\"house_prices\\\", as_frame = True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"(1460, 80)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"ames_df = ames_housing.data\\n\",\n    \"print(ames_df.shape)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Data processing\\n\",\n    \"\\n\",\n    \"Minor feature engineering via feature creation/removal, and outlier removal\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>MSSubClass</th>\\n\",\n       \"      <th>MSZoning</th>\\n\",\n       \"      <th>LotFrontage</th>\\n\",\n       \"      <th>Street</th>\\n\",\n       \"      <th>Alley</th>\\n\",\n       \"      <th>LotShape</th>\\n\",\n       \"      <th>LandContour</th>\\n\",\n       \"      <th>Utilities</th>\\n\",\n       \"      <th>LotConfig</th>\\n\",\n       \"      <th>LandSlope</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>SaleType</th>\\n\",\n       \"      <th>SaleCondition</th>\\n\",\n       \"      <th>SalePrice</th>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>YearsSinceRemodel</th>\\n\",\n       \"      <th>HasDeck</th>\\n\",\n       \"      <th>HasPorch</th>\\n\",\n       \"      <th>HasFireplace</th>\\n\",\n       \"      <th>HasFence</th>\\n\",\n       \"      <th>Intercept</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Id</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1.0</th>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>65.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>208500.0</td>\\n\",\n       \"      <td>5.0</td>\\n\",\n       \"      <td>5.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2.0</th>\\n\",\n       \"      <td>20.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>80.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>FR2</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>181500.0</td>\\n\",\n       \"      <td>31.0</td>\\n\",\n       \"      <td>31.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3.0</th>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>68.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>IR1</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>223500.0</td>\\n\",\n       \"      <td>7.0</td>\\n\",\n       \"      <td>6.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4.0</th>\\n\",\n       \"      <td>70.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>IR1</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Corner</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Abnorml</td>\\n\",\n       \"      <td>140000.0</td>\\n\",\n       \"      <td>91.0</td>\\n\",\n       \"      <td>36.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5.0</th>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>84.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>IR1</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>FR2</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>250000.0</td>\\n\",\n       \"      <td>8.0</td>\\n\",\n       \"      <td>8.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1456.0</th>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>62.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>175000.0</td>\\n\",\n       \"      <td>8.0</td>\\n\",\n       \"      <td>7.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1457.0</th>\\n\",\n       \"      <td>20.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>85.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>210000.0</td>\\n\",\n       \"      <td>32.0</td>\\n\",\n       \"      <td>22.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1458.0</th>\\n\",\n       \"      <td>70.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>66.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>266500.0</td>\\n\",\n       \"      <td>69.0</td>\\n\",\n       \"      <td>4.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1459.0</th>\\n\",\n       \"      <td>20.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>68.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>142125.0</td>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>14.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1460.0</th>\\n\",\n       \"      <td>20.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>75.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>Lvl</td>\\n\",\n       \"      <td>AllPub</td>\\n\",\n       \"      <td>Inside</td>\\n\",\n       \"      <td>Gtl</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>147500.0</td>\\n\",\n       \"      <td>43.0</td>\\n\",\n       \"      <td>43.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>1451 rows × 65 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"        MSSubClass MSZoning  LotFrontage Street Alley LotShape LandContour  \\\\\\n\",\n       \"Id                                                                           \\n\",\n       \"1.0           60.0       RL         65.0   Pave    NA      Reg         Lvl   \\n\",\n       \"2.0           20.0       RL         80.0   Pave    NA      Reg         Lvl   \\n\",\n       \"3.0           60.0       RL         68.0   Pave    NA      IR1         Lvl   \\n\",\n       \"4.0           70.0       RL         60.0   Pave    NA      IR1         Lvl   \\n\",\n       \"5.0           60.0       RL         84.0   Pave    NA      IR1         Lvl   \\n\",\n       \"...            ...      ...          ...    ...   ...      ...         ...   \\n\",\n       \"1456.0        60.0       RL         62.0   Pave    NA      Reg         Lvl   \\n\",\n       \"1457.0        20.0       RL         85.0   Pave    NA      Reg         Lvl   \\n\",\n       \"1458.0        70.0       RL         66.0   Pave    NA      Reg         Lvl   \\n\",\n       \"1459.0        20.0       RL         68.0   Pave    NA      Reg         Lvl   \\n\",\n       \"1460.0        20.0       RL         75.0   Pave    NA      Reg         Lvl   \\n\",\n       \"\\n\",\n       \"       Utilities LotConfig LandSlope  ... SaleType SaleCondition SalePrice  \\\\\\n\",\n       \"Id                                    ...                                    \\n\",\n       \"1.0       AllPub    Inside       Gtl  ...       WD        Normal  208500.0   \\n\",\n       \"2.0       AllPub       FR2       Gtl  ...       WD        Normal  181500.0   \\n\",\n       \"3.0       AllPub    Inside       Gtl  ...       WD        Normal  223500.0   \\n\",\n       \"4.0       AllPub    Corner       Gtl  ...       WD       Abnorml  140000.0   \\n\",\n       \"5.0       AllPub       FR2       Gtl  ...       WD        Normal  250000.0   \\n\",\n       \"...          ...       ...       ...  ...      ...           ...       ...   \\n\",\n       \"1456.0    AllPub    Inside       Gtl  ...       WD        Normal  175000.0   \\n\",\n       \"1457.0    AllPub    Inside       Gtl  ...       WD        Normal  210000.0   \\n\",\n       \"1458.0    AllPub    Inside       Gtl  ...       WD        Normal  266500.0   \\n\",\n       \"1459.0    AllPub    Inside       Gtl  ...       WD        Normal  142125.0   \\n\",\n       \"1460.0    AllPub    Inside       Gtl  ...       WD        Normal  147500.0   \\n\",\n       \"\\n\",\n       \"       AgeAtSale YearsSinceRemodel  HasDeck  HasPorch HasFireplace HasFence  \\\\\\n\",\n       \"Id                                                                            \\n\",\n       \"1.0          5.0               5.0        0         1            0        0   \\n\",\n       \"2.0         31.0              31.0        1         0            1        0   \\n\",\n       \"3.0          7.0               6.0        0         1            1        0   \\n\",\n       \"4.0         91.0              36.0        0         1            1        0   \\n\",\n       \"5.0          8.0               8.0        1         1            1        0   \\n\",\n       \"...          ...               ...      ...       ...          ...      ...   \\n\",\n       \"1456.0       8.0               7.0        0         1            1        0   \\n\",\n       \"1457.0      32.0              22.0        1         0            1        1   \\n\",\n       \"1458.0      69.0               4.0        0         1            1        1   \\n\",\n       \"1459.0      60.0              14.0        1         1            0        0   \\n\",\n       \"1460.0      43.0              43.0        1         1            0        0   \\n\",\n       \"\\n\",\n       \"       Intercept  \\n\",\n       \"Id                \\n\",\n       \"1.0            1  \\n\",\n       \"2.0            1  \\n\",\n       \"3.0            1  \\n\",\n       \"4.0            1  \\n\",\n       \"5.0            1  \\n\",\n       \"...          ...  \\n\",\n       \"1456.0         1  \\n\",\n       \"1457.0         1  \\n\",\n       \"1458.0         1  \\n\",\n       \"1459.0         1  \\n\",\n       \"1460.0         1  \\n\",\n       \"\\n\",\n       \"[1451 rows x 65 columns]\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"Xy = (\\n\",\n    \"    ames_df\\n\",\n    \"    .assign(SalePrice = ames_housing.target) # add target feature\\n\",\n    \"    .set_index('Id')\\n\",\n    \"    .loc[\\n\",\n    \"        lambda df: df['MasVnrType'].notna() # drop outliers with missing detail in this column\\n\",\n    \"    ]\\n\",\n    \"    .loc[\\n\",\n    \"        lambda df: df['Electrical'].notna() # drop outlier with missing electrical row\\n\",\n    \"    ]\\n\",\n    \"    .assign(\\n\",\n    \"        AgeAtSale = lambda df: df['YrSold'].sub(df['YearBuilt']), # add interpretable year columns\\n\",\n    \"        YearsSinceRemodel = lambda df: df['YrSold'].sub(df['YearRemodAdd']).clip(lower = 0), # clip lower for outlier\\n\",\n    \"\\n\",\n    \"        HasDeck = lambda df: df['WoodDeckSF'].gt(0).map(int),\\n\",\n    \"        HasPorch = lambda df:\\n\",\n    \"        df[['OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch']]\\n\",\n    \"        .gt(0)\\n\",\n    \"        .max(axis = 1)\\n\",\n    \"        .map(int),\\n\",\n    \"\\n\",\n    \"        HasFireplace = lambda df: df['Fireplaces'].clip(upper = 1).map(int),\\n\",\n    \"        HasFence = lambda df: df['Fence'].notna().map(int)\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"    # drop year columns\\n\",\n    \"    .drop(\\n\",\n    \"        columns = [\\n\",\n    \"            'GarageYrBlt', 'YearBuilt', 'YrSold', 'YearRemodAdd',\\n\",\n    \"            'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch',\\n\",\n    \"            'FireplaceQu', 'Fireplaces',\\n\",\n    \"            'LotArea', 'MasVnrArea', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF',\\n\",\n    \"            '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GarageArea', 'PoolArea'\\n\",\n    \"        ]\\n\",\n    \"    )\\n\",\n    \"    .assign(LotFrontage = lambda df: df['LotFrontage'].fillna(0)) # fill missing with 0\\n\",\n    \"    .fillna('NA') # rest of missing values are in categorical columns, so fill with NA category\\n\",\n    \"    .assign(Intercept = 1) # add constant column for OLS\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"Xy\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# identify categorical columns for one hot encoding\\n\",\n    \"categorical = list(\\n\",\n    \"    Xy\\n\",\n    \"    .apply(lambda series: series.dtype)\\n\",\n    \"    .loc[\\n\",\n    \"        lambda df: df.eq('object')\\n\",\n    \"    ]\\n\",\n    \"    .index\\n\",\n    \") + ['MSSubClass']\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = Xy.drop(columns = 'SalePrice')\\n\",\n    \"X_ohe = (\\n\",\n    \"    X\\n\",\n    \"    .pipe(pd.get_dummies, prefix_sep = '_OHE_', columns = categorical, dtype='uint8')\\n\",\n    \")\\n\",\n    \"y = Xy['SalePrice']\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>        <td>SalePrice</td>    <th>  R-squared:         </th> <td>   0.923</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.908</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   59.41</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 22 Apr 2022</td> <th>  Prob (F-statistic):</th>  <td>  0.00</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>11:20:06</td>     <th>  Log-Likelihood:    </th> <td> -16565.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td>  1451</td>      <th>  AIC:               </th> <td>3.362e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  1206</td>      <th>  BIC:               </th> <td>3.491e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>   244</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"              <td></td>                 <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotFrontage</th>               <td>    9.1690</td> <td>   24.385</td> <td>    0.376</td> <td> 0.707</td> <td>  -38.674</td> <td>   57.012</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>OverallQual</th>               <td> 6443.4507</td> <td> 1098.337</td> <td>    5.867</td> <td> 0.000</td> <td> 4288.587</td> <td> 8598.315</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>OverallCond</th>               <td> 5761.3467</td> <td>  921.305</td> <td>    6.253</td> <td> 0.000</td> <td> 3953.808</td> <td> 7568.885</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GrLivArea</th>                 <td>   71.2724</td> <td>    3.926</td> <td>   18.155</td> <td> 0.000</td> <td>   63.570</td> <td>   78.975</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFullBath</th>              <td> 7808.0939</td> <td> 1862.581</td> <td>    4.192</td> <td> 0.000</td> <td> 4153.836</td> <td> 1.15e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtHalfBath</th>              <td> 2704.3964</td> <td> 3161.287</td> <td>    0.855</td> <td> 0.392</td> <td>-3497.837</td> <td> 8906.630</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>FullBath</th>                  <td> 4353.2284</td> <td> 2358.076</td> <td>    1.846</td> <td> 0.065</td> <td> -273.159</td> <td> 8979.616</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HalfBath</th>                  <td> 1125.2313</td> <td> 2213.287</td> <td>    0.508</td> <td> 0.611</td> <td>-3217.089</td> <td> 5467.552</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BedroomAbvGr</th>              <td>-4678.0376</td> <td> 1473.399</td> <td>   -3.175</td> <td> 0.002</td> <td>-7568.747</td> <td>-1787.328</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>KitchenAbvGr</th>              <td>-1.089e+04</td> <td> 6648.976</td> <td>   -1.639</td> <td> 0.102</td> <td>-2.39e+04</td> <td> 2150.473</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>TotRmsAbvGrd</th>              <td> 1013.7051</td> <td> 1016.102</td> <td>    0.998</td> <td> 0.319</td> <td> -979.818</td> <td> 3007.228</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCars</th>                <td> 8663.3405</td> <td> 1708.010</td> <td>    5.072</td> <td> 0.000</td> <td> 5312.340</td> <td>  1.2e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscVal</th>                   <td>    9.0392</td> <td>    6.684</td> <td>    1.352</td> <td> 0.177</td> <td>   -4.074</td> <td>   22.153</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MoSold</th>                    <td> -510.0946</td> <td>  260.244</td> <td>   -1.960</td> <td> 0.050</td> <td>-1020.675</td> <td>    0.486</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>AgeAtSale</th>                 <td> -305.4555</td> <td>   85.143</td> <td>   -3.588</td> <td> 0.000</td> <td> -472.501</td> <td> -138.410</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>YearsSinceRemodel</th>         <td>  -27.7465</td> <td>   58.392</td> <td>   -0.475</td> <td> 0.635</td> <td> -142.308</td> <td>   86.815</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HasDeck</th>                   <td> 1621.8650</td> <td> 1585.671</td> <td>    1.023</td> <td> 0.307</td> <td>-1489.115</td> <td> 4732.845</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HasPorch</th>                  <td> 1870.3246</td> <td> 1739.962</td> <td>    1.075</td> <td> 0.283</td> <td>-1543.365</td> <td> 5284.014</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HasFireplace</th>              <td> 2375.0085</td> <td> 1818.079</td> <td>    1.306</td> <td> 0.192</td> <td>-1191.941</td> <td> 5941.958</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HasFence</th>                  <td>-5877.2263</td> <td> 2031.768</td> <td>   -2.893</td> <td> 0.004</td> <td>-9863.419</td> <td>-1891.033</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Intercept</th>                 <td>-8887.1036</td> <td> 3683.133</td> <td>   -2.413</td> <td> 0.016</td> <td>-1.61e+04</td> <td>-1661.044</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSZoning_OHE_C (all)</th>      <td>-2.978e+04</td> <td> 8731.959</td> <td>   -3.411</td> <td> 0.001</td> <td>-4.69e+04</td> <td>-1.27e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSZoning_OHE_FV</th>           <td> 1.271e+04</td> <td> 6497.547</td> <td>    1.957</td> <td> 0.051</td> <td>  -33.757</td> <td> 2.55e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSZoning_OHE_RH</th>           <td> 4234.7895</td> <td> 6421.424</td> <td>    0.659</td> <td> 0.510</td> <td>-8363.614</td> <td> 1.68e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSZoning_OHE_RL</th>           <td> 4630.5784</td> <td> 3487.791</td> <td>    1.328</td> <td> 0.185</td> <td>-2212.233</td> <td> 1.15e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSZoning_OHE_RM</th>           <td> -682.4301</td> <td> 3937.317</td> <td>   -0.173</td> <td> 0.862</td> <td>-8407.183</td> <td> 7042.323</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Street_OHE_Grvl</th>           <td>-8776.6589</td> <td> 6992.025</td> <td>   -1.255</td> <td> 0.210</td> <td>-2.25e+04</td> <td> 4941.225</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Street_OHE_Pave</th>           <td> -110.4448</td> <td> 6575.318</td> <td>   -0.017</td> <td> 0.987</td> <td> -1.3e+04</td> <td> 1.28e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Alley_OHE_Grvl</th>            <td>-1810.1857</td> <td> 3604.374</td> <td>   -0.502</td> <td> 0.616</td> <td>-8881.726</td> <td> 5261.355</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Alley_OHE_NA</th>              <td>-4693.0936</td> <td> 2616.409</td> <td>   -1.794</td> <td> 0.073</td> <td>-9826.313</td> <td>  440.125</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Alley_OHE_Pave</th>            <td>-2383.8243</td> <td> 3913.934</td> <td>   -0.609</td> <td> 0.543</td> <td>-1.01e+04</td> <td> 5295.053</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotShape_OHE_IR1</th>          <td>-1.047e+04</td> <td> 2822.356</td> <td>   -3.711</td> <td> 0.000</td> <td> -1.6e+04</td> <td>-4935.205</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotShape_OHE_IR2</th>          <td>-2372.8849</td> <td> 3985.625</td> <td>   -0.595</td> <td> 0.552</td> <td>-1.02e+04</td> <td> 5446.644</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotShape_OHE_IR3</th>          <td> 1.303e+04</td> <td> 6882.455</td> <td>    1.894</td> <td> 0.059</td> <td> -469.573</td> <td> 2.65e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotShape_OHE_Reg</th>          <td>-9075.0815</td> <td> 2919.659</td> <td>   -3.108</td> <td> 0.002</td> <td>-1.48e+04</td> <td>-3346.907</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandContour_OHE_Bnk</th>       <td>-8623.9473</td> <td> 3406.031</td> <td>   -2.532</td> <td> 0.011</td> <td>-1.53e+04</td> <td>-1941.544</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandContour_OHE_HLS</th>       <td> 2046.0477</td> <td> 3508.549</td> <td>    0.583</td> <td> 0.560</td> <td>-4837.490</td> <td> 8929.585</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandContour_OHE_Low</th>       <td>-2995.0390</td> <td> 4504.323</td> <td>   -0.665</td> <td> 0.506</td> <td>-1.18e+04</td> <td> 5842.141</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandContour_OHE_Lvl</th>       <td>  685.8349</td> <td> 2559.439</td> <td>    0.268</td> <td> 0.789</td> <td>-4335.612</td> <td> 5707.282</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Utilities_OHE_AllPub</th>      <td> 9427.5382</td> <td> 1.43e+04</td> <td>    0.658</td> <td> 0.511</td> <td>-1.87e+04</td> <td> 3.75e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Utilities_OHE_NoSeWa</th>      <td>-1.831e+04</td> <td> 1.58e+04</td> <td>   -1.161</td> <td> 0.246</td> <td>-4.93e+04</td> <td> 1.26e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotConfig_OHE_Corner</th>      <td> 1416.0814</td> <td> 3192.892</td> <td>    0.444</td> <td> 0.657</td> <td>-4848.159</td> <td> 7680.322</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotConfig_OHE_CulDSac</th>     <td> 1.221e+04</td> <td> 3776.342</td> <td>    3.234</td> <td> 0.001</td> <td> 4803.547</td> <td> 1.96e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotConfig_OHE_FR2</th>         <td>-5854.6021</td> <td> 4099.815</td> <td>   -1.428</td> <td> 0.154</td> <td>-1.39e+04</td> <td> 2188.960</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotConfig_OHE_FR3</th>         <td>-1.593e+04</td> <td> 1.07e+04</td> <td>   -1.487</td> <td> 0.137</td> <td>-3.69e+04</td> <td> 5082.020</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LotConfig_OHE_Inside</th>      <td> -728.1482</td> <td> 3025.508</td> <td>   -0.241</td> <td> 0.810</td> <td>-6663.992</td> <td> 5207.696</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandSlope_OHE_Gtl</th>         <td>-4550.2129</td> <td> 4120.952</td> <td>   -1.104</td> <td> 0.270</td> <td>-1.26e+04</td> <td> 3534.819</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandSlope_OHE_Mod</th>         <td> 1596.2168</td> <td> 4053.999</td> <td>    0.394</td> <td> 0.694</td> <td>-6357.457</td> <td> 9549.891</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>LandSlope_OHE_Sev</th>         <td>-5933.1075</td> <td> 6686.760</td> <td>   -0.887</td> <td> 0.375</td> <td>-1.91e+04</td> <td> 7185.867</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Blmngtn</th>  <td>-8611.0187</td> <td> 7466.688</td> <td>   -1.153</td> <td> 0.249</td> <td>-2.33e+04</td> <td> 6038.122</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Blueste</th>  <td> 8758.5694</td> <td> 1.88e+04</td> <td>    0.465</td> <td> 0.642</td> <td>-2.82e+04</td> <td> 4.57e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_BrDale</th>   <td> 7873.6626</td> <td> 8884.523</td> <td>    0.886</td> <td> 0.376</td> <td>-9557.175</td> <td> 2.53e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_BrkSide</th>  <td>-2860.6985</td> <td> 5242.223</td> <td>   -0.546</td> <td> 0.585</td> <td>-1.31e+04</td> <td> 7424.192</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_ClearCr</th>  <td>-7321.5088</td> <td> 5986.224</td> <td>   -1.223</td> <td> 0.222</td> <td>-1.91e+04</td> <td> 4423.061</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_CollgCr</th>  <td>-7448.2921</td> <td> 3217.816</td> <td>   -2.315</td> <td> 0.021</td> <td>-1.38e+04</td> <td>-1135.153</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Crawfor</th>  <td> 1.347e+04</td> <td> 4666.804</td> <td>    2.885</td> <td> 0.004</td> <td> 4310.036</td> <td> 2.26e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Edwards</th>  <td>-1.837e+04</td> <td> 3377.030</td> <td>   -5.441</td> <td> 0.000</td> <td> -2.5e+04</td> <td>-1.17e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Gilbert</th>  <td>-1.216e+04</td> <td> 4007.323</td> <td>   -3.036</td> <td> 0.002</td> <td>   -2e+04</td> <td>-4302.317</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_IDOTRR</th>   <td>-8124.2762</td> <td> 7043.131</td> <td>   -1.154</td> <td> 0.249</td> <td>-2.19e+04</td> <td> 5693.874</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_MeadowV</th>  <td>-4486.2237</td> <td> 9507.217</td> <td>   -0.472</td> <td> 0.637</td> <td>-2.31e+04</td> <td> 1.42e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Mitchel</th>  <td>-1.792e+04</td> <td> 4222.368</td> <td>   -4.245</td> <td> 0.000</td> <td>-2.62e+04</td> <td>-9640.032</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_NAmes</th>    <td>-1.482e+04</td> <td> 2980.842</td> <td>   -4.970</td> <td> 0.000</td> <td>-2.07e+04</td> <td>-8967.059</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_NPkVill</th>  <td> 1.457e+04</td> <td>  1.3e+04</td> <td>    1.117</td> <td> 0.264</td> <td> -1.1e+04</td> <td> 4.01e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_NWAmes</th>   <td>-1.563e+04</td> <td> 3810.048</td> <td>   -4.103</td> <td> 0.000</td> <td>-2.31e+04</td> <td>-8155.691</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_NoRidge</th>  <td> 3.405e+04</td> <td> 5108.666</td> <td>    6.664</td> <td> 0.000</td> <td>  2.4e+04</td> <td> 4.41e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_NridgHt</th>  <td> 2.408e+04</td> <td> 4495.108</td> <td>    5.357</td> <td> 0.000</td> <td> 1.53e+04</td> <td> 3.29e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_OldTown</th>  <td>-1.378e+04</td> <td> 5188.658</td> <td>   -2.656</td> <td> 0.008</td> <td> -2.4e+04</td> <td>-3600.088</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_SWISU</th>    <td>-1.101e+04</td> <td> 6473.184</td> <td>   -1.700</td> <td> 0.089</td> <td>-2.37e+04</td> <td> 1694.043</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Sawyer</th>   <td>-9096.5155</td> <td> 3707.536</td> <td>   -2.454</td> <td> 0.014</td> <td>-1.64e+04</td> <td>-1822.579</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_SawyerW</th>  <td>-2713.1583</td> <td> 4030.968</td> <td>   -0.673</td> <td> 0.501</td> <td>-1.06e+04</td> <td> 5195.331</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Somerst</th>  <td>  473.0768</td> <td> 6378.177</td> <td>    0.074</td> <td> 0.941</td> <td> -1.2e+04</td> <td>  1.3e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_StoneBr</th>  <td> 4.238e+04</td> <td> 5929.178</td> <td>    7.148</td> <td> 0.000</td> <td> 3.08e+04</td> <td>  5.4e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Timber</th>   <td>-4534.9132</td> <td> 4950.992</td> <td>   -0.916</td> <td> 0.360</td> <td>-1.42e+04</td> <td> 5178.602</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Neighborhood_OHE_Veenker</th>  <td> 4353.6079</td> <td> 8133.294</td> <td>    0.535</td> <td> 0.593</td> <td>-1.16e+04</td> <td> 2.03e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_Artery</th>     <td>-7801.2753</td> <td> 5084.697</td> <td>   -1.534</td> <td> 0.125</td> <td>-1.78e+04</td> <td> 2174.560</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_Feedr</th>      <td> -429.5102</td> <td> 4172.041</td> <td>   -0.103</td> <td> 0.918</td> <td>-8614.775</td> <td> 7755.754</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_Norm</th>       <td> 9584.1240</td> <td> 3175.648</td> <td>    3.018</td> <td> 0.003</td> <td> 3353.715</td> <td> 1.58e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_PosA</th>       <td>-1570.5646</td> <td> 8957.572</td> <td>   -0.175</td> <td> 0.861</td> <td>-1.91e+04</td> <td>  1.6e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_PosN</th>       <td> 2006.2559</td> <td> 6446.011</td> <td>    0.311</td> <td> 0.756</td> <td>-1.06e+04</td> <td> 1.47e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_RRAe</th>       <td>-1.461e+04</td> <td> 8110.361</td> <td>   -1.801</td> <td> 0.072</td> <td>-3.05e+04</td> <td> 1302.710</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_RRAn</th>       <td> 5895.9682</td> <td> 5781.315</td> <td>    1.020</td> <td> 0.308</td> <td>-5446.584</td> <td> 1.72e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_RRNe</th>       <td>-6683.7253</td> <td> 1.61e+04</td> <td>   -0.416</td> <td> 0.678</td> <td>-3.82e+04</td> <td> 2.49e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition1_OHE_RRNn</th>       <td> 4720.8981</td> <td> 1.17e+04</td> <td>    0.403</td> <td> 0.687</td> <td>-1.83e+04</td> <td> 2.77e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_Artery</th>     <td> 2.001e+04</td> <td> 2.45e+04</td> <td>    0.816</td> <td> 0.415</td> <td>-2.81e+04</td> <td> 6.81e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_Feedr</th>      <td> 1.612e+04</td> <td>  1.7e+04</td> <td>    0.949</td> <td> 0.343</td> <td>-1.72e+04</td> <td> 4.95e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_Norm</th>       <td> 1.434e+04</td> <td> 1.17e+04</td> <td>    1.221</td> <td> 0.222</td> <td>-8698.454</td> <td> 3.74e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_PosA</th>       <td> 7.161e+04</td> <td> 3.15e+04</td> <td>    2.271</td> <td> 0.023</td> <td> 9740.065</td> <td> 1.33e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_PosN</th>       <td>-1.802e+05</td> <td> 2.05e+04</td> <td>   -8.777</td> <td> 0.000</td> <td> -2.2e+05</td> <td> -1.4e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_RRAe</th>       <td> 1.586e+04</td> <td> 6.38e+04</td> <td>    0.248</td> <td> 0.804</td> <td>-1.09e+05</td> <td> 1.41e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_RRAn</th>       <td> 7256.3041</td> <td> 2.53e+04</td> <td>    0.287</td> <td> 0.774</td> <td>-4.23e+04</td> <td> 5.69e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Condition2_OHE_RRNn</th>       <td> 2.611e+04</td> <td> 2.01e+04</td> <td>    1.300</td> <td> 0.194</td> <td>-1.33e+04</td> <td> 6.55e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BldgType_OHE_1Fam</th>         <td> -716.5811</td> <td> 9984.921</td> <td>   -0.072</td> <td> 0.943</td> <td>-2.03e+04</td> <td> 1.89e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BldgType_OHE_2fmCon</th>       <td> 8059.3471</td> <td> 2.37e+04</td> <td>    0.341</td> <td> 0.733</td> <td>-3.84e+04</td> <td> 5.45e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BldgType_OHE_Duplex</th>       <td>-3857.5649</td> <td> 4671.286</td> <td>   -0.826</td> <td> 0.409</td> <td> -1.3e+04</td> <td> 5307.186</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BldgType_OHE_Twnhs</th>        <td>-8883.8366</td> <td> 1.14e+04</td> <td>   -0.778</td> <td> 0.437</td> <td>-3.13e+04</td> <td> 1.35e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BldgType_OHE_TwnhsE</th>       <td>-3488.4680</td> <td> 1.07e+04</td> <td>   -0.326</td> <td> 0.744</td> <td>-2.45e+04</td> <td> 1.75e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_1.5Fin</th>     <td>-4604.0771</td> <td> 8092.784</td> <td>   -0.569</td> <td> 0.570</td> <td>-2.05e+04</td> <td> 1.13e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_1.5Unf</th>     <td> 2.016e+04</td> <td> 2.27e+04</td> <td>    0.889</td> <td> 0.374</td> <td>-2.43e+04</td> <td> 6.46e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_1Story</th>     <td> 8291.4055</td> <td> 6853.861</td> <td>    1.210</td> <td> 0.227</td> <td>-5155.411</td> <td> 2.17e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_2.5Fin</th>     <td>-2.954e+04</td> <td> 1.44e+04</td> <td>   -2.052</td> <td> 0.040</td> <td>-5.78e+04</td> <td>-1299.420</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_2.5Unf</th>     <td> 9664.9619</td> <td> 1.39e+04</td> <td>    0.694</td> <td> 0.488</td> <td>-1.77e+04</td> <td>  3.7e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_2Story</th>     <td>-1.393e+04</td> <td> 6785.508</td> <td>   -2.053</td> <td> 0.040</td> <td>-2.72e+04</td> <td> -619.319</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_SFoyer</th>     <td> 4838.1623</td> <td> 9922.688</td> <td>    0.488</td> <td> 0.626</td> <td>-1.46e+04</td> <td> 2.43e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HouseStyle_OHE_SLvl</th>       <td>-3756.6333</td> <td> 1.19e+04</td> <td>   -0.316</td> <td> 0.752</td> <td>-2.71e+04</td> <td> 1.95e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Flat</th>        <td>-1.689e+04</td> <td> 1.73e+04</td> <td>   -0.975</td> <td> 0.330</td> <td>-5.09e+04</td> <td> 1.71e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Gable</th>       <td>-1.148e+04</td> <td> 7732.231</td> <td>   -1.485</td> <td> 0.138</td> <td>-2.66e+04</td> <td> 3690.317</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Gambrel</th>     <td>-7415.3888</td> <td> 1.04e+04</td> <td>   -0.713</td> <td> 0.476</td> <td>-2.78e+04</td> <td>  1.3e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Hip</th>         <td>-9351.0472</td> <td> 7843.684</td> <td>   -1.192</td> <td> 0.233</td> <td>-2.47e+04</td> <td> 6037.736</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Mansard</th>     <td> -481.5264</td> <td> 1.12e+04</td> <td>   -0.043</td> <td> 0.966</td> <td>-2.24e+04</td> <td> 2.14e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofStyle_OHE_Shed</th>        <td> 3.673e+04</td> <td>    3e+04</td> <td>    1.223</td> <td> 0.221</td> <td>-2.22e+04</td> <td> 9.56e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_ClyTile</th>      <td>-4.909e+05</td> <td> 3.37e+04</td> <td>  -14.583</td> <td> 0.000</td> <td>-5.57e+05</td> <td>-4.25e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_CompShg</th>      <td> 5.286e+04</td> <td> 1.07e+04</td> <td>    4.958</td> <td> 0.000</td> <td> 3.19e+04</td> <td> 7.38e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_Membran</th>      <td> 1.018e+05</td> <td> 2.88e+04</td> <td>    3.540</td> <td> 0.000</td> <td> 4.54e+04</td> <td> 1.58e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_Metal</th>        <td> 6.736e+04</td> <td> 2.72e+04</td> <td>    2.474</td> <td> 0.014</td> <td> 1.39e+04</td> <td> 1.21e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_Roll</th>         <td> 5.087e+04</td> <td> 2.61e+04</td> <td>    1.949</td> <td> 0.051</td> <td> -327.761</td> <td> 1.02e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_Tar&Grv</th>      <td> 4.625e+04</td> <td>  1.5e+04</td> <td>    3.084</td> <td> 0.002</td> <td> 1.68e+04</td> <td> 7.57e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_WdShake</th>      <td>  4.21e+04</td> <td> 1.75e+04</td> <td>    2.400</td> <td> 0.017</td> <td> 7677.711</td> <td> 7.65e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>RoofMatl_OHE_WdShngl</th>      <td> 1.208e+05</td> <td> 1.44e+04</td> <td>    8.413</td> <td> 0.000</td> <td> 9.26e+04</td> <td> 1.49e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_AsbShng</th>   <td> 9696.9557</td> <td> 1.27e+04</td> <td>    0.761</td> <td> 0.447</td> <td>-1.53e+04</td> <td> 3.47e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_AsphShn</th>   <td>-2.415e+04</td> <td> 3.09e+04</td> <td>   -0.781</td> <td> 0.435</td> <td>-8.48e+04</td> <td> 3.65e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_BrkComm</th>   <td> 1.531e+04</td> <td> 2.56e+04</td> <td>    0.598</td> <td> 0.550</td> <td>-3.49e+04</td> <td> 6.56e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_BrkFace</th>   <td> 1.711e+04</td> <td> 6574.131</td> <td>    2.602</td> <td> 0.009</td> <td> 4208.008</td> <td>    3e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_CBlock</th>    <td>-1796.2630</td> <td> 1.35e+04</td> <td>   -0.133</td> <td> 0.894</td> <td>-2.83e+04</td> <td> 2.48e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_CemntBd</th>   <td> 2.217e+04</td> <td> 1.51e+04</td> <td>    1.470</td> <td> 0.142</td> <td>-7412.081</td> <td> 5.18e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_HdBoard</th>   <td>-6860.0299</td> <td> 5879.900</td> <td>   -1.167</td> <td> 0.244</td> <td>-1.84e+04</td> <td> 4675.940</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_ImStucc</th>   <td>-1.281e+04</td> <td> 2.52e+04</td> <td>   -0.509</td> <td> 0.611</td> <td>-6.22e+04</td> <td> 3.66e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_MetalSd</th>   <td> 2689.8186</td> <td> 8964.917</td> <td>    0.300</td> <td> 0.764</td> <td>-1.49e+04</td> <td> 2.03e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_Plywood</th>   <td>-5150.1853</td> <td> 5983.701</td> <td>   -0.861</td> <td> 0.390</td> <td>-1.69e+04</td> <td> 6589.436</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_Stone</th>     <td>-1.816e+04</td> <td> 2.09e+04</td> <td>   -0.867</td> <td> 0.386</td> <td>-5.92e+04</td> <td> 2.29e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_Stucco</th>    <td>  510.5993</td> <td> 9283.028</td> <td>    0.055</td> <td> 0.956</td> <td>-1.77e+04</td> <td> 1.87e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_VinylSd</th>   <td>-4822.0000</td> <td> 8171.964</td> <td>   -0.590</td> <td> 0.555</td> <td>-2.09e+04</td> <td> 1.12e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_Wd Sdng</th>   <td>-1860.6358</td> <td> 5630.041</td> <td>   -0.330</td> <td> 0.741</td> <td>-1.29e+04</td> <td> 9185.128</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior1st_OHE_WdShing</th>   <td> -769.1740</td> <td> 7248.323</td> <td>   -0.106</td> <td> 0.916</td> <td> -1.5e+04</td> <td> 1.35e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_AsbShng</th>   <td>-3203.8250</td> <td> 1.19e+04</td> <td>   -0.269</td> <td> 0.788</td> <td>-2.66e+04</td> <td> 2.02e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_AsphShn</th>   <td> 3915.7836</td> <td> 1.88e+04</td> <td>    0.209</td> <td> 0.835</td> <td>-3.29e+04</td> <td> 4.07e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Brk Cmn</th>   <td>-3173.2980</td> <td> 1.74e+04</td> <td>   -0.182</td> <td> 0.855</td> <td>-3.74e+04</td> <td>  3.1e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_BrkFace</th>   <td> 1258.8278</td> <td> 7598.163</td> <td>    0.166</td> <td> 0.868</td> <td>-1.36e+04</td> <td> 1.62e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_CBlock</th>    <td>-1796.2630</td> <td> 1.35e+04</td> <td>   -0.133</td> <td> 0.894</td> <td>-2.83e+04</td> <td> 2.48e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_CmentBd</th>   <td>-1.574e+04</td> <td> 1.51e+04</td> <td>   -1.044</td> <td> 0.297</td> <td>-4.53e+04</td> <td> 1.38e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_HdBoard</th>   <td> 6872.3491</td> <td> 5364.921</td> <td>    1.281</td> <td> 0.200</td> <td>-3653.266</td> <td> 1.74e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_ImStucc</th>   <td> 1.311e+04</td> <td> 9301.970</td> <td>    1.409</td> <td> 0.159</td> <td>-5144.716</td> <td> 3.14e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_MetalSd</th>   <td>  435.0711</td> <td> 8724.900</td> <td>    0.050</td> <td> 0.960</td> <td>-1.67e+04</td> <td> 1.76e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Other</th>     <td>-1.489e+04</td> <td> 2.48e+04</td> <td>   -0.600</td> <td> 0.548</td> <td>-6.36e+04</td> <td> 3.38e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Plywood</th>   <td> 3124.0477</td> <td> 5007.673</td> <td>    0.624</td> <td> 0.533</td> <td>-6700.671</td> <td> 1.29e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Stone</th>     <td>-5797.3288</td> <td> 1.44e+04</td> <td>   -0.402</td> <td> 0.688</td> <td>-3.41e+04</td> <td> 2.25e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Stucco</th>    <td>-1983.3949</td> <td> 8964.950</td> <td>   -0.221</td> <td> 0.825</td> <td>-1.96e+04</td> <td> 1.56e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_VinylSd</th>   <td> 7700.3839</td> <td> 7298.120</td> <td>    1.055</td> <td> 0.292</td> <td>-6618.039</td> <td>  2.2e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Wd Sdng</th>   <td> 3585.3264</td> <td> 5011.472</td> <td>    0.715</td> <td> 0.474</td> <td>-6246.847</td> <td> 1.34e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Exterior2nd_OHE_Wd Shng</th>   <td>-2299.6747</td> <td> 5899.731</td> <td>   -0.390</td> <td> 0.697</td> <td>-1.39e+04</td> <td> 9275.203</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MasVnrType_OHE_BrkCmn</th>     <td>-6274.5203</td> <td> 5517.488</td> <td>   -1.137</td> <td> 0.256</td> <td>-1.71e+04</td> <td> 4550.421</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MasVnrType_OHE_BrkFace</th>    <td>-2262.0880</td> <td> 2368.739</td> <td>   -0.955</td> <td> 0.340</td> <td>-6909.395</td> <td> 2385.219</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MasVnrType_OHE_None</th>       <td>-3672.8917</td> <td> 2259.807</td> <td>   -1.625</td> <td> 0.104</td> <td>-8106.482</td> <td>  760.698</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MasVnrType_OHE_Stone</th>      <td> 3322.3963</td> <td> 2919.671</td> <td>    1.138</td> <td> 0.255</td> <td>-2405.803</td> <td> 9050.596</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterQual_OHE_Ex</th>          <td> 1.422e+04</td> <td> 5116.160</td> <td>    2.780</td> <td> 0.006</td> <td> 4185.143</td> <td> 2.43e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterQual_OHE_Fa</th>          <td>-6367.8330</td> <td> 8771.450</td> <td>   -0.726</td> <td> 0.468</td> <td>-2.36e+04</td> <td> 1.08e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterQual_OHE_Gd</th>          <td>-8843.3857</td> <td> 3594.454</td> <td>   -2.460</td> <td> 0.014</td> <td>-1.59e+04</td> <td>-1791.308</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterQual_OHE_TA</th>          <td>-7898.5910</td> <td> 3564.036</td> <td>   -2.216</td> <td> 0.027</td> <td>-1.49e+04</td> <td> -906.190</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterCond_OHE_Ex</th>          <td> 1874.0404</td> <td> 1.58e+04</td> <td>    0.118</td> <td> 0.906</td> <td>-2.92e+04</td> <td>  3.3e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterCond_OHE_Fa</th>          <td> -823.5374</td> <td> 8072.232</td> <td>   -0.102</td> <td> 0.919</td> <td>-1.67e+04</td> <td>  1.5e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterCond_OHE_Gd</th>          <td>-1806.4046</td> <td> 7095.527</td> <td>   -0.255</td> <td> 0.799</td> <td>-1.57e+04</td> <td> 1.21e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterCond_OHE_Po</th>          <td>-8032.0747</td> <td> 2.28e+04</td> <td>   -0.352</td> <td> 0.725</td> <td>-5.29e+04</td> <td> 3.68e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>ExterCond_OHE_TA</th>          <td>  -99.1272</td> <td> 6795.914</td> <td>   -0.015</td> <td> 0.988</td> <td>-1.34e+04</td> <td> 1.32e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_BrkTil</th>     <td> -735.2174</td> <td> 4378.082</td> <td>   -0.168</td> <td> 0.867</td> <td>-9324.722</td> <td> 7854.287</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_CBlock</th>     <td> 4520.0426</td> <td> 3868.479</td> <td>    1.168</td> <td> 0.243</td> <td>-3069.654</td> <td> 1.21e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_PConc</th>      <td> 4739.6745</td> <td> 3924.169</td> <td>    1.208</td> <td> 0.227</td> <td>-2959.282</td> <td> 1.24e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_Slab</th>       <td>-6697.5708</td> <td> 9147.951</td> <td>   -0.732</td> <td> 0.464</td> <td>-2.46e+04</td> <td> 1.13e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_Stone</th>      <td> 5152.2702</td> <td> 1.07e+04</td> <td>    0.481</td> <td> 0.631</td> <td>-1.59e+04</td> <td> 2.62e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Foundation_OHE_Wood</th>       <td>-1.587e+04</td> <td> 1.29e+04</td> <td>   -1.229</td> <td> 0.219</td> <td>-4.12e+04</td> <td> 9465.221</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtQual_OHE_Ex</th>           <td> 1.391e+04</td> <td> 4262.926</td> <td>    3.262</td> <td> 0.001</td> <td> 5543.931</td> <td> 2.23e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtQual_OHE_Fa</th>           <td>-2292.1347</td> <td> 4875.000</td> <td>   -0.470</td> <td> 0.638</td> <td>-1.19e+04</td> <td> 7272.289</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtQual_OHE_Gd</th>           <td>-5966.2262</td> <td> 3339.328</td> <td>   -1.787</td> <td> 0.074</td> <td>-1.25e+04</td> <td>  585.312</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtQual_OHE_NA</th>           <td>-9754.4051</td> <td>    1e+04</td> <td>   -0.971</td> <td> 0.332</td> <td>-2.95e+04</td> <td> 9955.272</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtQual_OHE_TA</th>           <td>-4781.8426</td> <td> 3332.797</td> <td>   -1.435</td> <td> 0.152</td> <td>-1.13e+04</td> <td> 1756.881</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtCond_OHE_Fa</th>           <td>-4845.8247</td> <td> 8149.163</td> <td>   -0.595</td> <td> 0.552</td> <td>-2.08e+04</td> <td> 1.11e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtCond_OHE_Gd</th>           <td>-7111.8847</td> <td> 8377.604</td> <td>   -0.849</td> <td> 0.396</td> <td>-2.35e+04</td> <td> 9324.413</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtCond_OHE_NA</th>           <td>-9754.4051</td> <td>    1e+04</td> <td>   -0.971</td> <td> 0.332</td> <td>-2.95e+04</td> <td> 9955.272</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtCond_OHE_Po</th>           <td> 1.298e+04</td> <td> 2.42e+04</td> <td>    0.537</td> <td> 0.591</td> <td>-3.44e+04</td> <td> 6.04e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtCond_OHE_TA</th>           <td> -150.8057</td> <td> 7993.237</td> <td>   -0.019</td> <td> 0.985</td> <td>-1.58e+04</td> <td> 1.55e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtExposure_OHE_Av</th>       <td>-1690.9167</td> <td> 5189.468</td> <td>   -0.326</td> <td> 0.745</td> <td>-1.19e+04</td> <td> 8490.473</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtExposure_OHE_Gd</th>       <td> 1.881e+04</td> <td> 5462.687</td> <td>    3.444</td> <td> 0.001</td> <td> 8096.549</td> <td> 2.95e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtExposure_OHE_Mn</th>       <td>-5336.8363</td> <td> 5397.044</td> <td>   -0.989</td> <td> 0.323</td> <td>-1.59e+04</td> <td> 5251.801</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtExposure_OHE_NA</th>       <td>-1.321e+04</td> <td> 1.95e+04</td> <td>   -0.676</td> <td> 0.499</td> <td>-5.16e+04</td> <td> 2.51e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtExposure_OHE_No</th>       <td>-7467.7095</td> <td> 5089.471</td> <td>   -1.467</td> <td> 0.143</td> <td>-1.75e+04</td> <td> 2517.491</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_ALQ</th>      <td> 1183.0046</td> <td> 2593.365</td> <td>    0.456</td> <td> 0.648</td> <td>-3905.004</td> <td> 6271.013</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_BLQ</th>      <td> 2715.0436</td> <td> 2736.678</td> <td>    0.992</td> <td> 0.321</td> <td>-2654.135</td> <td> 8084.222</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_GLQ</th>      <td> 4919.8223</td> <td> 2639.327</td> <td>    1.864</td> <td> 0.063</td> <td> -258.360</td> <td> 1.01e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_LwQ</th>      <td>-4735.4031</td> <td> 3382.713</td> <td>   -1.400</td> <td> 0.162</td> <td>-1.14e+04</td> <td> 1901.253</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_NA</th>       <td>-9754.4051</td> <td>    1e+04</td> <td>   -0.971</td> <td> 0.332</td> <td>-2.95e+04</td> <td> 9955.272</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_Rec</th>      <td> 1496.4299</td> <td> 2817.792</td> <td>    0.531</td> <td> 0.595</td> <td>-4031.888</td> <td> 7024.748</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType1_OHE_Unf</th>      <td>-4711.5957</td> <td> 2408.305</td> <td>   -1.956</td> <td> 0.051</td> <td>-9436.529</td> <td>   13.337</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_ALQ</th>      <td> 1997.7787</td> <td> 6684.893</td> <td>    0.299</td> <td> 0.765</td> <td>-1.11e+04</td> <td> 1.51e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_BLQ</th>      <td>-7776.7648</td> <td> 5524.662</td> <td>   -1.408</td> <td> 0.159</td> <td>-1.86e+04</td> <td> 3062.252</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_GLQ</th>      <td>-3241.5252</td> <td> 7811.910</td> <td>   -0.415</td> <td> 0.678</td> <td>-1.86e+04</td> <td> 1.21e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_LwQ</th>      <td>-9113.0595</td> <td> 5262.793</td> <td>   -1.732</td> <td> 0.084</td> <td>-1.94e+04</td> <td> 1212.187</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_NA</th>       <td> 1.938e+04</td> <td> 2.13e+04</td> <td>    0.911</td> <td> 0.362</td> <td>-2.24e+04</td> <td> 6.11e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_Rec</th>      <td>-4760.1815</td> <td> 5159.896</td> <td>   -0.923</td> <td> 0.356</td> <td>-1.49e+04</td> <td> 5363.188</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>BsmtFinType2_OHE_Unf</th>      <td>-5368.5507</td> <td> 4092.223</td> <td>   -1.312</td> <td> 0.190</td> <td>-1.34e+04</td> <td> 2660.116</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_Floor</th>         <td>  439.6600</td> <td> 2.34e+04</td> <td>    0.019</td> <td> 0.985</td> <td>-4.55e+04</td> <td> 4.64e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_GasA</th>          <td> 3335.7938</td> <td> 6837.557</td> <td>    0.488</td> <td> 0.626</td> <td>-1.01e+04</td> <td> 1.68e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_GasW</th>          <td> 6368.9145</td> <td> 8447.243</td> <td>    0.754</td> <td> 0.451</td> <td>-1.02e+04</td> <td> 2.29e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_Grav</th>          <td> 1322.5788</td> <td> 1.18e+04</td> <td>    0.112</td> <td> 0.911</td> <td>-2.19e+04</td> <td> 2.45e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_OthW</th>          <td>-3.457e+04</td> <td> 1.72e+04</td> <td>   -2.012</td> <td> 0.044</td> <td>-6.83e+04</td> <td> -859.113</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Heating_OHE_Wall</th>          <td> 1.422e+04</td> <td> 1.41e+04</td> <td>    1.006</td> <td> 0.315</td> <td>-1.35e+04</td> <td>  4.2e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HeatingQC_OHE_Ex</th>          <td> 2004.6743</td> <td> 5845.507</td> <td>    0.343</td> <td> 0.732</td> <td>-9463.819</td> <td> 1.35e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HeatingQC_OHE_Fa</th>          <td> 2442.9863</td> <td> 6730.368</td> <td>    0.363</td> <td> 0.717</td> <td>-1.08e+04</td> <td> 1.56e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HeatingQC_OHE_Gd</th>          <td>-1012.4556</td> <td> 5879.638</td> <td>   -0.172</td> <td> 0.863</td> <td>-1.25e+04</td> <td> 1.05e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HeatingQC_OHE_Po</th>          <td>-1.197e+04</td> <td> 2.27e+04</td> <td>   -0.527</td> <td> 0.598</td> <td>-5.66e+04</td> <td> 3.26e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>HeatingQC_OHE_TA</th>          <td> -348.6333</td> <td> 5795.189</td> <td>   -0.060</td> <td> 0.952</td> <td>-1.17e+04</td> <td>  1.1e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>CentralAir_OHE_N</th>          <td>-5246.3361</td> <td> 2681.618</td> <td>   -1.956</td> <td> 0.051</td> <td>-1.05e+04</td> <td>   14.818</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>CentralAir_OHE_Y</th>          <td>-3640.7675</td> <td> 2852.738</td> <td>   -1.276</td> <td> 0.202</td> <td>-9237.649</td> <td> 1956.114</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Electrical_OHE_FuseA</th>      <td> -791.5328</td> <td> 1.09e+04</td> <td>   -0.072</td> <td> 0.942</td> <td>-2.22e+04</td> <td> 2.06e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Electrical_OHE_FuseF</th>      <td>-1438.2511</td> <td> 1.18e+04</td> <td>   -0.122</td> <td> 0.903</td> <td>-2.45e+04</td> <td> 2.17e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Electrical_OHE_FuseP</th>      <td>-1.348e+04</td> <td>  1.7e+04</td> <td>   -0.795</td> <td> 0.427</td> <td>-4.68e+04</td> <td> 1.98e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Electrical_OHE_Mix</th>        <td> 1.031e+04</td> <td> 3.75e+04</td> <td>    0.275</td> <td> 0.784</td> <td>-6.33e+04</td> <td> 8.39e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Electrical_OHE_SBrkr</th>      <td>-3482.1497</td> <td> 1.09e+04</td> <td>   -0.319</td> <td> 0.750</td> <td>-2.49e+04</td> <td>  1.8e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>KitchenQual_OHE_Ex</th>        <td> 1.696e+04</td> <td> 3297.921</td> <td>    5.143</td> <td> 0.000</td> <td> 1.05e+04</td> <td> 2.34e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>KitchenQual_OHE_Fa</th>        <td>-7828.8880</td> <td> 4265.506</td> <td>   -1.835</td> <td> 0.067</td> <td>-1.62e+04</td> <td>  539.748</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>KitchenQual_OHE_Gd</th>        <td>-9598.4777</td> <td> 2218.775</td> <td>   -4.326</td> <td> 0.000</td> <td> -1.4e+04</td> <td>-5245.390</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>KitchenQual_OHE_TA</th>        <td>-8419.3093</td> <td> 2131.317</td> <td>   -3.950</td> <td> 0.000</td> <td>-1.26e+04</td> <td>-4237.808</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Maj1</th>       <td> -715.7203</td> <td> 8569.672</td> <td>   -0.084</td> <td> 0.933</td> <td>-1.75e+04</td> <td> 1.61e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Maj2</th>       <td>-8942.8567</td> <td> 1.22e+04</td> <td>   -0.735</td> <td> 0.462</td> <td>-3.28e+04</td> <td> 1.49e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Min1</th>       <td> 4869.5743</td> <td> 6253.392</td> <td>    0.779</td> <td> 0.436</td> <td>-7399.161</td> <td> 1.71e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Min2</th>       <td> 6029.6443</td> <td> 6505.458</td> <td>    0.927</td> <td> 0.354</td> <td>-6733.629</td> <td> 1.88e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Mod</th>        <td> 1383.6326</td> <td> 8505.898</td> <td>    0.163</td> <td> 0.871</td> <td>-1.53e+04</td> <td> 1.81e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Sev</th>        <td>-3.265e+04</td> <td> 2.59e+04</td> <td>   -1.261</td> <td> 0.208</td> <td>-8.35e+04</td> <td> 1.82e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Functional_OHE_Typ</th>        <td> 2.114e+04</td> <td> 5172.138</td> <td>    4.088</td> <td> 0.000</td> <td>  1.1e+04</td> <td> 3.13e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_2Types</th>     <td>-1.567e+04</td> <td> 9932.399</td> <td>   -1.578</td> <td> 0.115</td> <td>-3.52e+04</td> <td> 3813.919</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_Attchd</th>     <td> 1981.8353</td> <td> 3076.841</td> <td>    0.644</td> <td> 0.520</td> <td>-4054.720</td> <td> 8018.390</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_Basment</th>    <td>-1115.6943</td> <td> 6412.207</td> <td>   -0.174</td> <td> 0.862</td> <td>-1.37e+04</td> <td> 1.15e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_BuiltIn</th>    <td>-1923.5918</td> <td> 4083.332</td> <td>   -0.471</td> <td> 0.638</td> <td>-9934.816</td> <td> 6087.633</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_CarPort</th>    <td> 3052.2831</td> <td> 9302.887</td> <td>    0.328</td> <td> 0.743</td> <td>-1.52e+04</td> <td> 2.13e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_Detchd</th>     <td> 3845.0677</td> <td> 3216.441</td> <td>    1.195</td> <td> 0.232</td> <td>-2465.373</td> <td> 1.02e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageType_OHE_NA</th>         <td>  945.7773</td> <td> 1729.266</td> <td>    0.547</td> <td> 0.585</td> <td>-2446.927</td> <td> 4338.482</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageFinish_OHE_Fin</th>      <td>-2013.3263</td> <td> 1793.821</td> <td>   -1.122</td> <td> 0.262</td> <td>-5532.684</td> <td> 1506.031</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageFinish_OHE_NA</th>       <td>  945.7773</td> <td> 1729.266</td> <td>    0.547</td> <td> 0.585</td> <td>-2446.927</td> <td> 4338.482</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageFinish_OHE_RFn</th>      <td>-4884.6414</td> <td> 1679.299</td> <td>   -2.909</td> <td> 0.004</td> <td>-8179.313</td> <td>-1589.970</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageFinish_OHE_Unf</th>      <td>-2934.9133</td> <td> 1816.802</td> <td>   -1.615</td> <td> 0.106</td> <td>-6499.357</td> <td>  629.530</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_Ex</th>         <td> 9.166e+04</td> <td> 2.53e+04</td> <td>    3.624</td> <td> 0.000</td> <td>  4.2e+04</td> <td> 1.41e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_Fa</th>         <td>-2.851e+04</td> <td> 8707.863</td> <td>   -3.274</td> <td> 0.001</td> <td>-4.56e+04</td> <td>-1.14e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_Gd</th>         <td>-2.447e+04</td> <td> 1.08e+04</td> <td>   -2.260</td> <td> 0.024</td> <td>-4.57e+04</td> <td>-3224.112</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_NA</th>         <td>  945.7773</td> <td> 1729.266</td> <td>    0.547</td> <td> 0.585</td> <td>-2446.927</td> <td> 4338.482</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_Po</th>         <td>-2.482e+04</td> <td>  2.3e+04</td> <td>   -1.081</td> <td> 0.280</td> <td>-6.99e+04</td> <td> 2.02e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageQual_OHE_TA</th>         <td>-2.368e+04</td> <td> 8441.072</td> <td>   -2.806</td> <td> 0.005</td> <td>-4.02e+04</td> <td>-7123.487</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_Ex</th>         <td>-8.566e+04</td> <td>  2.9e+04</td> <td>   -2.953</td> <td> 0.003</td> <td>-1.43e+05</td> <td>-2.88e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_Fa</th>         <td> 1.788e+04</td> <td> 8704.218</td> <td>    2.054</td> <td> 0.040</td> <td>  804.321</td> <td>  3.5e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_Gd</th>         <td> 2.134e+04</td> <td> 1.14e+04</td> <td>    1.870</td> <td> 0.062</td> <td>-1054.208</td> <td> 4.37e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_NA</th>         <td>  945.7773</td> <td> 1729.266</td> <td>    0.547</td> <td> 0.585</td> <td>-2446.927</td> <td> 4338.482</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_Po</th>         <td> 1.464e+04</td> <td> 1.48e+04</td> <td>    0.986</td> <td> 0.324</td> <td>-1.45e+04</td> <td> 4.38e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>GarageCond_OHE_TA</th>         <td> 2.197e+04</td> <td> 8023.293</td> <td>    2.738</td> <td> 0.006</td> <td> 6227.248</td> <td> 3.77e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PavedDrive_OHE_N</th>          <td> -786.7359</td> <td> 3061.162</td> <td>   -0.257</td> <td> 0.797</td> <td>-6792.530</td> <td> 5219.058</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PavedDrive_OHE_P</th>          <td>-6025.0798</td> <td> 3793.883</td> <td>   -1.588</td> <td> 0.113</td> <td>-1.35e+04</td> <td> 1418.264</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PavedDrive_OHE_Y</th>          <td>-2075.2879</td> <td> 2469.093</td> <td>   -0.841</td> <td> 0.401</td> <td>-6919.483</td> <td> 2768.907</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PoolQC_OHE_Ex</th>             <td> 6.616e+04</td> <td> 1.82e+04</td> <td>    3.629</td> <td> 0.000</td> <td> 3.04e+04</td> <td> 1.02e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PoolQC_OHE_Fa</th>             <td> -3.16e+04</td> <td> 2.05e+04</td> <td>   -1.543</td> <td> 0.123</td> <td>-7.18e+04</td> <td> 8589.279</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PoolQC_OHE_Gd</th>             <td> 1.028e+04</td> <td> 1.71e+04</td> <td>    0.600</td> <td> 0.549</td> <td>-2.33e+04</td> <td> 4.39e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>PoolQC_OHE_NA</th>             <td>-5.373e+04</td> <td> 9797.772</td> <td>   -5.484</td> <td> 0.000</td> <td> -7.3e+04</td> <td>-3.45e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Fence_OHE_GdPrv</th>           <td>-7630.4719</td> <td> 3554.210</td> <td>   -2.147</td> <td> 0.032</td> <td>-1.46e+04</td> <td> -657.351</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Fence_OHE_GdWo</th>            <td> 2541.7890</td> <td> 3449.379</td> <td>    0.737</td> <td> 0.461</td> <td>-4225.660</td> <td> 9309.239</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Fence_OHE_MnPrv</th>           <td> 2481.3099</td> <td> 2689.166</td> <td>    0.923</td> <td> 0.356</td> <td>-2794.654</td> <td> 7757.274</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Fence_OHE_MnWw</th>            <td>-3269.8532</td> <td> 6239.134</td> <td>   -0.524</td> <td> 0.600</td> <td>-1.55e+04</td> <td> 8970.910</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Fence_OHE_NA</th>              <td>-3009.8774</td> <td> 2359.220</td> <td>   -1.276</td> <td> 0.202</td> <td>-7638.509</td> <td> 1618.755</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscFeature_OHE_Gar2</th>      <td>-1.054e+05</td> <td> 7.98e+04</td> <td>   -1.320</td> <td> 0.187</td> <td>-2.62e+05</td> <td> 5.12e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscFeature_OHE_NA</th>        <td> 3.343e+04</td> <td>  2.8e+04</td> <td>    1.194</td> <td> 0.233</td> <td>-2.15e+04</td> <td> 8.83e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscFeature_OHE_Othr</th>      <td> 3.893e+04</td> <td> 2.48e+04</td> <td>    1.568</td> <td> 0.117</td> <td>-9766.082</td> <td> 8.76e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscFeature_OHE_Shed</th>      <td> 3.175e+04</td> <td> 2.37e+04</td> <td>    1.339</td> <td> 0.181</td> <td>-1.48e+04</td> <td> 7.83e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MiscFeature_OHE_TenC</th>      <td>-7590.1330</td> <td> 3.26e+04</td> <td>   -0.233</td> <td> 0.816</td> <td>-7.15e+04</td> <td> 5.64e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_COD</th>          <td> -1.36e+04</td> <td> 5758.295</td> <td>   -2.362</td> <td> 0.018</td> <td>-2.49e+04</td> <td>-2304.596</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_CWD</th>          <td>-2098.4435</td> <td> 1.21e+04</td> <td>   -0.174</td> <td> 0.862</td> <td>-2.58e+04</td> <td> 2.16e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_Con</th>          <td> 1.011e+04</td> <td> 1.65e+04</td> <td>    0.611</td> <td> 0.541</td> <td>-2.23e+04</td> <td> 4.26e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_ConLD</th>        <td> 1248.1659</td> <td> 9025.417</td> <td>    0.138</td> <td> 0.890</td> <td>-1.65e+04</td> <td>  1.9e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_ConLI</th>        <td>-2735.0310</td> <td> 1.09e+04</td> <td>   -0.251</td> <td> 0.802</td> <td>-2.41e+04</td> <td> 1.87e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_ConLw</th>        <td>-9016.4938</td> <td> 1.15e+04</td> <td>   -0.787</td> <td> 0.431</td> <td>-3.15e+04</td> <td> 1.35e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_New</th>          <td> 2.217e+04</td> <td> 1.42e+04</td> <td>    1.566</td> <td> 0.118</td> <td>-5606.285</td> <td> 4.99e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_Oth</th>          <td>-1335.1238</td> <td> 1.38e+04</td> <td>   -0.097</td> <td> 0.923</td> <td>-2.84e+04</td> <td> 2.58e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleType_OHE_WD</th>           <td>-1.363e+04</td> <td> 4322.187</td> <td>   -3.154</td> <td> 0.002</td> <td>-2.21e+04</td> <td>-5150.580</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_Abnorml</th> <td>-4331.4298</td> <td> 4710.968</td> <td>   -0.919</td> <td> 0.358</td> <td>-1.36e+04</td> <td> 4911.173</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_AdjLand</th> <td> 9443.5614</td> <td> 1.31e+04</td> <td>    0.722</td> <td> 0.471</td> <td>-1.62e+04</td> <td> 3.51e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_Alloca</th>  <td> 3457.3320</td> <td> 8613.688</td> <td>    0.401</td> <td> 0.688</td> <td>-1.34e+04</td> <td> 2.04e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_Family</th>  <td>-3097.8496</td> <td> 6351.270</td> <td>   -0.488</td> <td> 0.626</td> <td>-1.56e+04</td> <td> 9362.916</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_Normal</th>  <td> 3316.2751</td> <td> 4173.754</td> <td>    0.795</td> <td> 0.427</td> <td>-4872.350</td> <td> 1.15e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>SaleCondition_OHE_Partial</th> <td>-1.767e+04</td> <td> 1.33e+04</td> <td>   -1.327</td> <td> 0.185</td> <td>-4.38e+04</td> <td> 8450.767</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_20.0</th>       <td> 7963.2412</td> <td> 6544.517</td> <td>    1.217</td> <td> 0.224</td> <td>-4876.663</td> <td> 2.08e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_30.0</th>       <td> 9157.7316</td> <td> 7559.871</td> <td>    1.211</td> <td> 0.226</td> <td>-5674.228</td> <td>  2.4e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_40.0</th>       <td>-4097.6267</td> <td> 1.82e+04</td> <td>   -0.226</td> <td> 0.822</td> <td>-3.97e+04</td> <td> 3.15e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_45.0</th>       <td>  618.1253</td> <td> 2.53e+04</td> <td>    0.024</td> <td> 0.981</td> <td> -4.9e+04</td> <td> 5.03e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_50.0</th>       <td> 1.106e+04</td> <td> 8962.787</td> <td>    1.235</td> <td> 0.217</td> <td>-6519.392</td> <td> 2.86e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_60.0</th>       <td> 1.361e+04</td> <td> 7755.112</td> <td>    1.756</td> <td> 0.079</td> <td>-1600.793</td> <td> 2.88e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_70.0</th>       <td> 1.665e+04</td> <td> 7990.503</td> <td>    2.084</td> <td> 0.037</td> <td>  972.058</td> <td> 3.23e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_75.0</th>       <td>-1.453e+04</td> <td> 1.54e+04</td> <td>   -0.946</td> <td> 0.344</td> <td>-4.47e+04</td> <td> 1.56e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_80.0</th>       <td> 8460.2993</td> <td> 1.26e+04</td> <td>    0.671</td> <td> 0.502</td> <td>-1.63e+04</td> <td> 3.32e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_85.0</th>       <td>   14.9640</td> <td> 1.12e+04</td> <td>    0.001</td> <td> 0.999</td> <td>-2.19e+04</td> <td> 2.19e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_90.0</th>       <td>-3857.5649</td> <td> 4671.286</td> <td>   -0.826</td> <td> 0.409</td> <td> -1.3e+04</td> <td> 5307.186</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_120.0</th>      <td>-1.566e+04</td> <td> 1.31e+04</td> <td>   -1.197</td> <td> 0.231</td> <td>-4.13e+04</td> <td>    1e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_160.0</th>      <td>-9945.8069</td> <td> 1.49e+04</td> <td>   -0.669</td> <td> 0.503</td> <td>-3.91e+04</td> <td> 1.92e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_180.0</th>      <td>-2.013e+04</td> <td> 1.74e+04</td> <td>   -1.157</td> <td> 0.248</td> <td>-5.43e+04</td> <td>  1.4e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>MSSubClass_OHE_190.0</th>      <td>-8199.1071</td> <td> 2.76e+04</td> <td>   -0.297</td> <td> 0.767</td> <td>-6.24e+04</td> <td>  4.6e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>373.078</td> <th>  Durbin-Watson:     </th> <td>   1.937</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>9764.841</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td> 0.588</td>  <th>  Prob(JB):          </th> <td>    0.00</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td>15.654</td>  <th>  Cond. No.          </th> <td>1.47e+19</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.<br/>[2] The smallest eigenvalue is 1.73e-29. This might indicate that there are<br/>strong multicollinearity problems or that the design matrix is singular.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:              SalePrice   R-squared:                       0.923\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.908\\n\",\n       \"Method:                 Least Squares   F-statistic:                     59.41\\n\",\n       \"Date:                Fri, 22 Apr 2022   Prob (F-statistic):               0.00\\n\",\n       \"Time:                        11:20:06   Log-Likelihood:                -16565.\\n\",\n       \"No. Observations:                1451   AIC:                         3.362e+04\\n\",\n       \"Df Residuals:                    1206   BIC:                         3.491e+04\\n\",\n       \"Df Model:                         244                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"=============================================================================================\\n\",\n       \"                                coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"---------------------------------------------------------------------------------------------\\n\",\n       \"LotFrontage                   9.1690     24.385      0.376      0.707     -38.674      57.012\\n\",\n       \"OverallQual                6443.4507   1098.337      5.867      0.000    4288.587    8598.315\\n\",\n       \"OverallCond                5761.3467    921.305      6.253      0.000    3953.808    7568.885\\n\",\n       \"GrLivArea                    71.2724      3.926     18.155      0.000      63.570      78.975\\n\",\n       \"BsmtFullBath               7808.0939   1862.581      4.192      0.000    4153.836    1.15e+04\\n\",\n       \"BsmtHalfBath               2704.3964   3161.287      0.855      0.392   -3497.837    8906.630\\n\",\n       \"FullBath                   4353.2284   2358.076      1.846      0.065    -273.159    8979.616\\n\",\n       \"HalfBath                   1125.2313   2213.287      0.508      0.611   -3217.089    5467.552\\n\",\n       \"BedroomAbvGr              -4678.0376   1473.399     -3.175      0.002   -7568.747   -1787.328\\n\",\n       \"KitchenAbvGr              -1.089e+04   6648.976     -1.639      0.102   -2.39e+04    2150.473\\n\",\n       \"TotRmsAbvGrd               1013.7051   1016.102      0.998      0.319    -979.818    3007.228\\n\",\n       \"GarageCars                 8663.3405   1708.010      5.072      0.000    5312.340     1.2e+04\\n\",\n       \"MiscVal                       9.0392      6.684      1.352      0.177      -4.074      22.153\\n\",\n       \"MoSold                     -510.0946    260.244     -1.960      0.050   -1020.675       0.486\\n\",\n       \"AgeAtSale                  -305.4555     85.143     -3.588      0.000    -472.501    -138.410\\n\",\n       \"YearsSinceRemodel           -27.7465     58.392     -0.475      0.635    -142.308      86.815\\n\",\n       \"HasDeck                    1621.8650   1585.671      1.023      0.307   -1489.115    4732.845\\n\",\n       \"HasPorch                   1870.3246   1739.962      1.075      0.283   -1543.365    5284.014\\n\",\n       \"HasFireplace               2375.0085   1818.079      1.306      0.192   -1191.941    5941.958\\n\",\n       \"HasFence                  -5877.2263   2031.768     -2.893      0.004   -9863.419   -1891.033\\n\",\n       \"Intercept                 -8887.1036   3683.133     -2.413      0.016   -1.61e+04   -1661.044\\n\",\n       \"MSZoning_OHE_C (all)      -2.978e+04   8731.959     -3.411      0.001   -4.69e+04   -1.27e+04\\n\",\n       \"MSZoning_OHE_FV            1.271e+04   6497.547      1.957      0.051     -33.757    2.55e+04\\n\",\n       \"MSZoning_OHE_RH            4234.7895   6421.424      0.659      0.510   -8363.614    1.68e+04\\n\",\n       \"MSZoning_OHE_RL            4630.5784   3487.791      1.328      0.185   -2212.233    1.15e+04\\n\",\n       \"MSZoning_OHE_RM            -682.4301   3937.317     -0.173      0.862   -8407.183    7042.323\\n\",\n       \"Street_OHE_Grvl           -8776.6589   6992.025     -1.255      0.210   -2.25e+04    4941.225\\n\",\n       \"Street_OHE_Pave            -110.4448   6575.318     -0.017      0.987    -1.3e+04    1.28e+04\\n\",\n       \"Alley_OHE_Grvl            -1810.1857   3604.374     -0.502      0.616   -8881.726    5261.355\\n\",\n       \"Alley_OHE_NA              -4693.0936   2616.409     -1.794      0.073   -9826.313     440.125\\n\",\n       \"Alley_OHE_Pave            -2383.8243   3913.934     -0.609      0.543   -1.01e+04    5295.053\\n\",\n       \"LotShape_OHE_IR1          -1.047e+04   2822.356     -3.711      0.000    -1.6e+04   -4935.205\\n\",\n       \"LotShape_OHE_IR2          -2372.8849   3985.625     -0.595      0.552   -1.02e+04    5446.644\\n\",\n       \"LotShape_OHE_IR3           1.303e+04   6882.455      1.894      0.059    -469.573    2.65e+04\\n\",\n       \"LotShape_OHE_Reg          -9075.0815   2919.659     -3.108      0.002   -1.48e+04   -3346.907\\n\",\n       \"LandContour_OHE_Bnk       -8623.9473   3406.031     -2.532      0.011   -1.53e+04   -1941.544\\n\",\n       \"LandContour_OHE_HLS        2046.0477   3508.549      0.583      0.560   -4837.490    8929.585\\n\",\n       \"LandContour_OHE_Low       -2995.0390   4504.323     -0.665      0.506   -1.18e+04    5842.141\\n\",\n       \"LandContour_OHE_Lvl         685.8349   2559.439      0.268      0.789   -4335.612    5707.282\\n\",\n       \"Utilities_OHE_AllPub       9427.5382   1.43e+04      0.658      0.511   -1.87e+04    3.75e+04\\n\",\n       \"Utilities_OHE_NoSeWa      -1.831e+04   1.58e+04     -1.161      0.246   -4.93e+04    1.26e+04\\n\",\n       \"LotConfig_OHE_Corner       1416.0814   3192.892      0.444      0.657   -4848.159    7680.322\\n\",\n       \"LotConfig_OHE_CulDSac      1.221e+04   3776.342      3.234      0.001    4803.547    1.96e+04\\n\",\n       \"LotConfig_OHE_FR2         -5854.6021   4099.815     -1.428      0.154   -1.39e+04    2188.960\\n\",\n       \"LotConfig_OHE_FR3         -1.593e+04   1.07e+04     -1.487      0.137   -3.69e+04    5082.020\\n\",\n       \"LotConfig_OHE_Inside       -728.1482   3025.508     -0.241      0.810   -6663.992    5207.696\\n\",\n       \"LandSlope_OHE_Gtl         -4550.2129   4120.952     -1.104      0.270   -1.26e+04    3534.819\\n\",\n       \"LandSlope_OHE_Mod          1596.2168   4053.999      0.394      0.694   -6357.457    9549.891\\n\",\n       \"LandSlope_OHE_Sev         -5933.1075   6686.760     -0.887      0.375   -1.91e+04    7185.867\\n\",\n       \"Neighborhood_OHE_Blmngtn  -8611.0187   7466.688     -1.153      0.249   -2.33e+04    6038.122\\n\",\n       \"Neighborhood_OHE_Blueste   8758.5694   1.88e+04      0.465      0.642   -2.82e+04    4.57e+04\\n\",\n       \"Neighborhood_OHE_BrDale    7873.6626   8884.523      0.886      0.376   -9557.175    2.53e+04\\n\",\n       \"Neighborhood_OHE_BrkSide  -2860.6985   5242.223     -0.546      0.585   -1.31e+04    7424.192\\n\",\n       \"Neighborhood_OHE_ClearCr  -7321.5088   5986.224     -1.223      0.222   -1.91e+04    4423.061\\n\",\n       \"Neighborhood_OHE_CollgCr  -7448.2921   3217.816     -2.315      0.021   -1.38e+04   -1135.153\\n\",\n       \"Neighborhood_OHE_Crawfor   1.347e+04   4666.804      2.885      0.004    4310.036    2.26e+04\\n\",\n       \"Neighborhood_OHE_Edwards  -1.837e+04   3377.030     -5.441      0.000    -2.5e+04   -1.17e+04\\n\",\n       \"Neighborhood_OHE_Gilbert  -1.216e+04   4007.323     -3.036      0.002      -2e+04   -4302.317\\n\",\n       \"Neighborhood_OHE_IDOTRR   -8124.2762   7043.131     -1.154      0.249   -2.19e+04    5693.874\\n\",\n       \"Neighborhood_OHE_MeadowV  -4486.2237   9507.217     -0.472      0.637   -2.31e+04    1.42e+04\\n\",\n       \"Neighborhood_OHE_Mitchel  -1.792e+04   4222.368     -4.245      0.000   -2.62e+04   -9640.032\\n\",\n       \"Neighborhood_OHE_NAmes    -1.482e+04   2980.842     -4.970      0.000   -2.07e+04   -8967.059\\n\",\n       \"Neighborhood_OHE_NPkVill   1.457e+04    1.3e+04      1.117      0.264    -1.1e+04    4.01e+04\\n\",\n       \"Neighborhood_OHE_NWAmes   -1.563e+04   3810.048     -4.103      0.000   -2.31e+04   -8155.691\\n\",\n       \"Neighborhood_OHE_NoRidge   3.405e+04   5108.666      6.664      0.000     2.4e+04    4.41e+04\\n\",\n       \"Neighborhood_OHE_NridgHt   2.408e+04   4495.108      5.357      0.000    1.53e+04    3.29e+04\\n\",\n       \"Neighborhood_OHE_OldTown  -1.378e+04   5188.658     -2.656      0.008    -2.4e+04   -3600.088\\n\",\n       \"Neighborhood_OHE_SWISU    -1.101e+04   6473.184     -1.700      0.089   -2.37e+04    1694.043\\n\",\n       \"Neighborhood_OHE_Sawyer   -9096.5155   3707.536     -2.454      0.014   -1.64e+04   -1822.579\\n\",\n       \"Neighborhood_OHE_SawyerW  -2713.1583   4030.968     -0.673      0.501   -1.06e+04    5195.331\\n\",\n       \"Neighborhood_OHE_Somerst    473.0768   6378.177      0.074      0.941    -1.2e+04     1.3e+04\\n\",\n       \"Neighborhood_OHE_StoneBr   4.238e+04   5929.178      7.148      0.000    3.08e+04     5.4e+04\\n\",\n       \"Neighborhood_OHE_Timber   -4534.9132   4950.992     -0.916      0.360   -1.42e+04    5178.602\\n\",\n       \"Neighborhood_OHE_Veenker   4353.6079   8133.294      0.535      0.593   -1.16e+04    2.03e+04\\n\",\n       \"Condition1_OHE_Artery     -7801.2753   5084.697     -1.534      0.125   -1.78e+04    2174.560\\n\",\n       \"Condition1_OHE_Feedr       -429.5102   4172.041     -0.103      0.918   -8614.775    7755.754\\n\",\n       \"Condition1_OHE_Norm        9584.1240   3175.648      3.018      0.003    3353.715    1.58e+04\\n\",\n       \"Condition1_OHE_PosA       -1570.5646   8957.572     -0.175      0.861   -1.91e+04     1.6e+04\\n\",\n       \"Condition1_OHE_PosN        2006.2559   6446.011      0.311      0.756   -1.06e+04    1.47e+04\\n\",\n       \"Condition1_OHE_RRAe       -1.461e+04   8110.361     -1.801      0.072   -3.05e+04    1302.710\\n\",\n       \"Condition1_OHE_RRAn        5895.9682   5781.315      1.020      0.308   -5446.584    1.72e+04\\n\",\n       \"Condition1_OHE_RRNe       -6683.7253   1.61e+04     -0.416      0.678   -3.82e+04    2.49e+04\\n\",\n       \"Condition1_OHE_RRNn        4720.8981   1.17e+04      0.403      0.687   -1.83e+04    2.77e+04\\n\",\n       \"Condition2_OHE_Artery      2.001e+04   2.45e+04      0.816      0.415   -2.81e+04    6.81e+04\\n\",\n       \"Condition2_OHE_Feedr       1.612e+04    1.7e+04      0.949      0.343   -1.72e+04    4.95e+04\\n\",\n       \"Condition2_OHE_Norm        1.434e+04   1.17e+04      1.221      0.222   -8698.454    3.74e+04\\n\",\n       \"Condition2_OHE_PosA        7.161e+04   3.15e+04      2.271      0.023    9740.065    1.33e+05\\n\",\n       \"Condition2_OHE_PosN       -1.802e+05   2.05e+04     -8.777      0.000    -2.2e+05    -1.4e+05\\n\",\n       \"Condition2_OHE_RRAe        1.586e+04   6.38e+04      0.248      0.804   -1.09e+05    1.41e+05\\n\",\n       \"Condition2_OHE_RRAn        7256.3041   2.53e+04      0.287      0.774   -4.23e+04    5.69e+04\\n\",\n       \"Condition2_OHE_RRNn        2.611e+04   2.01e+04      1.300      0.194   -1.33e+04    6.55e+04\\n\",\n       \"BldgType_OHE_1Fam          -716.5811   9984.921     -0.072      0.943   -2.03e+04    1.89e+04\\n\",\n       \"BldgType_OHE_2fmCon        8059.3471   2.37e+04      0.341      0.733   -3.84e+04    5.45e+04\\n\",\n       \"BldgType_OHE_Duplex       -3857.5649   4671.286     -0.826      0.409    -1.3e+04    5307.186\\n\",\n       \"BldgType_OHE_Twnhs        -8883.8366   1.14e+04     -0.778      0.437   -3.13e+04    1.35e+04\\n\",\n       \"BldgType_OHE_TwnhsE       -3488.4680   1.07e+04     -0.326      0.744   -2.45e+04    1.75e+04\\n\",\n       \"HouseStyle_OHE_1.5Fin     -4604.0771   8092.784     -0.569      0.570   -2.05e+04    1.13e+04\\n\",\n       \"HouseStyle_OHE_1.5Unf      2.016e+04   2.27e+04      0.889      0.374   -2.43e+04    6.46e+04\\n\",\n       \"HouseStyle_OHE_1Story      8291.4055   6853.861      1.210      0.227   -5155.411    2.17e+04\\n\",\n       \"HouseStyle_OHE_2.5Fin     -2.954e+04   1.44e+04     -2.052      0.040   -5.78e+04   -1299.420\\n\",\n       \"HouseStyle_OHE_2.5Unf      9664.9619   1.39e+04      0.694      0.488   -1.77e+04     3.7e+04\\n\",\n       \"HouseStyle_OHE_2Story     -1.393e+04   6785.508     -2.053      0.040   -2.72e+04    -619.319\\n\",\n       \"HouseStyle_OHE_SFoyer      4838.1623   9922.688      0.488      0.626   -1.46e+04    2.43e+04\\n\",\n       \"HouseStyle_OHE_SLvl       -3756.6333   1.19e+04     -0.316      0.752   -2.71e+04    1.95e+04\\n\",\n       \"RoofStyle_OHE_Flat        -1.689e+04   1.73e+04     -0.975      0.330   -5.09e+04    1.71e+04\\n\",\n       \"RoofStyle_OHE_Gable       -1.148e+04   7732.231     -1.485      0.138   -2.66e+04    3690.317\\n\",\n       \"RoofStyle_OHE_Gambrel     -7415.3888   1.04e+04     -0.713      0.476   -2.78e+04     1.3e+04\\n\",\n       \"RoofStyle_OHE_Hip         -9351.0472   7843.684     -1.192      0.233   -2.47e+04    6037.736\\n\",\n       \"RoofStyle_OHE_Mansard      -481.5264   1.12e+04     -0.043      0.966   -2.24e+04    2.14e+04\\n\",\n       \"RoofStyle_OHE_Shed         3.673e+04      3e+04      1.223      0.221   -2.22e+04    9.56e+04\\n\",\n       \"RoofMatl_OHE_ClyTile      -4.909e+05   3.37e+04    -14.583      0.000   -5.57e+05   -4.25e+05\\n\",\n       \"RoofMatl_OHE_CompShg       5.286e+04   1.07e+04      4.958      0.000    3.19e+04    7.38e+04\\n\",\n       \"RoofMatl_OHE_Membran       1.018e+05   2.88e+04      3.540      0.000    4.54e+04    1.58e+05\\n\",\n       \"RoofMatl_OHE_Metal         6.736e+04   2.72e+04      2.474      0.014    1.39e+04    1.21e+05\\n\",\n       \"RoofMatl_OHE_Roll          5.087e+04   2.61e+04      1.949      0.051    -327.761    1.02e+05\\n\",\n       \"RoofMatl_OHE_Tar&Grv       4.625e+04    1.5e+04      3.084      0.002    1.68e+04    7.57e+04\\n\",\n       \"RoofMatl_OHE_WdShake        4.21e+04   1.75e+04      2.400      0.017    7677.711    7.65e+04\\n\",\n       \"RoofMatl_OHE_WdShngl       1.208e+05   1.44e+04      8.413      0.000    9.26e+04    1.49e+05\\n\",\n       \"Exterior1st_OHE_AsbShng    9696.9557   1.27e+04      0.761      0.447   -1.53e+04    3.47e+04\\n\",\n       \"Exterior1st_OHE_AsphShn   -2.415e+04   3.09e+04     -0.781      0.435   -8.48e+04    3.65e+04\\n\",\n       \"Exterior1st_OHE_BrkComm    1.531e+04   2.56e+04      0.598      0.550   -3.49e+04    6.56e+04\\n\",\n       \"Exterior1st_OHE_BrkFace    1.711e+04   6574.131      2.602      0.009    4208.008       3e+04\\n\",\n       \"Exterior1st_OHE_CBlock    -1796.2630   1.35e+04     -0.133      0.894   -2.83e+04    2.48e+04\\n\",\n       \"Exterior1st_OHE_CemntBd    2.217e+04   1.51e+04      1.470      0.142   -7412.081    5.18e+04\\n\",\n       \"Exterior1st_OHE_HdBoard   -6860.0299   5879.900     -1.167      0.244   -1.84e+04    4675.940\\n\",\n       \"Exterior1st_OHE_ImStucc   -1.281e+04   2.52e+04     -0.509      0.611   -6.22e+04    3.66e+04\\n\",\n       \"Exterior1st_OHE_MetalSd    2689.8186   8964.917      0.300      0.764   -1.49e+04    2.03e+04\\n\",\n       \"Exterior1st_OHE_Plywood   -5150.1853   5983.701     -0.861      0.390   -1.69e+04    6589.436\\n\",\n       \"Exterior1st_OHE_Stone     -1.816e+04   2.09e+04     -0.867      0.386   -5.92e+04    2.29e+04\\n\",\n       \"Exterior1st_OHE_Stucco      510.5993   9283.028      0.055      0.956   -1.77e+04    1.87e+04\\n\",\n       \"Exterior1st_OHE_VinylSd   -4822.0000   8171.964     -0.590      0.555   -2.09e+04    1.12e+04\\n\",\n       \"Exterior1st_OHE_Wd Sdng   -1860.6358   5630.041     -0.330      0.741   -1.29e+04    9185.128\\n\",\n       \"Exterior1st_OHE_WdShing    -769.1740   7248.323     -0.106      0.916    -1.5e+04    1.35e+04\\n\",\n       \"Exterior2nd_OHE_AsbShng   -3203.8250   1.19e+04     -0.269      0.788   -2.66e+04    2.02e+04\\n\",\n       \"Exterior2nd_OHE_AsphShn    3915.7836   1.88e+04      0.209      0.835   -3.29e+04    4.07e+04\\n\",\n       \"Exterior2nd_OHE_Brk Cmn   -3173.2980   1.74e+04     -0.182      0.855   -3.74e+04     3.1e+04\\n\",\n       \"Exterior2nd_OHE_BrkFace    1258.8278   7598.163      0.166      0.868   -1.36e+04    1.62e+04\\n\",\n       \"Exterior2nd_OHE_CBlock    -1796.2630   1.35e+04     -0.133      0.894   -2.83e+04    2.48e+04\\n\",\n       \"Exterior2nd_OHE_CmentBd   -1.574e+04   1.51e+04     -1.044      0.297   -4.53e+04    1.38e+04\\n\",\n       \"Exterior2nd_OHE_HdBoard    6872.3491   5364.921      1.281      0.200   -3653.266    1.74e+04\\n\",\n       \"Exterior2nd_OHE_ImStucc    1.311e+04   9301.970      1.409      0.159   -5144.716    3.14e+04\\n\",\n       \"Exterior2nd_OHE_MetalSd     435.0711   8724.900      0.050      0.960   -1.67e+04    1.76e+04\\n\",\n       \"Exterior2nd_OHE_Other     -1.489e+04   2.48e+04     -0.600      0.548   -6.36e+04    3.38e+04\\n\",\n       \"Exterior2nd_OHE_Plywood    3124.0477   5007.673      0.624      0.533   -6700.671    1.29e+04\\n\",\n       \"Exterior2nd_OHE_Stone     -5797.3288   1.44e+04     -0.402      0.688   -3.41e+04    2.25e+04\\n\",\n       \"Exterior2nd_OHE_Stucco    -1983.3949   8964.950     -0.221      0.825   -1.96e+04    1.56e+04\\n\",\n       \"Exterior2nd_OHE_VinylSd    7700.3839   7298.120      1.055      0.292   -6618.039     2.2e+04\\n\",\n       \"Exterior2nd_OHE_Wd Sdng    3585.3264   5011.472      0.715      0.474   -6246.847    1.34e+04\\n\",\n       \"Exterior2nd_OHE_Wd Shng   -2299.6747   5899.731     -0.390      0.697   -1.39e+04    9275.203\\n\",\n       \"MasVnrType_OHE_BrkCmn     -6274.5203   5517.488     -1.137      0.256   -1.71e+04    4550.421\\n\",\n       \"MasVnrType_OHE_BrkFace    -2262.0880   2368.739     -0.955      0.340   -6909.395    2385.219\\n\",\n       \"MasVnrType_OHE_None       -3672.8917   2259.807     -1.625      0.104   -8106.482     760.698\\n\",\n       \"MasVnrType_OHE_Stone       3322.3963   2919.671      1.138      0.255   -2405.803    9050.596\\n\",\n       \"ExterQual_OHE_Ex           1.422e+04   5116.160      2.780      0.006    4185.143    2.43e+04\\n\",\n       \"ExterQual_OHE_Fa          -6367.8330   8771.450     -0.726      0.468   -2.36e+04    1.08e+04\\n\",\n       \"ExterQual_OHE_Gd          -8843.3857   3594.454     -2.460      0.014   -1.59e+04   -1791.308\\n\",\n       \"ExterQual_OHE_TA          -7898.5910   3564.036     -2.216      0.027   -1.49e+04    -906.190\\n\",\n       \"ExterCond_OHE_Ex           1874.0404   1.58e+04      0.118      0.906   -2.92e+04     3.3e+04\\n\",\n       \"ExterCond_OHE_Fa           -823.5374   8072.232     -0.102      0.919   -1.67e+04     1.5e+04\\n\",\n       \"ExterCond_OHE_Gd          -1806.4046   7095.527     -0.255      0.799   -1.57e+04    1.21e+04\\n\",\n       \"ExterCond_OHE_Po          -8032.0747   2.28e+04     -0.352      0.725   -5.29e+04    3.68e+04\\n\",\n       \"ExterCond_OHE_TA            -99.1272   6795.914     -0.015      0.988   -1.34e+04    1.32e+04\\n\",\n       \"Foundation_OHE_BrkTil      -735.2174   4378.082     -0.168      0.867   -9324.722    7854.287\\n\",\n       \"Foundation_OHE_CBlock      4520.0426   3868.479      1.168      0.243   -3069.654    1.21e+04\\n\",\n       \"Foundation_OHE_PConc       4739.6745   3924.169      1.208      0.227   -2959.282    1.24e+04\\n\",\n       \"Foundation_OHE_Slab       -6697.5708   9147.951     -0.732      0.464   -2.46e+04    1.13e+04\\n\",\n       \"Foundation_OHE_Stone       5152.2702   1.07e+04      0.481      0.631   -1.59e+04    2.62e+04\\n\",\n       \"Foundation_OHE_Wood       -1.587e+04   1.29e+04     -1.229      0.219   -4.12e+04    9465.221\\n\",\n       \"BsmtQual_OHE_Ex            1.391e+04   4262.926      3.262      0.001    5543.931    2.23e+04\\n\",\n       \"BsmtQual_OHE_Fa           -2292.1347   4875.000     -0.470      0.638   -1.19e+04    7272.289\\n\",\n       \"BsmtQual_OHE_Gd           -5966.2262   3339.328     -1.787      0.074   -1.25e+04     585.312\\n\",\n       \"BsmtQual_OHE_NA           -9754.4051      1e+04     -0.971      0.332   -2.95e+04    9955.272\\n\",\n       \"BsmtQual_OHE_TA           -4781.8426   3332.797     -1.435      0.152   -1.13e+04    1756.881\\n\",\n       \"BsmtCond_OHE_Fa           -4845.8247   8149.163     -0.595      0.552   -2.08e+04    1.11e+04\\n\",\n       \"BsmtCond_OHE_Gd           -7111.8847   8377.604     -0.849      0.396   -2.35e+04    9324.413\\n\",\n       \"BsmtCond_OHE_NA           -9754.4051      1e+04     -0.971      0.332   -2.95e+04    9955.272\\n\",\n       \"BsmtCond_OHE_Po            1.298e+04   2.42e+04      0.537      0.591   -3.44e+04    6.04e+04\\n\",\n       \"BsmtCond_OHE_TA            -150.8057   7993.237     -0.019      0.985   -1.58e+04    1.55e+04\\n\",\n       \"BsmtExposure_OHE_Av       -1690.9167   5189.468     -0.326      0.745   -1.19e+04    8490.473\\n\",\n       \"BsmtExposure_OHE_Gd        1.881e+04   5462.687      3.444      0.001    8096.549    2.95e+04\\n\",\n       \"BsmtExposure_OHE_Mn       -5336.8363   5397.044     -0.989      0.323   -1.59e+04    5251.801\\n\",\n       \"BsmtExposure_OHE_NA       -1.321e+04   1.95e+04     -0.676      0.499   -5.16e+04    2.51e+04\\n\",\n       \"BsmtExposure_OHE_No       -7467.7095   5089.471     -1.467      0.143   -1.75e+04    2517.491\\n\",\n       \"BsmtFinType1_OHE_ALQ       1183.0046   2593.365      0.456      0.648   -3905.004    6271.013\\n\",\n       \"BsmtFinType1_OHE_BLQ       2715.0436   2736.678      0.992      0.321   -2654.135    8084.222\\n\",\n       \"BsmtFinType1_OHE_GLQ       4919.8223   2639.327      1.864      0.063    -258.360    1.01e+04\\n\",\n       \"BsmtFinType1_OHE_LwQ      -4735.4031   3382.713     -1.400      0.162   -1.14e+04    1901.253\\n\",\n       \"BsmtFinType1_OHE_NA       -9754.4051      1e+04     -0.971      0.332   -2.95e+04    9955.272\\n\",\n       \"BsmtFinType1_OHE_Rec       1496.4299   2817.792      0.531      0.595   -4031.888    7024.748\\n\",\n       \"BsmtFinType1_OHE_Unf      -4711.5957   2408.305     -1.956      0.051   -9436.529      13.337\\n\",\n       \"BsmtFinType2_OHE_ALQ       1997.7787   6684.893      0.299      0.765   -1.11e+04    1.51e+04\\n\",\n       \"BsmtFinType2_OHE_BLQ      -7776.7648   5524.662     -1.408      0.159   -1.86e+04    3062.252\\n\",\n       \"BsmtFinType2_OHE_GLQ      -3241.5252   7811.910     -0.415      0.678   -1.86e+04    1.21e+04\\n\",\n       \"BsmtFinType2_OHE_LwQ      -9113.0595   5262.793     -1.732      0.084   -1.94e+04    1212.187\\n\",\n       \"BsmtFinType2_OHE_NA        1.938e+04   2.13e+04      0.911      0.362   -2.24e+04    6.11e+04\\n\",\n       \"BsmtFinType2_OHE_Rec      -4760.1815   5159.896     -0.923      0.356   -1.49e+04    5363.188\\n\",\n       \"BsmtFinType2_OHE_Unf      -5368.5507   4092.223     -1.312      0.190   -1.34e+04    2660.116\\n\",\n       \"Heating_OHE_Floor           439.6600   2.34e+04      0.019      0.985   -4.55e+04    4.64e+04\\n\",\n       \"Heating_OHE_GasA           3335.7938   6837.557      0.488      0.626   -1.01e+04    1.68e+04\\n\",\n       \"Heating_OHE_GasW           6368.9145   8447.243      0.754      0.451   -1.02e+04    2.29e+04\\n\",\n       \"Heating_OHE_Grav           1322.5788   1.18e+04      0.112      0.911   -2.19e+04    2.45e+04\\n\",\n       \"Heating_OHE_OthW          -3.457e+04   1.72e+04     -2.012      0.044   -6.83e+04    -859.113\\n\",\n       \"Heating_OHE_Wall           1.422e+04   1.41e+04      1.006      0.315   -1.35e+04     4.2e+04\\n\",\n       \"HeatingQC_OHE_Ex           2004.6743   5845.507      0.343      0.732   -9463.819    1.35e+04\\n\",\n       \"HeatingQC_OHE_Fa           2442.9863   6730.368      0.363      0.717   -1.08e+04    1.56e+04\\n\",\n       \"HeatingQC_OHE_Gd          -1012.4556   5879.638     -0.172      0.863   -1.25e+04    1.05e+04\\n\",\n       \"HeatingQC_OHE_Po          -1.197e+04   2.27e+04     -0.527      0.598   -5.66e+04    3.26e+04\\n\",\n       \"HeatingQC_OHE_TA           -348.6333   5795.189     -0.060      0.952   -1.17e+04     1.1e+04\\n\",\n       \"CentralAir_OHE_N          -5246.3361   2681.618     -1.956      0.051   -1.05e+04      14.818\\n\",\n       \"CentralAir_OHE_Y          -3640.7675   2852.738     -1.276      0.202   -9237.649    1956.114\\n\",\n       \"Electrical_OHE_FuseA       -791.5328   1.09e+04     -0.072      0.942   -2.22e+04    2.06e+04\\n\",\n       \"Electrical_OHE_FuseF      -1438.2511   1.18e+04     -0.122      0.903   -2.45e+04    2.17e+04\\n\",\n       \"Electrical_OHE_FuseP      -1.348e+04    1.7e+04     -0.795      0.427   -4.68e+04    1.98e+04\\n\",\n       \"Electrical_OHE_Mix         1.031e+04   3.75e+04      0.275      0.784   -6.33e+04    8.39e+04\\n\",\n       \"Electrical_OHE_SBrkr      -3482.1497   1.09e+04     -0.319      0.750   -2.49e+04     1.8e+04\\n\",\n       \"KitchenQual_OHE_Ex         1.696e+04   3297.921      5.143      0.000    1.05e+04    2.34e+04\\n\",\n       \"KitchenQual_OHE_Fa        -7828.8880   4265.506     -1.835      0.067   -1.62e+04     539.748\\n\",\n       \"KitchenQual_OHE_Gd        -9598.4777   2218.775     -4.326      0.000    -1.4e+04   -5245.390\\n\",\n       \"KitchenQual_OHE_TA        -8419.3093   2131.317     -3.950      0.000   -1.26e+04   -4237.808\\n\",\n       \"Functional_OHE_Maj1        -715.7203   8569.672     -0.084      0.933   -1.75e+04    1.61e+04\\n\",\n       \"Functional_OHE_Maj2       -8942.8567   1.22e+04     -0.735      0.462   -3.28e+04    1.49e+04\\n\",\n       \"Functional_OHE_Min1        4869.5743   6253.392      0.779      0.436   -7399.161    1.71e+04\\n\",\n       \"Functional_OHE_Min2        6029.6443   6505.458      0.927      0.354   -6733.629    1.88e+04\\n\",\n       \"Functional_OHE_Mod         1383.6326   8505.898      0.163      0.871   -1.53e+04    1.81e+04\\n\",\n       \"Functional_OHE_Sev        -3.265e+04   2.59e+04     -1.261      0.208   -8.35e+04    1.82e+04\\n\",\n       \"Functional_OHE_Typ         2.114e+04   5172.138      4.088      0.000     1.1e+04    3.13e+04\\n\",\n       \"GarageType_OHE_2Types     -1.567e+04   9932.399     -1.578      0.115   -3.52e+04    3813.919\\n\",\n       \"GarageType_OHE_Attchd      1981.8353   3076.841      0.644      0.520   -4054.720    8018.390\\n\",\n       \"GarageType_OHE_Basment    -1115.6943   6412.207     -0.174      0.862   -1.37e+04    1.15e+04\\n\",\n       \"GarageType_OHE_BuiltIn    -1923.5918   4083.332     -0.471      0.638   -9934.816    6087.633\\n\",\n       \"GarageType_OHE_CarPort     3052.2831   9302.887      0.328      0.743   -1.52e+04    2.13e+04\\n\",\n       \"GarageType_OHE_Detchd      3845.0677   3216.441      1.195      0.232   -2465.373    1.02e+04\\n\",\n       \"GarageType_OHE_NA           945.7773   1729.266      0.547      0.585   -2446.927    4338.482\\n\",\n       \"GarageFinish_OHE_Fin      -2013.3263   1793.821     -1.122      0.262   -5532.684    1506.031\\n\",\n       \"GarageFinish_OHE_NA         945.7773   1729.266      0.547      0.585   -2446.927    4338.482\\n\",\n       \"GarageFinish_OHE_RFn      -4884.6414   1679.299     -2.909      0.004   -8179.313   -1589.970\\n\",\n       \"GarageFinish_OHE_Unf      -2934.9133   1816.802     -1.615      0.106   -6499.357     629.530\\n\",\n       \"GarageQual_OHE_Ex          9.166e+04   2.53e+04      3.624      0.000     4.2e+04    1.41e+05\\n\",\n       \"GarageQual_OHE_Fa         -2.851e+04   8707.863     -3.274      0.001   -4.56e+04   -1.14e+04\\n\",\n       \"GarageQual_OHE_Gd         -2.447e+04   1.08e+04     -2.260      0.024   -4.57e+04   -3224.112\\n\",\n       \"GarageQual_OHE_NA           945.7773   1729.266      0.547      0.585   -2446.927    4338.482\\n\",\n       \"GarageQual_OHE_Po         -2.482e+04    2.3e+04     -1.081      0.280   -6.99e+04    2.02e+04\\n\",\n       \"GarageQual_OHE_TA         -2.368e+04   8441.072     -2.806      0.005   -4.02e+04   -7123.487\\n\",\n       \"GarageCond_OHE_Ex         -8.566e+04    2.9e+04     -2.953      0.003   -1.43e+05   -2.88e+04\\n\",\n       \"GarageCond_OHE_Fa          1.788e+04   8704.218      2.054      0.040     804.321     3.5e+04\\n\",\n       \"GarageCond_OHE_Gd          2.134e+04   1.14e+04      1.870      0.062   -1054.208    4.37e+04\\n\",\n       \"GarageCond_OHE_NA           945.7773   1729.266      0.547      0.585   -2446.927    4338.482\\n\",\n       \"GarageCond_OHE_Po          1.464e+04   1.48e+04      0.986      0.324   -1.45e+04    4.38e+04\\n\",\n       \"GarageCond_OHE_TA          2.197e+04   8023.293      2.738      0.006    6227.248    3.77e+04\\n\",\n       \"PavedDrive_OHE_N           -786.7359   3061.162     -0.257      0.797   -6792.530    5219.058\\n\",\n       \"PavedDrive_OHE_P          -6025.0798   3793.883     -1.588      0.113   -1.35e+04    1418.264\\n\",\n       \"PavedDrive_OHE_Y          -2075.2879   2469.093     -0.841      0.401   -6919.483    2768.907\\n\",\n       \"PoolQC_OHE_Ex              6.616e+04   1.82e+04      3.629      0.000    3.04e+04    1.02e+05\\n\",\n       \"PoolQC_OHE_Fa              -3.16e+04   2.05e+04     -1.543      0.123   -7.18e+04    8589.279\\n\",\n       \"PoolQC_OHE_Gd              1.028e+04   1.71e+04      0.600      0.549   -2.33e+04    4.39e+04\\n\",\n       \"PoolQC_OHE_NA             -5.373e+04   9797.772     -5.484      0.000    -7.3e+04   -3.45e+04\\n\",\n       \"Fence_OHE_GdPrv           -7630.4719   3554.210     -2.147      0.032   -1.46e+04    -657.351\\n\",\n       \"Fence_OHE_GdWo             2541.7890   3449.379      0.737      0.461   -4225.660    9309.239\\n\",\n       \"Fence_OHE_MnPrv            2481.3099   2689.166      0.923      0.356   -2794.654    7757.274\\n\",\n       \"Fence_OHE_MnWw            -3269.8532   6239.134     -0.524      0.600   -1.55e+04    8970.910\\n\",\n       \"Fence_OHE_NA              -3009.8774   2359.220     -1.276      0.202   -7638.509    1618.755\\n\",\n       \"MiscFeature_OHE_Gar2      -1.054e+05   7.98e+04     -1.320      0.187   -2.62e+05    5.12e+04\\n\",\n       \"MiscFeature_OHE_NA         3.343e+04    2.8e+04      1.194      0.233   -2.15e+04    8.83e+04\\n\",\n       \"MiscFeature_OHE_Othr       3.893e+04   2.48e+04      1.568      0.117   -9766.082    8.76e+04\\n\",\n       \"MiscFeature_OHE_Shed       3.175e+04   2.37e+04      1.339      0.181   -1.48e+04    7.83e+04\\n\",\n       \"MiscFeature_OHE_TenC      -7590.1330   3.26e+04     -0.233      0.816   -7.15e+04    5.64e+04\\n\",\n       \"SaleType_OHE_COD           -1.36e+04   5758.295     -2.362      0.018   -2.49e+04   -2304.596\\n\",\n       \"SaleType_OHE_CWD          -2098.4435   1.21e+04     -0.174      0.862   -2.58e+04    2.16e+04\\n\",\n       \"SaleType_OHE_Con           1.011e+04   1.65e+04      0.611      0.541   -2.23e+04    4.26e+04\\n\",\n       \"SaleType_OHE_ConLD         1248.1659   9025.417      0.138      0.890   -1.65e+04     1.9e+04\\n\",\n       \"SaleType_OHE_ConLI        -2735.0310   1.09e+04     -0.251      0.802   -2.41e+04    1.87e+04\\n\",\n       \"SaleType_OHE_ConLw        -9016.4938   1.15e+04     -0.787      0.431   -3.15e+04    1.35e+04\\n\",\n       \"SaleType_OHE_New           2.217e+04   1.42e+04      1.566      0.118   -5606.285    4.99e+04\\n\",\n       \"SaleType_OHE_Oth          -1335.1238   1.38e+04     -0.097      0.923   -2.84e+04    2.58e+04\\n\",\n       \"SaleType_OHE_WD           -1.363e+04   4322.187     -3.154      0.002   -2.21e+04   -5150.580\\n\",\n       \"SaleCondition_OHE_Abnorml -4331.4298   4710.968     -0.919      0.358   -1.36e+04    4911.173\\n\",\n       \"SaleCondition_OHE_AdjLand  9443.5614   1.31e+04      0.722      0.471   -1.62e+04    3.51e+04\\n\",\n       \"SaleCondition_OHE_Alloca   3457.3320   8613.688      0.401      0.688   -1.34e+04    2.04e+04\\n\",\n       \"SaleCondition_OHE_Family  -3097.8496   6351.270     -0.488      0.626   -1.56e+04    9362.916\\n\",\n       \"SaleCondition_OHE_Normal   3316.2751   4173.754      0.795      0.427   -4872.350    1.15e+04\\n\",\n       \"SaleCondition_OHE_Partial -1.767e+04   1.33e+04     -1.327      0.185   -4.38e+04    8450.767\\n\",\n       \"MSSubClass_OHE_20.0        7963.2412   6544.517      1.217      0.224   -4876.663    2.08e+04\\n\",\n       \"MSSubClass_OHE_30.0        9157.7316   7559.871      1.211      0.226   -5674.228     2.4e+04\\n\",\n       \"MSSubClass_OHE_40.0       -4097.6267   1.82e+04     -0.226      0.822   -3.97e+04    3.15e+04\\n\",\n       \"MSSubClass_OHE_45.0         618.1253   2.53e+04      0.024      0.981    -4.9e+04    5.03e+04\\n\",\n       \"MSSubClass_OHE_50.0        1.106e+04   8962.787      1.235      0.217   -6519.392    2.86e+04\\n\",\n       \"MSSubClass_OHE_60.0        1.361e+04   7755.112      1.756      0.079   -1600.793    2.88e+04\\n\",\n       \"MSSubClass_OHE_70.0        1.665e+04   7990.503      2.084      0.037     972.058    3.23e+04\\n\",\n       \"MSSubClass_OHE_75.0       -1.453e+04   1.54e+04     -0.946      0.344   -4.47e+04    1.56e+04\\n\",\n       \"MSSubClass_OHE_80.0        8460.2993   1.26e+04      0.671      0.502   -1.63e+04    3.32e+04\\n\",\n       \"MSSubClass_OHE_85.0          14.9640   1.12e+04      0.001      0.999   -2.19e+04    2.19e+04\\n\",\n       \"MSSubClass_OHE_90.0       -3857.5649   4671.286     -0.826      0.409    -1.3e+04    5307.186\\n\",\n       \"MSSubClass_OHE_120.0      -1.566e+04   1.31e+04     -1.197      0.231   -4.13e+04       1e+04\\n\",\n       \"MSSubClass_OHE_160.0      -9945.8069   1.49e+04     -0.669      0.503   -3.91e+04    1.92e+04\\n\",\n       \"MSSubClass_OHE_180.0      -2.013e+04   1.74e+04     -1.157      0.248   -5.43e+04     1.4e+04\\n\",\n       \"MSSubClass_OHE_190.0      -8199.1071   2.76e+04     -0.297      0.767   -6.24e+04     4.6e+04\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      373.078   Durbin-Watson:                   1.937\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):             9764.841\\n\",\n       \"Skew:                           0.588   Prob(JB):                         0.00\\n\",\n       \"Kurtosis:                      15.654   Cond. No.                     1.47e+19\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Notes:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"[2] The smallest eigenvalue is 1.73e-29. This might indicate that there are\\n\",\n       \"strong multicollinearity problems or that the design matrix is singular.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Train a linear regression using statsmodels\\n\",\n    \"model = sm.OLS(y, X_ohe)\\n\",\n    \"results = model.fit()\\n\",\n    \"results.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"# Train a Fine-tuned Predictive ML Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Now we train a LightGBM regression model and use grid search to do model tuning.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Split data into train and test\\n\",\n    \"from sklearn.model_selection import train_test_split\\n\",\n    \"\\n\",\n    \"x_train_ohe, x_test_ohe, x_train, x_test, y_train, y_test = train_test_split(\\n\",\n    \"    X_ohe, X, y, test_size=0.2, random_state=0\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# train a lightGBM regression model\\n\",\n    \"est = LGBMRegressor()\\n\",\n    \"param_grid = {\\\"learning_rate\\\": [0.1, 0.05, 0.01], \\\"max_depth\\\": [3, 5, 10]}\\n\",\n    \"search = GridSearchCV(est, param_grid, n_jobs=-1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Best estimator:  {'learning_rate': 0.1, 'max_depth': 5}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"search.fit(x_train_ohe, y_train)\\n\",\n    \"print(\\\"Best estimator: \\\", search.best_params_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Test set score:  0.8581588030286735\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"Test set score: \\\", search.best_estimator_.score(x_test_ohe, y_test))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Correlation Interpretation\\n\",\n    \"### Feature Importance - Shap Value\\n\",\n    \"We explain this ML model by understanding the top important features to predict the housing price, internally using **shap value**.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"fitted_model = search.best_estimator_\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \" 98%|===================| 286/291 [00:17<00:00]        \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# use interventional approach\\n\",\n    \"background = shap.maskers.Independent(x_train_ohe, max_samples=1000)\\n\",\n    \"explainer = shap.TreeExplainer(\\n\",\n    \"    fitted_model, data=background, feature_names=X_ohe.columns\\n\",\n    \")\\n\",\n    \"shap_values = explainer(x_test_ohe)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x684 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# plot the feature importance\\n\",\n    \"shap.summary_plot(shap_values, x_test_ohe)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary plot above, we could see the **most important features** sorted by their importance level. It tells us that houses that measure high in overall quality, square footage, and are also relatively new will have a higher housing price. \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"# Causal Interpretation\\n\",\n    \"### Direct Causal Effect --  Do certain house characteristics have a direct effect on home value?\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We've seen which features are good predictors of home value, but are these features also causally signficiant? Below we use the CausalAnalysis class to assess the causal effects of certain house characteristics on home value.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# order feature names according to shap values\\n\",\n    \"vals = np.abs(shap_values.values).mean(0)\\n\",\n    \"feature_importance = pd.DataFrame(\\n\",\n    \"    list(zip(shap_values.feature_names, vals)), columns=[\\\"features\\\", \\\"importance\\\"]\\n\",\n    \")\\n\",\n    \"feature_importance.sort_values(by=[\\\"importance\\\"], ascending=False, inplace=True)\\n\",\n    \"\\n\",\n    \"# keep top k features for causal analysis\\n\",\n    \"k = 5\\n\",\n    \"sorted_features = feature_importance[\\\"features\\\"]\\n\",\n    \"top_k_features = list(sorted_features.values)[:5]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.solutions.causal_analysis._causal_analysis.CausalAnalysis at 0x18dfacaf4c0>\"\n      ]\n     },\n     \"execution_count\": 16,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.solutions.causal_analysis import CausalAnalysis\\n\",\n    \"\\n\",\n    \"# initialize heterogeneity features\\n\",\n    \"hetero_cols = ['AgeAtSale', 'MSZoning']\\n\",\n    \"ca = CausalAnalysis(\\n\",\n    \"    feature_inds=top_k_features + [\\n\",\n    \"        'HasFireplace',\\n\",\n    \"        'HasPorch',\\n\",\n    \"        'HasDeck',\\n\",\n    \"    ],\\n\",\n    \"    categorical=categorical + ['HasFireplace', 'HasPorch', 'HasDeck', 'HasFence'],\\n\",\n    \"    heterogeneity_inds=hetero_cols,\\n\",\n    \"    classification=False,\\n\",\n    \"    nuisance_models=\\\"automl\\\",\\n\",\n    \"    heterogeneity_model=\\\"linear\\\",\\n\",\n    \"    n_jobs=-1,\\n\",\n    \"    random_state=123,\\n\",\n    \"    upper_bound_on_cat_expansion=6\\n\",\n    \")\\n\",\n    \"ca.fit(x_train, y_train)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallQual</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>10103.815563</td>\\n\",\n       \"      <td>1675.148678</td>\\n\",\n       \"      <td>6.031593</td>\\n\",\n       \"      <td>1.623509e-09</td>\\n\",\n       \"      <td>6820.584485</td>\\n\",\n       \"      <td>13387.046640</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GarageCars</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>13144.175268</td>\\n\",\n       \"      <td>2997.638920</td>\\n\",\n       \"      <td>4.384843</td>\\n\",\n       \"      <td>1.160696e-05</td>\\n\",\n       \"      <td>7268.910946</td>\\n\",\n       \"      <td>19019.439590</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallCond</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>5645.799133</td>\\n\",\n       \"      <td>1457.913311</td>\\n\",\n       \"      <td>3.872520</td>\\n\",\n       \"      <td>1.077156e-04</td>\\n\",\n       \"      <td>2788.341551</td>\\n\",\n       \"      <td>8503.256716</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GrLivArea</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>53.680237</td>\\n\",\n       \"      <td>16.896738</td>\\n\",\n       \"      <td>3.176959</td>\\n\",\n       \"      <td>1.488283e-03</td>\\n\",\n       \"      <td>20.563239</td>\\n\",\n       \"      <td>86.797235</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasFireplace</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>4391.217178</td>\\n\",\n       \"      <td>1510.683165</td>\\n\",\n       \"      <td>2.906776</td>\\n\",\n       \"      <td>3.651749e-03</td>\\n\",\n       \"      <td>1430.332582</td>\\n\",\n       \"      <td>7352.101775</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasPorch</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>4702.903044</td>\\n\",\n       \"      <td>2279.139024</td>\\n\",\n       \"      <td>2.063456</td>\\n\",\n       \"      <td>3.906933e-02</td>\\n\",\n       \"      <td>235.872642</td>\\n\",\n       \"      <td>9169.933446</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-122.702114</td>\\n\",\n       \"      <td>110.966856</td>\\n\",\n       \"      <td>-1.105755</td>\\n\",\n       \"      <td>2.688327e-01</td>\\n\",\n       \"      <td>-340.193155</td>\\n\",\n       \"      <td>94.788926</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasDeck</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>1610.641783</td>\\n\",\n       \"      <td>1819.477098</td>\\n\",\n       \"      <td>0.885222</td>\\n\",\n       \"      <td>3.760367e-01</td>\\n\",\n       \"      <td>-1955.467800</td>\\n\",\n       \"      <td>5176.751367</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                   point       stderr     zstat       p_value  \\\\\\n\",\n       \"feature      feature_value                                                      \\n\",\n       \"OverallQual  num            10103.815563  1675.148678  6.031593  1.623509e-09   \\n\",\n       \"GarageCars   num            13144.175268  2997.638920  4.384843  1.160696e-05   \\n\",\n       \"OverallCond  num             5645.799133  1457.913311  3.872520  1.077156e-04   \\n\",\n       \"GrLivArea    num               53.680237    16.896738  3.176959  1.488283e-03   \\n\",\n       \"HasFireplace 1v0             4391.217178  1510.683165  2.906776  3.651749e-03   \\n\",\n       \"HasPorch     1v0             4702.903044  2279.139024  2.063456  3.906933e-02   \\n\",\n       \"AgeAtSale    num             -122.702114   110.966856 -1.105755  2.688327e-01   \\n\",\n       \"HasDeck      1v0             1610.641783  1819.477098  0.885222  3.760367e-01   \\n\",\n       \"\\n\",\n       \"                               ci_lower      ci_upper  \\n\",\n       \"feature      feature_value                             \\n\",\n       \"OverallQual  num            6820.584485  13387.046640  \\n\",\n       \"GarageCars   num            7268.910946  19019.439590  \\n\",\n       \"OverallCond  num            2788.341551   8503.256716  \\n\",\n       \"GrLivArea    num              20.563239     86.797235  \\n\",\n       \"HasFireplace 1v0            1430.332582   7352.101775  \\n\",\n       \"HasPorch     1v0             235.872642   9169.933446  \\n\",\n       \"AgeAtSale    num            -340.193155     94.788926  \\n\",\n       \"HasDeck      1v0           -1955.467800   5176.751367  \"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# get global causal effect ordered by causal importance (pvalue)\\n\",\n    \"global_summ = ca.global_causal_effect(alpha=0.05)\\n\",\n    \"global_summ.sort_values(by=\\\"p_value\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"The table above sorts the features by causal significance (p value). If we compare the causal summary table to the ordering of the SHAP feature importances plot, we notice that for the most part the top predictive features are also causally significant. For example, OverallQual is the most predictive feature according to SHAP, and is also the most causally signficant. However, in contrast, AgeAtSale is a good predictor, but not very causally significant. This could perhaps be explained by the idea that even though older houses are correlated with low quality characteristics, once you control for these characteristics, house age by itself is not causally significant.   \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# helper function to plot error bar\\n\",\n    \"def errorbar(res):\\n\",\n    \"    xticks = res.index.get_level_values(0)\\n\",\n    \"    lowererr = res[\\\"point\\\"] - res[\\\"ci_lower\\\"]\\n\",\n    \"    uppererr = res[\\\"ci_upper\\\"] - res[\\\"point\\\"]\\n\",\n    \"    xticks = [\\n\",\n    \"        \\\"{}***\\\".format(t)\\n\",\n    \"        if p < 1e-6\\n\",\n    \"        else (\\\"{}**\\\".format(t) if p < 1e-3 else (\\\"{}*\\\".format(t) if p < 1e-2 else t))\\n\",\n    \"        for t, p in zip(xticks, res[\\\"p_value\\\"])\\n\",\n    \"    ]\\n\",\n    \"    plot_title = \\\"Direct Causal Effect of Each Feature with 95% Confidence Interval, \\\"\\n\",\n    \"    plt.figure(figsize=(15, 5))\\n\",\n    \"    plt.errorbar(\\n\",\n    \"        np.arange(len(xticks)),\\n\",\n    \"        res[\\\"point\\\"],\\n\",\n    \"        yerr=[lowererr, uppererr],\\n\",\n    \"        fmt=\\\"o\\\",\\n\",\n    \"        capsize=5,\\n\",\n    \"        capthick=1,\\n\",\n    \"        barsabove=True,\\n\",\n    \"    )\\n\",\n    \"    plt.xticks(np.arange(len(xticks)), xticks, rotation=45)\\n\",\n    \"    plt.title(plot_title)\\n\",\n    \"    plt.axhline(0, color=\\\"r\\\", linestyle=\\\"--\\\", alpha=0.5)\\n\",\n    \"    plt.ylabel(\\\"Average Treatment Effect\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"errorbar(global_summ)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We learn the **Average Treatment Effect (ATE)** for certain house characteristics (e.g. having a fireplace), assuming they are the treatment. The error bar above is ordered by **feature importance**, and the summary table above is ordered by **causal significance (p-value)**. Notice they are not in the exact same order. For example, the second most predictive feature, GrLivArea (total square footage), is only the fourth most causally significant feature.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Segmentation -- How do different type of houses respond differently to having a fireplace?\\n\",\n    \"From the analysis above, we learned the direct effect of a few different house amenities on housing price at an average level. However, the effect of these house amenities on house price may vary by features like home age and zoning classification. In the following section, we are going to use the presence of a fireplace as an example to learn how different type of houses may increase in value with the addition of a fireplace. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 864x576 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(12, 8))\\n\",\n    \"ca.plot_heterogeneity_tree(\\n\",\n    \"    x_test,\\n\",\n    \"    \\\"HasFireplace\\\",\\n\",\n    \"    max_depth=2,\\n\",\n    \"    min_impurity_decrease=1e-6,\\n\",\n    \"    min_samples_leaf = 5\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the global level, we know that the ATE of having a fireplace is 4.4k, which means on average that having a fireplace will raise the housing price by $4.4k. In the shallow tree above, we can see although overall fireplaces already have a positive effect on housing price, the effect is even more dramatic on houses older than 75 years old.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"source\": [\n    \"### Policy Analysis -- What is the best policy considering cost?\\n\",\n    \"To take a step further, we'd like to know the sub-population where the treatment effect will still be positive after taking cost into consideration. Assuming the average cost of adding a fireplace is $2,500, let us see what kind of houses have a housing price that will increase more than their cost.  \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 864x576 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(12, 8))\\n\",\n    \"ca.plot_policy_tree(\\n\",\n    \"    x_test,\\n\",\n    \"    \\\"HasFireplace\\\",\\n\",\n    \"    treatment_costs=2500,\\n\",\n    \"    max_depth=2,\\n\",\n    \"    min_samples_leaf = 5\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"You could see if we follow the recommended policy above, on average, the housing price will increase by \\\\\\\\$2,356 compared with no fireplace added. Similarly, it will increase by \\\\\\\\$465 compared with adding a fireplace for every house. To be more detailed, we could also output the individualized policy. In the following table, we will only print the top five houses ordered by policy gains.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Treatment</th>\\n\",\n       \"      <th>Effect of treatment</th>\\n\",\n       \"      <th>Effect of treatment lower bound</th>\\n\",\n       \"      <th>Effect of treatment upper bound</th>\\n\",\n       \"      <th>MSSubClass</th>\\n\",\n       \"      <th>MSZoning</th>\\n\",\n       \"      <th>LotFrontage</th>\\n\",\n       \"      <th>Street</th>\\n\",\n       \"      <th>Alley</th>\\n\",\n       \"      <th>LotShape</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>MoSold</th>\\n\",\n       \"      <th>SaleType</th>\\n\",\n       \"      <th>SaleCondition</th>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>YearsSinceRemodel</th>\\n\",\n       \"      <th>HasDeck</th>\\n\",\n       \"      <th>HasPorch</th>\\n\",\n       \"      <th>Current treatment</th>\\n\",\n       \"      <th>HasFence</th>\\n\",\n       \"      <th>Intercept</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>Id</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1350.0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>12224.503178</td>\\n\",\n       \"      <td>3758.862937</td>\\n\",\n       \"      <td>20690.143420</td>\\n\",\n       \"      <td>70.0</td>\\n\",\n       \"      <td>RM</td>\\n\",\n       \"      <td>50.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>12.0</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>136.0</td>\\n\",\n       \"      <td>21.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1063.0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>9574.109709</td>\\n\",\n       \"      <td>3261.378628</td>\\n\",\n       \"      <td>15886.840790</td>\\n\",\n       \"      <td>190.0</td>\\n\",\n       \"      <td>RM</td>\\n\",\n       \"      <td>85.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>Grvl</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>9.0</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>107.0</td>\\n\",\n       \"      <td>57.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>243.0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>9482.716831</td>\\n\",\n       \"      <td>3235.816161</td>\\n\",\n       \"      <td>15729.617501</td>\\n\",\n       \"      <td>50.0</td>\\n\",\n       \"      <td>RM</td>\\n\",\n       \"      <td>63.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>4.0</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>106.0</td>\\n\",\n       \"      <td>56.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>199.0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>8660.180927</td>\\n\",\n       \"      <td>2968.655603</td>\\n\",\n       \"      <td>14351.706250</td>\\n\",\n       \"      <td>75.0</td>\\n\",\n       \"      <td>RM</td>\\n\",\n       \"      <td>92.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>NA</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>7.0</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Abnorml</td>\\n\",\n       \"      <td>97.0</td>\\n\",\n       \"      <td>59.0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>521.0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>8618.608621</td>\\n\",\n       \"      <td>1186.794764</td>\\n\",\n       \"      <td>16050.422479</td>\\n\",\n       \"      <td>190.0</td>\\n\",\n       \"      <td>RL</td>\\n\",\n       \"      <td>60.0</td>\\n\",\n       \"      <td>Pave</td>\\n\",\n       \"      <td>Grvl</td>\\n\",\n       \"      <td>Reg</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>8.0</td>\\n\",\n       \"      <td>WD</td>\\n\",\n       \"      <td>Normal</td>\\n\",\n       \"      <td>108.0</td>\\n\",\n       \"      <td>8.0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>5 rows × 68 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"       Treatment  Effect of treatment  Effect of treatment lower bound  \\\\\\n\",\n       \"Id                                                                       \\n\",\n       \"1350.0         1         12224.503178                      3758.862937   \\n\",\n       \"1063.0         1          9574.109709                      3261.378628   \\n\",\n       \"243.0          1          9482.716831                      3235.816161   \\n\",\n       \"199.0          1          8660.180927                      2968.655603   \\n\",\n       \"521.0          1          8618.608621                      1186.794764   \\n\",\n       \"\\n\",\n       \"        Effect of treatment upper bound  MSSubClass MSZoning  LotFrontage  \\\\\\n\",\n       \"Id                                                                          \\n\",\n       \"1350.0                     20690.143420        70.0       RM         50.0   \\n\",\n       \"1063.0                     15886.840790       190.0       RM         85.0   \\n\",\n       \"243.0                      15729.617501        50.0       RM         63.0   \\n\",\n       \"199.0                      14351.706250        75.0       RM         92.0   \\n\",\n       \"521.0                      16050.422479       190.0       RL         60.0   \\n\",\n       \"\\n\",\n       \"       Street Alley LotShape  ... MoSold SaleType SaleCondition AgeAtSale  \\\\\\n\",\n       \"Id                            ...                                           \\n\",\n       \"1350.0   Pave  Pave      Reg  ...   12.0       WD        Normal     136.0   \\n\",\n       \"1063.0   Pave  Grvl      Reg  ...    9.0       WD        Normal     107.0   \\n\",\n       \"243.0    Pave    NA      Reg  ...    4.0       WD        Normal     106.0   \\n\",\n       \"199.0    Pave    NA      Reg  ...    7.0       WD       Abnorml      97.0   \\n\",\n       \"521.0    Pave  Grvl      Reg  ...    8.0       WD        Normal     108.0   \\n\",\n       \"\\n\",\n       \"       YearsSinceRemodel HasDeck HasPorch Current treatment HasFence  \\\\\\n\",\n       \"Id                                                                     \\n\",\n       \"1350.0              21.0       0        1                 0        0   \\n\",\n       \"1063.0              57.0       0        1                 0        0   \\n\",\n       \"243.0               56.0       0        1                 0        0   \\n\",\n       \"199.0               59.0       0        1                 0        1   \\n\",\n       \"521.0                8.0       1        1                 0        0   \\n\",\n       \"\\n\",\n       \"        Intercept  \\n\",\n       \"Id                 \\n\",\n       \"1350.0          1  \\n\",\n       \"1063.0          1  \\n\",\n       \"243.0           1  \\n\",\n       \"199.0           1  \\n\",\n       \"521.0           1  \\n\",\n       \"\\n\",\n       \"[5 rows x 68 columns]\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"ca.individualized_policy(\\n\",\n    \"    x_test,\\n\",\n    \"    \\\"HasFireplace\\\",\\n\",\n    \"    n_rows=5,\\n\",\n    \"    treatment_costs=2500,\\n\",\n    \"    alpha=0.1,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Note that here the `effect of treatment` is the treatment effect of selecting one of the discrete treatment values minus the cost. In the treament column, 1 corresponds to having a fireplace, and 0 corresponds to no fireplace.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### What If Analysis - How does the overall housing price change if every home had a fireplace?\\n\",\n    \"The causal analysis tool could also answer **what if** types of questions. For a given treatment, we'd also like to know the **counterfactuals** if we intervene it in a different way. In the example below, we will learn how the overall housing price changes if every house in Ames had a fireplace.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Current average housing price on test set:  142705.43537414967\\n\",\n      \"Average housing price with one more room on test set:  147392.03061904767\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"whatif_df = (\\n\",\n    \"    x_test\\n\",\n    \"    .loc[\\n\",\n    \"        lambda df: df['HasFireplace'].eq(0)\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"whatif_y = y_test.loc[whatif_df.index]\\n\",\n    \"\\n\",\n    \"cf = ca.whatif(\\n\",\n    \"    whatif_df,\\n\",\n    \"    whatif_df['HasFireplace'].add(1).clip(upper = 1),\\n\",\n    \"    'HasFireplace',\\n\",\n    \"    whatif_y)\\n\",\n    \"print(\\\"Current average housing price on test set: \\\", whatif_y.mean())\\n\",\n    \"print(\\n\",\n    \"    \\\"Average housing price with one more room on test set: \\\",\\n\",\n    \"    cf[\\\"point_estimate\\\"].mean(),\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0.5, 1.0, 'Histogram of Housing price -- Current vs. One more room')\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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6NChjBo1CoD777+fkSNHZkGhqB/96EcsX76cHXfcsdE8GzZsoFMn7+qKcod4ZlZRw4cPp6YmeVX0ggULGDBgAN26dWPVqlW89957PPvssxxxxBFMmzaN8ePHU1NTw4wZM7j88ss5/PDDeemllwCYPn06Q4YM4aCDDuL3v//9ZssZNWoUb7/9NkOHDuWee+5h8uTJXH/99UBypPG1r32NE044gR/84AfMmzePE044gSOPPJJTTjmFZcuWZfkmTpzIsGHDGDBgAE888cRmy/nlL3/J0KFDOeKII/j0pz/Na68lr0leu3YtF1xwAQMHDmTQoEH8/Oc/B+Dhhx/mmGOOYfDgwZxxxhmsXbu28h9yK3JQMLOK2m+//ejUqROLFy+mpqaGY445hqFDhzJnzhxqa2sZNGgQnTt/+HroYcOGMWrUKK677jrq6uo44IADgOQX/hNPPMENN9zAVVdt/grnGTNm0LVrV+rq6jjzzDM3m7569Wp+97vfcemllzJhwgTuvfde5s2bx4UXXsi//uu/ZvnefvttampquOWWW7jwwgs3m8+xxx7L448/zp/+9CfGjBnDtdcmr9r+1re+Rffu3XnqqaeYP38+n/rUp1ixYgVXX301jz76KP/7v/9LdXU13/ve97b6M92WfExlZhXXcLRQU1PDl7/8ZV599VVqamro3r07w4YNKzSPz33ucwAceeSRLFq0qMV1aAgUzz//PE8//TQnnXQSAB988AH77vvhK7nPOussAI4//njWrFnD6tWrN5lPfX09Z555JsuWLeP999/Png949NFHufvuu7N8u+++Ow888ADPPPMMw4cPB+D999/nmGOOaXHd25KDgplV3LBhw6ipqeGpp55iwIAB9OnTh+9+97vsuuuuZX+Nl9NwnaCqqooNGza0uA4777wzkDzwdeihhzJnzpyy+Upv8SwdnzBhAl/+8pcZNWoUs2bNYvLkydl8S/NGBCeddBI/+9nPWlzf9sKnj8ys4oYPH84DDzxAjx49qKqqokePHqxevZo5c+aU/eXcrVs33nrrrVapyyc+8QmWL1+eBYX169ezYMGHj0vdc889AMyePZvu3bvTvXv3Tcq/+eab9OqVdNn2k5/8JEs/+eSTN7k7adWqVRx99NH84Q9/YOHChQC88847vPDCC63SrtbiIwWz7Vxb3CU2cOBAVqxYwdlnn71J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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# distribution comparison\\n\",\n    \"plt.hist(cf.point_estimate, label=\\\"With fireplace\\\", alpha=0.7, weights=np.ones(len(whatif_y)) / len(whatif_y))\\n\",\n    \"plt.hist(whatif_y, label=\\\"Without fireplace\\\", alpha=0.7, weights=np.ones(len(whatif_y)) / len(whatif_y))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Housing Price\\\")\\n\",\n    \"plt.title(\\\"Histogram of Housing price -- Current vs. One more room\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary table we could see overall if we add a fireplace to houses without fireplaces in the test set, the average housing price for those houses will increase by about \\\\\\\\$5k. And the histrogram shows a comparison between the current housing price distribution and the counterfactuals ditribution if we added a fireplace to the fireplace-less houses in the test set.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Cohort Analysis -- What is the causal effect on a new dataset?\\n\",\n    \"The CausalAnalysis class can also help us learn the global and local causal effect of a new dataset given a trained model. From the two tables below, you can see the global effect on the test set is similar to that of the training set. And calculating the local effect gives you the heterogeneous treatment effect for each observation.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallQual</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>10207.265524</td>\\n\",\n       \"      <td>1694.108274</td>\\n\",\n       \"      <td>6.025155</td>\\n\",\n       \"      <td>1.689473e-09</td>\\n\",\n       \"      <td>6886.874322</td>\\n\",\n       \"      <td>13527.656727</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GrLivArea</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>53.572155</td>\\n\",\n       \"      <td>16.896406</td>\\n\",\n       \"      <td>3.170624</td>\\n\",\n       \"      <td>1.521117e-03</td>\\n\",\n       \"      <td>20.455808</td>\\n\",\n       \"      <td>86.688502</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GarageCars</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>13215.235723</td>\\n\",\n       \"      <td>3030.831642</td>\\n\",\n       \"      <td>4.360267</td>\\n\",\n       \"      <td>1.299037e-05</td>\\n\",\n       \"      <td>7274.914862</td>\\n\",\n       \"      <td>19155.556584</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-139.794231</td>\\n\",\n       \"      <td>110.416091</td>\\n\",\n       \"      <td>-1.266068</td>\\n\",\n       \"      <td>2.054889e-01</td>\\n\",\n       \"      <td>-356.205793</td>\\n\",\n       \"      <td>76.617332</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallCond</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>5723.914340</td>\\n\",\n       \"      <td>1462.849911</td>\\n\",\n       \"      <td>3.912851</td>\\n\",\n       \"      <td>9.121266e-05</td>\\n\",\n       \"      <td>2856.781200</td>\\n\",\n       \"      <td>8591.047479</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasFireplace</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>4390.835030</td>\\n\",\n       \"      <td>1523.103093</td>\\n\",\n       \"      <td>2.882822</td>\\n\",\n       \"      <td>3.941301e-03</td>\\n\",\n       \"      <td>1405.607823</td>\\n\",\n       \"      <td>7376.062237</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasPorch</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>4713.175859</td>\\n\",\n       \"      <td>2303.096997</td>\\n\",\n       \"      <td>2.046451</td>\\n\",\n       \"      <td>4.071199e-02</td>\\n\",\n       \"      <td>199.188692</td>\\n\",\n       \"      <td>9227.163026</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasDeck</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>1653.390857</td>\\n\",\n       \"      <td>1836.856976</td>\\n\",\n       \"      <td>0.900120</td>\\n\",\n       \"      <td>3.680566e-01</td>\\n\",\n       \"      <td>-1946.782662</td>\\n\",\n       \"      <td>5253.564375</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                   point       stderr     zstat       p_value  \\\\\\n\",\n       \"feature      feature_value                                                      \\n\",\n       \"OverallQual  num            10207.265524  1694.108274  6.025155  1.689473e-09   \\n\",\n       \"GrLivArea    num               53.572155    16.896406  3.170624  1.521117e-03   \\n\",\n       \"GarageCars   num            13215.235723  3030.831642  4.360267  1.299037e-05   \\n\",\n       \"AgeAtSale    num             -139.794231   110.416091 -1.266068  2.054889e-01   \\n\",\n       \"OverallCond  num             5723.914340  1462.849911  3.912851  9.121266e-05   \\n\",\n       \"HasFireplace 1v0             4390.835030  1523.103093  2.882822  3.941301e-03   \\n\",\n       \"HasPorch     1v0             4713.175859  2303.096997  2.046451  4.071199e-02   \\n\",\n       \"HasDeck      1v0             1653.390857  1836.856976  0.900120  3.680566e-01   \\n\",\n       \"\\n\",\n       \"                               ci_lower      ci_upper  \\n\",\n       \"feature      feature_value                             \\n\",\n       \"OverallQual  num            6886.874322  13527.656727  \\n\",\n       \"GrLivArea    num              20.455808     86.688502  \\n\",\n       \"GarageCars   num            7274.914862  19155.556584  \\n\",\n       \"AgeAtSale    num            -356.205793     76.617332  \\n\",\n       \"OverallCond  num            2856.781200   8591.047479  \\n\",\n       \"HasFireplace 1v0            1405.607823   7376.062237  \\n\",\n       \"HasPorch     1v0             199.188692   9227.163026  \\n\",\n       \"HasDeck      1v0           -1946.782662   5253.564375  \"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# global effect on new dataset\\n\",\n    \"ca.cohort_causal_effect(x_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>sample</th>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">0</th>\\n\",\n       \"      <th>OverallQual</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>10466.451123</td>\\n\",\n       \"      <td>1701.632579</td>\\n\",\n       \"      <td>6.150829</td>\\n\",\n       \"      <td>7.707896e-10</td>\\n\",\n       \"      <td>7131.312552</td>\\n\",\n       \"      <td>13801.589694</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GrLivArea</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>54.152219</td>\\n\",\n       \"      <td>8.332353</td>\\n\",\n       \"      <td>6.499031</td>\\n\",\n       \"      <td>8.083900e-11</td>\\n\",\n       \"      <td>37.821108</td>\\n\",\n       \"      <td>70.483330</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>GarageCars</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>10319.768990</td>\\n\",\n       \"      <td>2381.310682</td>\\n\",\n       \"      <td>4.333651</td>\\n\",\n       \"      <td>1.466567e-05</td>\\n\",\n       \"      <td>5652.485818</td>\\n\",\n       \"      <td>14987.052162</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-276.854177</td>\\n\",\n       \"      <td>115.013736</td>\\n\",\n       \"      <td>-2.407140</td>\\n\",\n       \"      <td>1.607800e-02</td>\\n\",\n       \"      <td>-502.276958</td>\\n\",\n       \"      <td>-51.431396</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallCond</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>8238.320947</td>\\n\",\n       \"      <td>1069.053989</td>\\n\",\n       \"      <td>7.706179</td>\\n\",\n       \"      <td>1.296412e-14</td>\\n\",\n       \"      <td>6143.013632</td>\\n\",\n       \"      <td>10333.628263</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">290</th>\\n\",\n       \"      <th>AgeAtSale</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-276.854177</td>\\n\",\n       \"      <td>115.013736</td>\\n\",\n       \"      <td>-2.407140</td>\\n\",\n       \"      <td>1.607800e-02</td>\\n\",\n       \"      <td>-502.276958</td>\\n\",\n       \"      <td>-51.431396</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverallCond</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>5849.940818</td>\\n\",\n       \"      <td>3055.390550</td>\\n\",\n       \"      <td>1.914629</td>\\n\",\n       \"      <td>5.553977e-02</td>\\n\",\n       \"      <td>-138.514619</td>\\n\",\n       \"      <td>11838.396255</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasFireplace</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>1339.570649</td>\\n\",\n       \"      <td>2653.292705</td>\\n\",\n       \"      <td>0.504871</td>\\n\",\n       \"      <td>6.136494e-01</td>\\n\",\n       \"      <td>-3860.787493</td>\\n\",\n       \"      <td>6539.928791</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasPorch</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>6906.589930</td>\\n\",\n       \"      <td>5156.130035</td>\\n\",\n       \"      <td>1.339491</td>\\n\",\n       \"      <td>1.804109e-01</td>\\n\",\n       \"      <td>-3199.239237</td>\\n\",\n       \"      <td>17012.419098</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>HasDeck</th>\\n\",\n       \"      <th>1v0</th>\\n\",\n       \"      <td>1899.860305</td>\\n\",\n       \"      <td>3984.727566</td>\\n\",\n       \"      <td>0.476785</td>\\n\",\n       \"      <td>6.335149e-01</td>\\n\",\n       \"      <td>-5910.062213</td>\\n\",\n       \"      <td>9709.782822</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>2328 rows × 6 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                          point       stderr     zstat  \\\\\\n\",\n       \"sample feature      feature_value                                        \\n\",\n       \"0      OverallQual  num            10466.451123  1701.632579  6.150829   \\n\",\n       \"       GrLivArea    num               54.152219     8.332353  6.499031   \\n\",\n       \"       GarageCars   num            10319.768990  2381.310682  4.333651   \\n\",\n       \"       AgeAtSale    num             -276.854177   115.013736 -2.407140   \\n\",\n       \"       OverallCond  num             8238.320947  1069.053989  7.706179   \\n\",\n       \"...                                         ...          ...       ...   \\n\",\n       \"290    AgeAtSale    num             -276.854177   115.013736 -2.407140   \\n\",\n       \"       OverallCond  num             5849.940818  3055.390550  1.914629   \\n\",\n       \"       HasFireplace 1v0             1339.570649  2653.292705  0.504871   \\n\",\n       \"       HasPorch     1v0             6906.589930  5156.130035  1.339491   \\n\",\n       \"       HasDeck      1v0             1899.860305  3984.727566  0.476785   \\n\",\n       \"\\n\",\n       \"                                        p_value     ci_lower      ci_upper  \\n\",\n       \"sample feature      feature_value                                           \\n\",\n       \"0      OverallQual  num            7.707896e-10  7131.312552  13801.589694  \\n\",\n       \"       GrLivArea    num            8.083900e-11    37.821108     70.483330  \\n\",\n       \"       GarageCars   num            1.466567e-05  5652.485818  14987.052162  \\n\",\n       \"       AgeAtSale    num            1.607800e-02  -502.276958    -51.431396  \\n\",\n       \"       OverallCond  num            1.296412e-14  6143.013632  10333.628263  \\n\",\n       \"...                                         ...          ...           ...  \\n\",\n       \"290    AgeAtSale    num            1.607800e-02  -502.276958    -51.431396  \\n\",\n       \"       OverallCond  num            5.553977e-02  -138.514619  11838.396255  \\n\",\n       \"       HasFireplace 1v0            6.136494e-01 -3860.787493   6539.928791  \\n\",\n       \"       HasPorch     1v0            1.804109e-01 -3199.239237  17012.419098  \\n\",\n       \"       HasDeck      1v0            6.335149e-01 -5910.062213   9709.782822  \\n\",\n       \"\\n\",\n       \"[2328 rows x 6 columns]\"\n      ]\n     },\n     \"execution_count\": 26,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# local effect on new dataset\\n\",\n    \"ca.local_causal_effect(x_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"authors\": [\n   {\n    \"name\": \"mesameki\"\n   }\n  ],\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "notebooks/Solutions/Causal Interpretation for Employee Attrition Dataset.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Causal Interpretation for Employee Attrition Dataset\\n\",\n    \"\\n\",\n    \"This notebook uses the popular kaggle Employee Attrition dataset to showcase how we could interpret a blackbox model from both the correlation and causation perspective, leveraging the power of model interpretation tools like [SHAP](https://shap.readthedocs.io/en/latest/index.html) and [EconML](https://aka.ms/econml). We start with a fine-tuned ML model and learn the top important features to predict employee attrition, it will help us to better understand the correlations between features and target and which features are the strongest predictors. In addition, this notebook will take a step further and focus more on figuring out which features cause the employees leave the company, instead of just predicting how likely they are going to leave. This extra causal interpretation could better help company to make corresponding changes in order to minimize the attrition rate.  \\n\",\n    \"\\n\",\n    \"It includes the following sections:\\n\",\n    \"1. [Train a Fine-tuned ML Model](#Train-a-Fine-tuned-ML-Model)\\n\",\n    \"2. [Correlation Interpretation](#Correlation-Interpretation)\\n\",\n    \"    * Feature Importance -- Learn the top predictors for a given ML model\\n\",\n    \"3. [Causal Interpretation](#Causal-Interpretation)\\n\",\n    \"    * Direct Causal Effect -- Do the top predictors also have a direct effect on outcome of interest?\\n\",\n    \"    * Segmentation -- How to make individaulized plans to reduce the attrition?\\n\",\n    \"    * Cohort Analysis -- What is the causal effect on a new dataset?\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Some imports to get us started\\n\",\n    \"from sklearn.pipeline import Pipeline\\n\",\n    \"from sklearn.impute import SimpleImputer\\n\",\n    \"from sklearn.preprocessing import StandardScaler, OneHotEncoder\\n\",\n    \"from lightgbm import LGBMClassifier\\n\",\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"pd.set_option(\\\"display.max_columns\\\", 100)\\n\",\n    \"pd.set_option(\\\"display.max_rows\\\", 100)\\n\",\n    \"pd.set_option(\\\"display.max_colwidth\\\", 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Train a Fine-tuned ML Model\\n\",\n    \"### Load the employee attrition data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Age</th>\\n\",\n       \"      <th>Attrition</th>\\n\",\n       \"      <th>BusinessTravel</th>\\n\",\n       \"      <th>DailyRate</th>\\n\",\n       \"      <th>Department</th>\\n\",\n       \"      <th>DistanceFromHome</th>\\n\",\n       \"      <th>Education</th>\\n\",\n       \"      <th>EducationField</th>\\n\",\n       \"      <th>EmployeeCount</th>\\n\",\n       \"      <th>EmployeeNumber</th>\\n\",\n       \"      <th>EnvironmentSatisfaction</th>\\n\",\n       \"      <th>Gender</th>\\n\",\n       \"      <th>HourlyRate</th>\\n\",\n       \"      <th>JobInvolvement</th>\\n\",\n       \"      <th>JobLevel</th>\\n\",\n       \"      <th>JobRole</th>\\n\",\n       \"      <th>JobSatisfaction</th>\\n\",\n       \"      <th>MaritalStatus</th>\\n\",\n       \"      <th>MonthlyIncome</th>\\n\",\n       \"      <th>MonthlyRate</th>\\n\",\n       \"      <th>NumCompaniesWorked</th>\\n\",\n       \"      <th>Over18</th>\\n\",\n       \"      <th>OverTime</th>\\n\",\n       \"      <th>PercentSalaryHike</th>\\n\",\n       \"      <th>PerformanceRating</th>\\n\",\n       \"      <th>RelationshipSatisfaction</th>\\n\",\n       \"      <th>StandardHours</th>\\n\",\n       \"      <th>StockOptionLevel</th>\\n\",\n       \"      <th>TotalWorkingYears</th>\\n\",\n       \"      <th>TrainingTimesLastYear</th>\\n\",\n       \"      <th>WorkLifeBalance</th>\\n\",\n       \"      <th>YearsAtCompany</th>\\n\",\n       \"      <th>YearsInCurrentRole</th>\\n\",\n       \"      <th>YearsSinceLastPromotion</th>\\n\",\n       \"      <th>YearsWithCurrManager</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>41</td>\\n\",\n       \"      <td>Yes</td>\\n\",\n       \"      <td>Travel_Rarely</td>\\n\",\n       \"      <td>1102</td>\\n\",\n       \"      <td>Sales</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Life Sciences</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Female</td>\\n\",\n       \"      <td>94</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Sales Executive</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>Single</td>\\n\",\n       \"      <td>5993</td>\\n\",\n       \"      <td>19479</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>Y</td>\\n\",\n       \"      <td>Yes</td>\\n\",\n       \"      <td>11</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>80</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>49</td>\\n\",\n       \"      <td>No</td>\\n\",\n       \"      <td>Travel_Frequently</td>\\n\",\n       \"      <td>279</td>\\n\",\n       \"      <td>Research &amp; Development</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Life Sciences</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>Male</td>\\n\",\n       \"      <td>61</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Research Scientist</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Married</td>\\n\",\n       \"      <td>5130</td>\\n\",\n       \"      <td>24907</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Y</td>\\n\",\n       \"      <td>No</td>\\n\",\n       \"      <td>23</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>80</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>10</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>37</td>\\n\",\n       \"      <td>Yes</td>\\n\",\n       \"      <td>Travel_Rarely</td>\\n\",\n       \"      <td>1373</td>\\n\",\n       \"      <td>Research &amp; Development</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Other</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>Male</td>\\n\",\n       \"      <td>92</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Laboratory Technician</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>Single</td>\\n\",\n       \"      <td>2090</td>\\n\",\n       \"      <td>2396</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>Y</td>\\n\",\n       \"      <td>Yes</td>\\n\",\n       \"      <td>15</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>80</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>33</td>\\n\",\n       \"      <td>No</td>\\n\",\n       \"      <td>Travel_Frequently</td>\\n\",\n       \"      <td>1392</td>\\n\",\n       \"      <td>Research &amp; Development</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>Life Sciences</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>Female</td>\\n\",\n       \"      <td>56</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Research Scientist</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>Married</td>\\n\",\n       \"      <td>2909</td>\\n\",\n       \"      <td>23159</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Y</td>\\n\",\n       \"      <td>Yes</td>\\n\",\n       \"      <td>11</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>80</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>8</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>0</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>27</td>\\n\",\n       \"      <td>No</td>\\n\",\n       \"      <td>Travel_Rarely</td>\\n\",\n       \"      <td>591</td>\\n\",\n       \"      <td>Research &amp; Development</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Medical</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>7</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Male</td>\\n\",\n       \"      <td>40</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>Laboratory Technician</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>Married</td>\\n\",\n       \"      <td>3468</td>\\n\",\n       \"      <td>16632</td>\\n\",\n       \"      <td>9</td>\\n\",\n       \"      <td>Y</td>\\n\",\n       \"      <td>No</td>\\n\",\n       \"      <td>12</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>4</td>\\n\",\n       \"      <td>80</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>6</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>3</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"      <td>2</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"   Age Attrition     BusinessTravel  DailyRate              Department  \\\\\\n\",\n       \"0   41       Yes      Travel_Rarely       1102                   Sales   \\n\",\n       \"1   49        No  Travel_Frequently        279  Research & Development   \\n\",\n       \"2   37       Yes      Travel_Rarely       1373  Research & Development   \\n\",\n       \"3   33        No  Travel_Frequently       1392  Research & Development   \\n\",\n       \"4   27        No      Travel_Rarely        591  Research & Development   \\n\",\n       \"\\n\",\n       \"   DistanceFromHome  Education EducationField  EmployeeCount  EmployeeNumber  \\\\\\n\",\n       \"0                 1          2  Life Sciences              1               1   \\n\",\n       \"1                 8          1  Life Sciences              1               2   \\n\",\n       \"2                 2          2          Other              1               4   \\n\",\n       \"3                 3          4  Life Sciences              1               5   \\n\",\n       \"4                 2          1        Medical              1               7   \\n\",\n       \"\\n\",\n       \"   EnvironmentSatisfaction  Gender  HourlyRate  JobInvolvement  JobLevel  \\\\\\n\",\n       \"0                        2  Female          94               3         2   \\n\",\n       \"1                        3    Male          61               2         2   \\n\",\n       \"2                        4    Male          92               2         1   \\n\",\n       \"3                        4  Female          56               3         1   \\n\",\n       \"4                        1    Male          40               3         1   \\n\",\n       \"\\n\",\n       \"                 JobRole  JobSatisfaction MaritalStatus  MonthlyIncome  \\\\\\n\",\n       \"0        Sales Executive                4        Single           5993   \\n\",\n       \"1     Research Scientist                2       Married           5130   \\n\",\n       \"2  Laboratory Technician                3        Single           2090   \\n\",\n       \"3     Research Scientist                3       Married           2909   \\n\",\n       \"4  Laboratory Technician                2       Married           3468   \\n\",\n       \"\\n\",\n       \"   MonthlyRate  NumCompaniesWorked Over18 OverTime  PercentSalaryHike  \\\\\\n\",\n       \"0        19479                   8      Y      Yes                 11   \\n\",\n       \"1        24907                   1      Y       No                 23   \\n\",\n       \"2         2396                   6      Y      Yes                 15   \\n\",\n       \"3        23159                   1      Y      Yes                 11   \\n\",\n       \"4        16632                   9      Y       No                 12   \\n\",\n       \"\\n\",\n       \"   PerformanceRating  RelationshipSatisfaction  StandardHours  \\\\\\n\",\n       \"0                  3                         1             80   \\n\",\n       \"1                  4                         4             80   \\n\",\n       \"2                  3                         2             80   \\n\",\n       \"3                  3                         3             80   \\n\",\n       \"4                  3                         4             80   \\n\",\n       \"\\n\",\n       \"   StockOptionLevel  TotalWorkingYears  TrainingTimesLastYear  \\\\\\n\",\n       \"0                 0                  8                      0   \\n\",\n       \"1                 1                 10                      3   \\n\",\n       \"2                 0                  7                      3   \\n\",\n       \"3                 0                  8                      3   \\n\",\n       \"4                 1                  6                      3   \\n\",\n       \"\\n\",\n       \"   WorkLifeBalance  YearsAtCompany  YearsInCurrentRole  \\\\\\n\",\n       \"0                1               6                   4   \\n\",\n       \"1                3              10                   7   \\n\",\n       \"2                3               0                   0   \\n\",\n       \"3                3               8                   7   \\n\",\n       \"4                3               2                   2   \\n\",\n       \"\\n\",\n       \"   YearsSinceLastPromotion  YearsWithCurrManager  \\n\",\n       \"0                        0                     5  \\n\",\n       \"1                        1                     7  \\n\",\n       \"2                        0                     0  \\n\",\n       \"3                        3                     0  \\n\",\n       \"4                        2                     2  \"\n      ]\n     },\n     \"execution_count\": 2,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"file_url = \\\"https://raw.githubusercontent.com/py-why/EconML/refs/heads/data/datasets/EmployeeAttrition/Employee-Attrition.csv\\\"\\n\",\n    \"attritionData = pd.read_csv(file_url)\\n\",\n    \"attritionData.head(5)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Dropping Employee count as all values are 1 and hence attrition is independent of this feature\\n\",\n    \"attritionData = attritionData.drop([\\\"EmployeeCount\\\"], axis=1)\\n\",\n    \"# Dropping Employee Number since it is merely an identifier\\n\",\n    \"attritionData = attritionData.drop([\\\"EmployeeNumber\\\"], axis=1)\\n\",\n    \"attritionData = attritionData.drop([\\\"Over18\\\"], axis=1)\\n\",\n    \"\\n\",\n    \"# Since all values are 80\\n\",\n    \"attritionData = attritionData.drop([\\\"StandardHours\\\"], axis=1)\\n\",\n    \"\\n\",\n    \"# change the unit of income related variables\\n\",\n    \"attritionData[[\\\"MonthlyIncome/1K\\\", \\\"MonthlyRate/1K\\\"]] = (\\n\",\n    \"    attritionData[[\\\"MonthlyIncome\\\", \\\"MonthlyRate\\\"]] / 1000\\n\",\n    \")\\n\",\n    \"attritionData = attritionData.drop([\\\"MonthlyIncome\\\", \\\"MonthlyRate\\\"], axis=1)\\n\",\n    \"\\n\",\n    \"# Converting target variables from string to numerical values\\n\",\n    \"target_map = {\\\"Yes\\\": 1, \\\"No\\\": 0}\\n\",\n    \"attritionData[\\\"Attrition_numerical\\\"] = attritionData[\\\"Attrition\\\"].apply(\\n\",\n    \"    lambda x: target_map[x]\\n\",\n    \")\\n\",\n    \"target = attritionData[\\\"Attrition_numerical\\\"]\\n\",\n    \"\\n\",\n    \"attritionXData = attritionData.drop([\\\"Attrition_numerical\\\", \\\"Attrition\\\"], axis=1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Split data into train and test\\n\",\n    \"from sklearn.model_selection import train_test_split\\n\",\n    \"\\n\",\n    \"x_train, x_test, y_train, y_test = train_test_split(\\n\",\n    \"    attritionXData, target, test_size=0.2, random_state=0, stratify=target\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"categorical = []\\n\",\n    \"for col, value in attritionXData.items():\\n\",\n    \"    if value.dtype == \\\"object\\\":\\n\",\n    \"        categorical.append(col)\\n\",\n    \"\\n\",\n    \"# Store the numerical columns in a list numerical\\n\",\n    \"numerical = attritionXData.columns.difference(categorical)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Make training pipeline\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.compose import ColumnTransformer\\n\",\n    \"\\n\",\n    \"# We create the preprocessing pipelines for both numeric and categorical data.\\n\",\n    \"numeric_transformer = Pipeline(\\n\",\n    \"    steps=[(\\\"imputer\\\", SimpleImputer(strategy=\\\"median\\\")), (\\\"scaler\\\", StandardScaler())]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"categorical_transformer = Pipeline(\\n\",\n    \"    steps=[\\n\",\n    \"        (\\\"imputer\\\", SimpleImputer(strategy=\\\"constant\\\", fill_value=\\\"missing\\\")),\\n\",\n    \"        (\\\"onehot\\\", OneHotEncoder(handle_unknown=\\\"error\\\", drop=\\\"first\\\")),\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"transformations = ColumnTransformer(\\n\",\n    \"    transformers=[\\n\",\n    \"        (\\\"num\\\", numeric_transformer, numerical),\\n\",\n    \"        (\\\"cat\\\", categorical_transformer, categorical),\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# Append classifier to preprocessing pipeline.\\n\",\n    \"# Now we have a full prediction pipeline.\\n\",\n    \"clf = Pipeline(\\n\",\n    \"    steps=[(\\\"preprocessor\\\", transformations), (\\\"classifier\\\", LGBMClassifier())]\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Train a LightGBM classification model, which you want to explain\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"\\n\",\n    \"param_grid = {\\n\",\n    \"    \\\"classifier__learning_rate\\\": [0.1, 0.05, 0.01],\\n\",\n    \"    \\\"classifier__max_depth\\\": [3, 5, 10],\\n\",\n    \"}\\n\",\n    \"search = GridSearchCV(clf, param_grid, n_jobs=-1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'classifier__learning_rate': 0.1, 'classifier__max_depth': 3}\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"search.fit(x_train, y_train)\\n\",\n    \"search.best_params_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Correlation Interpretation\\n\",\n    \"We explain this ML model by understanding the top important features to predict the employee attrition, internally using shap value.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# get the fitted model and transformer\\n\",\n    \"fitted_model = search.best_estimator_[\\\"classifier\\\"]\\n\",\n    \"fitted_transformer = search.best_estimator_[\\\"preprocessor\\\"]\\n\",\n    \"# get the feature name after featurization\\n\",\n    \"column_names = numerical.tolist()\\n\",\n    \"column_names += (\\n\",\n    \"    search.best_estimator_[\\\"preprocessor\\\"]\\n\",\n    \"    .transformers_[1][1]\\n\",\n    \"    .steps[1][1]\\n\",\n    \"    .get_feature_names_out(categorical)\\n\",\n    \"    .tolist()\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Passing 1176 background samples may lead to slow runtimes. Consider using shap.sample(data, 100) to create a smaller background data set.\\n\",\n      \" 95%|=================== | 280/294 [00:13<00:00]       \"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"\\n\",\n    \"# use interventional approach\\n\",\n    \"background = shap.maskers.Independent(\\n\",\n    \"    fitted_transformer.transform(x_train), max_samples=2000\\n\",\n    \")\\n\",\n    \"explainer = shap.TreeExplainer(\\n\",\n    \"    fitted_model, data=background, feature_names=column_names\\n\",\n    \")\\n\",\n    \"shap_values = explainer(fitted_transformer.transform(x_test))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 576x684 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# plot the feature importance\\n\",\n    \"shap.summary_plot(shap_values, fitted_transformer.transform(x_test))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"From the summary plot above, we could see the most important features sorted by their importance level. Taking the top 5 important features as an example, employees who often work overtime, have frequently changed jobs or live far away from their worksite are more likely to leave the company, and employees with higher income and stock options are less likely to leave. However, it doesn't mean these are the drivers that directly cause the employee to leave, it might have hidden variables that affect both the top features and outcome. For example, maybe the inefficient collaboration environment forces the employee to work overtime and also causes them to leave, instead of working overtime itself. In order to correctly find the direct reason and make improvements accordingly, we have to train a different model controlling on all the possible hidden variables (confounders) and learn the direct causal effect for a given feature. That's what the causal interpretation tool is doing. In the following session, we will explain the causal relationship for the top 5 important features.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Causal Interpretation\\n\",\n    \"### Direct Causal Effect --  Do the top predictors also have a direct effect on outcome of interest?\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"classification = True\\n\",\n    \"k = 5\\n\",\n    \"# get top feature names according to shap values\\n\",\n    \"vals = np.abs(shap_values.values).mean(0)\\n\",\n    \"feature_importance = pd.DataFrame(\\n\",\n    \"    list(zip(shap_values.feature_names, vals)), columns=[\\\"features\\\", \\\"importance\\\"]\\n\",\n    \")\\n\",\n    \"feature_importance.sort_values(by=[\\\"importance\\\"], ascending=False, inplace=True)\\n\",\n    \"top_features = feature_importance.iloc[:k][\\\"features\\\"]\\n\",\n    \"# extract the raw feature name for top features\\n\",\n    \"top_features = [i.split(\\\"_\\\")[0] for i in top_features]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.solutions.causal_analysis._causal_analysis.CausalAnalysis at 0x2182cd9f788>\"\n      ]\n     },\n     \"execution_count\": 13,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.solutions.causal_analysis import CausalAnalysis\\n\",\n    \"\\n\",\n    \"ca = CausalAnalysis(\\n\",\n    \"    top_features,\\n\",\n    \"    categorical,\\n\",\n    \"    heterogeneity_inds=None,\\n\",\n    \"    classification=True,\\n\",\n    \"    nuisance_models=\\\"automl\\\",\\n\",\n    \"    heterogeneity_model=\\\"forest\\\",\\n\",\n    \"    n_jobs=-1,\\n\",\n    \"    random_state=123,\\n\",\n    \")\\n\",\n    \"ca.fit(x_train, y_train.values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverTime</th>\\n\",\n       \"      <th>YesvNo</th>\\n\",\n       \"      <td>0.208962</td>\\n\",\n       \"      <td>0.023348</td>\\n\",\n       \"      <td>8.950043</td>\\n\",\n       \"      <td>3.553429e-19</td>\\n\",\n       \"      <td>0.163201</td>\\n\",\n       \"      <td>0.254722</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>StockOptionLevel</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.013464</td>\\n\",\n       \"      <td>0.019818</td>\\n\",\n       \"      <td>-0.679381</td>\\n\",\n       \"      <td>4.968964e-01</td>\\n\",\n       \"      <td>-0.052306</td>\\n\",\n       \"      <td>0.025378</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>NumCompaniesWorked</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.024316</td>\\n\",\n       \"      <td>0.007775</td>\\n\",\n       \"      <td>3.127622</td>\\n\",\n       \"      <td>1.762264e-03</td>\\n\",\n       \"      <td>0.009078</td>\\n\",\n       \"      <td>0.039554</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>MonthlyIncome/1K</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.011661</td>\\n\",\n       \"      <td>0.011280</td>\\n\",\n       \"      <td>-1.033794</td>\\n\",\n       \"      <td>3.012323e-01</td>\\n\",\n       \"      <td>-0.033768</td>\\n\",\n       \"      <td>0.010447</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>DistanceFromHome</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.004206</td>\\n\",\n       \"      <td>0.002414</td>\\n\",\n       \"      <td>1.742049</td>\\n\",\n       \"      <td>8.149992e-02</td>\\n\",\n       \"      <td>-0.000526</td>\\n\",\n       \"      <td>0.008937</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                     point    stderr     zstat       p_value  \\\\\\n\",\n       \"feature            feature_value                                               \\n\",\n       \"OverTime           YesvNo         0.208962  0.023348  8.950043  3.553429e-19   \\n\",\n       \"StockOptionLevel   num           -0.013464  0.019818 -0.679381  4.968964e-01   \\n\",\n       \"NumCompaniesWorked num            0.024316  0.007775  3.127622  1.762264e-03   \\n\",\n       \"MonthlyIncome/1K   num           -0.011661  0.011280 -1.033794  3.012323e-01   \\n\",\n       \"DistanceFromHome   num            0.004206  0.002414  1.742049  8.149992e-02   \\n\",\n       \"\\n\",\n       \"                                  ci_lower  ci_upper  \\n\",\n       \"feature            feature_value                      \\n\",\n       \"OverTime           YesvNo         0.163201  0.254722  \\n\",\n       \"StockOptionLevel   num           -0.052306  0.025378  \\n\",\n       \"NumCompaniesWorked num            0.009078  0.039554  \\n\",\n       \"MonthlyIncome/1K   num           -0.033768  0.010447  \\n\",\n       \"DistanceFromHome   num           -0.000526  0.008937  \"\n      ]\n     },\n     \"execution_count\": 14,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"global_summ = ca.global_causal_effect(alpha=0.05)\\n\",\n    \"global_summ\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# helper function to plot error bar\\n\",\n    \"def errorbar(res):\\n\",\n    \"    xticks = res.index.get_level_values(0)\\n\",\n    \"    lowererr = res[\\\"point\\\"] - res[\\\"ci_lower\\\"]\\n\",\n    \"    uppererr = res[\\\"ci_upper\\\"] - res[\\\"point\\\"]\\n\",\n    \"    xticks = [\\n\",\n    \"        \\\"{}***\\\".format(t)\\n\",\n    \"        if p < 1e-6\\n\",\n    \"        else (\\\"{}**\\\".format(t) if p < 1e-3 else (\\\"{}*\\\".format(t) if p < 1e-2 else t))\\n\",\n    \"        for t, p in zip(xticks, res[\\\"p_value\\\"])\\n\",\n    \"    ]\\n\",\n    \"    plot_title = \\\"Direct Causal Effect of Each Feature with 95% Confidence Interval, \\\"\\n\",\n    \"    plt.figure(figsize=(15, 5))\\n\",\n    \"    plt.errorbar(\\n\",\n    \"        np.arange(len(xticks)),\\n\",\n    \"        res[\\\"point\\\"],\\n\",\n    \"        yerr=[lowererr, uppererr],\\n\",\n    \"        fmt=\\\"o\\\",\\n\",\n    \"        capsize=5,\\n\",\n    \"        capthick=1,\\n\",\n    \"        barsabove=True,\\n\",\n    \"    )\\n\",\n    \"    plt.xticks(np.arange(len(xticks)), xticks, rotation=45)\\n\",\n    \"    plt.title(plot_title)\\n\",\n    \"    plt.axhline(0, color=\\\"r\\\", linestyle=\\\"--\\\", alpha=0.5)\\n\",\n    \"    plt.ylabel(\\\"Average Treatment Effect\\\")\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"errorbar(global_summ)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We learn the Average Treatment Effect(ATE) for each of the top 5 important features, assuming they are the treatment. From the summary table and the error bar plot above, we see the causal effect directions we learnt here are in line with the correlation directions we learnt above. However, features like `StockOptionLevel` or `MonthlyIncome/1K` although they are the strongest predictors on how likely employees will leave, we are less confident to say these are the drivers causing them leave. This is super valuable for the managers when they are trying to make plans to reduce the employee attrition rate, improving work life balance or providing extra support for employees who are living far away from the company might be more effective than raise their salary/stocks.          \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Segmentation -- How to make individaulized plans to reduce the attrition?\\n\",\n    \"From the analysis above, we learnt the direct treatment effect of each top features from an overall average level. However, people in different life stage or working experience might have different response to each of this potential reasons. Since the salary related features are not sigificant in an average level, we are interested to find the sub-groups who will respond positively to the income raise. If we could find a sub-group who have sigificant effect on income, we could further help the managers to refine their strategy and make individualized plans to different employees. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\",\n      \"text/plain\": [\n       \"<Figure size 864x576 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(12, 8))\\n\",\n    \"ca.plot_heterogeneity_tree(\\n\",\n    \"    x_test, \\\"MonthlyIncome/1K\\\", max_depth=2, min_impurity_decrease=1e-7\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"This shallow tree interpreter gives us clear guidance on what we should target. Employees with less than 1.5 years of total working experience have siginificant negative effects on monthly income, which means increasing income will definitely reduce the rate of attrition for them. On the other side, for employees who have already worked for this company for a long time, salary might not be an important driver if they decide to leave.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Cohort Analysis -- What is the causal effect on a new dataset?\\n\",\n    \"The causal analysis class can also help us to learn the global and local causal effect of a new dataset given the model trained with training set. From the two tables below, you can see the global effect on the test set is similar to the training set, and the local effect gives you the heterogeneous treatment effect for each observation.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>OverTime</th>\\n\",\n       \"      <th>YesvNo</th>\\n\",\n       \"      <td>0.208087</td>\\n\",\n       \"      <td>0.046269</td>\\n\",\n       \"      <td>4.497307</td>\\n\",\n       \"      <td>0.000007</td>\\n\",\n       \"      <td>0.131981</td>\\n\",\n       \"      <td>0.284193</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>StockOptionLevel</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.013789</td>\\n\",\n       \"      <td>0.019792</td>\\n\",\n       \"      <td>-0.696716</td>\\n\",\n       \"      <td>0.485980</td>\\n\",\n       \"      <td>-0.046344</td>\\n\",\n       \"      <td>0.018765</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>NumCompaniesWorked</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.023802</td>\\n\",\n       \"      <td>0.007499</td>\\n\",\n       \"      <td>3.174153</td>\\n\",\n       \"      <td>0.001503</td>\\n\",\n       \"      <td>0.011468</td>\\n\",\n       \"      <td>0.036137</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>MonthlyIncome/1K</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.012582</td>\\n\",\n       \"      <td>0.011563</td>\\n\",\n       \"      <td>-1.088137</td>\\n\",\n       \"      <td>0.276535</td>\\n\",\n       \"      <td>-0.031601</td>\\n\",\n       \"      <td>0.006437</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>DistanceFromHome</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.004214</td>\\n\",\n       \"      <td>0.002323</td>\\n\",\n       \"      <td>1.814352</td>\\n\",\n       \"      <td>0.069623</td>\\n\",\n       \"      <td>0.000394</td>\\n\",\n       \"      <td>0.008035</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                     point    stderr     zstat   p_value  \\\\\\n\",\n       \"feature            feature_value                                           \\n\",\n       \"OverTime           YesvNo         0.208087  0.046269  4.497307  0.000007   \\n\",\n       \"StockOptionLevel   num           -0.013789  0.019792 -0.696716  0.485980   \\n\",\n       \"NumCompaniesWorked num            0.023802  0.007499  3.174153  0.001503   \\n\",\n       \"MonthlyIncome/1K   num           -0.012582  0.011563 -1.088137  0.276535   \\n\",\n       \"DistanceFromHome   num            0.004214  0.002323  1.814352  0.069623   \\n\",\n       \"\\n\",\n       \"                                  ci_lower  ci_upper  \\n\",\n       \"feature            feature_value                      \\n\",\n       \"OverTime           YesvNo         0.131981  0.284193  \\n\",\n       \"StockOptionLevel   num           -0.046344  0.018765  \\n\",\n       \"NumCompaniesWorked num            0.011468  0.036137  \\n\",\n       \"MonthlyIncome/1K   num           -0.031601  0.006437  \\n\",\n       \"DistanceFromHome   num            0.000394  0.008035  \"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# global effect on new dataset\\n\",\n    \"ca.cohort_causal_effect(x_test)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>point</th>\\n\",\n       \"      <th>stderr</th>\\n\",\n       \"      <th>zstat</th>\\n\",\n       \"      <th>p_value</th>\\n\",\n       \"      <th>ci_lower</th>\\n\",\n       \"      <th>ci_upper</th>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>sample</th>\\n\",\n       \"      <th>feature</th>\\n\",\n       \"      <th>feature_value</th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"      <th></th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">0</th>\\n\",\n       \"      <th>OverTime</th>\\n\",\n       \"      <th>YesvNo</th>\\n\",\n       \"      <td>0.158891</td>\\n\",\n       \"      <td>0.047575</td>\\n\",\n       \"      <td>3.339816</td>\\n\",\n       \"      <td>0.000838</td>\\n\",\n       \"      <td>0.080638</td>\\n\",\n       \"      <td>0.237145</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>StockOptionLevel</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.017921</td>\\n\",\n       \"      <td>0.022392</td>\\n\",\n       \"      <td>-0.800333</td>\\n\",\n       \"      <td>0.423518</td>\\n\",\n       \"      <td>-0.054752</td>\\n\",\n       \"      <td>0.018910</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>NumCompaniesWorked</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.024037</td>\\n\",\n       \"      <td>0.007214</td>\\n\",\n       \"      <td>3.332012</td>\\n\",\n       \"      <td>0.000862</td>\\n\",\n       \"      <td>0.012171</td>\\n\",\n       \"      <td>0.035903</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>MonthlyIncome/1K</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.030902</td>\\n\",\n       \"      <td>0.019577</td>\\n\",\n       \"      <td>-1.578481</td>\\n\",\n       \"      <td>0.114455</td>\\n\",\n       \"      <td>-0.063104</td>\\n\",\n       \"      <td>0.001299</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>DistanceFromHome</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.005203</td>\\n\",\n       \"      <td>0.002287</td>\\n\",\n       \"      <td>2.275026</td>\\n\",\n       \"      <td>0.022904</td>\\n\",\n       \"      <td>0.001441</td>\\n\",\n       \"      <td>0.008964</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th rowspan=\\\"5\\\" valign=\\\"top\\\">293</th>\\n\",\n       \"      <th>OverTime</th>\\n\",\n       \"      <th>YesvNo</th>\\n\",\n       \"      <td>0.336686</td>\\n\",\n       \"      <td>0.071859</td>\\n\",\n       \"      <td>4.685370</td>\\n\",\n       \"      <td>0.000003</td>\\n\",\n       \"      <td>0.218488</td>\\n\",\n       \"      <td>0.454884</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>StockOptionLevel</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.041878</td>\\n\",\n       \"      <td>0.038472</td>\\n\",\n       \"      <td>-1.088514</td>\\n\",\n       \"      <td>0.276368</td>\\n\",\n       \"      <td>-0.105159</td>\\n\",\n       \"      <td>0.021404</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>NumCompaniesWorked</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.027948</td>\\n\",\n       \"      <td>0.010851</td>\\n\",\n       \"      <td>2.575654</td>\\n\",\n       \"      <td>0.010005</td>\\n\",\n       \"      <td>0.010100</td>\\n\",\n       \"      <td>0.045796</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>MonthlyIncome/1K</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>-0.054883</td>\\n\",\n       \"      <td>0.029937</td>\\n\",\n       \"      <td>-1.833259</td>\\n\",\n       \"      <td>0.066764</td>\\n\",\n       \"      <td>-0.104126</td>\\n\",\n       \"      <td>-0.005640</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>DistanceFromHome</th>\\n\",\n       \"      <th>num</th>\\n\",\n       \"      <td>0.006410</td>\\n\",\n       \"      <td>0.004121</td>\\n\",\n       \"      <td>1.555528</td>\\n\",\n       \"      <td>0.119820</td>\\n\",\n       \"      <td>-0.000368</td>\\n\",\n       \"      <td>0.013188</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>1470 rows × 6 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"                                            point    stderr     zstat  \\\\\\n\",\n       \"sample feature            feature_value                                 \\n\",\n       \"0      OverTime           YesvNo         0.158891  0.047575  3.339816   \\n\",\n       \"       StockOptionLevel   num           -0.017921  0.022392 -0.800333   \\n\",\n       \"       NumCompaniesWorked num            0.024037  0.007214  3.332012   \\n\",\n       \"       MonthlyIncome/1K   num           -0.030902  0.019577 -1.578481   \\n\",\n       \"       DistanceFromHome   num            0.005203  0.002287  2.275026   \\n\",\n       \"...                                           ...       ...       ...   \\n\",\n       \"293    OverTime           YesvNo         0.336686  0.071859  4.685370   \\n\",\n       \"       StockOptionLevel   num           -0.041878  0.038472 -1.088514   \\n\",\n       \"       NumCompaniesWorked num            0.027948  0.010851  2.575654   \\n\",\n       \"       MonthlyIncome/1K   num           -0.054883  0.029937 -1.833259   \\n\",\n       \"       DistanceFromHome   num            0.006410  0.004121  1.555528   \\n\",\n       \"\\n\",\n       \"                                          p_value  ci_lower  ci_upper  \\n\",\n       \"sample feature            feature_value                                \\n\",\n       \"0      OverTime           YesvNo         0.000838  0.080638  0.237145  \\n\",\n       \"       StockOptionLevel   num            0.423518 -0.054752  0.018910  \\n\",\n       \"       NumCompaniesWorked num            0.000862  0.012171  0.035903  \\n\",\n       \"       MonthlyIncome/1K   num            0.114455 -0.063104  0.001299  \\n\",\n       \"       DistanceFromHome   num            0.022904  0.001441  0.008964  \\n\",\n       \"...                                           ...       ...       ...  \\n\",\n       \"293    OverTime           YesvNo         0.000003  0.218488  0.454884  \\n\",\n       \"       StockOptionLevel   num            0.276368 -0.105159  0.021404  \\n\",\n       \"       NumCompaniesWorked num            0.010005  0.010100  0.045796  \\n\",\n       \"       MonthlyIncome/1K   num            0.066764 -0.104126 -0.005640  \\n\",\n       \"       DistanceFromHome   num            0.119820 -0.000368  0.013188  \\n\",\n       \"\\n\",\n       \"[1470 rows x 6 columns]\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# local effect on new dataset\\n\",\n    \"ca.local_causal_effect(x_test)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"authors\": [\n   {\n    \"name\": \"mesameki\"\n   }\n  ],\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/Treatment Featurization Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"9fd851ab-e30e-4586-95d1-9494d427f374\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"77dac9d2-9a63-4249-a79f-37a9b73d25bd\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Treatment Featurization Examples \\n\",\n    \"\\n\",\n    \"Many EconML estimators model treatment effects as linear with respect to the treatment. However, there are times when one may want to impose a particular form of non-linearity in the treatment effect. For example, one may believe that the outcome is linear with respect to treatment squared, or more generally, linear with respect to some featurization of the treatment. We enable users to pass such a featurization via the `treatment_featurizer` argument. This notebook walks through some examples where treatment featurization may be useful. \\n\",\n    \"\\n\",\n    \"Additional context and problem setup can be found in the docs at [this link](https://www.pywhy.org/EconML/spec/api.html#linear-in-treatment-cate-estimators).\\n\",\n    \"\\n\",\n    \"The EconmL SDK supports treatment featurization for many estimators, including:\\n\",\n    \"\\n\",\n    \"* Estimators given unconfoundedness\\n\",\n    \"    * LinearDML\\n\",\n    \"    * SparseLinearDML\\n\",\n    \"    * KernelDML\\n\",\n    \"    * CausalForestDML\\n\",\n    \"    * DMLOrthoForest\\n\",\n    \"    * NonParamDML\\n\",\n    \"    * DML\\n\",\n    \"    \\n\",\n    \"* Estimators in an IV setting\\n\",\n    \"    * OrthoIV\\n\",\n    \"    * DMLIV\\n\",\n    \"    * NonParamDMLIV\\n\",\n    \"    * DRIV\\n\",\n    \"    * LinearDRIV\\n\",\n    \"    * SparseLinearDRIV\\n\",\n    \"    * ForestDRIV\\n\",\n    \"    \\n\",\n    \"\\n\",\n    \"**Notebook contents:**\\n\",\n    \"1. Treatment Featurization under Unconfoundedness\\n\",\n    \"2. Treatment Featurization for IV methods \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"59180b1d-d4b3-4418-954c-d43e8302d342\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Imports \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"8d05cc1a-1285-4a27-a657-0291f9e2dbbb\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"# EconML imports\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from econml.iv.dml import OrthoIV\\n\",\n    \"\\n\",\n    \"# Generic ML imports\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures # featurizer class\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"b2681963-6c74-4af8-8b54-59959e166e5b\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Basic examples \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"8974cf05-3c37-43a1-8443-294ec2a8107f\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Treatment Featurization under Unconfoundedness \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"bf676590-382d-41c3-932b-f82cbba62a06\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Simulate data \\n\",\n    \"\\n\",\n    \"We generate data where the outcome depends on the square of the treatment.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"id\": \"b149e603-675a-4dea-a977-a58b1a2edea9\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"n = 2000\\n\",\n    \"d_w = 5\\n\",\n    \"W = np.random.normal(size = (n, d_w), scale = 5)\\n\",\n    \"T = np.random.uniform(low = 0, high = 10, size = (n, 1)) + 0.5*W[:, [0]]\\n\",\n    \"epsilon = np.random.normal(size = (n, 1))*20\\n\",\n    \"Y = 0.5*T**2 + W[:, [1]] + epsilon\\n\",\n    \"\\n\",\n    \"test_T = np.arange(0, 10, step = 0.1).reshape(-1, 1)\\n\",\n    \"\\n\",\n    \"featurizer = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"172c60b5-5e15-412c-9af4-b11ef7f33612\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Run estimation \\n\",\n    \"\\n\",\n    \"Here we run two estimators, one with treatment featurization and one without treatment featurization for comparison\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"id\": \"1c484dd3-4b2f-469d-b418-6267f1db6226\",\n   \"metadata\": {\n    \"tags\": []\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"           <td></td>           <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0</th>        <td>0.061</td>      <td>0.289</td>  <td>0.21</td>   <td>0.834</td>  <td>-0.506</td>    <td>0.628</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0^2</th>      <td>0.507</td>      <td>0.024</td> <td>21.467</td>   <td>0.0</td>    <td>0.461</td>    <td>0.554</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$<br/>where $\\\\psi(T)$ is the output of the `treatment_featurizer<br/>and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$<br/>Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                          CATE Intercept Results                         \\n\",\n       \"=========================================================================\\n\",\n       \"                    point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------------\\n\",\n       \"cate_intercept|T0            0.061  0.289   0.21  0.834   -0.506    0.628\\n\",\n       \"cate_intercept|T0^2          0.507  0.024 21.467    0.0    0.461    0.554\\n\",\n       \"-------------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$\\n\",\n       \"where $\\\\psi(T)$ is the output of the `treatment_featurizer\\n\",\n       \"and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 3,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = LinearDML(treatment_featurizer = featurizer)\\n\",\n    \"est.fit(Y=Y, T=T, W=W)\\n\",\n    \"\\n\",\n    \"bad_est = LinearDML()\\n\",\n    \"bad_est.fit(Y=Y, T=T, W=W)\\n\",\n    \"\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"bf292edf-70bc-4720-ad6a-7a62787ea9b6\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Plot effects \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"id\": \"18630b8d-541a-4c18-8a50-00ede8fe9a0e\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0.5, 1.0, 'Treatment Effect vs Treatment value')\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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Q1BQEI2NjW6du2bNGlasWMGNN944pM+Qm5vLihUrOHz48JC221XX1+nu/Z588kmCgoJ46KGHBnzfgb42u92O2Wwe8H276utr3NtrtNlsWCyeTZ8civfrXLjPufD3UgghRppSaq/WOrOnz0mPlxc8+uijTJ06lYyMDB566CG2bdvGW2+9xcMPP8zMmTPJyclhzZo1vPrqq4BRmf+xxx5j4cKFZGZmsm/fPpYvX864ceP4wx/+AEBjYyOXXXYZs2fPZvr06bz55puue+Xk5DBz5kwefvhhAH72s58xd+5cMjIyeOKJJ856vldeeYUHH3wQgF//+teMHTsWgJycHC666CIALrnkEvbs2cOjjz5KS0sLM2fO5LbbbgOMYHPfffeRnp7OlVdeSUtLi1vvi91u5+GHH3Y92x//+EePXtuGDRtYsWKFq72vf/3rPPfcc6738Pvf/z4XXXQR//rXv1zv7549e1w9UtOnT3cNh+Xk5HDVVVcxZ84clixZwrFjxwA4deoUCxcuZO7cuXzve99z63WBEawffPBBli1bxiOPPNJr+2+//Tbz589n1qxZXH755ZSVlZGbm8sf/vAHfvnLXzJz5kw2b97MmjVr+OpXv8qyZcsYO3YsGzdu5J577mHKlCmsWbPGdd9169axcOFCZs+ezerVq10hMTU1lSeeeML1nh47dqzH+wghhBheo3ZVY1epj77rtbZzn7q218+dDiSnfec73+GKK67g9ddf59ixYyilqK2tJSwsjFWrVvXZ45WcnMz27dv59re/zZo1a9i6dSutra2kp6fzla98BT8/P15//XVCQkKorKxkwYIFrFq1iqeeeorDhw9z4MABwPhBnJ2dza5du9Bas2rVKjZt2sTSpUtd91q6dCk/+9nPANi8eTORkZEUFRWxZcsWlixZ0u25nnrqKZ555hlX+7m5uWRnZ/Piiy/y5z//mZtuuonXXnuN22+//azX9Mtf/pJ//vOfAPzkJz8hLy+P0NBQdu/eTVtbG4sXL+bKK68kOTnZrde2YcOGvr5U+Pn5sWXLFgA++OADADIzM13XP/zww1x11VUA3H///fzhD39gwoQJ7Ny5k6997Wt8+umnfOtb3+KrX/0qd955J7/97W/7vN+ZsrKy+PjjjzGbzVx22WU9tn/RRRexY8cOlFL85S9/4ac//Sk///nP+cpXvtKtJ+qv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MzPZt28fy5cvZ9y4cfzhD38AjK2ILrvsMmbPns306dNdldAfffRRcnJymDlzJg8//DAAP/vZz5g7dy4ZGRk88cQTZz3fK6+8woMPPggYldrHjjWKmuTk5Liq15/uqXn00UddFfpPV6632+3cd999pKenc+WVV7r2ajxw4AALFiwgIyOD66+/npqamm5tAVRWVpKamkp7ezuPP/44L7/8MjNnzuTll19267395z//ybx585g5cyYPPPAAdrsxdv/Vr36VzMxM0tPTXa/5//7v/yguLmbZsmUsW7YMgKCgIFdbr776KmvWrAFgzZo1PPjggyxbtoxHHnmE5557jq9//esA3Xo1/f392bhxI01NTdxzzz3MnTuXWbNmub4eLS0t3HLLLWRkZHDzzTe7vY/lc889x+rVq1m5ciVXXnllr+3n5uayZMkSZs+ezezZs129ZI8++iibN29m5syZ/PKXv+S5557juuuuY+XKlaSlpfHMM8/wi1/8glmzZrFgwQKqq6tdX/OrrrqKOXPmsGTJElfl+zVr1vDNb36TRYsWMXbsWNf36pn3EUIIr2koM3q48refVZOrN0W1LZTWtXn5wQbn/Jjj9f6jxqqGoRQ3Ha7ue6jpdCA57Tvf+Q5XXHEFr7/+OseOHUMpRW1tLWFhYaxatYoVK1Zw44039thWcnIy27dv59vf/jZr1qxh69attLa2kp6ezle+8hX8/Px4/fXXCQkJobKykgULFrBq1SqeeuopDh8+7NqQed26dWRnZ7Nr1y601qxatYpNmzaxdOlS172WLl3Kz372MwA2b95MZGQkRUVFbNmyhSVLlnR7rqeeeopnnnnG1X5ubi7Z2dm8+OKL/PnPf+amm27itdde4/bbb+fOO+/kN7/5DRdffDGPP/44//M//8OvfvWrHl+vj48P3//+99mzZw/PPPNMj+ec/gEPsHr1am644QZefvlltm7ditVq5Wtf+xpr167lzjvv5Ic//CERERHY7XYuu+wyDh06xDe/+U1+8YtfsH79+m7b8/QmKyuLjz/+GLPZzHPPPec6fvq1v/322/z0pz9l0aJFPPHEE1x66aU8++yz1NbWMm/ePC6//HL++Mc/EhAQwKFDhzh06BCzZ8/u976nbd++nUOHDhEREcFjjz3WY/sxMTF89NFH+Pn5kZ2dzZe+9CX27NnDU089xdNPP807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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"\\n\",\n    \"# Plot point estimates\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    est.effect(T0 = 0, T1=test_T),\\n\",\n    \"    label = 'Estimate with Featurized Treatment',\\n\",\n    \"    linewidth=3\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    bad_est.effect(T0 = 0, T1=test_T),\\n\",\n    \"    label = 'Estimate without Featurized Treatment'\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    0.5*test_T**2,\\n\",\n    \"    linestyle='--',\\n\",\n    \"    linewidth=3,\\n\",\n    \"    label='Ground Truth',\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# Plot confidence intervals\\n\",\n    \"lb, ub = est.effect_interval(T0 = np.zeros(shape=(100, 1)), T1=test_T)\\n\",\n    \"\\n\",\n    \"plt.fill_between(\\n\",\n    \"    test_T.squeeze(),\\n\",\n    \"    lb.squeeze(),\\n\",\n    \"    ub.squeeze(),\\n\",\n    \"    alpha = 0.4,\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"lb, ub = bad_est.effect_interval(T0 = np.zeros(shape=(100, 1)), T1=test_T)\\n\",\n    \"\\n\",\n    \"plt.fill_between(\\n\",\n    \"    test_T.squeeze(),\\n\",\n    \"    lb.squeeze(),\\n\",\n    \"    ub.squeeze(),\\n\",\n    \"    alpha = 0.4\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel('Treatment value')\\n\",\n    \"plt.ylabel('Treatment effect')\\n\",\n    \"plt.title('Treatment Effect vs Treatment value')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"ab4e4de4-0efd-4d52-a623-21bf0c25e076\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Treatment Featurization for IV methods \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"7f98173a-4a39-4514-b1c6-63fc4e5251ff\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Simulate data \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"id\": \"e47f53c1-9053-4fe4-8131-9f8535a74eee\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"n = 2000\\n\",\n    \"d_w = 5\\n\",\n    \"W = np.random.normal(size = (n, d_w), scale = 5)\\n\",\n    \"unobserved_confounder = np.random.normal(size = (n, 1)) * 5\\n\",\n    \"Z = np.random.normal(loc = 3, scale = 5, size = (n, 1))\\n\",\n    \"T = np.random.uniform(low = 0, high = 10, size = (n, 1)) + 0.5*W[:, [0]] + Z + unobserved_confounder\\n\",\n    \"epsilon = np.random.normal(size = (n, 1)) * 50\\n\",\n    \"Y = 0.5*T**2 + W[:, [1]] + unobserved_confounder + epsilon\\n\",\n    \"\\n\",\n    \"test_T = np.arange(0, 10, step = 0.1).reshape(-1, 1)\\n\",\n    \"\\n\",\n    \"featurizer = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"dc351445-eae6-4c59-ba8c-3f8769aaaa36\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Run estimation \\n\",\n    \"\\n\",\n    \"Here we run two estimators, one with treatment featurization and one without treatment featurization for comparison.\\n\",\n    \"\\n\",\n    \"Note that OrthoIV requires that the dimension of the featurized treatment be less than or equal to the dimension of the instrument. So in the case where we have a featurized treatment that has higher dimension than our instrument, we can either featurize the instrument ourselves before passing it to the estimator or we can set `projection=True`, which will  fit efficient instruments, along with passing a flexible `model_t_xwz`. In principle we recommend the latter approach.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"id\": \"58b5c8d3-3c24-4613-8035-306bd7bf098f\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"           <td></td>           <th>point_estimate</th> <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0</th>       <td>-0.731</td>      <td>0.539</td> <td>-1.356</td>  <td>0.175</td>  <td>-1.787</td>    <td>0.326</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept|T0^2</th>      <td>0.537</td>      <td>0.031</td> <td>17.467</td>   <td>0.0</td>    <td>0.477</td>    <td>0.598</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$<br/>where $\\\\psi(T)$ is the output of the `treatment_featurizer<br/>and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$<br/>Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                          CATE Intercept Results                         \\n\",\n       \"=========================================================================\\n\",\n       \"                    point_estimate stderr zstat  pvalue ci_lower ci_upper\\n\",\n       \"-------------------------------------------------------------------------\\n\",\n       \"cate_intercept|T0           -0.731  0.539 -1.356  0.175   -1.787    0.326\\n\",\n       \"cate_intercept|T0^2          0.537  0.031 17.467    0.0    0.477    0.598\\n\",\n       \"-------------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot \\\\psi(T) + g(X, W) + \\\\epsilon$\\n\",\n       \"where $\\\\psi(T)$ is the output of the `treatment_featurizer\\n\",\n       \"and for every outcome $i$ and featurized treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est = OrthoIV(\\n\",\n    \"    model_t_xwz=RandomForestRegressor(),\\n\",\n    \"    projection=True,\\n\",\n    \"    treatment_featurizer = featurizer\\n\",\n    \")\\n\",\n    \"est.fit(Y=Y, T=T, W=W, Z=Z)\\n\",\n    \"\\n\",\n    \"bad_est = OrthoIV()\\n\",\n    \"bad_est.fit(Y=Y, T=T, W=W, Z=Z)\\n\",\n    \"\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"id\": \"efb9dfb0-dc61-4b7b-af05-a29abf7e5bd3\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Text(0.5, 1.0, 'Treatment Effect vs Treatment value')\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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a53sMUxo48aNeniA6uHDh1m5cmWSRmTIysrC7XbH9Ng77riD6667jptvvnlax1BbW8t1113HgQMHpvW4gw1+nbGe77777iMrK4svfvGLUz7vVF9bOBzGbDZP+byDjfc1Hus1hkIhLJbJtU9Ox+crFc6TCj+XQgiRbEqpXVrrjaPdJzNecXDPPfewatUqqqqq+OIXv8gbb7zBk08+yd133826deuoqanhjjvu4NFHHwWMZP6vfOUrbNmyhY0bN7J7926uvPJKFi9ezI9//GMA3G43l156KRs2bKCyspI//vGPA+eqqalh3bp13H333QB8+9vfZtOmTVRVVfG1r31txPh+//vfc9dddwHw/e9/n0WLFgFQU1PDhRdeCMC73vUudu7cyT333IPX62XdunV86EMfAozC5hOf+ASrV6/miiuuwOv1xvR5CYfD3H333QNj+6//+q9JvbaXXnqJ6667buB4n/3sZ3n44YcHPodf//rXufDCC/nDH/4w8PnduXPnwIxUZWXlwHJYTU0NV111Feeccw5bt27lyJEjAJw8eZItW7awadMmvvrVr8b0usAorO+66y4uvvhivvSlL415/KeeeorzzjuP9evXc9lll9Ha2kptbS0//vGP+d73vse6det49dVXueOOO/j0pz/NxRdfzKJFi3j55Zf52Mc+xsqVK7njjjsGzvvss8+yZcsWNmzYwC233DJQJFZUVPC1r31t4HN65MiRUc8jhBAisWbsVY2DVdzzdNyOXXv/tWPe11+Q9Pvyl7/M5ZdfzuOPP86RI0dQSuF0OsnNzeWGG24Yd8Zr3rx5vPnmm3zhC1/gjjvu4PXXX8fn87F69Wo+9alPYbfbefzxx8nJyaGjo4PNmzdzww03cP/993PgwAH27t0LGL+Iq6ur2b59O1prbrjhBl555RW2bds2cK5t27bx7W9/G4BXX32VgoICGhsbee2119i6deuQcd1///08+OCDA8evra2lurqa3/zmN/z0pz/l1ltv5bHHHuPDH/7wiNf0ve99j//5n/8B4Jvf/CZ1dXU4HA527NiB3+/nggsu4IorrmDevHkxvbaXXnppvC8Vdrud1157DYC//OUvAGzcuHHg+XfffTdXXXUVAHfeeSc//vGPWbp0KW+//Taf+cxneOGFF/iHf/gHPv3pT3Pbbbfxn//5n+Oeb7hjx47x3HPPYTabufTSS0c9/oUXXshbb72FUoqHHnqIb33rW3znO9/hU5/61JCZqJ/97Gd0d3fzwgsv8OSTT3L99dfz+uuv89BDD7Fp0yb27t1LeXk53/jGN3juuefIzMzkm9/8Jt/97ne59957ASgsLGT37t388Ic/5IEHHuChhx4acR4hhBCJNSsKr2RJT08f+KXeLxQKYbfb+fjHP8611147ZIZmPDfccAMAlZWVuN1usrOzyc7Oxm6343Q6yczM5Ctf+QqvvPIKJpOJxsZGWltbRxzn2Wef5dlnn2X9+vWAMZtUXV09pPAqLS3F7Xbjcrmor6/ngx/8IK+88gqvvvoq73nPeyYc68KFCwcKznPOOYfa2tpRH/eFL3xhyC/4m2++mX379g3M9PX09FBdXU15eXlMr20i73vf+8a87/e//z27d+/m2Wefxe1288Ybb3DLLbcM3O/3+wF4/fXXeeyxxwD4yEc+wpe+9KWYz3/LLbdgNpvHPX5DQwPve9/7aG5uJhAIjBu9cP3116OUorKykpKSEiorKwFYvXo1tbW1NDQ0cOjQIS644AIAAoEAW7ZsGXh+/9fynHPO4X//939jfh1CCCHiRwqvaWaxWNi+fTvPP/88v/3tb3nwwQd54YUXJnyezWYDwGQyDbzf/3EoFOKRRx6hvb2dXbt2kZaWRkVFxaiX7mut+fKXv8wnP/nJcc+3ZcsWfvGLX7B8+XK2bt3Kz3/+c958802+853vxDxWMC4wiHWpUWvND37wA6688sohtz/88MMxvTaLxUIkEhn4ePhjMjMzRz3vwYMH+drXvsYrr7yC2WwmEomQm5s7omjuN9Wr8/rPP97xP/e5z3HXXXdxww038NJLL3HfffeNebyJvifMZjOXX345v/nNb8Z9vtlsJhQKTek1CSHErBEOgbcbsoqSOoxZUXiNtxyYaG63m76+Pq655ho2b97MkiVLAMjOzsblck35uD09PRQXF5OWlsaLL75IXV3dqMe98sor+epXv8qHPvQhsrKyaGxsJC0tjeLi4iHH27ZtG/feey/33nsv69ev58UXXyQ9PR2HwzHi3GlpaQSDwTNOJL/yyiv50Y9+xCWXXEJaWhrHjh1j7ty5Mb+2BQsWcOjQIfx+Pz6fj+eff36gJ20sPT09vP/97+dXv/oVRUXGD1tOTg4LFy7kD3/4A7fccgtaa/bt28fatWu54IIL+O1vf8uHP/xhHnnkkSm9zvGO39PTw9y5cwH45S9/OfCc7Oxsent7J3WezZs38/d///ccP36cJUuW0NfXR0NDA8uWLRvzOVM5jxBCzHhdJ6FhJzjKk154SXP9Gejv8RocmeByubjuuuuoqqrioosu4nvf+x4A73//+/n2t7/N+vXrqampmfS5PvShD7Fz5042btzII488wooVKwAoKCjgggsuYM2aNdx9991cccUVfPCDH2TLli1UVlZy8803j1rwbd26lfr6erZt24bZbGbevHljFjF33nknVVVVA831U/Xxj3+cVatWsWHDBtasWcMnP/lJQqFQzK9t3rx53HrrrQNj6V9OHc8TTzxBXV0dn/jEJwa+TgCPPPIIP/vZz1i7di2rV68eaOj//ve/z3/+53+yadMmenp6pvxaxzr+fffdxy233MLWrVspLCwcePz111/P448/Pqmm96KiIh5++GE+8IEPUFVVxebNmwea+McylfMIIcSM5emEI8/AiZcgEFsKQbxJnIQQYtrIz6UQIiUEvdC4GzqrYXCdU7QCFmwZ+3nTZLw4iVmx1CiEEEIIQSQCbQeheR+Epx5qHU9SeAkhhBBi5nOegvrt4J96P3UiSOElhBBCiJnL2w31O6C3MdkjiYkUXkIIIYSYeYI+aNoDHUeH9nGlOCm8hBBCCDFzRCLQfgSa90LIn+zRTJoUXkIIIYSYGXoaoWE7eJ3JHsmUSY7XGTCbzUNyvO6///4xH/vEE09w6NChgY/vvfdennvuuTMeg9Pp5Ic//OEZH2e4j3/84wPj/dd//deB22tra1mzZs20nGPv3r0888wzo9730ksv4XA4Bj63l1122ZTO8e///u/09fVN+nlPPvnkuF/PWPVvNj7Yu9/9btatW8eSJUuGvMY33nhjyuepra3l17/+9ZkON2XOI4QQQ/h6oPo5qH52RhddIIXXGenfq7H/7Z577hnzscMLr69//etTLiYGi1fh9dBDD7Fq1SpgaOE1ncYrvMAIee3/3E61SJ1K4RUKhbjhhhvG/Xqeiccff5y9e/fy0EMPDXmN559//sD5J0sKLyHErBQKGI3zB5+Anvpkj2ZaSOEVB/fccw+rVq2iqqqKL37xi7zxxhs8+eST3H333axbt46amhruuOOOgc2iKyoq+MpXvsKWLVvYuHEju3fv5sorr2Tx4sX8+Mc/BoytiC699FI2bNhAZWXlQBL6PffcQ01NDevWrePuu+8G4Nvf/jabNm2iqqqKr33tayPG9/vf/5677roLMJLaFy1aBEBNTc1Aen3/TM0999wzkNDfn1wfDof5xCc+werVq7niiisG9mrcu3cvmzdvpqqqine/+910d3cPORZAR0cHFRUVBAIB7r33Xn73u9+xbt06fve738X0uf2f//kfzj33XNatW8cnP/lJwuEwAJ/+9KfZuHEjq1evHnjN//Ef/0FTUxMXX3wxF198MQBZWVkDx3r00Ue54447ALjjjju46667uPjii/nSl77Eww8/zGc/+1mAIbOa6enpvPzyy3g8Hj72sY+xadMm1q9fP/D18Hq9vP/976eqqor3ve99Me9j+fDDD3PLLbdw/fXXc8UVV4x5/NraWrZu3cqGDRvYsGHDwCzZPffcw6uvvsq6dev43ve+x8MPP8xNN93E9ddfz8KFC3nwwQf57ne/y/r169m8eTNdXV0DX/OrrrqKc845h61btw4k399xxx18/vOf5/zzz2fRokUD36vDzyOEEHGhNbQfhQOPQesB0JGJnzNDzI4erz/fAy37p/eYpZVw9fhLTf0FSb8vf/nLXH755Tz++OMcOXIEpRROp5Pc3FxuuOEGrrvuOm6++eZRjzVv3jzefPNNvvCFL3DHHXfw+uuv4/P5WL16NZ/61Kew2+08/vjj5OTk0NHRwebNm7nhhhu4//77OXDgwMCGzM8++yzV1dVs374drTU33HADr7zyCtu2bRs417Zt2/j2t78NwKuvvkpBQQGNjY289tprbN26dci47r//fh588MGB49fW1lJdXc1vfvMbfvrTn3Lrrbfy2GOP8eEPf5jbbruNH/zgB1x00UXce++9/PM//zP//u//PurrtVqtfP3rX2fnzp08+OCDoz6m/xc8wC233MJ73vMefve73/H666+TlpbGZz7zGR555BFuu+02/uVf/oX8/HzC4TCXXnop+/bt4/Of/zzf/e53efHFF4dszzOWY8eO8dxzz2E2m3n44YcHbu9/7U899RTf+ta3OP/88/na177GJZdcws9//nOcTifnnnsul112Gf/1X/9FRkYG+/btY9++fWzYsGHC8/Z788032bdvH/n5+XzlK18Z9fjFxcX87W9/w263U11dzQc+8AF27tzJ/fffzwMP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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"\\n\",\n    \"# Plot point estimates\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    est.effect(T0 = 0, T1=test_T),\\n\",\n    \"    label = 'Estimate with Featurized Treatment',\\n\",\n    \"    linewidth=3\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    bad_est.effect(T0 = 0, T1=test_T),\\n\",\n    \"    label = 'Estimate without Featurized Treatment'\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.plot(\\n\",\n    \"    test_T,\\n\",\n    \"    0.5*test_T**2,\\n\",\n    \"    linestyle='--',\\n\",\n    \"    linewidth=3,\\n\",\n    \"    label='Ground Truth',\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# Plot confidence intervals\\n\",\n    \"lb, ub = est.effect_interval(T0 = np.zeros(shape=(100, 1)), T1=test_T)\\n\",\n    \"\\n\",\n    \"plt.fill_between(\\n\",\n    \"    test_T.squeeze(),\\n\",\n    \"    lb.squeeze(),\\n\",\n    \"    ub.squeeze(),\\n\",\n    \"    alpha = 0.4,\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"lb, ub = bad_est.effect_interval(T0 = np.zeros(shape=(100, 1)), T1=test_T)\\n\",\n    \"\\n\",\n    \"plt.fill_between(\\n\",\n    \"    test_T.squeeze(),\\n\",\n    \"    lb.squeeze(),\\n\",\n    \"    ub.squeeze(),\\n\",\n    \"    alpha = 0.4\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel('Treatment value')\\n\",\n    \"plt.ylabel('Treatment effect')\\n\",\n    \"plt.title('Treatment Effect vs Treatment value')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"a64e5cba-ea4b-494f-b34f-87ee9596cb96\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Applied example\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"f0cb71c5-b3f6-453c-a059-b8e76f71d91d\",\n   \"metadata\": {},\n   \"source\": [\n    \"Suppose you are a healthcare researcher interested in optimizing the dosage of a particular medicine, using observational data collected that measured dosage and wellbeing for patients of various attributes. \\n\",\n    \"\\n\",\n    \"You believe that your treatment affects patient outcome in a quadratic manner. You also believe that different customers will respond differently to your treatment. \\n\",\n    \"\\n\",\n    \"You can frame your data as follows: Let X be a patient characteristic that affects how they respond to changes in treatment. Let T be the dosage of your treatment. Let Y be the patient's wellbeing. Let W be other confounding variables that affect the treatment and outcome simultaneously.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"c9f04927-a58c-49d0-b52b-6a5373f21730\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Data simulation \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"392defb7-6161-4589-ac72-7e808a59690f\",\n   \"metadata\": {},\n   \"source\": [\n    \"We define a synthetic dataset as follows:\\n\",\n    \"\\n\",\n    \"Note that while the outcome still varies linearly with featurized treatment, we use a non linear operation on X to define effect heterogeneity. In other words, if X>0.5, then the outcome depends on 2\\\\*T - T^2, while if X<0.5, the outcome depends on 4\\\\*(2*T - T^2)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"id\": \"613bb31c-f8f8-4cf8-9b0e-1048579d1ac0\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"n = 10000\\n\",\n    \"d_w = 5\\n\",\n    \"d_x = 1\\n\",\n    \"W = np.random.normal(size = (n, d_w), scale = 5)\\n\",\n    \"X = np.random.normal(size = (n, d_x), scale = 5)\\n\",\n    \"T = np.random.uniform(low = 0, high = 10, size = (n, 1)) + 0.5*W[:, [0]] + 0.5*X[:, [0]]\\n\",\n    \"epsilon = np.random.normal(size = (n, 1))*20\\n\",\n    \"\\n\",\n    \"Y = np.where(X[:, [0]]>0.5, 1, 4) * (2*T - T**2) + X[:, [0]]+ W[:, [1]] + epsilon\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"featurizer = PolynomialFeatures(degree=2, interaction_only=False, include_bias=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"43548ee0-a0a3-44db-b94f-608a363c7290\",\n   \"metadata\": {},\n   \"source\": [\n    \"Since we believe effect heterogeneity is nonlinear, we use CausalForestDML.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"id\": \"f1ccec7f-58d1-464e-96cb-86246753f494\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.dml import CausalForestDML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"id\": \"61bf3283-0e9f-44f4-b0ed-40cf0bbdc5fe\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x1ad429413a0>\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# est = LinearDML(model_y=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"est = CausalForestDML(model_y=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                model_t=RandomForestRegressor(min_samples_leaf=20, random_state=123),\\n\",\n    \"                treatment_featurizer = featurizer,\\n\",\n    \"                cv=5,\\n\",\n    \"                random_state=123)\\n\",\n    \"est.fit(Y=Y.flatten(), T=T, X=X, W=W)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"7c94fa1e-14bb-43d3-978a-9a08daee8140\",\n   \"metadata\": {},\n   \"source\": [\n    \"Observe treatment effects for different x values as treatment varies.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"id\": \"55af9377-5403-4b7f-bafe-0faebfcbe63e\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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kZHBunXruP3227nhhhtYs2YNTU1NTJ06la997Ws4HA5efvllIiMjKSsrY+HChVx44YXce++97Ny5k23btgHGB/j+/fvZsGEDWmsuvPBCPvroI0455RTftU455RTuu+8+AD7++GPi4uIoLCxk9erVLFu2zK9d9957L3/961999efl5bF//36effZZHn74YS6//HJefPFFrr322g7P6Q9/+ANPPfUUAL/+9a/Jz88nKiqKjRs30tzczJIlSzjnnHPIyMgI6Ll98MEH3b1VOBwOVq9eDcBbb70FwNy5c33n33HHHZx77rkA3HzzzTz44IOMHz+eTz75hK9//eu89957fPOb3+SWW27hi1/8Ivfff3+31zvRvn37ePfddzGbzZx55pmd1r906VLWr1+PUopHHnmE3/zmN/zud7/ja1/7ml/P1z/+8Q8qKyt57733eO2117jgggtYs2YNjzzyCPPmzWPbtm2kp6fz85//nHfffZewsDB+/etf8/vf/54f//jHAMTHx7Nlyxb+9re/8dvf/pZHHnmkw3X6QwK2/jiyHp66BCwOSM6F1FmQNtv4GjceTNKBKYQQwRISEuILBlq5XC4cDgdf+cpX+NznPufXI9SdCy+8EIDp06dTV1dHREQEEREROBwOqqqqCAsL4+677+ajjz7CZDJRWFjIsWPHOtTz9ttv8/bbbzNr1izA6L3av3+/X8CWnJxMXV0dtbW1HD16lKuvvpqPPvqIjz/+mEsuuaTHtubk5PgC1Tlz5pCXl9fp426//Xa/wODSSy9l+/btvp7F6upq9u/fT3p6ekDPrSdXXHFFl8eef/55tmzZwttvv01dXR1r167lsssu8x1vbm4GYM2aNbz44osAXHfddXzve98L+PqXXXYZZrO52/oLCgq44oorKC4upqWlpdsUGhdccAFKKaZPn05SUhLTp08HYOrUqeTl5VFQUMDu3btZsmQJAC0tLSxatMh3fut7OWfOHF566aWAn0egJGDrj6KtxldXExRsMG6tbOGQMhNSZ7YFcTE5IKushBAiaCwWCxs2bGDVqlU899xz/PWvf+W9997r8Ty73Q6AyWTyfd963+Vy8fTTT3P8+HE2b96M1WolOzu70xQMWmu+//3v89WvfrXb6y1atIh//vOfTJw4kWXLlvHoo4+ybt06fve73wXcVjAWXgQ6JKq15i9/+QvL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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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11xzDY8//jg33HBDcAX5999/n69//evBgK4nd+cjjzzCSy+9hNPppKurixdffJFbb72V/fv3M3PmTCoqKvjd737H4sWLKS0tZcuWLXR2dnLppZeyevVqNm7cSEFBAc899xzx8fE89NBDPPjgg7jdbqZMmcJf//pXbDbbkJ/LRRddRENDA/Pnz+fqq6/m/vvvx2w288477/DWW2/x6KOP8r//+7+43W6WLVvG73//e8xmM//617+4++678fl8ZGZm8oc//IEHHngAs9nMo48+ym9+8xvOOuusSL/0YpRJwCYgPhUmnWNsPez1gVa4rSda4hytp57bWQcfvWxsPdLKei/ym1cOMX0nCRZCjEP3RnGm+b0Dpye6/vrr+eEPf8jll1/Ozp07ue2224IB24wZM3jnnXewWCy8/vrr3H333Tz99NMAbNq0iZ07d5Kens4vfvEL0tLS2LlzJ7t37w6mTzrZwYMHefzxx3nooYe47rrrePrpp7npppv4xCc+wec//3kAvve97/GHP/yBr371qwPW+1e/+hWPPmoshp6WlsZbb73F888/z+WXXx5MWq61Dnap7tu3j7/97W9s2LABq9XKl770JdauXcull17K5z//ed555x3KyspoaWkhPT2dO+64o8/uWDFxSMAm+paUA9MvNTYwZqa2VoQsLRKY1ODpOvXc1qPGttv4Q2mk25p5ItVWwULIni3ptoQQQ1ZeXk5FRQWPP/44l112Wa997e3t3HLLLRw8eBClFB6PJ7jvwgsvJD3daP1fv349X/va1wCYM2cO5eXlfd6rrKwsGMwtWrSIiooKAHbv3s33vvc92tra6Ozs5OKLLx603n11iQ7kjTfeYOvWrSxZYizS6XA4yM7OZvPmzaxZs4aysjKA4HMSE58EbCI8SkF6mbHN+aRR5vdB40e9x8PV7Qa/p/e52g8Ne4xte0+6rVhjOZHQlriMKcbkCSGEGMCVV17Jt771LdatW0dzc3Ow/Pvf/z7nnnsuzzzzDBUVFZxzzjnBfQkJJ1r5w82hHRsbG/zdbDbjcDgAuPXWW3n22WeZN28ejzzyCOvWrRveE+qD1ppbbrmFn/zkJ73Kn3/+eZRM/jojScAmTp/JDDmzjG3BTUaZ12Wk26oOCeIaP+LUdFsuqN5ibD1ikyFvXu8xcSlFMjNViLFmkG7LaLvttttISUlh7ty5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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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aV0FW85cx9e//AW2v/IyjzzyCLfeeisVFRUcPnyYG264gd/97ncAlJWVcdttt7Fx40bWrVvHzp07ufjii5k3bx533XUXAB0dHWzdupU1a9awYsUK/vjHPwLw+c9/nsOHD1NRUcGtt94KwHe+8x3Wr1/PypUr+epXvzqgfA8++CCf/vSnAfj+97/P3LlzATh8+DBnnXUWAOeeey7bt2/n85//PIFAgIqKCt73vvcBRuBz4403smzZMi666CICgUBS70ssFuPWW2/tLtv//u//jurenn76aS677LLu83384x/n3nvv7X4Pv/71r3PWWWfx29/+tvv93b59e3dGa8WKFd3VdYcPH+aSSy5h7dq1nH322ezfvx+Ao0ePsnHjRtavX8+Xv/zlpO4L4IYbbuDTn/405513Hp/73OeGPP+jjz7KGWecwerVq7nggguora2lsrKSu+66izvvvJOKigqee+45brjhBj72sY9x3nnnMXfuXJ555hk+9KEPsWTJEm644Ybu6z722GNs3LiRNWvWcPXVV9PR0dH9fnz1q1/tfk/3798/6HWEEEJMrhmRMSv7/J8n7Nw7vnTBkNsCgQDnbtrQ/fqT/3Yr5563lT8/+kde2rkbi9mEDnWSlZXFFVdcwWWXXcZVV1016LlKS0t58cUX+dSnPsUNN9zA888/TzAYZNmyZXz0ox/F4XDw8MMPk5GRQUNDA2eeeSZXXHEF3/rWt3jzzTe7sziPPfYYBw8e5JVXXkFrzRVXXMGzzz7Lli1buq+1ZcsWvvMdo9r1ueeeIycnhxMnTrBt2zbOPvvsPuX61re+xf/8z/90n7+yspKDBw9y//33c/fdd3PNNdfw0EMP8f73v3/APd1555386le/AuDb3/42x44dw+fz8eqrrxIKhdi8eTMXXXQRpaWlSd3b008/Pexn5XA42LZtGwB/+9vfAFi3bl338bfeeiuXXHIJAB/+8Ie56667WLBgAS+//DI33XQTTz75JJ/85Cf52Mc+xgc/+EF++MMfDnu9/t566y2eeOIJzGYzW7duHfT8Z511Fi+99BJKKe655x7+67/+i+9+97t89KMf7ZN9++lPf0pzczNPPvkkjzzyCJdffjnPP/8899xzD+vXr2fXrl2UlJTwjW98gyeeeAK32823v/1tvve97/GVr3wFgNzcXHbu3MmPfvQj7rjjDu65554B1xFCCDG5ZkRgliqDVWVGo1EcDgf/+vGPcuXll3HlFVckda4rEvutWLGCjo4OvF4vXq8Xh8NBS0sLbreb2267jWeffRaTycSJEyeora0dcJ7HHnuMxx57jNWrVwNGNurgwYN9ArPCwkI6Ojpob2+nqqqK9773vTz77LM899xzvOtd7xqxrOXl5VRUVACwdu1aKisrB92vf1XmVVddxe7du7szha2trRw8eJCSkpKk7m0k73nPe4bc9uCDD7Jz504ee+wxOjo6eOGFF7j66qu7t4dCIQCef/55HnroIQA+8IEP8LnPfS7p61999dWYzeZhz19dXc173vMeTp06RTgcHnZoissvvxylFCtWrKCgoIAVK1YAsGzZMiorK6murmbv3r1s3rwZgHA4zMaNG7uP7/os165dy+9///uk70MIIcTEkcBsklksFh57ehsvb3uGhx/6LT/+0Y948sknRzzObrcDYDKZup93vY5Go9x3333U19ezY8cOrFYrZWVlgw5toLXmC1/4Ah/5yEeGvd7GjRv5+c9/zqJFizj77LP52c9+xosvvsh3v/vdpMsKYDabk67K1Frzgx/8gIsvvrjP+nvvvTepe7NYLMTjPYMA99/H7XYPet09e/bw1a9+lWeffRaz2Uw8HiczM7M7k9bfWHsndl1/uPPfcsstfPrTn+aKK67g6aef5vbbbx/yfCP9mzCbzVx44YXcf//9wx5vNpuJRid2jD4hhBDJmRGBWeW33n7a5xivAWY7OjqIhoK888rLOefszcyfPx8Ar9dLe3v7mM/b2tpKfn4+VquVp556imPHjg163osvvpgvf/nLvO9978Pj8XDixAmsViv5+fl9zrdlyxa+8pWv8JWvfIXVq1fz1FNP4XQ68fl8A65ttVqJRCKnPSL8xRdfzI9//GPOP/98rFYrb731FsXFxUnf25w5c9i7dy+hUIhgMMg//vGP7jZxQ2ltbeXaa6/ll7/8JXl5eQBkZGRQXl7Ob3/7W66++mq01uzevZtVq1axefNmHnjgAd7//vdz3333jek+hzt/a2srxcXFAPziF7/oPsbr9dLW1jaq65x55pncfPPNHDp0iPnz5+P3+6murmbhwoVDHjOW6wghhBg/0vh/AnW1Metavv6VL+Hv7OC6q9/JypUrOeecc7jzzjsBuPbaa/nOd77D6tWrOXz48Kiv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JhvXiyp1FvB9jIxdEGO4jB2JbV8EPoQxjMa/aq3/OtL51q1bp7t6KXbZt28fS5YsGbcyD5cxs5gUGU7rhFXZxWIxIpEIDoeDw4cPs3XrVt566y1sNtuEXE+IoYz3z5UQQsxESqkdWut1g21LSeN/rfU2YO0Q2/4D+I/JLdHYTcYE5X6/n/POO49IJILWmh//+McSlAkhhBDTUKp6ZU4bTqsFywRPUO71eumfERRCCCHE9CNTMp0Gq9mEwypvoRBCCCHGh0QVY6SUwi0TlAshhBBiHElgNkYumxmzSd4+IYQQQowfiSzGwKjCnHJTeAohhBAizUlgNkpGFWZyfSZqa2t573vfy9y5c1m7di0bN27k4YcfnuAS9lVZWcny5cv7rHvjjTe6xyfLzs7unsrpgguGHBN4wDl//etfd7++9957+fjHPz6u5RZCCCFmIgnMRsltM2M2jdyuTGvNO97xDrZs2cKRI0fYsWMHDzzwANXV1QP2jUaHmVFgAqxYsYJdu3axa9currjiCr7zne+wa9cunnjiiaTK1D8wE0IIIcT4kMBsFGwWE/YkqzCffPJJbDYbH/3oR7vXzZkzh1tuuQUwskxXX301l19+ORdddBFNTU284x3vYOXKlZx55pns3r0bgNtvv5077rij+xzLly+nsrKSyspKlixZwo033siyZcu46KKLuufG3LFjB6tWrWLjxo388Ic/TPr+zj33XG677TbOOeccvv/973PDDTfwu9/9rnu7x+MB4POf/zzPPfccFRUV3HnnnQCcPHmSSy65hAULFvDZz3426WsKIYQQoseMGcfsR7t+xI9f/3FS+757wbu5fdPtfdZ94+V/5+FDD3W//tiqj3FTxU1DnmPPnj2sWbNm2Ou8+OKL7N69m+zsbG655RZWr17NH/7wB5588kk++MEPsmvXrmGPP3jwIPfffz93330311xzDQ899BDvf//7+ad/+id+8IMfcM4553DrrbeOeL+9tbS08MwzzwDG5OeD+da3vsUdd9zBn/70J8AIMnft2sVrr72G3W5n0aJF3HLLLZSWlg56vBBCCCEGJxmzJCVRezmsm2++mVWrVrF+/frudRdeeCHZ2dkAbNu2jQ984AMAnH/++TQ2NtLaOvzk611twwDWrl1LZWUlra2ttLS0cM45xlSkXedMVtdclqO1detWfD4fDoeDpUuX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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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IYRIERLMhBBCCCFShAQzIYQQQogUIcFMCCGEECJFTIiZ//Pz83VVVVWyiyGEEEIIcVxbt25t0VoXDLZvQgSzqqoqXn/99WQXQwghhBDiuJRSh4faJ02ZQgghhBApQoKZEEIIIUSKkGAmhBBCCJEiJkQfMyGEEIkRDAapra3F5/MluyhCjHtpaWmUlZVhtVpH/BgJZkIIIWJqa2vJzMykqqoKpVSyiyPEuKW1prW1ldraWqZOnTrix0lTphBCiBifz0deXp6EMiFOklKKvLy8Udc+SzATQggRR0KZEIlxIv+XJJgJIYRIKWazmSVLlsRu3/ve94Y89h//+Advv/127P43vvENnnrqqZMuQ0dHB7/+9a9P+jz9feQjH4mV93//939j26urq1mwYMFxH3/LLbdQWloae22+/OUvj7oMJ/PcEvX6Op3OuPutra2x51RcXBz3HAOBwAlf57nnnmPTpk0nW9xTeh2ltU7IiZJpxYoVWiaYFUKIk7d7927mzp2b1DI4nU7cbveIjr3++uu55JJLuOKKKxJahurqai655BJ27tyZ0PP21fd5jvR6t9xyC06nky984QsnfN0TfW7hcBiz2XzC1+1ruPd4qOcYCoWwWEbXNT4Rr9fJXmew/1NKqa1a6xWDnUtqzIQQQowLX/7yl5k3bx6LFi3iC1/4Aps2beKhhx7ii1/8IkuWLOHAgQNcf/313H///YCxKsxXv/pV1q5dy4oVK9i2bRvnn38+06dP59ZbbwXA7XZz9tlns2zZMhYuXMg///nP2LUOHDjAkiVL+OIXvwjAD37wA1auXMmiRYv45je/OaB89957LzfffDMAP/vZz5g2bRoABw4cYP369QCcccYZvP7663z5y1/G6/WyZMkSrr32WsAIPh/96EeZP38+5513Hl6vd0SvSzgc5otf/GKsbL/97W9H9dyee+45Lrnkktj5PvWpT3H77bfHXsNvfetbrF+/nvvuuy/2+r7++uuxGq2FCxfGmuwOHDjABRdcwPLly9mwYQN79uwB4NChQ6xdu5aVK1fy9a9/fUTPC4zgffPNN3PmmWfypS99acjzP/zww6xevZqlS5dyzjnn0NjYSHV1Nbfeeis/+clPWLJkCS+++CLXX389N910E2eeeSbTpk3j+eef54YbbmDu3Llcf/31ses+8cQTrF27lmXLlnHllVfGQmRV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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"test_T = np.arange(-5, 5, step = 0.1).reshape(-1, 1)\\n\",\n    \"\\n\",\n    \"x_vals= [-1, 0, 1, 2]\\n\",\n    \"\\n\",\n    \"for x_val in x_vals:\\n\",\n    \"    plt.figure(figsize=(10, 6))\\n\",\n    \"\\n\",\n    \"    xtest = np.ones(test_T.shape) * x_val\\n\",\n    \"    # Plot point estimates\\n\",\n    \"    plt.plot(\\n\",\n    \"        test_T,\\n\",\n    \"        est.effect(xtest, T0 = 0, T1=test_T),\\n\",\n    \"        label = 'Estimate with Featurized Treatment',\\n\",\n    \"        linewidth=3\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"    plt.plot(\\n\",\n    \"        test_T,\\n\",\n    \"        est.marginal_effect(test_T, xtest),\\n\",\n    \"        label = 'Marginal Effect',\\n\",\n    \"        linewidth=3\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"    plt.plot(\\n\",\n    \"        test_T,\\n\",\n    \"        np.where(xtest>0.5, 1, 4) * (2*test_T - test_T**2),\\n\",\n    \"        linestyle='--',\\n\",\n    \"        linewidth=3,\\n\",\n    \"        label='Ground Truth',\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"    # Plot confidence intervals\\n\",\n    \"    lb, ub = est.effect_interval(xtest, T0 = 0, T1=test_T)\\n\",\n    \"\\n\",\n    \"    plt.fill_between(\\n\",\n    \"        test_T.squeeze(),\\n\",\n    \"        lb.squeeze(),\\n\",\n    \"        ub.squeeze(),\\n\",\n    \"        alpha = 0.4,\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.xlabel('Treatment value')\\n\",\n    \"    plt.ylabel('Treatment effect')\\n\",\n    \"    plt.title(f'Treatment Effect vs Treatment value at X={x_val}')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"6677b86a-dedb-4353-acac-6967b04f6753\",\n   \"metadata\": {},\n   \"source\": [\n    \"We gather the marginal effect for existing samples and prescribe interventions (i.e. changes in treatment dosage.)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"id\": \"40bdacc2-ad96-43d5-af2d-edd0dc4eb1a0\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>X</th>\\n\",\n       \"      <th>marginal effect</th>\\n\",\n       \"      <th>lb</th>\\n\",\n       \"      <th>ub</th>\\n\",\n       \"      <th>true</th>\\n\",\n       \"      <th>presciption</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>-1.964775</td>\\n\",\n       \"      <td>-30.157065</td>\\n\",\n       \"      <td>-32.856818</td>\\n\",\n       \"      <td>-27.457311</td>\\n\",\n       \"      <td>-31.657195</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>-4.976109</td>\\n\",\n       \"      <td>38.821192</td>\\n\",\n       \"      <td>34.239351</td>\\n\",\n       \"      <td>43.403033</td>\\n\",\n       \"      <td>35.247105</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>-1.222882</td>\\n\",\n       \"      <td>-15.234570</td>\\n\",\n       \"      <td>-18.565181</td>\\n\",\n       \"      <td>-11.903959</td>\\n\",\n       \"      <td>-20.269921</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>3.991654</td>\\n\",\n       \"      <td>-16.428203</td>\\n\",\n       \"      <td>-19.629034</td>\\n\",\n       \"      <td>-13.227373</td>\\n\",\n       \"      <td>-15.480751</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2.296386</td>\\n\",\n       \"      <td>9.529916</td>\\n\",\n       \"      <td>6.753388</td>\\n\",\n       \"      <td>12.306444</td>\\n\",\n       \"      <td>5.865886</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>5</th>\\n\",\n       \"      <td>3.957914</td>\\n\",\n       \"      <td>2.373906</td>\\n\",\n       \"      <td>-3.624517</td>\\n\",\n       \"      <td>8.372328</td>\\n\",\n       \"      <td>-1.632855</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>6</th>\\n\",\n       \"      <td>-1.128893</td>\\n\",\n       \"      <td>-4.281499</td>\\n\",\n       \"      <td>-7.800553</td>\\n\",\n       \"      <td>-0.762444</td>\\n\",\n       \"      <td>-6.282670</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>7</th>\\n\",\n       \"      <td>0.878929</td>\\n\",\n       \"      <td>-7.576779</td>\\n\",\n       \"      <td>-10.937542</td>\\n\",\n       \"      <td>-4.216015</td>\\n\",\n       \"      <td>-8.584140</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>8</th>\\n\",\n       \"      <td>4.884313</td>\\n\",\n       \"      <td>-26.683832</td>\\n\",\n       \"      <td>-29.480043</td>\\n\",\n       \"      <td>-23.887622</td>\\n\",\n       \"      <td>-26.062601</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>9</th>\\n\",\n       \"      <td>5.683501</td>\\n\",\n       \"      <td>-28.384068</td>\\n\",\n       \"      <td>-35.917722</td>\\n\",\n       \"      <td>-20.850415</td>\\n\",\n       \"      <td>-27.269113</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>10</th>\\n\",\n       \"      <td>-2.777241</td>\\n\",\n       \"      <td>-6.122264</td>\\n\",\n       \"      <td>-8.284679</td>\\n\",\n       \"      <td>-3.959850</td>\\n\",\n       \"      <td>-8.034091</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>11</th>\\n\",\n       \"      <td>1.627892</td>\\n\",\n       \"      <td>-9.720055</td>\\n\",\n       \"      <td>-12.813256</td>\\n\",\n       \"      <td>-6.626854</td>\\n\",\n       \"      <td>-11.640772</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>12</th>\\n\",\n       \"      <td>0.911899</td>\\n\",\n       \"      <td>-21.524285</td>\\n\",\n       \"      <td>-29.571710</td>\\n\",\n       \"      <td>-13.476861</td>\\n\",\n       \"      <td>-22.671561</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>13</th>\\n\",\n       \"      <td>8.081129</td>\\n\",\n       \"      <td>-18.425315</td>\\n\",\n       \"      <td>-21.145556</td>\\n\",\n       \"      <td>-15.705074</td>\\n\",\n       \"      <td>-17.765141</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>14</th>\\n\",\n       \"      <td>2.269164</td>\\n\",\n       \"      <td>-14.051747</td>\\n\",\n       \"      <td>-16.566518</td>\\n\",\n       \"      <td>-11.536975</td>\\n\",\n       \"      <td>-15.527673</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>15</th>\\n\",\n       \"      <td>-7.350547</td>\\n\",\n       \"      <td>-16.000470</td>\\n\",\n       \"      <td>-20.505561</td>\\n\",\n       \"      <td>-11.495379</td>\\n\",\n       \"      <td>-21.748643</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>16</th>\\n\",\n       \"      <td>-2.434966</td>\\n\",\n       \"      <td>5.838954</td>\\n\",\n       \"      <td>3.360944</td>\\n\",\n       \"      <td>8.316963</td>\\n\",\n       \"      <td>4.131746</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>17</th>\\n\",\n       \"      <td>-4.899031</td>\\n\",\n       \"      <td>-27.065199</td>\\n\",\n       \"      <td>-28.375405</td>\\n\",\n       \"      <td>-25.754992</td>\\n\",\n       \"      <td>-31.926394</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>18</th>\\n\",\n       \"      <td>-8.004931</td>\\n\",\n       \"      <td>-21.797776</td>\\n\",\n       \"      <td>-25.303549</td>\\n\",\n       \"      <td>-18.292004</td>\\n\",\n       \"      <td>-24.396402</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>19</th>\\n\",\n       \"      <td>0.541819</td>\\n\",\n       \"      <td>-9.815485</td>\\n\",\n       \"      <td>-11.743268</td>\\n\",\n       \"      <td>-7.887703</td>\\n\",\n       \"      <td>-9.831051</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>20</th>\\n\",\n       \"      <td>1.744513</td>\\n\",\n       \"      <td>-17.864399</td>\\n\",\n       \"      <td>-23.221449</td>\\n\",\n       \"      <td>-12.507348</td>\\n\",\n       \"      <td>-20.683919</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>21</th>\\n\",\n       \"      <td>-7.234710</td>\\n\",\n       \"      <td>-25.571708</td>\\n\",\n       \"      <td>-29.451154</td>\\n\",\n       \"      <td>-21.692262</td>\\n\",\n       \"      <td>-32.635177</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>22</th>\\n\",\n       \"      <td>11.396015</td>\\n\",\n       \"      <td>-27.233582</td>\\n\",\n       \"      <td>-31.179588</td>\\n\",\n       \"      <td>-23.287575</td>\\n\",\n       \"      <td>-26.410036</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>23</th>\\n\",\n       \"      <td>-6.389070</td>\\n\",\n       \"      <td>1.632913</td>\\n\",\n       \"      <td>-1.395815</td>\\n\",\n       \"      <td>4.661641</td>\\n\",\n       \"      <td>-2.780295</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>24</th>\\n\",\n       \"      <td>-4.058979</td>\\n\",\n       \"      <td>28.186649</td>\\n\",\n       \"      <td>21.637661</td>\\n\",\n       \"      <td>34.735638</td>\\n\",\n       \"      <td>27.327685</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>25</th>\\n\",\n       \"      <td>1.891756</td>\\n\",\n       \"      <td>-24.242139</td>\\n\",\n       \"      <td>-28.101735</td>\\n\",\n       \"      <td>-20.382543</td>\\n\",\n       \"      <td>-21.184927</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>26</th>\\n\",\n       \"      <td>-1.209522</td>\\n\",\n       \"      <td>65.134330</td>\\n\",\n       \"      <td>60.299782</td>\\n\",\n       \"      <td>69.968878</td>\\n\",\n       \"      <td>62.266306</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>27</th>\\n\",\n       \"      <td>-0.377739</td>\\n\",\n       \"      <td>-45.713667</td>\\n\",\n       \"      <td>-48.575870</td>\\n\",\n       \"      <td>-42.851464</td>\\n\",\n       \"      <td>-52.309354</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>28</th>\\n\",\n       \"      <td>-2.444687</td>\\n\",\n       \"      <td>-41.562128</td>\\n\",\n       \"      <td>-44.204142</td>\\n\",\n       \"      <td>-38.920114</td>\\n\",\n       \"      <td>-43.265879</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>29</th>\\n\",\n       \"      <td>-5.138705</td>\\n\",\n       \"      <td>24.112798</td>\\n\",\n       \"      <td>19.301931</td>\\n\",\n       \"      <td>28.923665</td>\\n\",\n       \"      <td>20.922958</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>30</th>\\n\",\n       \"      <td>3.156487</td>\\n\",\n       \"      <td>-12.615076</td>\\n\",\n       \"      <td>-14.749285</td>\\n\",\n       \"      <td>-10.480868</td>\\n\",\n       \"      <td>-12.605709</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>31</th>\\n\",\n       \"      <td>-5.297919</td>\\n\",\n       \"      <td>-41.742057</td>\\n\",\n       \"      <td>-48.958655</td>\\n\",\n       \"      <td>-34.525460</td>\\n\",\n       \"      <td>-44.828540</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>32</th>\\n\",\n       \"      <td>9.490741</td>\\n\",\n       \"      <td>-22.905279</td>\\n\",\n       \"      <td>-27.982578</td>\\n\",\n       \"      <td>-17.827981</td>\\n\",\n       \"      <td>-24.506200</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>33</th>\\n\",\n       \"      <td>-0.468496</td>\\n\",\n       \"      <td>-13.087916</td>\\n\",\n       \"      <td>-15.059780</td>\\n\",\n       \"      <td>-11.116053</td>\\n\",\n       \"      <td>-16.690441</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>34</th>\\n\",\n       \"      <td>-2.552019</td>\\n\",\n       \"      <td>-42.842586</td>\\n\",\n       \"      <td>-46.251459</td>\\n\",\n       \"      <td>-39.433712</td>\\n\",\n       \"      <td>-48.007278</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>35</th>\\n\",\n       \"      <td>-1.978348</td>\\n\",\n       \"      <td>25.197274</td>\\n\",\n       \"      <td>17.974794</td>\\n\",\n       \"      <td>32.419755</td>\\n\",\n       \"      <td>22.420934</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>36</th>\\n\",\n       \"      <td>1.272495</td>\\n\",\n       \"      <td>7.836774</td>\\n\",\n       \"      <td>2.145505</td>\\n\",\n       \"      <td>13.528043</td>\\n\",\n       \"      <td>3.882322</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>37</th>\\n\",\n       \"      <td>4.693579</td>\\n\",\n       \"      <td>10.312457</td>\\n\",\n       \"      <td>4.319765</td>\\n\",\n       \"      <td>16.305148</td>\\n\",\n       \"      <td>9.861466</td>\\n\",\n       \"      <td>Increase treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>38</th>\\n\",\n       \"      <td>-1.505240</td>\\n\",\n       \"      <td>-9.599493</td>\\n\",\n       \"      <td>-12.319979</td>\\n\",\n       \"      <td>-6.879008</td>\\n\",\n       \"      <td>-14.602760</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>39</th>\\n\",\n       \"      <td>-1.965708</td>\\n\",\n       \"      <td>-87.758610</td>\\n\",\n       \"      <td>-93.213076</td>\\n\",\n       \"      <td>-82.304145</td>\\n\",\n       \"      <td>-86.759201</td>\\n\",\n       \"      <td>Decrease treatment</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            X  marginal effect         lb         ub       true  \\\\\\n\",\n       \"0   -1.964775       -30.157065 -32.856818 -27.457311 -31.657195   \\n\",\n       \"1   -4.976109        38.821192  34.239351  43.403033  35.247105   \\n\",\n       \"2   -1.222882       -15.234570 -18.565181 -11.903959 -20.269921   \\n\",\n       \"3    3.991654       -16.428203 -19.629034 -13.227373 -15.480751   \\n\",\n       \"4    2.296386         9.529916   6.753388  12.306444   5.865886   \\n\",\n       \"5    3.957914         2.373906  -3.624517   8.372328  -1.632855   \\n\",\n       \"6   -1.128893        -4.281499  -7.800553  -0.762444  -6.282670   \\n\",\n       \"7    0.878929        -7.576779 -10.937542  -4.216015  -8.584140   \\n\",\n       \"8    4.884313       -26.683832 -29.480043 -23.887622 -26.062601   \\n\",\n       \"9    5.683501       -28.384068 -35.917722 -20.850415 -27.269113   \\n\",\n       \"10  -2.777241        -6.122264  -8.284679  -3.959850  -8.034091   \\n\",\n       \"11   1.627892        -9.720055 -12.813256  -6.626854 -11.640772   \\n\",\n       \"12   0.911899       -21.524285 -29.571710 -13.476861 -22.671561   \\n\",\n       \"13   8.081129       -18.425315 -21.145556 -15.705074 -17.765141   \\n\",\n       \"14   2.269164       -14.051747 -16.566518 -11.536975 -15.527673   \\n\",\n       \"15  -7.350547       -16.000470 -20.505561 -11.495379 -21.748643   \\n\",\n       \"16  -2.434966         5.838954   3.360944   8.316963   4.131746   \\n\",\n       \"17  -4.899031       -27.065199 -28.375405 -25.754992 -31.926394   \\n\",\n       \"18  -8.004931       -21.797776 -25.303549 -18.292004 -24.396402   \\n\",\n       \"19   0.541819        -9.815485 -11.743268  -7.887703  -9.831051   \\n\",\n       \"20   1.744513       -17.864399 -23.221449 -12.507348 -20.683919   \\n\",\n       \"21  -7.234710       -25.571708 -29.451154 -21.692262 -32.635177   \\n\",\n       \"22  11.396015       -27.233582 -31.179588 -23.287575 -26.410036   \\n\",\n       \"23  -6.389070         1.632913  -1.395815   4.661641  -2.780295   \\n\",\n       \"24  -4.058979        28.186649  21.637661  34.735638  27.327685   \\n\",\n       \"25   1.891756       -24.242139 -28.101735 -20.382543 -21.184927   \\n\",\n       \"26  -1.209522        65.134330  60.299782  69.968878  62.266306   \\n\",\n       \"27  -0.377739       -45.713667 -48.575870 -42.851464 -52.309354   \\n\",\n       \"28  -2.444687       -41.562128 -44.204142 -38.920114 -43.265879   \\n\",\n       \"29  -5.138705        24.112798  19.301931  28.923665  20.922958   \\n\",\n       \"30   3.156487       -12.615076 -14.749285 -10.480868 -12.605709   \\n\",\n       \"31  -5.297919       -41.742057 -48.958655 -34.525460 -44.828540   \\n\",\n       \"32   9.490741       -22.905279 -27.982578 -17.827981 -24.506200   \\n\",\n       \"33  -0.468496       -13.087916 -15.059780 -11.116053 -16.690441   \\n\",\n       \"34  -2.552019       -42.842586 -46.251459 -39.433712 -48.007278   \\n\",\n       \"35  -1.978348        25.197274  17.974794  32.419755  22.420934   \\n\",\n       \"36   1.272495         7.836774   2.145505  13.528043   3.882322   \\n\",\n       \"37   4.693579        10.312457   4.319765  16.305148   9.861466   \\n\",\n       \"38  -1.505240        -9.599493 -12.319979  -6.879008 -14.602760   \\n\",\n       \"39  -1.965708       -87.758610 -93.213076 -82.304145 -86.759201   \\n\",\n       \"\\n\",\n       \"           presciption  \\n\",\n       \"0   Decrease treatment  \\n\",\n       \"1   Increase treatment  \\n\",\n       \"2   Decrease treatment  \\n\",\n       \"3   Decrease treatment  \\n\",\n       \"4   Increase treatment  \\n\",\n       \"5   Increase treatment  \\n\",\n       \"6   Decrease treatment  \\n\",\n       \"7   Decrease treatment  \\n\",\n       \"8   Decrease treatment  \\n\",\n       \"9   Decrease treatment  \\n\",\n       \"10  Decrease treatment  \\n\",\n       \"11  Decrease treatment  \\n\",\n       \"12  Decrease treatment  \\n\",\n       \"13  Decrease treatment  \\n\",\n       \"14  Decrease treatment  \\n\",\n       \"15  Decrease treatment  \\n\",\n       \"16  Increase treatment  \\n\",\n       \"17  Decrease treatment  \\n\",\n       \"18  Decrease treatment  \\n\",\n       \"19  Decrease treatment  \\n\",\n       \"20  Decrease treatment  \\n\",\n       \"21  Decrease treatment  \\n\",\n       \"22  Decrease treatment  \\n\",\n       \"23  Increase treatment  \\n\",\n       \"24  Increase treatment  \\n\",\n       \"25  Decrease treatment  \\n\",\n       \"26  Increase treatment  \\n\",\n       \"27  Decrease treatment  \\n\",\n       \"28  Decrease treatment  \\n\",\n       \"29  Increase treatment  \\n\",\n       \"30  Decrease treatment  \\n\",\n       \"31  Decrease treatment  \\n\",\n       \"32  Decrease treatment  \\n\",\n       \"33  Decrease treatment  \\n\",\n       \"34  Decrease treatment  \\n\",\n       \"35  Increase treatment  \\n\",\n       \"36  Increase treatment  \\n\",\n       \"37  Increase treatment  \\n\",\n       \"38  Decrease treatment  \\n\",\n       \"39  Decrease treatment  \"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"ns = 40\\n\",\n    \"eff = est.marginal_effect(T[:ns], X[:ns])\\n\",\n    \"lb, ub = est.marginal_effect_inference(T[:ns], X[:ns]).conf_int(alpha=.01)\\n\",\n    \"true = (.5 + X[:ns, [0]]) * (np.ones((ns,1)) - 2 * T[:ns])\\n\",\n    \"true = np.where(X[:ns, [0]]>0.5, 1, 4) * (np.ones((ns,1)) - 2 * T[:ns])\\n\",\n    \"df = (\\n\",\n    \"    pd.DataFrame({'X': X[:ns, 0], 'marginal effect': eff[:, 0], 'lb': lb[:, 0], 'ub': ub[:, 0], 'true': true[:, 0]})\\n\",\n    \"    .assign(\\n\",\n    \"        presciption = lambda df: df['marginal effect'].gt(0).map({True: 'Increase treatment',\\n\",\n    \"                                                                  False: 'Decrease treatment'})\\n\",\n    \"    )\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"df\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"b8e78869-8584-46cc-a1df-c6c3c7df199e\",\n   \"metadata\": {},\n   \"source\": [\n    \"Marginal effect vs ground truth\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"id\": \"75990523-4d08-42df-b95a-2bed264c6489\",\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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N9zAW2+9xcsvv8yIESO44447Wl47b968LuMJGjWJioiIRDEzFs0I1cCUriqldFUpAMVTilk0Y1HMBy588YtfJDMzs9N9nn32WVavXs2ZZ54JQG1tLXl5ee3um5mZyXnnncfDDz9MbW0tY8aMadnm7tx6662sXLmSjIwMdu7cye7duwE4/vjjOfvsswF48cUXmTVrFjk5OQB8/vOf7zC2SA3eGWecweOPPw7A/v37ufbaa3n33XcxMxoaGrq8Dh01iXZk06ZNrFu3josvvhiApqYmRowYwYEDB9i5cyeXX345EEpS04ESNhFh/uNvA3D7FROTHIlIMESStkiyBsQlWQMYNGhQy+N+/frR3Nzc8jwy7YO7c+2113L77bd365izZ8/m8ssvp6SkpFX5gw8+SGVlJatXryYrK4sxY8a0nCM6jp7UIg4YMAAIJYqNjY0A/J//83+48MILeeKJJ9i+fTvTpk3r9vG6y90ZP348r7zySqvyDz/8MObnCgI1iYqIiLQRaQaNFt2nLV7GjBnDG2+8AcAbb7zBtm3bgFAz56OPPkpFRQUAe/fu5W9/+1uHxzn//POZP38+V199davy/fv3k5eXR1ZWFs8991yHxzjvvPP44x//SF1dHQcPHuRPf/pTj97H/v37GTlyJAC//e1ve/Ta7jrppJOorKxsSdgaGhpYv349RxxxBPn5+Tz55JMAHDp0iJqaGoYMGcKBAwfiEksiKGETERGJEt1nrXhKMc0LmimeUtyqT1u8XHnllezdu5fCwkJ+9atf8clPfhKAU045hX/+53/m05/+NBMnTuTiiy/udPSnmXHTTTcxbNiwVuXXXHMNr7/+OpMnT+bBBx+koKCg3defeeaZzJw5k9NOO40rrriCyZMnc+SRR3b7fXz/+99n/vz5nHvuuR0OjmirbR+2yMCGjvTv359HH32Um2++mdNOO43CwkJefvllAB544AHuuusuJk6cyDnnnMP777/PxIkT6devH6eddlpKDjqweN8tJNvkyZO9s86SIqImUekbNmzYwMknn9ytfUtWlFBVV9XSDBpJ4nKzcymZVhLfQAPi4MGDDB48mJqaGoqKili8eDGTJk1Kdlhppb3PpJmtdvfJbfdVHzYREZE2SqaVtJp3LdKnrS+tlDBnzhzeeecd6urquPbaa5WsJZkSNhERkXa0Tc76UrIGpPSqAOlICZtIH7diYwXPbqig+lAj2/fUMLdoHNMK2p8uQEREkkODDkT6sBUbK1iwbD119Y30zzQqDtSxYNl6VmysSHZoIiISRQmbSB9238qtZGUa/TIzMDMG9u9HVqZx38qtyQ5NRESiKGET6cN27KshJ6v1DOs5WZmU7atJUkQiwTL/8bdbRlGLJJMSNpE+bNTQgdQ2tJ4jqbahifyhA5MUkUh6y8zMbDXX2B133NHhvk8++STvvPNOy/MFCxbwzDPPHHYMVVVV3HPPPT1+XduF6aPLzYzNmze3lC1aFBpRG6tptZYtW9bpterK4MGD2y3v6PfxwgsvMH78eAoLC6mtreV73/se48eP53vf+16Pz/3Tn/6013FH06ADkT5s0NCXKd81ikwfQr8Mo6a+kfIDlYwdvQM4O9nhiSRVPAbk5OTksGbNmm7t++STT3LppZdyyimnALBw4cLDOndEJGH71re+FZPjAUyYMIElS5bwwx/+EIBHH320Je7uampq6nBN1ZkzZzJz5szDjrOtjn4fDz74IDfddBNf+cpXALjvvvuorKxsWYarJ376059y6623Hm6oqmET6avcncFD3mNb0x3UezX1Tc7+htDzwUPei/sSPCJBlugBObfccgunnHIKEydO5KabbuLll19m2bJlfO9736OwsJAtW7Zw3XXXtcz+P2bMGG699VamTp3K5MmTeeONN5gxYwYnnHAC9957LxCa+Hb69OlMmjSJCRMmsHTp0pZzbdmyhcLCwpYaozvvvJMzzzyTiRMn8qMf/aglrttuu42TTjqJiy66iE2bNnUY/2WXXdZy/K1bt3LkkUcyfPjwlu3f/OY3mTx5MuPHj291/DFjxrBw4ULOO+88/uu//os///nPFBQUcN5553HjjTdy6aWXAqHlrb797W8DcN1113HjjTdyzjnnMG7cuJZr0tH77an777+fRx55hIULF3LNNdcwc+ZMqqurmTJlCg8//DCVlZVceeWVnHnmmZx55pm89NJLLef/yle+woQJE5g4cSKPPfYYt9xyC7W1tRQWFnLNNdf0Kp4I1bCJ9FGRiUBhHg+8sAKAvYfupvjc4j43QahIW9EDcgAG9u9HTX0j963celi1bJEv74j58+dz8cUX88QTT7Bx40bMjKqqKnJzc5k5cyaXXnopX/jCF9o91qhRo3jllVeYN28e1113HS+9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\",\n      \"text/plain\": [\n       \"<Figure size 720x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 6))\\n\",\n    \"plt.errorbar(\\n\",\n    \"    df['X'], df['marginal effect'],\\n\",\n    \"    yerr=[df['marginal effect'] - df['lb'], df['ub'] - df['marginal effect']],\\n\",\n    \"    fmt='o', alpha = 0.8, label = 'Estimated Marginal Effect')\\n\",\n    \"plt.scatter(df['X'], df['true'], marker='x', color='green', label = 'True Marginal Effect')\\n\",\n    \"\\n\",\n    \"plt.xlabel('X')\\n\",\n    \"plt.ylabel('Marginal Effect')\\n\",\n    \"plt.title('Marginal Effect vs X')\\n\",\n    \"\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"af46336d-012f-4481-b133-e30c1221a456\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3.9.7 ('base')\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  },\n  \"vscode\": {\n   \"interpreter\": {\n    \"hash\": \"a079fe92cd2338bcf6346e1127f9bc22d82c11ed4ab30d98a7d2e9f22c56f37f\"\n   }\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "notebooks/Weighted Double Machine Learning Examples.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<table border=\\\"0\\\">\\n\",\n    \"    <tr>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://ictd2016.files.wordpress.com/2016/04/microsoft-research-logo-copy.jpg\\\" style=\\\"width 30px;\\\" />\\n\",\n    \"             </td>\\n\",\n    \"        <td>\\n\",\n    \"            <img src=\\\"https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/MSR-ALICE-HeaderGraphic-1920x720_1-800x550.jpg\\\" style=\\\"width 100px;\\\"/></td>\\n\",\n    \"        </tr>\\n\",\n    \"</table>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Double Machine Learning: Summarized Data and Interpretability\\n\",\n    \"\\n\",\n    \"Double Machine Learning (DML) is an algorithm that applies arbitrary machine learning methods\\n\",\n    \"to fit the treatment and response, then uses a linear model to predict the response residuals\\n\",\n    \"from the treatment residuals.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Helper imports\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"%matplotlib inline\\n\",\n    \"\\n\",\n    \"import seaborn as sns\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Generating Raw Data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import scipy.special\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"n=10000 # number of raw samples\\n\",\n    \"d=10 # number of binary features + 1\\n\",\n    \"\\n\",\n    \"# Generating random segments aka binary features. We will use features 1,...,4 for heterogeneity.\\n\",\n    \"# The rest for controls. Just as an example.\\n\",\n    \"X = np.random.binomial(1, .5, size=(n, d))\\n\",\n    \"# The first column of X is the treatment. Generating an imbalanced A/B test\\n\",\n    \"X[:, 0] = np.random.binomial(1, scipy.special.expit(X[:, 1]))\\n\",\n    \"# Generating an outcome with treatment effect heterogeneity. The first binary feature creates heterogeneity\\n\",\n    \"# We also have confounding on the first variable. We also have heteroskedastic errors.\\n\",\n    \"y = (-1 + 2 * X[:, 1]) * X[:, 0] + X[:, 1] + (1*X[:, 1] + 1)*np.random.normal(0, 1, size=(n,))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Creating Summarized Data\\n\",\n    \"\\n\",\n    \"For each segment, we split the data in two and create one summarized copy for each split. The summarized copy contains the number of samples that were summarized and the variance of the observations for the summarized copies. Optimally we would want two copies per segment, as I'm creating here, but with many segments, the approach would work ok even with a single copy per segment.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.tests.test_statsmodels import _summarize\\n\",\n    \"\\n\",\n    \"X_sum = np.unique(X, axis=0)\\n\",\n    \"n_sum = np.zeros(X_sum.shape[0])\\n\",\n    \"# The _summarize function performs the summary operation and returns the summarized data\\n\",\n    \"# For each segment we have two copies.\\n\",\n    \"X1, X2, y1, y2, X1_sum, X2_sum, y1_sum, y2_sum, n1_sum, n2_sum, var1_sum, var2_sum = _summarize(X, y)\\n\",\n    \"\\n\",\n    \"# We concatenate the two copies data\\n\",\n    \"X_sum = np.vstack([X1_sum, X2_sum]) # first coordinate is treatment, the rest are features\\n\",\n    \"y_sum = np.concatenate((y1_sum, y2_sum)) # outcome\\n\",\n    \"n_sum = np.concatenate((n1_sum, n2_sum)) # number of summarized points\\n\",\n    \"var_sum = np.concatenate((var1_sum, var2_sum)) # variance of the summarized points\\n\",\n    \"splits = (np.arange(len(y1_sum)), np.arange(len(y1_sum), len(y_sum))) # indices of the two summarized copies\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Applying the LinearDML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.LinearDML at 0x1dcfd784408>\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from sklearn.linear_model import LogisticRegressionCV\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = LinearDML(model_y=WeightedLassoCV(cv=3),\\n\",\n    \"                model_t=LogisticRegressionCV(cv=3),\\n\",\n    \"                discrete_treatment=True)\\n\",\n    \"est.fit(y_sum, X_sum[:, 0], X=X_sum[:, 1:5], W=X_sum[:, 5:],\\n\",\n    \"        freq_weight=n_sum, sample_var=var_sum)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1.07157889])\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Treatment Effect of particular segments\\n\",\n    \"est.effect(np.array([[1, 0, 0, 0]])) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(array([0.87415187]), array([1.26900591]))\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Confidence interval for effect\\n\",\n    \"est.effect_interval(np.array([[1, 0, 0, 0]]), alpha=.05) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[['A' '2.0109841149829912']\\n\",\n      \" ['B' '0.07212612018559361']\\n\",\n      \" ['C' '-0.01525518572828466']\\n\",\n      \" ['D' '-0.18928230056541373']]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Getting the coefficients of the linear CATE model together with the corresponding feature names\\n\",\n    \"print(np.array(list(zip(est.cate_feature_names(['A', 'B', 'C', 'D']), est.coef_))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Non-Linear CATE Models with Polynomial Features\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.LinearDML at 0x1dcfd7a4448>\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from sklearn.linear_model import LogisticRegressionCV\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = LinearDML(model_y=WeightedLassoCV(cv=3),\\n\",\n    \"                model_t=LogisticRegressionCV(cv=3),\\n\",\n    \"                featurizer=PolynomialFeatures(degree=2, interaction_only=True, include_bias=False),\\n\",\n    \"                discrete_treatment=True)\\n\",\n    \"est.fit(y_sum, X_sum[:, 0], X=X_sum[:, 1:5], W=X_sum[:, 5:],\\n\",\n    \"        freq_weight=n_sum, sample_var=var_sum)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Getting the confidence intervals of the coefficients and the intercept of the CATE model\\n\",\n    \"# together with the corresponding feature names.\\n\",\n    \"feat_names = est.cate_feature_names(['A', 'B', 'C', 'D'])\\n\",\n    \"point_int = est.intercept_\\n\",\n    \"point = est.coef_\\n\",\n    \"lower_int, upper_int = est.intercept__interval(alpha=0.01)\\n\",\n    \"lower, upper = est.coef__interval(alpha=0.01)\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style('darkgrid'):\\n\",\n    \"    fig, ax = plt.subplots(1,1)\\n\",\n    \"    x = np.arange(1, 1 + len(point))\\n\",\n    \"    plt.errorbar(np.concatenate(([0], x)), np.concatenate(([point_int], point)),\\n\",\n    \"                 np.hstack([np.array([[point_int-lower_int], [upper_int - point_int]]), yerr]), fmt='o')\\n\",\n    \"    ax.set_xticks(np.concatenate(([0], x)))\\n\",\n    \"    ax.set_xticklabels([1] + list(feat_names), rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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DzVhwgS1bt3a5koDg374MOaQPB6PVq1apfvuu0/du3fXH//4R+3fv1/du3fXM888owULFsgwDCUlJYVNiMQ11ox++DDm8AmPdwMAQc8wDD388MNaunSpmjZtqoMHD6pt27amY9q0aSOn06lnn31Wn3/+uaZPn25TtQikY8eOacyYMdq6dasMw5AkderUSZMmTdKYMWMUFRWlXr16yev1auPGjcrKytKcOXN044032ly5f9APn8rKSo0ZM0YbN25U+/btVVhYWOvD70033aQDBw7ojTfe0Jdffqm5c+eG1QyDcOXxeLR69WotXrxY69atk8fjUUREhLp37660tDQlJiZqwIABYfPhmH6YMebwSU1NVXFxsWJjY5WWlqa0tDR1795dMTExkqRvvvnG5goDi2usGf3wYczxIwYABIF58+YZiYmJxuTJk42Kioo6j6uoqDAefvhhIykpycjJyQlghbDL008/bVx77bXGP/7xD2Pv3r3GunXrjN69exudO3c2+vXrZxQVFdUcW1BQYPTo0cPIysqysWL/oh8+s2bNMhITE43Zs2ef8Tiv12u88MILRmJiojF37twAVQc7paSkGElJScb1119v3H///cby5cuN0tLSmv0HDhwwEhMTjffee8/GKgOHfpgx5vBJTEw0rrvuOmPy5MnGP//5T6OwsNC0P9zODa6xZvTDhzGHGbe2AQgKCxYs0A033KBJkyYpMjKyzuMiIyOVnZ2tpKQk/e///m8AK4RdVq9ercGDB2vIkCFq3769brnlFj3++OP6/vvvNWzYMMXHx9ccm5CQoEGDBmnbtm02Vuxf9MMnNzdXPXr00D333HPG4xwOh373u9/phhtu0JIlSwJUHexUVFSkqKgopaen6xe/+IVSUlJqZliEI/phxpjDZ+7cuerTp4+WLVum+++/X926ddPQoUM1d+7csJuNJHGN/TH64cOYw4wgCUBQ2LNnj2677TZLxzqdTt1xxx368ssv/VwVgkFBQYE6dOhg2nbllVdK0mnX8GjVqpWOHj0akNrsQD988vPz1a1bN8vH33rrrdq3b58fK0Kw4MOxGf0wY8zhk5KSoilTpmjdunV68cUX1atXL+3YsUPTpk1Tr169dO+998rhcKi8vNzuUgOCa6wZ/fBhzGEW+jdBA2gQXC7XaZ9+UJdmzZrJ6SQLDwdVVVVq3LixaVujRo1M/z2Vw+FQdXV1QGqzA/3wiY6Ortfv1rhx43q9z6DhSklJUUpKiiZNmqQ1a9YoNzdXa9as0ZYtW/Tss8+qXbt2YfXhmH6YMeaoLSIiomaNpNLSUq1cuVK5ubnatGlTzZpSixcv1oABA5SWlhay76VcY83ohw9jDrPQfkcE0GBcfvnl2r59u+Xjt23bFhZPlAFQtyuuuEJbtmyxfPzmzZt16aWX+rEiBJuTH45ffPFFrV+/Xs8884y6du2qr7/+uubD8ejRo7V8+XJVVlbaXa7f0Y8TGHOcWWxsrDIyMjR37lx9+OGHeuSRR5ScnKwNGzbooYceUmpqqt0lAgHHmMOMGUkAgkLfvn31/PPPa/To0brqqqvOeOzu3buVm5uru+++O0DVwW7FxcU6ePBgzdcnp01/9913pu3SibVAQh39OOGuu+7Sk08+qY0bNyolJeWMx37yySdatWqVxo0bF6DqEGxOfjjOyMhQQUGBli9frtzcXG3YsEEbN25UkyZNlJeXZ3eZARPO/WDMYV2LFi00atQojRo1Svv379fSpUu1bNkyu8vyK66xZvTjBMYcZg7D+OE5fgBgo7KyMv3qV7/S0aNHNXHiRPXt27fW4zK9Xq/eeecdTZs2TV6vV2+//bYuvvhimypGoCQlJcnhcNTabhjGabeftHPnTn+WZRv64VNVVaVhw4bpq6++UlZWlgYOHKiEhATTMUeOHNGiRYs0c+ZMtWjRQgsWLFCTJk1sqhjB6NQPxytXrrS7HNuFQz8Yc6AuXGPN6IcPYw4zgiQAQWPfvn0aO3as9u/fr+joaHXs2FEtWrSQ1+tVYWGhduzYofLycrVq1Uovv/yykpOT7S4ZAfDoo4+e0/dNnTr1AlcSHOiH2ZEjRzRhwgRt2rRJDodDrVu3Nr1vHDx4UIZhqHPnzpo+fXpY3Z4CoG6MOXA6XGPN6IcZYw4fgiQAQaWyslJvvvmmli9frl27dsnj8Ug6saBf586ddfvttyszMzOkF68DUH+rVq3S8uXL9cUXX+jIkSNyOp1KSEhQly5dlJaWpp49e9pdIoAgw5gDwLlgzEGQBCDIfffdd3K5XGratKndpQAAgBDGmAMArCFIAgAAAAAAgCVOuwsAAAAAAABAw0CQBAAAAABAPRQUFGj27Nnq16+f3aUEBfoRXtx2FwAAAAAAwaigoEBLlizR22+/rWXLltldDmxWVVWl999/Xzk5OVq/fr08Ho9cLpfdZdmGfoQvgiQAAAAA+AEfjvFj27dvV05OjpYtW6Zjx47JMAwlJCQoIyNDmZmZdpcXcPQDBEkAACBklZSUyOFwKDY21u5SAAQ5PhzjVIWFhVqyZIlycnK0Z88eGYYhh8MhSRo/fryysrLkdofPx2n6cXbhNOYI779pAADQoBmGoY8++kh79uzRZZddpp49e8rtdmvDhg2aMmWK9u3bJ0lKTk7WAw88oG7dutlcMYBgwodjnMrj8Wj16tVavHix1q1bJ4/Ho4iICHXv3l1paWlKTEzUgAEDlJSUFBbnBf0wY8zhE/p/2wAAICQdO3ZMY8aM0datW2UYhiSpU6dOmjRpksaMGaOoqCj16tVLXq9XGzduVFZWlubMmaMbb7zR5soB2IkPx6hLamqqiouLFRsbq7S0NKWlpal79+6KiYmRJH3zzTc2VxhY9MOHMYcZ74wAAKBBevHFF7Vr1y5NmjRJXbt21bfffqtnnnlGI0eOVLt27fT6668rPj5eknTkyBENGjRIr776asgO6gBYw4dj1KWoqEjR0dFKT09X165ddcMNN9ScF+GIfvgw5jAjSAIAAA3S6tWrNXjwYA0ZMkSS1L59ez3++OP6r//6Lw0bNqxmQCdJCQkJGjRokF5//XW7ygUQJPhwjLrMnTtXy5Yt07Jly/TWW2/J4XCoc+fOuv3225WWlmZ3eQFHP3wYc5gRJAEAgAapoKBAHTp0MG278sorJUmtW7eudXyrVq109OjRgNQGIHjx4Rh1SUlJUUpKiiZNmqQ1a9YoNzdXa9as0ZYtW/Tss8+qXbt2cjgcKi8vt7vUgKAfPow5zAiSAABAg1RVVaXGjRubtjVq1Mj031M5HA5VV1cHpDYAwYsPxzibiIiImtseS0tLtXLlSuXm5mrTpk0yDEMPP/ywFi9erAEDBigtLU0RERF2l+xX9IMxx48RJAEAAAAIO3w4hhWxsbHKyMhQRkaGCgoKtHz5cuXm5mrDhg3auHGjmjRpory8PLvLDBj6AYkgCQAANGDFxcU6ePBgzdcnp5F/9913pu3SiXVRAOB0+HAMK1q0aKFRo0Zp1KhR2r9/v5YuXaply5bZXZZtwq0fjDl8HMbJZ9cBAAA0IElJSXI4HLW2G4Zx2u0n7dy5059lAQghp344Xrlypd3lALAJYw4zZiQBAIAG6a677rK7BAAh7vLLL9f48eM1fvx4u0sBYCPGHGbMSAIAAAAAAIAlTrsLAAAAAAAAQMNAkAQAAAAAAABLCJIAAAAAAABgCUESAAAAAADABVBQUKDZs2erX79+dpfiNzy1DQAAAAAA4BxVVVXp/fffV05OjtavXy+PxyOXy2V3WX5DkAQAAAAAAFBP27dvV05OjpYtW6Zjx47JMAwlJCQoIyNDmZmZdpfnNwRJAAAAAAAAFhQWFmrJkiXKycnR/2/HbnEaCwMoDJ/bkAogrAEHEkOqSNWHq+seUGyEVeBwCO5F1JA0wTTVOAQIFAIEBlJyx40j6fyUOzDPs4Jz7Ht7e5u2bVNVVZLk+Pg4R0dHWVv73qnle78DAAAA+AOLxSJXV1c5Pz/P9fV1FotF+v1+hsNhSinZ2dnJeDzO7u7ut49IiZAEAAAA8KGDg4M8Pz9nc3MzpZSUUjIcDrOxsZEkeXh46Hjh5xKSAAAAAD7w9PSU9fX1jEajDAaD7O/v/4xI/yMhCQAAAOADp6enaZomTdPk7OwsVVVlb28vh4eHKaV0Pe/TVW3btl2PAAAAAPiXvb29ZTqdpq7rTKfTvL6+pqqqbG9v5+7uLicnJxmNRl3PXDkhCQAAAOAXvLy8ZDKZpK7rzOfzvL+/p9frZTAYZDwep5SSfr/f9cyVEJIAAAAAftPj42MuLy9T13Vubm5SVVW2trYym826nrYSQhIAAADAX3B/f5+Li4s0TZPJZNL1nJUQkgAAAABYSq/rAQAAAAB8DUISAAAAAEsRkgAAAABYipAEAAAAwFKEJAAAAACWIiQBAAAAsJQfqod1M2rG5R0AAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import itertools\\n\",\n    \"# Getting the confidence intervals of the CATE(x) for different x vectors\\n\",\n    \"fnames = np.array(['A', 'B', 'C', 'D'])\\n\",\n    \"\\n\",\n    \"lst = list(itertools.product([0, 1], repeat=4))\\n\",\n    \"point = []\\n\",\n    \"lower = []\\n\",\n    \"upper = []\\n\",\n    \"feat_names = []\\n\",\n    \"for x in lst:\\n\",\n    \"    feat_names.append(\\\" \\\".join(fnames[np.array(x)>0]))\\n\",\n    \"    x = np.array(x).reshape((1, -1))\\n\",\n    \"    point.append(est.effect(x)[0])\\n\",\n    \"    lb, ub = est.effect_interval(x, alpha=.01)\\n\",\n    \"    lower.append(lb[0])\\n\",\n    \"    upper.append(ub[0])\\n\",\n    \"\\n\",\n    \"feat_names = np.array(feat_names)\\n\",\n    \"point = np.array(point)\\n\",\n    \"lower = np.array(lower)\\n\",\n    \"upper = np.array(upper)\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style('darkgrid'):\\n\",\n    \"    fig, ax = plt.subplots(1,1, figsize=(20, 5))\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    stat_sig = (lower>0) | (upper<0)\\n\",\n    \"    plt.errorbar(x[stat_sig], point[stat_sig], yerr[:, stat_sig], fmt='o', label='stat_sig')\\n\",\n    \"    plt.errorbar(x[~stat_sig], point[~stat_sig], yerr[:, ~stat_sig], fmt='o', color='red', label='insig')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(feat_names, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Non-Linear CATE Models with Forests\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.causal_forest.CausalForestDML at 0x1dcfe8f9848>\"\n      ]\n     },\n     \"execution_count\": 14,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dml import CausalForestDML\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = CausalForestDML(model_y=GradientBoostingRegressor(n_estimators=30, min_samples_leaf=30),\\n\",\n    \"                      model_t=GradientBoostingClassifier(n_estimators=30, min_samples_leaf=30),\\n\",\n    \"                      discrete_treatment=True,\\n\",\n    \"                      n_estimators=1000,\\n\",\n    \"                      min_samples_leaf=2,\\n\",\n    \"                      min_impurity_decrease=0.001,\\n\",\n    \"                      verbose=0, min_weight_fraction_leaf=.03)\\n\",\n    \"est.fit(y_sum, X_sum[:, 0], X=X_sum[:, 1:5], W=X_sum[:, 5:],\\n\",\n    \"        sample_weight=n_sum)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import itertools\\n\",\n    \"# Getting the confidence intervals of the CATE(x) for different x vectors\\n\",\n    \"fnames = np.array(['A', 'B', 'C', 'D'])\\n\",\n    \"\\n\",\n    \"lst = list(itertools.product([0, 1], repeat=4))\\n\",\n    \"point = []\\n\",\n    \"lower = []\\n\",\n    \"upper = []\\n\",\n    \"feat_names = []\\n\",\n    \"for x in lst:\\n\",\n    \"    feat_names.append(\\\" \\\".join(fnames[np.array(x)>0]))\\n\",\n    \"    x = np.array(x).reshape((1, -1))\\n\",\n    \"    point.append(est.effect(x)[0])\\n\",\n    \"    lb, ub = est.effect_interval(x, alpha=.01)\\n\",\n    \"    lower.append(lb[0])\\n\",\n    \"    upper.append(ub[0])\\n\",\n    \"\\n\",\n    \"feat_names = np.array(feat_names)\\n\",\n    \"point = np.array(point)\\n\",\n    \"lower = np.array(lower)\\n\",\n    \"upper = np.array(upper)\\n\",\n    \"yerr = np.zeros((2, point.shape[0]))\\n\",\n    \"yerr[0, :] = point - lower\\n\",\n    \"yerr[1, :] = upper - point\\n\",\n    \"\\n\",\n    \"with sns.axes_style('darkgrid'):\\n\",\n    \"    fig, ax = plt.subplots(1,1, figsize=(20, 5))\\n\",\n    \"    x = np.arange(len(point))\\n\",\n    \"    stat_sig = (lower>0) | (upper<0)\\n\",\n    \"    plt.errorbar(x[stat_sig], point[stat_sig], yerr[:, stat_sig], fmt='o', label='stat_sig')\\n\",\n    \"    plt.errorbar(x[~stat_sig], point[~stat_sig], yerr[:, ~stat_sig], fmt='o', color='red', label='insig')\\n\",\n    \"    ax.set_xticks(x)\\n\",\n    \"    ax.set_xticklabels(feat_names, rotation='vertical', fontsize=18)\\n\",\n    \"    ax.set_ylabel('coef')\\n\",\n    \"    plt.legend()\\n\",\n    \"    plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Tree Interpretation of the CATE Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.cate_interpreter import SingleTreeCateInterpreter\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreeCateInterpreter at 0x1dcfef36348>\"\n      ]\n     },\n     \"execution_count\": 17,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreeCateInterpreter(include_model_uncertainty=True, max_depth=2, min_samples_leaf=1)\\n\",\n    \"# We interpret the CATE models behavior on the distribution of heterogeneity features\\n\",\n    \"intrp.interpret(est, X_sum[:, 1:5])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# exporting to a dot file\\n\",\n    \"intrp.export_graphviz(out_file='cate_tree.dot', feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# or we can directly render. Requires the graphviz python library\\n\",\n    \"intrp.render(out_file='cate_tree', format='pdf', view=True, feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABYEAAAEeCAYAAADcsNowAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3iUVdrH8e+ZSU+GdJJQQy9BiiJSlSIWXEGxAguKBRusZdV9raiIK+uqqwsotg1BsLCu6OoKCkhHFKUjRVroAklIr5z3jxkmRhKKBCaJv891nWszz5w5z/2wJvPMPefcx1hrEREREREREREREZGayeHrAERERERERERERETkzFESWERERERERERERKQGUxJYREREREREREREpAbz83UAIiIiIlK1GWNCjTG3REZGDrLWxgLG1zEJGGPy8/Pz5+fm5r5mrV3r63hEREREpOoy2hhORERERCpijAl2uVyLOnfu3OrOO+8MrlevHg6HFpNVBTk5OcyePbvkpZdeKsjNzb3MWrvQ1zGJiIiISNWkmcAiIiIicjzXnXPOOS2++OKLYCV/q54LL7zQmZSUFHLXXXeNB9r5Oh4RERERqZp0Jy8iIiIiFYqMjLxm+PDhoUoAV11XX301ubm5rYwxLl/HIiIiIiJVk+7mRURERKRCDocjJj4+3tdhyHEEBAQQGhpaBET4OhYRERERqZqUBBYRERGRChljMObs7gPXq1cvoqKiKCgoOKvn/bW0tDQGDhxIWFgYiYmJTJs2rcK+ycnJ+Pn54XK5vG3evHlnLVZjjDb6EBEREZEKKQksIiIiIlXG9u3bWbhwIcYYPv300988zv79+087lpEjRxIQEMC+fft49913ufvuu1m3bl2F/bt06UJWVpa39ezZ87RjEBERERGpDEoCi4iIiEiVkZKSQufOnbnppptISUk5pdfm5uby7rvv0qdPH3r37n1aceTk5PDRRx/xzDPPEBYWRvfu3enfvz9Tpkw5rXFFRERERHxBSWARERERqTKmTJnC4MGDGTJkCLNmzTqpGb1Lly5lxIgR1KtXj5SUFIYPH87y5cu9z999991ERkaW29q1a1fumJs2bcLpdNK8eXPvsbZt27J+/foK41ixYgWxsbG0aNGCMWPGUFxcfApXLiIiIiJy5vj5OgAREREREYBFixaxY8cOrr/+emJiYmjSpAnTpk3j/vvvL7f/hx9+yOjRo7HWMmzYMFatWkX9+vWP6Tdx4kQmTpx4SrFkZ2cTHh5e5lh4eDhZWVnl9r/wwgtZs2YNDRs2ZN26ddx44434+fnxyCOPnNJ5RURERETOBM0EFhEREZEqYfLkyVxyySXExMQAMGjQoOOWhNi1axe7du2iXbt2tGvXjoSEhEqLJSwsjMzMzDLHMjMzcblc5fZv3LgxjRo1wuFwcM455/DEE0/w0UcfVVo8IiIiIiKnQ0lgEREREfG5vLw8pk+fzvz580lISCAhIYF//OMfrFq1ilWrVpX7mgceeIDdu3dz8cUX89xzz1G/fn3uv/9+VqxYUabfnXfeicvlKre1adOm3LGbN29OcXExmzdv9h5bvXo1rVu3PqnrMcZgrT3JqxcRERERObOUBBYRERERn5sxYwZOp5N169axYsUKVqxYwfr16+nRo8dxZwPXqlWL22+/ncWLFzNv3jyCgoLo378/F198sbfP66+/TlZWVrlt7dq15Y4bGhrKwIEDGT16NDk5OSxevJhPPvmEoUOHltv/iy++8NYv3rBhA88++yz9+/c/jX8REREREZHKoySwiIiIiPhcSkoKN998Mw0aNCA+Pt7b7rnnHqZNm3ZSm6y1aNGCv/71r+zYsYMxY8acdkwTJkwgLy+PuLg4Bg8ezMSJE0lKSgIgNTUVl8tFamoqAHPmzKFdu3aEhYVxxRVXcPXVV/Poo4+edgwiIiIiIpXBaJmaiIiIiFQkNjZ2cXJyctd+/fr5OhQ5jpiYmJy0tLRW1tqdvo5FRERERKoezQQWERERERERERERqcGUBBYRERERERERERGpwZQEFhEREREREREREanBlAQWERERERERERERqcGUBBYRERGRamf48OE8/vjjvg5DRERERKRaUBJYREREROQ0PPjggzRv3pxatWrRqlUrUlJSyjy/cuVKOnbsSGhoKB07dmTlypXe595//31atmxJREQEcXFx3HzzzWRmZnqfd7lcZZqfnx+jRo06a9cmIiIiIjWDksAiIiIiIqchNDSUTz/9lIyMDJKTk7nvvvtYsmQJAIWFhVx11VUMGTKEtLQ0hg0bxlVXXUVhYSEA3bp1Y9GiRWRkZLBlyxaKi4vLzHDOysrytn379hEcHMx1113nk+sUERERkepLSWAREREROSXjxo2jXr161KpVi5YtWzJnzhwAvv32W7p27UpkZCR16tRh5MiR3mQngMPhYOLEid5Zs0888QRbtmyha9euhIeHc8MNN3j7z5s3j/r16/Pcc88RGxtLo0aNmDp1aoUxffbZZ3To0IHIyEi6devG6tWrTxhvZXn66adp2bIlDoeDCy64gB49erB06VLvdRQXF3PfffcRGBjIn/70J6y1zJ07F4D69esTExPjHcvpdLJly5Zyz/Pvf/+b2rVr06NHj0qNX0RERERqPiWBRUREROSkbdy4kQkTJvDtt9+SmZnJzJkzSUxMBNwJzJdeeokDBw6wZMkS5s6dy8SJE8u8ftasWSxfvpylS5fywgsvcMcdd/Duu++SmprK2rVree+997x99+3bx8GDB9m1axfJycnccccdbNy48ZiYfvjhB2699VZef/11Dh48yIgRIxgwYAAFBQXHjffXnn/+eSIjIytsJyMvL4/vvvuOpKQkANatW0fbtm0xxnj7tG3blnXr1nkfL1q0iIiICGrVqsVHH33EvffeW+7YKSkpDB06tMxYIiIiIiInQ0lgERERETlpTqeTgoIC1q9fT1FREYmJiTRp0gSA8847j86dO+Pn50diYiIjRoxgwYIFZV7/8MMPU6tWLZKSkmjTpg19+/alcePGhIeHc9lll7FixYoy/ceMGUNgYCAXXXQRV1xxBR9++OExMb355puMGDGCCy64AKfTyU033URgYCDffPPNceP9tf/7v/8jPT29wnYy7rrrLtq1a8ell14KQHZ2NuHh4WX6hIeHk5WV5X3cvXt3MjIy2LlzJw8++GC5SerU1FTmz5/PTTfddFJxiIiIiIj8kpLAIiIiInLSmjZtyssvv8zTTz9NXFwcgwYNYs+ePQBs2rSJK6+8koSEBMLDw3nsscc4ePBgmdfHxcV5fw4ODj7mcXZ2tvdxZGQkoaGh3scNGjTwnuuXUlNTeemll8rM2t25cyd79uw5bryV7aGHHmLt2rV88MEH3tm6YWFhZTZ6A8jMzMTlch3z+rp163LZZZcxaNCgY55LSUmhe/fuNGrU6IzELiIiIiI1m5LAIiIiInJKBg8ezMKFC9m+fTvGGP7v//4PgLvvvpsWLVqwadMmDh8+zNixY7HW/ubzpKenk5OT4328c+dO6tSpc0y/evXq8eijj5aZtZuTk+NNplYU768999xzuFyuCtvxjB49mpkzZzJr1ixq1arlPZ6UlMTq1avL/DusXr3aWy7i14qLi8utCTxlyhSGDRt23BhERERERCqiJLCIiIiInLSNGzcyd+5cCgoKCAoKIigoCKfTCUBWVha1atUiLCyMDRs28Prrr5/2+UaPHk1hYSELFy7ks88+47rrrjumz+23386kSZNYtmwZ1lpycnL4/PPPycrKOm68v/boo4+SlZVVYavIX//6V9577z2+/PJLoqOjyzzXs2dPnE4nr776KgUFBYwfPx6A3r17AzB16lRSU1Ox1rJjxw4ef/xx+vTpU2aMJUuWsHv37nKvXURERETkZCgJLCIiIiInraCggEceeYTY2FgSEhI4cOAAY8eOBeCFF17gvffeo1atWowYMYLrr7/+tM4VHx9PZGQkdevW5Y9//COvvfYaLVu2PKZfx44deeONNxg1ahRRUVE0a9aMyZMnnzDeyvLYY4+RmppK8+bNvbOGn3vuOQACAgL4+OOPmTJlCpGRkfzrX//i448/JiAgAID169fTrVs3XC4X3bt3p3nz5rzxxhtlxp88eTIDBw484WxkEREREZGKmNNZoiciIiIiNVtsbOzi5OTkrv369Tur5503bx5Dhw5l586dZ/W81VVMTExOWlpaK2ut/sFERERE5BiaCSwiIiIiIiIiIiJSgykJLCIiIiIiIiIiIlKDKQksIiIiIlVOz549VQpCRERERKSSKAksIiIiIiIiIiIiUoMpCSwiIiIiIiIiIiJSgykJLCIiIiJn1bRp0zj//PNxuVzUqVOHfv36sWjRojJ9kpOTcTgcfPjhhwAsXLgQl8uFy+UiLCwMh8PhfexyuUhNTaVXr14EBweXOd6/f39fXKKIiIiISJWiJLCIiIiInDUvvfQS999/P4888gj79u1jx44d3HXXXXzyySdl+qWkpBAVFUVKSgoAPXr0ICsri6ysLNauXQtAenq691iDBg0A+Oc//+k9lpWVxaeffnp2L1BEREREpApSElhEREREzorDhw8zevRoxo8fz8CBAwkNDcXf358rr7ySF154wdtvx44dzJ8/n0mTJjFr1iz2799f6bEkJyfTvXt37r//fiIjI2nSpAlLliwhOTmZBg0aEBcXx+TJk739CwoKePDBB2nYsCHx8fHceeed5OXlAe5k9JVXXknt2rWJioriyiuvZNeuXd7X9urViyeeeILu3btTq1YtLr30Ug4ePFjp1yQiIiIiUhElgUVERETkrFi6dCn5+flcffXVx+2XkpJCx44dueaaa2jVqhVTp049I/EsW7aMtm3bcvDgQQYNGsSgQYP47rvv2Lx5M1OmTGHUqFFkZ2cD8Je//IXNmzezYsUKNm/ezJ49e3jmmWcAOHLkCDfffDPbt29nx44dBAcHM2rUqDLneu+993jnnXfYv38/hYWF/P3vfz8j1yQiIiIiUh4lgUVERETkrDh06BAxMTH4+fkdt9+UKVMYNGgQAIMGDfKWhDgZ9957L5GRkd72xBNPVNi3UaNGDB8+HKfTyQ033MDOnTt58sknCQwM5JJLLiEgIICffvoJay1vvfUWL730ElFRUbhcLh555BE++OADAKKjo7nmmmsICQnB5XLx6KOPMn/+/DLnuvnmm2nevDnBwcFcd911rFq16qSvSURERETkdB3/DlxEREREpJJER0dz8OBBiouLK0wEL168mG3btnHjjTcCMHjwYB5//HFWrlxJ+/btT3iOV155hdtuu+2k4omLi/P+HBwcXO6x7OxsDhw4QG5uLh07dvQ+Z62lpKQEgNzcXO6//35mzZpFeno6AFlZWZSUlOB0OgGIj4/3vjYkJMQ7w1hERERE5GzQTGAREREROSu6dOlCUFAQM2bMqLDP5MmTsdbSoUMHEhIS6Ny5M8ApzQaubDExMQQHB7N27VrS09NJT08nIyODrKwsAF588UU2bdrEN998w+HDh72zgK21PotZREREROSXlAQWERERkbMiPDycp59+mpEjRzJjxgxyc3MpKiriiy++4OGHHyY/P5/p06czadIkVqxY4W2vvvoq06ZNo7i42CdxOxwObrvtNh544AF+/vlnAHbv3s2sWbMA96zf4OBgIiIiSEtL89YKFhERERGpKpQEFhEREZGz5oEHHuDFF19k7Nix1K5dmwYNGjBhwgSuuuoqZsyYQXBwMMOGDSM+Pt7bbr31VkpKSpg5c+YJxx81ahQul8vbflnC4XSMGzeOJk2a0KVLF8LDw+nbty8bN24E4L777iMvL4/Y2Fi6dOnCpZdeWinnFBERERGpLEbL1ERERESkIrGxsYuTk5O79uvXz9ehyHHExMTkpKWltbLW7vR1LCIiIiJS9WgmsIiIiIiIiIiIiEgNpiSwiIiIiIiIiIiI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TWPMFmAZ7nquXwPdrLWJ1tpbPXVfq20CGODQoUPExMQcU8Lh16ZMmcKgQYMAGDRoECkpKSd9jnvvvZfIyEhve+KJJ8rt5+/vz44dO9izZw9BQUFlSlH82ocffsjNN99MmzZtCA0NZfTo0ScdT1VmrS2w1s6z1j5pre0GJAAvABHABOCgMeZzY8yfjTHtjTH6bCEiIiJSRelGTURERKQKMcaEG2P6G2NeMcasATbirte6BhgAxFtrB1lr37LWbvVpsJUsOjqagwcPUlxcXGGfxYsXs23bNm95hsGDB7NmzRpWrlx5Uud45ZVXSE9P97YxY8aU22/cuHFYa7ngggto06bNcUs87N27l/r163sfN2zY8KRiqW6stVnW2v9Za/9sre0ANAH+BTQFPgB+NsZMN8bcZYxp7qk5LCIiIiJVgMpBiIiIiPiQp85qV0rLO7QGvsG93P5W4AfPMv0ar0uXLgQFBTFjxgyuvfbacvtMnjwZay0dOnQoczwlJYX27dtXWizx8fG8+eabACxatIi+ffty4YUXektA/FJCQgI7d+70Pk5NTa20OKoya+1B4N+ehjGmHqWlSh4DrDFmLp7yEdbaXb6KVUREROT3TjOBRURERM4iY4y/MaarMeYJY8zXwM+4660WAX8BYqy1fa21z1trv/29JIABwsPDefrppxk5ciQzZswgNzeXoqIivvjiCx5++GHy8/OZPn06kyZNYsWKFd726quvMm3atOPOID5V06dPZ9cud84yMjISYwxOpxOAuLg4tm4tnYR93XXXMXnyZNavX09ubi7PPPNMpcVRnVhrd1lrU6y1N+HenLAPsBT4A7DSGLPJGPOaMeY6Y0yMT4MVERER+Z1RElhERETkDDLGODz1Uv9sjPkcOIi7nmo47vqqCdbabp66q/OstQU+DdjHHnjgAV588UXGjh1L7dq1adCgARMmTOCqq65ixowZBAcHM2zYMOLj473t1ltvpaSkhJkzZ55w/FGjRuFyubytY8eO5fb77rvv6Ny5My6XiwEDBvCPf/yDRo0aATB69GhuvvlmIiMj+fDDD7n88su599576dOnD82aNaNXr16V+m9SHVm3Tdba16211wG1geuBzcDNwFZjzEpjzIvGmCuMMS5fxisiIiJS0xlrra9jEBEREakxPHVQm1Fa3qEXcAh3eYe5wDzPMvpqITY2dnFy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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# or we can also plot inline with matplotlib. a bit uglier\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=12)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Tree Based Treatment Policy Based on CATE Model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.cate_interpreter import SingleTreePolicyInterpreter\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.cate_interpreter._interpreters.SingleTreePolicyInterpreter at 0x1dcff1f9748>\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"intrp = SingleTreePolicyInterpreter(risk_level=0.05, max_depth=3, min_samples_leaf=1, min_impurity_decrease=.001)\\n\",\n    \"# We find a tree based treatment policy based on the CATE model\\n\",\n    \"# sample_treatment_costs is the cost of treatment. Policy will treat if effect is above this cost.\\n\",\n    \"# It can also be an array that has a different cost for each sample. In case treating different segments\\n\",\n    \"# has different cost.\\n\",\n    \"intrp.interpret(est, X_sum[:, 1:5],\\n\",\n    \"                sample_treatment_costs=0)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# exporting to a dot file\\n\",\n    \"intrp.export_graphviz(out_file='cate_tree.dot', feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# or we can directly render. Requires the graphviz python library\\n\",\n    \"intrp.render(out_file='policy_tree', format='pdf', view=True, feature_names=['A', 'B', 'C', 'D'])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# or we can also plot inline with matplotlib. a bit uglier\\n\",\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"intrp.plot(feature_names=['A', 'B', 'C', 'D'], fontsize=14)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Appendix: Amendment\\n\",\n    \"\\n\",\n    \"To make estimation even more precise one should simply choose the two splits used during the crossfit part of Double Machine Learning so that each summaried copy of a segment ends up in a separate split. We can do this as follows: \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<econml.dml.dml.LinearDML at 0x1dc81fe0988>\"\n      ]\n     },\n     \"execution_count\": 26,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.sklearn_extensions.linear_model import WeightedLassoCV\\n\",\n    \"from econml.dml import LinearDML\\n\",\n    \"from sklearn.linear_model import LogisticRegressionCV\\n\",\n    \"\\n\",\n    \"# One can replace model_y and model_t with any scikit-learn regressor and classifier correspondingly\\n\",\n    \"# as long as it accepts the sample_weight keyword argument at fit time.\\n\",\n    \"est = LinearDML(model_y=WeightedLassoCV(cv=3),\\n\",\n    \"                model_t=LogisticRegressionCV(cv=3),\\n\",\n    \"                discrete_treatment=True,\\n\",\n    \"                cv=[(splits[0], splits[1]), (splits[1], splits[0])]) # we input custom fold structure\\n\",\n    \"est.fit(y_sum, X_sum[:, 0], X=X_sum[:, 1:5], W=X_sum[:, 5:],\\n\",\n    \"        freq_weight=n_sum, sample_var=var_sum)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"array([1.07249425])\"\n      ]\n     },\n     \"execution_count\": 27,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Treatment Effect of particular segments\\n\",\n    \"est.effect(np.array([[1, 0, 0, 0]])) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(array([0.90614918]), array([1.23883932]))\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Confidence interval for effect\\n\",\n    \"est.effect_interval(np.array([[1, 0, 0, 0]])) # effect of segment with features [1, 0, 0, 0]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dml_iv/NLSYM_GBM.ipynb",
    "content": "{\n    \"cells\": [\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 37,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"The autoreload extension is already loaded. To reload it, use:\\n\",\n                        \"  %reload_ext autoreload\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"%load_ext autoreload\\n\",\n                \"%autoreload 2\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 38,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"import numpy as np\\n\",\n                \"import pandas as pd\\n\",\n                \"import matplotlib.pyplot as plt\\n\",\n                \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression\\n\",\n                \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n                \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\\n\",\n                \"from sklearn.pipeline import Pipeline\\n\",\n                \"import scipy.special\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# NLSYM DATA\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 39,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\preprocessing\\\\data.py:645: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.partial_fit(X, y)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:464: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.fit(X, **fit_params).transform(X)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Preprocess data\\n\",\n                \"df = pd.read_csv(\\\"data/card.csv\\\")\\n\",\n                \"data_filter = df['educ'].values >= 6\\n\",\n                \"T = df['educ'].values[data_filter]\\n\",\n                \"Z = df['nearc4'].values[data_filter]\\n\",\n                \"y = df['lwage'].values[data_filter]\\n\",\n                \"\\n\",\n                \"# Impute missing values with mean, add dummy columns\\n\",\n                \"# I excluded the columns 'weights' as we don't know what it is\\n\",\n                \"X_df = df[['exper', 'expersq']].copy()\\n\",\n                \"X_df['fatheduc'] = df['fatheduc'].fillna(value=df['fatheduc'].mean())\\n\",\n                \"X_df['fatheduc_nan'] = df['fatheduc'].isnull()*1\\n\",\n                \"X_df['motheduc'] = df['motheduc'].fillna(value=df['motheduc'].mean())\\n\",\n                \"X_df['motheduc_nan'] = df['motheduc'].isnull()*1\\n\",\n                \"X_df[['momdad14', 'sinmom14', 'reg661', 'reg662',\\n\",\n                \"        'reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']] = df[['momdad14', 'sinmom14', \\n\",\n                \"        'reg661', 'reg662','reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']]\\n\",\n                \"X_df[['black', 'smsa', 'south', 'smsa66']] = df[['black', 'smsa', 'south', 'smsa66']]\\n\",\n                \"columns_to_scale = ['fatheduc', 'motheduc', 'exper', 'expersq']\\n\",\n                \"scaler = StandardScaler()\\n\",\n                \"X_df[columns_to_scale] = scaler.fit_transform(X_df[columns_to_scale])\\n\",\n                \"X = X_df.values[data_filter]\\n\",\n                \"\\n\",\n                \"true_fn = lambda x: np.zeros(x.shape[0])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 40,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 40,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ANALYSIS\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some hyperparameters\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 41,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"0.006686726847208292\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"random_seed = 123459 # random seed for each experiment\\n\",\n                \"N_SPLITS = 10 # number of splits for cross-fitting\\n\",\n                \"COV_CLIP = 20/(X.shape[0]) # covariance clipping in driv\\n\",\n                \"print(COV_CLIP)\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some generic non-parametric regressors and classifiers\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 42,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from utilities import RegWrapper\\n\",\n                \"from sklearn.model_selection import GridSearchCV\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n                \"from xgb_utilities import XGBWrapper\\n\",\n                \"\\n\",\n                \"# XGB forest models for Regression and Classification\\n\",\n                \"model = lambda: XGBWrapper(XGBRegressor(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n                \"                           early_stopping_rounds=5, eval_metric='rmse', binary=False)\\n\",\n                \"\\n\",\n                \"model_clf = lambda: RegWrapper(XGBWrapper(XGBClassifier(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n                \"                                          early_stopping_rounds=5, eval_metric='logloss', binary=True))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Some utility functions\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 43,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def nuisance_diagnostic(cate, nuisance_model, property_name, property_fn, \\n\",\n                \"                        index_names=None, statistic=np.std, threshold=None):\\n\",\n                \"    std = statistic([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]], axis=0)\\n\",\n                \"    if hasattr(std, '__len__'):\\n\",\n                \"        if threshold is None:\\n\",\n                \"            coefs = np.argmax(std).flatten()\\n\",\n                \"        else:\\n\",\n                \"            coefs = np.argwhere(std >= threshold).flatten()\\n\",\n                \"        if index_names is None:\\n\",\n                \"            index_names = np.arange(std.shape[0])\\n\",\n                \"        for high_var in coefs:\\n\",\n                \"            plt.figure(figsize=(4,3))\\n\",\n                \"            plt.title(\\\"{}: {}[{}] Across Folds\\\".format(nuisance_model, property_name, index_names[high_var]))\\n\",\n                \"            plt.plot([property_fn(ns)[high_var] for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"            plt.xlabel('fold')\\n\",\n                \"            plt.ylabel('property')\\n\",\n                \"            plt.show()\\n\",\n                \"    else:\\n\",\n                \"        plt.figure(figsize=(4,3))\\n\",\n                \"        plt.title(\\\"{}: {} Across Folds\\\".format(nuisance_model, property_name))    \\n\",\n                \"        plt.plot([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"        plt.xlabel('fold')\\n\",\n                \"        plt.ylabel('property')\\n\",\n                \"        plt.show()\\n\",\n                \"    \"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DMLATEIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 44,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_ate_iv import DMLATEIV\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We need to specify models to be used for each of these residualizations\\n\",\n                \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n                \"model_T_X = lambda: model() # model for E[T | X]. We use a regressor since T is continuous\\n\",\n                \"model_Z_X = lambda: model_clf() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n                \"\\n\",\n                \"dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 45,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_ate_iv.DMLATEIV at 0x1b75873bb70>\"\n                        ]\n                    },\n                    \"execution_count\": 45,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# We fit DMLATEIV with these models\\n\",\n                \"dmlate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 46,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# We call effect() to get the ATE\\n\",\n                \"ta_effect = dmlate.effect()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 47,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.157\\n\",\n                        \"Standard error: 0.060\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n                \"print(\\\"Standard error: {:.3f}\\\".format(dmlate.std))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 48,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate Interval: (0.041, 0.274)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can call normal_effect_interval to get confidence intervals based\\n\",\n                \"# based on the asympotic normal approximation\\n\",\n                \"lower, upper = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(lower, upper))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and CATE via DMLIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 49,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from utilities import SelectiveLasso, SeparateModel\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from econml.utilities import hstack\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DMLIV we also need a model for E[T | X, Z]. To allow for heterogeneity in the compliance, i.e.\\n\",\n                \"# T = beta(X)*Z + gamma(X)\\n\",\n                \"# we train a separate model for Z=1 and Z=0. The model for Z=1 learns the\\n\",\n                \"# quantity beta(X) + gamma(X) and the model for Z=0 learns gamma(X).\\n\",\n                \"model_T_XZ = lambda: SeparateModel(model(), model())\\n\",\n                \"\\n\",\n                \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n                \"#      theta(X) = <theta, phi(X)>\\n\",\n                \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n                \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n                \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n                \"\\n\",\n                \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n                \"# This model will minimize the square loss:\\n\",\n                \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n                \"dmliv_model_effect = lambda: LinearRegression(fit_intercept=False)\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# Potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n                \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n                \"# that does not penalize the constant term in the CATE model\\n\",\n                \"#dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, fit_intercept=False))\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# We initialize DMLIV with all these models and call fit\\n\",\n                \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n                \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"             n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"            )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 50,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_iv.DMLIV at 0x1b7587c1588>\"\n                        ]\n                    },\n                    \"execution_count\": 50,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"cate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 51,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAeoAAAFJCAYAAABU5W56AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAF5VJREFUeJzt3X1w1PW59/HPPrCpbDY8aGzHuxNv\\nY4kt42QI5EQrEgsqqZ3TsTwF2BrrYYYzUNFJdNrk0CZh1FugjJm2IINtQTtBjLE4fXB07JFwSCs0\\no6ltpijtmLb0SLWNEI67G9gk7vf+gyFHRLK47GYvNu/XX7IP+V17zYY3vyX+8DjnnAAAgEnebA8A\\nAADOjVADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIb5sz3AR+nri2R7hHOaMmWi+vsHsj1G1rEHdnAa\\neziFPbCD01LZQ2Fh6Jz3cUb9Mfn9vmyPYAJ7YAensYdT2AM7OC3deyDUAAAYRqgBADCMUAMAYBih\\nBgDAMEINAIBhhBoAAMMINQAAhpm84AkAAOdjxYaOtH69HQ3z0vJ1envfVCTynmbMmHnBX4szagAA\\n0uy//muP/vrXP6fla3FGDQDAeRoeHtamTQ/rrbf+W4lEQitXrtYrr3Tpt799VYlEQrfeWqXFi7+i\\nF154Tn7/BJWUfFbTp197Qcck1AAAnKdf/OKnmjRpsv7jP5r0P/9zXHff/e8aGIhpy5Yf6LLLCvX8\\n87/QJz/5Sd1227/q0ksvveBIS4QaAIDz1tv7pnp6XtPrr/9BkvT++8Nat+7/6bHHtujo0aO6/vob\\n0n5MQg1gRLp/MCfd0vWDPkCqrrzy/+ryyy/XnXeuUDx+Uo8//iN1dPyn1q17WM451dRUq7p6obxe\\nrxIJl5Zj8sNkAACcp9tvX6jDh/+qNWv+XatWrdAVV/wfTZo0WXfdFda9967Sv/zL9briiit0zTWf\\n07PPtuu3v331go/JGTUA4KI11p+yBAIBNTY+cNbt//ZvK0f+2+Px6IYbbtQNN9yYlmNyRg0AgGGE\\nGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPU\\nAAAYRqgBADCMUAMAYBihBgDAMEINAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMOy8Qv373/9e\\nNTU1kqTDhw9r+fLlCofDam5uViKRkCS1t7dr4cKFqq6u1t69eyVJJ0+e1D333KNwOKyVK1fq2LFj\\nGXoZAADkpqSh/uEPf6hvf/vbisfjkqT169ertrZWu3btknNOe/bsUV9fn1pbW9XW1qbt27erpaVF\\ng4ODeuqpp1RSUqJdu3bpK1/5irZu3ZrxFwQAQC5JGuqioiJt3rx55NcHDx5URUWFJKmyslL79+9X\\nT0+PysrKFAgEFAqFVFRUpEOHDqm7u1tz5swZeeyBAwcy9DIAAMhN/mQPqKqq0ltvvTXya+ecPB6P\\nJCkYDCoSiSgajSoUCo08JhgMKhqNnnH76ceejylTJsrv932sFzKWCgtDyR80DrAHdjDWrO/b+nxj\\ngR2cks49JA31h3m9/3sSHovFVFBQoPz8fMVisTNuD4VCZ9x++rHno79/4OOONWYKC0Pq6zu/P3Dk\\nMvbADrLB8r55P7CD01LZw2hh/9g/9T19+nR1dXVJkjo7O1VeXq7S0lJ1d3crHo8rEomot7dXJSUl\\nmjlzpvbt2zfy2FmzZn3cwwEAMK597DPq+vp6NTY2qqWlRcXFxaqqqpLP51NNTY3C4bCcc6qrq1Ne\\nXp6WL1+u+vp6LV++XBMmTNAjjzySidcAAEDO8jjnXLaH+DDLH53w0c4p7CE3d7BiQ0e2RxjVjoZ5\\n2R7hnHLx/fBxsYNTsv7RNwAAGDuEGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBC\\nDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCMUAMAYBihBgDAMEINAIBhhBoAAMMINQAAhhFq\\nAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAwQg0AgGGEGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFAD\\nAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCMUAMAYBihBgDAMEINAIBhhBoA\\nAMMINQAAhvlTedLQ0JAaGhp05MgReb1ePfjgg/L7/WpoaJDH49G0adPU3Nwsr9er9vZ2tbW1ye/3\\na/Xq1Zo7d266XwMAADkrpVDv27dPw8PDamtr08svv6zvfve7GhoaUm1tra677jo1NTVpz549mjFj\\nhlpbW7V7927F43GFw2HNnj1bgUAg3a8DAICclNJH31dddZXef/99JRIJRaNR+f1+HTx4UBUVFZKk\\nyspK7d+/Xz09PSorK1MgEFAoFFJRUZEOHTqU1hcAAEAuS+mMeuLEiTpy5Ihuu+029ff3a9u2bXrl\\nlVfk8XgkScFgUJFIRNFoVKFQaOR5wWBQ0Wg06defMmWi/H5fKqONicLCUPIHjQPsgR2MNev7tj7f\\nWGAHp6RzDymF+oknntCNN96o+++/X2+//ba+9rWvaWhoaOT+WCymgoIC5efnKxaLnXH7B8N9Lv39\\nA6mMNSYKC0Pq64tke4ysYw/sIBss75v3Azs4LZU9jBb2lD76LigoGAnupEmTNDw8rOnTp6urq0uS\\n1NnZqfLycpWWlqq7u1vxeFyRSES9vb0qKSlJ5ZAAAIxLKZ1R33XXXVq7dq3C4bCGhoZUV1ena6+9\\nVo2NjWppaVFxcbGqqqrk8/lUU1OjcDgs55zq6uqUl5eX7tcAAEDOSinUwWBQ3/ve9866fefOnWfd\\nVl1drerq6lQOAwDAuMcFTwAAMIxQAwBgGKEGAMAwQg0AgGGEGgAAwwg1AACGEWoAAAwj1AAAGEao\\nAQAwjFADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPUAAAY5s/2AABwvlZs6Mj2CEntaJiX\\n7RGQYzijBgDAMEINAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAwQg0AgGGE\\nGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPU\\nAAAYRqgBADCMUAMAYBihBgDAMEINAIBhhBoAAMP8qT7xscceU0dHh4aGhrR8+XJVVFSooaFBHo9H\\n06ZNU3Nzs7xer9rb29XW1ia/36/Vq1dr7ty56ZwfAICcltIZdVdXl1577TU99dRTam1t1TvvvKP1\\n69ertrZWu3btknNOe/bsUV9fn1pbW9XW1qbt27erpaVFg4OD6X4NAADkrJRC/etf/1olJSW6++67\\ntWrVKn3hC1/QwYMHVVFRIUmqrKzU/v371dPTo7KyMgUCAYVCIRUVFenQoUNpfQEAAOSylD767u/v\\n19///ndt27ZNb731llavXi3nnDwejyQpGAwqEokoGo0qFAqNPC8YDCoajSb9+lOmTJTf70tltDFR\\nWBhK/qBxgD2wA5xtvL8nxvvrPy2de0gp1JMnT1ZxcbECgYCKi4uVl5end955Z+T+WCymgoIC5efn\\nKxaLnXH7B8N9Lv39A6mMNSYKC0Pq64tke4ysYw/sAB9tPL8n+J44JZU9jBb2lD76njVrln71q1/J\\nOad//OMfOnHihD7/+c+rq6tLktTZ2any8nKVlpaqu7tb8XhckUhEvb29KikpSeWQAACMSymdUc+d\\nO1evvPKKFi9eLOecmpqa9OlPf1qNjY1qaWlRcXGxqqqq5PP5VFNTo3A4LOec6urqlJeXl+7XAABA\\nzkr5f8/65je/edZtO3fuPOu26upqVVdXp3oYAADGNS54AgCAYYQaAADDCDUAAIYRagAADCPUAAAY\\nRqgBADCMUAMAYBihBgDAMEINAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAw\\nQg0AgGGEGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYR\\nagAADPNnewBgvFixoSPbIwC4CHFGDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCMUAMAYBih\\nBgDAMEINAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMOyCQn306FHddNNN6u3t1eHDh7V8+XKF\\nw2E1NzcrkUhIktrb27Vw4UJVV1dr7969aRkaAIDxIuVQDw0NqampSZ/4xCckSevXr1dtba127dol\\n55z27Nmjvr4+tba2qq2tTdu3b1dLS4sGBwfTNjwAALku5VBv3LhRy5Yt0+WXXy5JOnjwoCoqKiRJ\\nlZWV2r9/v3p6elRWVqZAIKBQKKSioiIdOnQoPZMDADAO+FN50rPPPqupU6dqzpw5+sEPfiBJcs7J\\n4/FIkoLBoCKRiKLRqEKh0MjzgsGgotFo0q8/ZcpE+f2+VEYbE4WFoeQPGgfYAzvA2cb7e2K8v/7T\\n0rmHlEK9e/dueTweHThwQG+88Ybq6+t17NixkftjsZgKCgqUn5+vWCx2xu0fDPe59PcPpDLWmCgs\\nDKmvL5LtMbKOPbADfLTx/J7ge+KUVPYwWthT+uj7ySef1M6dO9Xa2qrPfe5z2rhxoyorK9XV1SVJ\\n6uzsVHl5uUpLS9Xd3a14PK5IJKLe3l6VlJSkckgAAMallM6oP0p9fb0aGxvV0tKi4uJiVVVVyefz\\nqaamRuFwWM451dXVKS8vL12HBAAg511wqFtbW0f+e+fOnWfdX11drerq6gs9DAAA4xIXPAEAwDBC\\nDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCMUAMAYBihBgDAMEINAIBhhBoAAMMINQAAhqXt\\nX88CAEgrNnRke4SkdjTMy/YI+Bg4owYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCM\\nUAMAYBihBgDAMEINAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAwQg0AgGGE\\nGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBCDQCAYYQaAADDCDUAAIYRagAADCPU\\nAAAY5k/lSUNDQ1q7dq2OHDmiwcFBrV69Wp/5zGfU0NAgj8ejadOmqbm5WV6vV+3t7Wpra5Pf79fq\\n1as1d+7cdL8GAAByVkqh/vnPf67Jkydr06ZN6u/v14IFC/TZz35WtbW1uu6669TU1KQ9e/ZoxowZ\\nam1t1e7duxWPxxUOhzV79mwFAoF0vw4AAHJSSqH+4he/qKqqqpFf+3w+HTx4UBUVFZKkyspKvfzy\\ny/J6vSorK1MgEFAgEFBRUZEOHTqk0tLS9EwPAECOSynUwWBQkhSNRnXvvfeqtrZWGzdulMfjGbk/\\nEokoGo0qFAqd8bxoNJr060+ZMlF+vy+V0cZEYWEo+YPGAfbADnBxyuT7lu+JU9K5h5RCLUlvv/22\\n7r77boXDYX35y1/Wpk2bRu6LxWIqKChQfn6+YrHYGbd/MNzn0t8/kOpYGVdYGFJfXyTbY2Qde2AH\\nuHhl6n3L98QpqexhtLCn9FPf7777rlasWKFvfOMbWrx4sSRp+vTp6urqkiR1dnaqvLxcpaWl6u7u\\nVjweVyQSUW9vr0pKSlI5JAAA41JKZ9Tbtm3Te++9p61bt2rr1q2SpG9961t66KGH1NLSouLiYlVV\\nVcnn86mmpkbhcFjOOdXV1SkvLy+tLwAAgFzmcc65bA/xYZY/OuGjnVMs7mHFho5sjwBcFHY0zMvI\\n17X4+0I2mPjoGwAAjA1CDQCAYYQaAADDCDUAAIYRagAADCPUAAAYRqgBADCMUAMAYBihBgDAMEIN\\nAIBhhBoAAMMINQAAhhFqAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAwQg0AgGGEGgAAw/zZHgAAMLZW\\nbOjI9gij2tEwL9sjmMIZNQAAhhFqAAAMI9QAABhGqAEAMIxQAwBgGKEGAMAwQg0AgGGEGgAAwwg1\\nAACGEWoAAAwj1AAAGEaoAQAwjFADAGAYoQYAwDBCDQCAYfx71Dgv1v/9WgDIVZxRAwBgGKEGAMAw\\nQg0AgGGEGgAAwwg1AACGEWoAAAwj1AAAGEaoAQAwLOMXPEkkElq3bp3++Mc/KhAI6KGHHtKVV16Z\\n6cMCAC5SF8MFlnY0zBuzY2X8jPqll17S4OCgnn76ad1///3asGFDpg8JAEDOyPgZdXd3t+bMmSNJ\\nmjFjhv7whz9k+pAXpYvhT5AAgLGX8VBHo1Hl5+eP/Nrn82l4eFh+/7kPXVgYyvRYFyQT8/3ikdvT\\n/jUBANmRzk5k/KPv/Px8xWKxkV8nEolRIw0AAP5XxkM9c+ZMdXZ2SpJ+97vfqaSkJNOHBAAgZ3ic\\ncy6TBzj9U99/+tOf5JzTww8/rKuvvjqThwQAIGdkPNQAACB1XPAEAADDCDUAAIYR6iROnjype+65\\nR+FwWCtXrtSxY8fOesyTTz6pRYsWafHixdq7d28Wpsys89nBE088oSVLlmjJkiXasmVLFqbMvPPZ\\ngyQdO3ZM8+fPVzweH+MJMyeRSKipqUlLly5VTU2NDh8+fMb9HR0dWrRokZYuXar29vYsTZl5yfYg\\nSSdOnNCyZcvU29ubhQnHRrI9PPfcc1qyZImWLVumpqYmJRKJLE2aOcl28OKLL4504ZlnnrmwgzmM\\naseOHe773/++c8655557zj344INn3H/06FH3pS99yQ0ODrpIJOIqKytdIpHIxqgZk2wHf/vb39yC\\nBQvc8PCwe//9993SpUvdG2+8kY1RMyrZHpxzrrOz091+++2urKzMnTx5cqxHzJgXX3zR1dfXO+ec\\ne+2119yqVatG7hscHHS33HKLO378uIvH427hwoXun//8Z7ZGzajR9uCccz09PW7BggXuhhtucG++\\n+WY2RhwTo+3hxIkT7uabb3YDAwPOOefq6urcSy+9lJU5M2m0HQwPD7tbb73Vvffee254eNjNnz/f\\nHT16NOVjcUadxAevrFZZWakDBw6ccf/UqVP1s5/9TBMmTNC7776rgoICeTyebIyaMcl28KlPfUo/\\n+tGP5PP55PV6NTw8rLy8vGyMmlHJ9iBJXq9Xjz/+uCZPnjzW42XUaFcY7O3tVVFRkSZNmqRAIKBZ\\ns2bp1VdfzdaoGZXsSouDg4N69NFHVVxcnI3xxsxoewgEAmpra9Mll1wiSePi94MP78Dn8+n5559X\\nKBTS8ePHJUnBYDDlY3HlkQ945pln9OMf//iM2y699FKFQqeuMBMMBhWJRM56nt/v186dO7V582bV\\n1NSMyayZksoOJkyYoKlTp8o5p+985zuaPn26rrrqqjGbORNSfS/Mnj17TOYba6NdYTAajY7sRTq1\\nm2g0mo0xMy7ZlRZnzZqVrdHG1Gh78Hq9uuyyyyRJra2tGhgYyMnvi2TvBb/fr1/+8pd64IEHdNNN\\nN13Qhb4I9Qec/jvWD1qzZs3IldVisZgKCgo+8rl33HGHqqurtXLlSv3mN7/R9ddfn/F5MyHVHcTj\\nca1du1bBYFDNzc1jMmsmXch7IReNdoXBD98Xi8XOCHcu4UqLpyTbQyKR0KZNm/SXv/xFmzdvzrlP\\nGaXzey/Mnz9ft9xyixoaGvTTn/5UixYtSulYfPSdxMyZM7Vv3z5JUmdn51l/Yv7zn/+sNWvWyDmn\\nCRMmKBAIyOvNrbUm24FzTl//+td1zTXX6IEHHpDP58vGmBmXbA+5bLQrDF599dU6fPiwjh8/rsHB\\nQb366qsqKyvL1qgZxZUWT0m2h6amJsXjcW3dunXkI/BcM9oOotGo7rjjDg0ODsrr9eqSSy65oC5w\\nwZMkTpw4ofr6evX19WnChAl65JFHVFhYqMcff1xFRUW6+eabtWXLFnV2dsrj8WjOnDlas2ZNtsdO\\nq2Q7SCQSuu+++zRjxoyR59x3330595v1+bwXTps3b55eeOGFnPm7uY+6wuDrr7+ugYEBLV26VB0d\\nHXr00UflnNOiRYv01a9+NdsjZ0SyPZxWU1OjdevW5exVGEfbw7XXXqtFixapvLx85Ez6zjvv1K23\\n3prlqdMr2Xvh6aef1k9+8hP5/X5dc801amxsTPkkhlADAGBYbn1GCwBAjiHUAAAYRqgBADCMUAMA\\nYBihBgDAMEINAIBhhBoAAMMINQAAhv1/1BIcThzRyFkAAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x396 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X)\\n\",\n                \"dml_effect = cate.effect(X)\\n\",\n                \"plt.hist(dml_effect, label='est')\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 52,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[ 0.05854357  0.09525829 -0.09525865  0.02605133  0.0096557  -0.00424164\\n\",\n                        \"  0.06109043 -0.03009112 -0.03460873  0.0677044  -0.02577201  0.00583535\\n\",\n                        \"  0.07245171 -0.02756375  0.00314271  0.01737084  0.07879138 -0.13341706\\n\",\n                        \" -0.0070502  -0.03338776  0.07776467  0.02455005 -0.09374658]\\n\",\n                        \"NA\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# To get the parameter theta we call coef_. The first entry is the intercept of the CATE model\\n\",\n                \"print(cate.coef_)\\n\",\n                \"try:\\n\",\n                \"    print(cate.effect_model.lasso_model.alpha_)\\n\",\n                \"    plt.plot(cate.effect_model.lasso_model.alphas_, cate.effect_model.lasso_model.mse_path_)\\n\",\n                \"    plt.show()\\n\",\n                \"except:\\n\",\n                \"    print(\\\"NA\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 53,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.026\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dml_effect)))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 54,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAecAAAFXCAYAAACYx4YhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xt4FPW9x/HP3hIgCZCEgBcEEQhW\\nrYcES7U0oghYUa4xJkTxWvAC1kPx1iNFRIqAerSicKpHEVEgXlAIterhonAo9RQEgVZAEBAUIZAQ\\nshuySXb3/BHYEhN2YHeTHSbv1/P4yMx3M/PbLzz57PxmdsYWCAQCAgAApmGP9QAAAEBthDMAACZD\\nOAMAYDKEMwAAJkM4AwBgMoQzAAAm44z1AABJ2rt3r/r166f09HRJkt/vV0JCgm699VYNGDBAkjRj\\nxgy9+OKLmjJlirKzs4M/W15erl69eqlnz57605/+pBkzZqikpEQTJkyos59HH31UXbt21U9/+lON\\nHj1aq1atUrNmzYL1yspKZWVlafbs2broootq/azX69WsWbP06aefKhAIyO/3a+DAgRo5cqRsNlvw\\ndXPnztXkyZNVUFCg7t27S5K2b9+ucePGSZJKS0tVVlam9u3bS5KGDh2qn/zkJxo5cqQ6depUa5/J\\nycl6/fXXw23rSfXp00cul6vWe2/btq1eeeWVqO5nz549mj59umbMmKH9+/frgQce0IIFC6K6j/o8\\n/vjjWrVqlQYOHKixY8dGffvff/+9nnjiCe3fv18+n08PP/ywsrKyJEkff/yx/vSnP6myslLnnHOO\\npk2bpuTkZG3ZskUTJ06U2+1WYmKiHnjgAV1xxRVRHxusgXCGaTRr1kyLFi0KLn/33Xe6/fbb5XA4\\ndO2110qSzjnnHC1atKhWOH/yySdq0aLFae2rZ8+eateunT755BMNGjSo1rY6depUJ5gDgYDuu+8+\\nderUSQUFBYqPj1dJSYnuvvtulZeX69///d+Dr12wYIEGDhyoOXPmBMO5S5cuwfe2cOHC4C/w4z7/\\n/HN16NCh1vtvaM8884x++tOfNug+vv/+e+3cuVOS1K5du0YJZkkqKCjQp59+qrPOOqtBtn/PPfco\\nLy9P+fn5+uc//6nbbrtNq1ev1tatW/Xkk09qwYIFat++vaZMmaLnnntOkyZN0n333afRo0crOztb\\nRUVFuuWWW/Tmm28qLS2tQcaIMxvT2jCtc889V7/5zW/06quvBtdlZWVp+/bt+uGHH4Lr3n///VoB\\ne6qGDx+u9957r9a6goIC3XzzzXVe+/e//13ffPONfve73yk+Pl5SzVHt9OnT9bOf/Sz4us8//1yl\\npaV66KGHtGzZMu3bt++0x3Uq/uu//ks5OTkaOHCg+vbtq//5n/+RJO3YsUN5eXkaNmyYhg4dqrfe\\neuu0t92nTx9t2rSpzvLevXvVt29fPfnkk7rxxhvVv3//4H6rq6v11FNP6dprr9WAAQP02GOPqbKy\\nUuPHj9e3336ru+66S3v37lVGRoYkqaqqSk8++aQGDBiggQMH6rHHHpPb7Q7ub8aMGcrPz9fVV1+t\\n559/vt5xfv311xoxYoQGDhyoQYMG6YMPPpAk5efnKxAIaOTIkVq7dm2tn5kxY4buuusuDRw4UA8+\\n+KAkadasWRo6dKgGDx6s++67T/v375ck7d69WzfffLNuuOEG3XHHHbr99tu1cOFCffXVVyotLVV+\\nfr4k6aKLLtK8efNks9m0ePFiZWdnB2dF7r//fo0cOVLFxcXat2+fhgwZIklKS0tTt27dtGrVqtP+\\n+0HTQDjD1C688EJt27YtuOx0OnXddddp8eLFkmqOzDwej7p27Xra2x48eLA2b96sPXv2SJJ27dql\\nnTt3Bo/ST7R582Zdeumlcjgctdaff/756tWrV3B53rx5GjhwoNq1a6fLL79cb7755imP59tvv9Xg\\nwYNr/Tdr1qw6r/vuu+/017/+VXPnzlVhYaHGjh2rF154QZL06quvqk+fPlq4cKFefvllrV27Vn6/\\nv979Pfjgg7X29dVXXxmOcc+ePfrlL3+pd999V+PGjdOUKVOC7/sf//iHFi1apCVLlsjj8ejDDz/U\\n5MmT1aFDh1ofsKSaQDxw4IAWLVqkRYsWye/3a/r06cF6eXm55s2bpwULFui1114L/h0dV11drXvv\\nvVcjRoxQYWGhXnnlFf3nf/6n1q9fr3nz5kmS5syZo8suu6ze/r3//vt65pln9MEHH2jbtm165513\\ntGjRIvXu3Vvjx4+XJD388MO6/vrrtWTJEo0fP14bNmyQJO3cuVPnnnuunnrqKeXk5CgvL09FRUVy\\nuVzatWuXfD6f7r33Xg0aNEhPPPGEEhISlJKSovbt2+v9998P9nHdunUqKioy7DmaJqa1YWo2m63W\\neVGpJlQfe+wxjRo1SosWLQoejZyuxMREDRo0SAsXLtQDDzyggoIC3XjjjYqLi6vzWrvdLqM73RYV\\nFWnZsmXBo/EhQ4Zo4sSJGj169ClNu5/qtPa5556r6dOnq7CwULt379aXX34pj8cjSerXr58eeeQR\\nbdy4UVdccYXGjx8vu73+z+DhTGu7XC717t1bUs0R4+HDhyVJf/3rXzV48ODg39Xxo93PP/+83u2s\\nXLlSY8eOlcvlkiSNGDFCo0ePDtavueYaSTVT4ampqSotLdV5550XrO/atUter1f9+/cPvq5///5a\\ntWpV8Oj8ZLp37y6ns+ZX34oVK7Rp06bgaRK/36+jR4+qtLRUGzduDH646ty5sy6//HJJNR8Mvvji\\nC91555363e9+p40bN2rkyJFavHixqqurtWLFCr3++utKTU3V008/rfHjx2vmzJmaNWuWpk2bpjlz\\n5qhbt27q3bt38P0DP8aRM0xt06ZNwYvEjrv00kvl8/n01Vdf6cMPP9QNN9wQ9vbz8/P1/vvvy+v1\\nqrCwUHl5efW+7t/+7d+0adMm+Xy+Wus3btyohx56SJL09ttvS5Luvfde9enTR9OnT5fb7Q4eLUXL\\nP/7xD+Xm5srtdqtXr1769a9/HaxdffXV+vjjj3Xdddfpq6++0sCBA2udAjhVJ34QqaysDP7Z5XIF\\nw/7Ei+COh91xBw8e1IEDB066fb/fX+vn/X6/qqqqgsvHTx0c38+PPxj5fL5aP398zNXV1SHfl6Ra\\nH5T8fr9+/etfB4/g33vvPc2fPz84Q3Lifo+va9u2rVq2bKm+fftKqvn32L59e23ZskVt27ZVVlaW\\n0tLSZLfbNWzYsOARt9/v16xZs1RYWKhnnnlGP/zwgzp06GA4XjRNhDNMa+fOnZo5c6buvPPOOrXB\\ngwdrypQp6tSpk1q3bh32Prp27arzzjtPzz77rDIzM096AVFGRoYuuOACPfXUU/J6vZJqAmjy5Mlq\\n3769fD6f3nnnHT3xxBNavny5li9frk8//VR333233njjDcOj7tPx97//XZdcconuuOMO9ezZU8uW\\nLQt+aBg3bpw+/PBDXX/99Xr88ceVmJiob7/99rS2n5KSos2bN0uqOfI9lanXK664QkuWLFFlZaX8\\nfr8mTpyoP//5z3I4HLVC97isrCzNnz9fVVVV8vv9euutt2qdHjBywQUXyOl06pNPPpEk7d+/Xx9/\\n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\\nLS2pUfd3pqNf4aN3kaF/kaF/kYlF/8JK1MzMTK1YsUIDBgzQhg0blJ6eHvFASkrKI97G6SoqKmv0\\nfZ6p0tKS6FeY6F1k6F9k6F9kGrJ/oUI/rHDu16+fVq9erby8PAUCAU2ZMkWFhYUqLy9Xbm5u2AMF\\nAABhhrPdbtekSZNqrevcuXOd182dOze8UQEA0IRxExIAAEyGcAYAwGQIZwAATIZwBgDAZAhnAABM\\nhnAGAMBkCGcAAEyGcAYAwGQIZwAATIZwBgDAZAhnAABMhnAGAMBkCGcAAEyGcAYAwGQIZwAATIZw\\nBgDAZAhnAABMhnAGAMBkCGcAAEyGcAYAwGQIZwAATIZwBgDAZAhnAABMhnAGAMBkCGcAAEyGcAYA\\nwGQIZwAATIZwBgDAZAhnAABMhnAGAMBkCGcAAEyGcAYAoB7eKp/2HfTIW+Vr9H07G32PAACYmM/v\\nV8Hy7Vr71Q867KlW6wSnLvvJWcrt00UOe+Mc0xLOAACcYO7/bNXK9fuCy4c91Vq6dq8qfT7dfu1P\\nGmUMTWRa+yMp5aOa/wMAcBLeKt8JwVw7O1au39doU9xhHTn7/X5NnDhRW7duVVxcnCZPnqyOHTsG\\n68uXL9dLL70kp9Op7Oxs3XTTTVEb8On5SLpQcjSTbDYp0EHyVXwkbZGkX8VoTAAAs9q1r1ShsmPX\\nvu7q1iGlwccR1pHz0qVLVVlZqYKCAo0bN05Tp04N1qqqqvTUU0/ptdde09y5c1VQUKCioqKoDfi0\\nXCg5m9c0V6r5v7N5zXoAAH7suyJPyOz4rsjTKOMIK5zXrVunrKwsSVL37t21efPmYG3Hjh3q0KGD\\nWrVqpbi4OPXo0UNr166NzmhPy0dyNKu/UrOeKW4AQG3vlc4ImR3vlc5olHGENa3tdruVmJgYXHY4\\nHKqurpbT6ZTb7VZSUlKwlpCQILfbbbjN5OQWcjod4Qynfin/+tTzYzZbTT0tLan+F6Be9Ct89C4y\\n9C8y9O/0hMwONU4/wwrnxMREeTz/OrT3+/1yOp311jweT62wPpmSkvJwhnJyxTXnCeprciBQUy8q\\nKovuPi0sLS2JfoWJ3kWG/kWG/p2+QCBEdih62REq5MOa1s7MzNTKlSslSRs2bFB6enqw1rlzZ+3e\\nvVuHDx9WZWWl1q5dq4yMjHB2E6FfyVdRf6VmPReEAQBqu7vjwyGz4+6ODzfKOMI6cu7Xr59Wr16t\\n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\\nfxXeAt5FNDGaAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x396 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}\\\".format(X_df.columns[np.argmax(np.abs(cate.coef_[1:]))]))\\n\",\n                \"plt.scatter(X[:, np.argmax(np.abs(cate.coef_[1:]))], dml_effect, label='est')\\n\",\n                \"plt.scatter(X[:, np.argmax(np.abs(cate.coef_[1:]))], true_fn(X), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"#### Some Diagnostics of the Fitted Nuisance Models Across Folds\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 55,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Unavailable\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# The property .fitted_nuisances is a dictionary of the form:\\n\",\n                \"# {'name_of_nuisance': [fitted_model_fold_1, fitted_model_fold_2, ...]}\\n\",\n                \"# then we can access all properties of each of the fitted models for each fold.\\n\",\n                \"# If for instance all nuisances have a linear form we can look at the standard deviation\\n\",\n                \"# of the coefficients of each of the nuisance model across folds to check for stability\\n\",\n                \"try:\\n\",\n                \"    nuisance_diagnostic(cate, 'model_T_XZ', 'coef', lambda ns: ns.coef_.flatten(),\\n\",\n                \"                        [c+\\\"_0\\\" for c in X_df.columns] + [c+\\\"_1\\\" for c in X_df.columns])\\n\",\n                \"    nuisance_diagnostic(cate, 'model_T_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(cate, 'model_Y_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 56,\n            \"metadata\": {\n                \"collapsed\": false,\n                \"scrolled\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Unavailable\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"try:\\n\",\n                \"    for i in range(N_SPLITS):\\n\",\n                \"        plt.plot([c0 - c1 for c0, c1 in zip(cate.fitted_nuisances['model_T_XZ'][i].model0.coef_.flatten(),\\n\",\n                \"              cate.fitted_nuisances['model_T_XZ'][i].model1.coef_.flatten())])\\n\",\n                \"    \\n\",\n                \"    plt.title(\\\"Difference in coefficients betwen model0 and model1\\\")\\n\",\n                \"    plt.show()\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DRIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 57,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# If we want to fit an ATE, we simply fit a constant functin theta(X) = theta\\n\",\n                \"# We can do this with a pipeline where the preprocessing step only creates a bias column\\n\",\n                \"# and the regression step fits a linear regression with no intercept.\\n\",\n                \"# To get normal confidence intervals easily we can use a statsmodels linear regression\\n\",\n                \"# wrapped in an sklearn interface\\n\",\n                \"const_driv_model_effect = lambda: ConstantModel()\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=True)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 58,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x1b75c7d97f0>\"\n                        ]\n                    },\n                    \"execution_count\": 58,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 59,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\statsmodels\\\\regression\\\\linear_model.py:1554: RuntimeWarning: divide by zero encountered in double_scalars\\n\",\n                        \"  return self.ess/self.df_model\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     inf</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:53:34</td>     <th>  Log-Likelihood:    </th> <td> -6595.4</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.319e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2990</td>      <th>  BIC:               </th> <td>1.320e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th> <td>    0.0413</td> <td>    0.040</td> <td>    1.030</td> <td> 0.303</td> <td>   -0.037</td> <td>    0.120</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>3168.820</td> <th>  Durbin-Watson:     </th>  <td>   2.012</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>4187875.949</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td>-4.201</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>186.121</td> <th>  Cond. No.          </th>  <td>    1.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n                            \"Method:                 Least Squares   F-statistic:                       inf\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):                nan\\n\",\n                            \"Time:                        16:53:34   Log-Likelihood:                -6595.4\\n\",\n                            \"No. Observations:                2991   AIC:                         1.319e+04\\n\",\n                            \"Df Residuals:                    2990   BIC:                         1.320e+04\\n\",\n                            \"Df Model:                           0                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.0413      0.040      1.030      0.303      -0.037       0.120\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     3168.820   Durbin-Watson:                   2.012\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          4187875.949\\n\",\n                            \"Skew:                          -4.201   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     186.121   Cond. No.                         1.00\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 59,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n                \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n                \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n                \"const_dr_cate.effect_model.summary()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"#### Some diagnostics of the fitted nuisance models across folds\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 60,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Model prel_model_effect max std of coefs: 0.06628579876493147\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# The property .fitted_nuisances is a dictionary of the form:\\n\",\n                \"# {'name_of_nuisance': [fitted_model_fold_1, fitted_model_fold_2, ...]}\\n\",\n                \"# then we can access all properties of each of the fitted models for each fold.\\n\",\n                \"# If for instance all nuisances have a linear form we can look at the standard deviation\\n\",\n                \"# of the coefficients of each of the nuisance model across folds to check for stability\\n\",\n                \"try:\\n\",\n                \"    [print(\\\"Model {} max std of coefs: {}\\\".format(name,\\n\",\n                \"                                                  np.max(np.std([ns.coef_ for ns in nuisance_insts], axis=0)))) \\n\",\n                \"     if hasattr(nuisance_insts[0], 'coef_') else None\\n\",\n                \"     for name, nuisance_insts in const_dr_cate.fitted_nuisances.items()]\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 61,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Unavailable\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"try:\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_TZ_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_TZ_X', 'predict', lambda ns: ns.predict(X), np.arange(X.shape[0]))\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_T_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'prel_model_effect', 'effect', lambda ns: ns.effect(X), np.arange(X.shape[0]))\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Projecting CATE to a pre-chosen subset of variables in final model\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 62,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[4]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We could also fit a projection on a subset of the features by using the\\n\",\n                \"# subset wrapper from our utilities.\\n\",\n                \"\\n\",\n                \"# Example: including everything for expository purposes, but any array_like of indices would work\\n\",\n                \"subset_names = set(['motheduc'])\\n\",\n                \"# list of indices of features X to use in the final model\\n\",\n                \"feature_inds = np.argwhere([(x in subset_names) for x in X_df.columns.values]).flatten()\\n\",\n                \"print(feature_inds)\\n\",\n                \"# Because we are projecting to a low dimensional model space, we can\\n\",\n                \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n                \"# the hypothesis testing capability\\n\",\n                \"proj_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n                \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n                \"                                         )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 63,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"proj_dr_cate = const_dr_cate.refit_final(proj_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 64,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X[:, feature_inds])\\n\",\n                \"proj_dr_effect = proj_dr_cate.effect(X[:, feature_inds])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 65,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.001</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   1.538</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td> 0.215</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:53:35</td>     <th>  Log-Likelihood:    </th> <td> -6594.7</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.319e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2989</td>      <th>  BIC:               </th> <td>1.321e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"      <td></td>        <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th>    <td>    0.0418</td> <td>    0.040</td> <td>    1.042</td> <td> 0.298</td> <td>   -0.037</td> <td>    0.121</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>motheduc</th> <td>   -0.0502</td> <td>    0.040</td> <td>   -1.240</td> <td> 0.215</td> <td>   -0.129</td> <td>    0.029</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>3179.942</td> <th>  Durbin-Watson:     </th>  <td>   2.012</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>4188762.287</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td>-4.231</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>186.137</td> <th>  Cond. No.          </th>  <td>    1.01</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.001\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n                            \"Method:                 Least Squares   F-statistic:                     1.538\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):              0.215\\n\",\n                            \"Time:                        16:53:35   Log-Likelihood:                -6594.7\\n\",\n                            \"No. Observations:                2991   AIC:                         1.319e+04\\n\",\n                            \"Df Residuals:                    2989   BIC:                         1.321e+04\\n\",\n                            \"Df Model:                           1                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.0418      0.040      1.042      0.298      -0.037       0.121\\n\",\n                            \"motheduc      -0.0502      0.040     -1.240      0.215      -0.129       0.029\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     3179.942   Durbin-Watson:                   2.012\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          4188762.287\\n\",\n                            \"Skew:                          -4.231   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     186.137   Cond. No.                         1.01\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 65,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is\\n\",\n                \"# an instance of SubsetWrapper, we look at the model of the SubsetWrapper which is \\n\",\n                \"# and instance of the pipeline, we then look at the reg step of the pipeline which is the statsmodel wrapper and\\n\",\n                \"# call summary() of the wrapper (most prob there is a better API for this, but we can go with this for now :)\\n\",\n                \"proj_dr_cate.effect_model.summary(alpha=.05, xname=['const']+list(X_df.columns[feature_inds]))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 66,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 216x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n                \"import statsmodels.api as sm\\n\",\n                \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n                \"res = proj_dr_cate.effect_model.model\\n\",\n                \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n                \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n                \"pred = frame['mean']\\n\",\n                \"iv_l = frame['mean_ci_lower']\\n\",\n                \"iv_u = frame['mean_ci_upper']\\n\",\n                \"\\n\",\n                \"fig, ax = plt.subplots(figsize=(3,4))\\n\",\n                \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'C3--', label=\\\"Upper 95% CI\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'C3--', label=\\\"Lower 95% CI\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], pred[order], 'C0--.', label=\\\"Prediction\\\")\\n\",\n                \"ax.legend(loc='best')\\n\",\n                \"plt.xlabel(\\\"Mother's Education (scaled)\\\")\\n\",\n                \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n                \"#plt.savefig(\\\"NLSYM_momeduc_linear_projection_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Random Forest Based CATE and Tree Explainer\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 67,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=5000, max_depth=2, min_impurity_decrease=0.01,\\n\",\n                \"                                                     min_samples_leaf=100, bootstrap=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 68,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_cate = const_dr_cate.refit_final(rf_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 69,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\matplotlib\\\\axes\\\\_axes.py:6521: MatplotlibDeprecationWarning: \\n\",\n                        \"The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.\\n\",\n                        \"  alternative=\\\"'density'\\\", removal=\\\"3.1\\\")\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nRK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 216x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import seaborn as sns\\n\",\n                \"\\n\",\n                \"rf_dr_effect = rf_dr_cate.effect(X)\\n\",\n                \"plt.figure(figsize=(3,4))\\n\",\n                \"sns.distplot(rf_dr_effect)\\n\",\n                \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n                \"plt.ylabel(\\\"Frequency\\\")\\n\",\n                \"plt.savefig(\\\"NLSYM_hte_distribution_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 70,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nvip/4+pDQhf4yivtcNsVfD+7Rw0REZkapz4REREREfUnGgdu/Z/A3hPy/PrdwIHTwPL5+R1XH6yq\\ngh/fVYFvXe/N91CIiGgQWFFDRERERDQQv38X+F8vyhWgJlXL5bzvuDLfoyIioiLDRA0RERERERER\\nkUlw6hMRERERERERkUkwUUNEREREREREZBJM1BARERERERERmQQTNUREREREREREJsFEDRERERER\\nERGRSTBRQ0RERERERERkEkzUEBERERERERGZBBM1RETUxdmzZ/Gb3/wm38PoV6GMk4hoKBoaGvDh\\nhx8OaRtvvvkmmpubDRnPSy+9hKNHjxqyLSIi6hkTNUREREREJtXU1IREIjGkbZw5c8ag0RAR0Uiw\\n5nsARERkPvF4HOvWrUNnZyccDgeuv/56VFRUoL29HZs2bUI8HkcwGERVVRVuvvlmWK1WbN26FceP\\nH4fFYoHD4cCqVavgdrvR1taGzZs3IxKJQAiByy+/HHPnzu1yf6dPn8aWLVvwmc98BgAQjUbx61//\\nGmvXrkVTUxN27twJXdcRDocxa9YsXH311V1u/6c//QmVlZVYvHhxt/OBQACbNm2C3++HruuYOXMm\\nli5dOjI7kogoy4EDB7Bv3z4oioKSkhKsWLECFRUVvb6HlZWV4fjx4zh9+jSsVivC4TA6Ozvh9/sR\\nCoVQVVWFlStXwm6349lnn8Utt9yC2tpaAEifP378OILBIN544w3ceOONGDt2bHo8L7zwAhYtWoTp\\n06cDAN577z0AwBVXXIFNmzaho6MDkUgENpsNq1evRmVlZfq2Pp8Pv/3tb/Hoo4/2eL6hoQH79++H\\nEAIulwvLly/vcnsiIuodEzVERNRNIBDATTfdhLq6Ohw4cAAbN27E/fffj4aGBsyePRuzZ8+Gpmn4\\n3e9+h5MnT6K2thb79u3D5z//eVitVuzevRvNzc0oKSnB66+/jhtvvBE1NTWIRqN48cUXUVlZ2eVg\\nYeLEiYjH42hubkZtbS0OHz6MKVOmwOFwYM+ePVi1ahUqKioQCATw7LPPYuHChQN+LBs3bsTll1+O\\n+vp6JBIJ/PGPf0RZWRlmzJgxHLuOiKhHZ86cwe7du3HvvfeipKQEBw8exLp16/Dwww/3eptp06bh\\nxIkTqKysxIIFC7Bt2zY0Njbi/vvvR0lJCd544w1s374d1157ba/buPrqq3H48GGsXr06ncRJmTdv\\n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\\nwDgcDgDoMs0pkUh0uezS62qa1uV6Tqezy/Vee+01OJ1OLF++fHgGTUREA8JEDRERERFRgamurgYA\\n+Hy+9P/5fD44nU5UVFR0uW5VVVWX63Z2dgIAamtr09c5deoUmpqasHTp0m4JHCIiGllM1BARERER\\nFZjZs2fDarVi3759iMfjOHr0KHw+H+bPnw9FUbpcd968eQCAnTt3AgB2794NAF360KQumz9//kgM\\nn4iI+sBEDRERERFRgXG73bjttttw/vx53HXXXemltB988EEcOXIEX/rSl/DjH/8YAHDrrbfC6/Xi\\n2WefxQMPPIBf//rXqKiowE033ZTeXlNTEwCgvr5+5B8MERF1wUQNERHlVSgUQigUyvcwiIgKzne+\\n8x3cfffdaGpqgq7r+PrXv4477rgD7e3tePPNN7Fnzx4AQEVFBX75y19i5syZaGhowPTp0/HMM8/A\\n4/Gkt3Xx4sX0dYmIKL8UIYTI9yCIiGj08vv9ANDlgIGIiIiIaLRiRQ0RERERERERkUkwUUNERERE\\nREREZBJM1BARERERERERmQQTNUREREREREREJsFEDRERERERERGRSTBRQ0RERERERERkEkzUEBER\\nEREVuUAggEAgkO9hEBHRAFjzPQAiIiIiIhpeQoh8D4GIiAZoQBU1uq7jb//2b/HAAw9gzZo1OHXq\\nVJfL33rrLdxzzz144IEH8Pvf/77LZfv27cOaNWuMGzGNuFziH4/H8dhjj+Hhhx/GvffeizfffDMf\\nQ6chyiX2mqbhySefxIMPPojPfOYzOH36dD6GTgYYynv/xYsXsWLFChw7dmwkh0wGyTX2d999N9as\\nWYM1a9bgySefHOlhk0Fyjf/PfvYzPPDAA/j0pz+NF154YaSHTQbIJfYvvfRS+nV///3347LLLoPP\\n58vH8GmIcv3M/81vfhMPPvggHn74Yf7dL1C5xD4Wi+Gb3/wm7r//fjzyyCM4efJkHkZexMQAbNiw\\nQTz++ONCCCH27NkjHn300fRlsVhMrFq1SnR0dIhoNCo+/elPi5aWFiGEED//+c/F7bffLu67776B\\n3A2ZVC7xf/HFF8V3v/tdIYQQbW1tYsWKFfkYOg1RLrHfuHGjeOKJJ4QQQmzdurXLbaiw5PreH4vF\\nxJe+9CWxevVqcfTo0X7vx+fzCZ/PNzwPgnKSS+wjkYi466678jVkMlAu8d+6dav44he/KDRNE4FA\\n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\\nALe01a+dBRFpRtrHRX579u2mG3W/dV2KLdqFNu0zGvokIiIiACRPO+DXzoKINCPt4yIivw0K1IiI\\niIiIiIiI5AkFakRERERERERE8kTjc9QAmYyDYWzaLDWZjLtFGZLfLtV9y6b6b7lU9y2b6r/lUt3/\\ntriui9uEVab6b7lU9y2b6v+XYbhu44fsdDqDbWuKaRERERERERGRX8IGe9SsWRPdpMTKyoooL6/c\\nogzJb5PqvmVT/bdcqvuWTfXfcqnuWzbVf8ulum/ZVP9Nq6ysqNFlmqNGRERERERERCRPKFAjIiIi\\nIiIiIpInFKgREREREREREckTCtSIiIiIiIiIiOQJBWpERERERERERPKEAjUiIiIiIiIiInlCgRoR\\nERERERERkTyhQI2IiIiIiIiISJ5QoEZEREREREREJE8oUCMiIiIiIiIikicUqBERERERERERyRMK\\n1IiIiIiIiIiI5AkFakRERERERERE8oQCNSIiIiIiIiIieUKBGhERERERERGRPKFAjYiIiIiIiIhI\\nnlCgRkREREREREQkTyhQIyIiIiIiIiKSJxSoERERERERERHJEwrUiIiIiIiIiIjkCQVqRERERERE\\nRETyhAI1IiIiIiIiIiJ5QoEaEREREREREZE8Ybiu6za2MJ3OYNvWL5kfEREREREREZEWy97QwjVr\\nopuUWFlZEeXllVuUIfltUt23bKr/lkt137Kp/lsu1X3LpvpvuVT3LZvqv2mVlRU1ukxDn0RERERE\\nRERE8oQCNSIiIiIiIiIieUKBGhERERERERGRPKFAjYiIiIiIiIhInlCgRkREREREREQkTyhQIyIi\\nIiIiIiKSJxSoERERERERERHJEwrUiIiIiIiIiIjkCQVqRERERERERETyhAI1IiIiIiIiIiJ5QoEa\\nEREREREREZE8oUCNiIiIiIiIiEieUKBGRERERERERCRPKFAjIiIiIiIiIpInFKgREREREREREckT\\nCtSIiIiIiIiIiOQJBWpERERERERERPKEAjUiIiIiIiIiInlCgRoRERERERERkTyhQI2IiIiIiIiI\\nSJ5QoEZEREREREREJE8oUCMiIiIiIiIikicUqBERERERERERyROG67puYwvT6Qy2bf2S+RERERER\\nERERabHsDS1csya6SYmVlRVRXl65RRmS3ybVfcum+m+5VPctm+q/5VLdt2yq/5ZLdd+yqf6bVllZ\\nUaPLNPRJRERERERERCRPKFAjIiIiIiIiIpInFKgREREREREREckTCtSIiIiIiIiIiOQJBWpERERE\\nRERERPKEAjUiIiIiIiIiInlCgRoRERERERERkTyhQI2IiIiIiIiISJ5QoEZEREREREREJE8oUCMi\\nIiIiIiIikicUqBERERERERERyRMK1IiIiIiIiIiI5AkFakRERERERERE8oQCNSIiIiIiIiIieUKB\\nGhERERERERGRPKFAjYiIiIiIiIhInlCgRkREREREREQkTyhQIyIiIiIiIiKSJxSoERERERERERHJ\\nEwrUiIiIiIiIiIjkCQVqRERERERERETyhAI1IiIiIiIiIiJ5QoEaEREREREREZE8Ybiu6/7amRAR\\nEREREREREfWoERERERERERHJGwrUiIiIiIiIiIjkCQVqRERERERERETyhAI1IiIiIiIiIiJ5QoEa\\nEREREREREZE8oUCNiIiIiIiIiEie+H/tccJZWV/JsAAAAABJRU5ErkJggg==\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 1440x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import shap\\n\",\n                \"import pandas as pd\\n\",\n                \"\\n\",\n                \"Xdf = pd.DataFrame(X, columns=X_df.columns)\\n\",\n                \"# explain the model's predictions using SHAP values\\n\",\n                \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n                \"shap_values = explainer.shap_values(Xdf)\\n\",\n                \"\\n\",\n                \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n                \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 71,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nAHDo0CGmTZt2Xy+WVokceLbTLp91jqjAf32+FDnw7iFGWlNsn7866IHrVd4Kvki2b9++Mp1vE2PG\\nZbFt2zays7N5//33yc3NJTIykueff97S1RKEQqo6KOQr2rsxpUVam01x55ixqqrk5+czbty4Mpd/\\nZILxkCFDmD59Op06dUJVVdoYixulAAAgAElEQVS0acOYMWMsXS1BKGRHhzzyVfjzf5auifZZelii\\nqB07dpgfS5JElSpVcHFxKXP5RyYYu7m5MWfOHEtXQxDuql5V079/WrYaVkErwfjOdWxKUnB/6V4e\\nmWAsCIJt0cqyz+vXry/1mCRJIhgLgmDbVFkbPeO7BeP7IYKxIAhWSdVGLDa7fPkyGzZsICsry/yl\\nsD///JPPP/+8TOVtap6xIAiPDkUvFdssacyYMeTn5/Pzzz9To0YNLly4wOOPP17m8iIYC4KGyWev\\n4jDva0tXQ5NUnVRss6TMzEymTJlC69at+ec//8natWs5ceJEmcuLYCwIGlal70e4zN5i6WpokiJL\\nxTZLKlgt0s/Pj/Pnz1OlSpUS16oojRgzFgQN08WnIikgJdxA9a5q6epoiqqxrqSfnx/Tp0/n1Vdf\\nJSwsjKysLAyGokujlk5jzREEwUxVTYnxAJfRay1cGe1RZanYZknh4eG0aNGCJk2a0LNnT3788Uem\\nTp1a5vKiZywIWhXzm/lrDfaHTlu0KlqkWHiMuKhly5bRs2dPwJT141//+td9lX8kgvGiRYvYuXMn\\niqLQqFEjJkyYwKpVq6hatSq//PIL586do0mTJowYMYJ58+Zx/vx5mjVrxqxZs3BxceHIkSPMnz+f\\n+Ph4vL29GThwIJ07dwbg888/56uvviI+Ph4HBwe6d+9OaGiohVssaFWzdTLx2Jd6/HLfHJztodIP\\np2DZZvN+KSuPql4DxZrGd9DaEh6qqtK/f3/q1KlDz549ad++vTlXZlnY/DDF0aNH2bNnD1988QVR\\nUVF4eXmxcuVKALZv3857771HdHQ0ycnJjBkzhsmTJ7Nz506uXbvGN998A8DUqVN54403iImJYezY\\nscycOZOMjAxOnDjBmjVrmDNnDvv372fWrFmsWrWKK1euWLLJgoaZArFU6lY70vTmfWWZqSd859GS\\nsnw8yrQ2TDF27FhiYmIYNGgQe/bsoV27dkRERJS5vM33jF1cXEhJSWHr1q34+/sTFhaGLMuEh4fT\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x288 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.figure(figsize=(4,4))\\n\",\n                \"shap.summary_plot(shap_values, Xdf, plot_type=\\\"violin\\\", max_display=10, show=False, auto_size_plot=False)\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 72,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXsAAAEXCAYAAABMCOQqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3X1czvf///+bTokUFeV8Nqfb23J+\\n2ioplGhh8iM271mGGHK+EXMS3szpRm9sxta2sDYSOVnmZHibGd7GnO09SalIZ0onz98fvl4fDWmK\\n48XxuF4uLpeO49XrddxfT/U4XsfzOHo+yimlFEIIIZ5rJoYOIIQQ4smTYi+EEEZAir0QQhgBKfZC\\nCGEEpNgLIYQRkGIvhBBGwMzQAYxRWloaeXmmho5xnypVrLhxI9vQMe6jx1x6zAT6zKXHTKDPXKXN\\n5OBg/dBtcmVvALa2toaO8EBmZvp7AgJ95tJjJtBnLj1mAn3mepKZpNgLIYQRkGIvhBBGQIq9EEIY\\nASn2QghhBKTYCyGEEZBiL4QQRkCKvRBCGAEp9kIIYQSk2AshhBGQYi+EEEZAir0QQhiBctKD9ukr\\n9698Q0cQQujctcG3/vY+shCaEEIYOV0U+zlz5rBixQpDxyhWYWEhISEhfP311w/cfuTIEVq3bk12\\ntr6WTBVCCNDJevZTpkwxdIRiJSYmMnfuXA4cOEDr1q3v256ens7MmTORGTEhhF499WK/dOlSoqOj\\nKSwspHHjxkycOJHVq1dja2vLe++9xzvvvIOzszP79+/nypUrNGrUiNDQUGrUqMGqVatISkri+vXr\\n/Pzzz9SuXZspU6YQHh7OL7/8Qv369Zk3bx6Ojo5kZ2ezbNky9uzZA0CnTp0YM2YMlSpV+lvHycvL\\nY8CAAfj5+ZGRkfHAcwoLC8PLy4vPP//8aQ6lEEKU2FOdxjly5Ag7d+7k66+/JiYmhmrVqhEeHn7f\\n9+3YsYMFCxYQHR2NUopPP/1U2xYTE8Obb77JDz/8gLW1NcOGDeOf//wnO3fuxNLSUptmmT17Nn/8\\n8QdfffUVkZGRpKamMnv27L99HFNTU77++muCg4MxM7v/uTEmJoaMjAz69OlT1sMlhBBl5qkW+0qV\\nKnH9+nWioqKIj49n6tSpzJw5877v8/b2pmbNmlSqVAk3NzcuX76sbWvWrBnOzs6YmZnh7OxMs2bN\\n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\\nhBGQYi+EEEZAir0QQhgBKfZCCGEEpNgLIYQRkGIvhBBGQJY4FkIIIyBX9kIIYQSk2AshhBGQYi+E\\nEEZAir0QQhgBKfZCCGEEpNgLIYQReO7bEj4N27dvZ82aNeTn59O/f3/eeOONItvPnj3LrFmzyMrK\\nonnz5kyePBkzMzMSExP54IMPuH79OnXr1mXWrFlYWVmRkZHB+++/z5UrV6hSpQpz587F3t7e4Ll+\\n/vlnJkyYQPXq1QFo1KgR06dPfyqZ7vrkk08wMTEhKCgIwOBj9bBchhyr48ePs2jRIvLz87GxsWHa\\ntGk4OTkZfKwelqssxqo0uX755RcWLlxIXl4eNWrUYMaMGVSuXLlMxqusM5VqrJQolaSkJOXr66vS\\n0tJUdna2CggIUBcuXCjyPX379lUnTpxQSik1Y8YMFRkZqZRSavTo0Wr79u1KKaX+/e9/qyVLliil\\nlAoLC1OffvqpUkqprVu3qkmTJuki1/r169XatWv/dpayyJSRkaFmzJihOnTooFauXKl9v6HH6mG5\\nDDlWPXr0UL///rtSSqmoqCg1ZswYpZThx+phuUo7VqXN1atXL+17ly5dqpYvX66UKv14PYlMpRkr\\nmcYppSNHjtCqVStsbGyoUKECHh4e7N69W9t+9epVcnNz+cc//gGAr68vu3btIj8/n19++QUPDw8A\\nevTooe134MABunXrBkDXrl05ePAg+fn5Bs/13//+l0OHDhEQEMCYMWNITEx8KpkA4uLiqFOnDgMH\\nDixyTEOOVXG5DDVWt2/f5t1336VBgwYANGjQQHtsQ45VcblKO1alyQWwceNG6tevT35+PteuXcPa\\n2rpMxutJZCrNWEmxL6Xk5OQiL+3s7e25du3aI7enpaVRsWJFbSrA3t6epKSk+/YxMzOjYsWK3Lhx\\nw+C5rK2t6devH1999RUdO3ZkypQpTyUT3HnSefPNNzExKfoja8ixKi6XocbKwsICb29vAAoLCwkP\\nD8fNze2+fZ72WBWXq7RjVZpccGcszp8/j7e3Nz///DNeXl737fM44/UkMpVmrKTYl1JhYSHlypXT\\nbiulitx+2Pa/3g9oBUP9ZQWLvx7TULmmTJlC586dAejTpw8XL14kMzPziWcqjiHHqjiGHqu8vDze\\nf/99CgoKGDJkiPY99zLEWD0oV2nHqixyvfTSS8TGxvLPf/5TK6ClHa8nkak0YyXFvpSqV69OSkqK\\n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\\n9eunxo4dqzIyMlRiYqLq3bu3WrBggVJKqbCwMNWvXz+Vmpqqrl69qnr06KHc3d2VUkpduXJFNW/e\\nXO3cuVPl5eWpbdu2qTZt2qgbN25oY3f27Nn7sn311VfKxcVF/fbbbyo3N1ctW7ZMde7cWd26dUsd\\nOnRItWnTpsj3t2nTRh06dOi+sTt06JBq2LChmjVrlsrNzVX79u1Tr7zySpH/u3sfPzg4WC1dulQb\\ny7s/r3+1adMm1bBhQxUdHa0KCgpUSEiIatq0qdq+fbvKzc1V48aN0/Yt7nfk4MGDqlWrVurXX39V\\nOTk5atq0aaphw4bauTRs2FANGzZMZWRkqIsXL6q2bduqLVu23HeeEydOVGFhYUoppS5fvqwaNmyo\\nMjMztbyvv/662rRpk1JKKX9/fzVjxgyVm5urfv75Z+Xs7Kz9vmzbtk25urqq33//XeXk5Ki5c+eq\\nAQMGPHAMHpdc2T+jBgwYwNKlS7GysuLq1atUrFhRW6nR29ubU6dOaW+WRUdH06tXL5RSbN68mZCQ\\nEKpUqULVqlUJDg7mm2++0Y7bpEkTGjZsiLW1NdWqVWPLli00a9aMGzdukJaWho2NDUlJSRw/fpyM\\njAyGDx+OhYUFHTt2xMvLSzvOxo0bGTlyJE5OTlSqVImQkBC+//77EnUkeuONN7CxseHFF1/EwcGB\\nPn36ULlyZRo3boyDg4P2Z/kA48aNo2rVqtSpU4dBgwZpV49hYWGMGjWKgoICEhISiqxkGR0dTWBg\\nIPXr18fCwoKpU6c+8qN/OTk57Nixg/Hjx1O1alVsbGyYOHEiMTEx2tr3zs7OtG/fHgsLC3x9ffnf\\n//730OO5u7vz0ksvUbFiRf7xj3/g6urKiy++iI2NDa+++ipXrlzhzz//5JdffmHq1KlUqlSJ6tWr\\nM3r0aG2tmpiYGIYOHUrVqlVxdHRk6NCh2vGLW+mzON999x1vvvkmjRs3xsLCguHDh3P79u3HWpHS\\nysqKkJAQLCws6NSpEy4uLmWyjHHNmjXx9vbGxMSENm3aUKNGDbp27YqFhQXt2rXTfj6K+x35/vvv\\n8fPzo1mzZlhaWjJx4kTMzIrOag8ePJhKlSrxwgsv0Lx5c22108dx+fJlTp06xdixY7GwsKBFixb4\\n+Pho2zdu3Mibb75JgwYNsLS0ZOzYsfz6669cunTpsR/zr2TO/hmVkZHBjBkzOHHiBLVr16Z27dra\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 360x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.figure(figsize=(5,4))\\n\",\n                \"shap.summary_plot(shap_values, Xdf, plot_type='bar', max_display=10, show=False, auto_size_plot=False)\\n\",\n                \"plt.xlabel(\\\"mean(|SHAP value|)\\\\n average impact on model output magnitude\\\")\\n\",\n                \"plt.savefig(\\\"NLSYM_shap_summary_bar.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": null,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": []\n        }\n    ],\n    \"metadata\": {\n        \"kernelspec\": {\n            \"display_name\": \"Python 3\",\n            \"language\": \"python\",\n            \"name\": \"python3\"\n        },\n        \"language_info\": {\n            \"codemirror_mode\": {\n                \"name\": \"ipython\",\n                \"version\": 3\n            },\n            \"file_extension\": \".py\",\n            \"mimetype\": \"text/x-python\",\n            \"name\": \"python\",\n            \"nbconvert_exporter\": \"python\",\n            \"pygments_lexer\": \"ipython3\",\n            \"version\": \"3.6.5\"\n        }\n    },\n    \"nbformat\": 4,\n    \"nbformat_minor\": 2\n}"
  },
  {
    "path": "prototypes/dml_iv/NLSYM_Linear.ipynb",
    "content": "{\n    \"cells\": [\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 110,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"The autoreload extension is already loaded. To reload it, use:\\n\",\n                        \"  %reload_ext autoreload\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"%load_ext autoreload\\n\",\n                \"%autoreload 2\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 111,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"import numpy as np\\n\",\n                \"import pandas as pd\\n\",\n                \"import matplotlib.pyplot as plt\\n\",\n                \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression\\n\",\n                \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n                \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\\n\",\n                \"from sklearn.pipeline import Pipeline\\n\",\n                \"import scipy.special\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# NLSYM DATA\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 112,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\preprocessing\\\\data.py:645: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.partial_fit(X, y)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:464: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.fit(X, **fit_params).transform(X)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Preprocess data\\n\",\n                \"df = pd.read_csv(\\\"data/card.csv\\\")\\n\",\n                \"data_filter = df['educ'].values >= 6\\n\",\n                \"T = df['educ'].values[data_filter]\\n\",\n                \"Z = df['nearc4'].values[data_filter]\\n\",\n                \"y = df['lwage'].values[data_filter]\\n\",\n                \"\\n\",\n                \"# Impute missing values with mean, add dummy columns\\n\",\n                \"# I excluded the columns 'weights' as we don't know what it is\\n\",\n                \"X_df = df[['exper', 'expersq']].copy()\\n\",\n                \"X_df['fatheduc'] = df['fatheduc'].fillna(value=df['fatheduc'].mean())\\n\",\n                \"X_df['fatheduc_nan'] = df['fatheduc'].isnull()*1\\n\",\n                \"X_df['motheduc'] = df['motheduc'].fillna(value=df['motheduc'].mean())\\n\",\n                \"X_df['motheduc_nan'] = df['motheduc'].isnull()*1\\n\",\n                \"X_df[['momdad14', 'sinmom14', 'reg661', 'reg662',\\n\",\n                \"        'reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']] = df[['momdad14', 'sinmom14', \\n\",\n                \"        'reg661', 'reg662','reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']]\\n\",\n                \"X_df[['black', 'smsa', 'south', 'smsa66']] = df[['black', 'smsa', 'south', 'smsa66']]\\n\",\n                \"columns_to_scale = ['fatheduc', 'motheduc', 'exper', 'expersq']\\n\",\n                \"scaler = StandardScaler()\\n\",\n                \"X_df[columns_to_scale] = scaler.fit_transform(X_df[columns_to_scale])\\n\",\n                \"X = X_df.values[data_filter]\\n\",\n                \"\\n\",\n                \"true_fn = lambda x: np.zeros(x.shape[0])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 113,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 113,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ANALYSIS\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some hyperparameters\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 114,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"0.006686726847208292\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"random_seed = 123459 # random seed for each experiment\\n\",\n                \"N_SPLITS = 10 # number of splits for cross-fitting\\n\",\n                \"COV_CLIP = 20/(X.shape[0]) # covariance clipping in driv\\n\",\n                \"print(COV_CLIP)\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some generic non-parametric regressors and classifiers\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 115,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from utilities import RegWrapper\\n\",\n                \"from sklearn.model_selection import GridSearchCV\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n                \"from xgb_utilities import XGBWrapper\\n\",\n                \"\\n\",\n                \"# Linear models for regression and classification \\n\",\n                \"model = lambda: LassoCV(cv=5, n_jobs=-1)\\n\",\n                \"model_clf = lambda: RegWrapper(LogisticRegressionCV(cv=5, solver='liblinear', scoring='neg_log_loss', n_jobs=-1))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Some utility functions\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 116,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def nuisance_diagnostic(cate, nuisance_model, property_name, property_fn, \\n\",\n                \"                        index_names=None, statistic=np.std, threshold=None):\\n\",\n                \"    std = statistic([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]], axis=0)\\n\",\n                \"    if hasattr(std, '__len__'):\\n\",\n                \"        if threshold is None:\\n\",\n                \"            coefs = np.argmax(std).flatten()\\n\",\n                \"        else:\\n\",\n                \"            coefs = np.argwhere(std >= threshold).flatten()\\n\",\n                \"        if index_names is None:\\n\",\n                \"            index_names = np.arange(std.shape[0])\\n\",\n                \"        for high_var in coefs:\\n\",\n                \"            plt.figure(figsize=(4,3))\\n\",\n                \"            plt.title(\\\"{}: {}[{}] Across Folds\\\".format(nuisance_model, property_name, index_names[high_var]))\\n\",\n                \"            plt.plot([property_fn(ns)[high_var] for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"            plt.xlabel('fold')\\n\",\n                \"            plt.ylabel('property')\\n\",\n                \"            plt.show()\\n\",\n                \"    else:\\n\",\n                \"        plt.figure(figsize=(4,3))\\n\",\n                \"        plt.title(\\\"{}: {} Across Folds\\\".format(nuisance_model, property_name))    \\n\",\n                \"        plt.plot([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"        plt.xlabel('fold')\\n\",\n                \"        plt.ylabel('property')\\n\",\n                \"        plt.show()\\n\",\n                \"    \"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DMLATEIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 117,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_ate_iv import DMLATEIV\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We need to specify models to be used for each of these residualizations\\n\",\n                \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n                \"model_T_X = lambda: model() # model for E[T | X]. We use a regressor since T is continuous\\n\",\n                \"model_Z_X = lambda: model_clf() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n                \"\\n\",\n                \"dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 118,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_ate_iv.DMLATEIV at 0x222d55666a0>\"\n                        ]\n                    },\n                    \"execution_count\": 118,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# We fit DMLATEIV with these models\\n\",\n                \"dmlate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 119,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# We call effect() to get the ATE\\n\",\n                \"ta_effect = dmlate.effect()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 120,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.137\\n\",\n                        \"Standard error: 0.056\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n                \"print(\\\"Standard error: {:.3f}\\\".format(dmlate.std))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 121,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate Interval: (0.027, 0.248)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can call normal_effect_interval to get confidence intervals based\\n\",\n                \"# based on the asympotic normal approximation\\n\",\n                \"lower, upper = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(lower, upper))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and CATE via DMLIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 122,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from utilities import SelectiveLasso, SeparateModel\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from econml.utilities import hstack\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DMLIV we also need a model for E[T | X, Z]. To allow for heterogeneity in the compliance, i.e.\\n\",\n                \"# T = beta(X)*Z + gamma(X)\\n\",\n                \"# we train a separate model for Z=1 and Z=0. The model for Z=1 learns the\\n\",\n                \"# quantity beta(X) + gamma(X) and the model for Z=0 learns gamma(X).\\n\",\n                \"model_T_XZ = lambda: SeparateModel(model(), model())\\n\",\n                \"\\n\",\n                \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n                \"#      theta(X) = <theta, phi(X)>\\n\",\n                \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n                \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n                \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n                \"\\n\",\n                \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n                \"# This model will minimize the square loss:\\n\",\n                \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n                \"dmliv_model_effect = lambda: LinearRegression(fit_intercept=False)\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# Potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n                \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n                \"# that does not penalize the constant term in the CATE model\\n\",\n                \"#dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, fit_intercept=False))\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# We initialize DMLIV with all these models and call fit\\n\",\n                \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n                \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"             n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"            )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 123,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_iv.DMLIV at 0x222d55126a0>\"\n                        ]\n                    },\n                    \"execution_count\": 123,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"cate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 124,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nYx/7mH70ox/J5XLJ6XRqZGREOTk5doyadRKdga6/v18FBQWaO3euPB6PlixZoueff96uUbNWojXw\\neDwKh8OaPXu2JPGznyHJzsT4wgsv6KWXXtKaNWvsGC8rcMjaQD/72c/0xBNPjLvsyiuvlM/3rzOb\\neb1eRSKRcdfPmjVL8+fPl2VZ+s53vqNFixZpwYIFUzZzNkt0BrpoNDq2LtK/1iYajdoxZlZLtAZO\\np1NXXXWVJCkUCuncuXOqrKy0a9SslWgN/va3v2nXrl3atWuXnnrqKRunnN4IsoFWrVqlVatWjbvs\\nnnvuGTsLWiwWU15e3r99Xzwe16ZNm+T1etXa2jols84Eic5A9+HrYrHYuEAjPZKdBXB0dFQ7duzQ\\nqVOn9PDDD8vhcNgxZlZLtAa//e1vNTg4qLvvvlsDAwO6cOGCCgsLtXz5crvGnZY4ZD1NXH/99Xrm\\nmWckSV1dXVqyZMm46y3L0te+9jVdd911+ta3viWXy2XHmFkp0RnoFi5cqNOnT+uf//ynhoaG9Pzz\\nz6u0tNSuUbNWsrMAtrS0KB6Pa/fu3WOHrpFeidbgjjvu0MGDBxUKhXT33Xfr85//PDGeAE4MMk2c\\nP39ejY2NGhgY0KxZs/Td735Xfr9fjz32mAoKCjQ6OqqNGzeqpKRk7Hs2btxIHNLgUmege/nll3Xu\\n3DmtWbNm7FPWlmVpxYoVuv322+0eOeskWoPFixdrxYoVKisrG9szvuOOO3TLLbfYPHV2SfY6eN/B\\ngwf12muv8SnrCSDIAAAYgEPWAAAYgCADAGAAggwAgAEIMgAABiDIAAAYgCADAGAAggwAgAEIMgAA\\nBvh/qvMGYoIVPLgAAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x396 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X)\\n\",\n                \"dml_effect = cate.effect(X)\\n\",\n                \"plt.hist(dml_effect, label='est')\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 125,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[-0.05707952 -0.1101906   0.12368182 -0.01630396  0.01638841  0.0206494\\n\",\n                        \"  0.14824186  0.04105756  0.10153722  0.15699125 -0.03017467  0.04778027\\n\",\n                        \"  0.08408015 -0.01652653 -0.00710907  0.05880703 -0.19192102 -0.15900693\\n\",\n                        \"  0.03517143 -0.16334309  0.02435382  0.05080503  0.07929768]\\n\",\n                        \"NA\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# To get the parameter theta we call coef_. The first entry is the intercept of the CATE model\\n\",\n                \"print(cate.coef_)\\n\",\n                \"try:\\n\",\n                \"    print(cate.effect_model.lasso_model.alpha_)\\n\",\n                \"    plt.plot(cate.effect_model.lasso_model.alphas_, cate.effect_model.lasso_model.mse_path_)\\n\",\n                \"    plt.show()\\n\",\n                \"except:\\n\",\n                \"    print(\\\"NA\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 126,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.072\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dml_effect)))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 127,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAecAAAFXCAYAAACYx4YhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4VPWhxvF3ZjIzgSRASAIugCIQ\\nrVVKcLkWbq5KAauyCIiJacEVXKuluLUiotKIqFeveOGqdeUWiVqUpW6VpVq0XkDWKiIICIoQIIQs\\nZCaZOfePhJHIZE6YmWROTr6f5+lTZ95h5jc/eXznbL/jMAzDEAAAsAxnogcAAADqo5wBALAYyhkA\\nAIuhnAEAsBjKGQAAi6GcAQCwmKREDwCQpJ07d2rQoEHKzs6WJAWDQaWkpGjs2LG65JJLJEkzZszQ\\n008/rcLCQo0aNSr0ZysrK9W/f3+de+65euaZZzRjxgyVlJRo8uTJR33OPffco169eunMM8/ULbfc\\noo8++kjJycmh3O/3Kzc3Vy+++KJOP/30en/W5/Np1qxZWrZsmQzDUDAY1NChQzVu3Dg5HI7Q62bP\\nnq2pU6eqqKhIffr0kSRt3rxZEydOlCSVlpaqrKxMXbp0kSSNGDFCP/nJTzRu3Dh179693memp6fr\\npZdeinZaGzRgwAC53e56371Tp0567rnn4vo5O3bs0PTp0zVjxgzt3r1bt99+u+bOnRvXzwjn/vvv\\n10cffaShQ4dqwoQJcX//7777Tg888IB2796tQCCgu+66S7m5uZKk9957T88884z8fr9OOOEEPfLI\\nI0pPT9fu3bv1hz/8QcXFxTIMQ9dff72GDx8e97HBHihnWEZycrLmz58fevztt9/q6quvlsvl0kUX\\nXSRJOuGEEzR//vx65fz++++rbdu2x/RZ5557rjp37qz3339fw4YNq/de3bt3P6qYDcPQzTffrO7d\\nu6uoqEher1clJSW64YYbVFlZqd/+9reh186dO1dDhw7Vyy+/HCrnnj17hr7bvHnzQv8BP+zTTz9V\\nt27d6n3/pvbYY4/pzDPPbNLP+O6777R161ZJUufOnZulmCWpqKhIy5Yt03HHHdck73/jjTcqPz9f\\nBQUF+vzzz3XVVVdp+fLl+vLLL/XQQw9p7ty56tKliwoLC/XEE0/owQcf1BNPPKHevXvr9ttv1+7d\\nu/XLX/5S/fr1U1ZWVpOMES0bu7VhWSeeeKJuu+02Pf/886HncnNztXnzZn3//feh59588816BdtY\\nV155pf7yl7/Ue66oqEi/+tWvjnrtihUr9PXXX+v3v/+9vF6vpNqt2unTp+ucc84Jve7TTz9VaWmp\\n7rzzTi1evFi7du065nE1xv/8z/9o9OjRGjp0qAYOHKi//e1vkqQtW7YoPz9fI0eO1IgRI/TnP//5\\nmN97wIABWr9+/VGPd+7cqYEDB+qhhx7S5ZdfrsGDB4c+t6amRg8//LAuuugiXXLJJbr33nvl9/s1\\nadIkffPNN7ruuuu0c+dO5eTkSJKqq6v10EMP6ZJLLtHQoUN17733qry8PPR5M2bMUEFBgS688EI9\\n+eSTYcf51VdfacyYMRo6dKiGDRumt956S5JUUFAgwzA0btw4rVy5st6fmTFjhq677joNHTpUd9xx\\nhyRp1qxZGjFihIYPH66bb75Zu3fvliRt375dv/rVrzRkyBBdc801uvrqqzVv3jx98cUXKi0tVUFB\\ngSTp9NNP15w5c+RwOLRgwQKNGjUqtFfkN7/5jcaNGydJCgQCKisrk2EYOnTokJKSkuR08p9ghMff\\nDFjaaaedpk2bNoUeJyUl6eKLL9aCBQsk1W6ZVVRUqFevXsf83sOHD9eGDRu0Y8cOSdK2bdu0devW\\n0Fb6kTZs2KDevXvL5XLVe/7kk09W//79Q4/nzJmjoUOHqnPnzjrvvPP0v//7v40ezzfffKPhw4fX\\n+9+sWbOOet23336rjz/+WLNnz9bChQs1YcIEPfXUU5Kk559/XgMGDNC8efP07LPPauXKlQoGg2E/\\n74477qj3WV988YXpGHfs2KF///d/1xtvvKGJEyeqsLAw9L3/9a9/af78+Vq0aJEqKir09ttva+rU\\nqerWrVu9H1hSbSHu2bNH8+fP1/z58xUMBjV9+vRQXllZqTlz5mju3Ll64YUXQv+ODqupqdFNN92k\\nMWPGaOHChXruuef0n//5n1q9erXmzJkjSXr55Zd19tlnh52/N998U4899pjeeustbdq0Sa+//rrm\\nz5+v888/X5MmTZIk3XXXXbr00ku1aNEiTZo0SWvWrJEkbd26VSeeeKIefvhhjR49Wvn5+SouLpbb\\n7da2bdsUCAR00003adiwYXrggQeUkpIiSZo4caKWLFmi3NxcXXrppfrNb36jjIwM0zlH68RubVia\\nw+God1xUqi3Ve++9V+PHj9f8+fN12WWXRfXeqampGjZsmObNm6fbb79dRUVFuvzyy+XxeI56rdPp\\nlNlKt8XFxVq8eHFoa/yyyy7TlClTdMsttzRqt3tjd2ufeOKJmj59uhYuXKjt27dr7dq1qqiokCQN\\nGjRId999t9atW6ef//znmjRpUoNbZ9Hs1na73Tr//PMl1W4xHjhwQJL08ccfa/jw4aF/V4e3dj/9\\n9NOw7/Phhx9qwoQJcrvdkqQxY8bolltuCeW/+MUvJNXuCs/IyFBpaam6du0ayrdt2yafz6fBgweH\\nXjd48GB99NFHoa3zhvTp00dJSbX/6Vu6dKnWr18fOkwSDAZ16NAhlZaWat26daEfVz169NB5550n\\nqfaHwWeffaZrr71Wv//977Vu3TqNGzdOCxYsUE1NjZYuXaqXXnpJGRkZevTRRzVp0iTNnDlTd9xx\\nh66//noVFBRo27ZtGjNmjPr06aPevXs3au7RurDlDEtbv3596CSxw3r37q1AIKAvvvhCb7/9toYM\\nGRL1+xcUFOjNN9+Uz+fTwoULlZ+fH/Z1P/vZz7R+/XoFAoF6z69bt0533nmnJOm1116TJN10000a\\nMGCApk+frvLycr355ptRjy+cf/3rX8rLy1N5ebn69++v66+/PpRdeOGFeu+993TxxRfriy++0NCh\\nQ+sdAmisI3+I+P3+0D+73e5Q2R95Etzhsjts79692rNnT4PvHwwG6/35YDCo6urq0OPDhw4Of86P\\nfxgFAoF6f/7wmGtqaiJ+L0n1figFg0Fdf/31oS34v/zlL3r11VdDe0iO/NzDz3Xq1Ent2rXTwIED\\nJdX+fezSpYs2btyoTp06KTc3V1lZWXI6nRo5cqTWrFmj/fv3a9WqVbriiisk/bDHZcWKFabjRetE\\nOcOytm7dqpkzZ+raa689Khs+fLgKCwvVvXt3dejQIerP6NWrl7p27arHH39cffv2bfAEopycHJ1y\\nyil6+OGH5fP5JNUW0NSpU9WlSxcFAgG9/vrreuCBB7RkyRItWbJEy5Yt0w033KBXXnnFdKv7WKxY\\nsUJnnHGGrrnmGp177rlavHhx6EfDxIkT9fbbb+vSSy/V/fffr9TUVH3zzTfH9P4dO3bUhg0bJNVu\\n+RYXF5v+mZ///OdatGiR/H6/gsGgpkyZor/+9a9yuVz1Svew3Nxcvfrqq6qurlYwGNSf//zneocH\\nzJxyyilKSkrS+++/L0navXu33nvvPfXr16/R7yEptIv+8PHu//qv/9Jdd92l1NRU9e3bV/PmzZNU\\nuzv/k08+kcPhUN++feXxeLR06VJJtcf5d+zYodNOO00XXXSRli5dqpKSEkm1JxieeeaZSk9P13HH\\nHaf33ntPkrR//36tWLFCP/vZz45pvGg92K0Ny6iqqgpdWuJ0OuX1evW73/1OF1xwwVGvHTZsmJ58\\n8knNnDkz7Hu99tpr9bZYTz311AbPFC4oKNCECRNML1l66qmn9MQTT2jkyJFyuVwKBoO67LLLdN11\\n12nx4sWhS6uOdPXVV+uVV17R3//+97Df40iHjzn/2AsvvFDv2OSQIUP0/vvv6+KLL1YwGNSFF16o\\n0tJSlZeX6+abb9a9996roqIiuVwuDRw4sN4Ja41xxx13aMqUKSoqKtJPf/pT/fSnPzX9M/n5+fr2\\n2281cuRIGYahc889V2PGjFF5ebm8Xq8uv/xyPfHEE6HX33TTTXrkkUd02WWXqaamRr1799Z9993X\\n6DG63W7NnDlTU6dO1YwZMxQIBHTLLbeEdj031ujRo7V7925dccUVcjgcOv744zVt2jRJ0iOPPKJ7\\n771Xc+bMUefOndWlSxclJyfL4/Ho+eef19SpU/X4449LkgoLC9W5c2d17txZ33//vcaMGaNgMKgT\\nTjhBf/zjH+VwODRr1iw99NBDmjlzppxOp2644Yawx8QBSXJwy0gAONqsWbM0ePBg9ejRQ2VlZRo2\\nbJiee+459ezZM9FDQyvAljMAhHHyySdrwoQJcjqdCgQCGjduHMWMZsOWMwAAFsMJYQAAWAzlDACA\\nxVDOAABYjGVOCCsuLmvS909Pb6uSksom/Qw7Y/6ix9zFhvmLDfMXm6acv6ystAazVrPlnJTkMn8R\\nGsT8RY+5iw3zFxvmLzaJmr9WU84AALQUlDMAABZDOQMAYDGUMwAAFkM5AwBgMZQzAAAWQzkDAGAx\\nlDMAoMXzVQe0p6RSvupAs33mli2btWbNZ03y3pZZIQwAgGMVCAZVtGSzVm8q1v6DPnVs51VOdpby\\nBvSUy9m025/Lli1WRkaG+vTpG/f3ppwBAC1W0ZLN+mDlztDjfQd9occFA7Ojes+amho9+mihdu7c\\nIZfLoauvHq8VKz7VZ5+tVDAY1KBBF+nCCwfqnXcWKSnJrezs03T66WfE5fscRjkDAFokX3VAqzcV\\nh81Wb9qrUef3kNd97MtvLlz4ltq376Df/36ykpJqlJ9foMrKCj399LPKzMzS228vVFZWJ1188RBl\\nZGTEvZilVlLOvuqAdu2tUKA6ENW/KACA9ZSW+7T/oC9sVlJWpdJynzqltz3m992yZbPWrVutzz/f\\nII8nSYFAjaZM+aOeeeZp7du3T+ed1y/WoZuydTnXOxZR5lPHtOY7FgEAaFrtU73q2M6rfWEKOj0t\\nWe1TvVG970knnaxOnTpp7NhrlZbm1qOPPqElS/6mKVMKZRiGxoy5QgMHXiSn06lg0Ij1a4Rl64Y6\\nfCxi30GfDOOHYxFFSzYnemgAgBh53S7lZGeFzXKyM6PeUzp8+Eht375Nt946Xvn5+TrhhBPVvn0H\\nXX11gW677Uadc8556tz5OJ166k80b95r+uyzlbF8jbAchmE0Te0fo3jfz9lXHdCk5/4Z9hdVRrtk\\nTR33b+ziPgZZWWlNfs9tu2LuYsP8xcbu8/fDHtK9KimrUnpasnKyM+O2h7Qp5y/S/Zxtu1u7qY5F\\nAACsw+V0qmBgtkad30Ol5T61T/XaYsPLtru1Dx+LCCeWYxEAAOvxul3qlN7WFsUs2bicm+pYBAAA\\nTc22u7UlKW9AT0kKeywCAACrsnU5H3kswuVxK+CvZosZAGB5tt2tfSSv26XjM1MoZgBAi9AqyhkA\\nYG9BI6jqYI2CRjDm9/L5fFq48K04jCp6raKcDy/f2Zy3EgMAND3DMFRcuU/bD+7UN2U7tf3gThVX\\n7lMsS3js378v4eVs62POLN8JAPa299B+VVZXyuVwylW3vVlZXam9krLaZkT1nq+88oK2bduq3Nxz\\n1K9fP5WWlumee+5TYeEDevbZlyRJ48dfrQceKFRaWjtNm/agSktLJUm//e2d6tEj9pOObV3OTXEr\\nMQCANQSNoMqrK+Ry1N/YcjgcKq+uUIaRLqfj2DfExo69Vlu2bNa//dvPVVNTpRtuuF27dn0X9rWv\\nvPKCzjrrXI0Ycbl27PhGhYUPaNas56P6PkeybTk31a3EAADWEDCCCioY2mI+UlBBBYxgVOV8pO7d\\nu4d9/vBu86+/3qzPPlupxYvflySVlcVnqU/bljPLdwKAvbkcTjkbOHXKKedRW9SN5XA4ZdSdWOas\\nOwTq8XhUUlKiQCCgysrK0Jb0SSedrMGDT9fgwb9UScn+uB2rtm05N9WtxAAA1uB0OJXqTlFldaUc\\nDkfoecMwlOpOiXqrOT09XdXVNfL5fuiPjIxMnXPOuRo3bqxOPLGrunTpKql2F/i0aQ9pwYJ5qqys\\n0LXXjo/tS9Wx7V2pJGnOB5vqHXM+bODZXTjmfIzsfmebpsTcxYb5i43d588wDO09tF/l1RUKKiin\\nags7s03HeoUdLe5K1QRYvhMA7M3hcCirbYYyjHQFjGDtru4YjzNbga3L+fDynUP7nawyf1BpHqfS\\n2noSPSwAQJw5bVLKh9m6nLnOGQDQEtm6nLnOGQDQEtl289HsOmeW8gQAWJVty7kx1zkDAGBFti3n\\nw9c5h8N1zgAAK7NtOXvdLuVkZ4XNcrIzWboTAGBZti1nSbr8glPUtVOqnHXXoTsdUtdOqbr8glMS\\nOzAAACKwdTm/sexr7dhTrmDdGmhBQ9qxp1xvLPs6sQMDACAC25YzZ2sDAFoq25YzZ2sDAFoq25Yz\\nZ2sDAFoq25YzZ2sDAFoq25azxNnaAICWydbl/PrSLWHP1n596ZbEDgwAgAhsW86+6oD+sW5X2Gz5\\n+l2crQ0AsCzblnPxgUPyVQfDZlX+oIoPHGrmEQEA0Di2LefKQ9Ux5QAAJEpU5RwMBjV58mTl5eVp\\nzJgx2r59e9jX3XfffXrsscdiGmC09h+siikHACBRoirnDz74QH6/X0VFRZo4caKmTZt21Gvmzp2r\\nTZs2xTzAaCWZXCpllgMAkChRlfOqVauUm5srSerTp482bNhQL1+9erXWrl2rvLy82EcYpVO7dogp\\nBwAgUZKi+UPl5eVKTU0NPXa5XKqpqVFSUpL27Nmjp59+Wk8//bTeeeedRr9nenpbJSXFb2vWY7I8\\nZ0ZGKquEHaOsrLRED6HFYu5iw/zFhvmLTSLmL6pyTk1NVUVFRehxMBhUUlLtW7377rsqKSnR+PHj\\nVVxcrKqqKp1yyikaOXJkxPcsKamMZigNWrd5b8R85frv1LtnZlw/086ystJUXFyW6GG0SMxdbJi/\\n2DB/sWnK+YtU+lGVc9++fbV06VJdcsklWrNmjbKzs0PZ2LFjNXbsWEnSvHnz9PXXX5sWc1NIa+uO\\nKQcAIFGiKudBgwZp+fLlys/Pl2EYKiws1MKFC1VZWZnQ48xHOiErNaYcAIBEiaqcnU6nHnzwwXrP\\n9ejR46jXJWKL+bDySr9p7m3fpplGAwBA49l2EZK1JseczXIAABLFtuXcJjnyMWWzHACARLFtOZ/c\\nOfIxZbMcAIBEsW05b9tdHlMOAECi2LacWVsbANBS2bacq03u12yWAwCQKLYt5+/2V8SUAwCQKLYt\\n526dUmLKAQBIFNuWc2aHyOVrlgMAkCi2Lef0tMh3nDLLAQBIFNuWc011MKYcAIBEsW057za5BaVZ\\nDgBAoti2nLuY3HXKLAcAIFFsW84Z7ZNjygEASBTblvPW7w/GlAMAkCi2LeeqqsgrgJnlAAAkim3L\\nWQ4jthwAgASxbTknOV0x5QAAJIpty9ll0r1mOQAAiWLbct64fX9MOQAAiWLbci6vqokpBwAgUWxb\\nzpnt2sSUAwCQKLYt5+My2saUAwCQKLYtZ5fTEVMOAECi2LacPzc54cssBwAgUWxbzlU+kxXCTHIA\\nABLFtuVstv4X64MBAKzKtuWcmeaJKQcAIFFsW87bvi+LKQcAIFFsW87dj0+NKQcAIFFsW877yyOv\\nAGaWAwCQKLYt5zbeyF/NLAcAIFFs21AHy6tjygEASBTblvPe0kMx5QAAJIpty7m6JhhTDgBAoti2\\nnING5PI1ywEASBTblrOhyDe2MMsBAEgU25azy6R7zXIAABLFtuV8fMeUmHIAABLFtuV88FDkRUbM\\ncgAAEsW25ew22W9tlgMAkCi2LeftuyPf2MIsBwAgUWxbzj6TvdZmOQAAiWLbcgYAoKWybTl3zWwT\\nUw4AQKLYtpwDRiCmHACARLFtOe/a548pBwAgUWxbzkaMOQAAiWLbcgYAoKWybTmbfTHbfnEAQItn\\n245ymCwAZpYDAJAoti3ngMlBZbMcAIBEsW05AwDQUlHOAABYDOUMAIDFJEXzh4LBoKZMmaIvv/xS\\nHo9HU6dO1UknnRTKFy1apJdfflkul0vZ2dmaMmWKnE5+BwAA0BhRNeYHH3wgv9+voqIiTZw4UdOm\\nTQtlVVVVevLJJ/XKK69o7ty5Ki8v19KlS+M2YAAA7C6qcl61apVyc3MlSX369NGGDRtCmcfj0dy5\\nc9WmTe2NJWpqauT1euMwVAAAWoeoyrm8vFypqamhxy6XSzU1tTdIdjqdyszMlCTNnj1blZWV6t+/\\nfxyGCgBA6xDVMefU1FRVVFSEHgeDQSUlJdV7/Oijj2rr1q2aMWOGHI1Y8SM9va2SklzRDCdqWVlp\\nzfp5LR3zFT3mLjbMX2yYv9gkYv6iKue+fftq6dKluuSSS7RmzRplZ2fXyydPniyPx6OZM2c2+kSw\\nkpLKaIYSk+Lismb/zJYqKyuN+YoScxcb5i82zF9smnL+IpV+VOU8aNAgLV++XPn5+TIMQ4WFhVq4\\ncKEqKyt1xhln6I033tDZZ5+tq666SpI0duxYDRo0KLrRAwDQykRVzk6nUw8++GC953r06BH6540b\\nN8Y2KgAAWjEuPgYAwGIoZwAALMa25Wy2vz6q/fkAADQD25ZzTYw5AACJYttyBgCgpaKcAQCwGMoZ\\nAACLoZwBALAYyhkAAIuhnAEAsBjKGQAAi6GcAQCwGMoZAACLoZwBALAYyhkAAIuhnAEAsBjKGQAA\\ni6GcAQCwGMoZAACLoZwBALAYyhkAAIuhnAEAsBjKGQAAi6GcAQCwGMoZAACLoZwBALAYyhkAAIuh\\nnAEAsBjKGQCAMHzVAe3aWyFfdaDZPzup2T8RAAALCwSDKlqyWas3FWt/mU8d07zKyc5S3oCecjmb\\nZ5uWcgYA4AhFSzbrg5U7Q4/3HfSFHhcMzG6WMbBbGwCAOr7qgFZvKg6brd60t9l2cVPOAADUKS33\\naf9BX9ispKxKpeXhs3ijnAEAqNM+1auO7bxhs/S0ZLVPDZ/FG+UMAEAdr9ulnOyssFlOdqa8blez\\njIMTwgAAOELegJ6Sao8xl5RVKT0tWTnZmaHnmwPlDADAEVxOpwoGZmvU+T3k8rgV8Fc32xbzYezW\\nBgAgDK/bpeMzU5q9mCXKGQAAy6GcAQCwGMoZAACLoZwBALAYyhkAgDC4KxUAABZR765UB33q2I67\\nUgEAkFBzF3+lxau+DT0+fFcqwzD0q0GnNssY2K0NAEAdX3VAy9d/HzZbvv577koFAEBzKz5wSFX+\\n8AVc5Q+o+MChZhkH5QwAwGGGEVseJ5QzAAB1stLbKtkTvhqTPS5lpbdtlnFQzgAA1PG6Xep35vFh\\ns35nHsctIwEASIQrf9FLTodDn325R/vL/OqY5lHfUzs16y0j2XIGAMBi2HIGAOAIP77OeX+Zn+uc\\nAQBIFK5zBgDAYqxynXMr2a39rtRR0n5J+mWCxwIAsKx61zGH6Y5mus45qnIOBoOaMmWKvvzyS3k8\\nHk2dOlUnnXRSKF+yZIn++7//W0lJSRo1apSuuOKKuA342LwrnSa5kiWHQzK6SYGqd6WNEiUNAPix\\n2uuc31XVKUd3R/LXUlb6+c0yjqh2a3/wwQfy+/0qKirSxIkTNW3atFBWXV2thx9+WC+88IJmz56t\\noqIiFRcXx23Ax+Q0KalN7eRKtf+f1Kb2eQAAfszrdslxRvjucJyhZrvOOapyXrVqlXJzcyVJffr0\\n0YYNG0LZli1b1K1bN7Vv314ej0dnnXWWVq5cGZ/RHpN35UoOn9Q+/25zDgYA0AK8tOTPkqOB0FGX\\nN4OodmuXl5crNTU19NjlcqmmpkZJSUkqLy9XWlpaKEtJSVF5ebnpe6ant1VSUhx/kXT84VfPjzkc\\ntXlWVlr4FyAs5it6zF1smL/YMH+Nt0JrpWADYVBa4VqrO7NubPJxRFXOqampqqioCD0OBoNKSkoK\\nm1VUVNQr64aUlFRGM5SG7a89ThCuoA2jNi8uLovvZ9pYVlYa8xUl5i42zF9smL9jc7pO1xrj87Dd\\n4TekPjo9bvMZ6UdTVLu1+/btqw8//FCStGbNGmVnZ4eyHj16aPv27Tpw4ID8fr9WrlypnJycaD4m\\nRr9UoCp8Uvs8J4QBAOq7PneMPA10h6eqNm8OUW05Dxo0SMuXL1d+fr4Mw1BhYaEWLlyoyspK5eXl\\n6Z577tF1110nwzA0atQode7cOd7jbpyNUs2RZ2sbdcW8MTHDAQBYm9ftklLbq6a89KjucKe2b7YT\\nwhyG0UwXbZmI926X66ctOeKwwdHXqjkl/emeAXH9TDtj11j0mLvYMH+xYf6OXSAYVNGSzVq+6U/y\\nJUneGql/9vXKG9BTLmf81u6KtFvbtouQJLmkHxZ5+WVdMdfPAQD4MZfTqYKB2Rrab6rK/EGleZxK\\na+tp1jHYtpwbWH2t0TkAoHU6vOUc7paR8dxyjsS25ex2SNURdti7G7qODQDQqr26+CstCXNXqqBh\\n6NfclSo2hkn5muUAgNbHVx3Qx+t3hc0+Xr+Lu1LFqqahi8gbmQMAWp/ikkpV+cMXRJU/qOJ4r8nR\\nANuWMwAAx6raZMvNLI8XyhkAgDqGIl9dbJbHC+UMAEAdjzvyedJmebxQzgAA1GmfEvl6ZrM8Xihn\\nAADqHPLVxJTHC+UMAECd9qleNbR8tttVmzcH25az2VEB266+AgCISUOXMjfTJc6SbFzOZjsemmfH\\nBACgJdn2/cGY8nixbTkDAHCsdu+riCmPF8oZAIA6P+2eEVMeL5QzAAB1PA2dDdbIPF5sW85m97Xg\\nvhcAgB/buivyMWWzPF5sW85mC6w1zwJsAICWxOuOXItmebzYtpwBADhWKW0irwBmlscL5QwAQB2X\\nyTFPszxeKGcAAOps3VUWUx4vlDMAAHVOzGobUx4vlDMAAHUqqyKv0WmWxwvlDABAnU7pbWLK44Vy\\nBgCgTiAY+UJbszxeKGcAAOqY3RKSW0bGyB1jDgBoffaXHoopjxfblrPX5MeNWQ4AaH1WbSqOKY8X\\n25azYXJYwCwHALQ+7dpG3q8DQXs6AAAMhElEQVRqlseLbcs5GGMOAGh9Ssp8MeXxYtty9iRFXmPN\\nLAcAtD7HZ6bGlMeLbcvZ4YxcvmY5AKD1cZl0g1keL7YtZ3915B3XZjkAoPWp8tXElMeLbcs5PSU5\\nphwA0Pps+e5gTHm82Lac/dWRf92Y5QCA1qdjWuT7NZvl8WLfcq4xKWeTHADQ+njckWvRLI8X25Zz\\njRH5oL1ZDgBofU4wORvbLI8X25azy2Fyxp1JDgBofdomJ8WUx4ttyznZ44opBwC0Pg6ZXIZrkseL\\nbcu5Y/vI99w0ywEArY8/YHIZrkkeL7YtZ6vcWQQA0HL4TK5jNsvjxbbl7HVHXpzcLAcAtD5ZHSLv\\nVTXL48W25Vzl98eUAwBanwPlkbvBLI8X25ZzkivyCV9mOQCg9emQGnmREbM8Xmxbzicd3y6mHADQ\\n+rDl3MT69OoUUw4AaH3Ycm5i/upATDkAoPUpPlAVUx4vti3nXXsrYsoBAK2PVRawsm057y6JfB2z\\nWQ4AaH3cSZFr0SyPF9uWMwAAx8qQEVMeL7Yt58x2kQ/am+UAgNbH4458YwuzPF5sW84y/XXTPL9+\\nAAAtByuENbGS8sjrn5rlAIDWxypX+ti2nNt4I381sxwA0Prs3FMeUx4vtm2oLlmRVwAzywEArY9V\\nFiGJ6sh2VVWV7rzzTu3bt08pKSl65JFH1LFjx3qveemll/TXv/5VknT++efr1ltvjX20xyC9nTem\\nHADQ+jRm+c7jM5t+HFFtOb/66qvKzs7WnDlzdNlll2nmzJn18h07dmjBggWaO3euioqK9I9//EMb\\nN26My4Ab6+Tj0mLKAQCtT5dOqTHl8RJVOa9atUq5ubmSpP/4j//QJ598Ui8/7rjj9Kc//Ukul0tO\\np1M1NTXyept3S/VgReRfP2Y5AKD18bhdcjbQjE5nbd4cTHdrv/7663r55ZfrPZeRkaG0tNotz5SU\\nFJWVldXL3W63OnbsKMMwNH36dJ1++unq3r17xM9JT2+rpKT4femvvi+LmNc4ncrKYuv5WDBf0WPu\\nYsP8xYb5a7xdeysUDIbPgkHJ5XErKzOlycdhWs6jR4/W6NGj6z136623qqKidm3qiooKtWt39MlV\\nPp9Pf/jDH5SSkqL777/fdCAlJZWNHXOjuIwGZveIvLg4coHjB1lZacxXlJi72DB/sWH+jk1paeSl\\nnUsPVCjJpF8aK9KPpqh2a/ft21d///vfJUkffvihzjrrrHq5YRi6+eabdeqpp+rBBx+Uy9U8uwGO\\nlNXe5EJykxwA0Pp8Wxz5pkhmebxEdbb2lVdeqbvvvltXXnml3G63Hn/8cUnSiy++qG7duikYDOr/\\n/u//5Pf79dFHH0mSfve73yknJyd+IzdxyBd5kZFDvhqltWUJTwDAD9LaumPK4yWqcm7Tpo2eeuqp\\no56/5pprQv+8fv366EcVB4FA5N0OZjkAoPXhlpFNbOuuyMdYzHIAQOvz+faSmPJ4sW05dz8+8tmJ\\nZjkAoPVxOmLL4zaO5vmY5udyRf5qZjkAoPVJS4m8JodZHi+2baj2qV51SAl/SL1DilvtU1m+EwBQ\\n36ldO8SUx4tty9nrdqnvaZ3DZn1P6yRvM63yAgBoOTxulxwN7Lp2OJpvhTDblrMkNXRooJkOGQAA\\nWpjScp8MI3xmGLV5c7BtOfuqA1rz1d6w2Zqv9snXTDfMBgC0HG28SRE37Np4o7oC+ZjZtpxLy33a\\nfzD8L5ySsqpm+/UDAGg5Dvlq1MCGswyZL3AVL7Yt5/apXnVs4J7N6WnJnBAGADiKy+RaKbM8Xmxb\\nzl63S316hb8jdp9eGZwQBgA4ilXW1rZtOUuKuGsCAIAfs8ra2rYtZ191QGsbOCFsLSeEAQDCOCEr\\nNeIJYSdkpTbLOGxbzpwQBgCIhscdvhober4p2Lac26d6lZ4W/paQHVK9nBAGADhKablPvurwdy30\\nVwe5zjlWXrdLbduEPzbQtk0SJ4QBAI7SPtWrjAau9OnYrvmu9LFtOfuqAyouORQ2Kz5wiGPOAICj\\neN0u5WRnhc1ysjObbcOueZY6SYDaAg6/a8LnD6r4wCF1aaYD+wCAliNvQE9J0upNe1VSVqX0tGTl\\nZGeGnm8Oti1nf3XkVVzMcgBA6+RyOlUwMFujzu8hl8etgL+62Q+F2na3tscd+XeHWQ4AaN28bpeO\\nz0xJyDlKti3nrA5t5G3gtHev26msDm2aeUQAADSObcvZ63ap/5nHhc36n3kcZ2sDACzLtuUsSRHv\\nmA0AgEXZtpxZvhMA0FLZtpxZvhMA0FLZtpwj38+Z5TsBANZl23L2ul1qkxz+cqk2ySzfCQCwLtuW\\nc8TlO0tYvhMAYF22LeeIy3dW1y7fCQCAFdm2nGUYseUAACSIbcs5K72tkj3hv16yx6Ws9LbNPCIA\\nABrHtuXsdbvU78zjw2b9WCEMAGBhti1nSbriwh7q2ilVzroFwZwOqWunVF1xYY/EDgwAgAhsXc5v\\nLPtaO/aUK1h3eDloSDv2lOuNZV8ndmAAAERg23L2VQe0elNx2Gz1pr1cSgUAsCzbljPLdwIAWirb\\nlnPk5TuTWb4TAGBZti1nr9ulnOyssFlOdiZnawMALCv84tM2kTegp6TaY8wlZVVKT0tWTnZm6HkA\\nAKzI1uXscjpVMDBbo87vIZfHrYC/mi1mAIDl2Xa39pG8bpeOz0yhmAEALUKrKGcAAFoSyhkAAIuh\\nnAEAsBjKGQAAi6GcAQCwGMoZAACLoZwBALAYyhkAAIuhnAEAsBjKGQAAi6GcAQCwGIdhGEaiBwEA\\nAH7AljMAABZDOQMAYDGUMwAAFkM5AwBgMZQzAAAWQzkDAGAxtirnYDCoyZMnKy8vT2PGjNH27dvr\\n5UuWLNGoUaOUl5en1157LUGjtC6z+Vu0aJFGjx6t/Px8TZ48WcFgMEEjtSaz+Tvsvvvu02OPPdbM\\no7M+s/lbt26dCgoKdOWVV+q2226Tz+dL0Eitx2zuFixYoBEjRmjUqFGaM2dOgkZpfWvXrtWYMWOO\\nej4h3WHYyHvvvWfcfffdhmEYxurVq40bb7wxlPn9fmPgwIHGgQMHDJ/PZ4wcOdLYs2dPooZqSZHm\\n79ChQ8YvfvELo7Ky0jAMw5gwYYLxwQcfJGScVhVp/g579dVXjSuuuMJ49NFHm3t4lhdp/oLBoDFs\\n2DBj27ZthmEYxmuvvWZs2bIlIeO0IrO/e/379zdKSkoMn88X+u8g6nv22WeNIUOGGKNHj673fKK6\\nw1ZbzqtWrVJubq4kqU+fPtqwYUMo27Jli7p166b27dvL4/HorLPO0sqVKxM1VEuKNH8ej0dz585V\\nmzZtJEk1NTXyer0JGadVRZo/SVq9erXWrl2rvLy8RAzP8iLN39atW9WhQwe9/PLL+vWvf60DBw7o\\nlFNOSdRQLcfs796pp56qsrIy+f1+GYYhh8ORiGFaWrdu3TRjxoyjnk9Ud9iqnMvLy5Wamhp67HK5\\nVFNTE8rS0tJCWUpKisrLy5t9jFYWaf6cTqcyMzMlSbNnz1ZlZaX69++fkHFaVaT527Nnj55++mlN\\nnjw5UcOzvEjzV1JSotWrV6ugoEAvvvii/vnPf+qTTz5J1FAtJ9LcSVKvXr00atQoXXrppbrgggvU\\nrl27RAzT0i666CIlJSUd9XyiusNW5ZyamqqKiorQ42AwGJrsH2cVFRX1JhyR5+/w40ceeUTLly/X\\njBkz+PX9I5Hm791331VJSYnGjx+vZ599VosWLdK8efMSNVRLijR/HTp00EknnaSePXvK7XYrNzf3\\nqK3D1izS3G3cuFHLli3T4sWLtWTJEu3fv1/vvPNOooba4iSqO2xVzn379tWHH34oSVqzZo2ys7ND\\nWY8ePbR9+3YdOHBAfr9fK1euVE5OTqKGakmR5k+SJk+eLJ/Pp5kzZ4Z2b+MHkeZv7NixmjdvnmbP\\nnq3x48dryJAhGjlyZKKGakmR5q9r166qqKgInei0cuVK9erVKyHjtKJIc5eWlqbk5GR5vV65XC51\\n7NhRBw8eTNRQW5xEdcfR2/At2KBBg7R8+XLl5+fLMAwVFhZq4cKFqqysVF5enu655x5dd911MgxD\\no0aNUufOnRM9ZEuJNH9nnHGG3njjDZ199tm66qqrJNUWzqBBgxI8ausw+/uHyMzm749//KMmTpwo\\nwzCUk5OjCy64INFDtgyzucvLy1NBQYHcbre6deumESNGJHrIlpfo7uCuVAAAWIytdmsDAGAHlDMA\\nABZDOQMAYDGUMwAAFkM5AwBgMZQzAAAWQzkDAGAxlDMAABbz/w8+p9bJjX72AAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x396 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}\\\".format(X_df.columns[np.argmax(np.abs(cate.coef_[1:]))]))\\n\",\n                \"plt.scatter(X[:, np.argmax(np.abs(cate.coef_[1:]))], dml_effect, label='est')\\n\",\n                \"plt.scatter(X[:, np.argmax(np.abs(cate.coef_[1:]))], true_fn(X), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"#### Some Diagnostics of the Fitted Nuisance Models Across Folds\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 128,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAASkAAADdCAYAAADn7YQ5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4U2X68PFvkqb7XlroCm2hZRPZ\\nZJOCiCIIDgxaBbQoOqCjMG7DD8RdBhRmdGYAEbcXEBUREUGdYURQQDYpoiyyFAp0L92XtE2b5Hn/\\nKA0tlDaFJCdpn891cV30JCfnzkl699kflRBCIEmS5KDUSgcgSZLUFJmkJElyaDJJSZLk0GSSkiTJ\\nockkJUmSQ5NJSpIkh9Zmk9Sjjz7Kl19+2eRz9u/fz7hx45p8zldffcX48eMZP348AwYMICEhwfxz\\ncnLyVc/Lyspi0KBBbNu2zXxMr9dz9913s3bt2pa9mev05Zdfcsstt/DII4+wdOlSBg0axGOPPWaV\\n1z58+DAvvfQSYNn9tESfPn3IyMi47texpU8++YTbb7+9yfdbU1PD0KFD+dOf/mTHyCwTHx/PXXfd\\nZf4ujx8/nueff77Jc7788kseffTRRh8bN24c+/fvv6ZYXK7pLMlswoQJTJgwAYC5c+fSpUsXHnnk\\nkWbPCwsLY/HixcyePZsvvviCyMhIXnzxRbp27crkyZNtHXYDX331FU8//TTjx49n6dKl3HnnnebE\\ncr1Onz5Nbm6uVV7Lmdx///107tyZ+fPnX/U5W7dupWvXrhw9epQzZ84QGxtrxwibt3r1agIDA5UO\\nwzmS1P79+3nrrbcIDQ3l7NmzeHh4MGPGDNasWcPZs2cZNWoU8+bNA2DdunWsWbMGtVpNu3btePHF\\nF4mOjiY3N5e5c+dy4cIFwsLCKCgoML/+mTNnWLBgAcXFxRiNRpKSkrjnnnts/r6GDRvGpEmTePrp\\npxk3bhznzp3j448/Nj/+/PPP07Nnz0aT1rvvvsvGjRtxcXGhY8eOvPHGG/j4+PD222/z7bffotFo\\niI6O5sUXXyQ4OJiysjIWLFjAqVOnqKmpYfDgwfzf//0fixcv5siRI2RkZFBUVNTgGtd7393d3Vmy\\nZAllZWU899xzTJgwgYqKCp5++mlSU1PR6/X87W9/o3///lRXV/OPf/yDAwcOYDQa6d69Oy+88ALe\\n3t4kJyczf/58VCoVN9xwAyaTyRzf/Pnz+eabb6742WAw8Pe//50ff/wRjUZDnz59ePnll3F1db3q\\n53Hrrbfyxz/+kb1795Kdnc348eN56qmnMJlMLFy4kN9++w2dTocQgr/97W/069ePuXPn4u3tzcmT\\nJ8nJySE+Pp5Fixbh5eXV7Oe/du1a7rzzTqKioli9ejWvvfaa+bEvvviClStXolarCQgIYNGiRaSl\\npbFgwQI8PT3R6XRs2LCBjRs3Nvp9T05O5o033jDfq0cffZQ77rjjqsdbIjk5mcWLF1NZWYlWq+Wp\\np55i2LBhDZ5z+vRp5s2bR2VlJTExMVRUVABgMBiYP38+v/zyC1qtloiICF5//fWm75dwAvv27RPd\\nunUTx44dE0II8cgjj4j77rtP6PV6UVBQIHr06CFycnLEnj17xG233SYKCgqEEEJs2LBBjBkzRphM\\nJvH444+Lf/7zn0IIIc6dOyd69+4tNmzYIGpqasSdd94pjh49KoQQorS0VIwZM0YcOnRI7Nu3T4wd\\nO9biOOfMmSM++OCDFr03o9EoJk+eLPr06SNycnIsOuf7778Xo0aNEsXFxUIIIRYuXCiWL18uvvji\\nC3HfffcJnU4nhBBiyZIl4uGHHxZCCDF37lzx0UcfCSGEMBgM4q9//at47733hBBCPPDAA+K///2v\\n+ZxXX31VCGGd+75hwwYxY8aMBq/366+/CiGEWLlypZg6daoQQoilS5eKN954Q5hMJiGEEG+++aZ4\\n+eWXhV6vF0OGDBF79uwRQgjx9ddfi7i4OJGenn7F51P/59WrV4v7779fVFZWCqPRKJ588kmxcePG\\nJu/riBEjxBtvvCGEECInJ0fccMMNIi0tTfzyyy9i1qxZwmg0CiGEePfdd8Wjjz4qhKj9zOvuSXV1\\ntZgwYYL44osvrojncikpKaJHjx6isLBQ/Pbbb6JXr16isLBQCCHE8ePHxcCBA0VWVpb5Pr344oti\\n3759omvXriIjI0MIIZq871OnThXffPON+fVeeeUVIYS46vHLxcXFiXHjxok//OEP5n/5+fmisLBQ\\nDB482PwZnjp1SgwYMECkpaU1+KzHjx8vPv/8cyGEEMnJySI+Pl7s27dPHDhwQIwePdr8OS9evFgc\\nPHiwyc/FKUpSABEREXTv3h2AqKgofHx8cHV1JTAwEC8vL0pKSti1axd33nmnuYg6ceJEFixYQEZG\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAARwAAADdCAYAAABpN81FAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XlYlFX7B/Dv7AwzDDvIqojhgqKC\\nS6ZoLpWZCi6AkKSZS/ZiamUuubyZS5a2mD+XzMwXBZTXyqXNShPL5VVcEBQVRJR9GbYZYNbz+4Nm\\nYpRlwFnlfK7L65Jnmbln4eY85znnPgxCCAFFUZQJMM0dAEVRHQdNOBRFmQxNOBRFmQxNOBRFmQxN\\nOBRFmQxNOBRFmQxNOAYyb948fPvtty0ec+HCBYwfP77FY37++WcMHDgQRUVFOts/+ugjTJ8+HSqV\\nqtlzT506hcGDByM/P1+7LTc3F6GhocjIyNDjVRjOmjVrMGrUKHz66aeIjY3FqFGjsG3bNoM9fkFB\\nAebNm4fw8HBMmDABZ86c0e775ZdfMHnyZIwfPx5z585FRUUFAKC4uBivvfYaJk6ciAkTJuDIkSMA\\ngOXLl2Po0KFYu3Zts89369YtdO/eHV9++aXBXoMhXLhwAUFBQQgLC9P5l5iY2OJ5y5Ytw549ex7Z\\nLhaL0b17d2OFCxDKIObOnUsOHz7c4jHnz58nL730UquPtXz5cjJz5kyiVqsJIYRcvHiRPPPMM6So\\nqKjVczdv3kymTJlCZDIZqampIePGjSPff/+9fi/CgLp3704KCwsJIYRMnz6d/PTTTwZ9/AkTJpAD\\nBw4QQgjJyMggAwYMIDKZjKSlpZGhQ4eSBw8eEEIIWb9+PVm1ahUhhJClS5eSzz77jBBCSFFREenX\\nrx8pKSkhhBCydetW8v777zf7fKtXryZvv/02GT58OFEoFAZ9LY9D3+/Uw5YuXUq++uqrR7aXl5eT\\ngIAAQ4TWJLbxUpnlunDhAj755BN4eHggJycHfD4fc+fORXx8PHJycvD8889jxYoVAICDBw8iPj4e\\nTCYTLi4uWLVqFfz8/FBcXIxly5ahpKQEnp6eKC8v1z5+dnY21q9fj8rKSqhUKsTGxmLq1Kl6x7dy\\n5UpMmjQJCQkJCA8Px7Jly7Bx40a4u7u3eu6iRYtw9epVbN68GUVFRRg2bBjCwsK0+8PCwrBu3Tr0\\n6dNH5zypVIp169bh8uXLYLFYGDNmDBYvXgyJRIL3338fmZmZYDAYCA0NxVtvvQU2m93s64yJiQEh\\nBHPmzMGaNWt0nueLL77A1atXUVJSgu7du2Pz5s3YsWMHTpw4AbVaDS8vL6xZswbu7u7Izc3FihUr\\nUFVVBVdXVxBCMHHiRPTs2RNVVVWIiYkBAPTq1QsJCQlgMBg4evQopkyZAm9vbwDAggULUFlZCQBQ\\nqVSoqakBIQR1dXVgs9lgMltv5EskEhw7dgzJycnIzMzEL7/8gpdeegkAoFQq8fHHH+OPP/4Ai8VC\\n//79sWbNGuzatUvndW7cuBEffvghzp07BxaLhaCgICxfvhxCoRAJCQlISkoCh8MBj8fD2rVr0a1b\\nt2a3t0Vz39/GTpw4gU8//RR8Ph+9e/fWbi8tLcXSpUu1LcQRI0Zg0aJFbXr+RxgtlVmw8+fPk549\\ne5KMjAxCCCGvvfYaiYqKIjKZjJSXl5PAwEBSVFREzp49S8aMGUPKy8sJIYQcPnyYvPjii0StVpM3\\n3niDfPrpp4QQQu7du0f69etHDh8+TBQKBRk3bhxJT08nhBBSXV1NXnzxRXLlypU2/TVKT08ngwYN\\nIgsWLCCbN29u0+srKSkhgwYNIlOnTtX7r/GGDRvI4sWLiVKpJDKZjLz88svk/Pnz5N133yUffPAB\\nUavVRCaTkVmzZpFdu3a1+DoJISQgIED7vjVu4WzdupW88MIL2ri+++47smjRIu3PSUlJZPbs2YQQ\\nQiIjI7WtmKysLNK3b19y+PBh8sMPP5Do6GiyYcMGMnXqVBIVFUX++usvQgghs2fPJh9//DF5/fXX\\nyYQJE8jbb7+tjaOwsJCMHDmSDB06lPTq1Yvs27dP+/pbauHs37+fTJo0iRBCyO7du8nUqVO1+/bt\\n20defvllUldXR1QqFVm4cCH57rvvHnmdn3/+OYmLiyNyuZyoVCqybNkysmrVKqJUKklgYCApLi7W\\nvh9JSUnNbn/Y+fPnSZ8+fcjEiRO1/+bNm0cIIS1+fzUtnNLSUhISEkLu3LlDCCFk586d2hbOtm3b\\ntK1DqVRKFi1aRKqrq5v9Dumjw/bheHt7o1evXgAAX19fDB48GFwuF05OThAIBKiqqsKZM2cwbtw4\\nODk5AQAmT56M4uJi5OXl4ezZs5g8eTIAoHPnzhg8eDAA4N69e7h//z5WrFiBsLAwTJ8+HfX19bhx\\n40ab4gsMDERMTAxycnKwcOHCNp2bkZEBDoeDnJwc5Obm6nXO2bNnMXXqVLBYLHC5XOzfvx+DBw9G\\nSkoKpk+fDgaDAS6Xi2nTpiElJeWxXme/fv3AZjc0rk+dOoVr165hypQpCAsLw/79+5GTk4Oqqiqk\\npaUhIiICAODv74+nn34aQEOr4vLlyxg4cCCSk5OxYsUKLF68GMXFxVAqlTh16hTWrl2L77//Hq6u\\nrli5ciUA4J133sHs2bPx559/4ocffsDu3buRlpbWarxJSUmYNGkSAGDixInIyMjAlStXtO9bWFgY\\nbGxswGQy8dlnnyE8PPyR15mSkoJp06aBw+GAyWQiNjYWZ86cAYvFwtixYzFt2jSsXbsWIpFI+zk0\\ntb0pvr6+OHLkiPbfzp07AaDF769GamoqAgICtC2nqKgo7b7Q0FCcOHECc+bMwcGDB/H222/Dzs6u\\n1ferJR3ykgoAuFyuzs+aL0ZjarX6kW2EECiVSjAYDJBG09A056tUKtjZ2Wk7JAGgrKwMdnZ2uHr1\\napti9PHxgaenZ5OxNefevXtYtmwZtm3bhrNnz+LNN99EcnIybG1tWzyPzWaDwWBofy4sLISNjQ3U\\narXOdrVaDaVS2eLrbE3jWNRqNWbPnq29PJLL5aiqqgKLxQIAnfdYs83NzQ0ikQhjxowBAAQFBcHb\\n2xuZmZlwc3ND9+7d4erqCqDhl2zGjBkQi8VITU3FN998AwDo0qULhg4diosXLyIoKKjZWC9duoQ7\\nd+7gq6++wt69ewEAHA4H33zzDfr37//IZ1NWVqb93jz8Oh9+HxUKBQBg8+bNuH37Ns6ePYsvv/wS\\nR44cweeff97sdn219P19eJtG49cTFBSE33//HefOncP58+cRERGB3bt361x2tVWHbeHoIzQ0FD/+\\n+CPEYjEA4PDhw3BwcEDnzp0RGhqKgwcPAmi4Y3LhwgUAgJ+fH2xsbLS/iIWFhRg/fjzS09ONHq9U\\nKkVcXBzmzp2LAQMGIC4uDi4uLli9enWr5w4ZMgTfffcd1Go15HI53nzzTVy8eBHDhg3D/v37QQiB\\nXC7HoUOH8MwzzxjsdQ4bNgz//e9/IZFIAACff/453n33XQiFQgQHB2vv/D148ADnzp0Dg8FAcHAw\\nuFwuTp06BaChz+zBgwfo0aMHXnjhBZw6dUrb73DixAn06dMHjo6O6NSpE3755RcADXdjLl68iL59\\n+7YYX2JiIsLCwnD69GmcPHkSJ0+exM6dO/Hrr7+ioKAAQ4YMwfHjxyGXy6FWq/Hvf/8bP/zwwyOP\\nExoaisTERCgUCqjVahw4cABDhw6FWCzGiBEj4ODggJkzZ2LRokW4fv16s9vboqXvr8bAgQORlZWF\\nzMxMANC507p582Zs374dY8aMwXvvvYdu3brhzp07bYrhYR22haOPoUOHYubMmZgxYwbUajWcnJyw\\na9cuMJlMrFmzBsuXL8eLL76ITp06oUePHgAaWk7bt2/H+vXr8dVXX0GpVGLhwoUICQnRJiVjWb58\\nObp06YJZs2YBAJhMJrZs2YLw8HAkJCQgJiam2U7juLg4rF+/HmFhYVCpVBg3bhyef/55DBw4EOvW\\nrcOECROgUCgQGhqK119/vcXX2RYREREoLi5GZGQkGAwGPDw88OGHHwIANm3ahPfeew8JCQlwd3eH\\nt7c3bGxswOVysWfPHqxbtw5btmwBAGzYsAHu7u5wd3dHUVERYmNjoVar4enpifXr14PBYGDHjh34\\n4IMPsH37djCZTMybNw8DBgxoNjaxWIwTJ07g8OHDOtuHDBmCfv36IT4+Hu+88w7y8/MxefJkEEIw\\naNAgxMbGYseOHTrnzJ8/H5s2bUJ4eDiUSiWCgoKwatUqiEQizJ8/HzNnzoSNjQ1YLBbWrVsHJyen\\nJre3RUvfXw0nJyds3rwZ77zzDjgcDgYOHKjdN2PGDCxbtgzjx48Hl8tF9+7dtZ3l7cUghJanoIwr\\nNjYWL7/8MsaOHdum83bs2IHnn38e/v7+qKmpwcSJE7F79+4236nRxxdffIGKigq9WoNU+9EWjhl8\\n9dVXOHbsWJP7NAPTmhMTEwOpVNrkvgMHDkAoFBokRkP76KOPkJWVhbi4OL3P6dKlCxYvXgwmkwmV\\nSoU5c+YYJdksX74cKSkpeOGFFwz+2JQu2sKhKMpkaKcxRVEmQxMORVEmQxMORVEm88R2GpeW1uh1\\nnKOjLSoqao0cjWHRmE2Dxtw+rq7ND/7s8C0cNptl7hDajMZsGjRmw+vwCYeiKNOhCYeiKJMxacJR\\nq9VYvXo1oqKiEBsb+8hM5pMnT2LKlCmIiorCoUOH9DqHoijrYdKE89tvv0Eul2unumvmzACAQqHA\\nxo0b8fXXXyM+Ph4HDx5EaWlpi+dQFGVdTHqXKjU1FaGhoQAaaoU0nlmcnZ0NX19f2NvbAwBCQkJw\\n6dIlXL16tdlzOqJfLz6AowMfA55yMXcoFNVmJk04EolEZ64Pi8WCUqkEm82GRCLRqaUiEAggkUha\\nPKcljo62evfYt3Qbz5LU1itw6FQWbLgsjF03Tqe+ijWwlve5MRqzYZk04QiFQp2Jh2q1Wps4Ht4n\\nlUphZ2fX4jkt0Xcsgqurnd5jdsztyp1SqNQE0nolbmWXwdnextwh6c2a3mcNGnP7Y2iOSftwgoOD\\nkZKSAgC4evUqAgICtPv8/f2Rm5uLyspKyOVyXLp0Cf3792/xnI4mPUes/f+DUokZI6Go9jFpC+e5\\n557DX3/9hWnTpoEQgg0bNuDYsWOora1FVFQUli1bhtdeew2EEEyZMgXu7u5NntNRZdxtlHBKJOjX\\njfbjUNbliS1PoW+z0hKaoPooqajFsl3n0dndDrnFNRjYww3zw9tfW9bUrOV9bozG3P4YmkMH/lkJ\\nzeXU8L4eENiwkUcvqSgrRBOOlUj/+3Kqd1dndPG0R5G4FnJF88v+UpQlognHCihVaty8XwF3Rz5c\\nHfjw8xCBECC/rOlSoxRlqWjCsQLZ+VWQyVXo7ecMAOjiKQIA5JXQyyrKutCEYwU0/TeBXRtWUOzi\\n0ZBw6K1xytrQhGMF0nPEYDEZ6OHrAADw7SQCA7SFQ1kfmnAsXHWtHPeLavCUtz1suA3Dpvg8Nlwd\\n+XhQIsETOqqBekLRhGPhbuSIQQAE+jnpbPdxE0Jar0SlRG6ewCiqHWjCsXCa/htNh7GGj2vDhNYH\\n9LKKsiI04VgwQggycsQQ2XLg4667oqa3W8PPdAAgZU1owrFgD0okqJLKEejnBOZDpSg0CYe2cChr\\nQhOOBcto5nIKAFzsbWDDZdE7VZRVoQnHgmnH3zzUYQwATAYD3q5CFJbXQqFUmzo0imoXmnAslEyu\\nwp28Svi6CyEScJs8xttNCDUhKCynUxwo60ATjoXKvF8BpYo0eTml4eMqAED7cSjrQROOhfqn/+bR\\nyykNH7eGuiM04VDWgiYcC5WeIwaPw0I3b/tmj/H6u4VDb41T1oImHAtUVlWHInEtevg6gM1q/iPi\\n89hwsbehd6ooq0ETjgXSji7u2nz/jYaPmxDVtQpUSWTGDouiHhtNOBZIUyy9pf4bDR/NAEB6WUVZ\\nAZpwLIxKrcaN3Aq42NvAzZHf6vHef8+pyiuht8Ypy0cTjoW5W1CNOpkSvbs667Wypg+d4kBZEZOu\\nS1VfX48lS5agvLwcAoEAmzZtgpOT7mXDoUOHkJSUBDabjfnz52PkyJGoqanBkiVLIJFIoFAosGzZ\\nMvTv39+UoZtMehsupwDA1YEPLodJEw5lFUzawklMTERAQAASEhIQHh6O7du36+wvLS1FfHw8kpKS\\nsGfPHnzyySeQy+XYu3cvnn76aezfvx8bN27E2rVrTRm2SWmq+/Xs7KjX8UymZoqDFEoVneJAWTaT\\nJpzU1FSEhoYCAIYPH45z587p7E9LS0P//v3B5XJhZ2cHX19fZGZmYubMmZg2bRoAQKVSgcfjmTJs\\nk5HUKXCvsBr+niLwefo3Pr1dhVCpCYrK9VtPnaLMxWiXVMnJydi3b5/ONmdnZ9jZNYyOFQgEqKnR\\nXSFQIpFo92uOkUgkEIkaioaXlpZiyZIlWLFiRavP7+hoCzabpVesLa0UaEqZV/NBAAzq49FqTI33\\n9+zqjJRrBaiqV6K/hbyWpljK+9wWNGbDMlrCiYiIQEREhM62uLg4SKUNd1OkUqk2kWgIhULtfs0x\\nmgR069YtvPXWW3j33XcxaNCgVp+/okK/v/aWsDSqxtlr+QAAPzdhizE9HLMDv+FjzMguQ+DfhdYt\\njSW9z/qiMbc/huaY9JIqODgYp0+fBgCkpKQgJCREZ39QUBBSU1Mhk8lQU1OD7OxsBAQEICsrCwsX\\nLsSWLVswYsQIU4ZsMprqfkI+B53d2/YXSnOnio44piydSe9SRUdHY+nSpYiOjgaHw8GWLVsAAHv3\\n7oWvry9Gjx6N2NhYxMTEgBCCxYsXg8fjYcuWLZDL5Vi/fj2AhpbQjh07TBm60RWUSVFRI8Ognm5g\\nMlu/Hd6YrQ0HziIeHfxHWTyTJhw+n4+tW7c+sv3VV1/V/j8yMhKRkZE6+5+05NKU5oql68vbVYhr\\n2eWorpVDZNt0/RyKMjc68M9CtFTdTx/e9LKKsgI04VgAuUKF2w8q4e0qgKNd+275034cyhrQhGMB\\nbj+ohEKpbvflFEAncVLWgSYcC6C9nOravsspAHBz5IPDZtJJnJRFownHAmTkiMFlMxHQQnW/1rCY\\nTHi6CJBfJoVKTac4UJaJJhwzE1fXI79MigBfB3D0HBndHB83IZQqNYrEdQaKjqIMiyYcM2tpsbu2\\n8nGlHceUZaMJx8zS9VidQV90vXHK0tGEY0ZqNcGNe2I4iXjwcLZ97MejxbgoS0cTjhnlFFVDWq9E\\nbz8nvar7tUbI58DRjkcTDmWxaMIxo3+KpT9+/42Gt6sQFTUySOoUBntMijIUmnDMKD1HDAYD6NlF\\nv+p++vB2a1gcL9+C+nEqamQoLKPjgyiacMymtl6BuwXV6OopgsCGY7DH1dypum9Bl1Vb/5uGd7am\\nQK0m5g6FMjOacMzkZm4F1IQY9HIKsLxJnGVVdcgtrkG1VE7vnlE04ZiLIW+HN9bJyRZsFsNifrmv\\nZ5dr/5+dX2XGSChLQBOOGRBCkH5XDFseG108DFt/ls1iwtNZgPxSqUVcwqQ1SjhZ+dVmjISyBDTh\\nmEGRuBbl1fXo1cURLKbhPwJvNyHkSjWK9azrbCxyhQo3cyvg4WwLgQ0b2QW0hdPR0YRjBtrLqa6G\\n7b/R0C7/W2reO0OZ9yshV6rRt5sLund2QklFHapr5WaNiTIvmnDMIMNI/TcaPu6WMeJY038T1NUZ\\nPf5e2I/243RsNOGYmEKpRub9hssMJ5GNUZ7DEiZxEkJwLbsMfB4L3bzt0b1LQ3LNpv04HRpNOCZ2\\nJ68ScsXjVfdrjUjAhUjANWsLp0hci7KqegR2cQKbxUR3X0cwQFs4HZ1eCeenn36CXE6vvQ1Bezn1\\nGNX99OHjKkB5dT1q65VGfZ7mXMv6+3LK3wUAIOBz4OkqQE5RNS0Q1oHplXBSUlIwduxYvP/++0hL\\nS2v3k9XX12PBggWIiYnBnDlzIBaLHznm0KFDmDx5MiIjI3Hq1CmdfdnZ2QgJCYFMJmt3DOaWniMG\\nm8VEgI9xV8j0cWu43W6u8TjX7zYknD7+/7Tk/D3tIVeoaRnUDkyvhLNx40b8+OOP6NevH7744gtM\\nnjwZe/bsQXl5eesnN5KYmIiAgAAkJCQgPDwc27dv19lfWlqK+Ph4JCUlYc+ePfjkk0+0LSuJRIJN\\nmzaBy7XeNZeqJDI8KJGgu489eJzHq+7XGs2cKnMknDqZErcfVKJLJzvYC/75vPy9GpZ2zqKXVR2W\\n3n04NjY28PLygoeHByQSCW7duoWZM2di//79ej9ZamoqQkNDAQDDhw/HuXPndPanpaWhf//+4HK5\\nsLOzg6+vLzIzM0EIwapVq/DWW2+Bz+fr/XyW5p+1p4zXf6OhuTVujn6cjBwxVGqCIH/d19nNq6Fm\\nM+3H6bj0Wnnz008/xfHjx+Ht7Y0pU6bgvffeA4/Hg0QiwejRozF9+vRHzklOTsa+fft0tjk7O8PO\\nrqGpLxAIUFOju+i6RCLR7tccI5FIsG3bNowYMQI9evRo8wu0JMa+Hd6Yh7MALCbDLHeq0u7q9t9o\\nuDs1DACkLZyOS6+Ew2Qy8c0338DHx0dnu1AoxO7du5s8JyIiAhERETrb4uLiIJU2XL9LpVKIRKJH\\nHk+zX3OMnZ0djh49ik6dOuHw4cMoLS3FrFmzcODAgRZjdnS0BVvPouSuroadXtAUtZrgRm4FnEQ2\\n6Ner02MX3NInZh93O+SXSeHsLGzzeuXtpVYTZOSIYS/kYmAfT53ndXcToaefMy7dLAabx4GjkYYF\\nGJIpvhuGZskx65VwsrKyHkk2M2bMwL59+xAUFKT3kwUHB+P06dMICgpCSkoKQkJCdPYHBQXhs88+\\ng0wmg1wuR3Z2NgICAvDrr79qjxk1ahS+/vrrVp+rQs9h/a6udigtrWn9wMd0r6ga1VI5hvbphLKy\\nx2t16BtzJyc+7hVW42ZWCdwcH7+EqT5yi2pQUSPDM707obz8n9epidnHxRaXAFxIK0BId1eTxNRe\\npvpuGJIlxNxSwmsx4cTFxeHmzZsoKSnB6NGjtdtVKhU8PDzaHEh0dDSWLl2K6OhocDgcbNmyBQCw\\nd+9e+Pr6YvTo0YiNjUVMTAwIIVi8eDF4vPYtfWtp0o1Q3a81Pq5CnEcxHpRITJZwrmWXAcAj/Tca\\n/pp+nIIqi084lOG1mHA+/PBDVFZW4v3338e///3vf05is+Hs3PZfHD6fj61btz6y/dVXX9X+PzIy\\nEpGRkc0+xsmTJ9v8vJYgPUcMBoBAE/TfaHg3Kqoe0t3NJM95PbscTAaj2X4qPw8RGAzacdxRtZhw\\nhEIhhEIhysrK4OXlZaqYnjh1MiWy86vQxcMOQr7hqvu1xsfNtJM4q2vluFtQjad8HGDbTBVDPo8N\\nb1ch7hXVQKlSg82ig907Er0+bRcXF1y6dImONm6nzPsVUKmJSW6HN2Yv4ELI55jsTlX63XIQAH2b\\nuZzS8Peyh0Kpxv1iyygSRpmOXp3G169f1976ZjAYIISAwWDg5s2bRg3uSWGs6n6tYTAY8HET4mZu\\nBepkSvB5en3c7aYpttWntYTjKcIfV/KRnV+Frp6iFo+lnix6fQPPnz9v7DieaBl3xeDzWGb55fJ2\\nbUg4+WVS7cA7Y1Cp1Ui/K4aziAcvF0GLx3Zr1HH8HHxaPJZ6suh1SSWXy7Fz504sXbpUOxCPXl7p\\np6SiFiWVdejh62iW/gofExVVz86vRq1MiSB/l1bHGLk58iHkc2jHcQek12/A2rVrUVtbi4yMDLBY\\nLOTm5mLFihXGju2JYOzqfq3RLv9r5DlV+l5OAQ2Xet287FFeLUNFjfVOxKXaTq+Ek5GRgbfeegts\\nNht8Ph8fffQRMjMzjR3bE+Gf8Tem7b/R8HSxBYNh/DlVadnlYLOY6NlZv0X9NBM5aSunY9Er4TAY\\nDMjlcm1TuaKiwiBrYT/plCo1bt6vgLsjH64O5pl0ymGz0MnJFnklEhBinFUcxNX1yCuVoEdnB71n\\nwft7NvTj0HlVHYteCeeVV17Bq6++itLSUqxfvx5TpkzBjBkzjB2b1cvOr4JMrjLp6OKm+LgJUS9X\\nobyq3iiPr7mc6vvQZM2W+HmIwGQw6EoOHYxed6nCw8PRu3dvXLhwAWq1Gjt27LD6mdumoC1HYeTq\\nfq3xcRPifzdL8KBUAhcjtLTa0n+jweOy4OMmRG5RDRRKNThsOgCwI9DrU1YoFPjzzz9x5swZXLhw\\nAWlpaUZrnj9J0nPEYDEZ6OFr3Op+rTFmbRyFUoUbuWJ4ONvCrY3JzN9LBKWKILfYuiZIUu2nV8JZ\\nuXIlrly5gsjISISHh+PMmTPYsGGDsWOzatW1ctwvqsFT3vaw4Rp3wF1rjHlr/NaDhqLwzU3WbIk/\\nLcjV4ej1m3Dt2jX8/PPP2p9HjRqF8ePHGy0oU/k48QqKK+rg7siHp4sAns628HQRwMNZADtbzmN1\\njN/IEYPAfLfDG3O040Fgw8YDI8ypSsv6Z+2ptqIVADsevRKOt7c3cnNz0blzZwBAWVkZ3N3djRqY\\nKfi6C1FaVY+buRW4mVuhs0/I58CjUQLSJCNHO55eiUjbf9PFvP03QMNdRm9XIW4/qIRMoTJoPeW0\\nu+Ww4bLwVDuKwrvY20Ak4CIrv0o7XYZ6sumVcJRKJcLCwjBgwACwWCykpqbCzc0Nr7zyCgDgP//5\\nj1GDNJaoUU8hLioY9/MqUCSuRUGZFAXlUhSW1aKgXIqs/CrcydP968vjsuDpbNuQhFwE2qTkas/X\\nVrcjpKHqnciWo10F09y83YS49aAS+aVSg02xKBLXoqSiDiEBru0aRc1gMODvKcKVO2UQV8vgbG/5\\nFQCpx6NXwnnjjTd0fn7ttdeMEoy58Hls+HmI4Oeh+4uoUKpQJK5DYbn072RUi8IyKe4XS5BTqNvR\\nyWYx0cnJFp4uthAJuKiSyjEk0B1MC/mr/U+pConBEk5aVsvFtvTRzcseV+6UIbugiiacDkCvhDNo\\n0CCcPn0a58+fh1KpxODBgzFmzBhjx2Z2HHbDrVvNL6uGSq1GaWU9CsqkusmoXKqzLEtbbhMbmzHu\\nVKU1sfZUW2k6jrPyqzCop/X1CU+UAAAZlUlEQVRfplMt0yvh7N69GydOnMCECRNACMHOnTtx584d\\nzJ8/39jxWSQWs6E108nJFsA/ZTLVhEBcXY+CslrU1iswqIfl/AJ5uQrAgOHuVNXJlLh1vxKd3e3g\\nIGx/GdgunezAYjLomuMdhF4J5+jRo0hOToaNTUOTNzIyEpMnT+6wCac5TAYDLvZ8uNhb3tpZPA4L\\nbk62ePD3FIfH7aC9mVvR5NpTbcXlsODrLsT94hrIFSpwjbxAIGVeevX0EUK0yQYAeDwe2Gzzji2h\\n2s7HVYBamdIgM7TTWimW3hb+nvZQqQnuFdEBgE86vRLO008/jQULFuDkyZM4efIkFi1ahMGDBxs7\\nNsrAGhdVfxyEEKRll0PI5zzS0d4e3bz/KchFPdn0aqa89957SExMxPfffw9CCJ5++mlERUUZOzbK\\nwBrfqerbTf+Jlg97UCJBpeTvu3AGWGBPM3Oc9uM8+fRKOLNnz8aePXsQExNj7HgoI/Ix0J2qa9lN\\nL+XbXk4iHhyEXGR3gAGAlRIZdh+7gQHdXTEy2Nvc4ZicXpdUdXV1KCwsfOwnq6+vx4IFCxATE4M5\\nc+ZALBY/csyhQ4cwefJkREZG4tSpUwAaFt5bt24dpk2bhsmTJ2u3U23jbG8DGy7rsRPO9exyMBiG\\nW2OLwWDA38seVVI5yoxUQsMSqAnBV8dv4GZuBeJP3Mbpq/nmDsnk9GrhiMVijBo1Cs7OzjorYf7+\\n++9terLExEQEBARgwYIF+OGHH7B9+3asXLlSu7+0tBTx8fE4fPgwZDIZYmJiMHToUBw/fhxKpRJJ\\nSUkoLi7GTz/91KbnpRowGAx4uwmRnV8FhVIFjp5rrzcmqVMgu6AK3bzsDbrGlr+nPVJvlSI7v8ps\\nxcqM7ZcL93HjXgV6+Dogr1SK//x8CzZcNgb3spzhE8amV8LZsWOHduAfi8XCiBEjMGTIkDY/WWpq\\nKmbPng0AGD58OLZv366zPy0tDf379weXywWXy4Wvry8yMzPx559/IiAgAHPnzgUhBKtWrWrzc1MN\\nfNyEyMqrQkFZLTp3avui9+l3y0GIYe5ONabtOM6vxtOBnQz62JbgbkE1vk25CwchF/PDe0NcLcNH\\niZfx1fEbsOGyHqtPzZrolXB27twJmUyGyMhIqNVqHDlyBHfu3MF7773X7DnJycnYt2+fzjZnZ2fY\\n2TV8yQUCAWpqdG+DSiQS7X7NMRKJBBUVFcjNzcWuXbtw8eJFLF++HAcOHGgxZkdHW7D1/Ave0uLr\\nlqq9Mffs6oJTl/NRWafAgHY8xq282wCAEQN82xxDS8c7ONqCzWIit6TGoj4PQ8RSW6/AVz+ch5oQ\\nvDN9ALp2dkZXAGsEPKz+8hx2fJ+Of88Zgj4GSjqW9P49zGjlKSIiIhAREaGzLS4uDlJpQ4kEqVQK\\nkUj3lqpQKNTu1xxjZ2cHBwcHPPvss2AwGBg0aBDu3bvXaswVFbWtHgM0fDilpdY1/uNxYnbgN3zk\\nN7LL0beNfTBqNcGlm0UN5S7YjDbFoE/Mnd2FuJtfjbz8SvC45h8AaKjvxu5jGSgqr8VLQzrD08FG\\n+5hudlzETeqNz/+bhvf3nMeSaf0fe56bJXyfW0p4enUaa8pTaLS3PEVwcDBOnz4NAEhJSUFISIjO\\n/qCgIKSmpkImk6GmpgbZ2dkICAhASEiI9rzMzEx4eHi0+bmpBppF6vLasWzM3YJqSOuVCPJ3Nsqd\\nJH8ve6gJwb2iJ+f2+Nn0QpzLKEZXTxHChvk9sr93V2fMmxgIuUKFTw9dbdfnYmx5pRKsj7+EPwzQ\\nyd3m8hRsNhupqalwdXVtc3mK6OhoLF26FNHR0eBwONiyZQsAYO/evfD19cXo0aMRGxuLmJgYEEKw\\nePFi8Hg8REZGYs2aNYiMjAQhBO+//347Xy7F57Hh5sBv1xSHawYcXdyUbl72OHHxAbLyq9DdV7/l\\nZixZcUUt4k/chg2XhbkTA5st4TGghxtelffE1z/exJakq1g2PRjujrYmjrZpFzNL8PUPNyFTqBAa\\n5PnYj9eu8hSzZs1q15Px+Xxs3br1ke2vvvqq9v+RkZGIjIzU2c/lcrFx48Z2PSf1KG83IS7fLkWl\\nRA5HO/0nXl7PLgebxUCvzsYpKvZPyVHrb+EoVWrsOpIBmVyFuRN7tVrveViQB+rlSiT8dgebE69i\\n+fRgOInMV65DrSb4NuUufjyfCx6HhTfCe2NAD7fHfly9y1NQTw5vVwEu3y5FXqlE74RTUSPD/RIJ\\nAv2cjNa/4mjHg5OIh+wC6x8A+F3KXdwrqsHQ3p3wdC/97rqNGeCDOpkS353JwZaDV7H05WCIbLlG\\njvRRkjoFdh3NQEaOGG6OfCyY3AderoYpJEfX5uiA2lNU/fpdzehi49b48fe0R02tAiWVdUZ9HmPK\\nyBHjpwv34e7IR8xzAW06d/wzXTB2kC8Ky2vxycGrqK1XGCnKpj0okWDtNxeRkSNGkL8zVs8YYLBk\\nA9CE0yG1Z73xawao7qcPay+sXi2V46vjN8BiMjAvLBB8XtuqKjAYDESM9MeIfp64XyzBZ/9Ng0yu\\nMlK0ui7cKMb6+Esoq6rHhGe64M2pQbC1MdzgToAmnA7JxYEPHkf/KQ4KpRo3civg7mRr9M5Ma+7H\\nIYTg6x9vokoqx5QR/ujSqX23uBkMBmKf745BPd2QlVeFbd+mQaFUGzjaf6jUahw6mYVdRzPAZDAQ\\nN7kPJg3vapTyuDThdEBMBgPergIUldfq9UW+nVcJmVzVrqVg2srXXQgOm2mVLZzfLuUhLbscgX5O\\neH6Qz2M9FpPJwOzxvdDX3xkZ9yqw62gGVGrDJ52aWjk+OXgNP//vPjo52WLlKwMQHODa+ontRBNO\\nB+XtJoRKTVBY3vpaVdq1p7oZP+GwWUx07mSHB6US1MmURn8+Q8ktqkHyH1kQ2XIw+6WeBmkdsFlM\\nzA/vjR6+Drh8uxR7f8yE2oAr3uYW1WDtN5dwM7cC/bq5YOUrA+D59zgtY6EJp4NqXBunNWl3y8Hj\\nshDgbZoli7t52YMQ4F6hdVxWyeQq7DqaAaWK4LXxvWD/GDWeH8blsLBgShD8PEQ4m16ExF/vGGSZ\\n7XMZRdiwPxXl1fUIH+aHuCl9YGtj/CqeNOF0UPqu4lBcUYticS16dXYEh22ar4umIFdWgXUknITf\\nbqNIXIvnB/qgjxEuO/k8NhZH9oWXqwC/X87Dd2futvuxlCo1En+7g93HboDNYuDNKUGYOMzPZMsZ\\n0YTTQWkSTmu3xtP+LrZlytnM3bwaOlutoR/nfzeLcSatEL7uQkwZ4W+05xHyOXgnqh/cHPk4fjYX\\nP13Ibf2kh1RL5fjk4FX8eukBPJwb+mv6PWXaWeo04XRQtjZsOItsWl1vXJNwjPGXuzn2Qh5c7G20\\nFQAtVVllHfb9fAs8Dguvh/U2egvQXsjDO9P6wdGOh+RT2fjjiv5zm3IKq7F230Vk3q9EcIArVr4y\\nAB7Oxu2vaQpNOB2Yj5sQ1VI5qqTyJvfL5Crcul8BXzdhm6ZAGEI3L3tI65UoEus369/UVGo1dh3L\\nQJ1MiZjnnvp7jTLjc7Hn451p/WBny0H8L7dw/kZRq+f8db0QG/dfRkW1DJOHd8Ubk3q3eXyQodCE\\n04F5tzLi+EauGEoVMcsKopY+Hufon/eQnV+NQT3dMKyPaasXeDgL8HZUP9jw2Pjq2E1cvVPW5HFK\\nlRoHTtzGnh9ugsNmYmFEEMY/08Wsy0/ThNOB+bSybIy2/8ZAxdLbwl/Tj2OBS8fcul+B42fvwcXe\\nBq+80MMsc7583e2wOKIv2GwGtn+fjpv3dOuDV0nl2Jx4Bb9fzoOXqwCrZw4wWNH7x0ETTgfm7dp8\\nbRzN2lMCG/ZjF4VqD29XIbgWOABQUqfAl8dugMFgYO7EQJPcSm5ON297LJgcBIBg6+Hr2vcqu6AK\\na7+5iNt5VRjQww3vxYZYTLkLmnA6MHdHW3DZzCYvqfJKpaiokaFPV2eDrD3VVmwWE34eIuSXSlFb\\nbxkDAAkh2PvjTVTUyBAW6qed92VOgX5OmDexNxRKNT49dA2JJ25h04HLqJTIEPGsP+aHBcKGazmr\\n5NKE04ExmQx4uQpQUC6FUqU7bN6QS/m2l7+XPQga7rBYgj+uFuDKnTL08HXAS093Nnc4WiHdXfHq\\nuB6olSmR8EsmeBwWFkf2xYtPd7a4Eh+Wk/oos/B2FSKnsAZF4lrt2Bygof+GwWgogWku/o3G4xhq\\nDaz2yiuVIOn3OxDYsDFnQqBZWn0tGdrHA4QAGbkVmBTq12rBL3OhCaeDa3ynSpNwpPUKZOVXwd/T\\nsGtPtdU/I47N248jV6iw60gGFEo1Xp8YaPIhAvoaFuSBSaMDzF5EvSX0kqqD0y7/26jjOP2uGITA\\nLLfDGxMJuHBz4CM7v9qgkxbb6uCpLOSXSTEy2Av9jTiTuiOgCaeD827i1rim/6avmRMO0NCPUydT\\norDcPAMAL98uxanL+fByFSBqZDezxPAkoQmngxPyOXC042nvVKnVBNfviuEg5GrH6ZiTOedVlVXW\\nYe+PDYPmXp8YCC7H/GtlWTuacCj4uAlRKZGjplaOnMJqSOoURlt7qq38zVRyVK0m2JKQCmm9EtNG\\nP2XQur4dmUk7jevr67FkyRKUl5dDIBBg06ZNcHLSvftw6NAhJCUlgc1mY/78+Rg5ciRqamqwePFi\\n1NXVgcPh4OOPP4arK72WNhRvVyHSssuRVypFZm4FAFjEqFQA8HIVgMdhIcvECeeHc/eQnl2O4ABX\\nPNvv8ddjohqYtIWTmJiIgIAAJCQkIDw8HNu3b9fZX1paivj4eCQlJWHPnj345JNPIJfL8e233yIg\\nIAAHDhzAuHHjsGfPHlOG/cRrPMUhLbscLCYDPTtbxkJ0LCYTXT1FKCyvhdREKxjcuCfG93/mwMXe\\nBjNfNM/UhSeVSRNOamoqQkNDAQDDhw/HuXPndPanpaWhf//+4HK5sLOzg6+vLzIzMxEQEKBdc1wi\\nkYDNpnfzDUnTcZyeU47c4hp093Uw22zipmjG49w1QUGuihqZtpj40hkDzTos4ElktG9VcnIy9u3b\\np7PN2dkZdnYNC50LBALU1OiOF5BIJNr9mmMkEgmcnJzw119/Ydy4caiqqsKBAwdafX5HR1uw2fp1\\n8rW0+LqlMmTMTk4CsFlMpN9tmAD4TF8vo7wn7X3M4J6dcPxsLgor6jHKiJ+VUqXGx0lXUVOrwLxJ\\nfdDDSCuMGpslf5+NlnAiIiIQERGhsy0uLk7bUpFKpRCJdCcFCoVC7X7NMXZ2dti2bRtmz56NadOm\\nITMzEwsWLMCxY8dafP6KCv1uo7q62ln0QKmmGCNmTxdb3C9uuFPV1V1o8Md/nJhdhA2rT16/U4LS\\nEC9DhqUj8bc7uHlPjEE93TAooKEPi3432hdDc0x6SRUcHIzTp08DAFJSUhASEqKzPygoCKmpqZDJ\\nZKipqUF2djYCAgIgEom0LR9nZ2edpEQZhqYfx82Rb7JiUvoS8jno5GSL7IJqqNXGGQB4MbNEW3qT\\n9tsYj0kv1KOjo7F06VJER0eDw+Fgy5YtAIC9e/fC19cXo0ePRmxsLGJiYkAIweLFi8Hj8bBw4UKs\\nXLkSCQkJUCqV+OCDD0wZdoegGXFsirWn2sPfS4S/rhehoEyq7XMylMJyKb7+8SZ4HBb+NamPRc2u\\nftIwiCUXjX0M+jYrLaEJ2lbGiFlcXY99P99C9BjjlMt83Jj/uJqP//x8C6+M7Y5n+xnuskomV2Hd\\nfy4hv0yKeRMDMbiXu3Yf/W60P4bm0IF/FADASWSDxZF9Le5ySqObp+EHABJC8J9fMpFfJsXoYG+d\\nZEMZB004lFXwdBGAz2Mhy4A1jv+4WoBzGcXo6ilC1Gg6T8oUaMKhrAKTyUBXDxGKxbWQ1D3+AMCc\\nwmok/nYbQj4H88N6g82ivwqmQN9lymoYal6VpE6B7d+lQ6UimDuxF5ztbQwRHqUHmnAoq6FNOI9R\\nkEtNCHYfu4Hy6npMHOaH3n6WeVfuSUUTDmU1/P9ePSIrr/0J5/jZe7h+txy9/ZwwYWgXA0VG6Ysm\\nHMpq2Npw4OkiQE5hDVRqdesnPCQjR4wjZ3LgLOJhzoReZl0QrqOiCYeyKv6eIsgUKuS3sib6w8TV\\n9Q2TMpkMzA/vAztbrpEipFpCEw5lVdrTcaxUqbHj+3RI6hSIHvOUWRb2oxrQhENZFc3ic20Zj3Po\\nZBayC6rxdC93jOxvvMmfVOtowqGsSidnW9jy2Hq3cP53sxi/pebB00WAGWPppExzowmHsipMBgNd\\nvUQoqaxDtVTe4rGF5VLs/SkTPC4L/5rUGzwuLYJubjThUFZHO6+qhfE49XIl/u+7dMjkKrz6Yg94\\nOAtMFR7VAppwKKvzT8dx0/04hBD85+dbKCiTYkyINwb1pJMyLQVNOJTV6eopAgNodiWHU1fycf5G\\nMfy9RIgcRSdlWhKacCirw+ex4eUqwL3CaihVugMA7xZUI/G3O3RSpoWinwZllfy97CFXqpHXaE10\\nSZ0CO76/DrWaYN7EQDiJ6KRMS0MTDmWV/D11+3HUhODLYxkor5YhLNQPgX7WueLCk44mHMoqdfPW\\nDABs6Mc5/tc9pN8Vo09XZ4x/posZI6NaQhMOZZXcHfkQ8jnIzq9C+t1yHPkzB84iGzop08LRhENZ\\nJQaDga6eIpRV1WPnkQywWAy8Mak3XSnTwtGEQ1ktzXicWpkS0WMC4OdBJ2VaOpMmnPr6eixYsAAx\\nMTGYM2cOxGJxk8eJxWI8//zzkMlkbTqP6lh6dXEEAAwJ7IRn+3maORpKHyZNOImJiQgICEBCQgLC\\nw8Oxffv2R445c+YMZs2ahbKysjadR3U8/p72+GD2YLz2Uk86KdNKmDThpKamIjQ0FAAwfPhwnDt3\\n7tGAmEzs3bsXDg4ObTqP6pi8XARgMmmysRZGW9M0OTkZ+/bt09nm7OysXSNcIBCgpubRFQKHDh36\\nyDaJRNLqeQ9zdLQFm63f7OCWVgq0VDRm06AxG5bREk5ERAQiIiJ0tsXFxUEqbSgNKZVKIRLp18kn\\nFArbfF5FRa1ej20JS6O2FY3ZNGjM7Y+hOSa9pAoODsbp06cBACkpKQgJCTHqeRRFWRaTJpzo6Gjc\\nuXMH0dHROHjwIOLi4gAAe/fuxe+//97m8yiKsi4MQggxdxDGoG+z0hKaoG1FYzYNGnP7Y2jOE5tw\\nKIqyPHSkMUVRJkMTDkVRJkMTDkVRJkMTDkVRJkMTDkVRJkMTDkVRJtMhE45arcbq1asRFRWF2NhY\\n5ObmmjukVikUCixZsgQxMTGYOnVqiwMlLU15eTlGjBiB7Oxsc4eit127diEqKgqTJ09GcnKyucNp\\nlUKhwNtvv41p06YhJibGYt/rDplwfvvtN8jlchw8eBBvv/02PvzwQ3OH1KqjR4/CwcEBCQkJ2L17\\nNz744ANzh6QXhUKB1atXw8bGelZQuHDhAq5cuYLExETEx8ejqKjI3CG16vTp01AqlUhKSsK//vUv\\nfPbZZ+YOqUkdMuE0LnfRr18/pKenmzmi1o0dOxYLFy7U/sxiWcc62Zs2bcK0adPg5uZm7lD09uef\\nfyIgIAD/+te/8Prrr+PZZ581d0it8vPzg0qlglqthkQiAZtttHnZj8UyozIyiUQCoVCo/ZnFYkGp\\nVFrshwQ0lOUAGmJ/8803sWjRIjNH1Lpvv/0WTk5OCA0NxZdffmnucPRWUVGBgoIC7Ny5E3l5eZg/\\nfz5+/vlniy7yZWtri/z8fLz44ouoqKjAzp07zR1SkzpkC6dxuQugoU/HkpONRmFhIV555RWEhYVh\\nwoQJ5g6nVYcPH8bZs2cRGxuLmzdvYunSpSgtLTV3WK1ycHDAsGHDwOVy0bVrV/B4PIsva/vNN99g\\n2LBh+OWXX3DkyBEsW7ZMW6LXknTIhBMcHIyUlBQAwNWrVxEQEGDmiFpXVlaGWbNmYcmSJZg6daq5\\nw9HLgQMHsH//fsTHx6Nnz57YtGkTXF1dzR1Wq0JCQnDmzBkQQlBcXIy6ujqdCpSWSCQSaYvU2dvb\\nQ6lUQqVSmTmqR1n+n3UjeO655/DXX39h2rRpIIRgw4YN5g6pVTt37kR1dTW2b9+urem8e/duq+qM\\ntRYjR47ExYsXMXXqVBBCsHr1aovvM5s5cyZWrFiBmJgYKBQKLF68GLa2tuYO6xF0tjhFUSbTIS+p\\nKIoyD5pwKIoyGZpwKIoyGZpwKIoyGZpwKIoyGZpwKLNYvnw5Ro8ejePHjze5v3v37k1uHzVqFPLy\\n8owZGmVEHXIcDmV+3333HdLS0sDlcs0dCmVCNOFQJvf666+DEIKIiAi89NJLOHr0KBgMBgIDA7Fq\\n1SrtvDEAqKysxJIlS1BUVAR/f3+LHK5P6Y9eUlEmp5lY+NFHHyE5ORnx8fE4duwY+Hw+tm3bpnPs\\n1q1b0atXLxw7dgwvv/wyysrKzBEyZSA04VBmc/HiRYwcORKOjo4AgKioKJw/f17nmP/9738YN24c\\nAGDgwIHw8fExeZyU4dCEQ5mNWq3W+ZkQAqVSqbONwWCg8ewbS5/TRLWMJhzKbAYNGoSTJ0+isrIS\\nAHDo0CEMHjxY55ghQ4bgyJEjAIC0tDTcv3/f5HFShkMTDmU2PXr0wLx58xAbG4uxY8eiurr6kcJi\\nb775Jh48eICXXnoJu3fvppdUVo7OFqcoymRoC4eiKJOhCYeiKJOhCYeiKJOhCYeiKJOhCYeiKJOh\\nCYeiKJOhCYeiKJOhCYeiKJP5f0FC+5y71xFQAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# The property .fitted_nuisances is a dictionary of the form:\\n\",\n                \"# {'name_of_nuisance': [fitted_model_fold_1, fitted_model_fold_2, ...]}\\n\",\n                \"# then we can access all properties of each of the fitted models for each fold.\\n\",\n                \"# If for instance all nuisances have a linear form we can look at the standard deviation\\n\",\n                \"# of the coefficients of each of the nuisance model across folds to check for stability\\n\",\n                \"try:\\n\",\n                \"    nuisance_diagnostic(cate, 'model_T_XZ', 'coef', lambda ns: ns.coef_.flatten(),\\n\",\n                \"                        [c+\\\"_0\\\" for c in X_df.columns] + [c+\\\"_1\\\" for c in X_df.columns])\\n\",\n                \"    nuisance_diagnostic(cate, 'model_T_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(cate, 'model_Y_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 129,\n            \"metadata\": {\n                \"collapsed\": false,\n                \"scrolled\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAe0AAAFXCAYAAACP5RboAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8XGW9+PHPObNPZpLMTCZpui/Q\\nDYRC1WspFYsCVwSLFgSuFpSi96Ui/kARqoilbAWRrReqIl6Uqy/QImhR2evCTltaum90b5NJMjOZ\\n/cxynt8fJ5kkbSltlial3/dfmeWcec6ZyXznec73+T6aUkohhBBCiAFP7+8GCCGEEOLQSNAWQggh\\njhIStIUQQoijhARtIYQQ4ighQVsIIYQ4SkjQFkIIIY4SErSPEbt27WLChAnMmDGDGTNmcP7553PJ\\nJZfwt7/9rfyc+++/n6effhqAP/3pT3zqU59i9uzZ7N27l/POO48ZM2bwzjvv9NchHLIZM2aQSCT6\\n7fXf79wtXbqUq6+++qDbdn4PuuPdd9/lpptuOqxtzjzzTFatWnVY2+zcuZPvfOc7h7XNQLNq1SrO\\nPPPMD3zerFmzePbZZwFYuXIlM2fO5LOf/SyXX345kUikz9p3yimnsGvXrj7bf7tnn32WWbNmfeDz\\n9v2cKKW4/vrreeSRR/qyeWIf9v5ugDhy3G43f/7zn8u3d+/ezVe/+lVsNhvnnHMO3/3ud8uPPf30\\n01xzzTXMmDGDp59+mpqaGh599NF+aPXh63yM/eFg5+6jH/3oQbft/B50x+bNm2lsbOzRPg7Fnj17\\n2Lp1a5+/zkCSz+e5+uqrueeee5g8eTK///3v+dGPfsTDDz/c30074rZs2cLNN9/Mu+++y9ixY/u7\\nOccUCdrHsCFDhnD11VfzyCOPcM4553DDDTdw/PHH09jYyKpVq9i1axexWIxHH32UZDLJrFmzeOyx\\nx3j55ZdZuHAhhUIBt9vN9ddfzymnnMKCBQtYsWIFkUiEcePGcffdd7Nw4UKef/55TNNkyJAh/OQn\\nP6Guro5Zs2YxadIkli9fzt69e5kyZQq33HILuq6zZMkS7rvvPkzTxOv1cvPNNzN+/HiWL1/O3Xff\\nTTabRdd1rrrqKqZPn77fcY0bN47XX3+df/zjH7zwwgvous727dtxu93ceeedjBkzZr9tfvGLX/DU\\nU09ht9sZMWIE8+fPx+/38+CDD/LXv/4Vm83GqFGj+PGPf0w4HCaZTHLbbbexceNGCoUCU6ZM4Qc/\\n+AF33XXX+567q666iltuuYVnnnmGdDrNrbfeyvLly7HZbHzmM5/hmmuuYc6cORx//PHMnj2bLVu2\\ncNtttxGPxymVSsyaNYsLL7yQN998k3vvvZdhw4axadMmisUiN998M4MHD+aBBx4gmUwyZ84cbrzx\\nRubMmcP27dvRdZ0TTjiBefPmoev7D7D9/ve/Z/369eTzeb72ta9x4YUXAhzwvT7ppJO48cYbaWxs\\nZPbs2bhcLqZPn85FF13EO++8wyWXXMKLL77IsGHDeOihh0in01x33XXd+ix0NmvWLE444QRWrFhB\\nNBrlS1/6Es3Nzbz11ltks1nuu+8+xo0bR0NDA3PnzmX37t0opbjgggu48sory8f5m9/8Bp/Pt1+w\\neb/2tVu1ahU+n4/JkycDcOGFF3L77bcTi8UIBAJd9vXzn/+cl156iVwuRzab5frrr+ess85iwYIF\\n7N69m6amJnbv3k1dXR0//elPqa2tZenSpdxyyy1omsZHPvIRTNM84P/tmWeeyXnnnccbb7xBa2sr\\nV155JcuXL2fNmjXY7XYWLlxIXV0dmzZtYt68ecTjcTRN44orruCCCy4ArBGdxYsXU11dzYgRI8r7\\nzufz3H333bz99tuUSiUmTpzIjTfeiM/n69KG3/3ud1x00UUMHjz4gG0UfUiJY8LOnTvVpEmT9rt/\\n48aN6uSTT1ZKKXX99derX/3qV0oppb7yla+ov//970oppZ588kn1jW98Qyml1NatW9V5552notFo\\nefupU6eqdDqtHnjgAXXOOeeoQqGglFLqqaeeUv/v//2/8u3HH39cXXnlleX9X3311apUKqlkMqlO\\nP/109frrr6umpiY1efJktWbNGqWUUs8995yaPXu2isfj6uyzz1Y7d+5USinV0NCgPvnJT6rdu3fv\\nd0xjx45VLS0t6sknn1STJ09We/fuVUopNW/ePPWDH/xgv+e/+OKL6uyzz1bxeFwppdTtt9+uHnro\\nIbVo0SJ18cUXq3Q6rZRS6oEHHlBXXHGFUkqpG264Qf32t79VSilVLBbV97//ffXLX/7yoOfujTfe\\nUJ/73OfKr3HNNdeoYrGoDMNQX/7yl9Ubb7xRfg8KhYI699xz1erVq5VSSiUSCfXZz35WvfPOO+qN\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x396 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"try:\\n\",\n                \"    for i in range(N_SPLITS):\\n\",\n                \"        plt.plot([c0 - c1 for c0, c1 in zip(cate.fitted_nuisances['model_T_XZ'][i].model0.coef_.flatten(),\\n\",\n                \"              cate.fitted_nuisances['model_T_XZ'][i].model1.coef_.flatten())])\\n\",\n                \"    \\n\",\n                \"    plt.title(\\\"Difference in coefficients betwen model0 and model1\\\")\\n\",\n                \"    plt.show()\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DRIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 130,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# If we want to fit an ATE, we simply fit a constant functin theta(X) = theta\\n\",\n                \"# We can do this with a pipeline where the preprocessing step only creates a bias column\\n\",\n                \"# and the regression step fits a linear regression with no intercept.\\n\",\n                \"# To get normal confidence intervals easily we can use a statsmodels linear regression\\n\",\n                \"# wrapped in an sklearn interface\\n\",\n                \"const_driv_model_effect = lambda: ConstantModel()\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=True)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 131,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\model_selection\\\\_split.py:652: Warning: The least populated class in y has only 8 members, which is too few. The minimum number of members in any class cannot be less than n_splits=10.\\n\",\n                        \"  % (min_groups, self.n_splits)), Warning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x222e1dcbef0>\"\n                        ]\n                    },\n                    \"execution_count\": 131,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 132,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\statsmodels\\\\regression\\\\linear_model.py:1554: RuntimeWarning: divide by zero encountered in double_scalars\\n\",\n                        \"  return self.ess/self.df_model\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>  -0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>  -0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>    -inf</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:53:02</td>     <th>  Log-Likelihood:    </th> <td> -5935.3</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.187e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2990</td>      <th>  BIC:               </th> <td>1.188e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th> <td>    0.0718</td> <td>    0.032</td> <td>    2.231</td> <td> 0.026</td> <td>    0.009</td> <td>    0.135</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>1560.900</td> <th>  Durbin-Watson:     </th>  <td>   1.967</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>3111172.573</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td> 0.819</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>160.992</td> <th>  Cond. No.          </th>  <td>    1.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                      -0.000\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                 -0.000\\n\",\n                            \"Method:                 Least Squares   F-statistic:                      -inf\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):                nan\\n\",\n                            \"Time:                        16:53:02   Log-Likelihood:                -5935.3\\n\",\n                            \"No. Observations:                2991   AIC:                         1.187e+04\\n\",\n                            \"Df Residuals:                    2990   BIC:                         1.188e+04\\n\",\n                            \"Df Model:                           0                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.0718      0.032      2.231      0.026       0.009       0.135\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     1560.900   Durbin-Watson:                   1.967\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          3111172.573\\n\",\n                            \"Skew:                           0.819   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     160.992   Cond. No.                         1.00\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 132,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n                \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n                \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n                \"const_dr_cate.effect_model.summary()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"#### Some diagnostics of the fitted nuisance models across folds\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 133,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Model prel_model_effect max std of coefs: 0.08861170536431623\\n\",\n                        \"Model model_TZ_X max std of coefs: 0.1551255726963632\\n\",\n                        \"Model model_T_X max std of coefs: 0.07953278250754123\\n\",\n                        \"Model model_Z_X max std of coefs: 0.014391208119373949\\n\",\n                        \"Model model_Y_X max std of coefs: 0.026554847406610734\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# The property .fitted_nuisances is a dictionary of the form:\\n\",\n                \"# {'name_of_nuisance': [fitted_model_fold_1, fitted_model_fold_2, ...]}\\n\",\n                \"# then we can access all properties of each of the fitted models for each fold.\\n\",\n                \"# If for instance all nuisances have a linear form we can look at the standard deviation\\n\",\n                \"# of the coefficients of each of the nuisance model across folds to check for stability\\n\",\n                \"try:\\n\",\n                \"    [print(\\\"Model {} max std of coefs: {}\\\".format(name,\\n\",\n                \"                                                  np.max(np.std([ns.coef_ for ns in nuisance_insts], axis=0)))) \\n\",\n                \"     if hasattr(nuisance_insts[0], 'coef_') else None\\n\",\n                \"     for name, nuisance_insts in const_dr_cate.fitted_nuisances.items()]\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 134,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAARAAAADdCAYAAABzCy3LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xd8VFX6+PHPlPTKhDSBFEBaIkVA\\n+qoUl+aCggRQirjYv7qArIILqCxi+4kCIi66oqzSQQUFFkEEFkFRaqiBdJKQ3suU8/sjZEggZTKZ\\nycwk5/168WIyc+feZy7hmXPPPec8CiGEQJIkyQxKWwcgSZLjkglEkiSzyQQiSZLZZAKRJMlsMoFI\\nkmQ2mUAkSTKbTCA3PPXUU2zbtq3WbY4dO8bo0aNr3eabb75hzJgxjBkzhnvuuYdBgwYZfz5+/Div\\nvvqq8ecxY8bw4IMP0rFjR7799tta9/viiy/ywgsvVHnus88+Y/LkyWi1WtM+pAVVPl9jxowhLy+v\\nxm3z8/OZOnWq8efBgwfz5z//mc2bNxufS0lJYdCgQWRlZRmf279/P/fcc0+V81VQUADAli1bGDly\\nJA888ACLFi0ynoPCwkJefPFFRo8ezciRI/nss88AWLZsGffddx9PPfVUjXFmZWXRtWtXFi1aZMYZ\\nsZ6kpCQ6d+5c5TyMGTOGDz/8sNb3rVixgjfeeKPa13r06EFSUlKDY1M3eA9SFWPHjmXs2LEAvPLK\\nK9x555088cQTxtd79epVZfuFCxfi4eHBiBEjat3vkiVLGDduHGvXrmX69OkcPnyY//znP2zevBkn\\nJyfLf5B6qCv55ebmcubMmSrPvffee9x1111AedJdvnw5169fr7LNiRMnmDFjBk8//XSV5y9dusSK\\nFSvYvn07vr6+vPTSS6xdu5aZM2fy73//G1dXV3bu3ElBQQGjRo2id+/ezJo1i9DQUPbs2VNjnFu2\\nbGHIkCHs3LmTWbNm4evrW5/TYFWurq51nmdbcMgEcuzYMd5//32Cg4OJjY3Fzc2NJ598knXr1hEb\\nG8sDDzzA/PnzAdi4cSPr1q1DqVTSsmVLFixYQHh4OGlpabzyyitcv36dO+64g8zMTOP+r1y5wpIl\\nS8jJyUGv1zNlyhTGjx9v8c+xdu1aDh48yJYtW3B2dq51W09PT5YvX86jjz5KcHAwixcvZtWqVbRs\\n2RKAffv2sWHDBtasWXPbe7t06cLMmTM5dOgQRUVFzJ49mwceeIBt27axZcsWiouL8fT0ZN26dWze\\nvJn169djMBjw9fVlwYIFtGvXrtbz1bFjR3755Rc0Gg2ffPIJ27dvR61WExoayltvvcW8efMoKSlh\\nzJgxt7Xy0tLS+PHHH/nss88YPnx4lddOnDiBWq3mhx9+wNPTk1mzZtG7d2/27dvH4MGD0Wg0AERF\\nRfHPf/6TmTNnotfrKSwsRKfTUVpaisFgqPPcAhgMBjZu3MiiRYsoKipi06ZNPPnkk8bXq/tce/fu\\nve38ffTRR3z//feoVCrCw8NZsGAB/v7+/Pe//+Xjjz9GoVCgUqn4+9//Tu/evWt8vj5+/PFHVq5c\\nicFgwMPDg3nz5tG1a9cq2xw/fpzFixejUCi46667MBgMQHmLbd68ecTHx6NUKomIiOCNN95AqTTx\\n4kQ4oKNHj4rOnTuL6OhoIYQQTzzxhIiKihKlpaUiMzNTREREiNTUVHHkyBExdOhQkZmZKYQQYuvW\\nrWLEiBHCYDCIZ599VixbtkwIIURcXJzo3r272Lp1q9BqtWLkyJHi7NmzQggh8vLyxIgRI8SJEyfE\\n0aNHxahRo0yO8+WXXxaffvppta8dPnxY3H333eLcuXP1+uwbNmwQHTp0EF9++aXJ7+nQoYP4+OOP\\nhRBCnD9/XvTs2VNkZmaKrVu3it69e4v8/HwhhBDHjh0TkydPFkVFRUIIIQ4dOiSGDx8uhBA1nq+K\\n/WdmZooff/xRPPDAAyInJ0cIIcSbb74pVq1aJRITE0X37t2N8dx///3i9OnT1cZZ8W8lhBDPPfec\\n2LVrlzAYDOK3334T99xzj0hJSRELFiwQn3zyiXG7uLg40bt3byGEEPn5+WLs2LGib9++IjIyUixd\\nutS43datW8WTTz5Z7Tk6cOCA6N+/v9BqteKHH34QgwYNElqtVgghavxct56/LVu2iKioKFFYWCiE\\nEGL58uVixowZQgghhgwZIk6cOGE8rytWrKj1+coSExNFp06dxF/+8hfjn4ceekgIIURMTIzo37+/\\nSEhIEEIIceTIETFgwACRn58vli9fLl5//XVRWloq+vfvL44cOSKEEGLHjh2iQ4cOIjExUWzfvt0Y\\no06nE6+++qqIi4ur9hxVxyFbIACtW7emS5cuAISEhODl5YWzszMajQYPDw9yc3M5dOgQI0eONH5T\\nPfzwwyxZsoSkpCSOHDnCyy+/DEBoaCh9+vQBIC4ujoSEBGMLBqCkpIRz587Rrl07i8QeFxfH7Nmz\\nWbp0KZ07d67Xe48ePYq/vz8HDhzg0UcfNfmb4rHHHgOgU6dOdOjQgd9++w0obz14enoCcODAAeLj\\n45k4caLxfXl5eeTk5NR4vir75ZdfGD58OD4+PgDMmzcPwOxr7ZUrVxof9+rVix49evC///0Pccvs\\nCyGE8Ty88cYbDBgwgNmzZ5ORkcHjjz9Ojx49+POf/1zrsdavX8+DDz6IWq1myJAhLFq0iN27dzN6\\n9OgaP9e2bduqnL+DBw/y8MMP4+7uDsDUqVNZvXo1ZWVljBo1iueff557772XAQMGMHPmTIAan79V\\nTZcwR48epW/fvrRp0waAfv36odFoOHv2rHGbS5cuoVar6devHwCjR49m4cKFAPTs2ZNly5YxZcoU\\n+vfvz7Rp0wgNDa31XFXmsJ2otzZL1erbc2FFM60yIQQ6nQ6FQlHlF7Hi/Xq9Hi8vL7799lvjn02b\\nNjFu3DiLxJ2fn88zzzzDtGnTeOCBB+r13jVr1nD16lW+++47UlJS+Oijj0x+r0qlMj42GAzGnyt+\\n2SueHzNmjPFzb9++na1bt+Lj41Pj+br1GAqFwvhzXl6e2ckjLy+P1atXVzmmEAK1Wk1wcHCV/pLr\\n168TFBQEwN69e4mKikKpVBIQEMDw4cM5duxYrcdKTk7m559/5vvvv2fw4MEMHz4cnU7H2rVr6/xc\\nt56/ytsZDAZ0Oh0As2bN4uuvvyYyMpJt27bx6KOP1vq8qW49ZsV5qjhu5ecqq/j3a9OmDXv37uXJ\\nJ5+koKCAxx9/nP3795t8fIdNIKYYNGgQP/zwg7Fnf+vWrfj6+hIaGsqgQYPYuHEjANeuXTP+koWH\\nh1fJ9ikpKYwePbpKRjeXwWBg9uzZdOnShWeffbZe7z1y5AiffvopK1asQKPRsHz5cj7//HMOHTpk\\n0vu/+eYbAKKjo4mNja32OnvgwIF8//33xv+c69evZ9q0aQA1nq/K+vfvz969e413SlasWMHatWtR\\nq9Xo9frbfolr4+HhwVdffcV///tfAM6dO8fp06cZNGgQgwcPZv/+/WRmZiKEYOPGjQwdOhQo7+/Z\\ntWsXAEVFRRw6dIhu3brVeqyNGzfSs2dPDh06xP79+9m/fz/btm3j3Llz/PHHHzV+rlsNGjSIrVu3\\nUlRUBMC6devo3bs3SqWSwYMHU1xczKRJk1i0aBEXL16krKysxudN1a9fPw4fPkxiYiJQ3gpMSUmp\\n8pk7duyIEIKff/4ZKO8vy83NBeDrr79m3rx5DBw4kLlz5zJw4EDOnTtn8vEd9hLGFAMGDGD69OlM\\nmzYNg8Fg7ORTKpUsWrSIefPmMWLECIKCgujUqRNQ3rJZtWoVS5Ys4dNPP0Wn0/Hiiy/Ss2fPOr/J\\n6vLHH39w8OBB2rVrx5gxY6q8NmHChBq/fZKSkpg9ezZLliwhJCQEgPbt27Nw4ULmzp3L9u3bOXfu\\nXI2dqBXH3rRpEwaDgWXLlhmb45UNHDiQmTNnMmPGDBQKBZ6enqxcuRKFQlHj+ars3nvvJSYmhkmT\\nJhljXLx4MW5ubnTt2pVRo0bx1VdfmXSuVCoVq1at4p///CcrVqxApVKxbNkyNBoNGo2G5557jmnT\\npqHVaunWrZux6f/222/zxhtv8M0336BUKhkxYsRt57qysrIytmzZwptvvlnl+bCwMEaNGsXatWtZ\\nvnx5tZ+rIrlVGD9+PCkpKTzyyCMYDAZCQ0N57733UKvVzJ8/n5deegm1Wo1CoeDNN9/E2dm5xudN\\n1b59exYtWsTzzz+PXq/H1dWV1atX4+XlZdzGycmJjz76iNdee43333+fzp074+fnB5TfNfz1118Z\\nOXIkbm5uBAcHM2XKFJOPrxD1+VqQHFLluyT2YPDgwXz44YfG27iNZdu2bezZs4dPPvmkUY/blDXp\\nFoi1fPrpp+zYsaPa15544gn+8pe/1HufR48eZenSpdW+1qdPnyqduk3BSy+9xF//+lceeeSRRjne\\nsmXL+Pbbb+nYsWOjHK+5kC0QSZLM1qQ7USVJsi6ZQCRJMptMIJIkmc1hOlHT0/NN2q5FC3eys4us\\nHI1lOWLM4Jhxy5jrz9/fq8bXmlwLRK1W1b2RnXHEmMEx45YxW1aTSyCSJDUemUAkSTKbTCCSJJlN\\nJhBJksxmtbswZWVlzJs3j8TERDw9PVm4cCFhYWHG13fu3MkXX3yBSqWiQ4cOvPbaa6avgiRJduRk\\nTAbnYrOYOPROlLdMrW/qrPY/dtOmTbi7u7Np0yb+8Y9/sHjxYuNrJSUlfPDBB3z55Zds2LCBgoIC\\nfvrpJ2uFIklWo9MbWLfnIj/+nsS19EJbh9PorJZAYmJi+NOf/gRA27ZtuXLlivE1Z2dnNmzYgJub\\nGwA6nQ4XFxdrhSJJVvP7xXSy80sBiEs1baxSU2K1S5jOnTvz008/MXToUE6dOkVaWhp6vR6VSmVc\\n4BjKF10pKipiwIABte6vRQt3k++H1zbwxV45YszgmHFbMuYDJ08YH6fllljtfNjrebZaAhk3bhxX\\nrlxh6tSp3H333URERNy2rN67775LbGwsK1asuG1ZtluZOhLP39/L5FGr9sIRYwbHjNuSMV9JzuVi\\nQjaR4RrOx2dzPjbTKufD1ue5tuRltQRy5swZevbsyfz58zlz5gwJCQlVXl+4cKFx9S/ZeSo5or3H\\ny5cRHNE3lPwiLYnXC9DpDahVzef32WoJJDQ0lA8//JB///vfeHl5sWTJEnbs2EFRURGRkZFs2bKF\\nXr16GdfcnDp1KsOGDbNWOJJkUVl5JRy/kE5rf086hfgSGuRFfFo+1zIKCQm0z8sNa7BaAtFoNLct\\nPPvggw8aH1+4cMFah5Ykq9v3RxIGIRjWuzUKhYKwYC8OnirvSG1OCaT5tLUkyUJKy/QcPHkNL3cn\\n+nYJBCA8yBtofndiZAKRpHo6Ep1KYYmO+3u0wunGncFW/h6oVQriU2suMt4UyQQiSfVgEIIfjyei\\nUiq4v0cr4/NqlZLW/p7GjtTmQiYQSaqH6NgsUjKL6NMlEB/PqoMfw4K90ekFyc1oRKpMIJJUD3t/\\nK791O6xXm9teCwsq7zyNa0aXMTKBSJKJkjMKORubRYc25bdtb3UzgTSfjlSZQCTJRPuO19z6ALij\\npQdqlZK4FJlAJEmqpKBYy5GzqbT0caXHnS2r3UatUhIS6ElSegFaXfPoSJUJRJJM8PPJZMp0Bob2\\nbI1SWfO8rbAgL/QGQVJ6QSNGZzsygUhSHXR6A/v/SMbFWcXArnfUum1oM+sHkQlEkupQsebHoLuC\\ncXetffaHcURqSvO4EyMTiCTVYe/xRBTAkF6t69w2uKU7zmqlbIFIklS+5sfVa3l0a9+SwBbudW6v\\nUioJCfTiWkYhZVp9I0RoWzKBSFItKtb8GNa7+lu31Qm90ZGa2Aw6UmUCkaQa3Lrmh6mMA8qawXgQ\\nmUAkqQa3rvlhqrDg8o7U+GbQDyITiCRVo7o1P0wVrHHHxUnVLObEyAQiSdWobs0PUymVCkICPUnO\\nKKS0iXekygQiSbeoac2P+ggL8kYISExr2h2pMoFI0i1qW/PDVGHBzWNqv9USSFlZGXPmzGHChAnM\\nmDGDuLi4Kq/v37+fcePGERUVxaZNm6wVhiTVW21rfpiquUztt9qq7JVr4169epXFixfz2WefAaDV\\nalm6dClbtmzBzc2NSZMmcf/99+Pv72+tcCTJJHWt+WGqQI07Ls6qJp9AbFIb98qVK4SEhODj44Oz\\nszM9e/bk+PHj1gpFkkxW15ofplIqFIQFepGSUUhJmc4Sodklm9TGLSgowMvrZnb38PCgoKD2ziZZ\\nG9c+OWLcNcWcV1jGkeg0AjTuDOsfjqqWafum6NzWj4uJOeSVGmjTqmHnyV7Ps01q43p6elJYeHPh\\n2cLCwioJpTqyNq79ccS4a4v5+1/iKNPqGdz9DrIyG373JMCnvAP25IU0Aryczd6Prc9zbcnLapcw\\nFbVx161bx9ChQ2nT5maTsF27dsTHx5OTk0NZWRnHjx+nR48e1gpFkupUnzU/THWz2FTTvRNjk9q4\\nUVFRvPLKKzzxxBMIIRg3bhyBgfUb7SdJllSx5sfQnq3rXPPDVP4t3HBzUTfpIe02q407ePBgBg8e\\nbK3DS1K91GfND1MpFQpCAz25mJBDcakONxer/XezGTmQTGr26rvmR32EBXsjgIS0ptkKkQlEavbM\\nWfPDVBUDymLtbGr/wVPXeOWTXygubdgtZplApGbN3DU/TGWc2m9nLZCf/kgmM7ekwfuRCURq1vb/\\nkWzWmh+m8vdxxcNVbVeLLGfnlxKflk/HEN8G98vIBCI1W6VaPT+fTDZrzQ9TKRQKQoO8SMsupqhE\\na5Vj1NepmAwAurWvvkBWfcgEIjVbv5w1f82P+ggLsq8Vyk7eSCDdZQKRJPMYhGBvA9f8MJVxZq4d\\n9IOUavWcj8+mVUsP/H3dGrw/mUCkZumcBdb8MJU9LbJ8Li4Lrc5gkcsXkAlEaqb+a6FZt6bw83HF\\n083JLoa0V/R/dK+hQHh9yQQiNTvXMgo5e7Xha36YSqFQEBbkRXpOCYU27Eg1CMHJmEy83J1oe+P2\\nckPJBCI1Oz/+ngQ0Tuujgj0U3Y5LySevsIyu7fxQNnCpggoygUjNSn5RGUfOpNDSx5UeFmrGmyLM\\nDopuW/LuSwWZQKRmZc/ReMp0Bob2bG2xb2FThAfbvgVyKiYDtUpBRLjGYvuUCURqNnR6A98fvmrR\\nNT9M1cLLBW93J5uNBcnMLSHxegGdQlrg6my5WcFNb36xZDIhBFqdgZIyPSVluht/33xcXHr7cyVl\\nekpKdQhgyqgu+Lk72fpjmOyPS+lk5JZYdM0PU5WPSPXmzNVM8ovK8HI3f4Uyc5y6YrnRp5XJBNKE\\n/XEpnROX0mtJEHoMQpi9/9f+9QtzJ/UgJNA+1+u81d7fElEoLLvmR32EBXlx5mom8an5RLb1a9Rj\\nW6P/A2QCabKEEKzddYGC4pu3DVVKBa7OKlyd1fh6uRDkV/64/Lnyx24utz9X+W83l/K/T8Zk8OnO\\nc/y/jSeZ91hPgjSWXUfD0n76I4kr1/LoExFk8TU/TFVRbCq2kRNIcamOC/HZtAnwxM/H1aL7lgmk\\niUrNKqKgWEvPjv5M+XNH3JxVqFVKi8047RcRhNpZzcdbT/PehhPMf6wnGm/L/nJayk8nkln330t4\\nuzsxfXQXm8Vhqzkx5+Ky0OmFxS9fQHaiNlmXk3IB6BLaAm93Z5zUKotPVx/ZP5xx97YlK6+U9zac\\nJK+wzKL7t4QDJ5JZt+ci3u5OzJ3Ug9YBtrvc8vV0xsfDudFHpFrr8gVkAmmyLiflAHBna8svklPZ\\nyL6hDO8TQmpWEe9vOklRif0UUTpwIpkv91zE60byaOXvadN4KkakZuWVNlqyNRgEp69k4uPhbLyE\\nsiSrJRCtVsucOXOYOHEikydPrlKZDuC7777joYceYty4cXz99dfWCqPZiknKxc1FzR3+HlY9jkKh\\n4JH72vGnbneQkFbAh1tOUarVW/WYpqicPP5uB8mjQsUKZY01HuRqSh75Rdry0adWWDDJpASya9cu\\nysrqlzF//vlndDodGzZs4LnnnuODDz6o8vo777zD559/zvr16/n888/Jzc2t1/6lmuUWlpGWXUy7\\nVt5W+aW5lUKhYOqfO9K7UwCXk3JZtf0sOr3B6setyYGT9pk8oPKQ9sa5jDllxcsXMDGBHDx4kOHD\\nh/P6669z+vRpk3YcHh6OXq/HYDBQUFCAWl21v7Zjx47k5+dTVlaGEMIqy8k1VzE3+j+sfflSmVKp\\nYOaDXYhsq+HM1Uw+3XkOg8H8W8TmOnAymS9322fygMaf2n8yJgMntZIuYZYbfVqZSXdhli5dSklJ\\nCXv27GHFihVkZmYyatQoxo4di59f9bej3N3dSU5OZsSIEWRnZ7N69eoqr995552MGzcONzc3hg0b\\nhrd37bMDZW1c0yX/Eg9A74hgq5+LW/e/aGY/Fv3rF349f50WPm48N75bo3057P4lji93X8TH05kl\\nTw8gtIYZp7b8/fD398LPx5WE6wX1isOcmFMzC0lOL6RX50Bat7LOl4nJt3FdXV1p1aoVwcHBxMfH\\nc/HiRaZPn05UVBSPPfbYbduvXbuWgQMHMmfOHFJSUpg2bRo7duzAxcWFCxcucODAAfbt24e7uztz\\n585l165djBgxosbjy9q4pjt9OR2VUkELd7VVz0VNcT87JoJ3vj7BnqPxKBE8cl97q8VQoXLLY05U\\nd9zVimpjs4ffj5AAT05czuBybAa+JixmZG7M+2+sedIlxLdBn7nBtXGXLVvGkCFDWLFiBb169WLH\\njh288847rF+/nhUrVlT7Hm9vb2PBbB8fH3Q6HXp9eeeal5cXrq6uuLi4oFKp0Gg05OXZfrGVpqBU\\nqyc+NZ+QQC9cnKy3zmdt3F2dmB3VnUCNO7uOJvD9L3FWPd7PN5KHp9uNW7V2dtlyq8aa2m/JxZNr\\nYlILRKlUsnbt2ioFsgE8PT1Zs2ZNte+ZPn068+fPZ/LkyWi1WmbNmsW+ffuMtXGjoqKYPHkyTk5O\\nhISE8NBDDzX800jEpeShNwjubO1j0zi8PZx5Kao7S7/6na0/X8Xd1ckqa4/+fDKZL24kj79Ptv/k\\nAVWn9lurc7O4VMfFhBxCA71o4WW9JRtNSiAxMTG3JY9p06bxxRdf0LVr12rf4+HhwYcffljjPidN\\nmsSkSZPqEapkisvGDlTbJhAoX8rvpYk9WPqf3/nPnou4uajo2yXIYvt3xOQBNztSrTki9WxsFnqD\\noFt76w6ZrzWBPP/885w/f57r168zZMgQ4/N6vZ7g4GCrBiaZpyKBtG/EOzC1CdK4M3tCd95Z/wef\\n7TyPm7PaIk3qg6eu3UweDnDZUpm3hzMabxfiUvOtdgfy5GXLrn1ak1oTyFtvvUVOTg6vv/46r732\\n2s03qdU13n2RbMcgBDHJuQS0cMPHo3Gni9cmNMiLF8d34/2NJ1n1zVlmT+hGx5AWZu/v4KlrrN11\\n4WbyCHCc5FEhLMibPy6lk1NQZvFLDINBcOZqJr6ezoRaeaZ0rQnE09MTT09PMjIyaNXKurUzrEEI\\ngd5QvuaFTm+4+bdeoLvxuPxnAzqdMD6u2E6nu/Gavvy1yHBNg37xre1aeiHFpTrubsSl+kzVoY0v\\nzz18F8u3nObDLaf5++Qexr6A+qicPOY6aPKA8suYPy6lE5eSRwsvf4vuOyY5l4JiLfd1v8Pqt9BN\\n6gNp2bIlx48fp2vXrjg72883260uJmTz99W/UFhchvZGQrCkI2dTee/Z/nY76O1y8o3+jzb2cfly\\nq7va+jHzwS588m007288xbzH7ibYz/Sh9rcmjzYOmjzg5tT+uNR8enSwbAI52Qh3XyqYlEDOnDlj\\nHOuhUCiM123nz5+3anD1pVYp8fZwNk5dd1IpUKuVNx4rbzxWGB87qcpfu/lYUfV5lRIndfn2u39N\\n5MzVTFIyi7ijpXXnl5irYgJd+1a270CtyT2dAyku1fHF7ou8t+Ek8x67m5Y+dVdIa0rJAyrdibFC\\nR+qpmAyc1Uo6h1q/tWxSAjl69Ki147CIdq18+HD2fVYZKJSRV8KZq5mcjc2y2wQSk5SLp5sTwX72\\nvbjPvd1bUVSqY/NPV24kkZ619tkcOnWNL5pQ8gDwdHOipY8rcal5Fu1ITcsuIiWziO7tW+LcCOOA\\nTBpIVlZWxurVq3n55ZcpKChg5cqV9Z5c5+gibswliI7NsnEk1cvOLyUjt4T2rXzs9hKrshF9QhnV\\nL5Tr2cX8vw0nayy4dOhGy8OjCSWPCmFBXuQXacnKK7XYPk810t2XCiYlkDfeeIOioiKio6NRqVTE\\nx8czf/58a8dmVzTerrRq6cHFhGy0OttPV7+V8fLFDsZ/mOrhP7Xl/rtbkZRewAebT1FaVvW8Vk4e\\nL03s3qSSB1hnRGpF/0fXdo1zl9SkBBIdHc3s2bNRq9W4ubnxzjvvcOHCBWvHZnciwjWU6QzGsRb2\\nJMaOBpCZSqFQ8OiwDvTtEsiV5DxWbj+DVlfe8X1r8nCUhZvr4+baIJaZxlFUouVyUi7hwV4mzbGx\\nBJMSiEKhoKyszNg0zs7OdohmsqVVFOSxx8uYy0m5qFUK4yhHR6FUKJgxqjPd2vkRHZvFv3ZEGztM\\nm3LygEpT+y3UAjlztXz0qbWGx1fHpAQydepUHn/8cdLT01myZAnjxo1j2rRp1o7N7nRo44tapeSs\\nnSWQ4lIdCdfzCQv2xsnEJQ/siVql5JmxkXRs48vvF9NZu+sC7q7qJp08ADxcnQjwdSP+xojUhmrM\\n27cVTLoLM3bsWCIjIzl27BgGg4GPP/6YTp06WTs2u+PipKJDGx/OxWWTW1CKTyM1E+tyNSUPIeBO\\nO759WxdnJxUvjO/K+xtPcj2nmDlRTTt5VAgN8uK3C9fJzC2hpW/dt7NrotMbOHMlE423S6P2FZmU\\nQLRaLYcPH+bo0aOo1WpcXFzo2LFjs7yMiQz341xcNufisukXabmJYQ1hixXIrMHNRc28KT3R6w0O\\n2ZIyR1hweQKJS81vUAKJScqlqFRHn4jARv1/adIlzD/+8Q9OnDjBhAkTGDt2LIcOHeLNN9+0dmx2\\nqaIf5Gxspo0juckR78DURKlOhE0hAAAS1klEQVRQNJvkATcHlMU2sCPVmqUbamNSC+TUqVPs3r3b\\n+PPgwYMZPXq01YKyZ639PfDxcCY6LhuDEI2yaHFt9AYDV67lEeznjqeb49SplcpVTHZr6NT+UzEZ\\nuDip6BTSuK1Qk1ogrVu3Jj4+3vhzRkYGgYGBVgvKnikUCiLCNeQVlpF0vcDW4ZB0vZDSMr1D3b6V\\nbnJ3VRPYwo24FPM7UlMyC0nLLiYiXNPorTeTWiA6nY4xY8bQq1cvVCoVv//+OwEBAUydOhWAL7/8\\n0qpB2puIcA1HzqYSHZtl846+m/NfHLv/ozkLC/bm2Lk00nOKCTCjbu+pmPLL6ca+fAETE8izzz5b\\n5ecnnnjCKsE4ioph7WdjsxjRN9SmscQYZ+DKFoijCgvy4ti5NOJS881KICcvp6Og8UafVmZSArnn\\nnnv4+eefOXr0KDqdjj59+jB06FBrx2a3vD2cCQn05HJSDqVavc0WLxZCcDkpF2/38vEEkmOqPKDs\\nns716xooKNZyOTmXtq288bbBIlIm9YGsWbOGlStXEhwcTOvWrVm9ejUff/yxtWOzaxHhGnR6wcWE\\nHJvFkJlXQnZ+KXe29m2Wt9SbipBALxSUL7JcX2euZCKEbS5fwMQWyHfffcfmzZtxdXUFYMKECTz8\\n8MM888wzNb5Hq9XyyiuvkJycjFKpZPHixbRr1874+unTp3nrrbcQQuDv78+7776Li4t9DMwyRWSY\\nhl1HE4iOzbJJ0xEqr38qL18cmZuLmiA/d+LT8ut9Z88Wo08rM6kFIoQwJg8AFxeX20pV3qq22rhC\\nCBYsWMDSpUtZv349gwYNIjk52cyPYBvtW/vi7KQkOs52w9qbygAyqfwyprhUT3p2scnv0ekNnI3N\\npKVP+UxxWzApgfTt25f/+7//Y//+/ezfv5+//e1v9OnTp9b31FYbNzY2Fl9fX7744gsee+wxcnJy\\naNu2bcM+SSNzUivpFNKCaxmFZOWV2CSGy0k5OKuVhAQ2rWnuzVGoGQPKLiXmUFyqp1v7lja7hDXp\\nEubVV19l/fr1fPPNNwgh6Nu3L1FRUbW+p7bauNnZ2Zw4cYIFCxYQGhrK008/TWRkJP369atxf/ZY\\nG7dPZDCnr2SSkFFEx3YNW9eyvjEXFGtJzigkoq0fwUG2u4Rp7nWILaV7p0A27LvM9dzSauOr7rlL\\n/4sD4N6ebWz2mUxKIH/961/57LPPmDx5ssk7rq02rq+vL6GhobRvX14zddCgQZw9e7bWBGKPtXHD\\nAsqbjUfPXKN7W/Orn5sT85mr5Z1nYYGeNqv1ag91ZuvLXmP2dlGiUMC5q5m3xVddzEIIjpy+hquz\\niiAfF6vXQK6JSZcwxcXFpKSk1OugtdXGbdOmDYWFhcbRrcePH+fOO++s1/7tQZDGHY23C9GxWRgM\\nDZ+OXR9yAFnT4uqs5g4/D2NHal2uZRSSkVtCZFs/1CqT/htbhUktkKysLAYPHoyfn1+VOyX79u2r\\n8T111cZdsmQJc+bMQQhBjx49uO+++xr8YRqbQqEgIkzDodMpxKflEx5c/zon5opJykUBtG/VeMeU\\nrCs0yIvkjELSsorqLHdxc/KcbQu8mZRAPv74Y+NAMpVKxb333lvr5QbUXRu3X79+bNmypX7R2qHI\\ntn4cOp3C2disRksgOr2Bq9fyaOXvgburnEDXVIQFeXHkbCpxKfl1JpBTMZkoFNC1nW2LiJnU9lm9\\nejUnT55kwoQJPPTQQxw6dKjZzX+pSefQFiiA6KuNN70/Ia2AMp1B3r5tYirWSK3rTkxeURlXknNp\\n38rH5jOw5XT+BvJ0cyIs2Jsr1/IoLtXh5mLSKW2QprT+h3RTmwBPFIq6p/afuZKJwHajTyuT0/kt\\nIDJcg94guJCQ3SjHMw4gc+AlDKXbuTipaNXyRkdqLZ3yth59Wlm9p/Or1Wp+//13/P39m+10/ltF\\nhGvYcSSOs7FZ9LjTsnVOb1U+gS6HFl4u+Pm41v0GyaGEBXmTlF5ISmYhrfxvHyCo1Rk4G5tFQAs3\\nu6hAaNZ0/hkzZlglGEfV9g5v3FxUjVLu4XpOMXlFWnp3CpAT6JqgsGAvDp9JIS41v9oEcjEhm9Iy\\nPd272W70aWUmT+eXaqZWlQ9rP3E5g+s5xVadWu+IBaQk01WuVjfgruDbXrenyxcwsQ9EqltkIxWd\\nquhAlXdgmqY2/p6olIpqq9UJITgVk4Gbi9puvkBkArGQiLblA3qsn0BycXFW0TrANrMvJetyvtGR\\nmphWgN5gqPJaUnohmXml3NVWY9PRp5XZRxRNQICvGwG+bpyPz7rtH95SCoq1pGQW0e4Ob1RK+U/X\\nVIUGeVGmM5CSUXX+l61KN9RG/hZaUES4huJSPVevWaZY8q0q+j/ay9u3TVpNA8pOxWSgVCi4y0YL\\nWFVHJhALsnY/iLH/o43s/2jKqiu6nVtQytVreXRo44OHHU1fkAnEgjqFtkCpUFgvgSTnolBA20ac\\ntCc1vtY3OlIrj0g9daV8qoS93H2pIBOIBbm5qGnXypurKXkUlmgtum+tTk9cSh4hAV6NMlxesh0n\\ntZLW/p4kpBWg05f3p52yw/4PkAnE4iLDNQgB5+MsO6w9LjUfnV7I+S/NRFiwFzq9gWsZhZRp9UTH\\nZRGkcSdQY/vRp5XJBGJhEeHlHVyWLr4tB5A1L5X7QU7HZFCmNdhd6wNMHIkqmS4syAsPVzXRsVkI\\nISw23PiyXIG9WQm7schyXGo+aTnli3Z3s/HiQdWRLRALUyoVdAnTkJlXSmqWaeu41sUgBDHJufh5\\nu9LCy3Fq50jma+XvgVqlIDYlj1/PpeLhqrbLy1eZQKwgIvxm7VxLSM0soqBYK+vfNiNqlZI2AZ7E\\np+aTmVtC13Z+djl40P4iagIsPR7EWEBbDiBrViouY8D+bt9WkAnECjTergT7uXMhIRutruHD2i8n\\nygl0zVHFzFyVUkFkuP31f4AVE4hWq2XOnDlMnDiRyZMnc+XKlWq3W7BgAe+99561wrCZiHANZVqD\\nsfXQEJeTc3FzUXOHv5xA15xULNId2c4Pd1f7vN9htQRSW23cChs2bODSpUvWCsGmLHUZk1tYxvXs\\nYtq38qlX0WXJ8bX29+DRYR2YOeYuW4dSI6slkNpq4wKcOHGCU6dO1Vki01F1bNMCtarhw9pj5ALK\\nzZZCoWBIz9aE2vHUBau1i2qrjXv9+nVWrlzJypUr2bVrl0n7s8fauHXpEu7H6ZgMnFyd8a3j9mtN\\nMSf/Ur6Yde+IYLv5XJXZY0x1kTFbjtUSSG21cXfv3k12djZPPvkk6enplJSU0LZtWx5++OEa92eP\\ntXHr0rG1D6djMjj0ewJ9I4Jq3K62mE9dSkelVNDCXW03n6uCPZ1rU8mYzTt+TayWQLy9vXFyKp92\\nfGtt3KlTpxpXdN+2bRtXr16tNXk4qohwDZsPXCE6NqvWBFKTUq2ehLR8QgK9cHEyrfUlSY3Jan0g\\n06dPJzo6msmTJzNt2jRjbdyNGzda65B2p3WAJ97uTpyNKx/WXl+x1/LQG4Sc/yLZLau1QOqqjVuh\\nKbY8KigVCiLCNfwSnUZyeiGtA25fpr82l5PlBDrJvsmBZFbWkGHtN0tYygFkkn2SCcTKIsIqxoPU\\nb3q/QQiuJOcR0MINHw9na4QmSQ0mE4iV+Xi60CbAk4uJuZRp9Sa/71p6IcWlOjn/RbJrMoE0gohw\\nDTq9gUs3LklMIRdQlhyBTCCNwNgPctX0fpCKDlRZwkGyZzKBNIIOrX1wViuJjqtHAknMxdPNyS4q\\nsEtSTWQCaQROahUdQnxJTi8kO7+0zu2z8krIzCuhfSsfu6jALkk1kQmkkUSGmT47N0aO/5AchEwg\\njcRYfNuEy5iKBZTlDFzJ3skE0kju8HOnhZcL0bFZGOoY1h6TlItapTAu7S9J9komkEaiUCiICNNQ\\nUKwlIa3mmZXFpToSrucTFuyNk4nLF0iSrcgE0ogi29bdD3I1JQ8h5ALKkmOQCaQRdQ5tgYLaE4hc\\nQFlyJDKBNCIvd2dCg7y4nJRLSZmu2m0q7sDIDlTJEcgE0sgi22rQGwQXEm4f1q43GLiSnEewnzue\\nbk42iE6S6kcmkEYWUct4kKTrhZRq9XL8h+QwZAJpZO1a+eDirKp2fZCKyXay/0NyFDKBNDK1Sknn\\nkBakZRWRkVNc5bUYOYBMcjAygdhAxezcyqNShRBcTsrB292JAF83W4UmSfVis9KWO3fu5JFHHmHi\\nxIksXLgQg6HhNWQdRcV4kMqXMZm5JeQUlHFna185gU5yGDYpbVlSUsIHH3zAl19+yYYNGygoKOCn\\nn36yVih2J8DXjZY+rpyPy0Z/I3FelrdvJQdkk9KWzs7ObNiwATe38qa6TqfDxaX2ym1NiUKhIDJc\\nQ1GpjriU8mHtFRPoZAeq5EhsUtpSqVTSsmVLANatW0dRUREDBgyodX+OWNqyNv27t+LAyWvEphXQ\\nF4hLzcfZSUXPyGDUKsfpmnKEc30rGbPl2KS0JYDBYODdd98lNjaWFStW1Hnd74ilLWtzh68rSoWC\\nX6NTefBP7YhPyaNjiC/ZWYW2Ds1kjnKuK5Mxm3f8mtiktCXAwoULcXZ2ZtWqVSiVjvONaynurk60\\nvcObq9fy+P18GgLZ/yE5HoUwp+aiCQoLC5k/fz7p6elotVpjLdyioiIiIyMZN24cvXr1MrY8pk6d\\nyrBhw2rcn6kZ2NbZuj6+OxzLN4djaRPoRWJaPn97pBtd2/nZOiyTOdK5riBjNu/4NbFZacsLFy5Y\\n69AOIyJcwzeHY0lMy0cBtG/lbeuQJKlemt+1gx0JC/bC3aU8h7fy98DdVU6gkxyLTCA2pFIq6RLW\\nApC3byXHJBOIjd3dwR+AyBvD2yXJkVitD0QyTZ8ugXTvHISLwip92ZJkVbIFYmMKhYI2gV5y/ovk\\nkGQCkSTJbDKBSJJkNplAJEkym0wgkiSZTSYQSZLMZrW5MJIkNX2yBSJJktlkApEkyWwygUiSZDaZ\\nQCRJMptMIJIkmU0mEEmSzNZkEojBYGDhwoVERUUxZcoU4uPjbR1SnbRaLXPnzmXy5MmMHz+effv2\\n2Tokk2VmZnLvvffeVjDMXn3yySdERUXx8MMPs3nzZluHU6e6CrPZiyaTQH788UfKysrYuHEjc+bM\\n4a233rJ1SHX67rvv8PX15euvv2bNmjUsXrzY1iGZRKvVsnDhQlxdXW0dikmOHTvGiRMnWL9+PevW\\nrSM1NdXWIdWptsJs9qTJJJDff/+dQYMGAdC9e3fOnj1r44jqNnz4cF588UXjzyqVaXVvbO3tt99m\\n4sSJBAQE2DoUkxw+fJgOHTrw3HPP8fTTT3PffffZOqQ61VaYzZ7YZ1RmKCgowNPT0/izSqVCp9PZ\\n7YmH8oWnoTz2F154gb/97W82jqhu27ZtQ6PRMGjQIP71r3/ZOhyTZGdnc+3aNVavXk1SUhLPPPMM\\nu3fvtus1WGorzGZPmkwLxNPTk8LCm0WZDAaDXSePCikpKUydOpUxY8bw4IMP2jqcOm3dupUjR44w\\nZcoUzp8/z8svv0x6erqtw6qVr68vAwcOxNnZmbZt2+Li4kJWVlbdb7ShisJse/bs4dtvv+WVV16h\\ntLTU1mHdpskkkLvvvpuDBw8CcPLkSTp06GDjiOqWkZHBjBkzmDt3LuPHj7d1OCb56quv+M9//sO6\\ndevo3Lkzb7/9Nv7+/rYOq1Y9e/bk0KFDCCFIS0ujuLgYX1/7XsTa29sbL6/yeizVFWazF/b/FW2i\\nYcOG8b///Y+JEycihODNN9+0dUh1Wr16NXl5eaxatYpVq1YBsGbNGofpnHQU999/P7/99hvjx49H\\nCMHChQvtvr9p+vTpzJ8/n8mTJ6PVapk1axbu7u62Dus2cjauJElmazKXMJIkNT6ZQCRJMptMIJIk\\nmU0mEEmSzCYTiCRJZpMJRLKIefPmMWTIEHbu3Fnt6x07dqz2+cGDB5OUlGTN0CQrajLjQCTb2r59\\nO6dPn8bZ2dnWoUiNSCYQqcGefvpphBA88sgjjBo1iu+++w6FQkFERAQLFiwwzvkByMnJYe7cuaSm\\nptKuXTu7HJ4tmU5ewkgNVjHR65133mHz5s2sW7eOHTt24ObmxsqVK6tsu3z5crp06cKOHTt49NFH\\nycjIsEXIkoXIBCJZzG+//cb9999PixYtAIiKiuLo0aNVtvn1118ZOXIkAL1796ZNmzaNHqdkOTKB\\nSBZjMBiq/CyEQKfTVXlOoVBQefaEvc9JkWonE4hkMffccw/79+8nJycHgE2bNtGnT58q2/Tr149v\\nv/0WgNOnT5OQkNDocUqWIxOIZDGdOnXiqaeeYsqUKQwfPpy8vLzbFkl64YUXSExMZNSoUaxZs0Ze\\nwjg4ORtXkiSzyRaIJElmkwlEkiSzyQQiSZLZZAKRJMlsMoFIkmQ2mUAkSTKbTCCSJJlNJhBJksz2\\n/wHEJBEPI1T/NQAAAABJRU5ErkJggg==\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAASkAAADdCAYAAADn7YQ5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4U2X68PFvkqb7XlroCm2hZRPZ\\nZJOCiCIIDgxaBbQoOqCjMG7DD8RdBhRmdGYAEbcXEBUREUGdYURQQDYpoiyyFAp0L92XtE2b5Hn/\\nKA0tlDaFJCdpn891cV30JCfnzkl699kflRBCIEmS5KDUSgcgSZLUFJmkJElyaDJJSZLk0GSSkiTJ\\nockkJUmSQ5NJSpIkh9Zmk9Sjjz7Kl19+2eRz9u/fz7hx45p8zldffcX48eMZP348AwYMICEhwfxz\\ncnLyVc/Lyspi0KBBbNu2zXxMr9dz9913s3bt2pa9mev05Zdfcsstt/DII4+wdOlSBg0axGOPPWaV\\n1z58+DAvvfQSYNn9tESfPn3IyMi47texpU8++YTbb7+9yfdbU1PD0KFD+dOf/mTHyCwTHx/PXXfd\\nZf4ujx8/nueff77Jc7788kseffTRRh8bN24c+/fvv6ZYXK7pLMlswoQJTJgwAYC5c+fSpUsXHnnk\\nkWbPCwsLY/HixcyePZsvvviCyMhIXnzxRbp27crkyZNtHXYDX331FU8//TTjx49n6dKl3HnnnebE\\ncr1Onz5Nbm6uVV7Lmdx///107tyZ+fPnX/U5W7dupWvXrhw9epQzZ84QGxtrxwibt3r1agIDA5UO\\nwzmS1P79+3nrrbcIDQ3l7NmzeHh4MGPGDNasWcPZs2cZNWoU8+bNA2DdunWsWbMGtVpNu3btePHF\\nF4mOjiY3N5e5c+dy4cIFwsLCKCgoML/+mTNnWLBgAcXFxRiNRpKSkrjnnnts/r6GDRvGpEmTePrp\\npxk3bhznzp3j448/Nj/+/PPP07Nnz0aT1rvvvsvGjRtxcXGhY8eOvPHGG/j4+PD222/z7bffotFo\\niI6O5sUXXyQ4OJiysjIWLFjAqVOnqKmpYfDgwfzf//0fixcv5siRI2RkZFBUVNTgGtd7393d3Vmy\\nZAllZWU899xzTJgwgYqKCp5++mlSU1PR6/X87W9/o3///lRXV/OPf/yDAwcOYDQa6d69Oy+88ALe\\n3t4kJyczf/58VCoVN9xwAyaTyRzf/Pnz+eabb6742WAw8Pe//50ff/wRjUZDnz59ePnll3F1db3q\\n53Hrrbfyxz/+kb1795Kdnc348eN56qmnMJlMLFy4kN9++w2dTocQgr/97W/069ePuXPn4u3tzcmT\\nJ8nJySE+Pp5Fixbh5eXV7Oe/du1a7rzzTqKioli9ejWvvfaa+bEvvviClStXolarCQgIYNGiRaSl\\npbFgwQI8PT3R6XRs2LCBjRs3Nvp9T05O5o033jDfq0cffZQ77rjjqsdbIjk5mcWLF1NZWYlWq+Wp\\np55i2LBhDZ5z+vRp5s2bR2VlJTExMVRUVABgMBiYP38+v/zyC1qtloiICF5//fWm75dwAvv27RPd\\nunUTx44dE0II8cgjj4j77rtP6PV6UVBQIHr06CFycnLEnj17xG233SYKCgqEEEJs2LBBjBkzRphM\\nJvH444+Lf/7zn0IIIc6dOyd69+4tNmzYIGpqasSdd94pjh49KoQQorS0VIwZM0YcOnRI7Nu3T4wd\\nO9biOOfMmSM++OCDFr03o9EoJk+eLPr06SNycnIsOuf7778Xo0aNEsXFxUIIIRYuXCiWL18uvvji\\nC3HfffcJnU4nhBBiyZIl4uGHHxZCCDF37lzx0UcfCSGEMBgM4q9//at47733hBBCPPDAA+K///2v\\n+ZxXX31VCGGd+75hwwYxY8aMBq/366+/CiGEWLlypZg6daoQQoilS5eKN954Q5hMJiGEEG+++aZ4\\n+eWXhV6vF0OGDBF79uwRQgjx9ddfi7i4OJGenn7F51P/59WrV4v7779fVFZWCqPRKJ588kmxcePG\\nJu/riBEjxBtvvCGEECInJ0fccMMNIi0tTfzyyy9i1qxZwmg0CiGEePfdd8Wjjz4qhKj9zOvuSXV1\\ntZgwYYL44osvrojncikpKaJHjx6isLBQ/Pbbb6JXr16isLBQCCHE8ePHxcCBA0VWVpb5Pr344oti\\n3759omvXriIjI0MIIZq871OnThXffPON+fVeeeUVIYS46vHLxcXFiXHjxok//OEP5n/5+fmisLBQ\\nDB482PwZnjp1SgwYMECkpaU1+KzHjx8vPv/8cyGEEMnJySI+Pl7s27dPHDhwQIwePdr8OS9evFgc\\nPHiwyc/FKUpSABEREXTv3h2AqKgofHx8cHV1JTAwEC8vL0pKSti1axd33nmnuYg6ceJEFixYQEZG\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n/wMZWwLeQjNrEAAAAABJRU5ErkJggg==\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"try:\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_TZ_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_TZ_X', 'predict', lambda ns: ns.predict(X), np.arange(X.shape[0]))\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'model_T_X', 'coef', lambda ns: ns.coef_.flatten(), X_df.columns)\\n\",\n                \"    nuisance_diagnostic(const_dr_cate, 'prel_model_effect', 'effect', lambda ns: ns.effect(X), np.arange(X.shape[0]))\\n\",\n                \"except:\\n\",\n                \"    print(\\\"Unavailable\\\")\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Projecting CATE to a pre-chosen subset of variables in final model\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 135,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[4]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We could also fit a projection on a subset of the features by using the\\n\",\n                \"# subset wrapper from our utilities.\\n\",\n                \"\\n\",\n                \"# Example: including everything for expository purposes, but any array_like of indices would work\\n\",\n                \"subset_names = set(['motheduc'])\\n\",\n                \"# list of indices of features X to use in the final model\\n\",\n                \"feature_inds = np.argwhere([(x in subset_names) for x in X_df.columns.values]).flatten()\\n\",\n                \"print(feature_inds)\\n\",\n                \"# Because we are projecting to a low dimensional model space, we can\\n\",\n                \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n                \"# the hypothesis testing capability\\n\",\n                \"proj_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n                \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n                \"                                         )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 136,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"proj_dr_cate = const_dr_cate.refit_final(proj_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 137,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X[:, feature_inds])\\n\",\n                \"proj_dr_effect = proj_dr_cate.effect(X[:, feature_inds])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 138,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.002</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.002</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   6.316</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>0.0120</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:53:03</td>     <th>  Log-Likelihood:    </th> <td> -5932.2</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.187e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2989</td>      <th>  BIC:               </th> <td>1.188e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"      <td></td>        <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th>    <td>    0.0726</td> <td>    0.032</td> <td>    2.257</td> <td> 0.024</td> <td>    0.010</td> <td>    0.136</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>motheduc</th> <td>   -0.0815</td> <td>    0.032</td> <td>   -2.513</td> <td> 0.012</td> <td>   -0.145</td> <td>   -0.018</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>1570.882</td> <th>  Durbin-Watson:     </th>  <td>   1.972</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>3062292.770</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td> 0.842</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>159.746</td> <th>  Cond. No.          </th>  <td>    1.01</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.002\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.002\\n\",\n                            \"Method:                 Least Squares   F-statistic:                     6.316\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):             0.0120\\n\",\n                            \"Time:                        16:53:03   Log-Likelihood:                -5932.2\\n\",\n                            \"No. Observations:                2991   AIC:                         1.187e+04\\n\",\n                            \"Df Residuals:                    2989   BIC:                         1.188e+04\\n\",\n                            \"Df Model:                           1                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.0726      0.032      2.257      0.024       0.010       0.136\\n\",\n                            \"motheduc      -0.0815      0.032     -2.513      0.012      -0.145      -0.018\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     1570.882   Durbin-Watson:                   1.972\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          3062292.770\\n\",\n                            \"Skew:                           0.842   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     159.746   Cond. No.                         1.01\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 138,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is\\n\",\n                \"# an instance of SubsetWrapper, we look at the model of the SubsetWrapper which is \\n\",\n                \"# and instance of the pipeline, we then look at the reg step of the pipeline which is the statsmodel wrapper and\\n\",\n                \"# call summary() of the wrapper (most prob there is a better API for this, but we can go with this for now :)\\n\",\n                \"proj_dr_cate.effect_model.summary(alpha=.05, xname=['const']+list(X_df.columns[feature_inds]))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 139,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 216x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n                \"import statsmodels.api as sm\\n\",\n                \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n                \"res = proj_dr_cate.effect_model.model\\n\",\n                \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n                \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n                \"pred = frame['mean']\\n\",\n                \"iv_l = frame['mean_ci_lower']\\n\",\n                \"iv_u = frame['mean_ci_upper']\\n\",\n                \"\\n\",\n                \"fig, ax = plt.subplots(figsize=(3,4))\\n\",\n                \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'C3--', label=\\\"Upper 95% CI\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'C3--', label=\\\"Lower 95% CI\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], pred[order], 'C0--.', label=\\\"Prediction\\\")\\n\",\n                \"ax.legend(loc='best')\\n\",\n                \"plt.xlabel(\\\"Mother's Education (scaled)\\\")\\n\",\n                \"plt.ylabel(\\\"Treatment Effect\\\")\\n\",\n                \"#plt.savefig(\\\"NLSYM_momeduc_linear_projection_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Random Forest Based CATE and Tree Explainer\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 140,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=5000, max_depth=2, min_impurity_decrease=0.01,\\n\",\n                \"                                                     min_samples_leaf=100, bootstrap=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 141,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_cate = const_dr_cate.refit_final(rf_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 142,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\matplotlib\\\\axes\\\\_axes.py:6521: MatplotlibDeprecationWarning: \\n\",\n                        \"The 'normed' kwarg was deprecated in Matplotlib 2.1 and will be removed in 3.1. Use 'density' instead.\\n\",\n                        \"  alternative=\\\"'density'\\\", removal=\\\"3.1\\\")\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAANYAAAEJCAYAAADo/NlgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXl4FFX297/VWzrprJCw77skg4oI\\nLgRkiSiOMyI7CAw4OjgqD+oPgwxCNEpkkBkNIqM4DgyLuLEoIgwgEAwhL4IBEpYAQiABQhKydLrT\\na933j05XupNO0gmp6k7lfJ7Hh3RVddepNt+cc88991yOMcZAEESTovC1AQQhR0hYBCECJCyCEAES\\nFkGIAAmLIESAhEUQIiCqsIqKijB8+HBcunQJWVlZiI2NxYwZMzBjxgzs2rVLzFsThE9RifXBVqsV\\nS5YsgVarBQCcOXMGs2fPxpw5c8S6JUH4DaJ5rOXLl2PKlClo06YNACAzMxMHDx7E9OnTsWjRIpSX\\nl4t1a4LwOaIIa+vWrWjVqhViY2OFYwMGDMDrr7+OTZs2oXPnzli9enW9n2Oz2cUwjyBEhxOjpGn6\\n9OngOA4cx+Hs2bPo1q0b1qxZg6ioKADAxYsXkZiYiPXr19f5OQUFekRFhaCgQN/UJkpKc38Gsr/2\\nz60NUTzWpk2bsHHjRmzYsAF33XUXli9fjr/+9a84deoUACAtLQ3R0dFi3Jog/ALRkhfVSUhIQGJi\\nItRqNSIjI5GYmCjVrQlCckQX1oYNG4Sft2zZIvbtCMIvoAlighABEhZBiAAJiyBEgIRFECJAwiJ8\\ngsFk9bUJokLCIiQn9fQNvPzBYRzJvOFrU0SDhEVIzqGT1wEAqadv+tgS8SBhEZLDeEcVnYLzsSEi\\nQsIiJIevLE9VKOT76yffJyP8Fjt5LIJoenje8a9CxsoiYRGSw4RQkIRFEE1GVShIwiKIJoMnj0UQ\\nTQ9PyQuCaHoEj0WhYONw7SuYk5ODqVOnYtq0aVi6dCl4Z2qIaHE4PRYnY5clmrCq9xVMSkrC/Pnz\\nsXnzZjDGsH//frFuTfg5lbqCkoTVcKr3FczKysLgwYMBAMOGDcORI0fEujXh5/AtICsoSs8L176C\\nn376KQDH3AVX+UXqdDro9fW3o4qICAJQd5up5kJzfwYx7NcFaST7XqT+/kUR1rfffguO45CWloaz\\nZ88iPj4et2/fFs4bDAaEhobW+znFxcZm39MOoL581bFXjq/NZpsk34sv+gqKIqxNmzYJP8+YMQMJ\\nCQlYsWIF0tPTMWTIEKSkpOCBBx4Q49ZEM0CYIJZxTlqyR4uPj8eqVaswefJkWK1WjBkzRqpbE36G\\nMyHM0Rir8bj2Fdy4caPYtyOaAc5aQfnKiiaICR/gDAX5pt82wG8gYRE+Q8a6ImERvoM8FkGIAJNx\\nVRsJi/AZPMhjEUSTI+NIkIRF+A5nzaAcIWERPkOEXXr9BhIW4TNkrCsSFuE7KN1OEE2Eq5goFCSI\\nJsJudxWWDw0RGRIWISk2e9WsMIWCBNFE2F1S7DLOtpOwCGmxu3gsGmMRRBNhcxlj0QQxQTQRdt7V\\nY/nQEJERbQWx3W7H4sWLcfnyZSiVSiQlJUGv12Pu3Lno1q0bAGDq1KkYO3asWCYQfojN3jLS7aIJ\\n68CBAwCALVu2ID09HUlJSRg5ciRmz56NOXPmiHVbws9pKckLjon4Z8Nms0GlUmHbtm04ceIEFAoF\\nLl++DLvdjq5du2LRokUIDg6u4/12qFRKscwjfMCFa8V49YMUAMDAvm3w1vMP+tgicRC1mYxKpUJ8\\nfDz27t2L5ORk5OfnY+LEiYiJicGaNWuwevVqxMfH1/p+6ivoHzSl/YWFBuFns9kq276Coicvli9f\\njj179uDNN9/E0KFDERMTAwCIi4vDmTNnxL494We4Ji/kHAqKJqzt27fjk08+AQAEBgaC4zi89NJL\\nOHXqFAAgLS0N0dHRYt2e8FMoeXGHPProo3jjjTcwffp02Gw2LFq0CO3bt0diYiLUajUiIyORmJgo\\n1u0JP6WleCzRhBUUFIQPP/ywxvEtW7aIdUuiGeA2QSxjj0UTxISk2KikiSCaHtd5LBnrioRFSIvb\\nshEZD7JIWISkkMciCBGwt5B0OwmLkBRaQUwQIkChIEGIAHksghABu71lLBshYRGSYuNpgpggmhzK\\nChKECLiFgrTxHEE0DW4tpmnjOYJoGtx7t/vQEJEhYRGS4lofSLWCBNFEOD2WSsnJOnkhaV9BxhgW\\nLlwIjuPQu3dvLF26FAoFabsl4UxYKBUKWc9jSdpXkDGG+fPnY8iQIViyZAn279+PuLg4sUwg/BCn\\nl1Iq5O2xRHMXo0ePFnpaXL9+HZGRkcjKysLgwYMBAMOGDcORI0fEuj3hp7iGguSxGvvh1foKHjhw\\nABzHAQB0Oh30+rp7vUVEBAGou39bc6G5P0NT2a9Wqyr/VcJqt0n2vUj9/YsqLMDRV/D//u//MGnS\\nJJjNZuG4wWBAaGhone+lhp3+QVPabzJZAQAcHB2bqGFnA/HUVzAmJgbp6ekAgJSUFAwaNEis2xN+\\nCu82xvKxMSIiaV/Bnj174s0338Q//vEP9OjRA2PGjBHr9oSf4py7UioVsk5eSN5XcOPGjWLdkmgG\\nOBMWcvdYNIlESIpbVlDGaUESFiEpQiioUIBBvktHSFiEpLhOEAOQbX07CYuQlNt6x5RLqdECQL6F\\nuCQsQlIYAzjOMY/lfC1HSFiEpDDGwAFCBQ6NsQiiCWBwiKpSV7JtgUbCIiSFMUahoJPnnnsOP/74\\nIywWi9j2EDLHMcbiKBQEHMI6fPgwHnvsMbz11lvCPsIE0VAEjyWEgr61Ryy8KmkaPHgwBg8eDJPJ\\nhN27d2PevHkIDg7GhAkTMG3aNGg0GrHtJGQCYwAHTggF5TrG8rpWMD09HTt27EBqaiqGDRuGsWPH\\n4siRI3jhhRfw73//W0wbCRnh9FgQQkHf2iMWXglrxIgR6NSpE8aPH48lS5ZAq9UCAIYMGYLx48eL\\naiAhL4SsYOVruU4QeyWs9evXQ6fToXXr1jCZTMjJyUHXrl2hUCiwbds2sW0kZIQwQcw5X8tTWF4l\\nLw4ePIg///nPAICioiLMnTsXX375paiGEfKk5gSxb+0RC6+E9dVXX2HTpk0AgI4dO2Lr1q20ropo\\nFEK6vfJ1i05eWK1Wt8yfWq2u9/pFixYhLy8PFosFL7zwAtq1a4e5c+eiW7duAICpU6di7Nixjbec\\naJYwsBYxj+WVsEaPHo1Zs2bh8ccfB8dx2LNnD0aOHFnr9d999x3Cw8OxYsUKFBcXY9y4cXjxxRcx\\ne/ZszJkzp8mMJ5ofjAEKl9ILmerKO2EtWLAAu3fvxrFjx6BSqTBz5kyMHj261usfe+wxt34WSqUS\\nmZmZuHz5Mvbv34+uXbti0aJFCA4OvvMnIJoVfLWSJrmGghzz0hdfuHABpaWlbq77/vvvr/M95eXl\\neOGFFzBp0iRYLBb07dsXMTExWLNmDcrKyhAfH1/n+202O1QqpTfmEc2E8Qu/R0iQBu1b65D5WxFW\\nLxiBLu3qboPXHPHKY7311ls4cOAAOnfuLBzjOA7//e9/a33PjRs38OKLL2LatGl48sknUVZWJvQR\\njIuLE7rk1gX1FfQPmtJ+xjvmrqw2OwCg6LYBgUqunnfdGb7oK+iVsFJTU7F7925hYrg+CgsLMWfO\\nHCxZsgQPPvggAODZZ5/Fm2++iQEDBiAtLQ3R0dFefRYhLxgYFK6hYEueIO7cuXODsjf/+te/UFZW\\nho8//hgff/wxAGDhwoVYtmwZ1Go1IiMjvfJYhPzga1S3+9ggkfBKWGFhYXjiiSdw7733uqXdk5KS\\nPF6/ePFiLF68uMbxLVu2NNJMQi5Ur26X63apXgkrNjYWsbGxYttCtACcE8RO5LrBt1fCGjduHHJz\\nc3Hx4kUMHToUN27ccEtkEIQ3OIcT1POikl27duGFF17Au+++i9LSUkyZMgU7duwQ2zZCZjjnrFx7\\nXshUV94Ja+3atfjiiy+ECvdt27bh008/Fds2QmY4w76WMEHslbAUCoVblUSbNm1o72CiwQihICf/\\nUNCrMVbv3r2xceNG2Gw2nD17Fps3b0a/fv3Eto2QGZ5CQZlOY3nnsZYsWYL8/HwEBAQINX5Lly4V\\n2zZCZgihIOQfCnrlsYKCgvDaa6/htddeE9seQsa4eywKBdGvXz+3uQcAiIqKQkpKiihGEfKEdxlj\\n0bIRAOfOnRN+tlqt2LdvHzIyMkQzipAnjHfxWJXH5For2ODUnlqtxuOPP46jR4+KYQ8hY5wacs8K\\n+tAgEfHKY23fvl34mTGGCxcuQKUSbftiQqY4vZPCbYJYnsrySh3p6eluryMiIvDBBx+IYhAhX1xF\\n5AwGW3RWsLYqdoJoCLzbBLHjmEx15Z2wRo4cWSMrCDiXAHDYv39/kxtGyI+qMVZVTVOL9lhPPvkk\\n1Go1Jk2aBJVKhe+//x6nT5/GK6+8IrZ9hIyoGmNRKAgAOHz4MLZu3Sq8njVrFp5++ml07NjR4/We\\n+gr26tULCxcuBMdx6N27N5YuXUr1hi0Mqm73wJEjR4SfDxw4AJ1OV+u1zr6Cmzdvxtq1a5GYmIik\\npCTMnz8fmzdvBmOMwscWiNNjuWw20rKzgm+//Tbi4+NRWFgIAOjRoweWL19e6/We+gpmZWVh8ODB\\nAIBhw4YhNTUVcXFxd2I70cxgLmMsIRRsySuIY2Ji8MMPP+D27dvQarUICgqq83qnNysvL8e8efMw\\nf/58LF++XEiA6HQ66PX1t6OKiHDcp642U82F5v4MTWF/cYUNABCgUSEw0NGmPDg4QJLvRurv3yth\\n5eXlYfHixcjLy8OmTZswd+5cLFu2DJ06dar1PdX7Cq5YsUI4ZzAYhB6DdUF9Bf2DprL/drEBAGC1\\n2WA2WwEAZXqT6N+NL/oKer1s5Nlnn0VQUBAiIyPx+9//vs4uts6+ggsWLMCECRMAAP379xcmmlNS\\nUjBo0KCGPAMhA5iwbKSqCrdF1woWFxdj6NChABzx8aRJk1BeXl7r9a59BWfMmIEZM2Zg/vz5WLVq\\nFSZPngyr1eo2BiNaBp4niOUpLK9CQa1Wi5s3bwpjpF9++aXODb1r6ytIe2q1bHi+5nosmTos74T1\\nxhtv4C9/+QuuXr2KP/7xjygtLcWHH34otm2EzHDzWNWOyQ2vhFVUVIRvvvkGV65cgd1uR48ePer0\\nWAThCZogrsaKFSugVqvRu3dv9OvXj0RFNAq39me0NN+xKcIbb7yBu+++223Hkaeeeko0wwj54eax\\nqh2TG3UKKz8/H23btkVERAQA4OTJk27nSVhEQ3BvMe085jt7xKROYc2dOxfbtm1DUlISPv/8c9o/\\nmLgjXENBZ/pCrqFgnWMs14f+/vvvRTeGkDfMQ/KiRU4Quy5ulOtfFkI6WtIKYq+XjXhaQUwQDUFY\\n6AiuZS90vHDhAkaNGgXAkchw/kxL8onG4MljyTQSrFtYe/bskcoOogVQlbxo4e3Palt6TxCNwb2k\\nSd4NO6npBCEZrvtjyb1LEwmLkAyh/Rnkv9sICYuQjKplI1XV7TLVFQmLkA6POzrKNC0oqrBOnjyJ\\nGTNmAACysrIQGxsrrCjetWuXmLcm/BDm6rG4FjyPdSesXbsW3333HQIDAwEAZ86cwezZs6nesAXj\\n2mJaUemx7OSxGkaXLl2watUq4XVmZiYOHjyI6dOnY9GiRXX2zCDkifsEsUNZchWWaB5rzJgxyM3N\\nFV4PGDAAEydORExMDNasWYPVq1fX2ekJoL6C/kRT2B8Y6FggqwvUICTYsa5PrVa23L6CTUFcXJzQ\\nSzAuLg6JiYn1vof6CvoHTWV/ebkJAFBhsiJA5QiWDEZLy+0r2BQ8++yzOHXqFAAgLS0N0dHRUt2a\\n8BPct0qtPEah4J2RkJCAxMREqNVqREZGeuWxCHnh2v5MoaAxVqPp1KkTvvrqKwBAdHQ0tmzZIubt\\nCD/HNXmhkHnygiaICclwCksBSrcTRJPBXNufOUNBuzz38SFhEZLhWtKkqGyBRh6LIO4Q1yJcAFAq\\nOdlmBUlYhGQwl3Q7ACgUHGwkLIK4M4RQsHLRiFKhgN1OwiKIO8I13Q4ASgUn2+p2EhYhGa4TxABg\\n53nojRYczMjzpVmiQMIiJKO6x+I4jlYQE8Sd4tr+DHBUX1AoSBB3CKvmsRScfItwSViEZFTPCioo\\neUEQdw5fbR6L4zihzElukLAIyWB89VCQPBZB3DGutYIAoFDIt0sTCYuQjOq1gorKdLscu+GSsAjJ\\ncG0xDcClzbSvLBIPyRp25uTkYOrUqZg2bRqWLl0KnpfpqJWoFWGho1CE635cTogmrLVr12Lx4sUw\\nm80AgKSkJMyfPx+bN28GY4w2rWuBVC9pUsi4G65oPS+cDTtff/11AI4W04MHDwYADBs2DKmpqYiL\\ni6vzM6ivoP/QFParVEoAQGiIFhzHQa12vNYFBYj+/cimr2D1hp3O7VUBQKfTQa+vv88b9RX0D5rK\\nfrPFBgDQl5vAcVWLHMv0JlG/H1n3FVQoqm5lMBiE5p1Ey4FnDBxcQ8Gq43JDMmH1798f6enpAICU\\nlBQMGjRIqlsTfoLNxgv9BAGXrKAM81iSCSs+Ph6rVq3C5MmTYbVaMWbMGKluTfgJJeVmBAZUjT6c\\nIpOjx5KsYWf37t2xceNGMW9H+DE2O4/ScguiIgKFYxQKEsQdUmawgAEI0rp4LBnvQ0zCIiThtt4x\\nn6lzEZawqyONsQiicRRXCisoQC0ck/MYi4RFSIIgLLdQ0PGvHFcRk7AISSjWOzadC/IQCsrQYZGw\\nCGko9jDGolCQIO6Q23ozFBwHbQCFggTRZBSXmREWrBFS7IC8q9tJWIToGE02FOvNaB2mdTvu3CNL\\nhroiYRHic/JSIXjGENO9ldtxwWNRKEgQDefE+QIAwH1927gdp5ImgmgkZqsdGRcLEarTIPtasdu5\\nqqygLywTFxIWISo3igyw8wztWwcJ81ZOqpaNyE9ZJCxCVMoMVgBAUEDNhRTVQ8GLuaV47u8HcOl6\\nqWT2iQUJixAVvdECANBqlDXOVZ8gvnyjDHae4VJemXQGigQJixAVvdHhsQI8CYtzH2MZzY6eGGUG\\nizTGiYioCx098dRTTyEkxNGEo1OnTkhKSpLaBEJC9BVOj1XzV636GKuChNU4nD0GN2zYIOVtCR/i\\n9FieQ0HHv85Q0GhyCKtUBsKSNBQ8d+4cKioqMGfOHMycORMZGRlS3p7wAeV1CcuLULDCbGuWyQxJ\\nPZZWq8Wzzz6LiRMn4sqVK3juueewe/duqFSezaCGnf5DY+2vsNqh4Di0Cq+ZbjeY7QAAtUqBqKgQ\\n2CoVVm6yIioqBEaTFXPf3w2Ljcdnf4tD21ZBktvfWCQVVvfu3dG1a1dwHIfu3bsjPDwcBQUFaN++\\nvcfrqWGnf3An9t8urUCARoFyg7nGuQqTwzOZzDYUFOhRWrm0pERvRv6tMiRtOA6LzbFu/9ylAijs\\nrWp8htj21/e5tSFpKPjNN9/gvffeAwDk5+ejvLwcUVFRUppASIzeaPWYuABqVrcbzY6w0c4zGE02\\nFJSahGtLy5vXuEtSYU2YMAF6vR5Tp07FK6+8gmXLltUaBhLNH6uNh8li9zi+AlyLcB2vnckLwJHA\\nMFvswuuS8poez5+R9Ldao9Fg5cqVUt6S8CHOyWFPc1iA69J8BsYYKswuQtKbYbbaoVJysNkZSshj\\nEYSDulLtgHu63Wy1u1W5Xy8yAAAiQgIAND+PRcIiPMLzDBv/dx7nrxbXf3Et1DU5DLivx3KGgRqV\\n41cyr8AhrLDgAHAgYREyISdfj59O5OHH9KuN/gxnwkGrri8UrJrD0gU6+g6euXIbABAYoII2QEnJ\\nC0IeFFZm5H67XtboFtCXrjuKaSNCAzyedw0FneVMztDP2dVJq1YiKECFknKzYEfWlds4du5Wo2yS\\nChIW4ZGCkgoAQHmFFfm3jY36jOxrJQhQK9E6VOvxvKdQ0Nlwxl45WRygUSIwQAWLjUeF2Y7Ckgqs\\n3JKBNdsz/XrlMQmL8EhhpbAA4Ov92Q1+f5nRguuFBvTqGOq2J5YrnkLBALUSwYFVYzJtpbAAxzhr\\n874LwjlnuZQ/QsIiPFLgIqz8ooZ7rAvXSgAAfTqH13qN63osZyioUSkQHKQRrgnQKIXuueeuFiPj\\nYqFwzhkuumKz8ygz+n48RsIiPFJQaoJGpQDHAfnF3gtr9bbT2PC/80g/6xgD9e0SUeu1rg07hayg\\nWomQoKqNE7RqJXRax+vvUq8AALq0DQbgWVjfpV7G6x8fQWFpRY1zUkLCImrA8wxFpSaE6jQIDlSj\\nxMMvsCeK9WYcP1+AAyfy8Mu5W4gM0yKvsLzW6zmOA8dVljBVeiy1SoHgwCphBWiU6NouBBEhASgz\\nWKDVKDFyYKfK+5lqfObF3FJYbDxOZBfWOCclJCyiBsV6M+w8Q3CQGiFBapgsdiFUq4vfXJZ3cACG\\nRLetUdFeHZ1WDYPJKiwV0WqqPJZKyUGlVECtUmDSiF4AgPv7tUHbyl0hiz3MbeUXOzxVxoWC+h+0\\nGnaex/bDvyHzt6IGv7c6JCyiBs4wKiRQjZDK8c6t4vpDq98q0+uzHuuLx4Z0qTUb6EpIkBoVZjty\\n8vVQKjjotGpBWK4Ty0azFXH3d0LHKB2ycx3jt7NX3CevTRabEB5mXytFeYX3yQ3GGD7/4Ry+S72C\\n//x4zuv31QYJq4F8+PVJrPji12a/vefVfD02/u88zFZ7jXN5hY6qh5AgDUIqwzLXZEZtnMh2eAmz\\nze6213BdOIWbV2BAm4hAKBQcggMdxwJcJpY5jkP71jpoKue1AMBQzYvuOpoDwJEU4RkTJpm94csD\\nF5GWdRMA3ObMGgsJqwHkFxtx8lIRzuYU49qt2scOYsFXFqs2BV8duIifTuQh/Ux+jXOX8hwhXVS4\\nFsGV3uNWPcKy8zyKykwID9ZAo/JcaeEJ10SFSun4dVSrFLi3dyRienhef6VUKhCgVqLC5C4sZzjZ\\nOUoHoMqDeoPTI3OcI/1/p0W/tGajARw7WzXbfzQrH13airsqlWcM+beNiAoPxKpvT+P0b0XQaVV4\\nILodJo/sJfwiNpT8YiPOVIZRaZk3MezuDm7nL+aVQqdVIVSnEZbN1xcKZl8tgc3OEBXunady4iqs\\nUF1Vmv13PVvX+b4grQp6owWMMWEc5xRWt/ahuHbLgN9uNFxYvTuFIftaKa4XGYQqkMZAwqqD736+\\njJ9P38DfZg7C2Su38fOpG1Bwjr+Yh05ex4RHetY6+dkYrDYeSgUHhYLD5n3ZOJqVj/IKK6LCtSgo\\nMaFdqyBUWGzYfzwXPdqH4sGYdg36fJPFBo1Kib3HrgFwJAfOXytBUakJrcO0OJp1E+eulqCgxIQB\\nPVuD4zjhF7++UHBP5Wf26hTWIJtCXeasQnXqOq50J0irQrHejAqzXZjnKqucMG4VGoBOUTrk3NTD\\nZq9/53CeMRSUVCAkSI22rYIcwio0ILpb41YsAySsWrHZeew7novyCiuSNhwXQqEubYOh1SiRfa0U\\nv5y/hcF3tW2S+xWUVODtdcdgtfHo2i6kskYPCNNpUFBiglajxPB7O8BosuH71Cv43y/XvBZWYWkF\\n1v14DmevFCNEp0GZwQKdVoXo7q3w/87ews60K+jePhTrXAbtPTs6BKJSKhCkVdXqsQ5m5OHQr9eR\\nk69HVHhggz1WcC0eqz5CgzTIgwEnLxXiweh2sNl5FJRUQME5EiDdO4Ti6q1y5BUYwKlVyMvXu0UY\\nVpsdP5++CQ6OPwZWG4/ObYIRHuyw4UblOLOxSCosnueRkJCA8+fPQ6PR4J133kHXrl2lNMFrzlwp\\nFrJKt0oqEBigxMO/a4+o8EBUmG24cK0Uu9JycH+/NvWmlOvDZufxn11nYTDZEKbT4EJuKRQcMGJg\\nJ7RrHYgzl4vRvnUQAtRKR2VCoBp5BeWw2nioVbWHg6UGC3Ju6vHVgYu4XmhAq1DHXFBokBqjB3VG\\noFaJ7GslOJRxHYcyrkOnVcFQOW4xVFgFbxUREoDrBQbcKDKgfWvH+MVosuHbQ5dw4Nc8KBWOtPjd\\nveoO3zzhFK6x8tm9pV/XcJy/VoKvfrqI1NM3wJhj/VevTmFQKDh0bx+KQxnXsf9ELn79MgOGCiuG\\n9G+LmWP6wmSx4++bTwipeWfI1yY8EKFBGnAccL05CWvfvn2wWCz48ssvkZGRgffeew9r1qxp1Gfx\\njEFvtMJqs8NmZ7DZeJitdpy7Woxj526hoKQCPTuGYcS9HdE5KhgKBQeOc4RZCs7RcovnmbA3k/M4\\nx3HQGy348idHTVqvTmG4lFeKB6PboUOk45dKrdKga7sQXLmpx6pvT0Oh4BCgriy9YY6Q5lZxBXp1\\nCkPPDmFgKiX0Bgtsdh423mGrzc7DUGHFmZxiHD55HWVGK+7pFYnf9WwFs9XxTM6JUtfxBsdx6Nwm\\nGGdzirH/eC4G39UGeYUGFJaaEFhZV6dUckjPysfRM/lCMetdXSNw/11tYLPz4DhAWVlaPnRAe+xO\\nv4ownQZDB7SHWqVAXqERbVtVeZ4BvaKQV2DA5r3ZiL27A45k3sS5nGJYbDzCdBqMvK8jggPVjf4D\\n0ykqGMV6s1sWsD5CgjSI7haB07/dFvoQBgaoMKivo4dKmdEClZLDz6duAADCgzVIP5OPKzf1YDzD\\nrZIK9OkchqIyM4pKTejcJhjdO4RCqVSgXasg/HajDJmXixDTveF/LACAYxLmjZOSkjBgwAA88cQT\\nAIDY2FgcPny41usLCvS1dtj59LssHPWQ0QIcpTK6QLWwgrWxRIQE4PcPdYXNzmp4BkOFFSknr6Og\\npObsf0PRqBXo2SEMd/dqDY0Xv1y3y0zYdfRqvRu2heo06N4+BCFBGnRrH+K2TakrFpsdaqWiVmEE\\n6wLw07GrOHe1RDgWFqxBj/ah6N8tAspGJlHuFJ5nuHnbiIiQABSWmhCm07iFk3qjBedyStCpbQja\\nhmtx7NwtnK98hru6RmBQvygwBlRYbELZFABEhQXiw29OQang8OG8obX+P6mrS5Okwvrb3/6GRx99\\nFMOHDwcAPPLII9i3bx81lCEO/1cVAAAIrklEQVRkh6R/aoKDg2EwVMWuPM+TqAhZIqmwBg4ciJSU\\nFABARkYG+vTpI+XtCUIyJA0FnVnB7OxsMMawbNky9OzZU6rbE4RkSCosgmgpUK0gQYgACYsgRICE\\nRRAi4He5bpPJhAULFqCoqAg6nQ7Lly9Hq1Y1iyF5nsfzzz+PUaNGYerUqT6w1DPe2L9u3Tr88MMP\\nAIDhw4fjpZde8oWpbtRXbvbTTz9h9erVUKlUGD9+PCZNmuRDa2tSn/07d+7E+vXroVQq0adPHyQk\\nJEChENGvMD/j888/Z8nJyYwxxnbu3MkSExM9Xrdy5Uo2YcIEtnnzZinNq5f67L969SobN24cs9ls\\nzG63s8mTJ7OzZ8/6wlQ39uzZw+Lj4xljjP36669s7ty5wjmLxcJGjx7NSkpKmNlsZk8//TS7deuW\\nr0z1SF32V1RUsFGjRjGj0cgYY+yVV15h+/btE9UevwsFjx8/jtjYWADAsGHDkJaWVuOa3bt3g+M4\\nDBs2TGrz6qU++9u1a4fPPvsMSqUSCoUCNpsNAQGNX/fTVLjafc899yAzM1M4d+nSJXTp0gVhYWHQ\\naDS477778Msvv/jKVI/UZb9Go8GWLVsQGOiof5TiO/dpKPj1119j/fr1bsdat26NkBBHDZZOp4Ne\\n714nmJ2djZ07dyI5ORmrV6+WzFZPNMZ+tVqNVq1agTGGv//97+jfvz+6d+8umc21UV5ejuDgYOG1\\nUqmEzWaDSqVCeXm58EyA47nKy6VfQV0XddmvUCgQGRkJwLGxvNFoxMMPPyyqPT4V1sSJEzFx4kS3\\nYy+99JJQ9mQwGBAaGup2fvv27cjPz8esWbOQl5cHtVqNjh07+sR7NcZ+ADCbzVi0aBF0Oh2WLl0q\\nia31UVe5WfVzBoPBTWj+QH3lcjzPY8WKFbh8+TJWrVp1x0t96sPvQsGBAwfi0KFDAICUlBTcd999\\nbudff/11fP3119iwYQPGjRuHP/3pT34VEtZnP2MMf/3rX9G3b1+8/fbbUCq9XyohJnWVm/Xs2RM5\\nOTkoKSmBxWLBL7/8gnvvvddXpnqkvnK5JUuWwGw24+OPPxZCQjHxu8qLiooKxMfHo6CgAGq1GitX\\nrkRUVBT+85//oEuXLhg1apRw7apVqxAZGelXWcH67Od5Hq+++iruuece4T2vvvqqz39RPZWbnTlz\\nBkajEZMnTxaygowxjB8/HtOnT/epvdWpy/6YmBiMHz8egwYNEjzVzJkzERcXJ5o9ficsgpADfhcK\\nEoQcIGERhAiQsAhCBEhYBCECJCyCEAG/K8Jtrrz11ls4ceIErFYrrl69KqyMnjlzJsaPH39Hn33q\\n1Cns2bMHCxYsaApTPZKcnIyHHnoIgwYNcju+cOFCHD16FGFh7h1ut27dioqKCsycORMWiwXJycl4\\n9913kZubi7fffhtDhgzx+t4HDhzAlStXMHv27CZ5Fn+AhNVEOCsocnNzMXPmTOzYsaPJPvvixYso\\nKrrzPZvq4tixY7WKYd68eXj66adrHD979iw0Gg22bt2K69ev4/z58/j5558bfG/Xuj65QMKSgFWr\\nViEjIwM3btzAM888g4cffhgJCQkoKSmBVqvFm2++if79+yM7OxuJiYkwGo24ffs2nn/+eTzxxBNI\\nTk6G0WjEmjVr0LZtWxw8eBAlJSW4desWpkyZgry8PBw9ehTh4eH47LPPEBAQgO3bt2P9+vXgeR7R\\n0dFYunQpAgICMHToUIwZMwbHjx+HUqnEBx98gOPHjyMzMxOLFy/GRx99hL59+9b7TEVFRVi0aBEK\\nCwsxd+5c5OXloaSkBE8//TS2bt2KTz/9FD/++CPsdjuGDh2KBQsWgOM4rFu3Dl988QWUSiVGjBiB\\ncePGYcuWLQCADh063LF39xtErZ1vgVy7do2NGDHC7VhycjJ75plnhNeTJ09mWVlZjDHGLly4wB59\\n9FHGGGPvvPMOO3LkCGPMsbzknnvuYYwx9u233wpLIr799lv2yCOPML1ez3Jzc1mfPn1YSkoKY4yx\\nZ555hu3du5dlZ2ezqVOnMpPJxBhj7P3332erV69mjDHWp08ftnfvXsYYY0lJSSwpKUl479GjR2s8\\nT3x8PBs+fDj7wx/+IPyXkJDAGGPs6NGjwnO5PvehQ4fYyy+/LCyNefXVV9n27dvZyZMnWVxcHCsr\\nK2NWq5XNmjWLnT59miUnJwtLbeQCeSyJGDBgAABHAWtmZibeeOMN4ZzRaERxcTEWLlyIw4cP45NP\\nPkF2djaMRs+bag8cOBDBwcFCNfeDDz4IAOjYsSPKysqQnp6OnJwcYTGi1WpF//79hfc7l1f07t3b\\nq+UftYWCtZGWloZTp04J7zGZTOjQoQMKCwsxYsQIoYB33bp1ABxjLLlBwpIIrdaxbSjP89BoNG5j\\nsJs3byI8PBzz5s1DaGgoRowYgbFjx2Lnzp0eP0utdt/upnrTU7vdjscffxyLFy8G4BCz3V61c6Nz\\nLRLHcaLsTGm32zFr1iwhGVFWVgalUolvvvnGrao8Pz9fkoJYX0DpdokJCQlBt27dBGGlpqYKBa2p\\nqamYN28eRo8eLVRq2+12YW2RtwwZMgR79+5FUVERGGNISEiosW6sOkql0k18d8IDDzyAHTt2wGAw\\nwGaz4cUXX8SePXswaNAgHDp0SDj+2muvITMzs8HP1xwgj+UDVqxYgYSEBHz22WdQq9X45z//CY7j\\n8PLLL2PatGkICAhAv3790LFjR+Tm5mLAgAH46KOP8P7776NHjx71fn6/fv3w0ksvYdasWeB5Hnfd\\ndReef/75Ot8TGxuLpUuXYvny5Rg4cKDbueTk5BrCXLlyZa2fNXLkSJw7dw6TJk2C3W5HbGwsxo0b\\nB47j8Mwzz2DKlCngeR5xcXF46KGHoFarER8fj8jISMyYMaPe52sOUHU7QYgAhYIEIQIkLIIQARIW\\nQYgACYsgRICERRAiQMIiCBEgYRGECPx/ZTLnqqz8N3cAAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 216x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import seaborn as sns\\n\",\n                \"\\n\",\n                \"rf_dr_effect = rf_dr_cate.effect(X)\\n\",\n                \"plt.figure(figsize=(3,4))\\n\",\n                \"sns.distplot(rf_dr_effect)\\n\",\n                \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n                \"plt.ylabel(\\\"Frequency\\\")\\n\",\n                \"plt.savefig(\\\"NLSYM_hte_distribution_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 143,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABIQAAAD/CAYAAACAeA0nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XecnHW5///XfU/d2Z62KaT30KuQ\\nBBAIiArSq8IR+HrkKD8VkSMgAseCBetROWBBEOVQQztSRSQhAiFAQhJTSE82yaZsnd3p9/374562\\nSTZlM7Mzs/N++ojc0+75zD3XTrnmuj4fw7ZtGxERERERERERKRtmoQcgIiIiIiIiIiJ9SwkhERER\\nEREREZEyo4SQiIiIiIiIiEiZUUJIRERERERERKTMKCEkIiIiIiIiIlJmlBASERERERERESkzSgiJ\\niIiIiIiIiJQZJYRERERERERERMqMEkIiIiIiIiIiImVGCSERERERERGRctXWVegRSIEoISQiIiIi\\nIiJSrq64B773eKFHIQWghJCIiIiIiIjIgVq/DWouh2B498tO+Aa8unDf+/jUf8H9L+V+bAfiN9fD\\nI2/sV1JoY1uc0T/aTGfU6oOBSb65Cz0AERERERERkX5l/k8KPYLu5i6FT39379f58Ww462g4YWLf\\njEkKTgkhERERERERkd669wX48z+guQOuPh3uvgoOuwHuuQY+eSz8cxl844+wcQecfKhzm8NGwW2X\\nONtLNsDpt8PyTXDYaPj9DTBqsHPZ71+BX78ALUGYMRV+fh001DkJnhv/AKOHwLsfwV++ntn3npw4\\nGdb+ds+XbW2FS34EZx8Lx0/Y74c9d22YH83pYG1znFF1Lm4+pYbTx/v599nNHDnMw5dPqgbghN9s\\n5aLDAnzz1BoATvtdE98/q46PjfTy67eCPP5hF6G4zenjfdx5Ri3VPpMnFnfx2IddxBI261sTPHPV\\nIMbUK32Ra2oZExEREREREemtNVvh3Z/CC3fCb1+Gt1dkLmsOwuU/gevPhrW/g3OPh/97t/vtX13o\\nJIFW3Q8eF9zztHP+02/Dz56F/70JVtwLY4bA53+Zud3KzXDBibD8Xjhpyt7H6HHDwJo9//vPB53E\\n1c+uBcPYr4e8vjXBdbOb+fKJVSz66lBuPqWGLz3bwvLtMU4f72PuuggAq3bGaAvbvLXeOb2hNc6O\\n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\\ngw8+YPny5Rx33HHpDy+78ng8LFq0iFmzZuH1egkEArS0tDBv3jyWLFlCJBIBoKGhAdM0Wb9+PUcc\\ncQT19fUsX76c9957j8bGRgYOHEggEGDYsGGMHDmSpUuXsmDBApYsWcKkSZMOaA4iERERKU+1tbUY\\nhsEbb7zB4sWLaWtr46yzziIQCOz1s4dlWSxYsIB4PI5t24RCIZYvX877779PXV0dJ510Ei6Xi5qa\\nGubPn8/SpUsJhUKYpsmYMWOoqqoiGAzy7rvvpieqzlZVVcXSpUsZNWoU48aNS583f/58lixZwr/+\\n9S8aGhpoaWlJzznU0NDAkCFD8Hg8zJkzhxUrVjBo0CA2b97McccdR21tLaZpMmfOHJYsWUJra2v6\\nsUphGXZ2XZeIiIiIiIiIFL133nmHcDi835M7i+xKLWMiIiIiIiIiImVGFUIiIiIiIiIiImVGFUIi\\nIiIiIiIiImVGCSERERERERERkTKjhJCIiIiIiIiISJlRQkhEREREREREpMwoISQiIiIiIiIiUmaU\\nEBIRERERERERKTNKCImIiIiIiIiUuK6uLm6++WaOPvpopk+fzn333bfP29xyyy1MnjyZhQsXps+L\\nx+P8/Oc/57TTTuOYY47hqquuYvny5fkcuhSIEkIiIiIiIiIiJe7uu+/mueeeY9iwYRiGwc9//nOe\\ne+65Hq//1FNP8cwzz+x2/q9//Wvuu+8+LMtiypQpzJ8/n2uuuYbW1tZ8Dl8KQAkhERERERERkRLW\\n1dXFs88+S0NDA88++yx//OMfAXj00Ud3u25rayu33nort912G7Zt73b5M888g8fjYfbs2TzyyCOc\\nc845NDc3M2fOnLw/Dulb7kIPQERERERERER6b9myZUSjUQ4//HA8Hg+TJk2ipqaGJUuWYFkWppmp\\nBVmxYgWzZ8/m9NNPp6mpiaVLl6YvsyyL22+/nba2NgYOHAiQ/m8oFOrbByV5pwohERERERERkRK2\\nbds2AGpra9Pn1dbWEolEdmv1Gjx4ML/5zW+49957qays7HaZaZrMmjWLiy66CIC2tjZefPFFAKZO\\nnZrPhyAFoAohERERERERkRIWiUQAcLszX/FdLle3y1LGjRvHuHHj9mufN9xwA9u2beOYY47hiCOO\\nyOGIpRioQkhERERERESkhPl8PsBp+UqJx+PdLjsQsViMr371q8yfP5/6+np+9KMf5WagUlSUEBIR\\nEREREREpYYMHDwagvb09fV57ezt+v5/6+voD3t8dd9zB66+/TlVVFb///e8ZNWpUzsYqxUMJIRER\\nEREREZESNmXKFNxuN4sWLSIWi7Fq1Sra29s57LDDMAzjgPb15JNPMnv2bDweD/fffz+HHXZYnkYt\\nhaY5hERERERERERKWFVVFZ/+9Kd59tlnOe+882hrawPg8ssvZ+XKlfziF79g2rRp3HDDDXvdTyKR\\n4Ne//jUA1dXVPPDAAzzwwAMAnH/++Zx11ln5fSDSp5QQEhGRfqurqwuAQCBQ4JGIiIiI5Nedd96J\\nYRi88sor+P1+brzxRs4991zeeecdXnvttd0ml96T5cuXs2XLFgCam5t57bXX0pcdddRReRu7FIZh\\n27Zd6EGIiIjkQ0dHB+D8wiUiIiIiIhmaQ0hEREREREREpMwoISQiIiIiIiIiUmaUEBIRERERERER\\nKTNKCImIiIiIiIiIlBklhEREREREREREyowSQiIiIiIiIiIiZUYJIREREREREZEyEgwGCQaDhR6G\\nFJi70AMQERERERERkb5j23ahhyBFQBVCctAsy+KOO+7gsssu46qrrmL9+vXdLv/73//ORRddxGWX\\nXcbjjz+ePv/888/nqquu4qqrruLWW2/t62FLHvQ2Fu6//34uu+wyLrzwQp544om+HrbkQW9iYfbs\\n2enXhEsvvZTDDz+c9vb2Qgxfcqw38RCLxbjpppu4/PLLufLKK1m9enUhhi451ptYiEaj3HTTTVx6\\n6aVce+21rFu3rgAjl1zbVywAhEIhLr/88vTf//7cRkpPb2IhZdGiRVx11VV9NVTpA72Jh1gsxs03\\n38yVV17JxRdfzGuvvdbXwy5dtshBevnll+1vfvObtm3b9gcffGBff/316cui0ag9a9Ysu7W11Y5E\\nIvaFF15ob9u2zQ6Hw/Z5551XqCFLnvQmFt5++237i1/8op1IJOxgMGj/93//d6GGLznUm1jIdtdd\\nd9mPPvroQY+jvb3dbm9vP+j9yMHpTTy8+uqr9le+8hXbtm37zTfftG+44YaCjF1yqzex8PDDD9u3\\n3367bdu2vXr1avvaa68tyNglt/YWC7Zt2x9++KF9wQUX2NOnT7dXrVq1X7eR0tSbWLBt2/7tb39r\\nn3POOfYll1zSp+PtL4r1M1Jv4uHJJ5+0v/e979m2bdvNzc32qaee2qdjLmWqEJKD9t5773HyyScD\\ncNRRR7FkyZL0ZatXr2bUqFHU1tbi9Xo59thjWbBgAcuXLycUCnHttddy9dVXs3DhwkINX3KoN7Hw\\n5ptvMmnSJL785S9z/fXX8/GPf7xAo5dc6k0spCxevJhVq1Zx2WWX9fm4JT96Ew9jx44lkUhgWRbB\\nYBC3W13u/UFvYmHVqlWccsopAIwbN07VYv3E3mIBnMqw3/zmN4wbN26/byOlqTexADBq1Ch+9atf\\n9dk4pW/0Jh7OPvtsvvrVr6ZPu1yuvhlsP6BPV3LQgsEgVVVV6dMul4t4PI7b7SYYDFJdXZ2+rLKy\\nkmAwiN/v57rrruOSSy5h3bp1fOELX+Cll17SB/4S15tYaGlpYfPmzdx3331s2rSJ//iP/+Cll17C\\nMIxCPATJkd7EQsr999/Pl7/85T4dr+RXb+IhEAjQ2NjIJz/5SVpaWrjvvvsKMXTJsd7EwtSpU3n9\\n9deZNWsWixYtoqmpiUQioQ/8JW5vsQBw7LHHHvBtpDT1JhYAPvGJT7Bp06Y+GaP0nd7EQ2VlZfq2\\nX/nKV/ja177WN4PtB1QhJAetqqqKzs7O9GnLstJ/sLte1tnZSXV1NWPHjuUzn/kMhmEwduxY6urq\\n2L59e5+PXXKrN7FQV1fHzJkz8Xq9jBs3Dp/PR3Nzc5+PXXKrN7EA0N7ezpo1azjxxBP7dsCSV72J\\nhwcffJCZM2fy8ssv8+yzz3LLLbcQiUT6fOySW72JhYsuuoiqqiquvvpqXn/9dQ499FAlg/qBvcVC\\nLm8jxU/Pq2TrbTxs2bKFq6++mvPOO49zzz03n0PsV5QQkoN2zDHHMGfOHAAWLlzIpEmT0peNHz+e\\n9evX09raSjQaZcGCBRx99NE8+eST/PCHPwSgqamJYDDI4MGDCzJ+yZ3exMKxxx7L3LlzsW2bpqYm\\nQqEQdXV1hXoIkiO9iQWAd999l+nTpxdkzJI/vYmHmpqadKKwtraWeDxOIpEoyPgld3oTC4sXL+bY\\nY4/l4YcfZtasWYwcObJQw5cc2lss5PI2Uvz0vEq23sTDjh07uPbaa7n55pu5+OKL8z3EfkWpVzlo\\nZ555JvPmzePyyy/Htm3uvvtunn/+ebq6urjsssu45ZZbuO6667Btm4suuoiGhgYuvvhibr31Vq64\\n4goMw+Duu+/WLwH9QG9ioaGhgXfffZeLL74Y27a544479MtvP9CbWABYu3YthxxySIFHL7nWm3j4\\n/Oc/z2233caVV15JLBbjxhtvJBAIFPqhyEHqTSx4PB5++ctf8sADD1BdXc33v//9Qj8MyYF9xcL+\\n3kZKX29iQfqv3sTDfffdR3t7O/feey/33nsvAL/73e/w+/19OfSSZNi2bRd6ECIiIvnQ0dEB0G1e\\nEhEREZFyp89IAmoZExEREREREREpO0oIiYiIiIiIiIiUGSWERERERERERETKjBJCIiIiIiIiIiJl\\nRgkhEREREREREZEyo4SQiIiIiIiIiEiZUUJIRERERERERKTMKCEkIiIiIiIiIlJmDNu27UIPYvv2\\njkIPQfpAfX2AlpauQg9DioBiQVLyHQt+v/PfcDhvdyE5otcFSVEsSDbFg6QoFnKrlD8jKRYOzODB\\n1T1epgoh6TNut6vQQ5AioViQFMWCpCgWJEWxINkUD5KiWJAUxULuKCEkIiIiIiIiIlJmlBASERER\\nERERESkzSgiJiIiIiIiIiJQZd6EHICIiki+JRKFHICIiIiJSnJQQEhGRfisWK/QIRERERESKk1rG\\nRERERERERETKjBJCIiIiIiIiIiJlRgkhEREREREREZEyo4SQiIiIiIiIiEiZUUJIRKRMGD0sudXT\\n+fm4r4Ni2xiWlfv95klejoHkhJ6bImfbeo5ERGS/WTbY9p7PS/03bkEkDiX0UbJPGLa966Hre/F4\\nArfbVehhiIj0T1uaYfkmcJlw38sQDDnnHz4ajhkPg2vhD69AS+fB3Y8BHD8RjhgDVRXwm79CLAdf\\n6obWwXETYVwDvLca5i07+H3m09Hj4KixMLAa/ucl6AwXekSS0i3mX4WWYKFHJNlqKpy/9SmHwOZm\\neObtQo9IRKTf6vjLVwH44l8jBR7JwZs+yscJI32sbY4xf1OULR0JLj4swNAqFz63QSxhU+Ex0td3\\nmwaj602qfMpBFMWy8y0tXYUegvSBwYOr2b69o9DDkCKgWOhbtVta8HqSL/emAf9Y4myfPA0a6pxt\\njztz/sG4dCYMqHa2u6K5Sd7MnApXn+5sjxiYm3Hm0yeOcRIOKcU+3nIyMw8xL7kzYgBc/0lne8wQ\\neGclhKKFHZOISD83b33pv85eenglfrfB1CFe/m95mA82x7hpphuPy0kCpf6bkrChpTVEyCx4bUyf\\nGDy4usfL1DImItLPRaoDmRMzp2W25/5rz+cfjDezEkAn52if766CcMzZHjMERg7KzX7z5c08HFfJ\\njezn5uSphRuH7FljM6zZ6mx73U7FoYiIyF4Mq3YxboDzw2c0YfPupignHOLdLQnUnY3PKI9k0L4o\\nISQi0s9FqipIv+VNGwkDqpzt+R9BLO5sTxgGQ+sP/s6yv3AfPxF8OShEjcRgwUeZ08WeZPnnMqdh\\nHeCwUVBXWdjxSMY7KyGajPnxw2BYDmJecmteHpLKIiLSb80c7Utvv98YJRS3mTHGt5dbgAcbY2/5\\nojKihJCISD9nu13EAsk3RtOA6cnKiK6IMydPyswcVEys3w4btjvbFV44dsLB7xN2qbop8sqOlk5Y\\nusHZdpkwfUphxyMZoeguMa+EQ9HJrlw8bgL4PYUbi4iIFL0Zo73p7TfXR6jwGBwz3LuXW0CVGcv3\\nsEqGEkIiImWgW9tY9q/u3VpocvTlOPsX/lx94Z7/kVMpBDC2wZlLqJjlox1PcqOUkovlaNNOWNfk\\nbPs8ahsTEZEeDa0yGT/Q+eEglrCZn2wX86pdbL8pISQiUga6tY0dOgrqk21j76zMrAQ2cbizotfB\\nyk6GnDDRmQvkYIVjsGBV5nSxt5Jkt40dPhpqA3u/vvSdd1ZmWiVzFfOSW2/mIaksIiL9zsys1rD3\\nN0cJxWxmjFa72IFQQkhEpAzYbhexiuy2sWQbU2cEPshqoZmRg4qJddugcaezHfDBseMPfp/QvbIj\\nF+PMp+Yg/Gujs+0y4SS1jRWNrgi8vyZzWgmH4pOdVD5+glMpJCIisovpozLJn3nrI1S4DY4doXax\\nA6GEkIhImYhUV2ROZH8Jzsev8XPzkLyZ/1HWhMBDYfiA3Ow3X+bloR1PcqOUkovlaOOOzFxkfq8z\\nl5CIiEiWhiqTiYOy2sU2RjlO7WIHTAkhEZEyEakOZNrGsle/entFpm1s8ggYUnvwd5adZDpxMnhc\\nB7/PUBTey2obK/bKjuxjcMQYqKno8arSx/IR85Jbc5VQFRGRnmW3hi3cEqUzZndbcWxP3GoX240S\\nQiIiZaJb21j26lfBMCzMaqHJRcXEmq2wudnZDvjgmBy1jc0toQmBd3aobaxYdUbgA7WNFbXsKq7j\\nJ4IvB3ORiYhIv5GdEHpzXQS/m322i1WrXWw3SgiJiJSR/Woby9Wv8flYzWn+R5kJgScMg6H1udlv\\nvryp1caK1rwSSi6Wo/XbndYxgAovHKu2MRERcQypNJmU1S72zqYox43w4XOrXexAKSEkIlJGolVZ\\nCaHDR0MqQfTW8syqWFMOgYHVB39n/1ye2T5xsjOZ9cHqisAHazOnZxR51U32MThqLFTuvZRZ+tBb\\nK3If85Jb2X8/04v8b11ERPrMiVmTSS9pitEZtTlx1N6rg9QutmdKCImIlBEznsic6Aw7CRaAQTWZ\\nhE0oCh2hg7+zwTWZ7Z0dmS9qPG/+AAAgAElEQVTfudzv9rbc7DNfBmWNtSPkHFspDgOrcx/zklvd\\n/tbbCzcOEREpKjs6M59nBwbM5HnWXm9joWzQnighJCJSRnwdXZkTb62ARPLNM7udaf7KzGpeB6On\\nlrSDMWIgjG1wtiMxp4WsmGW33/1zee6SYnLw8hHzkjtuF3xsUuZ0dvuliIiUtfcao4RjzmeqUXVu\\nRtW6mLc+stfbWGQ+9kqGEkIiIuXCtvFlV0H0NMdPLr54ed1wQh6+zGUnWBasgnARTw5o0H2Cbn2h\\nLS7ZsaTnpvgcMx4q/c72lmZYvbWw4xERkaIRScCCxkwCaMYYHx/tjNMUTOzlVgaddg5Wve1nlBAS\\nESkT7nAUV6plrCMEC5Nz8Ywa7PwDCEedRMvBOna8MxEswKYdsG7bwe8TSivBMuWQTMtYWxd8uK6g\\nw5EsIwflPuYlt7KT1HNzVGEoIiL9xptZFUEzknMK/XMfVUIhWytW7koJIRGRMtGtOujtrHax7EqJ\\ndz+CSJG2iw0fAOOHOtvRePG3i2Ufg7fULlZU8hHzkjtulzMRfcq8Ik/+iohIn1vQGCUSdz5bja53\\nc4jaxnpFCSERkXJg293nD5rbQ7vY3Bx88fLsMvdHLvYJ3RMs760q7gmaDXJ/XCV3smNJz03xOXoc\\nVCXbxba2wEdbCjseEREpOpG4kxRKmTnax4odcbZ3qm3sQCghJCJSBtyRWKZdLBiGhWuc7ZGDYPQQ\\nZzscg3dz1C4WSC4H2rgT1jYd/D6htBIsk0bA4Fpnu13tYkVl5CAYk+OYl9zqNqeZ2sVERGTPstvG\\npo92Pnvuq0oopIRQN0oIiYiUgW7VQW+vgPgeVhdb8JGzctfByke72NB6mDDM2Y6VQLtYdktS9mpu\\nUnjZyYZcxbzkjtvs3i5W7HOFiYhIwSzYFEm3jY2tdzOiZn/axgwsfSxLU0JIRKS/27VdLJ+ri+Vr\\nqejscb63Grr2/mZfcLk+rpI7M1R9UtSOHAvVFc52Uyus3FzY8YiISNEKx50l6FNmjPaxYnucHWob\\n229KCImI9HPuSAxXLPnG2BmG95PtYiMGwtgGZzsSy03VzTHj8rNUdCktET5pOAypc7azV3OTwhsx\\nAMYlJyaPxGD+ysKOR3aXjwpDERHpt7IrgmaM9mGz77axLiWE0pQQEhHp57pVB72zElJzCWUnWRas\\ncuZTOVjdJuvNVbtYHUwc7mzHEs5jKGbZx+BttYsVlZl5iHnJHZcJJ6ldTERE9t+7m6JEE07b2LgB\\nboZVu/jnBrWN7S8lhERE+jlvMGu5+ezJmI8eC+FkmW0uvngZwJFjnCXhIXdLRX9sslPNYdvwwWro\\nLPJ2sRMnOfMcQfFPfl1uPjYpKz5VfVJ0Dh0FNQFne1sbrGgs7HhERKToheI27zdGsW2buGVz4kgv\\ny7bF2dm197YxVQk5DNu27UIPIh5P4HbrCRER2SfLctbZjMS6/4vGnWqHaPJ0OHleJAahiNO61doJ\\n7aFMhZDHDQ01cPqR0BKEPb0bZN9fdJf9pv/FIRJ1zve4YXwDnDAJWjp79xgTFrR1OWNqDSbHZsOs\\no6DCW7xVHQkLNjc7q6rV+J3j2hws9KgkGoftbcl/7TCgEs48uueYl8Jyu5wE9awjnRURRUQkL9pO\\nnEioNcRb7iGFHspBC3gMYgmbN9ZGOHKYh0qvSZ3fxGU4axXYNnjdBh7TwMJmdJ2LAQEXhmEUeugF\\nVxQJoe3bOwo9BOkDgwdX67kWoExjwbYhlsCIxiEaw0gmcYxovNs2oQhGKOr8C0chHMUMO4kXIxxz\\nKk9cJrbbBNN0WixMA1wubNPAMAznMrcL2+NK/tftfMlKnWfgjCUSx4hEIRLHiCb3H411Pz+ewPa6\\nwefB9nmcbb8X2+vG9nky5/s84HM7YzoAtZdMp/2Pf8doDWK2BDFagpjtIewqP1Z9FVZ9FXZ9FXaV\\nH4r1TTscxbVuG67127BrAiTGNmA11BXveItU7aUzaHt83sHvyLIx2joxt7VhbmvFbO/CGliDNaQW\\na0gtdmURx5IAULtqM20Thhd6GFIkcvbaICVPsZBb1oBqtj67iOXXnFPooRywC46p5+n3W3Y7f0Ob\\nRWfM5vJpXqp9eq9PGTy4usfL3H04DhGR0pSwnETJrsmb5GkjWTljdEWyEjhRjFDMSepEkgkgcBI4\\nbhe2K5XMMbHNVFLH6JbIwevCDlSRSJ3ncTu32fXLbCrZFI5mxhRxxuNsOxU8TqLHab3KJHEyCR27\\n2o/tq8H2ZRJAeN25/fIci2O0dGK2OAkgNu/Es2QD9gAn+ZMYMRC7rtJ5/EXOaAniWrMV19ZWEocM\\nJDZjKnaq3UV6x+xlrIWimNuTCaDt7eDzYA2pJTH1EGIDa5y/GyktvY0F6Z8UD5KiWMgdw8AwSvc3\\nkj2Ne3SdyfpWi8eXRblsmpcqb4k+uD6khJCI9F+2vVvyxjmdTJKkKnXCMYxQBCOcrMoJxTAjMQhH\\nndvG4k4FTrLyxknemOmqnFSFDp6sqpzqAHZ9ViInVdGzvyw7nUgyojGM9lA60ZM+PzX2aLJqKJXE\\n8XuwvR5snxu7vhrL50kmebzOf92uvnn3t2yM9i6n+qfZ+WeEIli1ldgDqkiMHgL/dhrRv32Y/7Hk\\nimVhNjbjWrMVIxwlMW4okSPHOYkzOXj7+zdiWRg7OzC3teFqasXoijgJoCH1xA8bAwFfXocpfeAA\\nqw2ln1M8SIpiIXdMp2i8VHNsPY17bL3JutYETyyLcslUJYX2RZ9gRaQ4xROZlqrkvDjdq3LiTsIm\\nFINwBDOUrMQJR53Wp1TCJJW8SVXlJNus7Ox2K487U5Xj92FXV5LwuLDdTpJnj1U5vX1MkeyWrGRi\\nJ92qFcuMPbZLq1Yq0ePzOFUo3Vq1PMVRARGKJtu+OpwEUGsntt/rtH0NqCI2fqgz9uwPczWB0vhp\\nKhLDtbYJ19om7Go/iUkjsIbWl+6nqGK1t1joDONqasVsasXc0Y5VXYHVUEfsqHHY9VV6LvqbUnhd\\nkL6jeJAUxULuJCuESvXtc2/jHlfvYnVLgieXRbl0mpeAp0QfZB9QQkhEcitdlRPLzE0TiWcqdSIx\\nCHjwbml15ssJp5Ig0UxSJxJzJjN2ucBtOomZ7GROKkHjzqrK8bixAz7s7ESO253fd7lUq1Z21U66\\nRSxZkRSOZtq2LKt7q1YqwVPlx/ZXZ7VweZ2Kk2J+h44nMNq6MJs7MJqDmM0dkEhg11dhDagmMWUE\\nsfoq8Hr2va8ifpxGaxDXqq24tjSTGDGQ2Myp2LWVhR5W/5UdC/EE5vZ2zKYWzKZWiFtYDbUkRg0i\\ndtwEJxEq/VcRvy5IASgeJEWxkDuG4VQIUZrHdF/jnljv5qNmJyl0yVQvFUoK7ZESQiLisO1dqnLi\\nWVU5sayqnGTSIxRx5spJnk4nRaIxJ5Fjmt2TOclEjmEacPI0XFta0okbu6YCPNXd58oxC9TUbNmZ\\nVrJkxU5mO7r7+WayVcu/y3w8dZXJVi2PMwmzz+MkqUrxly3bxgiGnQmfmzswmjsw20NYNRVOAmj4\\nABKHje79xM/FVv5tWZibm3Gt2oIRiiTbwsYqAZFvto3REXIqgJpaMZs7sOqqsIbWETtpKnZtiVST\\nSW4U2+uCFJbiQVIUC7ljGv2yZSzb5IEuVjYneGpFjIunePC7S/TB5pESQiL9gWXteaLjaLzbXDlG\\nKAqhaLqSxUlqRJ2kTnKyYdyuXebLSSZz3EYyyZNctcrjggofdk3AqcpJrWS1P0mPmdNItIX65tiA\\nMyl0OomTebypyqRurVrRuJOUSiZxnESPF9vvwaquyLRtpVq1SmDy4wMWjWO2dGDszCSAcLuc5M/A\\nahKjBud24udi+SSSagtbvQW70k9i0nCs4QOLZ3z9UTSG2dSG2dQC67biWbEZq6GOxIRhxIZMcZLD\\nUp70dyfZFA+SoljIHcMAA4wSzbHt77gnDTRZudNi9vIYFyoptBt90hIppF2XIs+qyulWoZOc7Di9\\nFHkkhhlOJTbiEM9MemykkjkuF7gMbLcLw0y2WXkyyRw7UJXZdmetYNVXDuYNPVnNZGQtx569mld6\\nO5XoSljd27T8Xme70oc9sKr7+V5PeX3YsGyM9k7MncnWr50dzsTP9VXYA6pJjBuKdfwEqMjjJL0F\\nPt5OW9gWXJt2JtvCpjlz0kjuWbZTadbUgrm1FbOtC2tQtTMf05WnEn1npaqAxFFOr8Oyb4oHSVEs\\n5E66Zaw07fe4DYMpA02W7bB4ZkWMCyZ78CkplKaEkEhvZS1F3m2i4/QqVrFM5U1XJLlqlVOh0m3S\\n49RcOK5ke1U6mZNM4rh3qcqpqcT2uEikJkJOTYZcal+idi35tTOrau3WhpY9UXTqfMNIVvB4u1Xt\\n2LWVWA113Vu1cr10einrimA2dyQTQB2YLUHsgA9rQDX2oBpik0Y4c+T05QeuQpR/Wzbm5p24PtqM\\nEQyTmDCMyKfGgt/b92Pp70IRJ/mztQVzWyv4vVhD64kfPgZ7UNaS8AOrndc+EVBbiHSneJAUxULu\\nmP13UundGAaHDjZZusPi2ZUxzp/swesq0QeeY0oISfnZdSny7MmPd6vKcdqsUitCmaFosv0q7sy3\\nk1q5yu1KJ3XS56XOT1XlBHzYtQHsdCLHnblNf5Vq1Uq1q6USPi4D9/yVu60ItlurVnLbGlTjbPtT\\nrVpeJxEmexdPpCd8Nnd2YOzscCa2HliNNaAa69BRxAZUF37J9L78JJJqC1u1Gdvvc9rCRgzs33+H\\nfS1hYexox7W1BXNrC3RFsBrqsIbVEz963N6XhC/VT6WSe4oFyaZ4kBTFQu4Y/X8OoW4Mg8MHmyzZ\\nbvHcyhjnTfLgUVJICSEpMakEQyqRk6zMSU+EnFVdQjjqTHq8hzliMIz0cuJ2VjInk9zJqsrxuaCy\\n2qnK8aaWJ3c71ynHqpNYIqslK5nQCWfmJUrPzxOKQjyRac/yZ6p5qPJjDatPVvZ4sSs8TquWvpT3\\nXnJCXmOnk/wxd7ZjtIewagPYA2tIjByEfdTY3k/8nE998EnEaO3E9dFmXBu2Z9rCBlTn/X7LhdER\\nciqAtrZgbmtzloQfVk/s+InOcd7f57hUP5VK7ikWJJviQVIUC7ljGBjJf6WoN+M2DIPDhxh8uC3B\\n8x/FOHeikkJKCEnfSLUDdXQlq3G6J3LSkx6nEgqhTLuQGUklH+KQSDjLiyeTOU5SJ5XYyarU8bid\\nZE5tANtTnazKSbZceYp8Oe++lqqYSh37dNVOFCOUNQlz6nxIJndSFTzJyp2aSqwhdZnz/d6eW7VO\\nnIwVivXxA+1nIrFk1U97pvrH48IaWIM9sJrY2Abni3gpJNnyVf5t2c5qYSsbMdq7nLawc06ACrWF\\nHbRYAnNbK+aWFswtzRBPYA0bQGJMA7ETp/R+RTa1AkiKYkGyKR4kRbGQO2WwytgeGQZHNbhY2JTg\\n/1Y5SSF3qR6EHFBCSPbOtnepyolnWqaSLVbd5soJRzOTHUdjGKFYZp6d4fUEdgadypus5I2z7U4n\\neGyPC6p82PWVkJ4rx52u6Cm66oZilF5VKyu5E85q28qu7AnHnOehwptZOr0imegZ5MdKtmqlkzy5\\nqowq4xfeA5awMFo7MwmgHe0Y4ajT9jWohsTE4Vgn1ZRuoiPXsRCN41qzFdfKRmyfh8SkEVijBpdG\\ncqxY2bYTg1taMLc2Y+7owBroTAYdO+VQZ9U5vS5ILikWJJviQVIUC7ljlNEcQrsyDI4e6uKDrQn+\\nuirGpyeUb1JICaH+zLKc9p50JU4ssx1JTYScXLUqHE9P1uv8y1rByracqhqPC9uVqsBxJj5OrVyV\\nqcpxQaA6PU+O7XVn5sr5+KHE5vyr0EeldMUTmXmNki1xme1dkjyxeLdJle2KVNuW11k9KbWdPL8g\\nX5SV2Nsz23Ymft7Z4SR+drRjtgaxK/1Yg2qwhtSSmDqy7yd+zqccxYLR1oVr5SZc67aRGD6Q2Ixp\\nzqTF0juRmNMCtqUFc3MzuEys4fUkJh9C7JS6/CwJr9cFSVEsSDbFg6QoFnKn3OYQ2u32BscOc7Fg\\nS4KXVsc4e3x5JoWUECpGqSW1s6pwuq9ilUzUpFZbCieXIE8vue1U5xBLLkXucWG4U0uLu9KTHhtu\\nE9vtzkx6XBtwkjip5E8qmZPLZEEZ/pH1KN2qFcssK7+n7VT7nGU7rVkVXki1afm92DUB7MHJ+XlS\\nVT6lsHR6sY+vr8QSzmpfO5KVPzvbned6UI1T/XPkWOxB1fn58l0sDiYW7GRb2IpGjJag0xZ27gl7\\nn7hY9syynVjc3Iy5pRmztRNriDMZdOywUdjVFfn/IK7XBUlRLEg2xYOkKBZyxzTAKN0cWy7G7TIM\\njh/uYsHmBK+sifGJcR5cZRZj/fgbRoFY1p4nOs6eBDlrZSUza+UlI5rVepVaitzjxvZkzY2TSux0\\nW73KC3WZ1auchE6yxarY/sL7e9+vlWzVCnVvyepW0ROKZCa+dpnJVi1vuiXL9nuwB9RgVezSqlWM\\nz+fB6O+xsCe2jdHWlW77Mne0Y7R3YdVVYQ+uITGmAeu4iVCMEz/nU29iIdUWtnwTeFzEp47EGj1Y\\ny5YfqK6Ik/xJJoGo8GENH0D8qHHYQ2r7/niW4+uC7JliQbIpHiRFsZA76Qqh0vzMmatxm4bBCSMM\\n5jfGeXVtjLPGeUr2mPSGEkIptr1be1X3qpxkYic1F0vWqlVmJLNsdnop8lRCJr1ilRvbbTqVOp6s\\nSY8DPmyvO79VOcWkFDOuiQSEshI7oawKnuztcAQjGsf2ejJLpFd4M9t1lc6qWqlWLb+nvL+8lmIs\\nHKhwNNP2lfxn+zxYg2qwB9UQmzAMe0BVeccBHFAsGO1duJZvwlzb5FSuzJyKPbi2vBJoByORwNjW\\njmvzTqcNrCuCNawea8RA4sdNgEp/YcdXDq8Lsn8UC5JN8SApioXcMct4DqHd9mXwsRFu3t4U529r\\n48wa6y6bpFD/SAglrHQbVTqRE413X5489WU+EksuRR5Lz5eTXorcNLrPhZNK5KRWsvKYkEre1FTA\\noBpnKfLU9b3JuXLKJHh6pRhecWwbYnFnwutUe1Yoax6eULT7+ZaVqeDJrtqp9mMPrul+vs+jXy72\\nVzHEQi4lLIyWoJMA2t7m/DcUdeb9GVxLYuohxAbVlu7Ez/m0r1iwbcwtLbiWbcTY0UFi4jCinzmh\\n8MmLEmG0dzkVQJubMbe2YNVVYg0fQOykKU47YjG9ZvW31wXpPcWCZFM8SIpiIXfKfA6h3fbnMpg+\\n0s0/N8V5fV2c08aUR1Ko8Akhy8LoCGWSMrvNlZOsxInGMhUa0RhmJJ6pyklYmfYpT6a1Co9TlZNe\\natzjxg74obbSqcpJJXdSiZz+WpVTTPL5xSMSw+iM7JLkya7miTjLqIejYBrdW7WS23Z9FdZwn5Pc\\nqUhW8nh6WDpdDk4xfQntjWAYM5X42d6G2dyBXR3AGlyDNXwgiSPGYtcGSv9x9oWejlEsjmv1VlzL\\nNoJpEp82Euu0I5zXa+lZLI65tRWzcSfm5p0QS2CNGEhi/DBiM6eBv4iTkvp7kRTFgmRTPEiKYiF3\\nynmVsZ726TKYMdLNvA1x/rE+zmmj3Rj9/Htg4RNCc5YSeHmh8+U7tRqV23Rap1KJnWTyhkqfk9Tx\\nup2qHG8ymaOlyEtHvl5x4gl8T7yJXV2RaclKJnms2kBmfp7k+fpCWQRK9d0HIBjG98xbWCMGOtU/\\nx07o/xM/51MPseB+9yOMYJjY9KnYQ+v0Or+fPPOWOa1go4cQO/0IZ2XBUjl2pfy6ILmlWJBsigdJ\\nUSzkjmmQ+l8pyte4PabBjJEeXl8fY0O7zeja0jw++6vw315iCaxDR5E4dFShRyJ9IZ9fSkyT6IXT\\n87d/ya1S+YK6B4ZlYVdVEJt1VKGH0j/0EAtGLEFi6iHYwwf08YBKXMIicfQ4rEMGFXokB66EXxck\\nxxQLkk3xICmKhdxxFhkr2RxbPsftcxvU+AwSlp2/OykShU8IgfNsqvyvPOTreTaTVWKKo9JRys+V\\n4i23ejqOhgGGqeN8oFKxWYrHrRTHLPmhWJBsigdJUSzkjmGqZWwvSvSwHLDiSQi5yuWQl7l8Pc+W\\noTgqNaX8XLkUbznV03E0k5fpOB+YVGyW4nErxTFLfigWJJviQVIUC7ljalLpvSmXYrTiSAgZRvkc\\n8XKXr+c5tV/FUeko5efKSNbYlvJjKCY9HcfUe4OO84Exkv9XisetFMcs+aFYkGyKB0lRLORO8vNs\\nqR7SfI+7RA/LASuKhFDFiIG4Dh1Z6GFIH6jN1/McjUNDLX7FUcnIWyz0hZ0d8OE6Kkr5MRSRHmNh\\n+UaYMBSmHNK3Ayp1i9fBxGEwfmihR3LASvp1QXLn2bcVC9KN4kFSFAs5VuNl8MjqQo+iV6bmedyr\\ngyHqB7gZPMiT1/sptKJICIW2tpBYsbnQw5A8q508nLZ8Pc+xOL4dHUQURyUhr7HQB4zWTjzb2oiW\\n8GMoFnuLBc/mFhIBP5ah+QIOhGdLC4m1TVhxq9BDOSCl/roguVMLigVJ02uDpCgWcsvyuLA6ojQ3\\nBgs9lAM2cUQVH+V53E0tUQa7TLbbpb869eDBPSfPiiIh5EwqXS5FWWUuX8+zWeLT5JejUn6uFG+5\\n1dNxTL036DgfmFI+bqU4ZskPxYJkUzxIimIhdwzNIbQ3Rqn20h2g4kgIlfL05nJg8poQUhyVlFJ+\\nrhRvudXTcUzN06TjfGCMEo7PUhyz5IdiQbIpHiRFsZA7plHSUzXmfdwlelwOVHEkhLTsfPnQsvOS\\nUsrPleItt3pcdt7U+0NvaNl56Q8UC5JN8SApioXcUYXQ3vef390XjeJICOV6evNojMAN9xO9eAbx\\ns47e7WLfH17B89L7mXtvCWJ0Rmh/6x6M5g4qvvso5oYdkLCIn3wo4Rs/A6aJ95E38P3uZexBNQDY\\nAR+dD92Y2XF7F1XX/JLQdz5L4tBRAJgrN1N11U+xRg1OX63rx9dgjW3A/doi/Pe+AKaBXRMgdNcV\\nWCMHE/j6HzA3bk9f32zcSfzYCXT96ovp8zxPv4XntQ/p+nXmPO9Dr+F95m1wmdj1VYTuuBxr5GAq\\nr/oZRjia2d+6bUQvmk74lotxvb8a/4+fwkhY2F4P4dsuccYei+P/wZO4318NQHzmVMI3ng8u0zlG\\n33oYc0sLGAahOy8ncdQ4PM+9g+/h1zPHtSOEsa2Vjle/i13phy/dR9VbKwCbxOFjCN12Cfi9mKu3\\nUPGdRzG6ImAYhL/6GeIzph7Yc17AVcbMFZuo/I//oePv39/zFboiVNzxF1yrt4JtEz3/RKKfPwMA\\nz8vv47vvRXCZWA11hL51GfbwAQC4X12I//evQDSONbye0Pevxq6rTO/W/c9l+H/+LMEnbkmf5/3f\\nN/A+/iZgYI0cROjOK7AHVkNHiMCdj2CubXLG8JkTiF57pjP+9duouPMRjNZO7ICX0Pevwho7dO9/\\nJ407qfjuY5hbmrEDPqKfP4PYJ45xxjVvGb5fPY+RsJzn82ufIT59KlgW/l88h3vuUvB5CAyrJ/Tt\\ny7EHVGNsa6Pijj9j7mgHyyZy7ZnEzjkeAP9PZuN5ZSF2bQCAxJghhO65FsJRKu5+Atfi9WTHlNm4\\nk8AtD2WOf8LCtWoLnT+7jvisozLH6uHX8c5+i+DTtx34k36Aq1+5lqzH8/RbhL99Oa53P6Li7id6\\nd79Zaj52Ex2zb8MeMfCg9nNAQlEq7noE1/JNYNmEb/wM8dOP7P31UnpcZYyDX2UsHMX/s2dwL1wL\\noQjRC6cTvWYW4Lw+V/zwCYxgGNs0nNfMac5rt/fROXhnvwWRGIlpIwn915Xg3fukgv7vPoZn3r+I\\nfuo4Il85t9tl7jlL8P/yeYjGMTpCBP/8dexDBlF99p10/fS69HtG9vWsScPp+q8roapi7/d79+PY\\ndVVEvvQp54w+Wp0tcOPvMVc2QsAHQPz4iYT/86Ier7/r35yxtYWKOx/B3NkOCRu+cT7MmAbs/bUR\\n2OP77d5eR3p6vyVh4f/J07jn/QsSFtF/O4PopTO7jdvYtIOqy++h6/4vO/dl2/h+81c8f1sEQOLQ\\nUYRuvwwqvJkbxeJU/tsviJ11dPr1vsfXRsD3+1fwPPcOJCxinz6eyH98EjpCVF33393GYn60mfDX\\nzyd69ek9PiajrRP/9x7DtbwRKrzOe86Vpzpj+MdiKm7/M/aw+vQ+gw9+DSr9+/GMd2dsbaHqcz8l\\n+MQt2PVVznltnfh/8CSuNVshHCXyhU8QO/eEA963s7MS/YYi+aF4kBTFQu4YBoZhYBbwmD6/Mkrc\\nsrlgio8HPgjTFrG58cS9f+5J2Z9xL90e5xdvhwnFbQYGDL59coBBgd1TPXu6XrkojoRQDn/JdC1c\\nQ8X3H8dcu9X5ULeH/Ua+cDaRL5ztnGjvouqKewj912fBNPHf8zSJ8cPp+uUXIRKj8t9/hee5+cQu\\nnI5r0VrC/3kRsU8fv9s+3XOW4P/xU5iNzd0qB9wfriX26eMJ3XVl9xuEowRu+xPBp27FGjUE75/+\\njv+HT9H1P1+i6xdfyDyexesJfP13hG6/HEwTo60T3y+ew/vXd4kfNzF9P663luN9+m2Cj3wDqirw\\nPjqHijv+QudDX6fzL9/IjPP1D/H//FnC/9+5YJoEbvsTXd/9HImPTcb9t4VU3P4wwWe/jffRuZgt\\nQYLPfAssm8p/+zmeVxcS+9Rx+H/wBIljJ9D172djLt9I5Zf+h46/3kXs/JOInX+Sc0exBJWf/zmx\\n/3cW9uA6fP/9PMQTzhcBGypueRDfA38jcsM5VHz/CaIXnETswumYyzZSdc0vaH/zx+A+gAm8ClGx\\nEU84ScI/vOIks3q4b99Dfwe/l+Czt0MwRPV53yNx/CTsmgoqvvsowQdvxJo0AteCjwjc9Ac6H/sm\\nriXrqfjBEwT/8g3sEa2NrhQAACAASURBVAPx/+hJfL/6P8J3XgHhKL7fvozv0TewhtSl79dcugHf\\nQ3+n46nboLoC/z2z8d37V8J3Xon/N3/FGlrvxFZXhOrzv0fiuIkkjhpHxa1/InrVacQ+fTzuuUsJ\\n3PQAwae/tde/k8C3/0z8+El0/fYG6AxTec0vSYwdijViIBW3PETnQ1/DmjAcc0UjVZ//Oe1/+x6e\\nF9/DtWwjwSduoXbCUKyv/h7/T58h9IN/w/+r50kcMZauG87BaGql+tzvEJ8+BXtQLa5F6+i651oS\\nR4/rflx//yokrD3GVPCpTLLFf89TJCaNIH7WMenzXO+vxvfga06SqTcxk24Z27/bmmu2Yja1ZeLU\\nIDex2sdVIP77XoRKP8Hn78DY0kzVZ39C8LAx2EPre3W9tL1WCB3cY/T/4jmM9hDBx77pxP5Fdzux\\nP2kEldf/htB3Pkv8lMNw/30RgVv/RPD5O3C/uhDv/86h8883YVdXEPj6H/D9+Q0i/++svd6X98l5\\nTgJ8l8dpNHc4r8cP34Q1egi1h30Z/29fJvS9q5JXcGJp1+v5f/YM/l8+T/jbl+/9QRq7xGOqXSzP\\nseH6cB3Bx/4Te0jdvq+7h7+5irufIH7KoUSvOh1jRzs1534H4+lvYURiPb42Qs/vtz2+jlRV9Ph+\\n6338TcwN2wg+czt0Rqj63E9IHDqKxOFjnIFHYgRuexgjFk/fl/vVhbj/uZzgU7eC20Xgpj/ge+QN\\nIl/4RPrx+n88G7NxZ2Z8HaEeXxvd763C88oHBB+/BVwmlV/8Ndarw4idfWy31zLvX/6B59UPiH72\\nNIjGe3xM/nuehoCf4HPfBssi8JX7sQ4ZRPzjh+NatI7o588g8u9nH9Rz73n2Hfz3/hVzW1u3v9GK\\nb/8Fa9xQgj++BmNrC9UXfp/4xyb3/Le/N6oCkGyKh5LkWrwez+x/Er7zClzzV1Jx9+PO6+1BqPnY\\nTXQ8c3vf/iDW12ybim89TGLi8PSPWLtyv7EE/y+ehVgca9IIur7z2X3+gLSbZIlNIXNsi7fFGVvn\\ncsZwgL/v7+t6sYTNHa93cdfHAxzR4Obp5RF+NC/ET86q3K/rfXpi/15dLGXfCaEX34Mfz4ZYwvn1\\n63ufg49Ngv/4H+iKwENfg2Ub4dPfhRfvhKf+CWuaoHEnbG2BI8bAr/4dagKwuRm+8UfYtMPZ30Un\\nwZFjMXa2Uz3rWyTGDcVsbKbzTzdiD6lNDyHw1d9hbtjebVjWiIHdqmNSvI+8Qfim8/Dd/7IT5K69\\nR0rFT58mfso04h8/DIDYWUc5XzxdBgS8JCYOx9zaAi4D98K1GJ1hfH94BWtwLeH/vBBr0oj0/YZ+\\n/HkCX/u9c9vk/boWrcXctIOqS36I7TaJ/L+zklVLNti2cwxdBkYoAn5P9/FG41Tc/idCt16CfYjz\\ny6jnlfexG+oI/+eFuF9fnL6+PaSW0J2XQ6qK4vDR+P7warf9Ga2dVHznUbruvR7qkllPy8IIhjJj\\n8DljiF47i+hVp4HHhbGjHaOjC7u+EmwLzxtL6Ljj8v+/vfuOkqLK2zj+reo8gSGDZDCASDSsYk6Y\\nxaxrwjWtrwFzRkEFDLuCOesqCgZcFVQUE5gRURFRRDAAKkiQND3dPd0V3j9ud88ME4Rd11H7+Zwz\\nB7q7uureqlu3qn83FAQsvK064XVuTfD9uTV6Y0Xufw18n9DEDwg//a55LPxVR0MoQOzKR7G/WQrh\\nIPa3Swl8+g12n85E7plMYNa3kMpQMmiEaZUfYSo3a9mafI8UHJfMAdtSecZ+WD/+TMkJo3G7tCEw\\n7wfSh25P5L5XCM76BoIBvI4tSYw6EYqjhB9/i/DYqfhNYjg79ST8woeUvzGyRnmwv15K0SUP1yon\\nlSfuQebwATXeC3zxA4Gvl5C44wyKT7uj/rLm+1iJFPgeluOC7+NHg9gLfsTt3gFvS/NIbXf7LbCX\\nrML6aRWhyTNJH7EjfqeWAKSGHIS1psKUw+lfYqXSJG44iegtk/Lb9fp0pnzKtRAKQGUGa8VavA4t\\nIGCRuupocD0IWNir1kHawS8rwlq5lsB3y8gctC3YFs7uvbBGPIn91Q942Vb3us6TwNzvSdx4ktl2\\nkxjuDlsQmjab9PG7kxp2DF53c154W2xi8r+uAm+LdiR7HZ5vRXd7dyb8+FtmHZ6PVZEEG6x0BoK2\\nCQi6DoEvvyfyyGvY163E69Ka5OVH4rdrjvuXzci0a2HyC7g9OxL4emmN4xD46GtCr35K+fND8+9b\\nK9cRu2ECqUsOI3L/K79YRwQ+nE90zCS8TZoRWLgcPxYmfeyuhJ98i8gjr5MZ2J/UFUcCEJrwrukl\\nF7DxWpSSuuoY/GiI6F2TscqTxK5+jPShO2AlKold8i8C3y2Dyozp5bDtZpB2iI6eSHDmAvA83C07\\nkhx6FJTECHz0NbFRE8ACt1dnU38ELAIfLyA24iniL1ydT2/+teOa3g9vfg5BG7dfN5LD/grhqqp/\\nY8p88I3ZJG8+GQIWfocWODtuaX6gZntAbOxyVTu59jEw+/05/LJi8DziT19meljcOwUr4+BHw6Qu\\nOdzU17keSbMX4jeJ4W26CQDJ608k/OKHxCdcBuEAhIuIjz0fv0kRwQ++xOvUCmeP3gA4e/cl0akl\\nBCzCL86g8uS98ZubXg/Ja48116z10hkdNYHgR1+b/bhoOZbvU3rgtVQ8OASrPEnk/imQcbF/XInf\\npBivWxtiVz5qysrzM0gNORAwgSR7xJPZ5YrwurUBwO3aitjwJwjO/hY/FqnKbzxJ7OrxBOb9gN+q\\nDAI2zjYlELAo3esq0kcMwO3fNf86cdvpuL06E5w2h+jtL4Dn4ccipkdJjw418rSh11vrh5VYFSli\\n1zyOvXQ1bq9OpC49okYvxvyy9ZxzibvOAN8cf3v5agjYUBTG/nxhvXWj375FvdfbeuuRBq63wTdm\\nm8ajSBAiQTIHbENo8kzcfl0BiI16ivRhOxC9b0p+W85+/XH26mPqnngSa1U5XvOSfDpCk2ZgVaRw\\ndutl+psHLCzfq7duDE39jPRB20Gp6aWTPnwAockzyRy4bX4f2ouWE7l/iinL0SBUOPXmKTB3Mcmr\\njzFlngDObr0Jvf4pzl59CM7+FoIBQq98gl8SJXXeINztNjfp/vd7RJ5421yjyopJXn0MXre2tY/n\\n8jWEps2m4oFzKD3g2vx+sdZUEJw+j3VjTjXnfvvmxJ+81JxHv1DP1uk/+Y78eak8/CHZ3y3FXr6m\\nZl393x5Ly6q5vj8Z+5ulxEY8ReCzhbjd29WZT2tVObGrH6Ni/MV4XVoTvfk5ordOMg3HG8OyNnrK\\nwUTGZ9Q7CX5Y52FZ0L1FgMt2imFbFhPnpXl6biUBC5rFbC4aEKVTWYCRbyfo1izAcb1Nj+Lc6/al\\nNu8udpi5xCEWNPGgxWtdzn05zsqkT/OYxXW71+7R8+jsFG9/X0Fmvaep3r5fMWXRqmW/+tmlOGzR\\nr6257x20RZjbZ6Qor/Q2aLk9ugQphImEGg4Ifb0Urn0SJg+DFqUm8DNoFHx6K9x8MuxyBYx/C25/\\nAW4YDNkbHd6bC29dDy2bwGl3wk3PwKgT4e93wdkHwP7bQCoNR94E8RR0aYP90xoSN5+Cu+3mtZKR\\nuP3vG5yh5JhTAUxA6BeGotlfLyX4xmzKXxuRX87Zt6oXgT33e8KTPyL+6AWQTON2a0Pl6fvibrc5\\noZc/pvjvd1H+0nAojpJ4cEi1NVdt1y+KkDlwO9LH7IK9cBnFJ44h0a4Fbu/OJK85jpJjbzY30J5H\\nxeMX10hv+Nn38VuX1Qi0pI813b5Dz07PbiobDMjte4B0huiYiWT227rG+iIPvYaz21ZVLZ9ActRg\\nis65F//6p7HKk1Q8dG7Vd8JBIqOfIzL+LdytOuFsu7kJSng+fosm+XV4bZthL1uT/561Ok7kX6/h\\ntWxCxROX4DcrwV6whNLT7oCXryF16j6UHjISZ4ceFF30EKkhBxN5+HWsjAsVKZKjTiRz2A7ELnmY\\n6N0vk7rsCIoue4TKk/bC2bNPtufWnXidW+P07mLKzg0nEZz9HfaSVQRnLiA+eRhYFtGbnyMwfwl+\\nOEjk7peITxyK37IJsWGP19h/+bxs3s70itoAbt+uJPt2xfrh5zrXlVN52j6UDB5D6W5XYMVTpI/b\\nDW/LjlAcxV6wBHveD3hbdiQ49TOsNRXYK9ZhL1qO2709RWffi/3jz7hbtDdBB8vCGdgfZ2B/AjPm\\nVw2pyQkHsz29xkE4SMW5B9foPRC75GFCr3xCZu9+eN3aEpizEK91GQSqemN5bZthL1+D16szUPd5\\n4vbpQvjZ6VQOOQhrdZzg21/gbL0pfvPSGj3oIne8iNulDX7HVrgdq4ZNsjpO5J6XSB+zqxk6cdGh\\nlBw/mtCUWViry80Py5ZNsH5YibNDd1LnDcLbvB3hf71G8Tn3En/2Spydt8qvzvrxZyKPTiN53fE1\\n9kf05mfNkM/SbADU9Si65GFSFx+OHwzU3n91sgh8vojk8GPxenak6PQ7CD86jfQxu5A5ZAdKd72c\\nylMHYn/3E5GHXqPiyUvwm5cSenY6RUPuI/7iMFJDDib0yickbziJwIz5WMvWkP7bXrh9uxJ+5A2i\\nd02m4pHziTz4KgRt4s9eAZZFZMxEomMmkbriKIoueJDEP0/GHdCD0IszCT/9HtkMrJePqtfhJ94m\\n8MX3xCcNhXCQ2EX/IjTlEzKHbF91vDeizNs/rcbbpHlVvdO2KfZPa2rtww1drmoX1/W+hfXTGhKj\\nTsTdcUvshcuJ3vK8aTDI1inFp9xG+SvXEbnnZdNb7OXhkKik5PjRuFt2xFodh4pKgh98Rejq8Vjl\\nSdKHDyA9eE/sRStMXXDVOOx5P0CTGMmLDwfLwl64HLt3OUWn34m9fC3OtpuSyn5WXeqqY2q8Lutx\\nJuVvXo/ftJjik24leePf8Lq0JjJmIpEHXsFaU0HyhpMIP/cBlmd+dAP4kRAVz1xB5JZJZrmfVmNV\\nOkTGTsPyfOLjLsJeujqf3+idkyESIv7yNVir45QcfgNss9l6ZcCq8dr6uZyiyx4hPvYCvJ4dCb46\\ni+iYiSQeGFIjDxt6vbVXxXF27EFy6NH4rZsSvf5pYleNI3HX/9VcsKFzLlvvFJ84hsAn38A5B+I3\\nL8Xr2aneutHt0LLe62199QhQ7/XW/mm1GT6VL6vNCM1fApZF6Ol3zRCuY3YxAaHq9xThIOFxbxK9\\n7Xm8Nk1xBvYz6/vqR8KPTaPisQuJXfdk/jsN1Y3WT6vxB3SvkYbq11SAyG0vkD5h96oW8ZJYvXly\\n+3Yl/PyHJLfeDNIZQq/Nyu57C79ZCekDt8PZtz+BT76h6Kx7iU8air14BeFJM4iPvxhiYYLvzqVo\\nyP3EXxpe69j7bZqRuLPacc6WNfv7lfitmhAZ+wbBt7+AtEP6lL3rDCptEA0LkepUHn5zgRnziY6Z\\niNeuOYHvluHHwlSevi/hcdNMY+I+/UldcRQAoafeITJuGtg2XosmpK7ONojd8aJpELuyWoPYRQ8R\\n+DbbIDbiePPbL+0QHf2caRBzsw1iVx2dbRBbQGykaRBj+y3A8wCLwIcLiI18kvgLw/Lpzb92XKL/\\nfI7gm3NMg1j/biSHHVujQWx9pXsOJX3YAIIfzMNeupr0IdtTed4gM+XBDf8mMNt0DMCH5MgTcLfe\\nlNjlY/FLogTmL8H6aTVe9/amwXS9YbjRkU/lG5By/HCQigmX1UpH+PG3SR+5E8FNmlPfb9ng+/Nw\\ne3fB62oakCqP3Y3SQ0eagNDGnCu5OYQ2/Bu8syhDMgOPHVqK6/nc9H6SpeUey+I+j8+p5IGDimkW\\ns3lxQZrL30jwxGHZIcXrbccC9ugS4p3FGTZtFuConhEe+CTFknKPhw4uoVnM5tLXK3hxfppT+tXc\\nn3/rG+WKvYtZuqKiwbSuqPBoU2zntxsJWDSNWqxM+DSL/vJy8Up/I/bMH1fDAaFpc+CnNTCoWi8K\\n2zI9gHp3hofPhT2vgr/uAsdUG3N/6A6Q60I+eA+4/FG4MgXvzoXVcRg5wXwWT5mgUbe2+EEbd+tN\\n6wxRFg25D3vRei2WHVqQuPvM+tOeK3UNhDwjj04lfcLu+V411QXf+YLYxQ+bFrJsT4nEw+flP88c\\nuC2Re14i8MVi3B26r7fdqlBr6tqqoWLe5u3IHLAtwTfn4EdDJkDx8nC8Tq0IPzqVonPvJ/78VfkT\\nOTx2qukhU1cebKqGBVTP9qpyiobcj18aI3XRoVWfV2YIT3iX8mevqOoeuHIdsWHjqBh3EW7vzgRf\\n+5Si8+6n/NXr8nNCVF5yOJXnH0LsqseIXfuEWWet7fqmFTb7XnjCu7ibtsVetILik2+rlmaL4LQ5\\nxG5+lvRfdyHyxFtkDtqO8KQZJG86icCcRdjfLiN683M4O29J+qidiV0/AVIHE5i5gOjahAk+AiQq\\nzY+4vl1M2enfjeBnC3F7dDBd7o++CWeXrcjs29/cHD/0Ks5OPfHbmHJZefxuBN+fW2v/2V8voejC\\nf9Xa3ZUn7UnmiB1rH4fcscjmry6xEU+S2aknlRcdgrWynOK/3UrwtVk4+25N8obBxK55AivtkNmr\\nD16PDviRIDguoWlzqBh7Pn6LUqL/eJbY1eNJ3HPmetutXQacffpTvk9/Qk+9Q/Fpd1D++nX5rtbJ\\n0aeQvO44iobcT+Tul3B26Vn38QxUHc+6zpPEP/5G9IanKTlkpBmKsEdvSKar1uO4Zg6qtz8382xV\\nW7+9eAWcez/ONpuRPnF3sCyKLnmYytP3IX3cbiZwesIY3P7dcPt2rfHjL33aPkTvfhlrySr8jqb3\\nlP35IorPvpf0CbubVvuswCffYK2Kkxn0l/z2ozdPxNluc5xdehKY8VWd+68W29Q3Xi9TD3idWsGm\\nm0AwiN+iFL84ilWeIPTuXDIHbJP/AZo5ckdi10/AWrKq5vlqm3XkhsC5PTsSfvZ9c368OQerPEnJ\\n+/PMtjMOfotS7K+XQDCAm51bKzPoL/jDH8/WceuVg2qvgx98RfrQ7fPnc/K2quGo+extTJn3fdOL\\no/o+C9q19+GGLpdPRN11nN+0GL9tU5OX6V9irVhbs07J/ggNvf05ySuOMvVQkyLShw0g8NUP4HpY\\nrof9/UoqHrsAa1Wc4hPG4LVvgeW6pnw+diFu364EX/+U4jPuovzNUeC4BKfPo+KeMyEcInbZI0Rv\\ne57U0KNrJDE64ilz81pN8am3E584lIr7ziI0bQ6hyTNNDy0f0xBSY5+YAEm+jBZFIBo2QdbZ32Gt\\nWAtAyXE354cb2t+vJDh9HskrjzbzxbVsQmZgv6prTy7gkrsOZd8PzPoWd/N2+XLs7Lc1zn5bs74N\\nvd66/bvVeK/y3IMo3elScNwaN9wbcs5VjL8Ia1U5TU6/k1DbZmSO2LH+urH6d9e73tZXj/jRcP3X\\n27rKasDG/vJ7wk+9Y4ZcV9uP1ZdLD96D9Im7E7n1eYrOe4CKe8+i6PKxJEafDCXRuu9D6qobfT87\\n7Cp7bbbAr/566SpC785l3agT8+/ZX/1Yb56SVxxJ7MZnKDn8evyWTXB26klg1jdgWzUCdu52m+Nu\\n3Y3g9HkEvlmKvXgFJcf+s2r3rktgrUvU2eurhlx5c13sH37GL41R8dSl2IuWU3zczbhd2+QbGDbK\\nH3WWU/nfUHn47dlmDsTktcfi9exE0al3EHngFSoeuxArnqJ0l8uoPG0f7G+zDWITLs02iL1P0Tn3\\nEn9pOKnzDiY0ZZa5z5/xlWkQO3lvc2/+8OtE75xMxaMXZBvEAmYaAMsiMnoi0TETSV15NEXnP2g6\\nDezYg7J3vsB6ZOov3v+En3ybwNzFxF+4yjSIXfAQoSkfkzl0h/rza4GVrKTiiUvMkNeBw0gfuRP2\\nynXYK9ZSMeFSsG0i900h8sArJO47GywIzF1MxaMXgGVTctSNhF6dVev+KTXsF4Z+V1/2GtPLJ/j+\\nl/X+ljUNb83yn/ntmmHFU5Cs3LhhY7keQhsREeq3SZB7Pk5x1ktx/tI+yLG9I3RuGmDSV0n27hai\\nRbFZ2aDuYW75IMlPCb/Oke251+v/f/sOVevYokWA1Sm/VvrGzk4xbVHtHkJ3HVBM02o9f3yoM3/B\\nQM336lvOKpCRqg0HhFwPdt8KHjm/6r0fVsIm2YkdFyyF5qXw2UIzJCh3E1h97hcve7PlemZvv1YV\\nbODndfDePFibMJN11jNhZ+KuBgI/9bLIzz9RT96Cr84yLePrLRN+6DUi900hcetpuNkJLq0ffyb0\\nxmzSg/esWtDH5LnG93M34ibPkftepnLwXubmML+BIMH3vsTdZjO8Liaymz5xT6LXP421NoHfvBT7\\ni8VYroe7Q4+6I72WzfrzkNjzfqD4jLvIDOxnIvaBqs+C78zF3bIDfnZ7AIGPv8Fr1wK3b1cg2zvq\\n+qfNMJa0Y1pqu7aBiE36iJ2IXfeEGZ7g+1jrkvmbRHv5WjKbNM+nJfTyxzh/2QKvfUuS1Vqbyya+\\nT+y6J0z02rbwX51F4NPvsFIZnL36Efh8MX775nibtyPw2SIojZk8+GZfx5++DGKm7FiryvEjIdMD\\nIFd2LAualhB/cRiBj78mOH0eRRc8SOVp+0I0W+Zy+ysSyh6rmsfe26ID8ReH1d7fDcmto56yFnrt\\nU8onDzcBhLbNyOy/DcEZ83H27IvXpQ0Vz1xhFqzMEBk7Fb9Ta/w2zXB6dMRvY+ZdSB+5M8Unjq65\\nDavmdu2Fy7FWrs33ssscvYuZLLo8RWDOItzu7U1ArLSIzMF/ITTlE9J/3RV7xdoavQns5Wvx2jXP\\nl+G6zhMr7ZC86eT8uZwb54xtw9oKis+5D3yfin9fkZ9sFMxcV0XnPQAXDiL1V9PbzVpVTuDjr6l4\\n7ELTstRtE5ydexL4+Bv8WITAl9+TOSw7dMnPFoZwCGyb0IsfEh3+OKnhx5IZVNXrBUw5zBw2AIJV\\n1Vxo0gz8Fk0Ivf4pVFRiL1tDySEj861LdbLs/PbMa8sMFcmd57nz0Mv+u94VxvL8muerZde8EtnZ\\nMm7bWJ5P6upjcHYzw5ioSGFVZkxQKfejMbfqYLX5dap9ZuUujna17eQ+W7nODBeqNufLxpR5b5Pm\\nWCvW5b9vr1iHu2XH2ufRBi6XV9f7lm3O01w97oOz45Y16hRrySpTpnM9T3LryfWGaFmGHwqQPtyU\\nA791U5w9+xCc/R1ut7Z4m26C239TADPH1NBx2D+swm/d1EyS3sTUcZlDdyBy54u10rl+1+yyzf5O\\nxSPnm2Gvh16Ps08/nG03xy8rJjBqQo27Db9JLHvTZuWvI177FmYYr2WZ/G69KcFPviH+0jU18wt1\\n5jd/N5Xbf7ZthrrZ65VZAN/H/urHWkPGNvR6G5i5AGttRdVE7Vb2mhuqeU1s6JwLvvwxzi5bQUkU\\nv2UZHLgtgbnfkxnk1ls31ne9bageAeq/3rYzZTVfj65Yh9e2GeFJM7DiKUr++g+zpeVriV38L1KX\\nHZE9Tn6+sSh9zC5EHp1K6N0vsdYlKLroX/njFXx/HlZFJZXnH1Jv3ei3a2GCf7nzdMU602spd019\\nZRaZffqbofdZDd1DkEqTuvzI/DU6cvdLeJ1bQzxFZNybZsLq6vcVoSB4ppznJwX3PKxla/GblVAy\\naER+0eT1g2v0MjY7zRwDr625N0wfaeZv9Lq2xd1mM4JzFpHu0/UXSlQdNGeMVKfy8NuzbLwOLfF6\\ndQHA69wKvzQG0TB+NIxfEsUqT5oGsQO3NfU4kDlyZ2IjJ2AtWV3r/sc0iJnrrtuzE+Fn3gfbNg1i\\n6xKUvP+l2XbazTaILTUNYjub32MctRP+uQ9U3U9BtfuzqtfB9+eRPnQHKDK/v5J31J5mpI4MkxnY\\nH2wbv10L/BalWOVJ3G02I9WshPBT72IvXmF66BdH8tdcZ9de+d8ZbvcOph5er7xGr3uS4Mz5Nd7z\\nw0EqnmngASNWA79ls/eNVfeS2Z4swfV/l25IrtmoHkIdS20mHl3Kx0vNUK9zXqpg6M4xcytq1V6X\\n5/lVbefZfx2varsWNf8ftKuWs9b7Xs7JfaNcumcxK35uuIdQuxKblQmv2nZ91lb6tC2ya6yzvuWa\\nRgojEN3w8d+9F0ydA/N/NK9fmQU7XmZ6AixaDpeNhUlDYfN2MGx81fcmf2SCPJ4HY6fCflubG5nt\\nNoM7J5tl1lTAwOEwcwE1elj8Wn/rt5Ku92cv+BG/rAi/U6sa74fHvUl4/JvEn70Cd5etqj4rjhAd\\nM4nAnIVgWwTf+hwrlcbt163muqm23VCA4BufEZ7wDtiWaeV7ZRaZ/bfB7dWJ4IfzsX4uN+t7/VO8\\nji1N7wLbIjhzAc6AHlUtl3Xlr9o+s5atpvjEMaSGHGSi0Pmbf/MX/HC+eXJXtfe8LTuYbvkLl4Ft\\nEfjsO0ilcbu1JfjBV0RHTch2y/QJv/CheRpKOIizRx/CT5k82V/9iP31UpwB3c16yxPYi5aTPmZn\\nQu/Oxf7uJ7AtIrc9D5c8QuK+s3G23YzoiKeoePRC3O7tsX5eZ1ovLYvgyx9jL1iC17MjoQnvkNmr\\nL5QV4fbvRuTh18024kmKj/kHoTdmV+3z7D4JTvuM4sFjcLfdjMoLDjE9BeYsxNmlJ8H3v8Rausoc\\n5+em/7plroF1uVt1IvzSR+Z1Kk3wnS9MbzjHpeSYf2D9tNqkaewbONtuht+8hMwB2xCc9hnW2gqw\\nLUKvzcLt06XucpArAyvXUnT+A1hr4uY7L8zA26I9fotSQi9/ZH7QWkDGIfTSR2ay1fbNcTu3JpRN\\nX/DdL/Bt28zd0cB5ErntBcJPvGWWWbiM4BuzzRBF36f4tDvwOrY0Q3talFadc3MXU3zWPSRHnwLn\\nHpx/329Rit+2GaFXPjH5WBMnOHOBmcMjYBMb8RTWjyvNPnr8LdweHfDbNzcTpI94isTYC0yLz3r7\\npq4yXz5jNPGX9nXo6AAAEbdJREFUhhOfPJzkjSfhdW5FfPLwDatP8v/P/WXfy3bndXbrRWjyTBOk\\ntC1Cz7yP36wYr2trcz46bt3rq/Y6s+tWhB970yyLmVAwOnpifi6V4Fufm7xNnY29NmH2X8sm2EtX\\nYa0qBwtCkz/Kr8/ZaUvCL3wIGcesb9h4Qi/O/I/LuTOwX/7ct5atNkMF9+rzHy/3S+dO9f3k7LRl\\njTol+NbnlB50HaQzZPbsY24q8aEyTeiFD80xioZw9uxL+LkPzHqSlQTfm4vTpyvOHr2xfliJ/cVi\\nU/99tMDUi51bmXlkXvoI0hmzT1+fjdun6wbXA/bi5VjxJKmLDsMZ2A8/aGP5vnl6pG3hW5DJXV+q\\nXTOcXbcyTyFbutrk970vcbfvXiu/zu69s0MGfShPEHxjdn4dXvNSM5mxbRH4cL6Z9NeycPtviv3N\\nT6a3mW3mzim66KH/uCxYyUrzdMh1phxGHnyVzP5b17r2NHTORR5/i8hjU82y8SS89DHOjj0arBtr\\n7W/rl+uRhq63mYH9CP/7PXOtiyfN3D379ic17K/Ep44iPtmk3W/dlOQtp+Hs05/A/B8puvwRqDQ9\\nvsITP8AZ0IPMwdtR/s6N+e84e/el8pS9qbzw0Abrxsw+/Qg9/6HpQZZxCD873QSAcnXZzAW16rKG\\n8hR+4m1zzbXNUMHw0++aYaKlMcLj3yT46ixTTr/8nsBnC3F274Wz21aEXpiJtXKtydMTb1M8eAzY\\nVj4/8cnDTQNSPeev37kVbq9OhCdOz287MOvbuq9dG3gu6U9/2JbKQ2P+5Xpm2la2Qaza69xwJs+v\\n/T3Act1av1dqXCNyDde2heV5pt7N1TcTrzRznlqWudZVW6+f63EcqPlZfnu2VTVyIffZz+X5+q3B\\nchYL18ivhXk6Y9Hpd4BlkRnYj/Txu9X47eFX/04uqrHeulPXHFujLo1PHk7Fc0MbTo9V97qwLbwO\\nLczcTLn8rViLV1ZkOiBs5DG2AMuyNvjv31+mufbtJAM6hDhv+yIGdAjy1c8eO3YM8eq3GdakfCzL\\n4oX5acoiNp3KAjSL2Xy50sWyzHCtT5Y62eJjEbAtHD+XBtZLz/qvq/7YgHT3ahNkbaXPZ8vNtp+f\\nn6F36yBNovYGLRcL5Qrwn1vDPYR6dIDbToeTbzct0MEAPHmxmbjwlDvgvIOgZ0cYfQoMuBR2z7Zq\\nty6DI2+En8thpy3h4sPM+w8NMZNK73CJ6VF05I6w3eaQ7RafPxl/LdW62QVf+5Tw+DdJZHs72YtW\\n4HdoWXObaYfoP5/BL4lRfOY9+bczB25D5TkHkbjrDGJDH4OMi18SpeK+s82+qLXdqooledtpxIaO\\nMz9W3Oykklu0gy3aUXnGvhQf908IBfGbFpN44Jz89+xFy/E6tqx/n+T715nPI3dOxkpUEhk7lcjY\\nqUA28jxpaH59mb5daqzP22wTkqNOpOjse02FFo2QuPcsKCui8sz9iV73JCUHXge2hbPtZqQuOxxs\\ni+TI44ldPpaS/YaDZZG85TTItkQGFq/Aa12Gt1UnEjcMpujcB0xL9Lc/QZMiYtc+gb1wOX5pzEwM\\netNJBHcfSuySh81j6pNpvE2aUXT6Hbh/2YLKcw4E2yJx2+nEhj9Oyf7XQMYhM+gvZA4fgPX9yhr7\\n3NmzD8G3v6Bkv2vwiyP4ZUUkbzgJv2NLkiOOp/j0O0xLQ25Og1+jzOVaWqutK3bZI7i9u5A+YXcS\\nY04lNmw8JfuYm+TMQdvlJ+tN3DiY4lNuA9czx2P0KSYfA/uR/mk1xcf+07REt29B8h9/q5ne6hdZ\\nwN2hO5VnH0jxcTdDIIDXpoyKB842x+yqY4gNfczsPyCz79akT93bfHbH34ldPpbIXZPxIyFzAc72\\n8qvzPAFSQ4+i6IKHzGO5AzbJ0afgd2hBaNIMgrO+xU1UUnLIqPzyiVtONU++wTx9hzETKXE8M+n3\\n/WdT8eAQYtc8TuTOyebCedYB+aGYyWuPpfj0O80+2qSZmePEtoje8LR5CsMVj+a342y7GakRx5u0\\nL1yO16mhc6jm/qv/+K63XO4CXX2onW3h7LYV6VMHUnzCaDPPVvMSKv51rilvW3cjcvsLFJ15N5W5\\niZWrry/7uvK8g4mOepqSg0eYMfQ9s2PoIyES959t6p+bn8Pt2RGvZSlYFl739qSP242SQ0fhtSrD\\n2auPCe7aFukTdsde8jMlh4w0PU526E76lL3/43KfuvAQYleNo2Tf4aY+u/LI/Pj16mW+oeXqVFd6\\n1ruJ9Lq3r1GnELSpePAcKI1RefYBxIY9Tsn+1+KXxvBbluIXRUz5vmkw0WufpGSfYeB5ZAZtj3OQ\\nmaw3cf85xIaNNxPyhoOm/ouFSQ/eE2ttgpJBI83k3lt1NhOzb8h+sy28nh1x9upL6cCr8cNB3B4d\\ncNs1J3blYxAO4rcqM0NkFywxDw+44EHi00bhty7Db1ZC9B/PQMDG3aId9sJllBxwbY38pi4YRGzo\\nOEoGDsNvUWrmkMveNKYuP5Ki8x8g8Om3uNtshtO7M9gWfpsykreeZupax8MvjZqJov/DsuDs2YfK\\nk/ei+KgbwffxuncgceNgsK1a19s6jymQGH0KsSsfpeSAa8z7pwzE2X8b81k9dWNd+zv3w6SheqS+\\n6236xD2wF68017qMQ/q43XAH9Kj32GJbZI7YEXvRClPHBW3czdvXrp9zGc7WE6EXPqq3bnQG9iMw\\n/0dKDrseMg7OwH5kjtyxqtfmwtr3A+7OPevNU+XZB1J0wYPmGu2b8zY3RDXxwDlEhz9O9LbnIRAg\\ncccZZljZbr2oPHM/igffYspLSYzEfWfV6Glcr2r3PBX3nU1s2HjC498Cz6Py3INrPSFyg/3a94Ty\\nx6by8Nur7/6n+rGwzQNJoleNI33KQNMIOeFd/KYleN3amIZ0x6sKcKy/vuzrzK69CD82DWfnnhC0\\nzfWyOGKmzvAh+NYcnD36wEsfmQYxK9sgtsQ0iPktSk2DVy5Nu5iHx2QOH2AeaDNsHM52m5P+haeF\\n1ggOZV8H3/sSZ6++pAfvkX/Sbz4IVq2ez2eqjik9/jP1r8vZdSui108wvxe7tiH8+FtmLruN3a6/\\n8ckdtEWYT5Y6HPXvcqJBi7YlNsf1DtMkYnNCb4//mxzHA5pFLW7fr5igbXFsrwhXTq3g8AnraFdq\\n85d2wfzP9J07Bhn9QbLq9pqGi1x1v5TuSMBi9MBibnwvSdLxKYtYjNyjCNuC5RUeQ6bEuWO/EloX\\n23UuN2eZs+E75g/M8n3/150t6fqnTSBo9CkbtvxrnxIPBEyPCflTK2taxNo1iXo/j4yZiLU6TmrE\\nCRu/8rRD5P4pVJ5z0AYtHpj9HUVn3k35+//85YXlV/dLZeH3zlodJzTxg3ofBSobrqGyEHr+Q9we\\n7fNPc6xP6PkZ+CUxM+m851F0xl04u/YyT0osQKFnp+Nu3S0/nOiP4o9eL8ivp+zuyaw968DGTob8\\nTqhuaByB6fOIXT2e+Otm2Gj06nH4zUpMr0egtO+5VEy4FK97B8Jj3yA87s3sg2dKSY44Aa97e+yF\\nyygafAtejw5Unrx3jfXVWH8qbSZenv6VaYjp2YnkjSdBaYzA7O9M45/nEejXFe/VT4lPugq/Y0ui\\nI58i9OJMvNZlOHv1JfTCTLM+1yN647/NE5l9H2dAd1LXHFdzWpP1lO54CYl7zspPpZF77RdHKRpy\\nn+m97Xo4u2xF6OWPKf/gn8Qufhi3e3vSZ+wHQOzCh2q8/m+sv67A7O+IXfYI8SnXAhCc+hnRm/4N\\nGRevUyuSt56G37SkoVXW4nk+sVsnkcoe0z+Spk2LWPM/rhemfF1J1yYW3ZrVX27+KFq1Kq33s99H\\nQCiogFAhKCsrYu3aXwgIrYqTGvkfBoTum0LlkI0ICP3f3ZRPV0CoMfxSWfi9U0Do19NQWdjQgJA9\\n7wdiVzyKlag0PSwG9DCTMoYa7gT7ZxV6djpu/24N98r6Hfqj1wvy6ym7azJrz1ZASAzVDZKjsvDr\\nygWEKv+AAaHfoixM+TpNl1L+9AGhX/9u+cqjfvVVSmH4LSsjt29XBYNE/iS8Hh2oeK6BiRlFRESk\\noIWem07k3il1fpY+bAfS/7f/b5wikd+Hwmw+FRERERERkYKQOWxA1VNrRSRPz3AUERERERERESkw\\nCgiJiIiIiIiIiBQYBYRERERERERERApM488hVBTBt63GToX80dkWfllxY6dCCoQfCuAXRxs7GX96\\nflEYPxpu7GT84fixMH401NjJEBEREfnDigUtIo0fLfmfa/ws7rQlnh4fKP+tYID04D0aOxVSKEpi\\nZI7eubFT8afn7N2vsZPwh+Tsv01jJ0Hkv9OqrLFTICJSEPwWTRo7Cb9bu3YOkcm4jZ2M/zkNGRMR\\nERGR34/T92nsFIiIFIT0SXs2dhKkkSkgJCIiIiIiIiJSYBQQEhEREREREREpMI0/hxDgun5jJ0F+\\nIzrWkqOyIDkqC5KjsiA5KgtSncqD5Kgs/Hp838f/A+/O/3VZ8P/IO2cjWP7vIKeO4xIMBho7GSIi\\nIiIiIiIiBeF30UNo9Wo9ZawQtGpVyooV5Y2dDPkdUFmQHJUFyVFZkByVBalO5UFyVBYkR2Vh47Rq\\nVVrvZ5pDSERERERERESkwCggJCIiIiIiIiJSYBQQEhEREREREREpMAoIiYiIiIiIiIgUGAWERERE\\nREREREQKjAJCIiIiIiIiIiIFRgEhEREREREREZECo4CQiIiIiIiIiEiBUUBIRERERERERKTAKCAk\\nIiIiIiIiIlJgFBASERERERERESkwCgiJiIiIiIiIiBQYBYRERERERERERAqMAkIiIiIiIiIiIgVG\\nASERERERERERkQKjgJCIiIiIiIiISIFRQEhEREREREREpMAoICQiIiIiIiIiUmAUEBIRERERERER\\nKTAKCImIiIiIiIiIFBgFhERERERERERECowCQiIiIiIiIiIiBUYBIRERERERERGRAmP5vu83diIc\\nxyUYDDR2MkRERERERERECkKwsRMAsHp1orGTIL+BVq1KWbGivLGTIb8DKguSo7IgOSoLkqOyINWp\\nPEiOyoLkqCxsnFatSuv9TEPGREREREREREQKjAJCIiIiIiIiIiIFRgEhEREREREREZECo4CQiIiI\\niIiIiEiBUUBIRERERERERKTAKCAkIiIiIiIiIlJgFBASERERERERESkwCgiJiIiIiIiIiBQYBYRE\\nRERERERERAqMAkIiIiIiIiIiIgVGASERERERERERkQKjgJCIiIiIiIiISIFRQEhEREREREREpMAo\\nICQiIiIiIiIiUmAUEBIRERERERERKTAKCImIiIiIiIiIFBgFhERERERERERECowCQiIiIiIiIiIi\\nBUYBIRERERERERGRAqOAkIiIiIiIiIhIgVFASERERERERESkwCggJCIiIiIiIiJSYBQQEhERERER\\nEREpMJbv+35jJ8JxXILBQGMnQ0RERERERESkIAQbOwEAq1cnGjsJ8hto1aqUFSvKGzsZ8jugsiA5\\nKguSo7IgOSoLUp3Kg+SoLEiOysLGadWqtN7PNGRMRERERERERKTAKCAkIiIiIiIiIlJgFBASERER\\nERERESkwCgiJiIiIiIiIiBQYBYRERERERERERAqMAkIiIiIiIiIiIgVGASERERERERERkQKjgJCI\\niIiIiIiISIFRQEhEREREREREpMAoICQiIiIiIiIiUmAUEBIRERERERERKTAKCImIiIiIiIiIFBgF\\nhERERERERERECowCQiIiIiIiIiIiBUYBIRERERERERGRAqOAkIiIiIiIiIhIgVFASERERERERESk\\nwCggJCIiIiIiIiJSYBQQEhEREREREREpMAoIiYiIiIiIiIgUGAWEREREREREREQKjAJCIiIiIiIi\\nIiIFRgEhEREREREREZECY/m+7zd2IkRERERERERE5LejHkIiIiIiIiIiIgVGASERERERERERkQKj\\ngJCIiIiIiIiISIFRQEhEREREREREpMAoICQiIiIiIiIiUmAUEBIRERERERERKTD/DyaptEMF6XIp\\nAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 1440x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import shap\\n\",\n                \"import pandas as pd\\n\",\n                \"\\n\",\n                \"Xdf = pd.DataFrame(X, columns=X_df.columns)\\n\",\n                \"# explain the model's predictions using SHAP values\\n\",\n                \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n                \"shap_values = explainer.shap_values(Xdf)\\n\",\n                \"\\n\",\n                \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n                \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 183,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 288x288 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.figure(figsize=(4,4))\\n\",\n                \"shap.summary_plot(shap_values, Xdf, plot_type=\\\"violin\\\", max_display=10, show=False, auto_size_plot=False)\\n\",\n                \"plt.savefig(\\\"NLSYM_shap_summary_violin_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 145,\n            \"metadata\": {\n                \"collapsed\": false\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n4uKiNm3apJRSqlevXmrcuHEqISFBRUZGqm7duik/Pz+llFK+vr6qV69eKjY2Vt26dUu5ubkpe3t7\\npZRSN2/eVE2aNFH79u1TaWlpavfu3apFixbq7t27Wt9duHDhkdi2bNmibGxs1Llz51RqaqpasWKF\\ncnBwUPfv31dHjx5VLVq0yPH6Fi1aqKNHjz7Sd0ePHlUNGjRQc+fOVampqergwYPqzTffzPGze/j4\\nI0eOVP7+/lpfZr9f/+2bb75RDRo0ULt27VIZGRlqwoQJ6vXXX1d79+5Vqampavz48dq+uf2OHD58\\nWFlbW6s//vhDpaSkqJkzZ6oGDRpo59KgQQM1ZMgQlZCQoK5cuaJatmypduzY8ch5Tp48Wfn6+iql\\nlLpx44Zq0KCBSkxM1OLt0qWL+uabb5RSSnXt2lX5+Pio1NRU9dtvvykrKyvt92X37t3K1tZW/f33\\n3yolJUUtWLBA9enT57F9UJBk5FEM9enTB39/f8zMzLh16xZlypTRVoLt2LEjZ86c0S5e7tq1Cw8P\\nD5RSfPvtt0yYMIGKFStSqVIlRo4cyddff621+9prr9GgQQPKlSuHhYUFO3bsoHHjxty9e5e4uDjM\\nzc2Jiori1KlTJCQkMGzYMExNTWnbti0uLi5aO9u3b2fEiBFYWlpStmxZJkyYwA8//PBMFeN69uyJ\\nubk5r7zyClWrVqV79+6UL1+eRo0aUbVqVW0ZDIDx48dTqVIlateuTb9+/bRvt76+vowaNYqMjAwi\\nIiJyrJS7a9cuvL29qVevHqampkybNu2pt4qmpKTw448/MnHiRCpVqoS5uTmTJ09mz549Wu0PKysr\\nWrdujampKe7u7ly/fv2J7dnb2/Pqq69SpkwZ3nrrLWxtbXnllVcwNzfn7bff5ubNm/zzzz/8/vvv\\nTJs2jbJly1KtWjVGjx6trTW1Z88eBg0aRKVKlahevTqDBg3S2s9tJeHcfP/997z33ns0atQIU1NT\\nhg0bxoMHD55rxVszMzMmTJiAqakp7dq1w8bGJk+WXa9ZsyYdO3bEyMiIFi1aUKNGDVxdXTE1NaVV\\nq1ba+yO335EffvgBT09PGjduTMmSJZk8eTI6Xc4Z/v79+1O2bFlefvllmjRpoq2m/Dxu3LjBmTNn\\nGDduHKampjRt2pROnTpp27dv3857771H/fr1KVmyJOPGjeOPP/7g6tWrz33MvCDXPIqhhIQEfHx8\\n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\\nRK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 360x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.figure(figsize=(5,4))\\n\",\n                \"shap.summary_plot(shap_values, Xdf, plot_type='bar', max_display=10, show=False, auto_size_plot=False)\\n\",\n                \"plt.xlabel(\\\"mean(|SHAP value|)\\\\n average impact on model output magnitude\\\")\\n\",\n                \"plt.savefig(\\\"NLSYM_shap_summary_bar.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": null,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": []\n        }\n    ],\n    \"metadata\": {\n        \"kernelspec\": {\n            \"display_name\": \"Python 3\",\n            \"language\": \"python\",\n            \"name\": \"python3\"\n        },\n        \"language_info\": {\n            \"codemirror_mode\": {\n                \"name\": \"ipython\",\n                \"version\": 3\n            },\n            \"file_extension\": \".py\",\n            \"mimetype\": \"text/x-python\",\n            \"name\": \"python\",\n            \"nbconvert_exporter\": \"python\",\n            \"pygments_lexer\": \"ipython3\",\n            \"version\": \"3.6.5\"\n        }\n    },\n    \"nbformat\": 4,\n    \"nbformat_minor\": 2\n}"
  },
  {
    "path": "prototypes/dml_iv/NLSYM_Semi_Synthetic_GBM.ipynb",
    "content": "{\n    \"cells\": [\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 1,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"%load_ext autoreload\\n\",\n                \"%autoreload 2\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 2,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"import numpy as np\\n\",\n                \"import pandas as pd\\n\",\n                \"import matplotlib.pyplot as plt\\n\",\n                \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression\\n\",\n                \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n                \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\\n\",\n                \"from sklearn.pipeline import Pipeline\\n\",\n                \"import scipy.special\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# NLSYM DATA\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 3,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\preprocessing\\\\data.py:645: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.partial_fit(X, y)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:464: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.fit(X, **fit_params).transform(X)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Preprocess data\\n\",\n                \"df = pd.read_csv(\\\"data/card.csv\\\")\\n\",\n                \"data_filter = df['educ'].values >= 6\\n\",\n                \"T = df['educ'].values[data_filter]\\n\",\n                \"Z = df['nearc4'].values[data_filter]\\n\",\n                \"y = df['lwage'].values[data_filter]\\n\",\n                \"\\n\",\n                \"# Impute missing values with mean, add dummy columns\\n\",\n                \"# I excluded the columns 'weights' as we don't know what it is\\n\",\n                \"X_df = df[['exper', 'expersq']].copy()\\n\",\n                \"X_df['fatheduc'] = df['fatheduc'].fillna(value=df['fatheduc'].mean())\\n\",\n                \"X_df['fatheduc_nan'] = df['fatheduc'].isnull()*1\\n\",\n                \"X_df['motheduc'] = df['motheduc'].fillna(value=df['motheduc'].mean())\\n\",\n                \"X_df['motheduc_nan'] = df['motheduc'].isnull()*1\\n\",\n                \"X_df[['momdad14', 'sinmom14', 'reg661', 'reg662',\\n\",\n                \"        'reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']] = df[['momdad14', 'sinmom14', \\n\",\n                \"        'reg661', 'reg662','reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']]\\n\",\n                \"X_df[['black', 'smsa', 'south', 'smsa66']] = df[['black', 'smsa', 'south', 'smsa66']]\\n\",\n                \"columns_to_scale = ['fatheduc', 'motheduc', 'exper', 'expersq']\\n\",\n                \"scaler = StandardScaler()\\n\",\n                \"X_raw = X_df.values[data_filter]\\n\",\n                \"X_df[columns_to_scale] = scaler.fit_transform(X_df[columns_to_scale])\\n\",\n                \"X = X_df.values[data_filter]\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 4,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 4,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# 2. Semi-Synthetic Data with Binary Instrument and Continuous Treatment\\n\",\n                \"\\n\",\n                \"Data generating process uning real covariates $X$ and instrument $Z$, but synthetic $y$ and $T$ based on the \\\"intent to treat\\\" instrument setting with non-compliance. The instrument corresponds to a fully randomized recommendation of treatment. Then each sample complies with the recommendation to some degree. This probability also depends on an unobserved confounder that has a direct effect on the outcome. Moreover, compliance also depends on the observed feature $X$.\\n\",\n                \"\\n\",\n                \"\\\\begin{align}\\n\",\n                \"X \\\\tag{ real features}\\\\\\\\\\n\",\n                \"Z \\\\tag{real instrument}\\\\\\\\\\n\",\n                \"\\\\nu \\\\sim \\\\; & \\\\text{U}[0, 1] \\\\tag{unobserved confounder}\\\\\\\\\\n\",\n                \"C = \\\\; & c\\\\cdot X[i], \\\\; c \\\\;(const)\\\\sim \\\\text{U}[.2, .3] \\\\tag{compliance degree}\\\\\\\\\\n\",\n                \"T = \\\\; & C\\\\cdot Z + g(X) + \\\\nu  \\\\tag{treatment}\\\\\\\\\\n\",\n                \"y \\\\sim \\\\; & \\\\text{Normal}(\\\\mu=\\\\theta(X) \\\\cdot (T + \\\\nu) + f(X),\\\\; \\\\sigma=.1) \\\\tag{outcome}\\n\",\n                \"\\\\end{align}\\n\",\n                \"\\n\",\n                \"Moreover:\\n\",\n                \"\\\\begin{align}\\n\",\n                \"\\\\theta(X) = \\\\; & \\\\alpha + \\\\beta \\\\cdot X[i] \\\\tag{CATE}\\\\\\\\\\n\",\n                \"f(X) = \\\\; & X[i] \\\\tag{Nuissance function}\\\\\\\\\\n\",\n                \"g(X) = \\\\; & X[i] \\\\tag{Nuissance function}\\n\",\n                \"\\\\end{align}\\n\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 5,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 720x144 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"def dgp_bin_Z_cont_T(X, Z, hetero_col, true_fn, random_seed=None):\\n\",\n                \"    np.random.seed(random_seed)\\n\",\n                \"    n, d = X.shape\\n\",\n                \"    nu = np.random.uniform(-1, 1, size=(n,))\\n\",\n                \"    c = np.random.uniform(0.2, 0.3)\\n\",\n                \"    C = c * X[:, hetero_col] # Compliers when recomended\\n\",\n                \"    T = C * Z + X[:, hetero_col] + nu # Treatment with compliance\\n\",\n                \"    y = true_fn(X) * (T + nu)  + 0.05*X[:, hetero_col] + np.random.normal(0, .1, size=(n,))\\n\",\n                \"    return y, T\\n\",\n                \"\\n\",\n                \"hetero_col = 4 # Mother's education\\n\",\n                \"hetero_col_2 = 7\\n\",\n                \"true_fn = lambda X: 0.1 + 0.05*X[:, hetero_col] - 0.1*X[:, hetero_col_2]\\n\",\n                \"\\n\",\n                \"np.random.seed(1237)\\n\",\n                \"y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn)\\n\",\n                \"\\n\",\n                \"plt.figure(figsize=(10, 2))\\n\",\n                \"plt.subplot(1, 2, 1)\\n\",\n                \"plt.hist(T[Z==0])\\n\",\n                \"plt.title(\\\"T[Z=0]: Total: {}, Mean(T): {:.2f}\\\".format(T[Z==0].shape[0], np.mean(T[Z==0])))\\n\",\n                \"plt.subplot(1, 2, 2)\\n\",\n                \"plt.hist(T[Z==1])\\n\",\n                \"plt.title(\\\"T[Z=1]: Total: {}, Mean(T): {:.2f}\\\".format(T[Z==1].shape[0], np.mean(T[Z==1])))\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ANALYSIS\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some hyperparameters\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 6,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"0.006686726847208292\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"random_seed = 12345 # random seed for each experiment\\n\",\n                \"N_SPLITS = 10 # number of splits for cross-fitting\\n\",\n                \"COV_CLIP = 20/X.shape[0] # covariance clipping in driv\\n\",\n                \"print(COV_CLIP)\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some generic non-parametric regressors and classifiers\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 7,\n            \"metadata\": {},\n            \"outputs\": [],\n            \"source\": [\n                \"from utilities import RegWrapper\\n\",\n                \"from sklearn.model_selection import GridSearchCV\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n                \"from xgb_utilities import XGBWrapper\\n\",\n                \"\\n\",\n                \"# XGB forest models for Regression and Classification\\n\",\n                \"model = lambda: XGBWrapper(XGBRegressor(gamma=0.001, n_estimators=100, min_child_weight=20, n_jobs=10),\\n\",\n                \"                           early_stopping_rounds=5, eval_metric='rmse', binary=False)\\n\",\n                \"\\n\",\n                \"model_clf = lambda: RegWrapper(XGBWrapper(XGBClassifier(gamma=0.001, n_estimators=100, min_child_weight=20, n_jobs=10),\\n\",\n                \"                                          early_stopping_rounds=5, eval_metric='logloss', binary=True))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Some utility functions\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 8,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def nuisance_diagnostic(cate, nuisance_model, property_name, property_fn, \\n\",\n                \"                        index_names=None, statistic=np.std, threshold=None):\\n\",\n                \"    std = statistic([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]], axis=0)\\n\",\n                \"    if hasattr(std, '__len__'):\\n\",\n                \"        if threshold is None:\\n\",\n                \"            coefs = np.argmax(std).flatten()\\n\",\n                \"        else:\\n\",\n                \"            coefs = np.argwhere(std >= threshold).flatten()\\n\",\n                \"        if index_names is None:\\n\",\n                \"            index_names = np.arange(std.shape[0])\\n\",\n                \"        for high_var in coefs:\\n\",\n                \"            plt.title(\\\"{}: {}[{}] Across Folds\\\".format(nuisance_model, property_name, index_names[high_var]))\\n\",\n                \"            plt.plot([property_fn(ns)[high_var] for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"            plt.xlabel('fold')\\n\",\n                \"            plt.ylabel('property')\\n\",\n                \"            plt.show()\\n\",\n                \"    else:\\n\",\n                \"        plt.title(\\\"{}: {} Across Folds\\\".format(nuisance_model, property_name))    \\n\",\n                \"        plt.plot([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"        plt.xlabel('fold')\\n\",\n                \"        plt.ylabel('property')\\n\",\n                \"        plt.show()\\n\",\n                \"    \"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DMLATEIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 9,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\numba\\\\errors.py:105: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9\\n\",\n                        \"  warnings.warn(msg)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_ate_iv import DMLATEIV\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We need to specify models to be used for each of these residualizations\\n\",\n                \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n                \"model_T_X = lambda: model() # model for E[T | X]. We use a regressor since T is continuous\\n\",\n                \"model_Z_X = lambda: model_clf() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n                \"\\n\",\n                \"dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 10,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_ate_iv.DMLATEIV at 0x18d162284a8>\"\n                        ]\n                    },\n                    \"execution_count\": 10,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# We fit DMLATEIV with these models\\n\",\n                \"dmlate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 11,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# We call effect() to get the ATE\\n\",\n                \"ta_effect = dmlate.effect()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 12,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.648\\n\",\n                        \"True ATE: 0.609\\n\",\n                        \"CATE MSE: 0.03\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\\n\",\n                \"# CATE MSE\\n\",\n                \"print(\\\"CATE MSE: {:.2f}\\\".format(np.mean((true_fn(X_raw) - ta_effect)**2)))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 13,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate Interval: (0.601, 0.696)\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can call normal_effect_interval to get confidence intervals based\\n\",\n                \"# based on the asympotic normal approximation\\n\",\n                \"ta_effect = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(ta_effect[0], ta_effect[1]))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 14,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\\n\",\n                        \"[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:   30.7s\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage: 0.72\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:  2.0min finished\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"def get_dmlateiv_coverage(true_effect, iteration):\\n\",\n                \"    y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn, random_seed=iteration)\\n\",\n                \"    dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\\n\",\n                \"    dmlate.fit(y, T, X, Z)\\n\",\n                \"    left, right = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"    if true_effect >= left and true_effect <= right:\\n\",\n                \"        return 1\\n\",\n                \"    return 0\\n\",\n                \"\\n\",\n                \"from joblib import Parallel, delayed\\n\",\n                \"n_experiments=100\\n\",\n                \"true_ate = np.mean(true_fn(X_raw))\\n\",\n                \"if True:\\n\",\n                \"    contains_truth = np.array(Parallel(n_jobs=-1, verbose=3)(\\n\",\n                \"            delayed(get_dmlateiv_coverage)(true_ate, it) for it in range(n_experiments)))\\n\",\n                \"    print(\\\"Coverage: {}\\\".format(contains_truth.mean()))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and CATE via DMLIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 15,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from utilities import SelectiveLasso, SeparateModel\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from econml.utilities import hstack\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DMLIV we also need a model for E[T | X, Z]. To allow for heterogeneity in the compliance, i.e.\\n\",\n                \"# T = beta(X)*Z + gamma(X)\\n\",\n                \"# we train a separate model for Z=1 and Z=0. The model for Z=1 learns the\\n\",\n                \"# quantity beta(X) + gamma(X) and the model for Z=0 learns gamma(X).\\n\",\n                \"model_T_XZ = lambda: SeparateModel(model(), model())\\n\",\n                \"\\n\",\n                \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n                \"#      theta(X) = <theta, phi(X)>\\n\",\n                \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n                \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n                \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n                \"\\n\",\n                \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n                \"# This model will minimize the square loss:\\n\",\n                \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n                \"#dmliv_model_effect = lambda: LinearRegression(fit_intercept=False)\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# Potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n                \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n                \"# that does not penalize the constant term in the CATE model\\n\",\n                \"dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, fit_intercept=False))\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# We initialize DMLIV with all these models and call fit\\n\",\n                \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n                \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"             n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"             binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"            )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 16,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_iv.DMLIV at 0x18d17d0e1d0>\"\n                        ]\n                    },\n                    \"execution_count\": 16,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"cate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 17,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nf2Ld9bhxv8LaAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X)\\n\",\n                \"dml_effect = cate.effect(X)\\n\",\n                \"plt.hist(dml_effect, label='est')\\n\",\n                \"plt.hist(true_fn(X_raw), alpha=.2, label='true')\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 18,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[ 0.60084499  0.          0.          0.00162356 -0.          0.11428089\\n\",\n                        \"  0.         -0.         -0.          0.         -0.          0.\\n\",\n                        \"  0.          0.         -0.         -0.          0.         -0.\\n\",\n                        \" -0.         -0.         -0.00789543 -0.         -0.        ]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# To get the parameter theta we call coef_. The first entry is the intercept of the CATE model\\n\",\n                \"print(cate.coef_)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 19,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.596\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dml_effect)))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 20,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}. MSE={:.3f}\\\".format(X_df.columns[4], np.mean((dml_effect-true_fn(X_raw))**2)))\\n\",\n                \"plt.scatter(X[:, 4], dml_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and Projected CATE via DRIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 21,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# If we want to fit an ATE, we simply fit a constant functin theta(X) = theta\\n\",\n                \"# We can do this with a pipeline where the preprocessing step only creates a bias column\\n\",\n                \"# and the regression step fits a linear regression with no intercept.\\n\",\n                \"# To get normal confidence intervals easily we can use a statsmodels linear regression\\n\",\n                \"# wrapped in an sklearn interface\\n\",\n                \"const_driv_model_effect = lambda: ConstantModel()\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=False)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=False, # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                        opt_reweighted=False # whether to optimally re-weight samples. Valid only for flexible final model\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 22,\n            \"metadata\": {\n                \"scrolled\": true\n            },\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x18d1da9b6d8>\"\n                        ]\n                    },\n                    \"execution_count\": 22,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 23,\n            \"metadata\": {\n                \"scrolled\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\statsmodels\\\\regression\\\\linear_model.py:1554: RuntimeWarning: invalid value encountered in double_scalars\\n\",\n                        \"  return self.ess/self.df_model\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:877: RuntimeWarning: invalid value encountered in greater\\n\",\n                        \"  return (self.a < x) & (x < self.b)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:877: RuntimeWarning: invalid value encountered in less\\n\",\n                        \"  return (self.a < x) & (x < self.b)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:1831: RuntimeWarning: invalid value encountered in less_equal\\n\",\n                        \"  cond2 = cond0 & (x <= self.a)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     nan</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:39:54</td>     <th>  Log-Likelihood:    </th> <td> -6509.5</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.302e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2990</td>      <th>  BIC:               </th> <td>1.303e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th> <td>    0.6501</td> <td>    0.039</td> <td>   16.668</td> <td> 0.000</td> <td>    0.574</td> <td>    0.727</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>2934.155</td> <th>  Durbin-Watson:     </th>  <td>   1.968</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>1860178.825</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td> 3.818</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>124.934</td> <th>  Cond. No.          </th>  <td>    1.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n                            \"Method:                 Least Squares   F-statistic:                       nan\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):                nan\\n\",\n                            \"Time:                        16:39:54   Log-Likelihood:                -6509.5\\n\",\n                            \"No. Observations:                2991   AIC:                         1.302e+04\\n\",\n                            \"Df Residuals:                    2990   BIC:                         1.303e+04\\n\",\n                            \"Df Model:                           0                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.6501      0.039     16.668      0.000       0.574       0.727\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     2934.155   Durbin-Watson:                   1.968\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          1860178.825\\n\",\n                            \"Skew:                           3.818   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     124.934   Cond. No.                         1.00\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 23,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n                \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n                \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n                \"const_dr_cate.effect_model.summary()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 24,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def get_driv_coverage(true_effect, iteration):\\n\",\n                \"    y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn, random_seed=iteration)\\n\",\n                \"    dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=True)\\n\",\n                \"    const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                            dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                            model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                            const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                            cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                            n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                            binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                            binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                           )\\n\",\n                \"    const_dr_cate.fit(y, T, X, Z, store_final=True)\\n\",\n                \"    left, right = const_dr_cate.effect_model.est.model.conf_int(alpha=0.05)[0]\\n\",\n                \"    if true_effect >= left and true_effect <= right:\\n\",\n                \"        return 1\\n\",\n                \"    return 0\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 25,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\\n\",\n                        \"[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:   31.2s\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage: 0.93\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:  4.3min finished\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from joblib import Parallel, delayed\\n\",\n                \"n_experiments=100\\n\",\n                \"true_ate = np.mean(true_fn(X_raw))\\n\",\n                \"if True:\\n\",\n                \"    contains_truth = np.array(Parallel(n_jobs=-1, verbose=3)(\\n\",\n                \"            delayed(get_driv_coverage)(true_ate, it) for it in range(n_experiments)))\\n\",\n                \"    print(\\\"Coverage: {}\\\".format(contains_truth.mean()))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Projecting CATE to a pre-chosen subset of variables in final model\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 26,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[4 7]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We could also fit a projection on a subset of the features by using the\\n\",\n                \"# subset wrapper from our utilities.\\n\",\n                \"\\n\",\n                \"# Example: including everything for expository purposes, but any array_like of indices would work\\n\",\n                \"subset_names = set(['motheduc', 'sinmom14'])\\n\",\n                \"# list of indices of features X to use in the final model\\n\",\n                \"feature_inds = np.argwhere([(x in subset_names) for x in X_df.columns.values]).flatten() #[0] #np.arange(X.shape[1]) \\n\",\n                \"print(feature_inds)\\n\",\n                \"# Because we are projecting to a low dimensional model space, we can\\n\",\n                \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n                \"# the hypothesis testing capability\\n\",\n                \"proj_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n                \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n                \"                                         )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 27,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 27,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 28,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"proj_dr_cate = const_dr_cate.refit_final(proj_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 29,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X[:, feature_inds])\\n\",\n                \"proj_dr_effect = proj_dr_cate.effect(X[:, feature_inds])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 30,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.002</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.001</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   2.934</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>0.0533</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>16:44:16</td>     <th>  Log-Likelihood:    </th> <td> -6506.5</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.302e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2988</td>      <th>  BIC:               </th> <td>1.304e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     2</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"      <td></td>        <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th>    <td>    0.6352</td> <td>    0.041</td> <td>   15.433</td> <td> 0.000</td> <td>    0.554</td> <td>    0.716</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>motheduc</th> <td>    0.0915</td> <td>    0.040</td> <td>    2.306</td> <td> 0.021</td> <td>    0.014</td> <td>    0.169</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>sinmom14</th> <td>    0.1403</td> <td>    0.131</td> <td>    1.070</td> <td> 0.285</td> <td>   -0.117</td> <td>    0.397</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>2951.753</td> <th>  Durbin-Watson:     </th>  <td>   1.972</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>1886680.784</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td> 3.859</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>125.798</td> <th>  Cond. No.          </th>  <td>    3.41</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.002\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.001\\n\",\n                            \"Method:                 Least Squares   F-statistic:                     2.934\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):             0.0533\\n\",\n                            \"Time:                        16:44:16   Log-Likelihood:                -6506.5\\n\",\n                            \"No. Observations:                2991   AIC:                         1.302e+04\\n\",\n                            \"Df Residuals:                    2988   BIC:                         1.304e+04\\n\",\n                            \"Df Model:                           2                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.6352      0.041     15.433      0.000       0.554       0.716\\n\",\n                            \"motheduc       0.0915      0.040      2.306      0.021       0.014       0.169\\n\",\n                            \"sinmom14       0.1403      0.131      1.070      0.285      -0.117       0.397\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     2951.753   Durbin-Watson:                   1.972\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          1886680.784\\n\",\n                            \"Skew:                           3.859   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     125.798   Cond. No.                         3.41\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 30,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is\\n\",\n                \"# an instance of SubsetWrapper, we look at the model of the SubsetWrapper which is \\n\",\n                \"# and instance of the pipeline, we then look at the reg step of the pipeline which is the statsmodel wrapper and\\n\",\n                \"# call summary() of the wrapper (most prob there is a better API for this, but we can go with this for now :)\\n\",\n                \"proj_dr_cate.effect_model.summary(alpha=.05, xname=['const']+list(X_df.columns[feature_inds]))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 31,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Estimated Params: 0.6351902202433224, [0.091538   0.14032943]\\n\",\n                        \"True Params: [ 0.61740685  0.14934234 -0.1       ]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can access the coefficient by looking at the coefficient attribute of the final step of the pipeline\\n\",\n                \"print(\\\"Estimated Params: {}, {}\\\".format(proj_dr_cate.intercept_, proj_dr_cate.coef_))\\n\",\n                \"# True coefficients of projection\\n\",\n                \"print(\\\"True Params: {}\\\".format(\\n\",\n                \"        LinearRegression(fit_intercept=False).fit(PolynomialFeatures(degree=1,\\n\",\n                \"                                                                     include_bias=True).fit_transform(X[:, feature_inds]),\\n\",\n                \"                                                  true_fn(X_raw)).coef_))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 32,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage of True Projection: 0.93\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nGdXHLxQAAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x432 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n                \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n                \"res = proj_dr_cate.effect_model.model\\n\",\n                \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n                \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n                \"pred = frame['mean']\\n\",\n                \"iv_l = frame['mean_ci_lower']\\n\",\n                \"iv_u = frame['mean_ci_upper']\\n\",\n                \"\\n\",\n                \"# This is the true CATE functions\\n\",\n                \"theta_true = true_fn(X_raw)\\n\",\n                \"# This is the true projection of the CATE function on the subspace of linear functions of the\\n\",\n                \"# subset of the features used in the projection\\n\",\n                \"true_proj = LinearRegression().fit(X[:, feature_inds], theta_true).predict(X[:, feature_inds])\\n\",\n                \"\\n\",\n                \"# Are we covering the true projection\\n\",\n                \"covered = (true_proj <= iv_u) & (true_proj >= iv_l)\\n\",\n                \"print(\\\"Coverage of True Projection: {:.2f}\\\".format(np.mean(covered)))\\n\",\n                \"\\n\",\n                \"fig, ax = plt.subplots(figsize=(8,6))\\n\",\n                \"\\n\",\n                \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'r--')\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'r--')\\n\",\n                \"ax.plot(X[order, feature_inds[0]], pred[order], 'g--.', label=\\\"pred\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], theta_true[order], 'b-', label=\\\"True\\\", alpha=.3)\\n\",\n                \"ax.plot(X[order, feature_inds[0]], true_proj[order], 'b-', label=\\\"TrueProj\\\", alpha=.3)\\n\",\n                \"ax.legend(loc='best')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"source\": [\n                \"# CATE via Re-Weighted DRIV: DRIV-RW\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Lasso CATE\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 33,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel, WeightWrapper\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# This model now needs to accept sample weights at fit time.\\n\",\n                \"const_driv_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n                \"                                                          ('reg', SelectiveLasso(np.arange(1, X.shape[1]+1),\\n\",\n                \"                                                                                  LassoCV(cv=5, fit_intercept=False)))]))\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=False)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=False, # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                        opt_reweighted=True # whether to optimally re-weight samples. Valid only for flexible final model\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 34,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x18d22b12da0>\"\n                        ]\n                    },\n                    \"execution_count\": 34,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 35,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.599\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"dr_effect = const_dr_cate.effect(X)\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dr_effect)))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 36,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}: MSE={:.3f}\\\".format(X_df.columns[4], np.mean((dr_effect-true_fn(X_raw))**2)))\\n\",\n                \"plt.scatter(X[:, 4], dr_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Random Forest CATE\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 37,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n                \"    \\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=5000, max_depth=3, min_impurity_decrease=0.00001,\\n\",\n                \"                                                     min_samples_leaf=100, bootstrap=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 38,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_cate = const_dr_cate.refit_final(rf_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 39,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_effect = rf_dr_cate.effect(X)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 40,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.60\\n\",\n                        \"True ATE: 0.61\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"print(\\\"ATE Estimate: {:.2f}\\\".format(np.mean(rf_dr_effect)))\\n\",\n                \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 41,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X14VPWZ//H3nRCSAAkBRFsBBVlW\\nxSe6RmhX29p1fap0sbV1VS4fWpUfq7bututK67a1W7tlVy+3uuryU2vVLdTarlWrtrY/rVofa2hB\\noIgF1odAq5gYHpMQkvv3x/cEJpNJMpNM5uHM53VduU7OPWfO3BPgw8l3zjlfc3dERCReyvLdgIiI\\nZJ/CXUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYkjhLiISQwr3EmZmr5tZq5ltN7MWM3vezBaaWVnC\\nNneb2W4z22FmzWb2SzM7LOHxi8zs2ej7x83sX1K8zjwz+5OZjeijj1PN7Jmojy1m9rSZ/U3SNiea\\nmZvZPyXUPhz1tcPMdkaP70j4OsjMnjKztqT6T9P8+VwU7fPGpPqZUf3uhNrFZvZq9B7eNrNHzawm\\nxc+w+2tlP697UrSvXWb2KzM7uJ9tx5vZT6L3/4aZnZfuvszs781so5ltM7PNZvYf3X9GZra/mf0g\\nqm81s+fMbE46PzcpDAp3+YS71wAHA4uBq4HvJm3z7+4+BpgEbErxeLe7gfPNzJLq5wNL3X1P8hPM\\n7NPAj4B7gcnAAcDXgE8kbXoh0BwtAXD3X7v7mKi3I6JyXXfN3d+Malck1Ma4e/K++7MB+Nuk/5gu\\nAF5LeA8fBf4VODf6WR4O3J+0n39P6uGYVC9mZvsBDwBfBcYDDcAP++nvVmA34ec2H/gvMzsizX39\\nFPgLd68FjgSOAb4QPTYGeBk4NnruPcCjZjamn16kgCjcBQB33+ruDwN/C1xoZkem2KaVEFqz+tjN\\ng4Qg+HB3wczGAXMJ4d1D9J/AjcA33f3OqIcud3/a3S9N2G4U8GngcmCGmdUP9n0Owp+AVcCpUS/j\\ngb8EHk7Y5jjgBXf/HYC7N7v7Pe6+fRCv9ylgjbv/yN3bgGuBYxJ/W+pmZqOBs4CvuvsOd3826uv8\\ndPbl7hvcvaV7d0AX8GfRYxvd/UZ3/6O7d7r77cBI4NBBvCfJA4W79ODuvwEaSQjoblGYnAus7+O5\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_raw) - rf_dr_effect)**2)))\\n\",\n                \"plt.scatter(X[:, 4], rf_dr_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 42,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nezeLFy9mx44dFBUVcemll3LKKacA0XSq008/nbPOOguAv/3tb6xatYobbriBX/ziFwDceeedBEHA\\nO97xDgoLC3nwwQc555xzePbZZ8nOzubiiy/m9NNPP6H+TjvttMQ4Gxsb+e53v8sNN9zAkCFDAKiu\\nruYHP/gBt9xyC7FYjIceeoitW7fS3NzMmDFjuPLKKykuLj7inJctW8a+fft417veBcCBAwe4/fbb\\n+fKXv0wsFqO2tpbHH3+c1157jSAIOPPMM5kzZw6xmDmfJEmSJCk9bdu2jSVLllBZWcnUqVO58sor\\nyczMpKam5qj343/7299Yvnw51dXV5OfnH5ITvPTSSzzzzDNUVVUxcuRIrrrqKvr373/Ese+9916m\\nTJnCueeem9h25513MmfOHKZNm8aSJUtYs2YNdXV1DBw4kLlz5zJ27Ngj+tm8eTMPPvggt956a2Lb\\n7bffzjve8Q4mTJhAGIY888wzvPjii9TW1jJhwgSuvPJK8vLy2v1e+lRS0NTUxH333cfEiRP513/9\\nV6644goeeOAB9uzZc8zPXn/99QB84hOf4LbbbkuENlVVVRw8eJBbb72Vq6++mkceeaRT/bXIzMxk\\n2rRprF69OrHt1VdfZdy4cRQUFBCGIWeccQa33HILt9xyC5mZmTz66KPH/V0k+/3vf08sFuMzn/kM\\nN954Ixs3bnR9IUmSJElSWlu9ejUf/OAHuemmm9i7dy9PP/00wFHvx+vr61myZAkf+MAHuO222/jo\\nRz/KsGHDAFi7di0rVqzgve99L5/73OcYO3YsDzzwQJvHnjFjxiF5wO7duykvL2fy5MkAjBw5khtv\\nvJEFCxYwY8YMfve739HY2Njhc/zLX/7C2rVruf766/nsZz9Lbm4uixcvPupn+lQQtHXrVurr65k1\\naxYZGRmMHz+eKVOm8Morr3Sq37e+9a1kZmYybtw4pkyZwquvvtol450xY8YhY1u9ejUzZswAID8/\\nn1NPPZWsrCxycnKYPXs2mzdv7vAxqqqqeO2115g7dy7Z2dkUFBQwc+bMTn8nkiRJkiT1Zeeeey79\\n+vUjLy+P2bNnJ4KZY92PB0HArl27aGhooKioKDHL54UXXmDWrFkMHjyYWCzGhRdeyI4dOzhw4MAR\\nx546deohbX//+9+ZNm0amZnRxKzTTz+d/Px8YrEYb3nLW2hsbDyuopTDvfDCC1x88cUUFxeTmZnJ\\n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\\npyqf7nslAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 1440x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import shap\\n\",\n                \"import pandas as pd\\n\",\n                \"\\n\",\n                \"Xdf = pd.DataFrame(X, columns=X_df.columns)\\n\",\n                \"# explain the model's predictions using SHAP values\\n\",\n                \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n                \"shap_values = explainer.shap_values(Xdf)\\n\",\n                \"\\n\",\n                \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n                \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 43,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n5IapAAAAAElFTkSuQmCC\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x684 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"shap.summary_plot(shap_values, Xdf)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 44,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAjgAAAI4CAYAAABndZP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3WmYHlW5t/2zGRwgYZAEkSkMAgoK\\nDhfCo7I3eRi2PKFBBVRABpEgKrNIFEEC5gUENqIiioRRBhE2Co1AADUERMCLQdyIQAgJU5iEYBIm\\nk/T7oVZr0SbpTtJJJ3Wfv+Po466uNdSqOx/yP9Za1dXW2dmJJElSkyzV3wOQJEnqawYcSZLUOAYc\\nSZLUOAYcSZLUOAYcSZLUOAYcSZLUOAYcSZLUOAYcSZLUOAYcSZLUOMv09wA0/zo6Ojrb29v7exiS\\nJC0qbb2t6AyOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOO\\nJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqHAOOJElqnLbOzs7+HoPmU9tpM/zHkyQt\\nljqPXGZhdNvW24rO4EiSpMYx4EiSpMYx4EiSpMZp+YATERMj4vN93OfNETGyL/uUJEm911IBJyI6\\nI+Lj/T0OSZK0cLVUwJEkSa1hoTzD1VciYiIwGtgG2Bx4DNgT2AT4DjAYuAI4MDNnRMSmwBnAB4GX\\ngPOAkzJzZkT8qXR7Y0TMAn6emfuXc2tHxG+ALYCJwAGZeXttHMOBQ4G1gAnAiMy8sZS1Ad8Avgos\\nB1xI7TG2iNgauDkzl6mdGwl8PDO3Lb8PBk4GtgNWAh4B9sjMhxbg65MkqWUtCTM4+wBfAVYG/gT8\\nEhgKbAa8H9gJ+ExErAjcBPwOWA0YBuwHHAGQmZuV/rbPzAG1cEOpdwjQ1ceFXQURcQAwgipYrQx8\\nC7gqIt5dqnweOBzYuVz3BeA/entzEbEUcDVVsNm8fH4BmNrbPiRJ0pst1jM4xU8z80GAiLiUKmhs\\nmZnTgekRMZYqGAC8AYzKzE7gwYj4LlXAObWHa5ydmQ+Ua4wGDouIFTPzZargc0Jmds0AXRcRvwM+\\nB4wC9i7t7y7tTwIOnIf7izL+QeV6APfPQ3tJktTNkhBwJteOXwFmZubz3c4NpFo+mljCTZdHy/l5\\n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\\ncv4HWVTMW2zSBQsAAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x684 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": null,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": []\n        }\n    ],\n    \"metadata\": {\n        \"kernelspec\": {\n            \"display_name\": \"Python 3\",\n            \"language\": \"python\",\n            \"name\": \"python3\"\n        },\n        \"language_info\": {\n            \"codemirror_mode\": {\n                \"name\": \"ipython\",\n                \"version\": 3\n            },\n            \"file_extension\": \".py\",\n            \"mimetype\": \"text/x-python\",\n            \"name\": \"python\",\n            \"nbconvert_exporter\": \"python\",\n            \"pygments_lexer\": \"ipython3\",\n            \"version\": \"3.7.4\"\n        }\n    },\n    \"nbformat\": 4,\n    \"nbformat_minor\": 2\n}"
  },
  {
    "path": "prototypes/dml_iv/NLSYM_Semi_Synthetic_Linear.ipynb",
    "content": "{\n    \"cells\": [\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 1,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"%load_ext autoreload\\n\",\n                \"%autoreload 2\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 2,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"import numpy as np\\n\",\n                \"import pandas as pd\\n\",\n                \"import matplotlib.pyplot as plt\\n\",\n                \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression\\n\",\n                \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\\n\",\n                \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler\\n\",\n                \"from sklearn.pipeline import Pipeline\\n\",\n                \"import scipy.special\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# NLSYM DATA\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 3,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\preprocessing\\\\data.py:645: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.partial_fit(X, y)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:464: DataConversionWarning: Data with input dtype int64, float64 were all converted to float64 by StandardScaler.\\n\",\n                        \"  return self.fit(X, **fit_params).transform(X)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Preprocess data\\n\",\n                \"df = pd.read_csv(\\\"data/card.csv\\\")\\n\",\n                \"data_filter = df['educ'].values >= 6\\n\",\n                \"T = df['educ'].values[data_filter]\\n\",\n                \"Z = df['nearc4'].values[data_filter]\\n\",\n                \"y = df['lwage'].values[data_filter]\\n\",\n                \"\\n\",\n                \"# Impute missing values with mean, add dummy columns\\n\",\n                \"# I excluded the columns 'weights' as we don't know what it is\\n\",\n                \"X_df = df[['exper', 'expersq']].copy()\\n\",\n                \"X_df['fatheduc'] = df['fatheduc'].fillna(value=df['fatheduc'].mean())\\n\",\n                \"X_df['fatheduc_nan'] = df['fatheduc'].isnull()*1\\n\",\n                \"X_df['motheduc'] = df['motheduc'].fillna(value=df['motheduc'].mean())\\n\",\n                \"X_df['motheduc_nan'] = df['motheduc'].isnull()*1\\n\",\n                \"X_df[['momdad14', 'sinmom14', 'reg661', 'reg662',\\n\",\n                \"        'reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']] = df[['momdad14', 'sinmom14', \\n\",\n                \"        'reg661', 'reg662','reg663', 'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66']]\\n\",\n                \"X_df[['black', 'smsa', 'south', 'smsa66']] = df[['black', 'smsa', 'south', 'smsa66']]\\n\",\n                \"columns_to_scale = ['fatheduc', 'motheduc', 'exper', 'expersq']\\n\",\n                \"scaler = StandardScaler()\\n\",\n                \"X_raw = X_df.values[data_filter]\\n\",\n                \"X_df[columns_to_scale] = scaler.fit_transform(X_df[columns_to_scale])\\n\",\n                \"X = X_df.values[data_filter]\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 4,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 4,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# 2. Semi-Synthetic Data with Binary Instrument and Continuous Treatment\\n\",\n                \"\\n\",\n                \"Data generating process uning real covariates $X$ and instrument $Z$, but synthetic $y$ and $T$ based on the \\\"intent to treat\\\" instrument setting with non-compliance. The instrument corresponds to a fully randomized recommendation of treatment. Then each sample complies with the recommendation to some degree. This probability also depends on an unobserved confounder that has a direct effect on the outcome. Moreover, compliance also depends on the observed feature $X$.\\n\",\n                \"\\n\",\n                \"\\\\begin{align}\\n\",\n                \"X \\\\tag{ real features}\\\\\\\\\\n\",\n                \"Z \\\\tag{real instrument}\\\\\\\\\\n\",\n                \"\\\\nu \\\\sim \\\\; & \\\\text{U}[0, 1] \\\\tag{unobserved confounder}\\\\\\\\\\n\",\n                \"C = \\\\; & c\\\\cdot X[i], \\\\; c \\\\;(const)\\\\sim \\\\text{U}[.2, .3] \\\\tag{compliance degree}\\\\\\\\\\n\",\n                \"T = \\\\; & C\\\\cdot Z + g(X) + \\\\nu  \\\\tag{treatment}\\\\\\\\\\n\",\n                \"y \\\\sim \\\\; & \\\\text{Normal}(\\\\mu=\\\\theta(X) \\\\cdot (T + \\\\nu) + f(X),\\\\; \\\\sigma=.1) \\\\tag{outcome}\\n\",\n                \"\\\\end{align}\\n\",\n                \"\\n\",\n                \"Moreover:\\n\",\n                \"\\\\begin{align}\\n\",\n                \"\\\\theta(X) = \\\\; & \\\\alpha + \\\\beta \\\\cdot X[i] \\\\tag{CATE}\\\\\\\\\\n\",\n                \"f(X) = \\\\; & X[i] \\\\tag{Nuissance function}\\\\\\\\\\n\",\n                \"g(X) = \\\\; & X[i] \\\\tag{Nuissance function}\\n\",\n                \"\\\\end{align}\\n\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 5,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAloAAACcCAYAAACndQVqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAG81JREFUeJzt3Xu4HFWZ7/Hvj4TLcJNbuAeCGLk5\\nY8DIQUFBOUgYdQKjHKMC0UHBmTgDyswQcDwMPkaDRxDnjCgRkDAgGAElIoKcAOMwg0C4KISARK4h\\nIQn3wEAg4T1/rNVQ6XTv3b3TtXt37d/nefbT3atWV63q6n73W6tWVSkiMDMzM7POW6fbDTAzMzOr\\nKidaZmZmZiVxomVmZmZWEidaZmZmZiVxomVmZmZWEidaZmZmZiUZ1omWpAslvSrpkS4s+4952RcP\\n9rL7I2m6pPO63Y5eIelnkia0UG9DSQ9I2nww2mXV4njVmONV50jaTtJ8Seu1UPd/SbpwEJrV8yqd\\naEl6sfD3uqSXC68/nat9KyLG5Prvq3tP8b0XtLlsSTpD0tP571uSVJseEbsC32hxXqcW2vKKpFWF\\n1/NaeP9vJR3VTvvbIelvJD0kabmkqyVt06DOBjlYLyiUvb3BZx2SprS43N/m+rvVlV+by/db+7Xr\\ntw3vBnaJiGslnV63nVYWXt8REf8NXAL8fRvz30fSr/N36JUG00dJ+oWklyQ9LOnj/cxvqqQlkp6X\\ndK6kdQvTZkl6UtILku6XdEwbH4WtpS7Hqw9IujF/Lx6pn16VeJU/sxskPSNpmaRLJW1dmL6OpO9I\\nelbSU5K+3mQ+H8ox5p+aTL80T9+xxXbtnuv/V1359vnzu7+d9VwL/wScGxGv5nhd226r8rasvf4y\\ncDnwnvr42xdJX5J0p1LS/oO6aePytGfz9rlO0tv7mFdLsU/SN/Nne0Cr7ey0SidaEbFx7Q94DPho\\noeySBvX/o/ie/L6/BF4Ezmpz8ccBhwPvBP4M+Ahw/ADX4xuF9nwBuKXQxr0GMs9OkXQo6cd5GLAV\\nsAS4qEHVrwBPFAsi4g91n/V4YBXwszaa8AfgjYRA0rbAnwLPt7Mea+ELwL8BRMRphXU5EbipsH7v\\nyvUvAY6VNLLF+a8ALs3LaWQG8CywNXAscIGksY0qSpoI/B3wfuCtpM/pK4UqpwM7RcSmwMeAMyW9\\n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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 720x144 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"def dgp_bin_Z_cont_T(X, Z, hetero_col, true_fn, random_seed=None):\\n\",\n                \"    np.random.seed(random_seed)\\n\",\n                \"    n, d = X.shape\\n\",\n                \"    nu = np.random.uniform(-1, 1, size=(n,))\\n\",\n                \"    c = np.random.uniform(0.2, 0.3)\\n\",\n                \"    C = c * X[:, hetero_col] # Compliers when recomended\\n\",\n                \"    T = C * Z + X[:, hetero_col] + nu # Treatment with compliance\\n\",\n                \"    y = true_fn(X) * (T + nu)  + 0.05*X[:, hetero_col] + np.random.normal(0, .1, size=(n,))\\n\",\n                \"    return y, T\\n\",\n                \"\\n\",\n                \"hetero_col = 4 # Mother's education\\n\",\n                \"hetero_col_2 = 7\\n\",\n                \"true_fn = lambda X: 0.1 + 0.05*X[:, hetero_col] - 0.1*X[:, hetero_col_2]\\n\",\n                \"\\n\",\n                \"np.random.seed(1237)\\n\",\n                \"y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn)\\n\",\n                \"\\n\",\n                \"plt.figure(figsize=(10, 2))\\n\",\n                \"plt.subplot(1, 2, 1)\\n\",\n                \"plt.hist(T[Z==0])\\n\",\n                \"plt.title(\\\"T[Z=0]: Total: {}, Mean(T): {:.2f}\\\".format(T[Z==0].shape[0], np.mean(T[Z==0])))\\n\",\n                \"plt.subplot(1, 2, 2)\\n\",\n                \"plt.hist(T[Z==1])\\n\",\n                \"plt.title(\\\"T[Z=1]: Total: {}, Mean(T): {:.2f}\\\".format(T[Z==1].shape[0], np.mean(T[Z==1])))\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ANALYSIS\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some hyperparameters\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 6,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"0.006686726847208292\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"random_seed = 12345 # random seed for each experiment\\n\",\n                \"N_SPLITS = 10 # number of splits for cross-fitting\\n\",\n                \"COV_CLIP = 20/X.shape[0] # covariance clipping in driv\\n\",\n                \"print(COV_CLIP)\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Defining some generic non-parametric regressors and classifiers\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 7,\n            \"metadata\": {},\n            \"outputs\": [],\n            \"source\": [\n                \"from utilities import RegWrapper\\n\",\n                \"from sklearn.model_selection import GridSearchCV\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n                \"from xgb_utilities import XGBWrapper\\n\",\n                \"\\n\",\n                \"# Linear models for regression and classification \\n\",\n                \"model = lambda: Pipeline([('poly', PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)),\\n\",\n                \"                          ('lasso', LassoCV(cv=3, n_jobs=-1))])\\n\",\n                \"model_clf = lambda: RegWrapper(Pipeline([('poly', PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)),\\n\",\n                \"                                    ('logistic', LogisticRegressionCV(cv=3, solver='liblinear',\\n\",\n                \"                                                                      scoring='neg_log_loss', n_jobs=-1))]))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"### Some utility functions\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 8,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def nuisance_diagnostic(cate, nuisance_model, property_name, property_fn, \\n\",\n                \"                        index_names=None, statistic=np.std, threshold=None):\\n\",\n                \"    std = statistic([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]], axis=0)\\n\",\n                \"    if hasattr(std, '__len__'):\\n\",\n                \"        if threshold is None:\\n\",\n                \"            coefs = np.argmax(std).flatten()\\n\",\n                \"        else:\\n\",\n                \"            coefs = np.argwhere(std >= threshold).flatten()\\n\",\n                \"        if index_names is None:\\n\",\n                \"            index_names = np.arange(std.shape[0])\\n\",\n                \"        for high_var in coefs:\\n\",\n                \"            plt.title(\\\"{}: {}[{}] Across Folds\\\".format(nuisance_model, property_name, index_names[high_var]))\\n\",\n                \"            plt.plot([property_fn(ns)[high_var] for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"            plt.xlabel('fold')\\n\",\n                \"            plt.ylabel('property')\\n\",\n                \"            plt.show()\\n\",\n                \"    else:\\n\",\n                \"        plt.title(\\\"{}: {} Across Folds\\\".format(nuisance_model, property_name))    \\n\",\n                \"        plt.plot([property_fn(ns) for ns in cate.fitted_nuisances[nuisance_model]])\\n\",\n                \"        plt.xlabel('fold')\\n\",\n                \"        plt.ylabel('property')\\n\",\n                \"        plt.show()\\n\",\n                \"    \"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE via DMLATEIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 9,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\numba\\\\errors.py:105: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9\\n\",\n                        \"  warnings.warn(msg)\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_ate_iv import DMLATEIV\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We need to specify models to be used for each of these residualizations\\n\",\n                \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n                \"model_T_X = lambda: model() # model for E[T | X]. We use a regressor since T is continuous\\n\",\n                \"model_Z_X = lambda: model_clf() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n                \"\\n\",\n                \"dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 10,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_ate_iv.DMLATEIV at 0x22503e76358>\"\n                        ]\n                    },\n                    \"execution_count\": 10,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# We fit DMLATEIV with these models\\n\",\n                \"dmlate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 11,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# We call effect() to get the ATE\\n\",\n                \"ta_effect = dmlate.effect()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 12,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.651\\n\",\n                        \"True ATE: 0.609\\n\",\n                        \"CATE MSE: 0.03\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\\n\",\n                \"# CATE MSE\\n\",\n                \"print(\\\"CATE MSE: {:.2f}\\\".format(np.mean((true_fn(X_raw) - ta_effect)**2)))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 13,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate Interval: (0.607, 0.696)\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can call normal_effect_interval to get confidence intervals based\\n\",\n                \"# based on the asympotic normal approximation\\n\",\n                \"ta_effect = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"# Comparison with true ATE\\n\",\n                \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(ta_effect[0], ta_effect[1]))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 14,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\\n\",\n                        \"[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:  1.4min\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage: 0.52\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed:  8.4min finished\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"def get_dmlateiv_coverage(true_effect, iteration):\\n\",\n                \"    y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn, random_seed=iteration)\\n\",\n                \"    dmlate = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n                \"                  n_splits=N_SPLITS, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n                \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                  binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                 )\\n\",\n                \"    dmlate.fit(y, T, X, Z)\\n\",\n                \"    left, right = dmlate.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n                \"    if true_effect >= left and true_effect <= right:\\n\",\n                \"        return 1\\n\",\n                \"    return 0\\n\",\n                \"\\n\",\n                \"from joblib import Parallel, delayed\\n\",\n                \"n_experiments=100\\n\",\n                \"true_ate = np.mean(true_fn(X_raw))\\n\",\n                \"if True:\\n\",\n                \"    contains_truth = np.array(Parallel(n_jobs=-1, verbose=3)(\\n\",\n                \"            delayed(get_dmlateiv_coverage)(true_ate, it) for it in range(n_experiments)))\\n\",\n                \"    print(\\\"Coverage: {}\\\".format(contains_truth.mean()))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and CATE via DMLIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 15,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from utilities import SelectiveLasso, SeparateModel\\n\",\n                \"from sklearn.linear_model import LassoCV, LogisticRegressionCV\\n\",\n                \"from econml.utilities import hstack\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DMLIV we also need a model for E[T | X, Z]. To allow for heterogeneity in the compliance, i.e.\\n\",\n                \"# T = beta(X)*Z + gamma(X)\\n\",\n                \"# we train a separate model for Z=1 and Z=0. The model for Z=1 learns the\\n\",\n                \"# quantity beta(X) + gamma(X) and the model for Z=0 learns gamma(X).\\n\",\n                \"model_T_XZ = lambda: SeparateModel(model(), model())\\n\",\n                \"\\n\",\n                \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n                \"#      theta(X) = <theta, phi(X)>\\n\",\n                \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n                \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n                \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n                \"\\n\",\n                \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n                \"# This model will minimize the square loss:\\n\",\n                \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n                \"#dmliv_model_effect = lambda: LinearRegression(fit_intercept=False)\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# Potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n                \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n                \"# that does not penalize the constant term in the CATE model\\n\",\n                \"dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, fit_intercept=False))\\n\",\n                \"\\n\",\n                \"\\n\",\n                \"# We initialize DMLIV with all these models and call fit\\n\",\n                \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n                \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"             n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"             binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"            )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 16,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dml_iv.DMLIV at 0x225047062e8>\"\n                        ]\n                    },\n                    \"execution_count\": 16,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"cate.fit(y, T, X, Z)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 17,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYEAAAD8CAYAAACRkhiPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAFMJJREFUeJzt3X+MXeWd3/H3t9jBDoEazGBhj6ln\\nK++yxlkgDIYumxVZr8AJ0ZqIRThhN05CZIEppFWlYrZSiBSsuCpCG5Y4yEpSiAIhDpsuXprQpaY0\\nTfjVAUywMV4MODCxix1T75KsMNj+9o97Arcw9lzuuT8YP++XZN1zn/Oc83wfeXQ/c37cM5GZSJLK\\n9M/6XYAkqX8MAUkqmCEgSQUzBCSpYIaAJBXMEJCkghkCklQwQ0CSCmYISFLBJvW7gPEcf/zxOWfO\\nnH6XIUkTymOPPfbLzBwYr997PgTmzJnDyMhIv8uQpAklIn7eSr9xTwdFxLciYmdEbGxq+08R8UxE\\n/Cwi/ktETGtad21EbI2ILRFxflP7GRHxVLXupoiIdzspSVJntXJN4FZg0dva7gPmZ+bvAX8PXAsQ\\nEfOAJcAp1TarI+KIapuvA8uAudW/t+9TktRj44ZAZv4YeOVtbX+Xmfuqtw8Dg9XyYuDOzNybmS8A\\nW4EFEXEicExmPpSNx5Z+G7iwU5OQJLWnE9cEPgd8r1qeRSMUfmO0anujWn57uyR11RtvvMHo6Civ\\nvfZav0vpiilTpjA4OMjkyZPb2r5WCETEfwD2Abf/pmmMbnmI9oPtdxmNU0ecdNJJdUqUVLjR0VGO\\nPvpo5syZw+F2KTIz2b17N6OjowwNDbW1j7a/JxARS4GPA5fmW3+ZZhSY3dRtENhetQ+O0T6mzFyT\\nmcOZOTwwMO4dTpJ0UK+99hrTp08/7AIAICKYPn16raOctkIgIhYB1wB/kpn/1LRqHbAkIo6MiCEa\\nF4AfzcwdwKsRcXZ1V9CngbvbrlqS3oXDMQB+o+7cxj0dFBHfBc4Fjo+IUeA6GncDHQncVxXwcGZe\\nnpmbImIt8DSN00RXZub+aldX0LjTaCrwo+qfJKmPxg2BzPzkGM3fPET/lcDKMdpHgPnvqjpJ6rA5\\nK/5rR/e3bdUFHd3frbfeynnnncfMmTM7ut+Dec9/Y1hSPZ380Ov0B57e6dZbb2X+/PmGgCQdTr7z\\nne9w00038frrr3PWWWexevVqLrvsMkZGRogIPve5zzF79mxGRka49NJLmTp1Kg899BBTp07tal2G\\ngCR12ebNm/ne977HT3/6UyZPnszy5cu5/vrr+cUvfsHGjY0n8uzZs4dp06Zx8803c8MNNzA8PNyT\\n2nyUtCR12fr163nsscc488wzOe2001i/fj2vvPIKzz//PFdddRX33nsvxxxzTF9qMwQkqcsyk6VL\\nl7JhwwY2bNjAli1b+OpXv8qTTz7Jueeey9e+9jU+//nP96U2Q0CSumzhwoXcdddd7Ny5E4BXXnmF\\nn//85xw4cICLLrqIL3/5yzz++OMAHH300bz66qs9q81rApKK0o87nObNm8f111/Peeedx4EDB5g8\\neTI33ngjn/jEJzhw4AAAX/nKVwD4zGc+w+WXX+6FYUk6nFxyySVccskl/1/bb377b3bRRRdx0UUX\\n9aosTwdJUskMAUkqmCEgSQUzBCSpYIaAJBXMEJCkgnmLqKSybH+is/ubefohV+/Zs4c77riD5cuX\\nd3bcDvFIQJK6aM+ePaxevfod7fv37x+jd+8ZApLURStWrOC5557jtNNO48wzz+QjH/kIn/rUp/jg\\nBz/Itm3bmD//rb+1dcMNN/ClL30JgOeee45FixZxxhln8OEPf5hnnnmmK/V5OkiSumjVqlVs3LiR\\nDRs28MADD3DBBRewceNGhoaG2LZt20G3W7ZsGbfccgtz587lkUceYfny5dx///0dr88QkKQeWrBg\\nAUNDQ4fs86tf/YoHH3yQiy+++M22vXv3dqUeQ0CSeuioo456c3nSpElvPkAO4LXXXgPgwIEDTJs2\\njQ0bNnS9Hq8JSFIXHerR0DNmzGDnzp3s3r2bvXv3cs899wBwzDHHMDQ0xPe//32g8fcInnzyya7U\\n55GApLKMc0tnp02fPp1zzjmH+fPnM3XqVGbMmPHmusmTJ/PFL36Rs846i6GhIU4++eQ3191+++1c\\nccUVXH/99bzxxhssWbKEU089teP1GQKS1GV33HHHQdddffXVXH311e9oHxoa4t577+1mWYCngySp\\naIaAJBXMEJB02MvMfpfQNXXnNm4IRMS3ImJnRGxsajsuIu6LiGer12Ob1l0bEVsjYktEnN/UfkZE\\nPFWtuykiolblktSCKVOmsHv37sMyCDKT3bt3M2XKlLb30cqF4VuBm4FvN7WtANZn5qqIWFG9vyYi\\n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\\nRK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X)\\n\",\n                \"dml_effect = cate.effect(X)\\n\",\n                \"plt.hist(dml_effect, label='est')\\n\",\n                \"plt.hist(true_fn(X_raw), alpha=.2, label='true')\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 18,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[ 0.62317714  0.          0.          0.         -0.          0.10377389\\n\",\n                        \" -0.          0.         -0.         -0.          0.          0.\\n\",\n                        \" -0.         -0.         -0.         -0.          0.          0.\\n\",\n                        \" -0.          0.          0.         -0.          0.        ]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# To get the parameter theta we call coef_. The first entry is the intercept of the CATE model\\n\",\n                \"print(cate.coef_)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 19,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.624\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dml_effect)))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 20,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}. MSE={:.3f}\\\".format(X_df.columns[4], np.mean((dml_effect-true_fn(X_raw))**2)))\\n\",\n                \"plt.scatter(X[:, 4], dml_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"# ATE and Projected CATE via DRIV\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 21,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# If we want to fit an ATE, we simply fit a constant functin theta(X) = theta\\n\",\n                \"# We can do this with a pipeline where the preprocessing step only creates a bias column\\n\",\n                \"# and the regression step fits a linear regression with no intercept.\\n\",\n                \"# To get normal confidence intervals easily we can use a statsmodels linear regression\\n\",\n                \"# wrapped in an sklearn interface\\n\",\n                \"const_driv_model_effect = lambda: ConstantModel()\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=False)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=False, # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                        opt_reweighted=False # whether to optimally re-weight samples. Valid only for flexible final model\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 22,\n            \"metadata\": {\n                \"scrolled\": true\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x225048e3668>\"\n                        ]\n                    },\n                    \"execution_count\": 22,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 23,\n            \"metadata\": {\n                \"scrolled\": false\n            },\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\statsmodels\\\\regression\\\\linear_model.py:1554: RuntimeWarning: invalid value encountered in double_scalars\\n\",\n                        \"  return self.ess/self.df_model\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:877: RuntimeWarning: invalid value encountered in greater\\n\",\n                        \"  return (self.a < x) & (x < self.b)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:877: RuntimeWarning: invalid value encountered in less\\n\",\n                        \"  return (self.a < x) & (x < self.b)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\scipy\\\\stats\\\\_distn_infrastructure.py:1831: RuntimeWarning: invalid value encountered in less_equal\\n\",\n                        \"  cond2 = cond0 & (x <= self.a)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     nan</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>15:27:35</td>     <th>  Log-Likelihood:    </th> <td> -7831.2</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.566e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2990</td>      <th>  BIC:               </th> <td>1.567e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th> <td>    0.5458</td> <td>    0.061</td> <td>    8.995</td> <td> 0.000</td> <td>    0.427</td> <td>    0.665</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>4190.040</td> <th>  Durbin-Watson:     </th>  <td>   1.964</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>8408463.090</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td>-7.266</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>262.343</td> <th>  Cond. No.          </th>  <td>    1.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n                            \"Method:                 Least Squares   F-statistic:                       nan\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):                nan\\n\",\n                            \"Time:                        15:27:35   Log-Likelihood:                -7831.2\\n\",\n                            \"No. Observations:                2991   AIC:                         1.566e+04\\n\",\n                            \"Df Residuals:                    2990   BIC:                         1.567e+04\\n\",\n                            \"Df Model:                           0                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.5458      0.061      8.995      0.000       0.427       0.665\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     4190.040   Durbin-Watson:                   1.964\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          8408463.090\\n\",\n                            \"Skew:                          -7.266   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     262.343   Cond. No.                         1.00\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 23,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n                \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n                \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n                \"const_dr_cate.effect_model.summary()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 24,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"def get_driv_coverage(true_effect, iteration):\\n\",\n                \"    y, T = dgp_bin_Z_cont_T(X_raw, Z, hetero_col, true_fn, random_seed=iteration)\\n\",\n                \"    dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=True)\\n\",\n                \"    const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                            dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                            model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                            const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                            cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                            n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                            binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                            binary_treatment=False # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                           )\\n\",\n                \"    const_dr_cate.fit(y, T, X, Z, store_final=True)\\n\",\n                \"    left, right = const_dr_cate.effect_model.est.model.conf_int(alpha=0.05)[0]\\n\",\n                \"    if true_effect >= left and true_effect <= right:\\n\",\n                \"        return 1\\n\",\n                \"    return 0\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 25,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Using backend LokyBackend with 12 concurrent workers.\\n\",\n                        \"[Parallel(n_jobs=-1)]: Done   8 tasks      | elapsed:  1.3min\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage: 0.98\\n\"\n                    ]\n                },\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 11.3min finished\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from joblib import Parallel, delayed\\n\",\n                \"n_experiments=100\\n\",\n                \"true_ate = np.mean(true_fn(X_raw))\\n\",\n                \"if True:\\n\",\n                \"    contains_truth = np.array(Parallel(n_jobs=-1, verbose=3)(\\n\",\n                \"            delayed(get_driv_coverage)(true_ate, it) for it in range(n_experiments)))\\n\",\n                \"    print(\\\"Coverage: {}\\\".format(contains_truth.mean()))\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Projecting CATE to a pre-chosen subset of variables in final model\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 26,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"[4 7]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# We could also fit a projection on a subset of the features by using the\\n\",\n                \"# subset wrapper from our utilities.\\n\",\n                \"\\n\",\n                \"# Example: including everything for expository purposes, but any array_like of indices would work\\n\",\n                \"subset_names = set(['motheduc', 'sinmom14'])\\n\",\n                \"# list of indices of features X to use in the final model\\n\",\n                \"feature_inds = np.argwhere([(x in subset_names) for x in X_df.columns.values]).flatten() #[0] #np.arange(X.shape[1]) \\n\",\n                \"print(feature_inds)\\n\",\n                \"# Because we are projecting to a low dimensional model space, we can\\n\",\n                \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n                \"# the hypothesis testing capability\\n\",\n                \"proj_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n                \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n                \"                                         )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 27,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"Index(['exper', 'expersq', 'fatheduc', 'fatheduc_nan', 'motheduc',\\n\",\n                            \"       'motheduc_nan', 'momdad14', 'sinmom14', 'reg661', 'reg662', 'reg663',\\n\",\n                            \"       'reg664', 'reg665', 'reg666', 'reg667', 'reg668', 'reg669', 'south66',\\n\",\n                            \"       'black', 'smsa', 'south', 'smsa66'],\\n\",\n                            \"      dtype='object')\"\n                        ]\n                    },\n                    \"execution_count\": 27,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"X_df.columns\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 28,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"proj_dr_cate = const_dr_cate.refit_final(proj_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 29,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"# To get the CATE at every X we call effect(X[:, feature_inds])\\n\",\n                \"proj_dr_effect = proj_dr_cate.effect(X[:, feature_inds])\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 30,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"text/html\": [\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<caption>OLS Regression Results</caption>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.002</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.001</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   2.637</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Date:</th>             <td>Sat, 01 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>0.0717</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Time:</th>                 <td>15:38:55</td>     <th>  Log-Likelihood:    </th> <td> -7828.6</td> \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>No. Observations:</th>      <td>  2991</td>      <th>  AIC:               </th> <td>1.566e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Residuals:</th>          <td>  2988</td>      <th>  BIC:               </th> <td>1.568e+04</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Df Model:</th>              <td>     2</td>      <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"      <td></td>        <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>const</th>    <td>    0.5561</td> <td>    0.064</td> <td>    8.684</td> <td> 0.000</td> <td>    0.431</td> <td>    0.682</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>motheduc</th> <td>    0.1310</td> <td>    0.062</td> <td>    2.121</td> <td> 0.034</td> <td>    0.010</td> <td>    0.252</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>sinmom14</th> <td>   -0.1149</td> <td>    0.204</td> <td>   -0.563</td> <td> 0.573</td> <td>   -0.515</td> <td>    0.285</td>\\n\",\n                            \"</tr>\\n\",\n                            \"</table>\\n\",\n                            \"<table class=\\\"simpletable\\\">\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Omnibus:</th>       <td>4157.081</td> <th>  Durbin-Watson:     </th>  <td>   1.966</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td>8324885.444</td>\\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Skew:</th>           <td>-7.146</td>  <th>  Prob(JB):          </th>  <td>    0.00</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"<tr>\\n\",\n                            \"  <th>Kurtosis:</th>       <td>261.061</td> <th>  Cond. No.          </th>  <td>    3.41</td>  \\n\",\n                            \"</tr>\\n\",\n                            \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n                        ],\n                        \"text/plain\": [\n                            \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n                            \"\\\"\\\"\\\"\\n\",\n                            \"                            OLS Regression Results                            \\n\",\n                            \"==============================================================================\\n\",\n                            \"Dep. Variable:                      y   R-squared:                       0.002\\n\",\n                            \"Model:                            OLS   Adj. R-squared:                  0.001\\n\",\n                            \"Method:                 Least Squares   F-statistic:                     2.637\\n\",\n                            \"Date:                Sat, 01 Jun 2019   Prob (F-statistic):             0.0717\\n\",\n                            \"Time:                        15:38:55   Log-Likelihood:                -7828.6\\n\",\n                            \"No. Observations:                2991   AIC:                         1.566e+04\\n\",\n                            \"Df Residuals:                    2988   BIC:                         1.568e+04\\n\",\n                            \"Df Model:                           2                                         \\n\",\n                            \"Covariance Type:            nonrobust                                         \\n\",\n                            \"==============================================================================\\n\",\n                            \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n                            \"------------------------------------------------------------------------------\\n\",\n                            \"const          0.5561      0.064      8.684      0.000       0.431       0.682\\n\",\n                            \"motheduc       0.1310      0.062      2.121      0.034       0.010       0.252\\n\",\n                            \"sinmom14      -0.1149      0.204     -0.563      0.573      -0.515       0.285\\n\",\n                            \"==============================================================================\\n\",\n                            \"Omnibus:                     4157.081   Durbin-Watson:                   1.966\\n\",\n                            \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):          8324885.444\\n\",\n                            \"Skew:                          -7.146   Prob(JB):                         0.00\\n\",\n                            \"Kurtosis:                     261.061   Cond. No.                         3.41\\n\",\n                            \"==============================================================================\\n\",\n                            \"\\n\",\n                            \"Warnings:\\n\",\n                            \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n                            \"\\\"\\\"\\\"\"\n                        ]\n                    },\n                    \"execution_count\": 30,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"# To get the statsmodel summary we look at the effect_model, which is\\n\",\n                \"# an instance of SubsetWrapper, we look at the model of the SubsetWrapper which is \\n\",\n                \"# and instance of the pipeline, we then look at the reg step of the pipeline which is the statsmodel wrapper and\\n\",\n                \"# call summary() of the wrapper (most prob there is a better API for this, but we can go with this for now :)\\n\",\n                \"proj_dr_cate.effect_model.summary(alpha=.05, xname=['const']+list(X_df.columns[feature_inds]))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 31,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Estimated Params: 0.5560648374345198, [ 0.13103506 -0.11489838]\\n\",\n                        \"True Params: [ 0.61740685  0.14934234 -0.1       ]\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can access the coefficient by looking at the coefficient attribute of the final step of the pipeline\\n\",\n                \"print(\\\"Estimated Params: {}, {}\\\".format(proj_dr_cate.intercept_, proj_dr_cate.coef_))\\n\",\n                \"# True coefficients of projection\\n\",\n                \"print(\\\"True Params: {}\\\".format(\\n\",\n                \"        LinearRegression(fit_intercept=False).fit(PolynomialFeatures(degree=1,\\n\",\n                \"                                                                     include_bias=True).fit_transform(X[:, feature_inds]),\\n\",\n                \"                                                  true_fn(X_raw)).coef_))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 32,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"Coverage of True Projection: 1.00\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x432 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n                \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n                \"res = proj_dr_cate.effect_model.model\\n\",\n                \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n                \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n                \"pred = frame['mean']\\n\",\n                \"iv_l = frame['mean_ci_lower']\\n\",\n                \"iv_u = frame['mean_ci_upper']\\n\",\n                \"\\n\",\n                \"# This is the true CATE functions\\n\",\n                \"theta_true = true_fn(X_raw)\\n\",\n                \"# This is the true projection of the CATE function on the subspace of linear functions of the\\n\",\n                \"# subset of the features used in the projection\\n\",\n                \"true_proj = LinearRegression().fit(X[:, feature_inds], theta_true).predict(X[:, feature_inds])\\n\",\n                \"\\n\",\n                \"# Are we covering the true projection\\n\",\n                \"covered = (true_proj <= iv_u) & (true_proj >= iv_l)\\n\",\n                \"print(\\\"Coverage of True Projection: {:.2f}\\\".format(np.mean(covered)))\\n\",\n                \"\\n\",\n                \"fig, ax = plt.subplots(figsize=(8,6))\\n\",\n                \"\\n\",\n                \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'r--')\\n\",\n                \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'r--')\\n\",\n                \"ax.plot(X[order, feature_inds[0]], pred[order], 'g--.', label=\\\"pred\\\")\\n\",\n                \"ax.plot(X[order, feature_inds[0]], theta_true[order], 'b-', label=\\\"True\\\", alpha=.3)\\n\",\n                \"ax.plot(X[order, feature_inds[0]], true_proj[order], 'b-', label=\\\"TrueProj\\\", alpha=.3)\\n\",\n                \"ax.legend(loc='best')\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"source\": [\n                \"# CATE via Re-Weighted DRIV: DRIV-RW\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Lasso CATE\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 33,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel, WeightWrapper\\n\",\n                \"from sklearn.dummy import DummyRegressor\\n\",\n                \"\\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n                \"model_TZ_X = lambda: model()\\n\",\n                \"\\n\",\n                \"# We also need a model for the final regression that will fit the function theta(X)\\n\",\n                \"# This model now needs to accept sample weights at fit time.\\n\",\n                \"const_driv_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n                \"                                                          ('reg', SelectiveLasso(np.arange(1, X.shape[1]+1),\\n\",\n                \"                                                                                  LassoCV(cv=5, fit_intercept=False)))]))\\n\",\n                \"\\n\",\n                \"# As in OrthoDMLIV we need a perliminary estimator of the CATE.\\n\",\n                \"# We use a DMLIV estimator with no cross-fitting (n_splits=1)\\n\",\n                \"dmliv_prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n                \"                                dmliv_model_effect(), dmliv_featurizer(),\\n\",\n                \"                                n_splits=1, binary_instrument=True, binary_treatment=False)\\n\",\n                \"\\n\",\n                \"const_dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n                \"                        dmliv_prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n                \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n                \"                        const_driv_model_effect(), # model for final stage of fitting theta(X)\\n\",\n                \"                        cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n                \"                        n_splits=N_SPLITS, # number of splits to use for cross-fitting\\n\",\n                \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n                \"                        binary_treatment=False, # a flag whether to stratify cross-fitting by treatment\\n\",\n                \"                        opt_reweighted=True # whether to optimally re-weight samples. Valid only for flexible final model\\n\",\n                \"                       )\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 34,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stderr\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\",\n                        \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\sklearn\\\\linear_model\\\\coordinate_descent.py:492: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\\n\",\n                        \"  ConvergenceWarning)\\n\"\n                    ]\n                },\n                {\n                    \"data\": {\n                        \"text/plain\": [\n                            \"<dr_iv.DRIV at 0x225048e3278>\"\n                        ]\n                    },\n                    \"execution_count\": 34,\n                    \"metadata\": {},\n                    \"output_type\": \"execute_result\"\n                }\n            ],\n            \"source\": [\n                \"const_dr_cate.fit(y, T, X, Z, store_final=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 35,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.612\\n\",\n                        \"True ATE: 0.609\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"# We can average the CATE to get an ATE\\n\",\n                \"dr_effect = const_dr_cate.effect(X)\\n\",\n                \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dr_effect)))\\n\",\n                \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 36,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n                \"plt.title(\\\"DMLIV CATE as Function of {}: MSE={:.3f}\\\".format(X_df.columns[4], np.mean((dr_effect-true_fn(X_raw))**2)))\\n\",\n                \"plt.scatter(X[:, 4], dr_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"markdown\",\n            \"metadata\": {},\n            \"source\": [\n                \"## Random Forest CATE\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 37,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"from dml_iv import DMLIV\\n\",\n                \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n                \"from utilities import SubsetWrapper\\n\",\n                \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n                \"    \\n\",\n                \"np.random.seed(random_seed)\\n\",\n                \"\\n\",\n                \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=5000, max_depth=3, min_impurity_decrease=0.00001,\\n\",\n                \"                                                     min_samples_leaf=100, bootstrap=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 38,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_cate = const_dr_cate.refit_final(rf_driv_model_effect())\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 39,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": [\n                \"rf_dr_effect = rf_dr_cate.effect(X)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 40,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"name\": \"stdout\",\n                    \"output_type\": \"stream\",\n                    \"text\": [\n                        \"ATE Estimate: 0.63\\n\",\n                        \"True ATE: 0.61\\n\"\n                    ]\n                }\n            ],\n            \"source\": [\n                \"print(\\\"ATE Estimate: {:.2f}\\\".format(np.mean(rf_dr_effect)))\\n\",\n                \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_raw))))\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 41,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 432x288 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_raw) - rf_dr_effect)**2)))\\n\",\n                \"plt.scatter(X[:, 4], rf_dr_effect, label='est')\\n\",\n                \"plt.scatter(X[:, 4], true_fn(X_raw), label='true', alpha=.2)\\n\",\n                \"plt.legend()\\n\",\n                \"plt.show()\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 42,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 1440x216 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"import shap\\n\",\n                \"import pandas as pd\\n\",\n                \"\\n\",\n                \"Xdf = pd.DataFrame(X, columns=X_df.columns)\\n\",\n                \"# explain the model's predictions using SHAP values\\n\",\n                \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n                \"shap_values = explainer.shap_values(Xdf)\\n\",\n                \"\\n\",\n                \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n                \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 43,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\no+m4ZUanRI8AAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x684 with 2 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"shap.summary_plot(shap_values, Xdf)\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": 44,\n            \"metadata\": {},\n            \"outputs\": [\n                {\n                    \"data\": {\n                        \"image/png\": \"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\\nN08AAAAASUVORK5CYII=\\n\",\n                        \"text/plain\": [\n                            \"<Figure size 576x684 with 1 Axes>\"\n                        ]\n                    },\n                    \"metadata\": {},\n                    \"output_type\": \"display_data\"\n                }\n            ],\n            \"source\": [\n                \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n            ]\n        },\n        {\n            \"cell_type\": \"code\",\n            \"execution_count\": null,\n            \"metadata\": {\n                \"collapsed\": true\n            },\n            \"outputs\": [],\n            \"source\": []\n        }\n    ],\n    \"metadata\": {\n        \"kernelspec\": {\n            \"display_name\": \"Python 3\",\n            \"language\": \"python\",\n            \"name\": \"python3\"\n        },\n        \"language_info\": {\n            \"codemirror_mode\": {\n                \"name\": \"ipython\",\n                \"version\": 3\n            },\n            \"file_extension\": \".py\",\n            \"mimetype\": \"text/x-python\",\n            \"name\": \"python\",\n            \"nbconvert_exporter\": \"python\",\n            \"pygments_lexer\": \"ipython3\",\n            \"version\": \"3.7.4\"\n        }\n    },\n    \"nbformat\": 4,\n    \"nbformat_minor\": 2\n}"
  },
  {
    "path": "prototypes/dml_iv/README.md",
    "content": "# About\n\nAn orthogonal machine learning approach to estimation of heterogeneous\ntreatment effect with an endogenous treatment and an instrument. Based on the paper:\n\n**Machine Learning Estimation of Heterogeneous Treatment Effects with Instruments**  \n_Vasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis_  \n[https://arxiv.org/abs/1905.10176](https://arxiv.org/abs/1905.10176)\n\n# Guide to the Files\n\n- dml_iv.py : contains the classes that implement the DMLIV algorithm (and variants) \n- dr_iv.py : contains the classes that implement the DRIV algorithm (and variants)\n- deep_dml_iv.py, deep_dr_iv.py : contains children classes of DMLIV and DRIV that use keras neural net models as treatment effect models\n- dml_ate_iv.py : contains the class that implements DMLATEIV for ATE estimation under the assumption of neither compliance heterogeneity nor effect heterogeneity\n- utilities.py : some utility classes that were used\n- xgb_utilities.py : some utility classes that were used related to wrapping xgboost\n- NLSYM_Linear.ipynb, NLSYM_GBM.ipynb, NLSYM_Semi_Synthetic_Linear.ipynb, NLSYM_Semi_Synthetic_GBM.ipynb : a notebook that applies the methods to the real world data from Card's paper: [Using Geographic Variation in College Proximity to Estimate the Return to Schooling](http://davidcard.berkeley.edu/papers/geo_var_schooling.pdf) \n- TA_DGP_analysis.ipynb, coverage.py, post_processing.ipynb : synthetic data experiments with a DGP that resembles the TripAdvisor experiment data\n"
  },
  {
    "path": "prototypes/dml_iv/TA_DGP_analysis.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 156,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"The autoreload extension is already loaded. To reload it, use:\\n\",\n      \"  %reload_ext autoreload\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 157,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import warnings\\n\",\n    \"warnings.filterwarnings('ignore')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 158,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression, ElasticNet\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler, RobustScaler, QuantileTransformer\\n\",\n    \"from sklearn.pipeline import Pipeline\\n\",\n    \"import scipy.special\\n\",\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from dml_ate_iv import DMLATEIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Synthetic Data Generation - TripAdvisor\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"- Used for generating data that looks similar in structure (value distributions of private features are not representative of true data) to the data used for the intent-to-treat A/B test at TripAdvisor. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 159,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"import locale\\n\",\n    \"\\n\",\n    \"n = 10000  # Generated dataset size\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"X_colnames = {\\n\",\n    \"    'days_visited_exp_pre': 'day_count_pre',  # How many days did they visit TripAdvisor attractions pages in the pre-period\\n\",\n    \"    'days_visited_free_pre': 'day_count_pre',  # How many days did they visit TripAdvisor through free channels (e.g. domain direct) in the pre-period\\n\",\n    \"    'days_visited_fs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor fs pages in the pre-period    \\n\",\n    \"    'days_visited_hs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor hotels pages in the pre-period\\n\",\n    \"    'days_visited_rs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor restaurant pages in the pre-period\\n\",\n    \"    'days_visited_vrs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor vrs pages in the pre-period\\n\",\n    \"    'is_existing_member': 'binary', #Binary indicator of whether they are existing member\\n\",\n    \"    'locale_en_US': 'binary',  # User's locale\\n\",\n    \"    'os_type': 'os',  # User's operating system\\n\",\n    \"    'revenue_pre': 'revenue',  # Revenue in the pre-period\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"treat_colnames = {\\n\",\n    \"    'treatment': 'binary',  # Did they receive the easier sign-up process in the experiment? [This is the instrument]\\n\",\n    \"    'is_member': 'is_member'  # Did they become a member during the experiment period (through any means)? [This is the treatment of interest]\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"outcome_colnames = {\\n\",\n    \"    'days_visited': 'days_visited',  # How many days did they visit TripAdvisor in the experimental period\\n\",\n    \"}\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 160,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def gen_data(data_type, n):\\n\",\n    \"    gen_func = {'day_count_pre': lambda: np.random.randint(0, 29 , n),  # Pre-experiment period was 28 days\\n\",\n    \"                'day_count_post': lambda: np.random.randint(0, 15, n),  # Experiment ran for 14 days\\n\",\n    \"                'os': lambda: np.random.choice(['osx', 'windows', 'linux'], n),\\n\",\n    \"                'locale': lambda: np.random.choice(list(locale.locale_alias.keys()), n),\\n\",\n    \"                'count': lambda: np.random.lognormal(1, 1, n).astype('int'),\\n\",\n    \"                'binary': lambda: np.random.binomial(1, .5, size=(n,)),\\n\",\n    \"                ##'days_visited': lambda: \\n\",\n    \"                'revenue': lambda: np.round(np.random.lognormal(0, 3, n), 2)\\n\",\n    \"                \\n\",\n    \"               }\\n\",\n    \"    \\n\",\n    \"    return gen_func[data_type]() if data_type else None\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 161,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_data = {colname: gen_data(datatype, n) for colname, datatype in X_colnames.items()}\\n\",\n    \"##treat_data = {colname: gen_data(datatype, N) for colname, datatype in treat_colnames.items()}\\n\",\n    \"##outcome_data = {colname: gen_data(datatype, N) for colname, datatype in outcome_colnames.items()}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 162,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"['days_visited_exp_pre' 'days_visited_free_pre' 'days_visited_fs_pre'\\n\",\n      \" 'days_visited_hs_pre' 'days_visited_rs_pre' 'days_visited_vrs_pre'\\n\",\n      \" 'is_existing_member' 'locale_en_US' 'os_type' 'revenue_pre']\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"X_data=pd.DataFrame({**X_data})\\n\",\n    \"# Turn strings into categories for numeric mapping\\n\",\n    \"X_data['os_type'] = X_data.os_type.astype('category').cat.codes\\n\",\n    \"print(X_data.columns.values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 163,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_pre=X_data.values.astype('float')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 192,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def dgp_binary(X,n,true_fn):\\n\",\n    \"    ##X = np.random.uniform(-1, 1, size=(n, d))\\n\",\n    \"    Z = np.random.binomial(1, .5, size=(n,))\\n\",\n    \"    nu = np.random.uniform(-5, 5, size=(n,))\\n\",\n    \"    coef_Z = 0.8\\n\",\n    \"    plt.title(\\\"Pr[T=1 | Z=1, X] vs Pr[T=1 | Z=0, X]\\\")\\n\",\n    \"    plt.scatter(X[:, 0], coef_Z*scipy.special.expit(0.4*X[:, 0] + nu))\\n\",\n    \"    plt.scatter(X[:, 0], .1*np.ones(X.shape[0]))\\n\",\n    \"    plt.show()\\n\",\n    \"    C = np.random.binomial(1, coef_Z*scipy.special.expit(0.4*X[:, 0] + nu)) # Compliers when recomended\\n\",\n    \"    C0 = np.random.binomial(1, .006*np.ones(X.shape[0])) # Non-compliers when not recommended \\n\",\n    \"    T = C * Z + C0 * (1 - Z)\\n\",\n    \"    y = true_fn(X) * T + 2*nu + 5*(X[:, 0]>0) + 0.1*np.random.uniform(0, 1, size=(n,))\\n\",\n    \"    return y, T, Z\\n\",\n    \"true_fn = lambda X: (.8+.5*(5*(X[:,0]>5) + 10*(X[:,0]>15) + 5*(X[:, 0]>20)) - 3*X[:, 6])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 193,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"y, T, Z = dgp_binary(X_pre, n, true_fn)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 194,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = QuantileTransformer(subsample=100000).fit_transform(X_pre)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 195,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"#### y menas number of days visit TripAdvisor in the experimental period, should be in range [0,14], \\n\",\n    \"##should be strong right skewed\\n\",\n    \"plt.hist(y)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 262,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE: 4.244\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 263,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x144 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 2))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.hist(T[Z==0])\\n\",\n    \"plt.title(\\\"T[Z=0]\\\")\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.hist(T[Z==1])\\n\",\n    \"plt.title(\\\"T[Z=1]\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 264,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"New members: in treatment = 0.698482, in control = 0.004260\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"New members: in treatment = {:f}, in control = {:f}\\\".format(T[Z == 1].sum()/Z.sum(), T[Z == 0].sum()/(1-Z).sum()))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 265,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Z treatment proportion: 0.50710\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"Z treatment proportion: {:.5f}\\\".format(np.mean(Z)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining some generic regressors and classifiers\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 266,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_ate_iv import DMLATEIV\\n\",\n    \"from utilities import RegWrapper, SeparateModel\\n\",\n    \"from sklearn.model_selection import GridSearchCV, StratifiedKFold, train_test_split\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\\n\",\n    \"from sklearn.dummy import DummyClassifier\\n\",\n    \"from sklearn.linear_model import LinearRegression, LogisticRegression, LogisticRegressionCV, LassoCV\\n\",\n    \"from sklearn import metrics\\n\",\n    \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n    \"from xgb_utilities import XGBWrapper\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"# Define a generic non-parametric regressor\\n\",\n    \"#model = lambda: GradientBoostingRegressor(n_estimators=20, max_depth=3, min_samples_leaf=20,\\n\",\n    \"#                                         n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001)\\n\",\n    \"model = lambda: XGBWrapper(XGBRegressor(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n    \"                           early_stopping_rounds=5, eval_metric='rmse', binary=False)\\n\",\n    \"\\n\",\n    \"# model = lambda: RandomForestRegressor(n_estimators=100)\\n\",\n    \"# model = lambda: Lasso(alpha=0.0001) #CV(cv=5)\\n\",\n    \"# model = lambda: GradientBoostingRegressor(n_estimators=60)\\n\",\n    \"# model = lambda: LinearRegression(n_jobs=-1)\\n\",\n    \"# model = lambda: LassoCV(cv=5, n_jobs=-1)\\n\",\n    \"\\n\",\n    \"# Define a generic non-parametric classifier. We have to wrap it with the RegWrapper, because\\n\",\n    \"# we want to use predict_proba and not predict. The RegWrapper calls predict_proba of the\\n\",\n    \"# underlying model whenever predict is called.\\n\",\n    \"#model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=20, max_depth=3, min_samples_leaf=20,\\n\",\n    \"#                                         n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001))\\n\",\n    \"model_clf = lambda: RegWrapper(XGBWrapper(XGBClassifier(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n    \"                                          early_stopping_rounds=5, eval_metric='logloss', binary=True))\\n\",\n    \"# model_clf = lambda: RandomForestClassifier(n_estimators=100)\\n\",\n    \"# model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=60))\\n\",\n    \"# model_clf = lambda: RegWrapper(LogisticRegression(C=10, penalty='l1', solver='liblinear'))\\n\",\n    \"# model_clf = lambda: RegWrapper(LogisticRegressionCV(n_jobs=-1, cv=3, scoring='neg_log_loss'))\\n\",\n    \"\\n\",\n    \"model_clf_dummy = lambda: RegWrapper(DummyClassifier(strategy='prior'))\\n\",\n    \"\\n\",\n    \"# We need to specify models to be used for each of these residualizations\\n\",\n    \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n    \"model_T_X = lambda: model_clf() # model for E[T | X]. We use a classifier since T is binary\\n\",\n    \"model_Z_X = lambda: model_clf_dummy() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"# For DMLIV we also need a model for E[T | X, Z]. We use a classifier since T is binary\\n\",\n    \"# Because Z is also binary, we could have also done a more complex model_T_XZ, where we split\\n\",\n    \"# the data based on Z=1 and Z=0 and fit a separate sub-model for each case.\\n\",\n    \"model_T_XZ = lambda: SeparateModel(model_clf(), model_clf())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 267,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def plot_separate(X, X_pre, cate):\\n\",\n    \"    ones = X[:, 6]>.5\\n\",\n    \"    lower = []\\n\",\n    \"    upper = []\\n\",\n    \"    unique_X = np.unique(X[ones, 0])\\n\",\n    \"    for t in unique_X:\\n\",\n    \"        upper.append(np.percentile(cate[ones & (X[:, 0]==t)], 99))\\n\",\n    \"        lower.append(np.percentile(cate[ones & (X[:, 0]==t)], 1))\\n\",\n    \"    p = plt.fill_between(unique_X, lower, upper, label='est1', alpha=.5)\\n\",\n    \"    plt.plot(unique_X, lower, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.plot(unique_X, upper, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.scatter(X[ones, 0], true_fn(X_pre[ones]), label='true1', alpha=.8)\\n\",\n    \"    ones = X[:, 6]<.5\\n\",\n    \"    lower = []\\n\",\n    \"    upper = []\\n\",\n    \"    unique_X = np.unique(X[ones, 0])\\n\",\n    \"    for t in unique_X:\\n\",\n    \"        upper.append(np.percentile(cate[ones & (X[:, 0]==t)], 99))\\n\",\n    \"        lower.append(np.percentile(cate[ones & (X[:, 0]==t)], 1))\\n\",\n    \"    p = plt.fill_between(unique_X, lower, upper, label='est0', alpha=.5)\\n\",\n    \"    plt.plot(unique_X, lower, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.plot(unique_X, upper, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.scatter(X[ones, 0], true_fn(X_pre[ones]), label='true0', alpha=.8)\\n\",\n    \"    plt.legend()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DMLATEIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 202,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dml_ate_iv.DMLATEIV at 0x22cae297128>\"\n      ]\n     },\n     \"execution_count\": 202,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dmlateiv_obj = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n    \"                  n_splits=10, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n    \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"                  binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"                 )\\n\",\n    \"\\n\",\n    \"dmlateiv_obj.fit(y, T, X, Z)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 203,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE: 4.244\\n\",\n      \"Estimate: 4.634\\n\",\n      \"ATE Estimate Interval: (4.279, 4.989)\\n\",\n      \"ATE Estimate Std: 0.181\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"ta_effect = dmlateiv_obj.effect()\\n\",\n    \"ta_effect_conf = dmlateiv_obj.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n    \"\\n\",\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\\n\",\n    \"print(\\\"Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n    \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(ta_effect_conf[0], ta_effect_conf[1]))\\n\",\n    \"print(\\\"ATE Estimate Std: {:.3f}\\\".format(dmlateiv_obj.std))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Exogenous Treatment Approaches\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 204,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.193</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.193</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   2390.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Tue, 04 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>  0.00</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>08:38:24</td>     <th>  Log-Likelihood:    </th> <td> -32283.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>6.457e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9998</td>      <th>  BIC:               </th> <td>6.459e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>    4.3761</td> <td>    0.076</td> <td>   57.487</td> <td> 0.000</td> <td>    4.227</td> <td>    4.525</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x1</th>    <td>    6.2350</td> <td>    0.128</td> <td>   48.891</td> <td> 0.000</td> <td>    5.985</td> <td>    6.485</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>1063.535</td> <th>  Durbin-Watson:     </th> <td>   2.015</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 307.107</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>           <td> 0.072</td>  <th>  Prob(JB):          </th> <td>2.05e-67</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>       <td> 2.154</td>  <th>  Cond. No.          </th> <td>    2.42</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.193\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.193\\n\",\n       \"Method:                 Least Squares   F-statistic:                     2390.\\n\",\n       \"Date:                Tue, 04 Jun 2019   Prob (F-statistic):               0.00\\n\",\n       \"Time:                        08:38:24   Log-Likelihood:                -32283.\\n\",\n       \"No. Observations:               10000   AIC:                         6.457e+04\\n\",\n       \"Df Residuals:                    9998   BIC:                         6.459e+04\\n\",\n       \"Df Model:                           1                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const          4.3761      0.076     57.487      0.000       4.227       4.525\\n\",\n       \"x1             6.2350      0.128     48.891      0.000       5.985       6.485\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                     1063.535   Durbin-Watson:                   2.015\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              307.107\\n\",\n       \"Skew:                           0.072   Prob(JB):                     2.05e-67\\n\",\n       \"Kurtosis:                       2.154   Cond. No.                         2.42\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 204,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Simply regressing y on T\\n\",\n    \"from utilities import StatsModelLinearRegression\\n\",\n    \"StatsModelLinearRegression().fit(T.reshape(-1, 1), y).summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 205,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"5.634671366948534\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Regressing y on X, X*T, T and setting CATE(X) = Pred(X, X*1, 1) - Pred(X, X*0, 0))\\n\",\n    \"from econml.utilities import hstack\\n\",\n    \"est = StatsModelLinearRegression().fit(hstack([X, X*T.reshape(-1, 1), T.reshape(-1, 1)]), y)\\n\",\n    \"T_one = np.ones(T.shape[0])\\n\",\n    \"T_zero = np.zeros(T.shape[0])\\n\",\n    \"driv_cate = est.predict(hstack([X, X*T_one.reshape(-1, 1), T_one.reshape(-1, 1)]))-\\\\\\n\",\n    \"            est.predict(hstack([X, X*T_zero.reshape(-1, 1), T_zero.reshape(-1, 1)]))\\n\",\n    \"print(np.mean(driv_cate))\\n\",\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"Exog-T CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - driv_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, driv_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 206,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"5.848958113894934\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXYAAAEICAYAAABLdt/UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvXt4XFdh7v1bc7/PaGZ0v9iyLUty7NgEJ86FpIG0+QKhUApp048DoaTNgVDactqn0J4W0hIa6JdDCwfypVDSQIFDIC2HltJDuTSlBZo2oY5jW5JtOb7oLu25X/bMntnr/LHHE8XRyLIl6+b1ex49tvZee++1xtartdda77uElBKFQqFQbB5sa10BhUKhUKwsStgVCoVik6GEXaFQKDYZStgVCoVik6GEXaFQKDYZStgVCoVik6GEXaFQKDYZStgVdYQQp4QQRSFEbt7Xp1bx+dvOe7YUQuTnfX9Dg+teK4T4FyFEVggxI4R4Sghx53llfrp2v/8279it8+6dr52f//wOIcS/CiH0845/fYnt+ZXaPf/kvONvqR3/i3nH7hNCjNTaMCWE+KYQwl8790UhRPm8Ojy7yHP9QohHhRCaECIthPinBuXs590zJ4SoCiH+dCntU6xflLArzudnpZSBeV+/tloPllKePPdcIFI7fNW8uvz4/GuEEHcDTwCPAZ1AO/CHwBvOK3oPkKj9ee55T8173t7asfltn6gVfdd5x990Ec06AfySEMI+79jbgWPz2nBbrc6/IKUMAlcBT553nz8+rw6vXOSZnwMCQD8QBX57oUJSyur8ewIdQAn42kW0T7EOUcKuWBJCiP9fCPHkvO8/JoT4nhBC1L7/VSHECSFEQgjxt0KIjnllb6/1RtNCiEeEEP8shPiVFaiTDfgfwIeklH8ppczUxOqfpJT/dV65APDzwLuBXUKIfct99kUwDowAP12rSxy4Fvj7eWWuBX4opXwOQEqpSSkfl1LmL/ZhQoirgNdi/TKaq30eDXv353EXMC6l/NHFPlexvlDCrlgqvwVcLYR4hxDiZuBe4B4ppRRCvAZ4CPgFrB7zaeArUBeyJ4HfBWJYInfjCtVpF1Yv8/ze7fncBSRr5b6L1WNeNrWhjJQQ4voLFP3CvGf+v8DfAOV55/8NuFMI8SEhxI1CCPcyqnUAOAl8RAgxJ4Q4JIT4uSVeew/w+WU8W7FOUMKuOJ//XROrc1+/CiClLAD/Bfg48EXgvVLKsdo1bwUek1L+REpZwhLxG4QQW4HXAUeklH8jpawAnwSmVqiusdqfkxcodw/wFSmlCXwZeKsQwnERz3nkvM/kQ1AfyohIKf/tAtf/NfDTQogglsB/Yf5JKeVTwFuweu7/AMwJIf6/2hvJOT5wXh0+1+BZXcA+YA7rl95vAl8SQuxcrIJCiG3ATefXTbExUcKuOJ+fq4nVua/Pnjshpfx3rN6gAL4675oOrF76uXI5QMMa8+4Azs47J4FzvxAQQhyZN3F380XWVav92d6oQO2Xyy3Al2qHvo41/nzHRTzn/vM+kz+8mErWhlS+DfwBEJRSPr1Amb+XUr4eaMIaNvpV4JfnFfnoeXW4t8HjioCONSZfllJ+H/gB8DMXqObbgaeklGcupm2K9YkSdsWSEUK8B3ADE8DvzDs1AWyZV86P1Zsex+pNd807J+Z/L6WcPzn6LxdZpaO1Z795kTJvx/pF9A9CiCmsyUwXKzQccxF8AWsSc9EesZTSlFJ+B3gK2H0Jzzl07lZLvaD2b/I21DDMpkEJu2JJ1F7lH8Qajnkb8DvzJiG/DPyyEGJfbXz4j4GnpZSnsCYJ9wghfq42/PEeoG0l6lQbWvkt4AEhxD1CiJAQwiaEuFkI8Wit2NuBD2INT5z7+kXgDUKIppWoxxL5Plav+ZHzTwgh3iSE+AUhRJOwuB64GWvs/WL5J6yhrvcLIRxCiFuAVwH/uMg1NwMtWENGis2AlFJ9qS+klACnsF7lc/O+vg44gH8HPjCv7LuB5wF37ft3AaNYSwq/CXTNK3sH1vK+NJaw/Rh42wXq4sDqdW5dQr1fB/xrrb4zWOL2WixBKwDR88oLYBhr5ci5YzuojRSdV/ZfsYY25n8m/147Z699f0ODev0K1vDGQuc+CvxF7e+vxhJ+DchiTTD/1ryyX8SabJ1fh6lFPo89WL8U8sAR4A3zzv0B8Hfnlf8c8Jdr/f9Pfa3cl6j9wyoUq0JtQnAMeKuUckHjjEKhWB5qKEZx2RFC/D9CiEhtmOb3sHrMlzLMoFAoloASdsVqcAPWMM0c8LNYK2+Ka1slhWLzooZiFAqFYpOheuwKhUKxybgY992KEY/H5datW9fi0QqFQrFhefbZZ+eklM0XKrcmwr5161aeeeaZtXi0QqFQbFiEEKcvXEoNxSgUCsWmQwm7QqFQbDKUsCsUCsUmY03G2BfCMAzGxsbQdX2tq7KqeDweurq6cDqda10VhUKxSVg3wj42NkYwGGTr1q3UNuXZ9Egp0TSNsbExent717o6CoVik7BuhmJ0XScWi10xog4ghCAWi11xbykKheLysm6EHbiiRP0cV2KbFQrF5WVdCbtCoVAols+6GWM/nz/9zrEVvd/7fmbRLR8viscff5zbb7+djo4OAD71qU/xZ3/2Z4yOjjI7O0s8Hl+xZykU64GhgcGXHRscHrrs5TbSPZfznJVG9dgvgccff5yJiYn69zfddBPf/e532bJlyyJXKRQbk4XEaaHjK11uI91zIQ4PDjIehR8NCArui79+OazbHvta8MUvfpFPfvKTlMtlDhw4wCOPPMK9997LM888gxCCd77znXR3d/PMM8/w1re+Fa/Xy49//GNe8YpXrHXVFQrFOkBKyVR+imPJY/zogKDsELgNSdYLvtLq1UMJe42hoSGeeOIJfvjDH+J0Orn//vt58MEHGR8f5/DhwwCkUikikQif+tSnePjhh9m/f/8a11qhUKwHEnqC48njHJ47zOnMaZKlJNckYMusSUvS2kNxNVHCXuN73/sezz77LNdeey0AxWKRO+64g5MnT/Le976XO++8k9tvv32Na6lQKNYLeSPP8eRxhhPDHEseI6EnAIh5YuyM7OTAse+uWd2UsNeQUnLPPffw0EMPveT4Rz7yEb797W/z6U9/mq9+9as89thja1RDhUKx1lRsMBaHYye+wZA2xFxxDsM0CLvD9IZ6cdpfdJCbrN0kppo8rXHbbbfx5JNPMjMzA0AikeD06dOYpsmb3/xmPvzhD/OTn/wEgGAwSDabXcvqKhSrRqNVHOcfX+ly6+WeJjDZBP/WL/jb6wX//OAb+e7p75IpZ2gPtNMf7afN3/YSUQf45//1a0w0wdM7BQXXhZ+/kqzJ1nj79++X5+exDw0NMTh4+WeLF+OJJ57goYcewjRNnE4nH//4x3nf+96HaZoAPPTQQ7z2ta/lr//6r/m93/u9+uTpZz/7Wf7kT/6EqakpWlpaeN3rXsdf/MVfLPm566HtCoXiRaSUzBRmOJY8xuG5w4znxkmX0nidXmKeGAFnYEFzoZSSQqWAVtTIG3mCriBdwS5+dtvP0h3qXna9hBDPSikvOLmnhH0dcCW3XaFYT6RLaY4lj3FUO8oL6RdI6kkcNgdRT5SwO4xNLDzIUaqU0HTNEn+Hl2ZfM3ua97CzaSc9wR4ctpUZ9V6qsKsxdoVCcUVTrBQZTY0ypA0xkhxBK2qY0iTqibI9sr2hKBumQVJPktST2G12Yp4Y17Rew0B0gO2R7bjt7gWvWw2UsCsUiisOwzQ4nT7NSHKEI9oRZguz6FWdiCtCT6inoShXZZV0KU2imKBKlag7yv62/VwVu4q+pj6CruAqt2RhlLArFIorAikl47nx+rj5ZH6SXDlHwBWg1deK1+FtOG6eLWfRdA29ohNxR+iP9rMnvoed0Z3EPOsvlXbJwi6EeAx4PTAjpdxdOxYFngC2AqeAX5BSJle+mgqFQnFpaEWtLuZns2dJlVK47W6inihdga6GolwwCmi6Zom/M0BnoLM+bt4Z6Gw43r4euJge++PAp4AvzDv2AeB7UsqPCiE+UPv+/StXPYVCobh4cuUcx1PHGdKGOJE6QUJPIBBEPVH6mvqwi4W9oOVqmYSeIFVK4bK7aPY2c1PHTeyM7qQ33IvTtjF2OluysEspfyCE2Hre4TcCt9b+/nngKZSwKxSKNaBcLXMyfZLhxHDdPFQxK0Q8kZeZh+ZTNaskS0k0XcOGjagnyqs6X8VgdJDtke34nL5VbsnyWe4Ye6uUchJASjkphGhpVFAIcR9wH0BPT88yH7vypFIpvvzlL3P//fevyP1+8IMf8Ju/+ZscOnSIr3zlK7zlLW9ZkfsqFIoXqZpVzmbPcix5jOfnnmemMEPBKBByh+gMdOJxeBa8zpQmmXIGrahhmAZN7iZe0fwKropfRV+kj4gnssotWVlWbfJUSvkZ4DNgrWNfreculVQqxSOPPPIyYa9Wq9jtFx/h09PTw+OPP87DDz+8UlVUKBRYk5nThemXmIcy5Qw+h4+YJ0ZPsKfhJGjeyKPpGoVKgZArxPbIdnbHd7OzaSetvtZ1Nwl6qSxX2KeFEO213no7MLMSlVoSx74DP/oEpE5DZAvc+Buw82cu+XYf+MAHGB0dZd++fTidTgKBAO3t7Rw8eJBvfetbvP71r6+nPD788MPkcjkeeOABRkdHec973sPs7Cw+n4/PfvazDAwMsHXrVgBstvU7waJQbCRSeorjqeMcmTtimYdKSZw2JzFvjHZ/e8PJTL2io+laXfxbfC3sie+hr6mPnmAPdttqZy9efpYr7H8L3AN8tPbnN5Zdo6Vw7DvwD78NNhd4miA7bX3Pw5cs7h/96Ec5fPgwBw8e5KmnnuLOO+/k8OHD9Pb2curUqYbX3XfffTz66KP09fXx9NNPc//99/P973//0tqlUCheQsEoWOahxBAjiRESegITk5gnRl+kr6EoG1WDRClBSk/hsDmIe+Nc13Yd/dF+toW34bK7Frxus3Axyx3/F9ZEaVwIMQZ8CEvQvyqEuBc4A9x1OSr5Mn70CUvUXbVJDZcPyrXjy+i1z+e6666jt7d30TK5XI4f/ehH3HXXi80ulVYxTV+h2IQYpsGp9ClGEjXzUHGWcrVMxB1hS2hLQ1GuyiopPUVCTyCRRD1RDrQfYFdsFzsiOwi4AqvckrXjYlbF/FKDU7etUF2WTuq01VOfj9MLqTMr9gi/31//u8PhqAeBAei6DoBpmkQiEQ4ePLhiz1UorkRMadbNQ8/PPs90fpqckSPoCtLma2u4MmW+eahULRFxR9gV28Xu+G76mvqIe6/M/Yc3pvM0ssUafnHN+8c2ihC59NU2i0Xxtra2MjMzg6ZpBAIBvvnNb3LHHXcQCoXo7e3la1/7GnfddRdSSg4dOsTevXsvuR4KxZWClBJN1ziWsFa0jGXHSJVSeBweYt4YXcGFzUNSSoqV4ovmIVeA7mB33Qna4e/YNJOgl8rGFPYbf8MaUy9j9dSNIphl6/glEovFuOmmm9i9ezder5fW1tb6OafTyQc/+EEOHDhAb28vAwMD9XNf+tKXePe7382DDz6IYRjcfffd7N27l//4j//gTW96E8lkkr/7u7/jQx/6EEeOHFlOqxWKTUG2nOV48jhHtaOMpkZJlBLYsRP1Run39zdOUKyWSBQTpMopPHYPzb5mbu68mf5oP1tCW1YsQXEzsHFje+urYs5YPfVlropZS1Rsr2KzU6qWGE2N1s1Dmq5RNas0eZpo8jQ1dHRWzApJPUlCT2ATNmLeGAPRAQajg2yLbMPr8K5yS9aWzR/bu/NnNqyQKxRXAhWzwpnsmfpQy2xhlmKlSNgdpjvQjduxcIKiKU0rQVFPUDErNHmaeGXrK9kV20VfUx9hd3iVW7Lx2LjCrlAo1h1SSqbyU3Un6ERugmw5i9/pp9nXjM/hazhunjNyaLpG0bDEf0dkRz10q9nbfMWPm18MStgVCsWySegJjiePc3juMKczp60QLZuLmDdGZ6CzoSgXK0W0olYX/3Z/uzUJ2rSTrmDXuk5QXM8oYVcoFJdEwSjUExSPJY+R0BMASzIPndtGzmlzEvfGub7jevqbLPNQo7AuxdJRwq5QKJaMUTU4mT7JSHKEo3NHmSvOYZgGYXf4ggmKqVIKTdcAiHqi3NBxAwPRAXY27dyQCYrrGSXsCoViUUxpMpYd41jyGIdmDzFTmCFv5Am6grQH2huuTJFS1hMUy6blHN0T31M3D0U90VVuyZXDuhX2Rw4+sqL3u3/fysTxAjz++OPcfvvtdHR0APDCCy9w9913k0gkuOaaa/irv/orXK7NnUWh2NxIKZktztadoOO5cdKlNF6nl5gnRnewu+EkaKFSQCtq5IwcIVeIreGt9XHzNn+bmgRdBdatsK9nHn/8cXbv3l0X9ve///28733v4+677+Zd73oXn/vc53j3u9+9xrVUKC6edCldNw+dTJ8kqSdx2BxEPVHa/G2NzUOVUn3c3Ovw0uxr5tbuW9kZ3UlPsEeZh1YZ9WnP44tf/CKf/OQnKZfLHDhwgEceeYR7772XZ555BiEE73znO+nu7uaZZ57hrW99K16vlx//+Md8//vf58tf/jIA99xzDw888IASdsWGoVgpcjJ1kqHEEMOJYbSihilNop4o2yPbG4qyYRok9SRJPYndZifmiXFN6zUMRAfYFt7WcJMLxeVHCXuNoaEhnnjiCX74wx/idDq5//77efDBBxkfH6/nsKdSKSKRCJ/61Kd4+OGH2b9/P3Nzc0QiERwO66Ps6upifHx8LZuiUFyQilnhdOY0I4kRDmuHmS3Mold1Iq4IPaEe3PbG5qFUKUWimKBKlag7yv62/VwVu4odTTsIuUKr3BLFQihhr/G9732PZ599lmuvvRaAYrHIHXfcwcmTJ3nve9/LnXfeye233/6y6xaKZFBjiIr1iJSSifxE3Qk6mZ8kV87hd/pp9bXidXgbjptnjSxa0UpQDLvC9Ef766FbMU9M/Z9fZyhhryGl5J577uGhhx56yfGPfOQjfPvb3+bTn/40X/3qV3nsscdecj4ej5NKpahUKjgcDsbGxupj7wrFekAravVt5M5mz5IqpXDb3cQ8MboCCycogrVOPaEnyJazBJwBOgOddSdoZ6BTmYfWMUrYa9x222288Y1v5H3vex8tLS0kEgmy2SxNTU28+c1vZvv27bzjHe8AXhrxK4Tg1a9+NU8++SR33303n//853njG9+4hi1RKCBXznEidYKj2lFOpE6gFTVswkbUE6WvqQ+7WNg8VK6WSegJyzlqd9HsbebGjhvpj/azNby1YViXYn2xboV9JZcnLoVdu3bx4IMPcvvtt2OaJk6nk49//OO86U1vqm+yca43/453vIN3vetd9cnTj33sY9x99938/u//Pq94xSu49957V7XuivXF0MDLkzoHh4eWVXYp5crVMifTJ3nqvp9nJgISQTQruXpGcvrhdy1oHrrl7v9J1Q7jMTjdIkhFwHnvL/GqzlcxGB1ke2S7Mg8tk9lsiajfhd22esNVGze2dxNxJbd9s7GQAJ/jfCFeatnFyu08ag2vnAvdyj76GEFd0j0DW2YlwaJVzgR+8JX31q8zpUn/ez7N2WbBeAxMmyCgS7bMQM+s5Lr/XPgXkWJpZHWDkaksz4+nmUzr/NJ1PfTG/Re+8AJs/theheIKRQKJoNXD/qdDf854bpxMOYPP4eP1z5lEs3B+39CGNY+UN/JoumaZiHbZcBuSbdOwZWbh6xRLRzeqnJjJcXQyw5HxNLPZEkZV8qq+OG2h1V36qYRdodggZL1wpllwugVyHoHNlKRSo8S8Mdr97dZGFAvs7njuuuHkMD6HjxZfC3vie7Af/S5tSbCt/kv7pqFqSk5peYYnsxw8m2Q6o1MoVwl7nXRHfXicdrY3B/C6Fp7TuFwoYVco1jEFo8CJdqt3rgUFIGlJweAZk04Nfvjr2xe8TnfCWNy6LhEUCCS3dd/GQMwyD7nsLoYSq9uWzYKUksm0zvBUhoNnUoylimSKBn6Xg+aAB7/bvubLP1dE2IUQ7wN+Best8Xngl6WU+krcW6G40qjY4HjyOCOJEY5oRyhut9GUl1z9gkn3LPjKVjnzvOuqssrpOJxtEUw1gRSCSF6yt3bdK/t+btXbsplI5MsMT2V4fizNydkcyYKBwy6IB9x0RrzYGoh5VjcwTYltFSdPly3sQohO4NeBXVLKohDiq8DdwOPLvbdCsdEYHB5a8kqX+WVNYDYCp5sFyQfuY/r5x8gZOYKuINH/+svc9rbPMX/V+LnJUCkl2XIWTbfMQ7Mfu4vgo0/SPw49MyaRwtKef6G6XqkUyhVGprIcmcgwNJlBy5WRQMzvoq81gMO28Fp+o2qi5cokCyVmsjqD7SG2rsDk6VJZqaEYB+AVQhiAD5hYofsqFBuOpQqjlJLm//yXuhN0LDtGqpTCkxsn5o3RFXzRPDR/RYuU0tp5KHuWXDlHwBWgO9hdd4J2fOEPlzwUoET85ZQrJifncgxNZDg0nmYmU6JcNWnyOemN+3E5FhbzqilJFso18ZfE/G5u2tHM7s4QzcGFIxouF8sWdinluBDiYeAMUAT+UUr5j+eXE0LcB9wH0NPTs9zHrjipVIovf/nL3H//yqyfL5VKvP3tb+fZZ58lFovxxBNPsHXr1hW5t2Jjky1n6wmKo6lREqUEduxEvVH6/f2NExSrJRLFBKlyCo/dQ7OvmZs7b6Y/2s+W0JbLm6D4wAIbSD+QvvzlVumephSc/fVxhiazPHc2xWS6SK5U4e0nfoNB21niImOVAz5503/Ur5NSki4azOXKlKtVmnwuru4Kc3VXhIH2IPGHW5ZepxVk2evYhRBNwF8DvwikgK8BT0opv9jomvW4jv3UqVO8/vWvrwd+naNarWK3X/yM9iOPPMKhQ4d49NFH+cpXvsLXv/51nnjiiQXLrnXbFZefUrXEaGqU4cQwQ9oQmq5RNas0eZqIeqINRbliVkjqSRJ6wlr14o0xEB1gMDrItsi2hptcrCgLCWb9XPrylbvM95QSZokwZPYwLLvJSw9DO9+Nx2knHnDz35+9EfsCLz5VCR+99sfM5UrkShVCHicdES/7ui0x74zUMncupk5LZDXXsf808IKUcrb24L8BbgQaCvtKkP3BD0h87jGMsTGcXV1E730nwVtuueT7feADH2B0dJR9+/bhdDoJBAK0t7dz8OBBvvWtb71E9B9++GFyuRwPPPAAo6OjvOc972F2dhafz8dnP/tZBgYG+MY3vsEDDzwAwFve8hZ+7dd+DSnlms+WK1aPilnhTPYMxxJWTstMYYZipUjYHaY70I3b0ThBMV1Kk9ATVMwKTZ4mrmm9hqtiV9HX1EfYvYhgKC5IWvoYkd0MmT0kZAibMNkmJhmwnUG2vb8+yXm+qGekj2HZzbDZw3RGpzXk4bbBFmv8PObHYV8/2TkrIexngOuFED6soZjbgGcWv2R5ZH/wA6b/6MMIlwtbOExldpbpP/owfPAPLlncP/rRj3L48GEOHjzIU089xZ133snhw4fp7e3l1KlTDa+77777ePTRR+nr6+Ppp5/m/vvv5/vf/z7j4+N0d3cD4HA4CIfDaJpGPB6/pPopNgZSSqbyU3Un6ERugmw5i9/pp9nXjM/ha5igmDNyaLpG0bDEf0dkRz10q9nbrDoFy0A3qhyfznF0Ms1E5bUAdIg5brP/hD4xhkcYAC9buaJLJ8dlF8NmD+PS+tntFHPcd8t2+loDeJyruz59qazEGPvTQogngZ8AFeA/gc8s976LkfjcY5aoe63XUOH1YtaOL6fXPp/rrruO3t7eRcvkcjl+9KMfcdddd9WPlUolQMX5Xmkk9WQ9QfF05jTJUhKXzUXcG6cz0Nnw375YKaIVtbr4t/vb69vIdQW7VILiMqhIG6dkG0PPjfPc2TTTGZ2iYfKr9sMMiLOERGHB60xTkioafLN6PSdlO6a00SSy3GQ/TL84S1gUoGt9vzWtyGyLlPJDwIdW4l5LwRgbwxZ+6QcrPB6MsbEVe4bf/+LSJIfDUQ8CA9B1a4m+aZpEIhEOHjz4suu7uro4e/YsXV1dVCoV0uk00ajavHczUTAKHE8dZ0gb4ljyGAndcvzEPDF2RnZity3cmzOqRn0bOafNSdwb50D7gfrOQwuFdSmWhpQwTpxhs4djshNdujh6cIKA20FryIPPZWf/CyOc/+tSShgjzsnZHEWjSsTrZFzG2CdGGbSfoZkUG6lftiGdp86uLiqzswjvixNHUtdxdnVd8j3nR/GeT2trKzMzM2iaRiAQ4Jvf/CZ33HEHoVCI3t5evva1r3HXXXchpeTQoUPs3buXN7zhDXz+85/nhhtu4Mknn+Q1r3mN6rFvAoyqwcn0SUaSIxydO8pccQ7DNAi7w/SGehuKctWskiql0HQNgKgnyg0dNzAYG6Qv0re+ExQfSC9txclKl7uIstpvzzD8sVczLLvJSD9OUWGbGOfpaz/BLq/zJT97n7zpP/j1H16LDdBkkGGzhyHZw+Hd76cr7GVvd4TB9iDdb/kStj+KLK2eC3Ex7VxhNqSwR+99J9N/9GFMrJ661HVkuUz03nde8j1jsRg33XQTu3fvxuv10traWj/ndDr54Ac/yIEDB+jt7WVgYKB+7ktf+hLvfve7efDBBzEMg7vvvpu9e/dy77338ra3vY0dO3YQjUb5yle+spwmK9YQU5qMZcfq4+bT+WnyRp6gK0h7oL3hyhQpJZlyBq2oUTbLRNwR9sT3sDu+m76mPqKeDfQGdzFitpLlFimbK9XMQ+NphqeyaDs/iUAQ9buI+l2M2AQLyDLlisnv7v4ByYKByy5oDnq4ujPMuzpCbG8OvHSd+nJFeBVEfCE2bGzvSq+KWUvUcsf1h5SS2eJsXczHs+OkS2m8Di8xb4yAM9BwErRQKaAVtbr4dwQ66uPmbf429ea2DEqVKqMzeYYmMzw/nmY2q2NUJU0+S8wbmYcqpkkyb6Dly4AkHnDT3xZkd2eY/tYgfvfG6ONu+tje4C23bFghV6xf0qV03Tx0Mn2SpJ7EYXMQ9URp87d1kHfaAAAgAElEQVQ1Ng9VSvVxc6/DS7OvmZ/q+in6Y/30BHsur3lok1M1JWcSBYYnMxw8m2Iqo5OvrR/vjPgaJidKaU2CzuVKNfF3sq87zN6uCAPtIaJ+1yq3ZPVQ/9sUVzzFSpGTqZMMJYYYTgyjFTVMaRL1RNke2d5QlA3TIKknSepJ7DY7MU+Ma1qvYSA6wPbIdtz21bWRbyaklExnSgxNZTh0NsXZRIFU0cDrstMccLMl2njZaL5UZS5XIl+2xH9Hc4C93ZaYd4Q9V8Qb07oS9ivRwLMWQ2EKyzx0OnOakcQIh7XDzBZm0as6EVeEnlBPQ1E2pUmqlCJRTFClStQdZX/b/rp5KOgKrnJLNhepQpnh2s5DozM5EvkydpuVoNi+SIKiblhini4a+Fx2WkMe9nW30d8WpDfuX9Vt6dYD60bYPR4PmqYRi8WuGHGXUqJpGh7P6u6ucqUipWQiP1EP3ZrMT5ItZwk4A7T4WhY1D2WNLFrRSlAMu8L0R/vroVsxz5Xzf/ZyUCxXOTad5chEmqOTGeayJSQQ9bnoawk0dHQaVRMtXyZZE//moJsD22Lsag+xo2X9modWg3Uj7F1dXYyNjTE7O7vWVVlVPB4PXctYpqm4MHPFOY4lj3Fk7ghns2dJlVK47W5inhhdga6GolwwCiT0RF38OwOd9UnQzmCnMg8tA6Nq8sJcnqGJDM+NpZjJlihVqoS9LrbG/bgdC4ty1ZSkCmXm8mVMUxILuLh+W4w9XWH624KEPMoDAOtI2J1O5wWdngrFUsmVcxxPzUtQ1BPWUjhPlL6mPuxiYeEoV8sk9ASpUgqX3UWzt5kbO26kP9rP1vBWnDYlHJeKaUrGU0WGJi0xn0gVyeoVAm4HbTXzUKM3poxeYS5XQjesBMWrOkK1SdAgzQG3emM6j3Uj7ArFcilXy4ymRhlJjjCkDTFXnKNiVoh4Ihc0DyVLSTRdw4aNqCfKTZ03sSu6i+2R7evbPLQBmM2WGJ7K8NzZFKe1AsmigcdhIx5w09208PAXQL5UqScoBtwOeqI+yzzUFqKrybuqOxJtNJSwKzY0VbPK2ezZ+nrzmcIMhUqBkCtEZ6ATj2Ph+QtTmnXzkGEaNLmb2Ne8zzIPRfqIeBaytiiWSlY3GKlNgh6bzqLly9gExPxuBlqDDSczS5VqbeehMh6nnZagm1v7mxlsD7Ot2Y9zHSUormeUsCs2HFJKpgvT9dCt8dw4mXIGn8NHzBOjx9nTeCmckUfTtbr4b49sZ3d8NzubdtLqa1Wv9MtAN6qcmMlxdDLDkfE0s9kSVVMS8bnY0RxoKMqVqkmiUCaRLyOEIB5w8er+Fq7qDLOzNYDPpWTqYlGfmGLDkNJTHE8d58jcEV5Iv0CylMRpcxLzxmj3tzeczNQrOpqu1cW/xddSnwTtDnY3DOtSXJiqKTml5RmezHLwbJLpjE6hXCXsddId9TVcmWJKSbpQMw+ZkqjfxSu3NLGn08ppifg2r3loNVDCrljXFIwCo6lRhhJDjCRGSOgJJNKaBI30LZqgmCglSOkpHDYHcW+c69quoz/az7bwNlx2JRyXipSSybTO8FSGg2dSjKWKZIoGPpeDeMBNwO1onDlfqjCXK1MoVwh7nfS1Bus7D7WFrgzz0GqghF2x7jBMg1PpU4wkRjiiHWG2OEu5aoVobQltaSjKVVklpadeIv4H2g+wK7aLHZEdBFyBVW7J5iKZLzM0leH5sTQnZ3MkCgZOmyAedNO5iHmoaFSZy5bI6AZ+l4O2sMcS87YgW2JXnnloNVDCrlgXmNJkPDduTYLOWgmKOSNH0BWkzdfWcGWKlJJsOYumW+ahiDvCrtiueoJi3Kt2rFoOhXItQXEiw/BkhrlcGSkhFnCxszWAw7aIeShXJlko4bDbaA64uXF7jMEOyzzUaJ26YmVQwq5YM6SUaLpWd4KOZcdIlVJ4HB5i3hhdwYXNQ1JKa+chXSNXzhFwBegOdtedoB3+DvVKvwzKFZOTczmOTlgJijOZEuWqScTrZGvct6h5KFkoo+Us52jM7+KmHXF2d0bobwsS2CAJipsB9UkrVp1sOVtPUBxNjZIoJbBjJ+qN0u/vb5ygWC2RKCZIlVN47B6afc3c3Hkz/dF+toS2qATFZWCakrPJAkOTWZ47m2IyXSRXqhD0OOmIeBquTJFSki4azOXKlCpVon4XV3dFuLpmHooHVBDaWqB+EhSrQqlaYjQ1ynBimCFtCE3XqJpVmjxN1nZwDRydFbNCUk+S0BPYhI2YN8YtzbewK7aLbZFtDTe5UFwYKSWz2RJDU5aYn0kUSNfWj8cDbnoWSVAslK3QraxeIeR10hv31ydBOyNe9ca0xihhV1w2KmaFM9kz9aGW2cIsxUqRsDtMd6Abt6NxgmK6lCahJ6iYFZo8TVzTek09QTHsXt8bCa930sVz5qEUJ6ZzaLUQrZjfRXtbqKGjs2RUmcuVSRXLeJ12WkIeXjPQwmB7iN64v2FYl2L1WRFhF0JEgL8AdgMSeKeU8scrcW/FxkJKyVR+qu4EnchNkC1n8Tv9NPuaF01QzBk5NF2jaFjivyOygz3N1nrzZm+z6gUuA92ocnw6x9HJNIfH08zlylRr68cXS1Cs1BIUE/kyNpugOeDilVvOmYeCV3SC4npmpXrsnwD+j5TyLUIIF6DCNa4wknqy7gQ9nTlthWjZXES9UToDnQ1FuVgpohWtSVCf00e7v71uHuoKdqkExWVQqZqc0qxt5J47m2Y6o1M0rEnQnsXMQ+aLOw+dE//reqPs6Qwz0BYi7FNBaOudZQu7ECIE3AK8A0BKWQbKy72vYv1TMAocTx1nSBviWPIYCT0BQMwTu6B56Nw2ck6bk7g3zvUd19PfZJmHGoV1KS6MlFaCouUEtRIUM7qB3+2gJeTBv0iCYraWoFg0qkR8LgbbQ1zdFWawPURLUCUobiRWose+DZgF/lIIsRd4FvgNKWV+fiEhxH3AfQA9PT0r8FjFWmBUDU6mTzKSHOHo3FHminMYpkHYHb5ggmKqlELTNQCinig3dNzAYGyQvkifSlBcJlquxHBtEvSUlidZMHDZbcQDLrqaGk9mFsqWEzRbE//OJm/NPBSiJ+pTCYobFLHcrdmEEPuBfwNuklI+LYT4BJCRUv5Bo2v2798vn3nmmWU9V7F6mNJkLDtWHzefzk+TN/IEXUFi3ljDlSlSynqCYtl80Tl6zjwU9URXuSWbi1ypZh4aTzM8lUXLl6zMeb+LqN/V0NFZrpho+VJd/JuDbq7uDDPYEWJ7cwCXQw1/rVeEEM9KKfdfqNxK9NjHgDEp5dO1758EPrAC91WsIVJKZouzdTEfz46TLqXxOr3EPDG6g92Nl8JVCta4uZEj5AqxNby1Pm7e5m9Tr/TLoFwxOTGTY2jSMg/NZnWMqqTJ52JbvLEoV01JIl9Gy5cRWM7RW/riXNUZpr81iF+ZhzYVy/7XlFJOCSHOCiH6pZQjwG3A0eVXTbEWpEvpunnoZPokST2Jw+Yg6onS5m9rbB6qlOrj5l6Hl2ZfM7d238rOpp30hHqUeWgZmKbkdKLAcG3nocm0Tr5UIeRx0hnx4XUtPJch5YuToJb4O3lFd7hmHgoR9asgtM3KSv20vRf4Um1FzEngl1fovopVoFgpcjJ1kqHEEMOJYbSihilNop4o2yPbG4qyYRok9SRJPYndZifmiXFN6zUMRAfYFt7WcJMLxYWRUjKdKTE0leHQOfNQ0cDrstMccLNlEfNQvmSZh/JlS/x3NAfY222JeUdYJSheCayIsEspDwIXHPdRrB8qZoXTmdOMJEY4rB1mtjCLXtWJuCL0hHpw2xubh1KlFIligipVou4o+9v2181DQVdwlVuyuUgXDCtBcTzN6EyORL6MwyaIB9x0LJKgqBuWmKeLBj6XndaQh73drQy0WeYhlaB4ZaHej68gpJRM5CfqTtDJ/GQ9RKvV14rXsfDqCSklWSOLVtTQKzoRd4T+aH89dCvmiale4DIolqscm85yZCLN0XqC4oXNQ0bNPJSsOUfjATfX9ca4qpagqMxDVy5K2K8AtKLGseQxjmhHOJM5Q6qUwm13E/PE6AosnKAI1jr1hJ4gW84ScAboDHTWnaCdgU5lHloGRtXkhbk8QxPWuPlMtoReWz++NbZ4gmKqUGYuX8Y0JbGAi+u3xdjTFaa/LUjIozwACiXsm5ZcOceJ1AmOakc5kTpBQk9YS+E8Ufqa+rCLhYWjXC2T0BOWc9TuotnbzI0dN9If7WdreGvDsC7FPB5YIMvmgTSmaZmHhiYzHKwlKA48/yf8lDjLoO0McdJIAZ+86T9ecqmUkp//1zsZkT2ckJ3YpZNuUWTXPZ+kvy1Ic+A881CD519MXRUbm2WvY78U1Dr2y0O5WrbMQ4kRjmqWeahiVoh4IkTd0UXNQ8lSEk3XsGEj6onSH+1nMDrI9sh2ZR66GBYQylkZYtjs4blXP85prUCyaOBx2Pit4V+kR8xiEy/9GTSxxD1fspyguw7/CXnpxSUMdogJdonTdIo567rzRXghoa6fW0ZZxbpgNdexK9aQqlnlbPZsfb35TGGGQqVAyBWiM9DZcGWKKc26ecgwDZrcTexr3meZhyJ9RDyRVW7J5iIrvYzIbobMHuZkGJswGZpIE/O7GWgNYrcJth6baXjdkYk0HqedlqCbVpFk0PYcvWIKp6iuQWsUGw0l7BsQKSXThel66NZ4bpxMOYPP4SPmidHj7Gm8FM7Io+laXfy3R7azO76bnU07afW1qknQZaAbVU6YWxiWPYzJZqQUtAmNW+0H2SnG+Ezr7y14XUk6OSE7XnLdawZauKrDSlD0PquCUhUXhxL2DURKT3E8dZwjc0d4If0CyVISp81JzBuj3d/ecDJTr+houlYX/xZfS90J2h3sbhjWpbgwVVNySsvXQreS+Kr7CYscB8QQA/YzRER+wetMKRk12xmWPZyU7VSlnbDIcb3tKAPiLJEDj61ySxSbCSXs65yCUWA0NcpQYoiRxAgJPYGJuaQExUQpQUpP4bA5iHvjXNd2Hf1RK0HRZVeuw0tFSslkWmd4yorDPZsskCka+FwOfsfxT3SQ4PwXH7N2Xa5khW4VyhVE9Ua8osQecYoB+xnaFrhOobgU1OTpOsQwDU6lTzGSGOGIdoTZ4izlapmwO0zME2soylVZJaWnSOgJJJKoJ8qOyA52xXaxI7KDgCuwyi3ZXCTzZcs8NJbm5GyOZMHAYbfWj4e9zrp56Nd/eC3z3500GeCPd/29FZ/rctAadrOvu4mBtiBbPtWF/bzJ0wUnLi/XShe1KmZDsdTJUyXs6wRTmoznxq1J0NnnmS5MkyvnCLqCRD3RhitTpJRky1k0XaNULRFxR+gOdtcTFOPe+Cq3ZHNRKNcSFCcyDE1m0HJlpLRCtJr8Thy2RcxDuTLJQgmn3UZz0MPujhCDNfNQo3XqCsViqFUxGwApJZqu1Z2gY9kxUqUUHoeHmLexeUhKae08pGt152h3sLvuBO3wd6hJ0GVgVE1GZ3McnbCs/TOZEuWqSZPP2rR5sQTFZKGMlishgZjfzU07mtndGWJna5CgMg8pVgkl7GtAtpytJyiOpkZJlBLYsRP1Run39zdOUKyWSBQTpMopPHYPzb5mXtX5KgaiA2wJbVEJisvANCVnkwWGJq3NKibTRXKlCkGPk46IB59r4c9WSkm6aDCXK1OqVIn6XVzdFaklKAaJBxbO3FEoLidKCVaJUrXEaGqU4cQwQ9oQmq5RNas0eZqs7eAaODorZoWkniShJ7AJGzFvjJ9q+SkGo4Nsi2xruMmF4sJIKZnNlhiaynJoLMVprUC6UMbjtBMPuOlZJEGxULZCt7J6hZDX6snv7Y4w0BZcdMcihWI1UMJ+GamYFc5kz9SHWmYLsxQrRcLuMN2BbtyOxgmK6VKahJ6gYlZo8jRxTes19QTFsHsRx6DigqSLBiNTWZ4fT3FiOodWC9GK+V20t4UabgdXMqrM5cqkimW8TjstIQ+vGWhhsN1KUGwU1qVQrDZK2FcYKSWT+UmOJ4/z/NzzTOQmyJaz+J1+mn3N+ByNe4E5I4emaxQNS/x3RHbUQ7eavc2qF7gMdKPK8ekcRyfTHB5PM5ezQrSaLpCgWKklKCbyZWw2QXPAxSu3tHBVp2UeUgmKivWIEvYVIqEnOJ48zuG5w5zOnLZCtGwuYt4YnYHOhqJcrBTRilpd/Nv97eyJ76GvqY/uYLdKUFwGlarJKS3P0KS13nw6o1M0TCJeJ1uiPtwNRNk0X9x5qGpa8bnX9UbZ0xlmoC1E2KcmQRXrGyXsy6BgFDieOs6QNsSx5DESegJgSeahc9vIOW1O4t4413dcT3+TZR5qFNaluDBSWgmKw5NZnhtLMZ4sktENAm4HrSEPPpe9cea8boVuFY0qEa+TwfZQfdy8JehWb0yKDYMS9ovEqBpWgmJyhKNzVoKiYRqE3WF6Q72LJiimSik0XQMg6olyQ8cNDEQH6Gvqw+/0r2YzNh1arsTwlLWi5ZSWJ1ko47LbiQdci05mFsqWEzSrG/jdDrqafOztjjDYHqS7yddwvF2hWM8oYV8CpjQZy47VExSn89PkjTxBV5D2QHvDlSlSynqCYtksE3FH2BPfUzcPRT3RVW7J5iJXqpmHxtMMT2XR8iUEgljARX9rqOF2cOWKiZYvkSwYuOyC5qCHm3fEGewIsb050HCdukKxUVDC3gApJbPF2bqYj2fHSZfSeB1eYt4Y3cHuxkvhKgW0okbOyBFyhdga3loP3Wrzt6lX+mVQrpicmMkxNGmZh2azOkbVpMnnZlu8sShXTJNk3kDLlwFJPODm5r44uzvD9LcG8bvVj4Ji86D+N59HupSum4dOpk+S1JM4bA6iniht/rbG5qFKqT5u7nV4afY1c2v3reyM7qQn2KPMQ8vANCWnEwWGazsPTWV0cnqFsNdJZ8SH17XwXIaUL06CGlVJk8/Jvu4we7siDLSHiPpVEJpic7JiaiOEsAPPAONSytev1H1Xg2KlyMnUSYYSQwwnhtGKGqY0iXqibI9sbyjKFbNCQk+Q1JPYbXZinhivaHkFg7FBtoW3NdzkQnFhpJRMZ0oMTWU4dDbFmUSBdNHA67LMQ1sWMQ/lS5Z5KF+uEPI42dEcsCZB20N0hD3qjUmx6VnJbuRvAENAaAXvedmomBVOZ04zkhjhsHaY2cIselUn4orQE+rBbW9sHkqVUiSKCapUibqj7G/bz1Wxq9jRtIOQa0M0f92SLhhWguJ4mtGZHIl8GYdNEAu46Yh46wmK56MblpiniwY+l53WkIe93a0MtFnmoUbj7QrFZmRFhF0I0QXcCXwE+G8rcc/LgZSSifxE3Qk6mZ+sh2i1+lrxOhZePSGlJGtk0YpWgmLYFaY/2l8P3Yp5YqoXuAyK5SrHprMcmUhzdDLDXK6MlNb68cXMQ0bNPJSsOUfjATfX9ca4qpagqMxDiiuVleqx/xnwO0CwUQEhxH3AfQA9PT0r9NiloRU1jiWPcUQ7wpnMGcs8ZHcR98QbJiiCtU49oSfIlrMEnAE6A511Me8MdCrz0DIwqiYvzOUZmsjw3FiKmWyJUqVKxOtia8zXMNa2akpShTJz+TKmlMT8Lq7fFmNPV5j+tiAhlaCoUCxf2IUQrwdmpJTPCiFubVROSvkZ4DNg5bEv97kXIlfOcSJ1gqPaUU6kTpDQEwgEUU+UvqY+7GJh4ShXyyT0RF38m73N3NhxI/3RfraGtzYM61JcGCklY8mi5QQdSzGRKpLVKwTcDtpCnoYrU6SUZGrmId2o0uRzsbsjVE9QbA4o85BCMZ+V6LHfBLxBCPE6wAOEhBBflFL+lxW490VRrpYt81BihKOaZR6qmBUinsgFzUPJUhJN17BhI+qJ8qrOVzEYHWR7ZHvDTS4US2M2W6ptI2clKCaLBh6HjXjATXfTwpOgAPmSJea5kiX+PdGaeagtRFeTV5mHFIoGLFvYpZS/C/wuQK3H/turKepVs8rZ7Nn6evOZwgyFSoGQK0RnoLPhyhRTmnXzkGEaNLmb2Ne8zzIPRfqIeCKr1YRNSVY/l6CY5th0Fi1fxiYEcb+LgdZgw8nMUqVa23nIis9tCbq5tb+ZwfYw25r9OFWCokJxQTbs4uqZwgzDiWEOzx1mPDdOppzB5/AR88TocfY0Xgpn5NF0rS7+2yPb2R3fzc6mnbT6WtUr/TLQjSonZnIcncxwZDzNbLZEpZaguKM50FCUK1WTRMFKUBQ18X91/7kExUDDTS4UCsXCrOhPjJTyKeCplbxnI4YTw/zt6N8ipSTmjdHub284malXdDRdq4t/i6+F3fHd9Df10x3sbhjWpbgwVVNySsszPJnl4Nkk0xmdQrlK2OukO+pruDLFlJJ0oWYeqiUovnJLE3s6rZyWiE+ZhxSKS2XDdoX2t+7ndOY02XJ2wfNG1SBRSpDSUzhsDuLeONe1XUd/1EpQdNmVcFwqUkom03pt3DzN2WSBTNHA53IQD7gJuB2NM+dLVuhWoWw5R/tag+zrtiZB20LKPKRQrAQbVth9Tt/LHKFVWSWlp0joCSSSqCfKgfYD7IrtYkdkBwFXYI1quzlI5suWeWgszcnZHImCgdMmiAfddC5iHioaVeayJTK6gd/loC3sZl93GwNtQbbElHlIoVhpNqywn0NKSbacRdMt81DEHWFXbFc9QTHuja91FS8bQwODLzs2ODy0ouW2HHreSlCcyDA0mUHLlRn8wp/yqswkPdlpnGYVE/jO//zGS64zqibb//A3OB1qJ+cN45OS3kKC13z+0+xoCbxknfpqtGOhcpezrEKxlggpL/uS8pexf/9++cwzzyzrHnPFOf78uT9nMj9pxefWdh7aGd1Jh79j07/SLyQy55gvNpdSriJsnA228EKonUl/nOQvvINy1dp56K4/vIdApfSye5nA//nE/yZZKKPlSsSe/AJSCKJ6lm3pCbZkp/DVrltu/Vai3OUsq1BcLoQQz0op91+o3IbtsR/VjuJ1eHld7+voj/azJbRFJSguAxPBlC/KC+F2zgZbMGwO/EaRwcQpTkU89ZUp54u6iWC6dt3wVIao38XVXREi2gv0ZqaIlHNr0RyF4opmwyrhK1tfybVt1zbc5EJxYaSUzGZLDE1l+Zcdt1BwuHFVDbZkpujNTNJSSCKAmfOWG0og6Q7yQrid06F2Cg437qrB3df2MNAepDPiZXjuxJq0SaFQbGBhV1vJXTo5p4dToXZ+9MMXODGdQ8uXeUUxzf7MJJ25WezSXPC6klHlcKyXF0LtpN0B7NKkIzfH/swkXblZdu9qXeWWKBSKhdiwwq64OEo2B2eCrbwQ7mDG14QJaCcT9QTFm8cPspALoGhzMJ3RSdQSFLPNfTQXkhyYOsqWzBRus7LaTVEoFBdgw06eKi68SqNSNTml5fnuL/0q44FmqsJGuJRnS2aCU//9f+A+zzz0M+99IzagKmyM++OcDLdz8J7fJuZ3sb0lwJ7OMANtISauuXrR5y61fmtd7nKWVSguB0udPFXCvsmQUjKeKjI8meW5sRTjyaK1ftxtmYf8LnvjzPlagmLRqBLxueiJ+ri6K8xge4iWoEpQVCjWmk2/KkbxUrRcieGpLIfGUrwwlydZKOOy24kHXHQ1LbyBCEChbDlBs7pBwO2gq8nH3m6rZ94T9akERYViA6KEfQOTK1Us89B4muGpLFq+hEAQC7jobw01dHSWKyZavkSyYOCyC1qCHm7eEWdXZ4ht8QAuh0pQVCg2MkrYNxjlismJmRxDk9a+oLNZHaMqafK5FhXlqilJ5Mto+TIgiQfc3NwXZ3dnmP7WYMNNLhQKxcZD/TRvAExTcjpRYHgyw8GzKaYyOvlShZDHSWfEh9e1cIKilJJUsZagWJU0+Zzs6w6ztyvCQHuIqF8FoSkUmxEl7OsUKSXTmRJDUxkOnU1xJlEgXTTwuuw0B9xsiS6885CUknypylyuRL5sif+O5gB7uy0x7wirBEWFYrOjhH2dkS4YVoLieJrRmVx9/Xg84KZjkQRF3bDEPF008LnstIY87O1uZaAtRG9cJSgqFFcSStjXAcVylWPTWY5MpDk6mWEuW0ICUZ9lHnI02HnIqJpo+TLJeeJ/XW+MqzpC7GgJNNzkQqFQbG6UsK8RRtXkhbk8QxMZnhtLMZMtUapUCXtdbI37XxJrO5+qKUkVyszly5imJBZwcf22GHu6wvS3BQl5Ft6wW6FQXDkoYV9FpJSMJYsMTVpiPpEqktUrBNwO2kIefIuYhzI185BuVGnyubiqI1SbBA3SHFDmIYVC8SJK2FeB2Wypto2cNQmaKBh4HDbiATfdTQtPggLkS5aY50qW+HdHfezrjjDYFqKryavMQwqFYkGUsF8msrrByFSW58fTHJvOouXL2ATE/G4GWoMNJzNLlSparkyyUMbjtNMSdHNrfzOD7WG2NftxNhhvVygUinMsW9iFEN3AF4A2rI10PiOl/MRy77sRKVWqHJ/OcXQyw5HxNLPZEhXTMg/taA40FOVK1SRRKJPIlxFCEA+4eHV/C1d1htnZGqhvcqFQKBRLYSUUowL8lpTyJ0KIIPCsEOI7UsqjK3DvdU/VlP+3vTuLjeuu4jj+PbE9dmzP2IntxKkTJylJiUNaKFhlE2srCBUiLxVqpRYQhQgQIMQLS18qeAMBEqISRAKxiKXsRKiItYhFpOCq6UKTQgihSeOmjuuM95mxfXi4N9S4nvHYc2cm9/r3kSzN8p//PSczPrlz/4s5MzrFyeEJjp8d48L4LNP5eTo2NrFjc2vRmSkL7mSnw8VDC87mthQv27mJa/s62debZpMWD4nIGlVc2N19GBgOb0+Y2QmgD0hsYXd3hrOz4XXzLGfHphmfKdCaCnZQbG9uLDoIOpkLNt2azs/RsbGJvVvTvGRHMAjam9HiIZT34r0AAArkSURBVBGpXKTf8c1sF3A98MAyzx0GDgP09/dHediaGZvKB4uHzmU5PTLJs9MFmjYY3elm+kosHpopzHNxIhdsn5tqpLejmZfs6GVfb5qdXVo8JCLRiqywm1k78CPgI+4+vvR5dz8CHIFgP/aojltt0/lwB8Xz45wYHmd0Mo87dLWnuGZrO40bSiwemswzNp2jsWEDPe3NvOoFXQyEi4eKzVMXEalUJIXdzJoIivq33f3HUfRZT4X5Bf41MsmJ8+M88lSWZ8Zz5OcX6NzYxK7u1pKLh8am84xOBitHu9pSvGpPN9f2dXDN1jRpLR4SkRqIYlaMAV8FTrj75ysPqT4WFpyzY9OcGJ7g4bOXGM7OMJmbI93SxFWdLUVnprg72ZkCFyfz5Obm2dyW4rrtnVwXLh7qbm+ucSYist5Fccb+auAO4FEzOx4+9kl3vy+CvqvK3RmZyHHi6Yn/LR66NJ1nY1MD3e3N9JfYQXE6H2y6NTE7R2ZjE7u724IdFHvTJf9ikYhItUUxK+ZPQKyqWHbm8uKhS5y6MMlouIlWV1uKgd5M0RWducI8FyfzXJoJiv+WTAtv3LeFgW3BDorFNusSEamldbPyZbZwefFQlseeGufiZI75cP54qR0U58IdFJ/bPjfFy3ZeXjyU1g6KInLFSXRhn5tf4MzoVLDp1tksF8ZnmSkEg6D9pRYPLTz3l4fmF5yuthQ37N7MtX3BH3nuaNUgqIhcuRJX2N2dpy7NhCtBgx0Ux2cLtDU3siXTQluJHRQnLu+gGG6fO7Atw3XbOxjYlmFLWjsoikg8JKawj07mOBkOgp4ZneLZ6TzNDQ10t6dKDmZO54OVoBNh8e/btDFYCdqboX9zq3ZQFJHYiXVhn8yFi4eeynLy6QlGp3IYxua2FPu2Zoqu6MzPLTA6lWNsukCqwehJt/CaPd0MXJXhBT3tpBo1CCoi8RXbwv7Hf45w/8lnuDA+S2He6Wxt4uru4kV5bmGBsakCo1N5wOlub+Y1e7s50NfBC7emaWuO7T+FiMj/iW016820sOBOX2crG1PLD4K6PzcIWph3NrU2cf2OjnDxUIbN2kFRRBIotoV979Y0V/e0MzqZ/7/H3Z2pXLB4aCo/R6aliT097cHioW0ZrurQDooikmyxLexLzRaCYp6dKdCaamBrpoUX79jKvt5g8ZB2UBSR9SKWhf3EvgEADjQ08WS6l9Md23jyjg/T3d7MDbu7eFG4g+Jy89Qvv3axgZMn1tyuGn2u5tgiIkuZe+130B0cHPShoaE1vfZy0Xuoew+Pd+1iwTawKTfJrux53vy7o2RK7KC4XMG8bHHhLLddNfpczbFFZH0xswfdfXCldrE8YwfozE+y79kn2T0+zKbcBAYli7qIyHoR28K+e/xpdvN0vcMQEbniaCWOiEjCqLCLiCRM7Ap7sQHEcgYWy33tao4RdZ+V5CciAjGcFSOL3N2xzGNZtSu3XTXbilRBubNiYnfGLqHlisxyj6td8cer1VakzlTYRUQSRoVdRCRhIinsZnbQzJ4ws1Nm9vEo+hQRkbWpuLCbWQNwD/AWYD9wm5ntr7RfERFZmyjO2G8ATrn7aXfPA98DDkXQr5RSdOZGVu3KaVfNtiJ1VvF0RzO7BTjo7u8J798BvNzdP1jsNZruKCKyerWc7rjcRufP+9/CzA6b2ZCZDY2MjERwWBERWU4Uhf0csGPR/e3A+aWN3P2Iuw+6+2BPT08EhxURkeVEUdj/Buw1s91mlgJuBY5G0K+IiKxBxdv2uvucmX0Q+CXQAHzN3f9ecWQiIrImkezH7u73AfdF0ZeIiFRGK09FRBJGhV1EJGFU2EVEEkaFXUQkYVTYRUQSRoVdRCRhVNhFRBJGhV1EJGFU2EVEEkaFXUQkYVTYRUQSRoVdRCRhVNhFRBJGhV1EJGFU2EVEEkaFXUQkYVTYRUQSRoVdRCRhVNhFRBJGhV1EJGFU2EVEEqaiwm5mnzWzk2b2iJn9xMw6owpMRETWptIz9l8DB9z9OuAfwCcqD0lERCpRUWF391+5+1x49xiwvfKQRESkEo0R9vVu4N5iT5rZYeAwQH9/f2VHurtjmcey0b52NceIus9K8hORdW/FM3Yz+42ZPbbMz6FFbe4C5oBvF+vH3Y+4+6C7D/b09Kw94uWKXqnH1/La1Rwj6j4ryU9EhDLO2N39plLPm9k7gbcCN7q7RxWYiIisTUWXYszsIPAx4HXuPh1NSCIiUolKZ8V8CUgDvzaz42b25QhiEhGRClR0xu7ue6IKREREohG/ladFZ6aUMWuk3Neu5hhR91lJfiIigNVjvHNwcNCHhoZqflwRkTgzswfdfXCldvE7YxcRkZJU2EVEEkaFXUQkYVTYRUQSRoVdRCRhVNhFRBJGhV1EJGHqMo/dzEaA/0TQVTdwMYJ+4kL5Jtd6yhWU71rtdPcVt8etS2GPipkNlTNZPymUb3Ktp1xB+VabLsWIiCSMCruISMLEvbAfqXcANaZ8k2s95QrKt6pifY1dRESeL+5n7CIisoQKu4hIwsSisJvZQTN7wsxOmdnHl3m+2czuDZ9/wMx21T7K6JSR70fN7HEze8TMfmtmO+sRZxRWynVRu1vMzM0s1lPkysnXzN4evr9/N7Pv1DrGKJXxWe43s/vN7KHw83xzPeKMgpl9zcyeMbPHijxvZvbF8N/iETN7adWCcfcr+gdoAP4FXA2kgIeB/UvafAD4cnj7VuDeesdd5XzfALSGt98f13zLyTVslwb+ABwDBusdd5Xf273AQ8Cm8P6Wesdd5XyPAO8Pb+8HztQ77gryfS3wUuCxIs/fDPwCMOAVwAPViiUOZ+w3AKfc/bS754HvAYeWtDkEfCO8/UPgRjOzGsYYpRXzdff73X06vHsM2F7jGKNSznsL8GngM8BsLYOrgnLyfS9wj7uPAbj7MzWOMUrl5OtAJrzdAZyvYXyRcvc/AM+WaHII+KYHjgGdZratGrHEobD3AWcX3T8XPrZsG3efA7JAV02ii145+S52J8FZQBytmKuZXQ/scPef1zKwKinnvb0GuMbM/mxmx8zsYM2ii145+d4N3G5m54D7gA/VJrS6WO3v9po1VqPTiC135r10jmY5beKi7FzM7HZgEHhdVSOqnpK5mtkG4AvAu2oVUJWV8942ElyOeT3BN7E/mtkBd79U5diqoZx8bwO+7u6fM7NXAt8K812ofng1V7M6FYcz9nPAjkX3t/P8r2v/a2NmjQRf6Up9JbqSlZMvZnYTcBfwNnfP1Si2qK2Uaxo4APzezM4QXJc8GuMB1HI/yz9z94K7/xt4gqDQx1E5+d4JfB/A3f8CtBBsmJVEZf1uRyEOhf1vwF4z221mKYLB0aNL2hwF3hnevgX4nYejFTG0Yr7h5YmvEBT1OF+DLZmru2fdvdvdd7n7LoLxhLe5+1B9wq1YOZ/lnxIMjmNm3QSXZk7XNMrolJPvk8CNAGY2QFDYR2oaZe0cBd4Rzo55BZB19+GqHKneI8lljjbfDPyDYIT9rvCxTxH8kkPwYfgBcAr4K3B1vWOucr6/AS4Ax8Ofo/WOuVq5Lmn7e2I8K6bM99aAzwOPA48Ct9Y75irnux/4M8GMmePAm+odcwW5fhcYBgoEZ+d3Au8D3rfovb0n/Ld4tJqfZW0pICKSMHG4FCMiIqugwi4ikjAq7CIiCaPCLiKSMCrsIiIJo8IuIpIwKuwiIgnzX0A41J5Ms3LtAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Doing a full fledged DML for conditionally exogenous treatment\\n\",\n    \"from econml.dml import DML\\n\",\n    \"dml = DML(model_Y_X(), model_T_X(), LassoCV(cv=3))\\n\",\n    \"dml.fit(y, T, X)\\n\",\n    \"dml_cate = dml.effect(X)\\n\",\n    \"print(np.mean(dml_cate))\\n\",\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"Exog-T CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dml_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, dml_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DMLIV CATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 268,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"'\\\\ndmliv_model_effect = lambda: model()\\\\ncate = GenericDMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\\\n             dmliv_model_effect(),\\\\n             n_splits=10, # number of splits to use for cross-fitting\\\\n             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\\\n             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\\\n            )'\"\n      ]\n     },\n     \"execution_count\": 268,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from dml_iv import DMLIV, GenericDMLIV\\n\",\n    \"from utilities import SelectiveLasso, SeparateModel\\n\",\n    \"from sklearn.linear_model import LassoCV\\n\",\n    \"from econml.utilities import hstack\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n    \"#      theta(X) = <theta, phi(X)>\\n\",\n    \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n    \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n    \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n    \"\\n\",\n    \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n    \"# This model will minimize the square loss:\\n\",\n    \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n    \"# potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n    \"# dmliv_model_effect = lambda: LinearRegression()\\n\",\n    \"\\n\",\n    \"# We could also use LassoCV to select the regularization weight in the final stage with\\n\",\n    \"# cross validation.\\n\",\n    \"# dmliv_model_effect = lambda: LassoCV(fit_intercept=False, cv=3)\\n\",\n    \"\\n\",\n    \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n    \"# that does not penalize the constant term in the CATE model\\n\",\n    \"feature_inds = np.arange(1, X.shape[1]+1)\\n\",\n    \"dmliv_model_effect = lambda: SelectiveLasso(feature_inds, LassoCV(cv=5, n_jobs=-1))\\n\",\n    \"\\n\",\n    \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n    \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n    \"             n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"            )\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"dmliv_model_effect = lambda: model()\\n\",\n    \"cate = GenericDMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n    \"             dmliv_model_effect(),\\n\",\n    \"             n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"            )\\\"\\\"\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 269,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 4.38 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dml_iv.DMLIV at 0x22d26ee1668>\"\n      ]\n     },\n     \"execution_count\": 269,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 270,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dmliv_effect = cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 271,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 4.059\\n\",\n      \"True ATE: 4.244\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# We can average the CATE to get an ATE\\n\",\n    \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dmliv_effect)))\\n\",\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 272,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dmliv_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dmliv_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 273,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(dmliv_effect, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Algorithm 3 - DRIV ATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 274,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n    \"from dr_iv import IntentToTreatDRIV\\n\",\n    \"from utilities import WeightWrapper\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For intent to treat DRIV we need a flexible model of the CATE to be used in the preliminary estimation.\\n\",\n    \"# This flexible model needs to accept sample weights at fit time. Here we use a weightWrapper to wrap\\n\",\n    \"# a lasso estimator. WeightWrapper requires a linear model with no intercept, hence the Pipeline\\n\",\n    \"# that adds a bias to the features.\\n\",\n    \"driv_flexible_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n    \"                                      ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, n_jobs=-1)))]))\\n\",\n    \"# Then we can also define any final model to project to. Here we project to a constant model to get an ATE\\n\",\n    \"driv_final_model_effect = lambda: ConstantModel()\\n\",\n    \"\\n\",\n    \"dr_cate = IntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                            driv_flexible_model_effect(),\\n\",\n    \"                            final_model_effect=driv_final_model_effect(),\\n\",\n    \"                            cov_clip=0.0001,\\n\",\n    \"                            n_splits=10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 275,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 8.56 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x22d2af7d780>\"\n      ]\n     },\n     \"execution_count\": 275,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 276,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     nan</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Tue, 04 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>08:47:19</td>     <th>  Log-Likelihood:    </th> <td> -43494.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>8.699e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>8.700e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>    3.9367</td> <td>    0.187</td> <td>   21.011</td> <td> 0.000</td> <td>    3.569</td> <td>    4.304</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>288.968</td> <th>  Durbin-Watson:     </th> <td>   2.021</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 178.965</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.190</td>  <th>  Prob(JB):          </th> <td>1.37e-39</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.466</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                       nan\\n\",\n       \"Date:                Tue, 04 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        08:47:19   Log-Likelihood:                -43494.\\n\",\n       \"No. Observations:               10000   AIC:                         8.699e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         8.700e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const          3.9367      0.187     21.011      0.000       3.569       4.304\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      288.968   Durbin-Watson:                   2.021\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              178.965\\n\",\n       \"Skew:                          -0.190   Prob(JB):                     1.37e-39\\n\",\n       \"Kurtosis:                       2.466   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 276,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 277,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[ 1.27943424e+01 -1.00120742e-01 -1.15385188e-03  7.22813126e-02\\n\",\n      \" -4.44815340e-02  3.24042659e-03 -2.97591147e+00  2.03067207e-02\\n\",\n      \"  1.20732229e-02  3.83274474e-02]\\n\",\n      \"-0.646778113463216\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lr = LinearRegression().fit(X, true_fn(X_pre))\\n\",\n    \"print(lr.coef_)\\n\",\n    \"print(lr.intercept_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Projecting to subset\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 278,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[0 1 2 3 4 5 6 7 8 9]\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x22d2af7d780>\"\n      ]\n     },\n     \"execution_count\": 278,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from utilities import WeightWrapper\\n\",\n    \"subset_names = X_data.columns.values\\n\",\n    \"#subset_names = set(['days_visited_as_pre', 'is_existing_member'])\\n\",\n    \"# list of indices of features X to use in the final model\\n\",\n    \"feature_inds = np.argwhere([(x in subset_names) for x in X_data.columns.values]).flatten()\\n\",\n    \"print(feature_inds)\\n\",\n    \"# Because we are projecting to a low dimensional model space, we can\\n\",\n    \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n    \"# the hypothesis testing capability\\n\",\n    \"lr_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n    \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n    \"                                         )\\n\",\n    \"dr_cate.refit_final(lr_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 279,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"driv_cate = dr_cate.effect(X[:, feature_inds])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 280,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(driv_cate, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 281,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - driv_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, driv_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 282,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"3.936742667104734\"\n      ]\n     },\n     \"execution_count\": 282,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# To get the ATE we look at the params of the fitted statsmodel\\n\",\n    \"dr_effect = np.mean(driv_cate)\\n\",\n    \"dr_effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 283,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.053</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.052</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   55.60</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Tue, 04 Jun 2019</td> <th>  Prob (F-statistic):</th> <td>6.40e-110</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>08:47:27</td>     <th>  Log-Likelihood:    </th> <td> -43223.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>8.647e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9989</td>      <th>  BIC:               </th> <td>8.655e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>    10</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   -3.0644</td> <td>    0.915</td> <td>   -3.349</td> <td> 0.001</td> <td>   -4.858</td> <td>   -1.271</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x1</th>    <td>   13.8712</td> <td>    0.629</td> <td>   22.050</td> <td> 0.000</td> <td>   12.638</td> <td>   15.104</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x2</th>    <td>    0.4269</td> <td>    0.628</td> <td>    0.680</td> <td> 0.496</td> <td>   -0.804</td> <td>    1.657</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x3</th>    <td>    0.8196</td> <td>    0.628</td> <td>    1.304</td> <td> 0.192</td> <td>   -0.412</td> <td>    2.051</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x4</th>    <td>    0.7034</td> <td>    0.628</td> <td>    1.120</td> <td> 0.263</td> <td>   -0.528</td> <td>    1.935</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x5</th>    <td>    1.0978</td> <td>    0.628</td> <td>    1.748</td> <td> 0.081</td> <td>   -0.133</td> <td>    2.329</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x6</th>    <td>   -0.4476</td> <td>    0.628</td> <td>   -0.712</td> <td> 0.476</td> <td>   -1.679</td> <td>    0.784</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x7</th>    <td>   -2.8441</td> <td>    0.365</td> <td>   -7.791</td> <td> 0.000</td> <td>   -3.560</td> <td>   -2.128</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x8</th>    <td>    0.2748</td> <td>    0.365</td> <td>    0.752</td> <td> 0.452</td> <td>   -0.441</td> <td>    0.991</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x9</th>    <td>    0.4102</td> <td>    0.448</td> <td>    0.915</td> <td> 0.360</td> <td>   -0.469</td> <td>    1.289</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x10</th>   <td>   -0.2732</td> <td>    0.630</td> <td>   -0.434</td> <td> 0.664</td> <td>   -1.507</td> <td>    0.961</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>312.694</td> <th>  Durbin-Watson:     </th> <td>   2.019</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 153.000</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td> 0.073</td>  <th>  Prob(JB):          </th> <td>5.98e-34</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.412</td>  <th>  Cond. No.          </th> <td>    11.3</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.053\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.052\\n\",\n       \"Method:                 Least Squares   F-statistic:                     55.60\\n\",\n       \"Date:                Tue, 04 Jun 2019   Prob (F-statistic):          6.40e-110\\n\",\n       \"Time:                        08:47:27   Log-Likelihood:                -43223.\\n\",\n       \"No. Observations:               10000   AIC:                         8.647e+04\\n\",\n       \"Df Residuals:                    9989   BIC:                         8.655e+04\\n\",\n       \"Df Model:                          10                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         -3.0644      0.915     -3.349      0.001      -4.858      -1.271\\n\",\n       \"x1            13.8712      0.629     22.050      0.000      12.638      15.104\\n\",\n       \"x2             0.4269      0.628      0.680      0.496      -0.804       1.657\\n\",\n       \"x3             0.8196      0.628      1.304      0.192      -0.412       2.051\\n\",\n       \"x4             0.7034      0.628      1.120      0.263      -0.528       1.935\\n\",\n       \"x5             1.0978      0.628      1.748      0.081      -0.133       2.329\\n\",\n       \"x6            -0.4476      0.628     -0.712      0.476      -1.679       0.784\\n\",\n       \"x7            -2.8441      0.365     -7.791      0.000      -3.560      -2.128\\n\",\n       \"x8             0.2748      0.365      0.752      0.452      -0.441       0.991\\n\",\n       \"x9             0.4102      0.448      0.915      0.360      -0.469       1.289\\n\",\n       \"x10           -0.2732      0.630     -0.434      0.664      -1.507       0.961\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      312.694   Durbin-Watson:                   2.019\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              153.000\\n\",\n       \"Skew:                           0.073   Prob(JB):                     5.98e-34\\n\",\n       \"Kurtosis:                       2.412   Cond. No.                         11.3\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 283,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n    \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n    \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 284,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 3.94\\n\",\n      \"True ATE: 4.24\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"ATE Estimate: {:.2f}\\\".format(dr_effect))\\n\",\n    \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 285,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[[ 1.27943424e+01 -1.00120742e-01 -1.15385188e-03  7.22813126e-02\\n\",\n      \"  -4.44815340e-02  3.24042659e-03 -2.97591147e+00  2.03067207e-02\\n\",\n      \"   1.20732229e-02  3.83274474e-02]]\\n\",\n      \"[-0.64677811]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lr = LinearRegression().fit(X[:, feature_inds], true_fn(X_pre).reshape(-1, 1))\\n\",\n    \"print(lr.coef_)\\n\",\n    \"print(lr.intercept_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 286,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coverage of True Projection: 0.91\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAeYAAAFpCAYAAABJdYvCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXd4FNX6xz+zLY0ESEIJUkLvoYNIC4SuiAqKioIiFwRFrvd67ahXvWK79ydW7IC9oIIdgUSKkQ5KryEgAUIIpGezu/P74+xudnY3m50kJEHP53l8Zs/MnJmzG5x33nPe9/sqqqoikUgkEomkdmCo6QFIJBKJRCIpRRpmiUQikUhqEdIwSyQSiURSi5CGWSKRSCSSWoQ0zBKJRCKR1CKkYZZIJBKJpBYhDbNEIpFIJLUIaZglEolEIqlFSMMskUgkEkktQhpmiUQikUhqEaaauGlsbKwaHx9fE7eWSCQSiaTa2bJlyxlVVRsEc26NGOb4+Hg2b95cE7eWSCQSiaTaURTlaLDnyqlsiUQikUhqEdIwSyQSiURSi5CGWSKRSCSSWkSNrDH7o6SkhOPHj1NUVFTTQ5HoJDQ0lKZNm2I2m2t6KBKJRHLRU2sM8/Hjx4mMjCQ+Ph5FUWp6OJIgUVWVrKwsjh8/TsuWLWt6OBKJRHLRU2umsouKioiJiZFG+SJDURRiYmLkTIdEIpFUEbXGMAPSKF+kyL+bRCKRVB21yjBLJBKJRPJXRxrmi4DNmzdz11131fQwJBKJRFIN1JrgL0nZ9O7dm969e9f0MNzYbDZMJvlPRyKRSC4EtddjTkz0/e/VV8WxggL/xxctEsfPnPE9FgRpaWl06NCB6dOn06VLFyZPnszKlSsZMGAAbdu2ZePGjeTn5zNt2jT69OlDjx49WLZsmbvvoEGD6NmzJz179uSXX34BICUlhcTERCZOnEiHDh2YPHkyqqqWOYZNmzZx2WWX0a1bN/r27Utubi4pKSlcccUVZfZ57LHHeP75593tLl26kJaW5v4+U6dOJSEhgYkTJ1JQUAAIWdT77ruPvn370rdvXw4ePAhAZmYmEyZMoE+fPvTp04f169e77zFjxgxGjhzJlClTgvo9JRKJRKKfoN0eRVHeAa4ATquq2sW57zHgb0Cm87QHVVX9rqoHWZ0cPHiQzz77jDfeeIM+ffrw4Ycfsm7dOpYvX85TTz1Fp06dGDZsGO+88w7nzp2jb9++DB8+nIYNG/LTTz8RGhrKgQMHuOGGG9x64Nu2bWPXrl00adKEAQMGsH79egYOHOhzb6vVyqRJk/jkk0/o06cPOTk5hIWFVer77Nu3j7fffpsBAwYwbdo0Xn31Ve655x4AoqKi2LhxI0uWLOHvf/8733zzDXPnzuXuu+9m4MCBpKenM2rUKPbs2QPAli1bWLduXaXHJJFIJLWaQ4cgPx8SEmrk9nrmIxcBLwNLvPb/n6qqz/ueXklSUso+Fh4e+HhsbODjAWjZsiVdu3YFoHPnziQlJaEoCl27diUtLY3jx4+zfPlyt4daVFREeno6TZo04c4772T79u0YjUb279/vvmbfvn1p2rQpAN27dyctLc2vYd63bx9xcXH06dMHEIazsjRr1owBAwYAcNNNN/Hiiy+6DfMNN9zg3t59990ArFy5kt27d7v75+TkkJubC8CVV14pjbJEIvnz06aN2AaY3byQBG2YVVVdoyhK/IUbSu0gJCTE/dlgMLjbBoMBm82G0Whk6dKltG/fXtPvscceo1GjRuzYsQOHw0FoaKjfaxqNRmw2m997q6paodQjk8mEw+Fwtz1zir2v59n299nhcJCamurXAEdEROgem0QikVx09OolvOYaoirWmO9UFOU3RVHeURSlfhVcr1YzatQoXnrpJfc68bZt2wA4f/48cXFxGAwG3nvvPex2u+5rd+jQgRMnTrBp0yYAcnNzyzTinsTHx7N161YAtm7dypEjR9zH0tPTSU1NBeCjjz7SeOqffPKJe9u/f38ARo4cycsvv+w+Z/v27bq/h0QikVzUXHIJxMfX2O0ra5hfA1oD3YEM4L9lnagoygxFUTYrirI5MzOzrNNqPfPmzaOkpISEhAS6dOnCvHnzAJg9ezaLFy/m0ksvZf/+/RXyLi0WC5988glz5syhW7dujBgxIihFrQkTJnD27Fm6d+/Oa6+9Rrt27dzHOnbsyOLFi0lISODs2bPMmjXLfay4uJh+/fqxYMEC/u///g+AF198kc2bN5OQkECnTp1YuHCh7u8hkUgkFzXLl0MNOiVKoAhhn5PFVPY3ruCvYI9507t3b9UVGOViz549dOzYMeixSMonLS2NK664gp07d/oci4+PZ/PmzcTGxlbJveTfTyKR/GlwLfNV4RqzoihbVFUNKu+1Uh6zoihxHs2rAV8LIJFIJBLJxURMTI3eXk+61EdAIhCrKMpx4FEgUVGU7oAKpAEzL8AY/5RcffXVmrVggGeeeYZRo0aV2efdd99lwYIFmn0DBgzglVde8Xt+fHy8X28ZhDctkUgkEj8MGADp6TV2e11T2VWFnMr+8yH/fhKJ5E9DixbCMF+MU9kSiUQikfzpqEFvGaRhlkgkEolEy8CB0KRJjd1eViKQSCQSicST6GjIy6ux20vDLJFIJBKJJ8uX1+jt5VT2RUB59ZgXLVrEnXfeWY0jkkgkklqC3Q5DhoiiE38SpGG+COjduzcvvvhiTQ8jKHlQiUQiqVYWL4Y1a8CpwvhnoPYaZlmPOeh6zJ4cPXqUpKQkEhISSEpKIj09HbvdTqtWrVBVlXPnzmEwGFizZg0AgwYN4uDBg2V+r0WLFnHttdcybtw4Ro4cGdQYJBKJpNpwiYG0aFE113vnnaq5TiWQa8xeXOz1mO+8806mTJnC1KlTeeedd7jrrrv46quvaNeuHbt37+bIkSP06tWLtWvX0q9fP44fP06bNm148MEH/X4vgNTUVH777Teio6Mr/wNLJBJJVeKKnnaVaqwMP/0EM2teJ6v2GmZZj7lC9ZhTU1P54osvALj55pu59957AeEZr1mzhiNHjvDAAw/w5ptvMmTIEPe9VqxY4fd7AYwYMUIaZYlEUjspLhbbgoLKXefMGZg4ETp1gt9+q/y4KkHtNcw1xMVYjzkQrusNGjSIhQsXcuLECR5//HGee+45UlJSGDx4sPve/r7Xhg0bZB1miURSezl1SmwrKzMcGwuvvy5ymHv2hBqsglh715hrKbWxHrMnl112GR9//DEAH3zwgdsz79evH7/88gsGg4HQ0FC6d+/O66+/zqBBgwJ+L4lEIqkW3nsPVq/W3695c7Ht1Kli983NhY0bxefrr4emTUkNyWT+QEg9llqxa1YSaZh1UhvrMXvy4osv8u6775KQkMB7773nLnoREhJCs2bNuPTSSwHhQefm5rqn7cv6XhKJRFItTJkCSUn6+7mcoAo4Q5SUwLXXwrBhbg859Vgqw6bCw8MgaUlSjRhnWcRCUiXIv59EIqkUXbpAhw7w+ef6+r36KtxxB8yaVZq5EwyqCjNmwFtvwZtvwvTpAMxfO58HVz8IgFEx8sTQJ3hg0AP6xuQHWcRCIpFIJJJAzJ8vjPKDD7qNMkBifKL7s8Vo0bSrCxn8VUNURz1miUQiuWjYtUv8pxfXGnPnzsH3+flneOghuPFGePJJzaH+zfq7P6+askrTri6kYa4hvvzyS919br31Vm699dYLMBqJRCKpInJzISICDNU0IduokdjGxwffZ9AgMe09bRr4yYT54qcYcvKy6P9o9RtlkFPZEolEIqkq8vMhKgquvrpi/Tt00N/Hlb+ck1P+ufv2iVrLBoNYk/ZIZfWkcfOOnGgXV2NR2dJjlkgkEknV4BL7qIj2QefOFTPM2dlim5ER+LxTp2D0aKhXD7Zu9espg4jKHtB+HSpgfHcQa29dW+3T2dJjlkgkEknVYLGIbc+e+vvu2gVr1+rvd8klYusljqQhPx/GjYPTp+GNN8o0ygD3r7wfV66SXbVz/8r79Y+pkkjDfAGpU6dOTQ9BIpFIqg9XLnFFVbNOn9bfp6REbF3eur8x3XgjbNkCH30EThnisvjt1G8B29WBNMw6qYiil0QikVxUvPOO8Cr16lwUFort4sX679m5M0yYoL/f9u1iu3Kl/+PPPw/Ll8OCBXDlleVezmq3BmxXBxe1YU49lsr8tfOrbIHeVfZx6tSpJCQkMHHiRAoKCoiPj+fxxx9n4MCBfPbZZxw6dIjRo0fTq1cvBg0axN69ewE4cuQI/fv3p0+fPlI5SyKRXLy8+abY5ubq6+cKprr88qodT2WYNUvkK995Z1Cn2xy2gO3qoNYGfyUuSvTZd13n65jdZzYFJQUMeGcAv536DYfqwKAYSGiUwNx+c7ml+y2cKTjDxE8navqm3JIS1H337dvH22+/zYABA5g2bRqvOpVkQkNDWbduHQBJSUksXLiQtm3bsmHDBmbPns3q1auZO3cus2bNYsqUKTK3WCKRXLyMHw+//lq6ZhwsZrPYVkQFsKJ5zC1bktoUUlqfIPFYammg1rp10KOHiBK/7bagL6eiBmxXBxetx3y+6DwO1QGAQ3Vwvuh8lVy3WbNmDBgwAICbbrrJbYwnTZoEQF5eHr/88gvXXnst3bt3Z+bMmWQ4owHXr1/PDTfcAIiSixKJRPKXwrXUd+xYtd3ye8d+Bt8CD+UtI3FxophBTU2FESPgn//Ufb0SRwmetrjEUVJ1gw2SWusxB/Jww83hfHDNByQtScJqt2IxWvjgmg/cb0qx4bFBe8jeeJdddLVdRSkcDgf16tVju2tdo5z+EolEctHxv/+JbVEReJSwLRfXGvMnn4g1Xb107667y1tHPsfmtGRWu5Ula16i/99/EtHaTzyh61r51nzd978QXLQec/9m/Vk1ZRVPDH2iSmXT0tPTSU0Va9YfffSRu2yii6ioKFq2bMlnn30GiDrGO3bsAIQ8pmfJRYlEIrkoCQsTW72OhmuNefRo/ffs3Blat9bdbUfOQU371w2fg8MB330HDRoEfZ29Z/bS7uV2olHD/tVFa5hBGOcHBj1QpcnfHTt2ZPHixSQkJHD27FlmzZrlc84HH3zA22+/Tbdu3ejcuTPLli0DYMGCBbzyyiv06dOH8+erZmpdIpFIqh3Xc68MZawyca0xd+mi/567dsGKFbq7nXJ4PGtVOBFSIqKw27UL+hoHsg4wbPEw7I7akXVTa6eyawqDwcDChQs1+9LS0jTtli1b8sMPP/j0bdmypdvbBrj//upPTJdIJJIaw7XGXIEgrtSmkBKfqw3gCgJN6WIF1LpR4IwTCoYj2UcYtmQYJY4SUqam0OW1CrxUVDEXtccskUgkkgvARx+JrVVnDq/LIC9apKtb6rFUBk+Dh5IgaUmSrhTYfEeRpp1pD0Iz20l2YTbDlgwj35rPyptX0rmhjgpVFxBpmD2Ij49n586dNT0MiUQi0TJuHPTqVX33q1dPbPWuMW/cKLY6PFaAlLQUbAZQFSi2FZOSlqLvvhWkXmg9pveYzoqbV9CtcbfSA9WfIaVBTmVLJBJJbeebb6r3fmPGwJo1pWvGweLSug5CYcuTc8Xn3J8dODTtC8GpvFNkFWbRqUEnHhr80AW9V0WQHrNEIpFIKo+qwldfic/33aer6/aM7QHb5d87+FPPFJxh+HvDGfvB2DLlNvvHiP9qCmmYJRKJRKLl6afFtqgo8HmeHD4MDgepTWH+QPRLJatUfAo5yBn37MJsRrw3goNnD/L2lW9jMepUNqsmpGGWSCSSPytpaaViIXpo2FBs9awxR0Wx7l+TGHoLzBumL4hr28ltzvt5tauQ80XnGfX+KHZn7ubLSV+S1CrJ5xxVdVDfjMxjri1kZWXRvXt3unfvTuPGjbnkkkvcbaveyEQv3nrrLRo0aED37t3p2LEj77zzjq7+GzZs4O67767UGCQSyV+Q/v2FLKXeZ9i0aWKrJ4+5QQNWDm5KsQnsBqHCFWwQV7GtWGMMi21llHCsBE+seYJtJ7fx+bWfM7qNVgDFZsshP38X2dkr6RBV5bfWjQz+chITE+OW2XzssceoU6cO99xzj+YcVVVRVRWDQf/7zOTJk3nhhRc4efIkXbp04corryQ2NtZ93GazYTL5/3P069ePfv366b6nRCL5k5CRAbYKVDlKTASnGuEFRVVh6VIG1XWKeqhCEyIxPjGo7rnW3IDtquCJoU8wrt04hsQPAcBuL8Jq/YPi4uPYbDkoigGzuRF7c6hx4yw95nI4ePAgXbp04fbbb6dnz54cO3aMeq5UAuDjjz9m+vTpAJw6dYprrrmG3r1707dvX3799Vef6zVu3Jj4+HjS09N5+OGHmTlzJiNGjODWW2+lsLCQqVOn0rVrV3r27MmaNWsAWLlyJVdddVX1fGGJRFL7aNwYmjbV36+zMy9XrzPhqqdcHKTneuAAXHst29Z84t5V4ijh99O/B9X9QlV0KrIVcc+KezhXdI4wcxiDWwykuPgPcnI2kJ29kvz83YCRiIiu1K8/kqio3mRXf80KH2qlx5yfvwubrWolLU2mukREVCx5fPfu3bz77rssXLgQW4C31rvuuot7772XSy+9lLS0NK644gqfvOiDBw9y9OhRWrVqBcC2bdtYs2YNoaGhPPPMM1gsFn7//Xd27drF2LFjOXDgQIXGLJFI/kRcdhkcPw7p6fr6uVQLHQ59/Zo2hb17gzfoyckAfBOXC5m4p6WX7l7KjF4zyu1uwIAD5xhVMCiV9xmLbcVM+HQC3x/4jkFNE0hq3o3i4hOoqg2DIYywsDaEhDTFZKrj21mlRteZa6Vhrm20bt2aPn36lHveypUr2bdvn7udnZ1NobPaygcffMDPP/+MxWLhrbfecnvd48ePJ9RZvWXdunX861//AqBz5840adKEgwcPIpFI/uKk6oxwduHU8ddrmFOHtiGlaCWJp7fQPzKx/A7JydCkCV1a9OXnzE1uw9Y9LrhqUeHmcPJK8krbBp0a3V6U2EuYvHQCvx//jiWj72ZAw/oUF5/AYokjNLQZJlN0ra4EWCsNc0U92wuFq+QjiHUTT23WIo90AlVV2bhxIxY/xcVda8yBrq3RfJVIJJLKMncuzJsHZcSv+CP1WCqDSl7HPhzCPh5bfvU+VYWUFBg+nIJ8pzCIAqiQUxScPKanUQbIsxWK6wZhPA1Av2jYnA0OINYC/1w+ihOZyTwxcAbjOlxHSEhTQkLiUBRjUOOpaeQas04MBgP169fnwIEDOBwOvvzyS/ex4cOH88orr7jbZdVsLovBgwe7y0Xu2bOHjIwM2rRpUzUDl0gkkiBISUvB7nQSgpLH3L8fTp2CoUPZfHKr5tCvenKZXX6JyxYvXx5UtwYhok/vaOhTH1rVgf1Zu7mxx/3c1G8BdeteSmho06CNssHLLHq3qwNpmCvAM888w+jRo0lKSqKpR0DGK6+8wvr160lISKBTp068+eabuq47Z84cCgsL6dq1K5MnT2bJkiVu77s2T7tIJJJaiisi2x58OcOY8FLJKwcOTdsv7dsLcZFrruFgzmGNgd13dr/OAXuwYEFQp9k9JhpPFsFv5+DTm/dz54D5GI2hum9rUAya9eWqWO/WS62cyq5pHnvsMffnNm3a+Hi+kyZNYtKkST79GjRowOeff+6z3xW17c2TTz6paYeFhbFkyRKf87KysoiOjg5m6BKJRFKKK0ZFxzLZtoxtGsO0LSMIsY+WLQEotlt985EdjuCCyDx9DwPw9ddBjbfQ+c6xNwd3RHVUSAXynQ4ehNOnMRvNQGmQr2hXL9JjruV8+eWXPProo/ztb3+r6aFIJJKa4tw5OHtWfz+XA6EjXWr3md0B2xocDpg+XawxA4qXd6nYHfDdd0HfW0NEhBBGKSioWH89bN0qIt+nTqWupa7mUN2QumV0unBIw1zLufrqq9m7dy+XXnppTQ9FIpFUlu3bwRlHoou6daF+ff392rYVWx2G+ei5oxrN6qPnjpZ98q5d8PbbcFSco6ra6G9VJegpaR/y86FrV/jPfyrWP1hWrYIhQyAsDL75hnYN2mkOt4ttV0bHC0etMswyKvniRP7dJJIgWboUpkzR369DB2E49OJK39SRLuUdzxIwvsWZv0xioriNlzCIwwSsXAm7A3jdTpqGiYhqNxER0KeP0Po+dixw54o+gj77DMaOhfh4+OUXaN+e6NBozfWiQ6t/GbHWGObQ0FCysrLkQ/4iQ1VVsrKy3LnYEokkAE8/rV/sA0jN38f83kX6KzatWiW2Ou7ZPKq5Zr23eVTzsk9OThbryy1alH1OSAi89FK5920WDm0jvXb+5z/C7Z43r9z+FeKrr4TxX7MGLrnkwtyjAtSa4K+mTZty/PhxMjMza3ooEp2EhoZqotMlEkkZVEDvOvVYKpfdBigQtiSp/LxiT2bP1p3H7MpBdhvnshxmhwN+/hmuvjrw9SZPhiVLYP588JAzDooWLUQu9nPPwd//Dt2DEywJiKqKNfv69eHdd8XfJDzcffhsoXYt37tdHdQaw2w2m2npjOyTSCSSC46qwujR8OGHEFNOSlANkpKW4jaOropNQRvmCrDlxJaAbTenTgkvc9gwAHKLyyg8cf/9cMstYp08EM6XAdd7gZsHHhDr2G+9BS+/XGa/oLDb4Y47RLDaxo0QFQVeglBFtiKMXu3qptZMZUskEkm18tNPsGKF8Cr1cv48/P47FF34h7ZnhSaL0RJ0xSZAeKqgy1PPL8kP2HYTFyd+gxtvBODHQz/6P69tWxg0KOjazjHewon16sH69fDii/47BGuUi4rguuvg9dfhmmsg0nveXHBbz9s017yt521B3qDqkIZZIpH8NanjLF7gilzWw6uvQkKCCBjSg6vOsQ76N+tP2zMQWoK+aWzgvpaHaDsH7kt5SN9NgzF2rnggp8FdfWR12efm5MCdd8K335Z5SqFzGbyJvxi39u1FZPnZsxUrf3n+PIwZA198AS+8AE89VeaLQteGXd2fTQaTpl1dSMMskUj+mrimrztXQJv/d2c5w5Mn9fUbO7ZCUdn7/1tM4bwifUZ55X0829/BwWh4dsP/uG/lfbrvWyZ2u4hk9phaTk4TEdqdoiDCW/0yPFwIhvz3v2Ve0mXnI0wQ5W+R9eBBaN0aFi3SP945c2DdOpGqNnduwFOX7CgVebI5bJp2dSENs0Qi+WtitYptXl7g86qSZs2EkIVOMoqzOFZ0Wlefd7e9KzxfxaMdLOUlx2zbJkpQxsaK8eVmsPfMXkwK1DVDB2/hLZNJrO0mJ5e+1PjhnBVsjjK85tatoWNHeOQRkePsxNvv9Suh+dxz8MMP7mn3cqnh5CBpmCUSyV+T7Gyx9SjVesH5+usKrWk3+V8Tmr8QIG3JD3bVrjEwdjV4vexyceUvDxkC4C504TKSFn+WZfp0kYsdIHXKrgq96/oWsNm8XpgUBZ5/HjIyNJ63WTFpvqfZ4JTQ3LoVbr0VSkqgUSNISgrqq03pNkVcTxVT2VO6VSDvvJJIwyyRSP6aNGoktr16Vd89n3yyQnnMLt7Y8kbQ50ZaIgO2A1LeGnNyshA9iYsDYFSbUXx+7efU8ZiC9rlEdDTcfDO8/z5kZXndrvTsk0ViWjsrx49nfdllMHEiPPusexmhsUkb7d24TmNYvVqInqxerX+5gVLDaKyhMpHSMEskkr8mLgOpo/KSG5cxr4b8fU9jPPObmUEbZ7vDHrAdkEBTuSUlsHYtDB3q3hUdFs2EThOI9oiojg3x03fOHJHX7FpGcN+u9IYlKmQWQ37hERwOq/cVRD601QrOkrtd7Q00Yx6oNheBXi1aiOC8Zs0CfVMfUtJScDiXAFzpadWNNMwSieSvyYEDYvvpp/r7zp4NJ05A/wuXT+zi7a1vB2yXxan8UwHbFaaoCO66C669FoATuSd4bv1zZORmCMPsNJBN/IkBdukCb77p9rTL4kQRRIVEUlSU5nuwTRtRA3rWLABO2bI1a+mZW9dWSs3rXPE58UEVLwzudjUStGFWFOUdRVFOK4qy02NftKIoPymKcsC5rYDKukQikVxkFBTAkSM+nl+5uHJn//gj6C6hptCA7bIocZSUNlSvdjmEGKBZWdLckZFCKtPpMf906CfuXXkvp3IPYfKwKOFlRVcDbNgAv/5a5v0L7XD4/Fm+3PmaT2EMQESEAxw7xmCLs8iE84VgQkQfkZ9ekaIfwMJNCzWGfuGmhRW6TmXQ4zEvAkZ77bsfWKWqaltglbMtkUgktZ+GDcW2ImvMr74KAwZAqk7t6ptuElsdnlynBp00U8udGnTSd88K0KUuNA0vw0Bs2waFhe5mcloyMWExtIlyGkJFBHHZHBDnz7g7HHDDDXBfafqWwetOBgws2vUjr29+mSNnNvgf5E8/QcuWXHFWRIZ3sUfz+hWvM2PhRo3Epl5yrDkB29VB0IZZVdU1gLdo6HhgsfPzYuCqKhqXRCKRXFhcHlW7CpT127NHbE/rS2F6o7eBUQ801RXE1SOuhyaSqkdcD133BIJXx3JicJ7vo8FhtcLAgUJmE1HEJjktmcT4REpKTlHg1P5wOKOroy1gt3vVUzYYhNjImjWiDCaQ0DhBc0pC4wQeGPIMhTaFNzc87n+QgwaJF5zVolDHfafbMaPXDH1ftJZS2TXmRqqqZgA4tw0rPySJRCKpBlxymueqZw3xjS1vMPPYK6wIOc7Mr2fyxg/B1Rl+ddOrAdu6+OSTivcF2LRJTOM7yzwezj5M+vl0hsdfht2ez1mPmX1XdHVh4WHf60ybJrxap8zmrN6zNIdn9Z5Fs7rNGNXhFtam/cjOjHW+1wgNhaeeQjmfg8EOz8Yd0vXCE5C/Sh6zoigzFEXZrCjKZllBSiKR1Di5zqILR49Wy+2W7l6qbW9cFFS/nad3BmwHjQMh8pFbRrGJYEhOFm704MHusZgMJgY06QhAvrV0UblEhSwrbEr/BofDS0azXj2YOlUUEMnMZFvGNs1hV/vvA/6D0RjGq6kP+x/PDTewoyE4DPC7kqkrar0swoxhAdvVQWUN8ylFUeIAnNsy53VUVX1DVdXeqqr2btCgQSVvK5FIJJXE9Rzq1q1abjeh0wQ40LHlAAAgAElEQVRte2twBTC8hUEqLBRiQOQP+6vQFCzJyUIj3ClnOr7DeLLvy6ZpRDhmczQ2L5OSUQRf7/uK4uJjvte6806IiIDff2f3md2aQ652bEQDrku4i47RcVhLzvv5TgaWj9YKr3i/AOml0F4YsF0dVNYwLwemOj9PBZZV8noSiURSPbiKIRQX6+976aVi2zx4Na4ZvWZQTxXJvSNN7Zmx7LhI+7mAxIVCf8+KlpdfLuQpcyoQ0FRcLPKCPfKXAcKMBuz2HCyWxhR65R3n2WDV0Y0cyfwFVfWaH+7USaScDRtG+rl0zSHP9qz+/+bGrjdTXHTE77DC6mkdvQYRF7/jpydd6iMgFWivKMpxRVFuA54GRiiKcgAY4WxLJBJJ9ZGQEHRJQQ2HDontF1/o7zt7tpgS1pHHfN/K+zhHMaiwwr6P+5KAzz7Tf28dxEeIrftB/+9/CynSBQv0X8xkEnWMnfnD+87sY9C7g9h67CcALLYoDA4067MGDHRrOpoSWw4lJX4mVENCRJR2AJEXg8GCxdKUlEOfsSZtlc/xnXlHNMFt205u8znnYkNPVPYNqqrGqapqVlW1qaqqb6uqmqWqapKqqm2dW++obYlEIrmwVGbNtIKk7vyB+Z/OIfVgctB93EUkXEUl+oeUK7RRVdR1ykfTq5fQrG5YgThdoxH69XNHsa8+spp16esINxZhMkVh3LCDMK+07nBLOIsnfEOzem0oLPTv8TJuHN0PaXWxuzfurmmbQprxzra3+c/qOTi88pqzHdqo75N5+iU4fajAe15VIpW/JBLJxc24cRUTk2jcWGz79dPVLfVYKolfjefBY4sY+slYUo8Fl8vs8NLIdtSpE3x95kpGCTf21CR5802YOVP/RRYsgJ9/djdXp62mZd2mNAwNw2KJg9WriSxGY9TqhdRDUQycLFLZceJnbDY/L1EjR3Lv19nuplExcu+AezWnhFnqc3232WTn7eGzndrI8iJV+zZQYPVKz7oIkYZZIpFc3OTnl1aK0kNdZ/GDVq10dVuyYwlWhJEtVkuCrtdbJ6SOxmjVCakjhDqqobpVPYtQ83Jjs8HixXA2yEnOwkK491745hsAHKqDlLQURrfsi6IobsOMyb+rOe3bB3h548v+U6duuUVUnXJiLLFDum+k/PjOt9Omfgv+t/4BSuylKmY2tC88ehTOaivSMEskkoubd96pWL/CQu5PglGH/60rxcZ7qjTYqdN6ofV821ddJaolVQMar3nfPmEQPconBiQ1VYiLOAO/dp7eyZmCMwy6pBNGYwSmfAds2sSlqlPRzOnhD4kXZSFn953L1szjbEz/xrcwRd26pFxVGhlvUyDlo/k+QwgNachN3W+npPgo73johTtUqr685V8lj1kikUguCB07Vqjbwzte4JlBsKJkn67818Z1Ggdsl8WBrAO+7XHjYOdO2L27jF6ClnWgg46qjW6cDuw5KzQMAdVltDp3huuuEwIfZ86Uf53kZLHGPHAgACX2Esa2GUn3hq2Et7xzJxiNtG3WzX1fBYXODToDMKnzJGyGWL7et4yionSfy8cMGeP+7DBAzK+/wa5dPucNa3sTI1sOIibUoxxjDa8HXwikYZZIJBc3gwdXaI3523MbxQfngz3Y/FdvScxgJTILbYW+7QkTRER5OdHZjUOhviXgKf5xen4ni8BkgOLiE6XHHn1ULAM8/3z510lOFoFjUVEA9GrSi6UT3qZBeCwWS2OhG37uHNFN27rvq6ISEy5ytUJMIUzpMYuVRzdxJHO9T2GK145/WdpQ4LW+Cjz2mM8wQkKacO/AeYxo3jnon+BiRBpmiURy8VJSAq+/XqE15jENB2ja3gIgZZFVkKXx0rIKsoLqp6BopkgVFBGVPXhwxUpPBndTAM6XQIENijxzgTt1EsUkXnpJo/ntV/kqPd09jW132MkqyMJqzcBgCMVkck7Rh4eT53r5UESqlOdvM6v3LHLsEew/sxOrVTv9vzdzr7bdwACff+7jNSuKgbCwVhQUneTlX58hu7ACsQUXAdIwSySS2sHy5TDfd20xIFu2VPh2CcXO4C9VGMmuDbsG1c+7Pm+w9XodXkFK7vZ114mpbFdhjAvEySI4cX4/JSUexuyRR0R94xOlnvQ1na7R9Lum0zVCtvTRRwHYfnI7jZ6LZX3at1gscShnzwqPOSWFEQ36YbKD4gCT0URifKL7OnGRcey56xSJrcb4BIFZjNrpAEtIuDDMfpYpQkKa80feSV5cfz/Prn9W7PyTTWdLwyyRSKqWgwdLC0ToYfx4ePBBfX2Sg88j9mZB5tfCg1XEtOv9K4OrWvv1vq8DtnVz/fXiBaNDh8pdpxwyi2HuD/8gO9fjBaB9e1HhqXtp3nCkRbuYHWmJFNPtzsjp5LRk6lqgTf2WYho7JUUoglkslJiNOJy1jBU/1jLCEkFoaEvOFRyjpKT0haagRJviVOCa5jf4miiDwUzHxkOY0G4Ir258oQK/RBDIPGaJRPKnweGAtm1LJSsvNJUwzEdsZzQP4MPZflJ5/HA677RmSvp0nr7Sjz5ER0PPnoHVy6ogStgBHMzJZfnud3A4PGRIFUVIdK5YAcDJfK+o89XL4elSUcfVR1bTq2E8MRGNMZtjxN8gIgL69GHlyV9wGEBVRIBYSlqKzzj+sWo+/1zxLwoKD7r32VRtkQt3e8ECMd3uRWhoS25KuIlYy4VJjdp1HvZWfxlmN9IwSySSqsMlohFAYrHKsFph/foKd+8RrQ0gcqX2lMfZorMB24HoGOWlXe0iPV0ocu2sYOUoP/hb027XaBBf7f2C8/naCHEeeACuvBJOnKBxhFfU+YETkCeUuUrsJaxLX8PASzphNjdCURSRvzx4MJjN1FOcOVmqmKp3BX95MqhFIlsz/2Dj0e+w28uZWSkuho8/Fh65B0ZjOM3qd+eWLmMwXgDvNscG2TWYDi0Ns0QiqTpcU4/XXnvh71VSAk88UeHuDYzaKVtXak95qF7uq3c7EPWcS6k+xiQ0FN59t/L1ksvhvkGPcSQ3m+W73tQWlbjnHvEyNX++b9T5CdyBX1sytmBU8+nWsAshIXGQkSHWxocNA+DLU05lMAVQ4YPt7/mMYWKniaimhny9fzlFRWmAUAjzxN2+4w4hHzpvns91wsJac32Xa2kYov93KBeZxyyRSCQVICIC/vEP6BFcupI3+V7rmsEGcVWII0fEXLLzge9jTBo2FMbv00/BuwoTVGjNUxVRbZr20PihNKnfkzVpP2G1nio92LIl3HorvPEGWRmH3LsNKmRFGt3FOlrWa8l/kx6kW+OemM0NxBT42LEwfDgAe8+XTk8D/PbHVp9xWYwWpvW8gxVHt3DImTp1vlhb0tHdjogQ3vzq1WIt2wOzuT4N6rSiQSg1bkirGmmYJRJJ1eGayv7f//T3ffZZGDOm/PNcJCeLNJ+BAyuUx5x8VhvRHay0ZoVYtkxjW/16edddJ8pA/vZbldwyyhKlMVhRligUReHN8Ut5avjz2tQpgIceAlUlcUVpKcoQOyTW6QLh4WLcEQ25qu0QYiLboCgGETz27bfu4LESm3b+16poI9FdzOw1kzPFJr4/sJzi4uOBZyFuvx2aNCnTawZqPFirqpGGWSKRVB2uqex//EN/33/9C777Lrhzi4uFp/b007yx/iVGXZ6tS1YTIMeWr2mfyQ9CAcuFXkOwbFlphScg3ASRJq9zrr5aqGtVUU5z98bdNeN0VWyKrx9PZHhbCoszsJZ4eKotWsD06fQ/YiPULjouPZlI/zF/A6DYVsz7214lu/CUUPsCyNLmcJeoJaUvAwpY0QZ1uWhUpxEfT/qem7vf7vuC4E1oKLzxhl8hFIslONU1PXhHk/uLLr/QSMMskUhqB599Jry2YPj1Vygq4o0uxcwcBytao0tWEyDE6/EXagot40xfFKBFeJAnnz0La9cS45Gqa1ehkfftGjQQEch16gQ9jkCUOT0MZBTa+dvXM/l695vaTgsWwNdfOwWogem3iXVeYMMfG3hk1Z3szdyP2dwQ0tIgNhaWlM40qF7T8KrDIdbO/TC81XCiIztjs+UQ5f2S4s3ll/utAqYoCmecAebh5V3jIkIaZolEUnW4prK/+kp/3+uug6eeCu7c5GQwGFiq7BFWUqesJkCdHJvw7py2pI4leIMYHwFNwqCeufxzWbcO1W6nvochziyGWAv0f6uPplIS770n1lSrgDMF2hmAM3mZ7s/x9dtSRB0+++0VHJ7VmMxmUo+lYnUauatWTHOXtUw+kkyMBbpfMgSDwVSaqtazZ9mDcKiixGRGht/DPx7ZzGM/P0lcmN/DWs6fF5Hr33+v2Z3jHL6liqyZQTFoZhoMSvWbSWmYJRJJ1VNF66RlkpwMPXrQoG4Tze4GEQ2C65+ezuk6aIy6d/5uIFzOWRlVDrVceSW2w79h9njanioS6cNHszaz6sgq7fkOBxw/7m6GGEM0a8UhxuDCkCcnTNa2u9/k/mw0GJnS817Sz6fx3Z7FmvOWbHlbiIQAVntpWctfjv5Ex9hWxES2FwdXrxZefufSaHZFKIuUtg0GUWLy9df9jrHQbmX5oY1EW8CzLoVfwsPF3/3hhzUBckUO17XK6R8kfgVWqhlpmCUSiS8OR8VqHLvwUJKqcgoLxVT20KFk5mdqjFZmfmbZ/Tx57rkLM7YysDY0aYKtC+yQWwKtoyL4aOdH2pNvvhmGDHEbn4qmZz0z/Bk6OQOv/9nrTp4Z/owmv/z6hOlEhTbmw+3/00xB787W5jjvztxNYUkhh85spGvDBCyWRmJsyckiTcpDGMXhM1ZELMDChSIuwIsJHSdgMMehqmAo7yXHbBayoFu3amZkzpfAb+eE5GhVMKP3jIDt6kAaZolE4svkyUKRSq9xdgV/XXll1Y/JRWioKG4wZ07pPj3pMqoK57xSoyqablNev59+gvHjsWbsJMcrDup0MQxrcRkrDiylsMSj8lRSEhw+LAwQ4HB4aWw7/Ec6+6OdU/vkyR7/FMb+ySfdx8xGM9cm3EVa9h7WHvnWvT/9vEdZRkW0t2RsIdJUQkLcQAwGCxw4AH/84c5vdo/N6wexY4e5c+HUKb8VtMxGM9N7zSbLWaK5XLGQG28UkeCPPFK6bALkV6GezTPDn6GeM5Pu3gH3iheaakYaZolE4sumTWKbFVzlpGpFUUThhebN2XZym3Of2Ljb5fV/7z3fp58DoSamayzlHP/8c2y/rMIeYeSsVXv+mWIY3GIodQz5fLP/m9IDV10FJpNbbERRvKaHA0l3evGVswbE+tNbRMnGl16CgtL87ck95vLokMfpHtvIvS8jT7senJGXwaVNuvPx1e9yaYvLxc7YWDE9PXZs+YMYPhx694aT/pcKZvSaQYbT261XXmlLk0l4zTt3XriKXECXojrE5Rm4qv1VF+wegZCGWSKRVB2VyGNOXfAv5s/p7g42KpPHH4dvhCFzqA6N0XKo5XiT2dmwb5/vftc1rrpKY7gqhcMBy5djHT8IzGZhmD0PA32aj+HGjiNoGhVXeiA6GkaMcIuN+EQ6+xMg8UPqsVS3Rz/u28mkzhwrXrQWLXKfE2oOZ2CrCVitp9zymMV27ZRzsb0YqzWDmPAYIsPjS8c4YwY0a1b+QBQFNmwQ6mJ+aBjRkDz/WVX+mTRJrDM7RU+819yDXYMvi9RjqWysl8/JCAdJS5LK//d4AZCGWSKR+PL00zBokFCk0kMF85hTj6WSeH4BD8ZsZ+jioWU/DPPzxXTsunUAFNm0C4tWezke74IFIljp+HGMitCtdqfqGIAffhCRv1XBpk1w8iTWkb0xmepi9fPOEB7Wijl959A9VhvExnXXiVKLGzdSP0wrnuLdLouUtBT3C4fVUUJK3WyRcvTf/2rWmkND4/liz+fcubzsetT3/zidfWf/wGgMFS8cixeXGWntd3rfYBBLCPv3+zmoE4NBSLG2aCFu5zW1b1TKiyILTEpaCnZUVEX8e/JXiONCIw2zRCLxZeJEWLNGTH9WA0t2LMHqEEa12F5ctgrX+vVCIzsxEfA1zMU23wAjN7m58OKLcMUV0LSpW/CjjWeW1KefivXLqmDZMhyhBmx9O5YKYXgZLZMpCpOpPgdPr2Nrhod85VVXiVmBHj1oWa+lpo93uyw8ayEbFSOJ8UPh3nvF+vUXX5QeM4ZTpIax+dh3bDmx2ec6FgNs/mMNBQ5nvtfOnXDLLe5qVEHz3/+Kl6I//vB/XO86//btMG0aVlWrNlZgq9yMR2J8IhY7GO1CPtTzd6wupGGWSCS+rF8v8mn1Tuu6vBed63+7M3cHbLtJThbrjAMHira3oTMEUJl47TUxle0UMQk3iv4hng7WxImiLrKqipzqsoxIMDRvjnXW9VAnEoulMa3rt9YcdilxhYQ049/J9/PIqrtLD9arJ0Q1LBYSWyZq+nm3g8HmcM4Vjx8vVLS8pE9v7HEP9SzhvPjLoz59YyxgUoxcGu9cX169Wmy9Ar/K5ZprhKe+cKHfw9vPwRY9sYbHjwvxEq+ZiMoqdfVv1p9VhwfyxN44Vk1ZRf9m/St1vYogDbNEIvHl9tvFdHZZ05UBSG0K82N261qb8/Z8vdtukpOhTx+oUweH6hBRvx6Uuf5aWCg8tpEjRX8g2oJ7qtdHHvPIEfH9Bw6EgwepELffjvWxuRiN4RiNkaXKWyoYMPDq2FcBCA1tysAWiRw4tZaMXI/fOysL5s2j3tkC9wuIAYNPJaaymPXtLHc/B6poG43wt7/5qIvF1GnFmHZXs/WYryRqtAXiozsRGerMEU9Odgff+aUsu9iqFYwbJ4LGinz/voV2/E73l4lTDSzEa31aj1BMWfTPj+aBA41qxCiDNMwSicQfhc70nSADjVykHk8laSrMS1R1Bc60jWmrUeFqG9PW9ySbTYzLWWJQY8ScFJVV33fjRlEJyektq6qDCA9j3MRbeapVK+EZ5uaKtXa9dZLT0nAU5lFSkonF0phdmbuEEpeHoInrt1UUI8PaTCLaovLZzg9Lr2EywbPPkrgpE7MDFIdIL0qMT4RDh8qteb0rc1fZ7U8+0aSbKYrC9d3/TmyohQiPGQSzAlFm6NR4kNhhs4kqT3q9ZRd33QWZmVVT3lJR4PHHaZar3e1dtrJCLF8upsprCGmYJRJJlZGcvoZiI9gN+gJn3OurilfbE5MJduwQUdnAJVGXAGAEwpzGpEzxjSFD4NgxGDwYgJISbRpYtAVCvZ+GvXuLdXaDQfTbuNH3umW9t0yZQsn4IaiqA4ulMT8e/FFz2KE6uP/LO9ztTnFDaV2/Fd/v81hbr1sXRo+G1aux43pvUcFhh169ICZGTE2/8IL4XbyCoAJGcx88CC+/DL//7t7VuF43ZveZQ2MP6dBoZ/pS//grxIddu8QLjvPlSDfDhkGnTiJdzZuKzECPGEHns9pgr06xnSo2tlqENMwSyZ+VwkIRpPPDD9V2y0HNBuIwAKq+wJlT+acCtjUYtI+tvtHQPdDs7pkzwjuNjXXvslpLve08mzjc2F8Ni06dRAR4w4aixKQ3/ozJmTOwfj3W4T1RFDMmUzQrDq/ApGjnyw+fKVXYMpmiGBg/mqzc3ZzK8/ju111HSngmDiNgAJvdRsqRFLFOe911sHs33H23UFr7979Fn+Ji2LuX6LBozfiiw6JLG7NmiVrHHhWbDAYzYzrcTGxIqdRotAWK7TCkpXNNuls3OHFCBNBVBEURgWdff12x/n6uN3bC/ZpdVeIxJya6o75rAmmYJZLaTnp6xdY5s7JEWktVpf8EQf9LnBWAVHhh9AtBr9HlFudqjEhuca7vSSNHuqeibQ4bHV/pWP6FbTaR7zprlnuXqqpYrafcs/QlDlFUolEo2oIOLlq2FJ5lsMbom29QVQfWIUK+0mq3svboWro16qY57cZtNo1M5YSus/l0whKiQzwqY4wbR4y11CN04CAmsiFcf70I4jpwQPz7WLwYJjjTnX75BTp2JDPHS660wEOuNDpa/Lv48EONLndoaEshjelaezfjVuVyExdXZgUsm/N+pwLJY7ZvD2FhmmUS7xQnPSlPWbER7kITBsVAVkEViOJERVWoxndVIQ2zRFLbadEC2vpZc72QvPSSEHJorK/ebeoJ53SvAWZ/OzvoNeYSL4Po3eb8eVi1SkxnA1tObGHvmb3iWKAp0M8+Ey81I0e6d9ls57DZ8zWCHxlFQqu5qOio/+uYncZyxQrCvDKywoxeC9TLllHSPg61VQsslsaEmEI4PPcwy25Y5j7l3ibX8sy3xfBtqRRmbFQHIkPqUVSUVnqtqCi29demR23L8FI3a9YMpkyBhATR7txZGG0DgX+bu+8WxvGFF9y7TKYocr1+erdhtlrh2mvh55/LvKQKpJ6BY4VlniJYu1bMRhw7BkC4WVtD07sdiER7M0JKVIwYCDGGVE16k1xjlkgktY4xY+Djj3XXBn5odWk9Zbtq5/6V9wc4Wwdr1og1VGf+8uojImUnoLaywyFSnjp1EnnBTqzWkxgUk8YwF9jhnBWKio6gBlIP69+fGIe21mNMeExpo7AQVqzAetVgFIMRi0UItDSu05hLoi6hj9M5vWrkHPHS41HLWFGMHM8vYu43k9mWscm9f3c3D1UwAqSSuWjYUERel/d0b9EC5s2DAQM0uz2LQThUSlW5Nm2Czz8X9aUrS7NmQmzktdcAsDvsGu/e7ghe/Lr/7hxWLVJ5IrdPjaU3VTXSMEskEl9SUuDOO4XSlg4OnzuibWcfrrrxhIS4ZRhXHVlFQqME6geqh/z11yKa+oEHNOvSVmsGZnMsdo8ocBBes8NRpFl/9iEykrx6EZpdeda80kZICKSkYL1hFGZzAxTFyOxvZ7N833JSj6WyLQ4UFYa+P4LUf/8Npk3TXCuufg8OnN3Psp1vufcd9SwqARw9X4ZXXxEefRSuvlqzK8uK+3fRyIiuXi3WiIcMqfx94+NFoZM33oDCQmyqNufJu10e/Y/DAwU9q84oX3nlha2QVg7SMEskf3bMgaxXGcycCa+8ojuPuUmEU1rS+WBvEtmk7JO9sBg85DG9SU4WRjk0lCJbEeuPrWdY/DBiAskiL1wo0p6uv969y2bLY8OxFP723b0+p58rAaOxDoWFhwKOs16YR6SZ6tU2GLD1aI+jSSwWS2OOnT/Ga5tf40DWAZbsWILNAKriVDdrkulThathZDydGvUjNe1Lt+53dmG25gUiu1CHCkcw2W7Z2SIIzLne7dnljOe0/erV0KOHWJ8ORLDR1XfdJeIgPvoIi0FbvcK7/VdDGmaJ5M9KbKzwFv2lppRHOTmyZZGWkyae7M6Hc9q5tKD79qoHnev6OaCqoorR1KkA5Fvzua3HbYxvfwX1Ar1zLF0Ky5a516VBeMtf7v2SzaecnryXETleYMdmO++TTuXJdZ2v89+22+Ef/8C6XUyzWyyNWHFIyFaObD3Sv7pZWpoQ3PBgaJsbyC3OZH3a9wAUlGjV17zblWbzZvjXv+D999277E7rnOtyXAsLRVBZOfnL3qpbhkAmJjERunaFF18kro52uj4uMs5/n+pCrjFLJJKA3HwzXHaZ/n6hoWKN1SVfqYPU2CLmD4TUzCDKKHrgvTaod0rSL4oiClfccgsg1nRfHvsy/Zt0FhHE/rxCux3Cw6FLF83u30/8TOqJndzR924/nWD0xzeTWXCWwsKyp+BzinL8tzdsgP/7P6xHt2I2R2MwhPDjoR9pEtmELg27kH7+qOZFID0nXaQO3X67puLV5R2nYFQsfL93EeBbMavcClp6GT5cTNs+/7w7F/qcMwDMZaDJyBDnDB8e8FLeeeQOb71MTxRFqKs98ogozOHx29QP1RERHerMc4uICHzeRYQ0zBJJbWfJEqFdrZf8fBGNvHSprm6px1IZOvIEDyZB0qopuqQ1LUaL5gFb2RJ8gCi64CHhuCdzD3aHHav1JDZ/z/1164TetZdal91exJe736NYjWB6z+mEoE3JCTeGMzg+kQZ1E7BaT2K3B7G+7ukgLluGPdyIrbcoWmF32Fl5eCUjW49EURTC7drHbbgpHG64Qax/e8xqRIbU5arOf6NHg+Y4HFZh3DxLWwYydoHGV+Y5iihusXevu5zm/lxIzfJ452nVSrx4jB4d/L2DYexYuOaayumBX3EFvPqqiImoKsaMEUGDNYQ0zBJJbWfHDkitQE3Y7Gz46SeYO1dXt5S0FIoNKjjXQvWUvcsp1nqT54vOB3/jsozI1Ve7A5TyrHkkLEzgsZRHsVpPuj07Df/5j0ivatVKszstawvr0tdxVedp1A2ti9Hr8WcxWfhowkdER3ai0FbE8axN+EMjYKF6tJctwzrmUoiog8XSmFP5p2gb05YxbYQ4h1qgzSFSUUVO8MiRwjB7KHfNHfgUQ+MTKS4+TqUIVlH12mtFlPazz/o/bgtu5sN76jrgVLaLrCzqrdtcIT1wQEShz5pVtYIgZjNYam6dWxpmiaS20717xaayK0hMeIzbSDpQtelA5VBoKwzY1s2ZM/Dbb0KvGlh7dC02h40hzXqgqiUigtjboP/wg6gHHa7NhQ1TCpmccBt39LsHAIuXxxxqElOiimLh3tXPce8Pt3Am76TPkD74/QPf9r59sG8f1jH9MBrrYDRG0CSyCRumb3CvQR9Eu2598KxTNGbKFCESsmaN+5jJFEWB3cAvR74s/zcKRLCBWCaT+M0iI/33i46Gt98O7lp6yzfm55P4bjJhNjCqEGLSmYu8ZYsYd1Uq3Mk1ZolEUpvwa3iCREUl1OB8sKgBtKuDxSVm4ZG/bDFa6N6gOYpi4Jy3wpQDUTJx9mztbkcJFqWIKb3upnldURXJO1DJVTJSURSm953Hybw/uOmz4T5e/57MPaUNxdlOS8NxSSNKLuvirr1stWsls0JNoRqj5XoRYPx4oXvtoVsN8H+bPuQ/P4bb5cIAACAASURBVD/kN1J96OKhPJL8CLtO7/I5JpTNTtM+0rdfQObMge+/938sN1ekOJWD9zR7UNPuzZvTv881rFoMT6xCfy7yhg2QlyeMaVXhEmupIaRhlkgkGrae2BqwXR496kNXV3S1A5/iCrpIThZBPc5SjavTVtO/aX8MjvOYzQ38P/bnzBGSih58+ttCfk5Lxmxu5N5nUxwaQ+k5DZ/UZhz3DZ5Pdt4exn10OfnW0vXmjrFaKdCOsR1h1CisBzdBA5Emda7oHNHPRPPutnfFSdu30+Osdr29R2PnFHh4uJDF9Kj2BDC+8zTySopp5EfDO6c4h/+s/Q/bTwqvbn/Wfu5bcTff7FpI+qkvycnZoDHoQb0eKR4vKp4dHIhp3SBmbSosrXnXXSIXeR21QyBkxw7dldWqEmmYJZLq4rPPxMMvJaV67ucS1TAGrzsMzlrIqlc7SFyP9nBPL++f/9R1fw3JySKq3GzmbOFZtmVsY0T8ZTgchVgscSgGrderGPBZU7farbzy6xN8f3g1ZnNptO/IEGdwj/O7jms/TtNveLupPDDgHvad+oXZ35V64E8Pf9rdR1Hh6cQnwam/bTCEYjLVY9XhVeSX5JeWr1yxAjLPaL+b59BdkcXWUi97UItEDKaGxFjwsaxbZmwh+75sxrcfj9V6ij3HvyD1wMs8lTyLMR9O4Kov72VzNqTna75i+eTloXhlyikqwiiHedfG9OWqNldovtf1Xa4v+2RPnEsVEoE0zBJJdbF2rdj+9lv13C8ujtSHpzL/f1friqz2nn7WPR3tOl1BPGFuuEFfP0/eekuoUwF1LHX44aYfmNh+KKBgsTTyM1bEtLAHn+78mJKSTCZ0mY7i4RXekdsBFDA5YGSrkbx/zfuafhZLA4a0HMPCUY/w2JDHNMcMntvvv0dt0YySU3uxWBqhKAo/HvqRSEsk/VxFPVJS2NBU+9U2HN+g3XHDDRrpUKPBSGKb6zSOrAu7vRCTPQNrfio5ORsZ1Kwny27ezPzLf2Ry7yeJCGuOCvxRKKKrg6ZOHbzedTCoBF3m8eWBT4kPZfymZeLvS/6FkYZZIqntzJ0r1iF1knr8VxJDPuKhnS+SuDgxaONcVXmzdV3iH337iu3SpRqPMCj693fLcFqMFka2HknDULPIE54xG4OrULET7yhgVVVZuPEZWtRtxtDWEzXHkg1C6tJmgLXpa/3+PmFhrRjUrBeXRETiUB0s2bGERTsW4XDaETuwZPeHlNRVUOtFYbE0RlVVfjz0I0mtkjAbzSKiee1aio1ovMliu1c1jFat4Mcf4WRpwNm1XW4RRSWc/eqboWMkZGevpKBgPyZTFJGRfahffzj1o7oxpOVIHhr8ED/epK3/rIdQs9YzDjWZg/73tzPXqZoW4Dctk86dSytk6cEV5FfXnzrNxYk0zJK/LhkZ4k394YdreiQBSf3nJOb/s5++hxzw7uY3sdqsqKhY7VaW7FhSfieqwGN2GpEmnmuj27bBxIlwzTWanOSAfP65MFROXvj1Bbaf+BW7PReLqSEsW4bRa13UaNBO268+spqT53dzVYcJhFgalB44doy9jtPu8VrtVr9pYSEhTTEYLBQVHeaHgz8w9aupLN+rDTLaXZCOdfwgFIMZszmWfVn7SD+fzqjWo8QJW7eK4KTynrY33yzW4z/80L2rZ1xPTnnY7w5RYpkgLKwt9esnERXVj5CQxihK1T3KFa/fUDGHBB0MtenkFgzO97iyftMy6dlT5J/r5YorRLpZVeYx1zDSMEv+uuQ5iw+EVEAE46uvYOPGqh2PH1KPpZK0aCjzVj9M0pIkXcY5I/dEqYemwsnM4AtKKEBoJZ8O9SwQ5nrG9+ghtKu//RbGjfNfHMN7NvPhh0X5SSAjN4O7f7ybNYe/AsCyPxPOnEExGEr7Kb6R1naHjaHNEhjZbpLWeP3rX3T45YD4rApv3F+KjqIYCA2Nx2o9xahWQ5g3eB4n809qxno0UsU6tBsWS0MUxUDdkLo8OfRJxrYdK07IywuuIEKHDmJ2QVNxSiHLwzDvzYEt2RAR0QGjMfjSiHrwFomxGIPXWk+M6U2IHYyOsn/TMmnRQuR16yU2Fm66CS65RH/fWoo0zJK/Lq6AmybBF1pwc/XV0K+fvj6uFwAdRSVS0lIothVjx6HbA0nzqkqUdjj46Op2USK62lSJpT+H6uU1z5wJixaJYghjxogUnEDs2+fWZk5OSwbg0ri2mEx1Ma7+BYAmXhrLTaK0f8uhLXozP+lJ6oQ1L9154gQsXUobg1iLbnEOVu3rR/9L/P89Q0PjURQDhYWH+Xfiv30KLBRHgqNLO3eaVFxkHA8NfsidlsWwYWLGIBimTBERwR5xCJ4LCdn+BFWqmMgQjzwrFSKLgp8x6d+4t0h72lhHf9rTl1+KYD+JNMySvzAFzmIAhwJXE6oy5s8X3tOMGUF3SYxPxOH8v9Rgd5C4txDOnQuq7+EcbXnAg/Yzpd+5HMKdnm5lDHNmMTQIAYfDw+WbOlVM1f76K6xaVf5FPPKXG4bVIz4qRhjAlSuhQwceSJynOf2BgQ+4P684tILsvEMoigGzuWHpSQsXgt2OYZyIwj4dCV+dSIH77vM7BIMhhJCQphQXH0NVS3xqB4fVBYxmzOaGFNuK+WrvV+QWO186HA4o8bCm5dm4SZPg5ZeheXPN7l3nhbesh4qmLmmUzYAejboFf1OTSaQ9FfXWn/a0a5du+dg/K9IwS/4cjB2rP7IzyxmuWl3pSyaTyMnVkb70++lS0YkSReX3hU/AdR7VjQLUS1a8GyqaCkIXmhOF4k9SVORVP3jSJDhwoDQC2V+es0soxDkFvPrIaka37IdBMQrDPGQIzJzJjF6lLzmTu052tzNyMxj30Tje2PQ0ZnMDDE7xEIqLRTWnyy/n13BRTrHQCM8OhPv2vwqZmX6/S2hoK1TVTlHRUW2KlgLRIQbM5lgMBjPr0tdx9SdX8/NRpzDKpk1Qv36pUEp5xMbCHXeI7+5BTol+b7miQXztYtpp2636Bn9T1yzU5ZcH30figzTMkj8Hp0/r7+OK5mzdumrHUhbvvy8s1U8/BXd+Xh4LVjxR2lZgwQ3x8Nhjop2ZKR7kY8YIucQsbV6Mjz6C0RC0x1xZwS6AIgdkW6GoKA3V2yi4dI1XrYJLL/V/gcGDwWjkdP5pMgsyGdy0M0ZjBCZTFNx/P/z977yx5Q336R/8/oG7/fLGlzFjZXy7Ue4pZkC8hJ0+DXPm8P5JUZIRRfz3xqUmaOARIOaByRSJ2dyAoqIjGD1eecIMEG40YLEI4ZIfD/2I2WAuXVtNSREvTx07+l60LIqK4M03xaxCJTB4BYR5t8tie4ZWinL7qR2VGodEP9IwS/4cjB6tW0jDne/qnC694LiCxfbs8X+8oEBM0e5yyizu2sXZM9oiBmcpKlVgcjhEsfn9+2H6dGjUSBREcK5PFti1RjjP7IC//73Kvk6ZeBj1E4ViKrvMYgyKArt2YbBp+xkMBli8GICGEQ05c88pxrQaIIzs4cPuF4y3t2r1m9/e+jb51nxe2/wakzqOIK5OE7fRBGDUKPH7Dh9OkaNYm77kKBG/6SOPiHVeL8LCWvP/7J13nBXV+YefuXUb29ld+kqR3gSUBaWKLXYUjQWsWKMmUZLoLzGJiQWjMWpMLIhBRKOi2KUsXOoaEQERpLPUpW1vd2+b3x9nbplbZy4Lis7z+ejdc+85M3ML857znvf9vj5fC20swaVrrk2UtvQb//k75jOy80gybBmig8Mh0oAKCiKOFxNJEm51JfAtWawma9x2LCb2majKRZ/YR0cKU4uybbFihfYxBhEYhtngx0Fzs6jBe6KYODF2JZ5Y+Jew/kefTxSff+QREeSUkwMTJghXK8CQIZCXqz5GqH+6sBCeeAK2bxdC/tOmQXm5So4y3wbm0DGyrD0QqRWo84iCDDHrG48bBwsW0C5sId+uTTu1O9dXjc1sFQbw+uvFBAQl2CvEoLfPbM/MdTOpdlZzY/9LAnWRgeDn3qcPmEykyGoR6ix7lvA6zJwpXLH71JMJm60tZnMbOoSk+aZZoNEDZnMqFfUVfHPom2CalNstRGVCJ35adlvsduHuf//92AFyn30mqofFYVSXUXHbsZg6ZCqnSyLC+dnT/6jaLkiIP8AxiRrgSecx/wgxDLPBj4Onn9Y/xn/jfe01/WPffRceeEDfmOefF4/PPCMeJUnciB5+WJQpvOceccN9VFFPsliERnGoWzmai1mSRA7oo4+KSGal2IBZhh4Z0CdUNvrvfxcG/3gGvIUZn5SUrni99bhc0fdvGTkSX36IWpcMvhphdGRZ5uxZZzNv46uYTHYsTWZRtGD0aACmjZiGxSfGWE1Wpo2YxuoDqxnV6XR65XZWu7FvuUVEhiu4JbV7vdnTLFzZH38svo+LLoowjKmpXUmzhIinSFClaKb4I8cDhnnNGuHGDjHMLVrnjtdfLyabc+eKFLDQbW0PIqYiN1dMMm6+WVWZyk/XnK5x2/G4zNwPgFvP0lcyNDD50SskA0KWc/DgxP1+AhiG2eDHQTJau/79xGQCVV58Uegf66CsIzx2JpR5ysUTkgQffCD2ir/+Gp58UrjkMzICY+pa6lQ35fB6xxGEBMClWAAJ0kM9/FdfLVz+/klCa9LURLSqEnZ7B0wmO05n7Dxqp+RTvU+nLG7sm49uZvGuUnzuSmy2IqTly4Vn5OyzAVHwwKMoav2y5JeUdCrhP5f+h/eueAUgaJgPHRIiFCE1dptQ1xiubVGqSA0cKHTNN2wQn1dILWK7vSNuH1hD7px+w/zzfj/nm9u/YWCREsVcVCQmXSGGeV0NrNcSVF9SImIfZs2KjK62mkXK2V//KtTC5s2DzZvFizt2iJiDRx7h4E51taqDUUpYxuJL6QAAZfv/l6BnGP5gxGef1TcOhBZ3SpSKHT9BDMNs8ONACRTShd/tFiPgJy633y72KzVStreMcVPgwbNh3C2WoFDI6adHaDuH0uJtUa2SI2Qcw/B6nTQ376K2diUDFE+wKli9fXu48kp49dXEecR6mTs36oq+tqWOlJRTcLkO4/FEP6fFrHYrWyziu1m8azHZVhhQqJRTLC0VN29FpjM0+Gv6yuk8vUp4TixyPRZLJmZzunjxpZeEa1mrOtR558ELL4g9/zVrAk9LkomDYcJlTV7/axL9C/sHg6yKi0WgXn5+oK8vpH9cJEnkNDc1YTapb9Nmk0VsfTz4oFjdHz0KN94oXjx8WHiCHn6YogUrVeOKMorQQtneMt73CKP+s3cv1a04lzQLFkDZCTrXDxzDMBv8OKiq0r/H7Ff+8q82jiOOcgdOxf3pxKNdKERG7RqOYvi83maam3dSW7uS6uqFNDZ+iyx7VAYkLXTOcu+9UFcXCK5qNWbOJNrU6NK3LgVLIZJkirlqbnKrN5mbzOK7XFy+mH557Slq0wGrNV8YyjPPDKys5m5S573ev/B+Snd8jttdFVwtu90id/mcc6Bnz0Bfc5jPPSI4aupUsTUQJiQT+rm6FQ/BN4e+4eYPbmZ3ze7gOefPD/7G/OiJdn/oIfjiC2xmu2qczawWOEGSgqI1JSVipV9dTeYlk1TdMlPUpTBj4Sh3iMIVgMvr1ieraVEmWAN15D77MfKYAxiG2eDHwb/+pX+MP3hm5cr4/VqBmpaauO1YePFGbfuNcU3NCqqrF9HYuBFZ9pCW1ovs7LFkZ49mX4itaxfqITzjDLFSb82b4M6dsGQJp5rVq//2Ge1ZunspN3xwC1ZbB1pa9uHzRe4/9sjtoW7n98Tr87Jk12JGdewXkLvktddEsJxCjVP9OUpIDC44BZCDhvn994XaV7TVcojBi5rnq+zXM2cOvPceAJ6QMdXKW/loy0e8uu5VUv0FIL76Sqy65ydfTMLvAUo1qSVjU62Jyy+SlcW6FPVnE54GFYsxxWOwe8DsTUJW0++KnjBB+xiDCAzDbPDjQEMR9wjSFTdnMsL5OnFs/ERlBBy7HLqPYTcJicuamuUBYww+0tJ6kZMzjuzs0aSl9cBiyYgY29YepuL1zju698jj8vXXkJZGU5raiNjMNp6c8CQLdixgf5MPWfbhdJZHDL9j2B1h7Tupa6njwu6jGd5hCDabIr05ZIgq7/mbw+oSmpIkYZFrMZlSsViUakMlJfCXv4iAqRC8YctXrxzD4+L1ij35a68VgWcgKj4hos5BpEkNLhpMQbqSFuWXlhylLRI6JqWl3LC4SvytXO4Ng27QNHRin4lBYRm0pz2VdCqhdG46jyyB0svn6VPwCs880EOfPsJ9b4AlcZfESJJUDtQjqqB5ZFke2hrHNTDQzNixgZumZnKVVKSRI3WfrqwjOIphzN4yTTeuAwe3QYjNOlB/QPO5erYR+bJBZNLSemO3twvuoSZAkqAwdNXsl3z0evXvzUfjiivggguofKZArM6VScDRpqP8uuTXXNP/Gtq3aU9dnRuns5zU1O6qohKVTZVIPpBNQgijsqmSnNQc/nXeX3E6y4Wk5uzZYj/+/PMD4zw+dQCXGXC7j2C3dwk+2amTcAtHQ0v6ktksAqyGD4eLL4Y7ocELbQhGWZftK+P+kvuDYxwO6NcvufiFUIYMYV2BeiWvdeU7dchUeO895u6Zz8RfvKAr7amkwkLJZqCdDtUvCMqPJrNX7M/fN2jVFfNYWZYHGUbZ4Huhtlb/HnNoPrEOyvaWMeJmEcg1+rXRiYNjvF4Om9Xu28ONiZXKPJ5aOqcFjfLuRvi6GrKzR5GW1l2zUXb5oMYFRSmoFbhWrhSu2mPdY/eLSqSlkZ+idmXnp+cjSRLt27RHlmVe+eZTlu5aSEvLflW/vLQ8ZGV158NHXloeR5uO4nIdFHKXklkEO81QC4qYMKk8Ebk2E7Lsw25XVtjPPx9baU3Poq6gAD79VBgeH5Q3ws6G4IrZ4/NwbnclGNDlEp+tUoBDhV7t8exsHKeYVGMdux2ah099ysH82TB1wI36zut3++utvOaPek/Gg2UQwHBlG/w4SCb9x5/HPHOmrmHTV04P3CTdPrdox2PDBs1GwOOppbHxO6qrF1NTs0xUZ1LGHnBCi745RGBshRNsJnC5KoKv9eghoniPUWGKG28U+6nAxF6XqYzPpL7BACSPz8MH2x38deUzlO1S729XNilyokrpxsONh+n9XBdmrX1JuLG3b4e9e2H8eNW4cPdzltWLJFmxWHKFWMgDD8TeS9drJHv1EvvVCqF1kvsV9GNEJ8UYffWVSB0LU5RLViKzrT1Hda1t045xFa4Ff8qeXv15/yQ3POjNQBetZZhlYIEkSWskSdIhE2Ng0EqE3bA1UaQEB+lUGwp3Qyd0S69cSZuwAgShpfU8njoaGzcHjHFz8w5MpjQyMgayuhr9BiQUZWyNG5q9qBW4Cgrg5z8X0dkaK1ZFUF0tgqK6dwcgKyTyV0Ii2x5U77Karcy7ah72lFP469IHWb8/WNghLy0vcK0yMvUt9aRITXTN7SokNf2VqJT8ZT+hAVsSkGX1iXxnSRKra6dTFIVoLUaPFnfNsO9kwx0bgtHSZ5whUqzCrtUiWeK2Y3FR/8vV7VMv0n69/pWrXgObkhLc6tGDX4v93//WP9YgQGsZ5pGyLJ8GnA/cJUlSRMSDJElTJUn6SpKkr47EqOBi8COjokK4/04Ew4fr3yu1WoXoh2mVrlzNMaeMEVNROaQdj5UraVbEPgL4mkKM8VKam7cHjHFu7jlkZQ0nJaUz3pDzHCsVzeDx1OB2VwWfvOceIQrx6quBp0xht4Xwtoo33xSu7JtuAuCsTkGhlxRLSkREb05qDm9OWojFnMo9H13J3tq9AHy27TNVvw+3fEieDQa2O0tIai5aJPaKlQmAHxk58LlmWkWdDputSGxrvPCCWLX27x/vY0mOeN+J2SyU2DLV6UlunztuOxaTB9+IzQOSTwTTTR6oI0Bq3LjgNenB6RQpiHrJyRGP112nf6xBgFYxzLIsH1AeDwPvAxERA7IsvyTL8lBZloe2PdaACIOTg+7dk1PVSknRP8OvqNC9x7xy11JG3Az/V/se42eN12ycv9inVP2Rwtqx+Mc/aLKLf2ydUmFQNpya0RzTGJtM4Xmq6manv3fi4jcvDrQ3H93M3tq9yAkiYY+0gCRZcTp3BZ887TSRF/z888lpjc+cKXJWFSnF4V2CgXS/OOMXUQPjOmd34bHzXsMuNbFy9yIAtlRuUfU5VL+bfvldaZvZU8QCbNkivCJxfhe5NvDJQtOajz6C3bvhF7/Q/570oHzkgZiBlhZxzih65BaTRWXQLSZtK+aSTiU4to3kr5vb45ji0Bcl3dysXKfO2Z2/WpvO+AvsdnGuv/1N3zgDFccclS1JUjpgkmW5Xvn7HODPx3xlBic/55+fXK5sS3x1q6iErPi0MnvrXJCEGlOLpwVHubab3ndHvovbjkCZiLa1Q8c04VLe2QC5uROCBRbiESYyMrZ4rGpvdepHU1m+Zznp1nROzTuVXvm9OLNzZBEBH5CS0pnm5p2kpTVjNiv5sI8+KlyQitGzm+1Ac2CcaEdhwwaxn/rMM4GxM9YGg7Omr5xOt5xuUaOBB3Y4l5cvmkFepiiH6Pa6VcuEFFMzAwoHiNWvJImKWQlKVubahMtekswiAOvMM0UUdQy8svoxKZTvJbDvu3q1mOSMGxeh+9y+TfugAInS1krJu19Q4vXCf3UYZYB1SgS3XsPs//fkcgXLoxqcMFojXaoQeF8S/zAtwBxZlj9vheManOx0764/qhNErd6w2sIJGTs2mDuqkcw0xe0mg08SkcBaCFdeilBiCmX5clFBCihQ0pUOOkXgkCajHIVZl81StR8/+3G+OfQNm49uZkvlFsr2ldHgih5845JygZ04neWkpys1gsN0xod1HEZ9zTJVOyrFxaJu8KWXBp6at3meqsvcTXOjGmaTyUZeZm9aWvay/EA5e+v20jakmFTHtDTGdbswGHkuScG88xjYTFDpn9NNmiT+i0OdBw43wy6NJarjIflX8g6HuFalyEYoV/W7iukrpgcmWlf1u0r7CZKtnFZSIraTTEac78nEMRtmWZZ3Aknorxn86Fm/PrnVb69euoORlo7swHyTxEUa84oB3DZl300S+6iByOAEVDVXqVawVc1x9uLeflu4ex+ADJ3bfOGqVrEY0WlEMCJYwSf7SHkk8oQvfDWDewafh9O5m7S0U8XqEoTe8hNPwJQpPD7+ce6eK45nRuLx8Y9HP3GbNqJiUwiD2w5ked3iQHtQu0ExrzslpStO5252HFkV1ASXhBBKYWoqfYqUVf8NNwR1p6OhjJNlsWLmq69gwABVwYpY7EjCKGfZs6h11gbaaZaQFeWSJeLcUQKn6pxKARIprK2FCy8U6mV68e8TJyP4YfC9YUyjDI4fnyfpOFm2TJdYSNneMsaaZ/PYWbKuveLi9A6BPT9/7qwWwlN0YipGgchnHT4cq8Yt862VW3lq1VOM/c9Y8qfnJx4Qg1ipOFf1u4qUlFOQZTdO596QASb45z+DVYH8Ak6xopyWLBFpVk51RYfDzUpgp5KTXPftmsixChZLBjZbAT/vNRabyRIwWLk2aHQ3CDe20ykmNxomanUeRS5zzBj49a8T9k+WQPUohcFFisu6pUV4R8LSpPxsOrJJNaHbdGST9pPKcnLG9YUXxKPeFfevfiUek/F4GRwzhmE2OH4okbq6GTUqonBAPBzljoD5aPG2aBbd37Dva1V7bUVkwE40VCukKO0A9fXCazByJDkxFm+hAVvnzT6Pns/35P6F91PZVMm0kdPEC0mmS4UPk5DontsdqzUXiyUbp3NX8Py5uSKSdvZsfvvZr4XYB2Jf+reLfht58KefhscfDxYtUFi+d7na+HyzGL79NuY1pqR0RZZd5FiDhiPXBrWuFiGpWVYmApjCUo+i4S+/SGNjsNrSceBo41HVe6x2Kprr5eVCmSyGYXZ6nHHbcfnkk6gBZccNv7dBbxCmQatgGGaD40fbtidkxh1Y6crChat15btbrlbdYA82aqtXW+eqoyQPhuUE21H54gsR1RpumBVbePW7V9P9ue4BWcmJvSfy/PnPU35vOd/c8Q2Pjn9U1V8v4cNkZL49/C2T35+MZGmH19uA2x2SunjPPdDczHcV61XjvjsaFtzmT4ObPDnCMO8LzemW4Ggbk8gTr4v+GdlsbbFYMilKCV5ttjXEyC5aJFJ9NGhOV7kQM4kRI0S0+XHC7XVHb/fsKURQYgSc3XzazXHbxwX/JEHvHnNqatxypAbHF8MwGxw/li1Lbo95/nxdruxQ1Sg9e8UtnrBr02gAfbIPZLCYQtrRKC+H1FTkM04n20pwEuCPEyp3MKbLGOpbRI3iW4fcyl2n30WX7C7RjtYqVDZV8vo3rzPr208wmVLUgiP9+sG4cfSuUOtP927bW32Q118XE46wVenairW4wnN12xfBjh1xldlSUrqSFmLfJSnEMJeWCu9JZpyShcrn6fJ/Dcc5RaqmpUb1W1FVCpOkmEZw6pCpgXEvXviiLu1qBg9OzlCeqezT6zXMzc36AzANWg3DMBscP05Q0fMxxWMCN2eL2aK5TN2BynJVu7ymPGq/pLn1VqipwZ3qwiSBM2yb78CvDzDjkhnkpObEP04rehNHF4/mrM5n8cSqJzFZ2+N2H8HjqQ92+NWveNwzJtA0gTr4S5ZFKs3IkXDqqapjh6ZK+TkiN4oJ2m9+E/Oa7PYOgbrGAB6fokEtyzB0KFxzTdz39E2N0BEPGEudSm56ybJnBRuy0m5pEZ/HG2/EHXuzbxBWD/Qv0Cl60qGDyFbQS60SpKZ3f9ovV6s3j9mgVTAMs8HxI8ENNSqffJLUqSTl/pFIZCOUgy51NPXu2t0xeh4DNhsu1yF8MtSFCT1p1UpOlvCj+xW8/m/U/7G/fj9vb1mKk9PbAwAAIABJREFUJJnUgiM/+xkb7ggaNh+w4fCG4OvV1VBYCDdHumHrWuqwholmmEwm4Vo2m2H/fvjyy4hxkmTiYMh2a2C1LElipZ1AUrPRK3TEkZQ3bbXG7X+seOQQj4KktP/3P9i2TUSqx6BsbxlzpA34TOgKUgTg449FaU29+Lca9Cp/zZ4tHl2RtbMNjj+GYTY4fnTqpG+PeeNGod2sk1nrZwWCldw+N7PWz4o/QMFjUf/8Xd5WvAmtXy/ciOvX43YfpsYdImShd884yT3mNmF1mTPtwh08oesETu9wOo+tfBKzpZCWln34QlzQM75Wr3xV7dxcWLpUpDCFMeuyWVhNaqOo2i649lq46CJhoMOIapgPHDiuKzYTkuqz1TpRcrqdkW1//nJYTngojnIHLrx4TeK3pjVI8Zh47DGxWtbryvYHX6amtv41GSTEMMwGx48vv9S+x+x0iqCZ9HTo21dXVHZ42onWNBQ36pt+xJ5zPBK5l5ctg5Ur8WRZ8XqbqE7S5pslc9x2XEzqi5SUi5YkiUfGPsLkAZMx2zoiy16czhBFqrQC1biAQlVzc1CqMSxa91DDIQCaPM0qY9fobgw2/vUvETF95ZURKzFPiCZ4rX+OMH48XKVBhCPJiYsVs+p7TDGnxO4cQm5qbmTb4YBBg4Ja0VEYUzwGmxfMXiFKo3XLBRB5zMcxoC2Czz4TWQVGutT3gmGYDRLz+uviRrx3b+K+oehR4kpJgb/8RZTV27hRV/DXnto9qhvsnto9iQetWwd4KcmFfCViOm4+sl5WroSOHXEViIMna5jD9yL17E2mWNSGJsUabJ/T7Rz+NPZPtEktwmrNV1KnxETl/F7q6kXn9zhf/PH222Kvc5N64rOrehftn26f2FPRu7fYny4rg/vvj9ktMF3avFnXBE0/6smF1hXzvcPvFX8oE4J7h9wp3lO0+sshlHQqoVS6gUccEqWTS/VpXjc1ndhSiiZTsPSjwQnHMMwGifHrXa+JLRYRlTvuSNxHlkXULgg39vDh+s4ROI7O/k89Rbry6+/Q2t46WYYVK2DkSNzuQ5jNmbiTXNX1Leirsh99C/pqHluc1k7V7pHbQ9X2yT7mbZ7H/w7twedz4nKJdLE3NqgDmALtmTOFAldvdZT2zHUzkWWZscWKYYrnTZg0Ce67T4iTvPee+rVo4zTkLyeLB/VErMWrzWMydchUXsy4mnN2wIu9pjG1x9UiQv2ixOUYS+jI71ZK+owywOLFsHWrvjEGJy2GYTZIzNVXi8devfSNy8xM7Ap74QXo00fIKCZJ5+zOcdsRyDKUlpKp1NX1p+rochPHY88e2L8f35kluN3VVDTrEJII49Otn6omHZ9u1V5Gs5utSNXu07ZPRJ+HFj/Erxb9GcmUGkidWrV3larPqr2rxORp6VJhgELc2F6fl5nrZnJu93PplNVJ24VNnw6//31EDe3VVbDen3nkA/LzhbxlIpKMWveFbWV4fdo9JlOtw5k/G6Z2uEikMflLTCZixozk9s0vvDBiQmTw48UwzAbHj0WL4u8xL1oE994L556rqsTj6AJ/Go3mqNW6lrq47Qi2bIGKCjLDBLtU0baJiLcCbmyECy/EfWZfQKbsQILqU3FPoz6R7PWIAKPhw2HIEFFruFev4LbB558Lg5aVRcYHC1TXmpmizgU2SSYeOushNh7ZxPID2/B4qnG7qwOCJ348Pg+89ppwb05W1wJeuHMh++r2cfNgHWIZViv8+c+QlSViC+rrlfNAU6htHDfuuBZfyDGrI6j1VHvi/ffF44YNIhpbq+TlwCTLCnz0UcQWgsGPF8MwGyTGn+JSUaFrWNmhNTx2ZgwDu22bCALq3VvkfirpHGV7yxh7I/xxrPaUki1HtqhWTVuObIndGYRoBZB1vLJq+vSBjz7C1S0Xk8lG6e6w/XIdK7zTO5yu6n96dj9h2LKyoF076NFD3Oz9aTodOoiAqRtvZHPvPNX51lWsizj+VX2vokduD/6y8iXArE6dCmXWLDjnHOjYUfX0zHUzyU/L5+KescsrxsTjEavMKVMiXzMBv/yl/mPq4C/nPqFqv33l29oH+3P0t24Vk6OHHtI2buhQo9KTQUJao+yjwcmEJIkVqp4CE/36icd87UUVyvaWMfpmE2582P8zliVTlgT31errRQS22QwffqjK/QxNIXF6nJpqJDd7m1U1i5u9zXH7s2wZ3u6dAQ1BYslQW4ucmYnLdRibrZAl5Q4lIjq4+g1PK9JMZhtYPD/26/37i2IUwMA5RyirmhM4bbRKT2aTmd+d+Ttu+vAmvjxUzumFvugFNxwO4QkI47nzn2PTkU3xS1/GwmIRe86//nX0+nQa4g1sJhsun0vV1sqgokHYzDbcXjdWs87v45JL4J13xG+5pSWosJWIffsM0Q6DhBhTt58i8+Pc2KPhL5SuQ7hh1vpZuCUfSCKoRhWxm54Ol18ugspOOUU1LlTeUEZWyx3GoX8WlGhVLHz9ddwfact11k1tLeTl4XnhcWTZzdEWL1XNVWqXtEyEuzgWg9oNUrnN45VRDGd7i+LhUAzt1qPRg4euG3AdY4vH4jG3BaAoWtbQKacEJ2ghFKQXBNJ+fL4W2usNpPvlL+GKK8SechJ7xRGR5xZtKU8AjsUz8LpdyMh4fV59ecV+4Y5ly8QKWKthfu017ecw+MliGOafIjFE9mPirw509Ki+cdH2YWtrxY3sr3+NWkx+XcU61bho7tdoZOjx/dhsuHRbkDBiGZEvvgCvF1fPAkCiS+4gan4TObmIWU4xjGx7dsgpJVU7EZuq1YZ43aHon6XVbGXxlMVc3OtKbLZCilLCUqB9KOllQWRZ5qYPbuLz7Z/jdldSX/811dWL6JwGyCFiKomQJJFCBcHvXQY0LirdXrfq9xJeYCIeY2ynirxiOYm84vVKoY9t20R8RLbG78UoDGGgAcMwn6xIUnIl2dLTxb6kHpIwzIPbKcFcckj71VdFBZ7t22OO21u3VzUu0E6E1o9i9mzkB36Nu+Wg0Gdu7frxK1eCyYSrTzus1jxMJgup1tSAHKaf8HZU3G7y1gX3y2VkzZWzAOQwl6nc0BAUCImC0+Nkwe4NWExg819ejM/nf/tW8fnmmRytXEht7SpcrsOkpBSzrkZEV6+uij4uKm3aRNMP1YTFbInbjkdJei9K/wOPHOilP684dK9dSzS2nzvuMPaYDRJi/EJ+ajQ2CqlDPfhd2DpuKKEVnyQkKr9bA7ffLtJfiotjjttetT0wTtVOhFYD+/rruJd/jCxJSYt+xGXlSrxD++O1ebFaC7jgjQt4Z+M72l2utbXBYDuzmbUr3lG9rLVmNECGWe0VyNl7FP70p5j9Z66dyZXv3UxTNC/7IOFCd7urqa9fx+cbHqFnpo1xXc8hI2MQubkTSE/vS7MXPCQ530linqkqKBGlnYiSffC7gz305xVffrl4/OMfk687bmAQA8Mwn6yceaZIJ9FLejq015EWAsFqPWHVhOIRurKTkcl7eY7Yp/zvfyNq+IZikkyqG3SrFnpwuWD5clzjT0OSzEL6sTXrwLvd8MUXuMaKSKaddVV8tv0z6l31SGHeDVW7rk5Epl9yCRQUiEevV0yE/AYgCY441cvWg23T4MUX4bvo6VtTBk2hIL1AFIQIwWQCp3M3NTVLqa1dQV3TLt7btpwe7a+gfdtzSUnphOTPAT/BcU0ur0v1Hbaq3nk8/CpcY8aIKHytvPCCEfxlkBDDMH/fvPKKcEkfOZK470lEaE1kyQeVNreIwI6jJQzg8XrokIrYq1TarcYXX0BzM66SnlitbY/Nix1tsNcLf/87rovPwmxOZ+kesfIdWzyWS3tdquoaaL/wgjDG110nlNXuukvkyCreicHdz1KdL7BFoIFaj1rCscrmEROzadOi9k+zpnF/yf0cDUk975oBQ3OhoeEbADIyBrDwQBUbapq4ftDtkQdJ8o5iM9lUn6nW6Ope+b3ituNSoGiCDx2qfYwfv2rZLJ1BhHGKXBgY+DEM8/fNnDniccOG+P3CWbFCyPTppbExbtH6qKxSlKCiVAWKRWDFLIMsQd7k28X+chxk2Uu+3UvntKBMpheNwg1aVr6lpXgyJHz9e2KzFWo7rh5SUvDdchOenu2UNKkldM7qTHF2MXcNuytwiRJwV5YiNdm/P9x2m/g+9+yBp58WaULKirqyqVIM8G8JNGkvXu8KE0xx+Vzw4IOihGCM387tQ28X9lG52CwrVLZAVtZZZGePJiWlC1kpuVzW6zLO7KwxElkDKg+CRISHIRaPnx2sFW2WzKp2QoYPFypwf/iD9jF+/P8m/IFrWunf39hjNkiI8Qv5vvGLK4SlDSUkPV2U4EsGrRWf/PhXFEVF8fuF8MaGNwIGBQne8MbeG/V6nTQ2bqaqaiFdk9XN17j8dV04EtIzqHUfh5++w4F759fIsg+LtS2Ocgdji8ciSZIoTRlyqbO+e0s0zjoL/vEPGDky6g07YktAR/BXVO69F0aNillnt41d5JQfUX4iX9fAjkawWoNRx5f1voz3rnov0ngq+dPJEF5ARGtBkdC94eU3Lte/V5wsQ4aIxxtv1Ddu507DlW2QEMMwn6wMHhwIyDnu2BS3oo5i698d+S5uG8DjqaW+fi3V1Ytobt6O1ZrPt7X6L8+MOW47wJ/+hOtfj2GxZLPu0Eb9J/IfP1opRlmGa67B/Y8/IkkWGj1mRnQawQU9LgDgYMNB1ZiD+drStdZWrFVNOvQEf0UlJUVoXp93Xtxu2+vhi0poCbMhq/evpr6lPsqFroW77076sorSi1Rej6J07ZNAP7qN8oIFwjOh17hCsEDLXXfpG/fWW/rPZfCTwzDM3zd+l5jeHOFkXdkg1JZ0UPbNJ0Jac5vO80VZxcqyTEvLQWprV1FTswyX6yCpqaeQkzOO8mYb9UlsKYe7u6O6vz0efD4XHk81Nlsh53Y/V/+JFEZ2HqkyIiM7j4TycqiowDW0GzZbAblpeXz48w+Z1Fd81kWpbVXHKMrQZniSrTWdEKcTnn1WlBOMQfjX5/F5uPiti7npwyhRyDNmBAuWJLF5n5+erxqXn65dZe6O1ZCWTMyXU4lyq9S+PRDAXxEtTvpZVL788pgmMAY/DQzD/H3TVynjl6UvzSNp0tOhk8YqQCjSmtY3ePBsGLf2Ps2FJWqdtaSYoFC5V9c7a2huLqemZgn19avxeptIT+9DTs7ZpKf3ZVftAc55/RzROZmorERbkg8+iGv0APB51fvLSZyrT36fyPbKlXjSwdenB1ZrIQ0udeDV4CK1d0NrENe3h7+N206ar78Wbu2nntI85NNtn3Kw4SDXD7he/UJzM8yeLRS8kmR75XbVd7i9UmOaHPDCt11ofDTpUyeHP15C7xbUkCGi5KWBQRwMw/x94zfIOuQuj4nGRl3FKBzlDtySsF4tsluzbKFX9jI4R0T1dk6DQdleGhs3IEk22rQZQk7OeFJTu2FSNKMfWvxQcF8xmRSmRAa2tBR3x3RMlnSONDdxwRsXJHESQbhRHdxuMKxciatTOnTpjMWaT5dnuvBQabCwQaUr6KOXQHMQV21Lbdx20owYIVKxnnhC8+9hxtoZFGUUBdzzAd59V+Rf33KL0ARXxXFp+zLDtcP1aImvvayEeUPSNfdvFaZMEdsXekuhGhhowDDM3zcblb3OWp033GPJY27XTnP3vLS8wI1WBs3BR6HBO+1ToMrlIyvrTLKzz8Rubx8RODTj4hk4pjg0X5cuqqqQ132Na2QfbLYCHOUOPtv+WdKHCzWqJkyivWIFrpF9sdjy2XD4O6qaq+jdNlg/d8ymRszK5MEM+uQfjxdPPCECATVEJVfUV/DJ1k+YMnAKFlNYHvqOHSKXd/ToyDKVGl0SwzoMi9uOx2nZb3HZRZEFNgwMTlYMw/x989VX4rFKj4bhieONDW/EbWthbQ1sbQCrVZ3DXOOs4Z7P7qHB1UCGLYO+BX2P6Vpj4nDgzgB5UH+sVpHGlGXPEvONJFZ3eWl5YpYigw8feWl5+D7/CM/dNwTSpCDE+FZUwF/+GtDe8OrwCNjN9rhtLfhi2cbu3UXw0quvJkzX+2z7Z3hlLzcOihIo9cc/Ci3tZCRiQzlGeVSt2ywB/EI7Rm6xwQ8MwzCHU10N06efuPP5VbD03tSOJY9Zx77i+oPrVTfM9QfX6z5leGQvQJO7iQvnXMi/v/r3sUcaQ3z3d2kp7o6pSD16YrXms6R8CaO6jIrQqw6Pto5F4HqlYNuVZ4aOHQOGuXtudzpmKnrKCxYwfYTI5wbxcU5fqe031uRpUr23Jk/sYK1w3LLIQf6uLk6nP/xB1FlOkMJz0+Cb2PaLbfTMD8tFr1EKdChbMeGSmFqLbkzso6jLyWHtBIQaY631uwMMHSrc0Q88oH2MgcEJwDDM4UyaBL/5jagacyK49lrxGEc/Oipt20YUrT8eWEwWlWGIcGPGIN5eo8vr4vL/Xk7ZvjLeuPwNzurSCiuWeKut887Dde8ULCmFHGg4yPaq7YwtHku2RZ00rScSWMX2bbhmP4vJlAKmNJbtXsbY4rHB1+fPZ2uR2uhvrYpegrG12doAzng2NzcXPvsMBkYriKyme2539RMul9hj/f3vA09FpJKZtE12+hf0F39IYn850E6Ao9yBSfnuXV6XvtKNBgY/UAzDHI5feCFOGskPgp49dWlX+ynriEh90riy8GsPS2HtRMTaa/T6vFz73rXM3zGfly58iSv7XqntwuMQNa84BO8F4/BefgE2WyGVTZWM7DSS8V3H08Na6L84AAYUDNB0vskDJwfG2c12rl98FLfjA2y2Qrw+L0+d8xQ3DLpBObkXFiwgPyVEDEaG/FQdk4DWroAVjcOHRYELb/QAvDs/uTNyzMcfw6FDUBLMHw6PRo+a8xwFR7kjcEqf7NNsYMcUj8HulTB7kyjd+OmnwlN19dXaxxgYnAD0VLH9aXDNNaL4uV9H93izbJl4PHxYX+rFihW6T1W2t4yzbgKfBLb/jGXJlCUJRRkaXY20T4Eu6bC2WrQ1IxNxg99Xt48Ve1bw1DlPcfNpN2seF/c0shy7vWULLvceKJSx2QoZWHQKK24Sn91O1yGyLcFzac0RLulUEhiz5NqFDHn+HOrum4DNVojNYueW024Jdt66FWpqqMtWezfqXPH8y98Dy5aJveIOHaK+7PVFyQ1/+WXR/9xgTniGLYOq5qrA55Nh0yblNqZ4DCk+Ey582OzaDWxJpxJKX5NxFMOYOTpLN3qUpPkf+iTc4CeHsWL+vvHLXSYrr6mDWetn4TWJvc4Wbwuz1icW4Pfho40yfUs1i3ayyLJMl+wubLxzI78q+VXSxwnHZrapDLnNHFIA4bHHcN12JWZzBmZzGk3u4E242NtGtRrtmtNV/8m3bsWd6kTq3RerNZ/Pt39OeU158PXevaGykv1m9YRmf5123fETwsSJQhY0xC0dSsQkas8emD9flDwMUYQbFaafPap4lKbTl3QqoXTEv3mk6GrdtZFL0k7ldyuSUP7yx3fEqXZmYPB9YBjmcPxpSx6dElQ+n7ix6U17SlPKKJ2Am8NxU5HSyAMLH0CWZXJTE0xCdMbBeWWvysAGUrVkGd+SRbhH9MNmb8eu6l1kP57Nu5veBeD/Ol2LyQfIIu1JawGE0G2AkV/cwrpTwdpvJF5ZZtI7k3hixRPqAVlZuH3q35Pb69b3Jo83kiSCAg8eFKUbw9znw9qHpS/NnCkew2oRTyu5H6sy3mqyMm1E9EpW0SjpWMLvetyk38Cee27CqmVROe886NJFKKAZGPyAMAxzOH7BD72G8p13hLym3gjPdevEY3W1rmFlPxvAY1O66opCdXqccdsxaaWaxZXNlZrzWvXgCTN6gfb27bgb9sPAAYFoabfPTe98kV/s7N5F1NiQwGLW/n1PmTcl8LfdBH8fb8Lavh9rDqyh3lXP2FOUwK+aGhg7FpYupa5F7boOb8djcz3sbEjc75g54wy46qqoe9oRBSvuvlv85sOCFks6lrB0Jjy6RGLpDUv1Gdn77xcR4nqpqtL97wcQRUPKy09IEKWBgR4MwxyOX7ParXNF07mzeDzjDH3j1ivpR/60Ew2U7XAwfvAGfl+8U1eKSI+8HoH820D7BPLyRS9jklr/J2c1W6O3S0tx5YA0cAgWSw6Ldy2mIL2APm37QGMjjrXz8JrFx+HxejQHHJXXlAc+w1wbHE6Xoucvl5aCwwEmk3oLQNK3JVDtgkM6C4IlzWOPYQqzwVG/s7w84f6OQsk++N1Kk/6V7/z5+vr7eUN/br2BwQ8ZwzCHM3eueNRbVMLvkta7V5yqVBnSUbnJ4fgPLSYZr6QvRaR0ZynF6dDGGmxropUWuVpTrfTSO7+3alXvXxHLi0tx98zH1kXoVC8pXxIow8iKFWR9sDAwxi8UooXslGBubo4NJHMGZnMqS8qX0KdtHwrSlcDB+fMhM1PU/T0WWsljoYlTToksPxn+/f/hD/Df/0YfbzIJg/3mm8fl8qJy881GjWODHxXGr7m18FeoKS/XNazs4tNE+lKq9onAmC1BF7SeFJFDjYdolwr9soJtTSRrGE6QQcmyZ6mMh1/kwvP8E/j+8CA2exHbqrZxoP5AML/Y4WBraMEnGdZ+8oqmVVu6NajL3MYCLm8qHp+HlXtWBo8vy+JY48efOB30ViInNSd2+9AheOwxWL06+mCTSWhnX3nsaXCaSUs7cUVgDAxOAEY4Yjj+Fa/ePWa/Yd61S/OQsr1ljD80Hdc4sC24jtJ27TW5/0o+34hP8SL+4oxfaHYZJqtj/EPH6XGqKjD7985d6S7o1gOrtYAsexXTz57Oed2VOsQOB3JfGxCSl/3laljxVDD9Z+JE4dHo21f8168fFBeL4/sF24DDLh8Wk4Ud9+zA7VO2QDZvFpHLDwULWQTQ+7HrTB87VvoW9GXZ7mWqdoBZs0Rg5M0xUt18Pvi//4Ozz05Oyz0ZPvgguT1mA4MfKMaKORz/TL9t2/j9wvGLfYwdG79fCI5yBy0+F16TDpd0RQUvWYO6xtNXTuelNS/pu1a9JGu/kxhnxqwaF1cm0+eDhx/m5ryzVU/ffNrN8P77uGc9g9WchclkpTCjkAdGPkCX7C7Q0ACrV/MzS5/AdZpNZiY/vUjoRoNY8brdIr/3wQfhkkugWzeYOpVGdzD1yeODw06RglWYURiU4WxqEsYpJMe3VpkD1J+ggOz2aeqazx3baAtyyk3Jjd6WZXjlFZF90Lt3lJGI7+Sxx5IL4krWkO/Zk9w4A4MfKIZh/h4ZUzwmEO0qIWlzSS9axFx1OWDmbprb+hfXGuhd5a1di9mtFrKIKenodAo50z//WdQWDjuXd+aLeBZ/hNXeDlmW+WDzB0L4AkT0vNfLoW6FgUmAV/ayoX5HMEJXkuDDD8VNv6ZGjHn5Zbj2WpW6VbUHGlyNPLzkYeZsmBO8gCFDYOFCkY7j7+uGskpojKLVcTzIC0tL07qHXpRRFL29YoUQTLn11la5vgj+9jf46CP94wZoU2wzMDhZMAxzOMnmMW9VtI+XLNE8ZMPhDXgVy+DBy4bD8Sv8AHDeedT0UQth1Di1R3T/YHE4YPRoYWATGfTKSpgwAd56C554ghldqlSr7BlrXsH97XIYMBCbrZDvjn7Hpf+9lHmb54kOZ58N69fzmln5vJXz/eOLf0Q/X1aWkJ285RYYO1a1BVDtElsCT656kv/t+5940uX6QVQLO9qsvoajTdriGCYPnIwdC5JPSI4GJEg9HhgzBq64opWvVMHr1Z8NAeJ3k0wes4HBDxTDMIeTbB5zc7N41JH2NHfTXJVB0bTybduWr917OCMHhin3oq8rvtZxoT9A6urEfm6nTpjtKaqXzIStmCsqYMQIEXz01lswbRrt27RXdWnvTsVlb8I8YBgWSxsW7xJVuAKBWSYTDBhAk6w2AqGqYFqpUQ7R7GkO5i8vWSK2Qlau1H281qRHprJaV35jfdtqK6tZ0qmEJW3u5q+LYcllHwRjGMaOFe8tPT3+AZLl/vvh8sv1j6uoMPaYDX5UGIY5nIoK8ejSVqwhQE+lHN748ZqHDGo3KG47gp074dln8cpeTBJYlG8voHSlhRMU7xVeUjG8rSIzE95/H5Yti7i8iAC1tm1h2DBYtEiIYQDTRk4LvC+rycoDld1xZ4N16ARApEl1yerCKTmniP3l22+H9etp8DlVq/MGd2IVD4+nnq7phLjAxaOExOguo0Vj/nwRiT14cPSDnKBAroqmw6rz7avfp3lsieUUIXPZTlH8+vZbXZPOpFi6NLlx777butdhYPA9c/Ib5muvPfYC7aF8+KF49EdZa+Wbb8RjZqbmIXXOurjtCD74AO69lzYW9dd2vPKDj4VwAY2oghpPPin2bQFGjYK8vIjqVYH2hx8KuUiLBWbPhjODmswlnUoCv+SlNyxlaKMJudep2Nr2DFQqCqxmV62CF1+Ew4ep8agrH8Vy9cqyTEtLBbW1ZdTUOCiwR/YZVDQomFY0f754P/7cdj8nOO1MktUDw4t9aEaW4frr4YILEvc1mYQqWDJ7xcly553Qps2JO5+BwXHm5DfMc+Yk7nO8eewxmDpV/L19u76xem66CxdCz55kWWTVOF+CIvdJn+8YkMJOpGrLsqh5PW2a2FsOMRgRObQpOULD+dJLRVnCGEzcKiYnJZ1KcP3+F0hPPoXVmse3h7+lqrmKccVKxK/DIYz7iBEJ34PP56KpaRvV1aXU13+F19tIWlpvvqqGZi/sDfF8T+gqVufs3QubNqmisY8Fu9ketx2PuwYrQVrKx3vf8Pu0n/i228QKOTtbBNetWwfXXZd4nMkEzz0H55+v/VzHitlsFKIw+FFx8hvmWPmUyVKkRKBqFYV46imRTuPnlVc0n2rywMmYkUAGi2QOBtlEo6VFuPomTCDLpmFtbyoOAAAgAElEQVQ1+j0THgEcaHs8Iqp3+nS44w6RFxvi8Xh0/KOqcY8e7iv2Hq+4Av7+95jnK++SCT54ac1LuFyHsdoKkSQT/Qv6s/muzVzU8yLR0eEQrvA4+6QeTy319euorl5IU9NmzOZ02rQZRk7OeNLSuuORYV0t7GsOjgkUwPALlEQzzEksWO1mu2qcHsPct60Svi8JF3//gv46TmwX8RYmk/hNp6aKkqiJ8PnghhuEd+dE8fbbxh6zwY+Kk98wt2/fuq7sSy4Rj/kaCtk/+6wwGpMmwYwZ4jkdWtkbDm/AK8tYJfDICaKyV62CpiZ8E8YEJDX9/BCFQrpmd1WXVMzuKm7aV10lPqs//AH++c8IKdKpQ6bS+zBkN8GLu/ox9ellYmX91luQkkI0XlrzEmtsVWCCX356G59Nn4LNIvLQJUmiZ35PIaPZ2CiCxsaMiTiGBOTboKZmBTU1y3C5DmC3dyY7ewxZWSXY7UWRhRxCx/tfO+cc+Pe/hSBJtJPoJDRnOlo7Hl8eXBP4Dvwufc2sWCEKshw5IrSor7xSrJ4T4fPBf/4TU0c7LsmusltOlJC4gcGJ4eQ3zN99p3KFHitlrp1CIvPQV/E7btgA994Ll10m9jyTcKXN3TSXLukwNA9STAmisjduBLsd14gYwg4/MHrk9VAZoh55PcTqa9gw+Mc/hFs6hqH7/TL456cwdbUP/vUveOKJuFrIczfNDZwrxwarMmux2ovw+DxM/WhqsMhHebmYyIUaZuWnMyQHerQBWXaRnt6PnJwJZGT0x2LRuXfZubNwA7fSZDHulkACxnQ8i1QPmJF0SbcCwn39t7/Bp59Cfb1IFTve/O1vutINAxw6pL/cqoHBD5iTf2Omd+9WuwmW7S1jTNVTuMeB9aMrcOQ5Ystd9u8vAlzOOUe4vTdvFs8vXBi9fxRqnDWkK9+AzZQgH/nuu+GGG3D5NuPyif4/ZLZVblMlOm3bo5S3/O1vE469RkmTvWHYXUw943ZtJ1RkK3Ns4CQTszmF1ftX8/LXLzPulHHie+zbV6Vl7guZzzV4oMIJ2dlj466M47J5M3z1lZistVJKUU5qDkcaj6jaWikpGkrpf8BxyzjGTH5Ef7UngIsuEu/Lr2yXCP8EKprHIBF9+oj/9GKzif8MDH4k/MBv7yeWWetn4cKLbAKXz8Ws9bMiO82eLWQaAS68MHhDaGnhpdPg3HOPaJbIXFOxRuXuXVOxJm5/OT0Nt/sI1S5OWNpTshyoPxBsyHBg7yah1pWA0M/uts/v0vRZrtq7KvB3Gwus9AphjYgyjCAmcYrhdSufocsnah7XuqPUHdbDm2/ClCmxU+2S3WOO045LQ4Mowfjy5uSMsp+ePbVPfk0mYci/+CL58xkY/MQ5+Q3znDmt6sqOe/OcMwcmT4ann4546ZFu+7ntYlhQ7OW2j2/TZFDC849j5iN/8AFMmIB7/yZk2SMMc7KcIINeF7b6r8tJi7lHHMqMr2fEbUcjXBjkgFN8QEvKl9A7v7eQlGxshOJiVTnCBg94ZPguJEst6ZQigM8/FzEGsVSokrD51wy4Jm77uHPddfr/ffXsGSxnamBgoJuT3zDv2NFqh5o8cHLg3mmTLOoo6XfeEUZ59OioKVr/dSp70soBtBgUzXzyCaxejauNG0kyU3uCiiAAmCRT3HYsOmR2CjYk6JDTWdO4CBWvsHY0ZILpY24fNHhl3F43y3cvD6p9rVoFu3dH1MteXQ1NIfOhtze+TZ9/9uGBBQ+wZNeSiLzqmFRWisCyGGlSugRXQuiW001l0LvldNN2PceKP6DK6Wzd4EoDA4OEnPyGuRUp6VRCjwbhmn5xwENB99+8eSJVpKRE7CuHC0cAbmROSQ/eQzXf0BPd82QZFiyAsWNxeSuxWtuK5KgTJFaRkxIlrzgWy5cL4Y+jR4PlDxXcXm2ziVPzT43bDqfWWSsMs7Koq3aDhIn99fvpkNkhKCzicIgI8JEj4x4vJzWHjpkdefbLZxk3axz50/OZ+PbESLnO8EXkwoXiuzrvvKjHDS/GEbM4RxhJybb68Ytu3HGH9jF+uip67NOm6R9rYGBwTJz8hjmZm048/PnLoXnM8+bB0KEiQjUjI2KIz+eio6WCohTorQh/1bS0knzh9u2wezeec8/E52vmUHPyqSHJRPh2yuoUtw2IEoe//KXwJhw4APv3c0ZHddpYeDsWs9bNitsOpcXTws/fuZBuIXFWVcp8qDi7mC13b2FibyVtZ+lS8R1G+f5COafbOSy4fgGV0yqZd9U8ft7v51Q2VZJqEa7Zh5c8LDqGf3Rr14rV+NChUY8rKfnqqrYGJvZRrl8Oa2vBv9JNxq28f794HDZM/1gDA4Nj4uQ3zPn5rRqVvS1FrIxuX/sIZXuUIgQzZohVa5jsn8/npqlpC9XVpZhMwh+aoURZO92JA52AxHu+SpS3a7Qobbd07zfaxkU9lRy3HQ2byRa3zcqVMGgQPPOMkEb85hsYOFAUTAg5vNYCCgcbD6rGHWw8GNHH5/PQ3FzOym0vUF+3ivyQeKhatxBc8e8VS5Ik9pe//DJq/nIsMmwZXNLrEl686EUcNzgCQWHrD62PPuCJJ0SFMXP0lXBBeoHKmBekF2i6jqlDpvLiR3DODnjxwheZOmSq5vcAiAlmnFSzmCwWhT9o0l/Yw8DA4Ng4+Q1zK+YxO8odAWPl9rpw3H+FWDmYzSqjLMtempq2U11dSlPTVqzWthxsEYbZrNx8m1wahSASzSkKC2HSJFztUrBYsllYnqTQf5Jkp2THbfP006JU3+LF8PzzgRXpmOIxgfemO4c2Bh5PLQ0N66muXkBj4wZOa3car16xlNVVIrIaCGigdX6mM6+ufVU0mppEbvFFF0UeVOdPZ97V82K/mBe73rHH54nbjsfUhlOZPxv9RhnEd6NHstWPX+WrXTv9Yw0MDI6JVsljliTpPOAfgBl4RZblx1vjuJpoxTzmgGykDD5k8ppNQppQQZZ9OJ27aW7ehs/Xgs1WQFpaLyyWLA65vLTxd5Wh3l0feYJoJDIMEyfiu+xCPFULSEvrRZo1cn/7eLKzeqcqH3ln9U4RSFVQAN27i4IQKSlxXcRen47qV6CarJgAp3MPTuduPJ4aJMnM3K0OCrMGcEmfi8hGGOO1NZAacqH76vaRl6p8n23bCv3m48mkSSKVLkY+rU/2xW3HpV+/5PJ0vcrnnkxt6EmTxH8GBgYnnGNeMUuSZAb+CZwP9AF+LklSEioB3z+VTUpFKQkkGSrvugHy85FlGadzD9XVi2ls/BazOYOsrJFkZp6BxSLqN4fa1ywryD6OfSVfVQV1dbhchwCw2QqZecnMpA+XTGTw5X3U9XEvP5gjArx+/3vxRH5+VKM8feX0wN9e2atqxyN07/WUdBiWCw0N65FlL+np/Viwv5LbFjzJm5s+Vo3zydDoVR9nVJdRovHdd0KjO/oJjx2fco44xnNCtwmqH8mEbhO0H3/5clF2US+Nitfmtdf0jzUwMPjeaA1X9unAdlmWd8qy7ALeAi5pheNqY+bMVnNl17TUkGaG07JBNkGNxU1Ly35qapbQ0LAek8lOZuZwsrJGYLXmxjxOUSriJrxy5bFd0HPPQdu2uGp2YjKl4pMS5wHHw2q2qoyD1Zy4UMelPS/FJAMymHxw6eurRSWtl+LnaW+t3Bq3rYVCuwjmysoaSU7OGFZV7GTKBzczustoXrv0tbhjT2t3mlDJamqCgQOFNncrkWJWfw8pHmJGY/vp27avahKgdc8dEHrVBgYGPxlaw5XdAdgb0t4HaK/kcKzs0178PRFvf/sWA5Ut1I6psG7XLOoHnYXZ3IY2bYZhtxdpOk6OFWxmxJ5rSN1g3SxciDywP25rE3ZbJ34252dk2bOSPlyGLQNoCWvHZ9b6WfgkQAKfCWY9dCElt/874bj89HzcDeq2FkID0r6qFgIgVmsu6w6u47L/XkbP/J7Mu3oeKZb4k5RA/nJZmdhnPessTefXgtVsxekNBvdZvSQs8xi6TYIUWX0rLiNHJrdiNjAwOClpjRVzNGdgxBJWkqSpkiR9JUnSV0d+YCsAWfbS3LyT9tZgBHCnNKhrqaZNm9PIzh6t2SjXucWWd2EKQprQnaQaSF0dfPEF7gtGIstefFImy3cvp3OWNqGOaCQbGayiY0dt/cJ/AUk4NTwhY97/7n2yUrL47NrPIgPQonBpr0vFHxrzl/Xgk33B9yOLCUuiCVhlU6X4xyaBCSm4baKFwkLoFCVNLRH+gMV779U/1sDA4HujNQzzPiD0rtEROBDeSZbll2RZHirL8tC2bdu2wmkFZb+eJKpB+SsI6UAY5B1UV5fS2LiROldwH/KgE76q8mC3d0ion/zs/54N/N3ig2oXFKaC/PUa7XWdw3E4wOvFNWYAkmRh9cGttHhbOLvr2ckdD7hv+H3qdn0/UXrx5ZdFqb7ly4MvLlkCDgeTTYMDT5kgfs3oEMJ1vxPpgIeypR62hcXO/XHMH/l66td0zNQ2MRjZWTHEDgcMGQKZmZrPn/DYnZRjK6vfkVLnhHKjY4rHYJctmL1gx6IvSv2995JbMft/tzFSuAwMDH6YtIZhXg30kCTpFEmSbMDVwIetcNyElO0tY3zGe/zfOBg/a7xm4xw0yItobNyE2ZxJVuYIvq3z0ajY5sNO8GiInH1pzUvc+7l6RVLhBKsJXO6D0NAQu6hBPBYsgLQ0XL2LsFrbsnBXKRaTJRjQdKzICJnRu+8We8Y33CBc734uuwzGjmXD728LPOWD+DWjQ2h0N6pWyXrqCFe1wNGQj2zj4Y1IkkTbdJ0TuqYm+N//YuYvmwlT45K0GbBAKphi98acl7gCVkmnEkq7P8IjS6D0tGeOraiEVlJSRCzABB2BZgYGBt87x2yYZVn2AHcD84HvgLdlWd54rMfVgqPcQTMefCYhgZmoELzP51Hyj/0GOYusrJFk0RvrNbcJy6PD5Vq6s5TbP76dC3pcoHq+1g1OLzi3LhOu33ff1f/mfvELPLP/jc/sw2YrZNHORZR0LCHDlpG07rJKzlGCuXePg8OHxT79jh3w978HX//8c1iyhIcvV0twPux4WPt7aCWJ5W1V25IbaLUKnfEbb4z6soxP9X1rLWARutq1mqyaV78leQP53QooKRiiqX+AgQOTSwm02eDWW0WJUgMDg5OGVsljlmX5U+DT1jiWHkJFLCym2O5Bn8+D07kLp3MnPp8Lm62A1NRTsVpzREH4SZNEnd7+6DImo7qM4tHxj3Lf8Pvo9KRa9vCgE9xFaXi65GN57rmgYINWevbE1UmCpi3YbAXcOezOwN6qqMkb3KPUWqN3Yp+JvFa2INgecJXI8Y3G8OEAHF1WT2i42dHGo7reRlKEfQeB/WK9WK1xV4uR2+DaDHOo18DtdbPh8AZtK+Dt28Xjvn2iCpVWunUL5iQbGBj86Dn5lb8Uogk2iBXyNqqrF9HUtBmLJZusrDPJzDxDGOU33hCFKVpagjWWNbBgxwIONRzCarby2zN/GzVC+HALSCYrzrsmitq0X32l/c0sXw7//S+u5v1YLDmYTHZuGnwTl/cWOcVNLrVMYng7Fv0LlJWTLFZ6gXYcTGFyjuHtaHi8LvJ/CHXrX35ZVHyKgRT4n8CECf79b/jNb2Dnzpjjki4ssU1Z+ft1qLWycKERlW1g8BPipDbMs9bPItsC/bPA7XMza70oeCA0rIMG2WrNJSvrrKBB9tOzJ1xwgShAMGKEeC7BoumzbZ9x4ZwLuX/h/XH7eWWw2zvQcv4wfFnp6v1bhZhFJf75T7zT7sPjq8dmK2L57uWU15QHj+1SF7Lwom015Sh3YPIhUp9kX0LXP0SmVMVKsZJlGZfrKNW1q/ndxxPo0SZqtxNHU5PYP3/nnZhdLJLaYWQ1W0Uk/VNPCVWzCy6Ajz+OWK1O7DNRGHQl+EtzYYkSZVXdV0cOM0C9RhU5AwODHwUntWE+2HCQ3pnBwhGHGw7Q1LRV0bAONcinY7UqKTbr1sHjimLo0KHw/vtCvUoDi3ct5vK3L6d/YX+eOz+xxGNKSjFyqp2WqZfCW29BdbXqdX/FIlXb54NFi3BfUAKShM1WyJR5U7jvcyWiWpZJc6tnD2kWbTKdY4rHYJJB8omyg1r2RuucdXHbHk8DjY2bqa4upbZ2FY8suY/3ty1jYy2sqYLN6u6tT2NjUCA7lC++EEF38QpXRNu2eOYZUbf5D38Qv5WLLorYo546ZCov1o0ShSXG/0O7hnW28htMUOEqgvHjoX3iutQGBgY/Dk5qw7yrZlfg706pYHVvoKlpC1ZrHtnZo9QGWZaFrvPw4WL1qlM/eMWeFVz05kV0z+3OgusWaMqltViysFhycN54gVABy1HvBUfVT167FiorcY0ZiNmcxp76I+yq2RVMk9q8mamrZZVRmTr4Fs3vw2MGWdIe6OSRPRFtn89Fc/MuamqWU1OzhObm7VgsbcjMHMLp3e7iV6P/SZ1HFJaoTjKNWzPp6dF/xQ6HqKoUJ7+4d24vlYekV34v8UeHDvDHPwoD/e67ogAGwN69IlZg+XKmPr1MFJY48x7t1+oXwzl8WPsYgKwsUVLSwMDgJ8FJbZj31+8P6CN3TIPy+irFIA8LaFgDwhV4zTVw++1iBeWvnasRWZb59YJf0ymzE4uuX6RLtSklpRhv2za4+kcKg4SqRwXaCxcim8A9pBtWayELd4iyjxO6KkFMixZx6Rax6kUGswcuvfMfYsJx990wZ07Ma/G7+pHUrn+t5NmhZxuoqlpAY+O3gI/09L6Y04ax+mgDdnsHru5/DXcOu1PXcSPQMmeQZeHt8PnEFkDIREVCEvWXTzstbv7yv4b/GaVaJyZMvPCzF9QdrFaYODEoTrJhg6jJPSrJlLUNStDYrl3x+4WTbB6zgYHBSclJbZjrWupIV9zY62tgbVWz2iCDcA2PHg1vvw1//au4seoUOJEkiQ+v/pDSyaUUZhRG7xTDmNjt7TGZbDiPbhAu0Q8TpHhv2IBreC/k7CyRJrVrER0zO3Jq3qni9UWLcJyWg6zk0coWCcdVZ4gqWK+9JvZH/dx3H9x/v3Cj79jBpiPqLLZNRzZpev/pSnpvW7vYNkhN7Up29miys0fTKGdy9uwLuOStSzjSeAIV3WbMgMsvhzffjL5Xv2lTwvrLJSk9WPEaPNo8ghU3rUgcWX3BBSJw65VXRDuBqEgEZytejyE606UMDAx+UrRKutT3hcsbVKFo8gKEqFL4XbUmE/zud6JM4ejRus9x+8e389z5z8U2yH5ipFlJkgm7vTPNnq14V5RiLi+Hiy8GwGayqa7ZZrLB7Nm4D65AkhowW3JYsmsJF/e8OKg+duGF5NWlA28Gy1NOvB4enSqClI6GpDNt3CgivFtEsNiaB2FASHndRGpcPl8LHVLBrhjmoy2wrQHS00XxsIr6Cs5+/Wx2Vu9k7qS5kQIgrZTHHMGmTXDPPWLv9ec/x/fIderrxgcVFSIALB61tZTsg5JlMjyuUfAjPR1uvhluuQUGD07cPxS/CpxF5z+7VirSYmBgcHJwUq+YY0Y1NzTA5Mmi8hTAlVcmZZQBPtr6EQcbDibuGIeUlGIwmXH+YpLY+4zjlpQBl70Zm60As8nCxjs38ofRIZWRbr2VtT0Vr4DydtdWrBV/mM1CV9nPwoXCjb92Lbz0Ek1h9qDJHd1wud3V1Nevpbp6EZ1D4sr2NQf/3l2zm7NmnsXumt18es2nESIrx0Q8g97cDFdfLQKoXn9dTLyiYbG0qgxnVMp0ysBu3iwe9+xp/WsxMDD40XBSG2ab2RbZ3rBBRFvPmaNePSZJ6eRSOmVpKCAQZ1FjNqdisxXScvFw5FR7IHXKYlJbSovPh+f26/B5nVitwsAWZhRSnF0sOmzaBIcO6XsDVisMGgS33oopTDPZJAW/fln24XTupaZmObW1K3C5DmK3d2FtNZRVwv8qoTkka2j2N7OpbK5k0eRFjD1lbPRzH4+F3rRp4jueNQvaieV/mlkdlZ7mMatVzH4o+PeWKyq+3+swMDD4QXNSG2ZZltWSil6PUFSqqYFFi8RN/BgJROomIsoqb8OhoEJUSkoxvgw7rpsuFSu9mhrsFruqv73Fh6t6B0gmbLYCfr/497z17VvBDnfdBeefz+SBkwM1km1mm+bCEkCEsfR6m2ls/I7q6oU0NKxDlj2kp/cnJ2cCGRn9cCqB476wsQ+e9SDrblvH8I7DtZ+7Nbj6apHuFlL/2GIOm+B4vHAgoo5KJH7vwiVJlA9v3164s/XgjxA3JDINDAzicHIb5jArI7u9QsRh3ToYG2MVdwL5W9nfAn9brfmYzek4bzxP6Be73RElHDtX+nCPHoDVmkOL18uTq55k9X5FuaqxEVatgrPPpqRTCaPKoU0LXNnnyqQKImRZoWeGzNHK+TQ378BiySMzs4ScnLGkphZjMsXeB91WuQ1JkuiS3UX3eZPGXz5z5EihzBWCSTKpJg0mHwkDvwChJQ2a89iPGX8ZxjRteecGBgY/TU5qw+z2qZNk3VZEVaYibbWT/7+9Ow+PsroXOP49k0wWQkjYFwXCIsoiEkEvo2hTkaqI+1IULlpFrJbeLlYrXvtI626t6+Ny0apYkKLep5V6XRONNjaiFASUBwQhssgaCFv2mXP/OJPJzGSW981Mknnj7/M8ed45mfe8c3JYfjnve87vJJOCFqPRV9a+wraD28z7SpGVVUDD4J40PvwH6N0bz7GhAXXSbmicMJKMjH6UbS0L3eaxrMwkzJg8md8W/5bSIXA4ExavXcxvi0MDVTQ+7QuM7Ed1g5x0H5MW/ZhLl93N7z75C6+tf5dvq76N80Oa5CRtJXyHpzSVBo2NZkbzXZE30Bjbb2xzQcPYPcTdHxkwz6Dvusv+JC4wI/Km2dlWVVSY467E5iwIITo3RwdmoOUt5ET3nm3lTGJXWPapNJWG1prHlz8e+F5m5kCUSqO2ZjN88AGzMiaQ7l+PnOGDq/d3haFDzfrlze/jdrmbt3ksKTEjvEmTeHHViyFtDZSj8HprqKnZwqhuzb85bDwMKw7ABaN/hlYZPL/qeWb+bSaPfmqezTZ4G7jzgzsjXm9o96HWO8am3MzckF9wcjNz4Z57TC7z446LWOeByQ8Entena8UD2483STniOXQIfv97MzmuNZrSuFp1zDGhRyGEiMDRy6WSqbaxtsX3wmd9R/XCC+YZbNDpWmumnzidHYebNyxwudwmf/bRb+lyzY14TizkjHG5fNnnMDN392X0eVPwpeeSnt6V4s3FnDbwNHIyckzl4mITCHJyqGsMzZUdXgaTKrO+fif19btobKwCIN3fvp01zfsdP3LOI+Z8XyPr9q6ji9vcZt24fyMPlD3Q1BGt04p65x93PovXLA7koT6/2ylwx91mlv3MmRHreAZ6mDJsCm9vepuPd52L54cWRssABw+a48qVZgmUHQMGwKhR9upceKEsfRJCxCWBGThQc4CLl/q3FgyeTGZlWvGSJTB7Nl3C7rLmZ+Wz8OKFLWZeZ2UVUFu7lbq5V/KXV5/gw16Qlw4LB+xmwln5XJzRl3pvPdnubM4d3jzBif/930AgCb+V3FRuaKiivn4X9fU78XqPAJCe3p0uXUaSmdmf1Qej/xjprnTG9m2+JTyq9ygOzztMl/va93no0Yaj5oU/qB9d/rHZ9vCpp2LWe3vT2+bFnb8Dq8/cD/kTebdmxPzdd/Dv2OvAhRCiNSQwA+9+8y6fbv+0dZWXL4czzmCaew8rWR8I7PeffX8gKG85sIUBuQPITM9szp99+Rk8vvWJwGXyM2DZ+je48uT5uNMy+OS6T0LzWQ8ZEniZ484BzIYY3dLh+NwM9u8vxuerARRud0+ysoaQkdGPtDSb2amCZLuz458Uyf79dGlQVLub2291o40N+zaEjLQ35NabzGUxNn4o39a8nnjyy5MpmVXSqglxtrX2FrgQQsTg/GfMCahpMBkzpo+Zzoa5G6InLImk0b+5w6OPwjvv0L+q+SFzmkoL7HW8dvdahj85nMVrFwfez8oqwJuXSVqv5sDX3Q3VjXWkp3cPbG4RyPb1/PMhObArayoDr0fnQQYHSE/Po2vXcfTo8SPy8jxkZxckFJRD2Ln72tgIV13FhB2hS9kmHDPBUvXjex4fWj51qsl5HUNpRSnK/1n1DTWWtrNM2K23mi0hhRAiyZwfmFv5yK5kcwlDnxjK8u3LASjILyArLJCFlwM+/tjsqfv116AUZGezIsd/W1SBV3sDG0SM6TOGsX3H8sd//TEQcJvyZ/ft07xpcaYLanyZgGLUU6OYXzq/+fPuvx+WLg0UaxqbU3BtOAxle+vp1u0UsrIG4nKFJl1poa0fcc6bB++9x5ohoaPtNbvWWKp+3nHnhZZHXRi3TlFBEVmkk+aFDNItbWcJNM/ev/xya+cHe+ghOP98+/WEECIORwdmWyPcIIvXLOa8xefRM7snA3Kb97kd0WtEyHnhZQA++8z8h5yWFrKNY56KHMSVUtx62q2s37ee//v6//zfc5GZOZgGqsgM+hPYcGAv3xz4hg2VG+ib409+sWULbN5s8kJHsL/eJP/4tupbvD5vxHPazeLF8PDDcPPN1KeF/lkE5zWPpbK60uychdnxqbK6MnYFzOSvkhWjuPtDKDn+Puu3sZtyV1uZwS2EEO3E0YG5RYKROMNBrTUPlj3IzL/N5PRBp1N2XVlIus3w3NEtckmvXg3nnGM2xHj//ZBdqqaqEWY06jO3soOzcV0x6goG5Q3ioX89FPheVtZgvHjJaprHpWBffSPFm4sBmtcvl5SYY9PORH4VR2HzkeZyweMFZN2bxdDHhzL55cnMXjabryu/BuBg7UF2Ht4Z+Jw28+abZkvExx6zNHM8kqKCIrK8kOaFzPRMy6Nfz9tfMq8MPOfayMZ1zDEmlz+I8pIAABY3SURBVPgsG5nThBCijTk6MAO2As3r617n9pLbmT5mOu/MeIf8rPyQ94OXNrUob9wIU6aY7E0lJS3Won6rqwLt8Wova/c0p+N0p7n59cRfs3z7crYcMPmS09KyORA2iPRqxfub32dQ3iCG9xhuvllcbHJCjxwZcu7OOtgdFOsWTFvAbafdxsRjJ1LdUM2bX78ZeIa+9KulDHhkAG1u8WL4xz/A7TYzxYP+bKwmJfEM9FCyEDP6tTOJ64YbzDHoLkZcLpeZVNY0chZCiBTwvZqVfenIS3nxohdNrmnV8neSAV0HgHdTaLlJ375mh6p774WCghZ1l7m/MYHIH4z+vPLPzBk/J/D+7JNnc/moyzmmW3NA31HjpZv/MfOBerOW+IMtH3DpCZc2T/zau9eMllXs30BuGH9D1PfOHHwmT019ip+99bOY14gq1kfX15t9n2+/HQYNCuzodMXoK0ImvF0x+grLH+fpMRZPxX7ry57A5NAeNCj+eUIIkeKcP2KOo7K6kumvT2fHoR2kudK4dty1EYMyBN0+Di5/953JU92tG7z2GoyI8NwZ8BKa+isrPfSZc05GTiAoN3hNKtGqBgJBr6rB3Iq/7bTbmDk2KJFGSQm88ILVHzeiE3qdwM2n3JzQNaL6xS/gmWfg09DlZj87pfmXABeukHJcq1fDtm322pGW1pz7WgghHMzRgdkV1vzwckVVBae/cDp/X/931uyOPyu4sL8/Z7L/UXVhzjCzGcb06XHrZhF6O7SHarluV2vN1MVTmfvW3BbvNfrj+rwz5rXcRjG9425sxOzjBQvg2WfNLl5XXhlyXviSJVtLmDZvhk2b4p8XbOlSs4RJCCEcztGB2YcvZPmPL2jUumrnKjx/9rD76G7e/8/3WyzDiSQwA1iZgWzlUw/D9u3mNm0cu3yHmgsavtz0rxbnKKUY2G0gC1cvZPcRs6/yRn+1A/79OKpqq5orTJ8OP/953M9uU4rQJVZNt7XLymDuXLP94n33tajWs0vPQD0fPlO2atiwqHmxo4qTGUwIIZzC0YE5mvJt5Zz50pm4XW4+ue4Tzhh8hqV6wcFDa+i5bR8sW2a2Goxjvyt01vFWdQi2bm1x3i2n3UK9t54nP3sSMDmryyvB6w9i93x8j3lRX28mUkXLrdza9cg66OjD3Ir+8suop4ff9g+U5883z9qXLIm4cUggRWaUshBCiMg6ZWAe2Xsk00ZMo/z6ckb1tr7RQPCaWZeGyhtmRF0/HC5kqZYCL8ADD7Q4b0TPEVx8wsU8/fnTEa8zZegU82L5cqiutvz5tjWNfJ99Fk48MWreZ5/PF7n8t7/BO+9Afn6EWv7UmjHKQgghIut0gbm2sZb8rHyWXLYkZAa0FcFrZl0uRdE5P7X34cGjWBcmlWaESUy3nnYrB2oPRLxEYHRfXGyW8xQVRTyv1YJnWLuAHTvMs+KmtJd33AFz5sDnn4PWdMvsFlK9G5lmMlxuLgyNvv1ji9SaYWUhhBCROT8why3leX6lzc3rg1U2j5i1zUwc4R3pSks3GaVWr25xrmegh0WXLIp4naZtFykpgfHjo6/LbUWikG4Z3VqWe/Uya4CblmPV1MCiRXDqqVBYSF590E+mIW+///04bjv9Ntz+TTzcLje3nX6b/Qbb8V//1bbXF0KIduLowDyyV2jSjR5ZPVq/LMjn4+XHfhIoevEF8l1b4YWQYOnVPjNxbNq0iOfPGDsj9gWnTLG/R3Acx3Y7NmYZMJty7NwJTz8NLhc5u/aHvJ3TJdeMqOPwDPTw0SVvcN9Jv+ajaz+yt9tTURGcdJL188FMlHviifjnCSFEinN0YL7g+AtCyrPHz466Rjkul4viE0LXwTalx7Si2p+m+oh/0ykfPsjMNJO31sRYqhVt5HvXXXDjjZY/34rAcrAo5YC8PLjpJli5kl+c/d8hbfzFBffGTXbSxPObx5l3ySP2t2D88EP44gt7dY4eDbnjIYQQTuXowPzSqpdili05cADeeAOAPfpISBDac3SP5csc9cKK/bCrNuyNe+6BU06xlzBj40ZzSznJNlZujFmOZM6l93BB9jgArj9mGnNOs7F86733bLUv4KuvIj4CiGnpUvj971v3eUIIkUIcHZgbfY0xy3FVVcGPfgRXXQU7d9I9u3vIBK7u2TbyLvugIdISplmzzKg5wgztqC67DC691Pr5FoVnIwsvR1K+rZz3ataChsW73qN8W3nS29XCmDEwbpy9Os8nMLdACCFSiKMDc7+u/UICab+u/axXPnTIJMdYvRpefRX692fHobBNLMLKMUXrycGD4brros7QbmHXLli7Nv5s7PD1yOX+gHnkiFnKVFxsllytW2fWU9fU0KNLj5D+6tGlR9zmlFaU0ogGBQ3aay+DlxBCCNscHZinHe+fWKXDyvEcOQJTp5q1u6++Gpig1ajDRuDa5gg8mnnzrI+aP/jAHGOsX04jNKFHmg+zTzRARYUZbU+ZAhMnwujR5peDxYvplxP6i0t4OZKigiIySCPNCxkq3fI2jO1u4cKQbTiFEMKpHL27VH6mP7mFCivH8/rrZtOFv/4VLr44eQ3SRJ7MNXgw/OQnZhTb0BC6zWB4nZISs0SqMMrELGD8gPF8tuOzQN3xg06F6/z5t4cNg5UrzS8fhw+bryNHYNIkZnUZzQvLn6XBBW53Rsie0dF4Bnoo2TCR0m3/pOin8+3Pri4ttX5+kzfeMMlV7Jg1S/ZVFkJ0Co4OzFV1VSFBraquKvrJwa691kzIGj26xVtHGyHHDfW+ltUS8uCD0KVL/L1/i4vhrLMiprlsUlFVEfJzV1RVNJ+fnR01qHuA0pegtACKXim1HGQ91T3wlAG3nGDp/IBFi2CP9Ql0ARdeaL+OEEJ0Eo6+lf2PDf+IWQ5RWwtXX21GkxAxKAN8cxQ+3x9lIlc8sVYR5eebbQlra82ks2h1XnvN3PqOIWr+ags822FeGfZGvmPHmmOvXtbrCCGEaBVHB2YVtp42vBxQV2dmOi9ZYiZWxdHY2g0i4qmrg5Ej4c47o59z6qkm41cMEwdOjFlOulH+fON2A/OMGc2pPoUQQlji6MA8bcS0mGXAPNP98Y/hrbfMhg3XXBP7oq1IdWlZZqZZnvXccyYrWCQlJXEvc97w82KWk+7oUXNsaLBX76OPkt8WIYTo5BwdmPMz8wnagrnl5K+GBrNG+Y034MknrWXSaqvRcpN588DngwcewO0Kfd7sbgQWL457iVU7V4W0c9XOVdY//5e/NJPf7Ni71xztTsgSQghhm6MDc2Dylw4qB/N6zTPdRx6BuXPbvX0RFRSYGdrPPYenz8khAdazDTj77Lb9/EcfNbf17SgoMMe8vKQ3RwghRChHB+bAJhMqrOz1mgQiWVmwbBn86lcd08Bo7rgDfD5m7BvQ/D0NM9Ziaf/lWSfNwu0DpSEjzdqyp4CbbzZrt+2QEbMQQrQbRwfmvUf3tiz7fGYbwx/8wOSbdrXjj2j1NnhBAXzxBatO6hPy7VWju0PfvnGrewZ6GFnpYshBF6XXWF/2BMAzz5hn7nY0PffeutVevXPOsXe+EEIIZwdmn/ZxsDG0zE03wYsvmrWw2dkd17h4Ro9m15HdId/aNdB6bu41fXxszk/2YuskW7TIbMghhBDCMkcHZoB1h6C8abc/n4YFC8wEq/nz278xNmd0V1QETdpSUDEgx1K94I0kJr88ue03lmha8tSnT+zzwvXqBcOHJ789QgjRiTk6MOuwe8daA7/5Ddxrfc/gjrQvrS60XHfAUr3SitLAbfN6b33bbywxYoQ59oi/6YUQQojEODowt5AGPPRQYkG5HeP51YVBk7Y0XD32akv1igqKyG7EbCyRltH2G0s0ZSqrq4t9nhBCiIQ5PzCHT7hywEi5yYNnP0ifWpPjenJlHg+e/aClep6BHkoWwt0fQsmsEnuTv+6/H957z15Djxwxx/p6e/WEEELY5uhNLNpEtB2i4uipulKpjwTKx+YeG7dO+bZy9mV6ASjreYTybeXWN5bYDp69mWAnKAPcfru98wGO9f8subn26wohhLDF+SPmFDE4vWdIeWj3oXHrlFaU4vP/EtCgfPaeFU+aBKefbqOFCfjuO3M8ciT2eUIIIRImgTlJ9rhqQm6rbz0Yf81vzy49A5nLfGhTtqq8HJYvt9/Q1vj4Y3OMlt9bCCFE0jg/MKfII+VaX+jEqNrG2rh1KqsrcaFAgQsXldWVcesEDB8Ow4bZbWbr3HKLOf7wh+3zeUII8T0mz5iTJMOVEfJLQpY7K26dooIiMr2KejQZbre92dW9e5v9ndvDGWf416IJIYRoaxKYw7VyBN4vqyff1TWnCB3Xd1zcOp6BHkrWjKO0ciVFt/zR3uzqsrLWNFMIIUSKc/6t7BRR2O34kPJ5x1nbI9lz/k+ZVwaeE6e2RbOEEEI4jPMDcxLvsKar9JjlWIYcTg+0xaVsPC9uuh3dnpttCCGESFkJRQOl1Hyl1A6l1Bf+L0cP+7Ld2SGBPtttfROMs7JHmWxcWpGZlmn9efGKFea4f7/1hoLZ0jI/314dIYQQKS8Zz5gf1Vo/nITrdLh+XftxuO5wSNkqT9ZwShZC6SUnUXTr09afFzcFV7fbTlNhwoT2m/wlhBCi3cjkryDds7rHLMc0ZozJxjVpnr1sXE27L9nNqlVW5qj0o0IIIaxJxoPNuUqpNUqpF5RSNiJZkiQxNl1/8vUxyzGlmZzXtke+e/aYY238dc8hCgvh1FPt1RFCCJHy4gZmpVSxUurLCF8XAc8Aw4BxwE7gTzGuM0cptUIptWLv3r3RTutQc8bPYeLhPABuLLicOePnWK/sNTmvaWy096Fvv22OO3faq5eTY76EEEJ0KnFvZWutz7ZyIaXUc8CbMa6zAFgAMGHChJTMVlG+rZzVedWkeeHlbW9yjY1NJQIj5vR2ejog65iFEKJTSnRWdv+g4iXAl4k1p2OVVpRSjw+vC+p9DfY2lWhoMMeaGnsfOsu/J3NBgb16QgghOqVEh3cPKaXGYRYZVQA3JtwiG9wuNw3ehsBzZrfL5vPdMEUFRWSQRr3PS0aGzRSZ69aZ4zvvwNVXW6/XNIHL7kSu3/1OZmULIUQnlFBg1lr/Z7Ia0hqF/Qr5bMdngT2UC/sVJnQ9z0APJev/g9Jt/6To3uftpchsrfJyc9y3D4YMsV7vD39om/YIIYToUI5eLnW43r/mWIWVE+BZfwTPKqDryISvZcmAAeaYbT2ZiRBCiM7L0XkgVdjt3/Byuxo71hwvvthevcGDzVFmWAshhMDhgbmwX2HIOuZEb2UnpLXPinfsMMfq6uS2RwghhCM5OjBvrNwYs9wqTbeW7U6sau065g8/NMd9++zVE0II0Sk5OjBnubNilltl5kw47jjo08devdauY372WbNU6swz7dUTQgjRKTk6MI/qNSpmuVWmT4evv7YfmOvqzPGwzQlow4bBli2S91oIIQTg8MBc2L/QLJXSQeVELVligmVTDmur1q83x+LixNsghBDie8vRgbmyuhKXfw2zS7morK5M/KKLFsHmzfYD80j/8qoJExJvgxBCiO8tR69jLiooItML9RoyMjPtZeqKpmkzifp6e/VOOcUE8969E2+DEEKI7y1HB2bPQA8lC6G0AIpeKWmfTF2xSFAWQgiRIEcHZgDPdvNFRwdlIYQQIgkc/YwZMLOok6lpl6fMzOReVwghhLDA8SNmfvlLmDQpedebMQO+/db+cikhhBAiCZw/Ys7Nhf79459n1WWXwb//Lc+LhRBCdAjnB+bHHjPBVAghhOgEnB+Yn3uuo1sghBBCJI3zA7MQQgjRiUhgFkIIIVKIBGYhhBAihTg/MF9zTUe3QAghhEiazrGO+ayzOroVQgghRFI4f8SstfkSQgghOgHnB+bHH4drr+3oVgghhBBJ4fzAvHBhR7dACCGESBrnB2YhhBCiE3F+YJbMX0IIIToR5wfm2bNl8pcQQohOw/mBWQghhOhEJDALIYQQKUQCsxBCCJFCJDALIYQQKUQCsxBCCJFCJDALIYQQKUQCsxBCCJFCJDALIYQQKUQCsxBCCJFCJDALIYQQKUQCsxBCCJFCJDALIYQQKUQCsxBCCJFClO6AnZmUUnuBb5N4yV7AviRe7/tI+jA5pB8TJ32YOOnDxCW7DwdrrXtbObFDAnOyKaVWaK0ndHQ7nEz6MDmkHxMnfZg46cPEdWQfyq1sIYQQIoVIYBZCCCFSSGcJzAs6ugGdgPRhckg/Jk76MHHSh4nrsD7sFM+YhRBCiM6is4yYhRBCiE7BUYFZKXWuUmqDUmqTUur2CO9nKqWW+t9frpQqaP9WpjYLffhrpdQ6pdQapVSJUmpwR7QzlcXrw6DzLldKaaWUzI4NY6UPlVJX+v8ufqWUeqW92+gEFv49D1JKfaiUWuX/Nz21I9qZqpRSLyil9iilvozyvlJKPeHv3zVKqZPbpWFaa0d8AWnAN8BQIANYDYwKO+dm4Fn/6+nA0o5udyp9WezDHwJd/K9vkj6034f+83KBj4FPgQkd3e5U+rL49/A4YBXQ3V/u09HtTrUvi/24ALjJ/3oUUNHR7U6lL+BM4GTgyyjvTwXeBhQwEVjeHu1y0oj5VGCT1nqz1roe+CtwUdg5FwEL/a9fByYrpVQ7tjHVxe1DrfWHWutqf/FT4Nh2bmOqs/L3EOBu4CGgtj0b5xBW+vAG4Cmt9QEArfWedm6jE1jpRw1087/OA75rx/alPK31x8D+GKdcBLysjU+BfKVU/7Zul5MC8zHAtqDydv/3Ip6jtW4EDgI926V1zmClD4Ndj/ltUTSL24dKqUJgoNb6zfZsmINY+Xs4AhihlPpEKfWpUurcdmudc1jpx/nATKXUduAt4Oft07ROw+7/mUmR3tYfkESRRr7hU8qtnPN9Zrl/lFIzgQnAD9q0Rc4Tsw+VUi7gUeDa9mqQA1n5e5iOuZ1dhLlr80+l1BitdVUbt81JrPTjVcBLWus/KaU8wF/8/ehr++Z1Ch0SU5w0Yt4ODAwqH0vL2zKBc5RS6ZhbN7FuU3zfWOlDlFJnA/8NXKi1rmuntjlFvD7MBcYApUqpCsxzqWUyASyE1X/Lb2itG7TWW4ANmEAtmlnpx+uBVwG01uVAFiYHtLDG0v+ZyeakwPw5cJxSaohSKgMzuWtZ2DnLgGv8ry8HPtD+J/gCsNCH/tuw/4MJyvJcr6WYfai1Pqi17qW1LtBaF2Ce01+otV7RMc1NSVb+Lf8dMxERpVQvzK3tze3aytRnpR+3ApMBlFIjMYF5b7u20tmWAbP8s7MnAge11jvb+kMdcytba92olJoLvIuZjfiC1vorpdQfgBVa62XAnzG3ajZhRsrTO67FqcdiH/4R6Aq85p83t1VrfWGHNTrFWOxDEYPFPnwX+JFSah3gBW7VWld2XKtTj8V+vAV4Tin1K8wt2GtlsNJMKbUE87ikl/85/F2AG0Br/SzmufxUYBNQDfykXdolf0ZCCCFE6nDSrWwhhBCi05PALIQQQqQQCcxCCCFECpHALIQQQqQQCcxCCCFECpHALIQQQqQQCcxCCCFECpHALIQQQqSQ/wdK3sVzI+73swAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n    \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n    \"res = dr_cate.effect_model.model\\n\",\n    \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n    \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n    \"pred = frame['mean']\\n\",\n    \"iv_l = frame['mean_ci_lower']\\n\",\n    \"iv_u = frame['mean_ci_upper']\\n\",\n    \"\\n\",\n    \"# This is the true CATE functions\\n\",\n    \"theta_true = true_fn(X_pre)\\n\",\n    \"# This is the true projection of the CATE function on the subspace of linear functions of the\\n\",\n    \"# subset of the features used in the projection\\n\",\n    \"true_proj = LinearRegression().fit(X[:, feature_inds], theta_true).predict(X[:, feature_inds])\\n\",\n    \"\\n\",\n    \"# Are we covering the true projection\\n\",\n    \"covered = (true_proj <= iv_u) & (true_proj >= iv_l)\\n\",\n    \"print(\\\"Coverage of True Projection: {:.2f}\\\".format(np.mean(covered)))\\n\",\n    \"\\n\",\n    \"fig, ax = plt.subplots(figsize=(8,6))\\n\",\n    \"\\n\",\n    \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n    \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], pred[order], 'g--.', label=\\\"pred\\\")\\n\",\n    \"#ax.plot(X[order, feature_inds[0]], theta_true[order], 'b-', label=\\\"True\\\", alpha=.3)\\n\",\n    \"ax.plot(X[order, feature_inds[0]], true_proj[order], 'y-', label=\\\"TrueProj\\\", alpha=.3)\\n\",\n    \"ax.legend(loc='best')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Lasso Final CATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 287,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x22d2af7d780>\"\n      ]\n     },\n     \"execution_count\": 287,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"lasso_driv_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n    \"                                      ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1),\\n\",\n    \"                                                                LassoCV(cv=5, n_jobs=-1, fit_intercept=False)))]))\\n\",\n    \"dr_cate.refit_final(lasso_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 288,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"dr_effect = dr_cate.effect(X)\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Random Forest Based CATE and Tree Explainer\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 289,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from utilities import SubsetWrapper\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# We need a model for the final regression that will fit the function theta(X)\\n\",\n    \"# Now we use a linear model and a lasso.\\n\",\n    \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=100, max_depth=3, min_impurity_decrease=0.1,\\n\",\n    \"                                                     min_samples_leaf=500, bootstrap=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 290,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_cate = dr_cate.refit_final(rf_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 291,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_effect = rf_dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 292,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(rf_dr_effect, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 293,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 3.91\\n\",\n      \"True ATE: 4.24\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"ATE Estimate: {:.2f}\\\".format(np.mean(rf_dr_effect)))\\n\",\n    \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 294,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - rf_dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, rf_dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 295,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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AAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwnj20X2sP7RcAAAAAAMDx6CEEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA5DIAQAAAAAAOAwBEIAAAAAAAAOQyAEAAAAAADgMARCAAAAAAAADkMgBAAAAAAA4DAEQgAAAAAAAA7zf3SlYiOBmV6TAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"Xdf = pd.DataFrame(X, columns=X_data.columns)\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n    \"shap_values = explainer.shap_values(Xdf)\\n\",\n    \"\\n\",\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 296,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 297,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"source\": [\n    \"# CATE  with DRIV-RW\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 298,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n    \"from dr_iv import IntentToTreatDRIV\\n\",\n    \"from utilities import WeightWrapper\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For intent to treat DRIV we need a flexible model of the CATE to be used in the preliminary estimation.\\n\",\n    \"# This flexible model needs to accept sample weights at fit time. Here we use a weightWrapper to wrap\\n\",\n    \"# a lasso estimator. WeightWrapper requires a linear model with no intercept, hence the Pipeline\\n\",\n    \"# that adds a bias to the features.\\n\",\n    \"rf_driv_model_effect = lambda: GradientBoostingRegressor(n_estimators=30, max_depth=2, min_impurity_decrease=0.001,\\n\",\n    \"                                                     min_samples_leaf=200)\\n\",\n    \"\\n\",\n    \"rf_dr_cate = IntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                            rf_driv_model_effect(),\\n\",\n    \"                            opt_reweighted=True, # re-weighting the final loss for variance reduction\\n\",\n    \"                            cov_clip=1e-7,\\n\",\n    \"                            n_splits=10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 299,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 7.05 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x22d3040d898>\"\n      ]\n     },\n     \"execution_count\": 299,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"rf_dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 300,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_effect = rf_dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 301,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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V1cXk3dQW5pEhMHBQXp6euju7l7s6miatkRUTVdMLpejubn5ognqAEopmpubL7pvKZqmza+qCezARRXUR12M71nTtPlVVYFd0zRNm7uq6WOf6E+fPljR8j77oQ0VK+vxxx/npptuYvny5QB87Wtf48/+7M84cuQIsViMlpaWip1L06rB/o2bJqVtOrB/3vPVUplzOU+l6Rb7LDz++OOcOnWq/HzHjh38n//zf1i9evUi1krT5sdUwWmq9Ernq6UyLyTfTI+fi6ptsS+G7373u3zlK1+hUChwzTXX8Nhjj3Hfffexa9culFJ88pOfZOXKlezatYtPfOITBINBXnjhBS6//PLFrrqmaVqZDuwl+/fv53vf+x7PPfccXq+XBx54gIcffpje3l727t0LQDwep6Ghga997Ws88sgjbN++fZFrrWmaNpnuiil55pln2L17N1dddRXbtm3jmWeeYWhoiKNHj/Lggw/yj//4j9TV1S12NTVN085LB/YSEeGee+5hz5497Nmzh7fffptHH32U119/nfe97318/etf51Of+tRiV1PTNO28dGAvufHGG3nqqafo7+8HYGhoiOPHj+M4Drfddhtf/OIXefXVVwGIRqMkk8nFrK6mLZjpRnFMTK90vloq80LyLcSoGERkwW9XXnmlTPTWW29NSltoTz75pGzdulW2bNkiV1xxhTz77LNy+eWXy9atW2Xr1q3y05/+VEREnnrqKdmwYYNs3bpVMpmMPProo7JixQoxTVOWLVsm99133wWdtxreu6Zp1Q/YJTOIscrNu7C2b98uEzfa2L9/P5s2zf8woGp0Mb93TdNmTim1W0TOO2pDj4rRNK1iRIS+TB9pK73YVakqy8LLCHlDC3Y+Hdg1TZuzgewAh4YPsW9wHydGTpC384tdpapR56vj7kvvZpV31YKdc8aBXSn1l8CtQL+IbC6lNQHfA7qAY8C/FZHhyldT07RqkywkOTR8iP1D+zkSP8JQbgiFoinQRJ1PDw0etaV1Cx3hjgU954W02B8HvgZ8Z0za54FnRORLSqnPl55/rnLV0zStmuSKOY4kjnBg8AAHhg4wmBuk6BRpDDTSXdeN19QbxkxU56vDZ/oW9JwzDuwislMp1TUh+SPA+0qPvw08iw7smrbkiAg/P/FzdvfvJpaJkS1mqffX0xnpJOAJLHb1tAnm2sfeLiKn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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - rf_dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, rf_dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 302,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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AAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEhAxSiXz8ZkKwAAAAAYkZE4AAAAAAkQcQAAAAASIOIAAAAAJEDEAQAAAEiAiAMAAACQABEHAAAAIAEiDgAAAEACRBwAAACABIg4AAAAAAkQcQAAAAAS8F9PQuQobHwDPwAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"Xdf = pd.DataFrame(X, columns=X_data.columns)\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n    \"shap_values = explainer.shap_values(Xdf)\\n\",\n    \"\\n\",\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 303,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 304,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Lasso CATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 305,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x22d3040d898>\"\n      ]\n     },\n     \"execution_count\": 305,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"lasso_driv_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n    \"                                      ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1),\\n\",\n    \"                                                                LassoCV(cv=5, n_jobs=-1, fit_intercept=False)))]))\\n\",\n    \"rf_dr_cate.refit_final(lasso_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 306,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"dr_effect = rf_dr_cate.effect(X)\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 307,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 4.855\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dr_effect)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 308,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     nan</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Tue, 04 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>08:49:17</td>     <th>  Log-Likelihood:    </th> <td> -43564.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>8.713e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>8.714e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>    3.9558</td> <td>    0.189</td> <td>   20.965</td> <td> 0.000</td> <td>    3.586</td> <td>    4.326</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>301.856</td> <th>  Durbin-Watson:     </th> <td>   2.023</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 188.061</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.200</td>  <th>  Prob(JB):          </th> <td>1.46e-41</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.460</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                       nan\\n\",\n       \"Date:                Tue, 04 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        08:49:17   Log-Likelihood:                -43564.\\n\",\n       \"No. Observations:               10000   AIC:                         8.713e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         8.714e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const          3.9558      0.189     20.965      0.000       3.586       4.326\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      301.856   Durbin-Watson:                   2.023\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              188.061\\n\",\n       \"Skew:                          -0.200   Prob(JB):                     1.46e-41\\n\",\n       \"Kurtosis:                       2.460   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 308,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from utilities import ConstantModel\\n\",\n    \"rf_dr_cate.refit_final(ConstantModel(), opt_reweighted=False)\\n\",\n    \"rf_dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Using Generic DRIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 64,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n    \"model_TZ_X = lambda: model_clf()\\n\",\n    \"\\n\",\n    \"# For generic DRIV we also need to provide a preliminary effect model. Here we use DMLIV\\n\",\n    \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n    \"dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, n_jobs=-1))\\n\",\n    \"prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n    \"                          dmliv_model_effect(), dmliv_featurizer(), n_splits=1)\\n\",\n    \"\\n\",\n    \"dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n    \"                        prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n    \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n    \"                        ConstantModel(), # model for final stage of fitting theta(X)\\n\",\n    \"                        cov_clip=.0001, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n    \"                        n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"                        binary_treatment=True, # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"                        opt_reweighted=False\\n\",\n    \"                       )\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 65,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 23.6 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.DRIV at 0x28443dfa940>\"\n      ]\n     },\n     \"execution_count\": 65,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 66,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th>  <td>   0.000</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th>  <td>   0.000</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th>  <td>     nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Mon, 03 Jun 2019</td> <th>  Prob (F-statistic):</th>   <td>   nan</td>   \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>17:28:23</td>     <th>  Log-Likelihood:    </th> <td>-2.6423e+05</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 50000</td>      <th>  AIC:               </th>  <td>5.285e+05</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td> 49999</td>      <th>  BIC:               </th>  <td>5.285e+05</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>      <td> </td>     \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>      <td> </td>     \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>    6.4038</td> <td>    0.213</td> <td>   29.995</td> <td> 0.000</td> <td>    5.985</td> <td>    6.822</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>2300.170</td> <th>  Durbin-Watson:     </th> <td>   1.995</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th>  <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 983.263</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>           <td>-0.085</td>  <th>  Prob(JB):          </th> <td>3.07e-214</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>       <td> 2.334</td>  <th>  Cond. No.          </th> <td>    1.00</td> \\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                       nan\\n\",\n       \"Date:                Mon, 03 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        17:28:23   Log-Likelihood:            -2.6423e+05\\n\",\n       \"No. Observations:               50000   AIC:                         5.285e+05\\n\",\n       \"Df Residuals:                   49999   BIC:                         5.285e+05\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const          6.4038      0.213     29.995      0.000       5.985       6.822\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                     2300.170   Durbin-Watson:                   1.995\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              983.263\\n\",\n       \"Skew:                          -0.085   Prob(JB):                    3.07e-214\\n\",\n       \"Kurtosis:                       2.334   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 66,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Deep CATE Models\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 309,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from deep_dr_iv import DeepIntentToTreatDRIV\\n\",\n    \"import keras\\n\",\n    \"treatment_model = lambda: keras.Sequential([keras.layers.Dense(100, activation='relu'),\\n\",\n    \"                                            keras.layers.Dropout(0.17),\\n\",\n    \"                                            keras.layers.Dense(100, activation='relu'),\\n\",\n    \"                                            keras.layers.Dropout(0.17),\\n\",\n    \"                                            keras.layers.Dense(100, activation='relu', name='final'),\\n\",\n    \"                                            keras.layers.Dropout(0.17),\\n\",\n    \"                                            keras.layers.Dense(1)])\\n\",\n    \"keras_fit_options = { \\\"epochs\\\": 100,\\n\",\n    \"                      \\\"batch_size\\\": 32,\\n\",\n    \"                      \\\"validation_split\\\": 0.1,\\n\",\n    \"                      \\\"callbacks\\\": [keras.callbacks.EarlyStopping(patience=10, restore_best_weights=True)],\\n\",\n    \"                      \\\"verbose\\\": 0}\\n\",\n    \"dr_cate = DeepIntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                                treatment_model(),\\n\",\n    \"                                training_options=keras_fit_options,\\n\",\n    \"                                cov_clip=0.0001,\\n\",\n    \"                                opt_reweighted=False,\\n\",\n    \"                                n_splits=3)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Train on 5999 samples, validate on 667 samples\\n\",\n      \"Epoch 1/100\\n\",\n      \"5999/5999 [==============================] - ETA: 5:26 - loss: 299.892 - ETA: 26s - loss: 354.182 - ETA: 13s - loss: 351.33 - ETA: 8s - loss: 341.6582 - ETA: 6s - loss: 344.994 - ETA: 4s - loss: 339.863 - ETA: 3s - loss: 332.279 - ETA: 2s - loss: 325.892 - ETA: 2s - loss: 321.658 - ETA: 1s - loss: 317.545 - ETA: 1s - loss: 316.145 - ETA: 1s - loss: 315.354 - ETA: 0s - loss: 311.800 - ETA: 0s - loss: 310.132 - ETA: 0s - loss: 310.833 - ETA: 0s - loss: 309.908 - ETA: 0s - loss: 310.722 - ETA: 0s - loss: 310.140 - 3s 515us/step - loss: 310.8258 - val_loss: 293.7797\\n\",\n      \"Epoch 2/100\\n\",\n      \"5999/5999 [==============================] - ETA: 0s - loss: 290.874 - ETA: 0s - loss: 281.009 - ETA: 0s - loss: 275.469 - ETA: 0s - loss: 282.807 - ETA: 0s - loss: 291.988 - ETA: 0s - loss: 291.367 - ETA: 0s - loss: 296.793 - ETA: 0s - loss: 297.297 - ETA: 0s - loss: 295.330 - ETA: 0s - loss: 294.633 - ETA: 0s - loss: 292.609 - ETA: 0s - loss: 293.316 - ETA: 0s - loss: 293.987 - ETA: 0s - loss: 296.553 - ETA: 0s - loss: 295.298 - ETA: 0s - loss: 295.750 - ETA: 0s - loss: 297.249 - ETA: 0s - loss: 296.779 - ETA: 0s - loss: 297.636 - 1s 165us/step - loss: 297.9532 - val_loss: 290.9141\\n\",\n      \"Epoch 3/100\\n\",\n      \"5999/5999 [==============================] - ETA: 0s - loss: 353.733 - ETA: 0s - loss: 317.860 - ETA: 0s - loss: 313.334 - ETA: 0s - loss: 310.712 - ETA: 0s - loss: 298.963 - ETA: 0s - loss: 297.131 - ETA: 0s - loss: 292.671 - ETA: 0s - loss: 292.006 - ETA: 0s - loss: 295.863 - ETA: 0s - loss: 296.595 - ETA: 0s - loss: 300.420 - ETA: 0s - loss: 299.434 - ETA: 0s - loss: 297.676 - ETA: 0s - loss: 298.048 - ETA: 0s - loss: 297.034 - ETA: 0s - loss: 296.767 - ETA: 0s - loss: 296.006 - 1s 154us/step - loss: 296.3891 - val_loss: 290.1784\\n\",\n      \"Epoch 4/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 327.018 - ETA: 0s - loss: 328.476 - ETA: 0s - loss: 308.882 - ETA: 0s - loss: 308.575 - ETA: 0s - loss: 301.019 - ETA: 0s - loss: 299.633 - ETA: 0s - loss: 297.654 - ETA: 0s - loss: 295.637 - ETA: 0s - loss: 296.047 - ETA: 0s - loss: 297.145 - ETA: 0s - loss: 296.706 - ETA: 0s - loss: 296.498 - ETA: 0s - loss: 297.652 - ETA: 0s - loss: 296.861 - ETA: 0s - loss: 296.012 - ETA: 0s - loss: 297.014 - 1s 146us/step - loss: 296.0292 - val_loss: 290.3011\\n\",\n      \"Epoch 5/100\\n\",\n      \"5999/5999 [==============================] - ETA: 0s - loss: 282.562 - ETA: 0s - loss: 301.161 - ETA: 0s - loss: 308.285 - ETA: 0s - loss: 306.007 - ETA: 0s - loss: 307.781 - ETA: 0s - loss: 312.917 - ETA: 0s - loss: 309.830 - ETA: 0s - loss: 306.091 - ETA: 0s - loss: 300.150 - ETA: 0s - loss: 298.899 - ETA: 0s - loss: 299.332 - ETA: 0s - loss: 299.757 - ETA: 0s - loss: 298.403 - ETA: 0s - loss: 296.926 - ETA: 0s - loss: 295.965 - ETA: 0s - loss: 296.155 - ETA: 0s - loss: 294.863 - ETA: 0s - loss: 295.676 - 1s 160us/step - loss: 294.6527 - val_loss: 288.7073\\n\",\n      \"Epoch 6/100\\n\",\n      \"5999/5999 [==============================] - ETA: 0s - loss: 300.002 - ETA: 0s - loss: 291.578 - ETA: 0s - loss: 298.211 - ETA: 0s - loss: 294.710 - ETA: 0s - loss: 291.454 - ETA: 0s - loss: 287.724 - ETA: 0s - loss: 293.096 - ETA: 0s - loss: 293.177 - ETA: 0s - loss: 292.519 - ETA: 0s - loss: 299.039 - ETA: 0s - loss: 297.526 - ETA: 0s - loss: 296.196 - ETA: 0s - loss: 295.295 - ETA: 0s - loss: 293.445 - ETA: 0s - loss: 294.419 - ETA: 0s - loss: 293.598 - ETA: 0s - loss: 292.586 - ETA: 0s - loss: 294.520 - 1s 164us/step - loss: 295.6590 - val_loss: 288.9459\\n\",\n      \"Epoch 7/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 345.764 - ETA: 0s - loss: 320.763 - ETA: 0s - loss: 300.876 - ETA: 0s - loss: 302.293 - ETA: 0s - loss: 298.457 - ETA: 0s - loss: 299.198 - ETA: 0s - loss: 301.962 - ETA: 0s - loss: 299.838 - ETA: 0s - loss: 300.588 - ETA: 0s - loss: 300.054 - ETA: 0s - loss: 299.700 - ETA: 0s - loss: 298.728 - ETA: 0s - loss: 297.597 - ETA: 0s - loss: 296.079 - ETA: 0s - loss: 295.968 - ETA: 0s - loss: 295.493 - ETA: 0s - loss: 294.529 - ETA: 0s - loss: 294.222 - 1s 160us/step - loss: 294.3245 - val_loss: 289.0797\\n\",\n      \"Epoch 8/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 353.364 - ETA: 1s - loss: 303.334 - ETA: 1s - loss: 294.946 - ETA: 0s - loss: 293.233 - ETA: 0s - loss: 296.413 - ETA: 0s - loss: 300.306 - ETA: 0s - loss: 296.860 - ETA: 0s - loss: 294.588 - ETA: 0s - loss: 295.004 - ETA: 0s - loss: 294.760 - ETA: 0s - loss: 295.633 - ETA: 0s - loss: 295.091 - ETA: 0s - loss: 293.803 - ETA: 0s - loss: 291.994 - ETA: 0s - loss: 292.381 - ETA: 0s - loss: 291.726 - ETA: 0s - loss: 291.234 - ETA: 0s - loss: 289.898 - ETA: 0s - loss: 291.160 - ETA: 0s - loss: 292.422 - ETA: 0s - loss: 293.252 - 1s 193us/step - loss: 293.6442 - val_loss: 289.7333\\n\",\n      \"Epoch 9/100\\n\",\n      \"5999/5999 [==============================] - ETA: 0s - loss: 294.347 - ETA: 0s - loss: 296.702 - ETA: 0s - loss: 303.601 - ETA: 0s - loss: 300.730 - ETA: 0s - loss: 295.067 - ETA: 0s - loss: 293.399 - ETA: 0s - loss: 289.884 - ETA: 0s - loss: 289.587 - ETA: 0s - loss: 291.665 - ETA: 0s - loss: 290.921 - ETA: 0s - loss: 291.288 - ETA: 0s - loss: 290.224 - ETA: 0s - loss: 292.786 - ETA: 0s - loss: 292.632 - ETA: 0s - loss: 293.623 - ETA: 0s - loss: 293.338 - ETA: 0s - loss: 293.515 - 1s 156us/step - loss: 293.4677 - val_loss: 289.0583\\n\",\n      \"Epoch 10/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 401.255 - ETA: 1s - loss: 312.943 - ETA: 1s - loss: 290.425 - ETA: 0s - loss: 285.409 - ETA: 0s - loss: 283.553 - ETA: 0s - loss: 287.505 - ETA: 0s - loss: 286.518 - ETA: 0s - loss: 286.484 - ETA: 0s - loss: 284.813 - ETA: 0s - loss: 285.207 - ETA: 0s - loss: 287.028 - ETA: 0s - loss: 289.021 - ETA: 0s - loss: 290.389 - ETA: 0s - loss: 291.404 - ETA: 0s - loss: 293.518 - ETA: 0s - loss: 294.755 - ETA: 0s - loss: 293.090 - ETA: 0s - loss: 293.332 - ETA: 0s - loss: 293.569 - ETA: 0s - loss: 294.240 - 1s 183us/step - loss: 294.0512 - val_loss: 289.0566\\n\",\n      \"Epoch 11/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 246.502 - ETA: 0s - loss: 296.322 - ETA: 0s - loss: 302.177 - ETA: 0s - loss: 293.142 - ETA: 0s - loss: 293.730 - ETA: 0s - loss: 298.843 - ETA: 0s - loss: 300.026 - ETA: 0s - loss: 296.248 - ETA: 0s - loss: 295.922 - ETA: 0s - loss: 291.251 - ETA: 0s - loss: 291.434 - ETA: 0s - loss: 291.041 - ETA: 0s - loss: 291.294 - ETA: 0s - loss: 292.077 - ETA: 0s - loss: 291.590 - ETA: 0s - loss: 290.961 - ETA: 0s - loss: 291.803 - ETA: 0s - loss: 293.417 - 1s 158us/step - loss: 293.4186 - val_loss: 289.8541\\n\",\n      \"Epoch 12/100\\n\",\n      \"5999/5999 [==============================] - ETA: 1s - loss: 282.541 - ETA: 0s - loss: 271.517 - ETA: 0s - loss: 290.033 - ETA: 0s - loss: 293.542 - ETA: 0s - loss: 287.584 - ETA: 0s - loss: 288.115 - ETA: 0s - loss: 293.385 - ETA: 0s - loss: 295.309 - ETA: 0s - loss: 295.574 - ETA: 0s - loss: 295.015 - ETA: 0s - loss: 291.681 - ETA: 0s - loss: 290.995 - ETA: 0s - loss: 292.197 - ETA: 0s - loss: 293.252 - ETA: 0s - loss: 292.618 - ETA: 0s - loss: 292.888 - ETA: 0s - loss: 292.747 - 1s 153us/step - loss: 292.5907 - val_loss: 289.4222\\n\",\n      \"Epoch 13/100\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dr_effect = dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from utilities import ConstantModel\\n\",\n    \"dr_cate.refit_final(ConstantModel(), opt_reweighted=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dml_iv/TA_DGP_analysis_Step_CATE.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import warnings\\n\",\n    \"warnings.filterwarnings('ignore')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"from sklearn.linear_model import LinearRegression, Lasso, LogisticRegression, ElasticNet\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\\n\",\n    \"from sklearn.preprocessing import PolynomialFeatures, StandardScaler, RobustScaler, QuantileTransformer\\n\",\n    \"from sklearn.pipeline import Pipeline\\n\",\n    \"import scipy.special\\n\",\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from dml_ate_iv import DMLATEIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Synthetic Data Generation - TripAdvisor\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"- Used for generating data that looks similar in structure (value distributions of private features are not representative of true data) to the data used for the intent-to-treat A/B test at TripAdvisor. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"import pandas as pd\\n\",\n    \"import locale\\n\",\n    \"\\n\",\n    \"n = 10000  # Generated dataset size\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"X_colnames = {\\n\",\n    \"    'days_visited_exp_pre': 'day_count_pre',  # How many days did they visit TripAdvisor attractions pages in the pre-period\\n\",\n    \"    'days_visited_free_pre': 'day_count_pre',  # How many days did they visit TripAdvisor through free channels (e.g. domain direct) in the pre-period\\n\",\n    \"    'days_visited_fs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor fs pages in the pre-period    \\n\",\n    \"    'days_visited_hs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor hotels pages in the pre-period\\n\",\n    \"    'days_visited_rs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor restaurant pages in the pre-period\\n\",\n    \"    'days_visited_vrs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor vrs pages in the pre-period\\n\",\n    \"    'is_existing_member': 'binary', #Binary indicator of whether they are existing member\\n\",\n    \"    'locale_en_US': 'binary',  # User's locale\\n\",\n    \"    'os_type': 'os',  # User's operating system\\n\",\n    \"    'revenue_pre': 'revenue',  # Revenue in the pre-period\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"treat_colnames = {\\n\",\n    \"    'treatment': 'binary',  # Did they receive the easier sign-up process in the experiment? [This is the instrument]\\n\",\n    \"    'is_member': 'is_member'  # Did they become a member during the experiment period (through any means)? [This is the treatment of interest]\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"outcome_colnames = {\\n\",\n    \"    'days_visited': 'days_visited',  # How many days did they visit TripAdvisor in the experimental period\\n\",\n    \"}\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def gen_data(data_type, n):\\n\",\n    \"    gen_func = {'day_count_pre': lambda: np.random.randint(0, 29 , n),  # Pre-experiment period was 28 days\\n\",\n    \"                'day_count_post': lambda: np.random.randint(0, 15, n),  # Experiment ran for 14 days\\n\",\n    \"                'os': lambda: np.random.choice(['osx', 'windows', 'linux'], n),\\n\",\n    \"                'locale': lambda: np.random.choice(list(locale.locale_alias.keys()), n),\\n\",\n    \"                'count': lambda: np.random.lognormal(1, 1, n).astype('int'),\\n\",\n    \"                'binary': lambda: np.random.binomial(1, .5, size=(n,)),\\n\",\n    \"                ##'days_visited': lambda: \\n\",\n    \"                'revenue': lambda: np.round(np.random.lognormal(0, 3, n), 2)\\n\",\n    \"                \\n\",\n    \"               }\\n\",\n    \"    \\n\",\n    \"    return gen_func[data_type]() if data_type else None\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_data = {colname: gen_data(datatype, n) for colname, datatype in X_colnames.items()}\\n\",\n    \"##treat_data = {colname: gen_data(datatype, N) for colname, datatype in treat_colnames.items()}\\n\",\n    \"##outcome_data = {colname: gen_data(datatype, N) for colname, datatype in outcome_colnames.items()}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"['days_visited_exp_pre' 'days_visited_free_pre' 'days_visited_fs_pre'\\n\",\n      \" 'days_visited_hs_pre' 'days_visited_rs_pre' 'days_visited_vrs_pre'\\n\",\n      \" 'is_existing_member' 'locale_en_US' 'os_type' 'revenue_pre']\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"X_data=pd.DataFrame({**X_data})\\n\",\n    \"# Turn strings into categories for numeric mapping\\n\",\n    \"X_data['os_type'] = X_data.os_type.astype('category').cat.codes\\n\",\n    \"print(X_data.columns.values)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X_pre=X_data.values.astype('float')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def dgp_binary(X,n,true_fn):\\n\",\n    \"    ##X = np.random.uniform(-1, 1, size=(n, d))\\n\",\n    \"    Z = np.random.binomial(1, .5, size=(n,))\\n\",\n    \"    nu = np.random.uniform(-5, 5, size=(n,))\\n\",\n    \"    coef_Z = 0.6\\n\",\n    \"    plt.title(\\\"Pr[T=1 | Z=1, X] vs Pr[T=1 | Z=0, X]\\\")\\n\",\n    \"    plt.scatter(X[:, 0], coef_Z*scipy.special.expit(0.4*X[:, 0] + nu))\\n\",\n    \"    plt.scatter(X[:, 0], .1*np.ones(X.shape[0]))\\n\",\n    \"    plt.show()\\n\",\n    \"    C = np.random.binomial(1, coef_Z*scipy.special.expit(0.4*X[:, 0] + nu)) # Compliers when recomended\\n\",\n    \"    C0 = np.random.binomial(1, .006*np.ones(X.shape[0])) # Non-compliers when not recommended \\n\",\n    \"    T = C * Z + C0 * (1 - Z)\\n\",\n    \"    y = true_fn(X) * T + 2*nu + 5*(X[:, 0]>0) + 0.1*np.random.uniform(0, 1, size=(n,))\\n\",\n    \"    return y, T, Z\\n\",\n    \"true_fn = lambda X: (.8 + X[:,0]*(X[:,0]>15))# - 3*X[:, 6])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XuUVdWdJ/Dvl6JKEGmBWBotKFFCyEAwEiuI0c7S1bHRGLESX6Bk4iQtPUlY6Y4JE42OomOiLem0mTV2T2vi5KGCb4IJGZL06OrEEQIEjUEbRYK8HCXxEUEUKH7zx71F37q1d9Xet86pc8+5389ataj7q33P2acu9bv77rMfNDOIiEixDMm6AiIikjwldxGRAlJyFxEpICV3EZECUnIXESkgJXcRkQJSchcRKSAl9zpDcjPJPSR/mHE9HiN5epZ1GCiS15PcTdJIDs26Pt1Ifo/kXpKbM67HQpILs6zDQJH8LMld5df4PVnXp54ouaesIlnvIvkyyf9F8rB+nnaumX2KZHv5ebsq/gPvrnj85xH1OIPkoyTfGGhSIfnTqnrtIvl2uX7tkce6neQGkgdIXhbxvMPKv9tLKmIjSW4heQEAmNl1AKbE1KcWFcl6F8lXSf6c5Pv6edotZja+/Pz1Fb/HrvLvsvvx1yLqcTTJZSR3lF+L8QO4pq85XuPuN8r/GHmsMSQfLj//xcrXrJ/nNZH8deXvoBxbQ/IrAGBm3zWz/v6eGpKS++A4t/wf8IMAPgTgmuoCLOnxepjZFjM7rPurHP5AReyXEXXYDeBOAAtqvIbKep1dVa/DAawE8AMz2xJ5uKcAfB7AbyLrsAvAPADfJtlaDt8CYI2ZPRBZhyTcUv5djAXwCoDvuQq5PkGY2ZSK3+UvAcyv+P1+I6IOBwD8bwDnR9e+d52+Ufkal+v2DwCeAfBg5OFuA7AXwFEALgXwTyT7fdM1sy4AnwFwZcWb5VcAWLku0gcl90FkZtsB/BTA+4GDXR9fJ/k4gLcAHJ/iuX9tZj8EsCmFw38DwBgAn4t9opndZmb/AuDtGp77MwA/AfDfy11IFwH4QujzSf5Pkt+siv2I5BXl779KcjvJN8ufLv4ioE5vAbgH//4aLyT5AMm7SP4JwGWh9YtlZi+b2T8CWJ30sUl+DMAXAVxgZrsjnjcCpTeb/2pmu8zsVwCWAfhUyPPN7HcAvgXguyT/A4CvAfhMOfFLH5TcBxHJcQA+BmBdRfhTKLVARwJ4sYZjXknydd9XMjXv8/znAfhrAOeXE1t33FsnklcmWIUvATgdwAMAvmJmL0U89x4AF5Nkuc6jAfwlgCUkJwGYD+BDZjYSwEwAm/s7YLnL7VL0fI3PK9dvFIC7I+rXfczT+vl9nhZ7zMjzjwfwQwDzzOzZiviP+6jTj8vF3gugy8yeqzjkU4jrLvsGgD9D6VPNrWb29ECup1HUzU2mgltKcj+AN1BqaVZ+1P6ema3vflDOM8HM7GYANydRyVgkJ6DU/fBZM3u+ql6jBqMOZvYayfUAPgzgocin/xKlj/h/DuBfAVwA4Akz28HSzblDAEwmudPMNvdzrK+QnI/SJ5Bfo2cL/QkzW1r+fk8Nr/GvUHpjGHQkDwFwP4C7zWxJVb0+HnCIw1D6f1/pDZQaM0HMbC/JVQA+ixreHBuVWu6Do9PMRpnZsWb2eTPbU/GzrZnVagBIDkOpNXqnmcX2wSZZj7kAxgP4BYC/i3mulZZEXQJgTjl0CcrJw8w2AvhbAAsBvEJyCclj+jjcN8uv8bvNbJaZvVDxs1y+xmXfBrAfwJdrfP4ulFrdlf4MwJuhB2Bp4EAngB+U6yMBlNyzN6A1lz2jGg5+JVVJh9tQukn7VU+9vHWKGQHSF5JHonRj7XKUuoYuIvmRyMMsBnAByWMBnIyKm4Vmdo+ZnQbgWJRep6g3jwoDfY3/vJ/fZ/Coqcjzfgql/vKLzGyf4+euUVPdXz8tF3sOwFCSEyue+gEA66uP56nDMADfRelG6ucATCq/oUs/1C2Tc+XRFP2OqCiPxGkB0Fx6yGEADpjZ3thzkvwMgI8DmGZm+z31ChqeRrIFpUYGATSX67XXzA6Ub5I+ama+foz/AWCpmT1aPtZ/AXAHyRPM7J2Q85vZOpI7AXwHwAoze718rEkA2gA8jlJXyx5k1Bgqj4oK/X0OA9BUfngIyWFmFn2zmuT7AfwjSvdSnJ88zOzs/o5jZrtJPgTgBpJ/BeBElO5BfLh8nvEAfg/gOE/X1w0AXjSz75XLzwOwmOQKM9sZeVkNRS33xvERlBLUcgDt5e9/VuOxrkFpdMxzCbQif1auy4cB3F7+vrv1PQ7AE64nkewEcBoqhnaa2XcAbANwbWQdFgP4KEo3WLsdgtK9jD8A+H8AjkRppEa924NSVwgA/Fv5cS2uADACwEMJfPL6PIDhKA0RXQzgcxX3mcahNJBge/WTSHag9IlsXnfMzH4B4McAbo29oEZD7cRUX0huAHA0gIfN7NMZ1uMxAAvN7LEM6/AdAPeb2Yoan38dSknqEAAj6mX4HMk7UOrnf9nMJmRYj4UAYGYLM6zDNQB2mtk/1/j8/4RS19wwAJPNLI2hvrmk5C5O9ZDcJV31kNwlPepzF5/vIWBct+TaY1lXQNKjlruISAFl1nI/4ogjbPz48VmdXkQkl9auXfsHM2vtr1xmyX38+PFYs2ZNVqcXEcklkkHLlGgopIhIASm5i4gUkJK7iEgBKbmLiBSQkruISAEpuYuIFJCSu4hIASm5i4gUkJK7iEgBBSV3kmextPv7Rt/mxiQvIvkMyfUk73GVERGRwdHv8gMkm1DaUu1MlDZCWE1ymZk9U1FmIoCrAJxa3rD4yLQqXIszv/UYnn9l98HHE48cgZ9fcbqz7Pgrf9Irtvnmc2oul1bZIp6/iNek8+v8MWWT1O+qkCRPQWld75nlx1cBgJndVFHmFgDPlXfCCdLR0WEDWVsm9BdWndi7uRK865iuY4eWS6tsEc9fxGvS+XX+mLKhSK41s47+yoV0y7Sh5+7t28qxSu8F8F6Sj5NcSfKs8KrG8/3CXHFXYu8rLiJSBCGrQro2J65u7g8FMBHA6QDGAvglyfd3bzZ88EClzW3nAUB7e3t0ZUVEJExIy30bSpvYdhsLYIejzI/MbJ+Z/R7ABpSSfQ9mdruZdZhZR2trv8sRi4hIjUKS+2oAE0keR7IFwGwAy6rKLAVwBgCQPAKlbhptVCsikpF+k7uZ7QcwH8AKAM8CuM/M1pO8geSscrEVAP5I8hkAjwJYYGZ/TKvSIiJJ8t3cdMXTKpu0oJ2YzGw5gOVVsWsrvjcAV5S/RERSs/nmc4JHy8WWjalDGmWTlNk2eyIi3WKScF/xgZYtEiV3EUnN3BntuGvlFme8WqMm4bQouYtIam7snAoAWLxqK7rM0ERizsnjDsYlPUruIhIlpjUOlBK8kvngU3IXkShqjeeDkruI4KiRLXj5zb3OuIta4/VP67mLCFZdfWavRH7UyBasuvrMjGokA6WWu4gAgBJ5wajlLpIzzZ6/Wl9cGpP+O4jkzAHPFgyu+KkTxjjL+uJSHEruIjnT5Unurvjdl5/SK5GfOmEM7r78lBRqJvVEfe4iBadE3pjUchcRKSAld5EUDXHtY9ZHXCQpSu4iKZrQOiIqHmLU8OaouDQmJXeRFG3a+VZUPMTCWVPQXNX0bx5CLJw1peZjSvHohqpIirrMPbTFFw/ROa0NALBoxQbseH0Pjhk1HAtmTjoYFwGU3EVyqXNam5K59EndMhItps/Xd99Q9xNF0qXkLtGmHDMyOO7rfKi9U0JEQii5S7SVm16LiovI4FNyl2hp3CQsqrZRw6PiIklRck+Z+pwb24KZkzC8ualHbHhzExbMnJRRjaRRBCV3kmeR3EByI8krHT+/jOROkk+Wv/4q+aqmLzQRxyy5WsQ+Z71hheuc1obzT2pDE0u/nSYS55+kkS6Svn6TO8kmALcBOBvAZABzSE52FL3XzE4sf30n4XoOitBEXN0S6y9eNEV8w0rL0nXbce/qrQe7rLrMcO/qrVi6bnuPcr7NpX1xkf6EtNynA9hoZpvMbC+AJQDOS7da9e1P73RFxaVxXf/IeuyrWot3X5fh+kfW94jd2DkVc2e092jhz53Rrn1KpWYhk5jaAGyteLwNwMmOcueT/AiA5wB8ycy2VhcgOQ/APABob1eLRIrvtbf2Bce16bQkKaTl7upKrf4E/giA8WZ2AoBfAPi+60BmdruZdZhZR2tra1xNRWowosXdVeaLixRFSHLfBmBcxeOxAHZUFjCzP5rZO+WHdwA4KZnqDa7hnjulvrhkw/dquOK797q7ynxxkaIIyVqrAUwkeRzJFgCzASyrLEDy6IqHswA8m1wVB8/5J42NiodQyzF5uqEr0r9+k7uZ7QcwH8AKlJL2fWa2nuQNJGeVi32R5HqSTwH4IoDL0qpwmhav2hIUjxkKaJ6JPb540lqa3LX1xfNAyV2kf0GrQprZcgDLq2LXVnx/FYCrkq3a4AvdeDgmuby174CzrC+etL2ei/LFRaQYCt+ZrAk34XyN+Rw38lNxyFD3n40rrm32JCuFT+76CB8u9JNLo3tnv/tTlyt+ycnuIb++uEhStFmHSIq6x60vXlWapdpEYs7J4zSeXVKn5C6CUjed6wNKEr0nmpwkWchlt4z60SVp6r6Tosllcs/TH6ImRhVPzKqgIlnRf8eU7fEMefTFs6RPRGE891O9cZEsKLnXoKhDBj0j/LzxIol5YzvGs4uSLy6ShQb4s01eUYcM+j5M1OGHjMTFdPUtmDkJzVUD1ZuHULsrSV1Rcq8jo4Y3R8VD5KV/mJ6msy8eKq3r33fA+nwskrU6+xMvnpgddtJIcC1D3QuU+eJJC02uvqV2BroEDz2/PF88xJfufTIqLpIFJfeU/X7nruD4656NHXzxEDFL3qbxySG0q6fJk2x98VBprK2Tp9Fa0riU3Gsw+lB3snPFH3/hVWdZV3yU57i+eNIWzpri7EteOGtK6ufu8jTRfXER6ZuSew3OOeHoqHioNLomYlrjndPacPH0cT328bx4+jh0TmurvQKB2jwjTXzxUGn15YvUOyX3Gvz4qZei4qFe3+PplvHEQ8S0xpeu2467Vm452FruMsNdK7dg6brtNZ8/1Ph3uZO4Lx7qw8ePiYqHOGpkS1RcJAtK7hVCxzqnkYRjzh/TGo1pjX/5PvcNQV88xKGeO6rV8ZWbXnOW88VDPfPSm1HxEKuuPrNXIj9qZAtWXX1mzccUSVouFw5La5GnrG+UhZ4/pvtm6brteHDt9h6t8QfXbkfHsWN6Jfg0xu+HjlZJq8/9Nc/NaF88lBK51LtcttyzTsJ56sddtGID9uzrOTJmz74uLFqxYVDOHzpaR0sfiCQrl8k9a2mNyQ4dhRPa1QEA21/f4yzri2cl6zdskaJRcq9BzJjsmFb+dedO6bX92hCW4pUOaXZPQPLFQw311LU6nsZ4+KxNPHJEVFyk3im51yCmfzimlb/mxVdRPYv9gJXildLqR97vqWt1/OMfcA/59MXz4PlXdkfFReqdknsNYsZkx2yQvHjVVmdZXzwrd63cEhUXkcGn5F6DQ1s8fd6OuG89KVdcszRFJClByZ3kWSQ3kNxI8so+yl1A0kh2JFfFgUljzRJ9hM8PjcKRRtVvcifZBOA2AGcDmAxgDsnJjnIjAXwRwKqkKzkQc04eFxXPg5it+3wv8GB9ZEtjWYGYm9QfnuCZoVoVH+rpP/PFRepdyN/4dAAbzWyTme0FsATAeY5y/w3ALQDeTrB+A3Zj51TMndHeY4bm3Bntud6Nfuxod2J0xX37bAzW/htnvK81KN7i2cbKFX9Pq3sEiyseOkN19nT3m70vLlLvQpJ7G4DKO3rbyrGDSE4DMM7MftzXgUjOI7mG5JqdO3dGV1ZKsu4WilkV8ye/da+3Ux3f55kG64q/sNN9na546MiitNYLEslKSHJ3NakO/sWRHALgHwB8ub8DmdntZtZhZh2tre4WXdKuWfq0czGsa5Y+PSjnL6KYdedDk2vMcscxN6lDpbVekEhWQpL7NgCVn03HAthR8XgkgPcDeIzkZgAzACyrl5uqd3uG5/niRROzmXforkmHeyYr+eIh3vC8CfjiItK3kOS+GsBEkseRbAEwG8Cy7h+a2RtmdoSZjTez8QBWAphlZmtSqTHibtI1+rT2mMXAQndNql6rpr94iLTuDWi0jDSqfpO7me0HMB/ACgDPArjPzNaTvIHkrLQr6LJg5iQMr5pqP7y5SbvPD5J39rtTri+epUZ/c5fGFTQizsyWm9l7zWyCmX29HLvWzJY5yp6eZqsdKK1RPnb0sB6xsaOHDcqOQbFibj5KmJihoKHUwpeiyeUM1UvveKLXyJDnX9mNS+94IqMa+aW1JV/RhPb3A8BNnzzBWdYVDz3upTPaneV8cZF6l8vkHrPpdIw0WtmP/pt7yKcvXjShreyLp7uTqC/u2jrQxddTVB0v4nwIaWy5TO5pue7cKWiuGkbS3MReS+7GyMt66jHiFk5zJ93q+INrtznLueKLVmzAvqpxj/sOmHMDkpg+9xs7p+KFmz6GzTefgxdu+pgSu+SaknuFzmltmD5+dI/Y9PGjB9SXn8baNlkLnXUKhO/EtMczVMcVL+IbpkjSCp/cY7parln6dK+uncdfeLXXhKeYm29FXOkxdNapiGSn8Mk95oZm6HrqjT68LmazkJgbpSKSnML/icW0MovYys5a6MSoGEXs6hJJWuGTe0wrU0kjH2YcPzo4HrOZuEiR6H94hZikkaU01kjPk1//3j3k1RVPazNxkXqn5F4hdO3vtISOCV8wc5JznHc9Lr+QxszPmK6etDYTF6l3uUzuMd0nI1rcLTRXPOtEcP5JY4Pj1XksiVVdYjbMCJX1zWd1tUmjymVyj7nxucczztoXz1LobNbrH1mPrqpJPF0HDNc/sn5A59/rWULSF09SGuvFALpJLo0rl8k9poWZ9TZzMXZ4JuFUx7P+hBGzRnyoYZ4+cF88lFru0qhymdzTamFmvYLjME8r1RcPEdMtFSpmjfhQab1hqeUujSqXyT0toROefL+0gf4y01gn/YAnifniRdPoI4ukcSm5VwjdJNk8n+h98VBp7A0as2ZLqLT6x0PFjMDRxi7SqHKZ3CceOSI4HtNyC90k2dfobZDGMPZ3ud8YfPGkxYzA6ZzWhps+ORVto4aDKL3uN31yal1u7CKSpKFZV6AWb+11JxFXfMHMSVhw/1M9logd6JjwJtLZZ1uPN+lGH9rs7LceyH2ENJYUSFPntDYlc2k4uWy5h44q6RY6JvyQoe5fR3V8zsnjnOV88aTFdIuksUa9iNS/XCb3YzxdLa54zJjw0BuaN3ZOxakTxvSInTphzIA3d/BsJtQrHjPZqXNaGxZd8IEe3RKLLviAWrIiBZfL5D7+Xe7k7oqnMcRu6brt+M2WN3rEfrPlDSxdt73mYwLhN1TztHVf6BtW6KcmEQmTy7+clZtei4onbdGKDdizr3onoS7nNm9piNmJaOm67Vhw/1PY/voeWLnMgvufGtAbUWjCBoBLTnbvgVodjxkGmsYyCSJFk8vkHjMxxXeP0xUPnXkZ2+eftJhrWrhsvXO/0YXLal+qIGbIZhobT2e5TIJIXgQld5JnkdxAciPJKx0//88knyb5JMlfkZycfFVrEzNsMTRpxcwkTWPWa8w1hQ7vTFPHsWPw7sOHgQDeffgwdBw7pt/niMjA9JvcSTYBuA3A2QAmA5jjSN73mNlUMzsRwC0AvpV4TWsUs7ZI6PjpmC6EmERcxC3plq7bji9XdQt9eYDdQqOGu98YfXGRRhSSNqYD2Ghmm8xsL4AlAM6rLGBmf6p4OAJ1tJ1oGmuLxHRLvOFpIbvieRs/HuLqh592jla6+uGnPc/o35RjRkbFRRpRSHJvA1C5Q/S2cqwHkl8g+QJKLfcvug5Ech7JNSTX7Nw5OCM78rQYWBobW8QsHJbG72q3Z2llXzxE1jfURfIgJLm7ckuvNqqZ3WZmEwB8FcA1rgOZ2e1m1mFmHa2trXE1rRCThLJeKuBtT7PbFU9jY4uYhcOuO3dKrxEvQ4heE57SWGkyhlZ6FOlfSHLfBqBy6uVYADv6KL8EQOdAKtWfmIQd0y2Shqx3IopZOGzNi6/26lo6YKV4z1hjrzQpkgchyX01gIkkjyPZAmA2gGWVBUhOrHh4DoDnk6tibzEjQA71tCZ98TxIo/sGAO5euSUonsZKkyKSrH4XDjOz/STnA1gBoAnAnWa2nuQNANaY2TIA80l+FMA+AK8B+HSalY5ZuCuNPt+spfVpIOtPGSKSnKBVIc1sOYDlVbFrK77/m4Tr1aei9rm2NNE5Ead65mXbqOHO2aiDtQHFELpHBvlmrorI4MvlCOqijnNu8mTH6vgZ73PfjPbFkxYzFPRQz2ghXzxEzPIHIo0ql8k9Zvp91mK25Avty35w7TZnOV88VOiaLWlMDIuRxo5VIkWTy+Se1mbKadyo/NbFJ0bFQ6R1QzN0zZaYbjHdfBXJRi6Te1ouneFewdAXD9E5rc25cFae11PPemJYUbvlRJJU+OSe9YSbpeu248G12w+2arvM8ODa7c61VbJOmqF2ve3+hOSLh4ha6XLWFDRXdbA3DyEWztLuUiLdcpncY26off0TU3vdkGwaQnz9E72XnL17lWecd1U8puUYs/Z76JZ4Wb9hpbEGzqWedd9d8c5pbVh0YdXuUhdqdymRSrncILvJMxTPdT+wc1ob1rz4Khav2oouMzSRmDN9nDMRhM58nXLMSDz+wqu9yrkWrorZWKO7TotWbMCO1/fgmFHDsWDmpF51/cQH23CXY8LRJz5Yf8mteYg76Q90pUttei3St1y23GNajjHdIqGyXrgqT9vseVZH7hVfvGqrs5wvLiJ9y2VyjxHTLRI6JjutSVRL123HVQ893WPt86seerrXG1HMp4Gsx4SHDoUs6sQ0kazkMrmHbocHxCXCb3zyBGdZXzxEzJjw0DeimGO2HtbiLOuLi0gx5DK5+7bKHOgWmvevcd9Q9cVDHHGY++arKx66N2tMK/flN/c6y/riIlIMuUzuaXHdJO0rHiImuYZ2ofjWkBno2jLDPd1SvriI1K/C/9Wm0ec81PNkXzxU6CeS8e9yJ3FfPNSwZvdQSl88ROiSBpqYJJKsXCb3o0a6+4td8UOGui/RFw+x37OIiS+etP+7yf1JwhU/dcIYZ1lX/HXP8g2+eIjQJQ1aPa+pLy4ifctlcn9ll7urwxUv4tomMTtRHdd6mLOsK57lxibPv7I7Ki4ifctlco9JbnlaQXLikSOi4iFixo+/5dnAxBcPkVYXloj0LZfJPUbWG2TH9Pl/4YyJvYOOeMxQ0JiRNWksz5t1F5ZIoyp8cs9azNrjrolVrnhaQ0FFpDiU3OtI6Dh3EZH+KLlXCF1yN6YfP2bs+OGeYX++eIiYMfFpjZ8XkcGn5F4htH8+ph9/iOedwBXf1+UeweOLh1gwc5JzGeEFMyf1KpvW+HkRGXxK7hVe3+MZ510Vj2m57/aMNHHFY8rG2FfVGV/9uFuWq13G3CQWkf4FJXeSZ5HcQHIjySsdP7+C5DMkf0vyX0gem3xV0xe6IFfWI3BifO2h3wbHs1yZ8e8vcu8p64uLSN/6Te4kmwDcBuBsAJMBzCE5uarYOgAdZnYCgAcA3JJ0RWsVM60962VnQzfojtnI+y3PZC1fPCud09pw68Un9thd6daLT9SGHCI1CtmJaTqAjWa2CQBILgFwHoBnuguY2aMV5VcCmJtkJQdi4awpuOLeJ1GZyoaU49WaSGci97XoQwxvHuKcDeu6oRo6znwI3cMe8z4vSLsriSQnpFumDUDldMZt5ZjPZwH81PUDkvNIriG5ZufO2ncNit1DlFVZr/pxtzRa7jGLcYV2C8WMc49p5ceUDaUROCLZCEnurr9tZ3ohORdAB4BFrp+b2e1m1mFmHa2treG1rBIzTf76R9ajq2rGUNcBw/WPrO9VNo1EFLMYVxpvLtUjZfqKx3xycHHFF8ychOFVb2TDm5uco3VEJDkhyX0bgHEVj8cC2FFdiORHAVwNYJaZvZNM9dxGecaju+KveZKrK37G+9xvOL54iJi6pvHmEroqY4yYWbed09pw/kltBz99NJE4/yR1v4ikLSS5rwYwkeRxJFsAzAawrLIAyWkA/hmlxP5K8tXs6e197pa7Lx7qJ799KSoeIqauRRxnnsYG5SLSv36Tu5ntBzAfwAoAzwK4z8zWk7yB5KxysUUADgNwP8knSS7zHC4RaS3jG9PKDxVT1yc867T74iGy3gQjZoNyEUlOyGgZmNlyAMurYtdWfP/RhOtV15qHAK6cPdDd6GK6O0JNOWakc5vAKceMrP2gEbRejkg2cjlDNXTrtlih68AsutA9scYXT1rMDNksZ50CcfccRCQ5uUzuvunzvniomGGL1SNDfCNIYhKxr+VfHY+ZIZv1xKw8zeYVKZJcJvc0NpUAwvvcr39kfa+ukgMG5/DKmOTWMtT95uKL50Hoej0ikqxcJve0hE7iibnxmtYiYyIifVFyr5DGJ4KsuyVCZ72KSLEouRfcEYe5b1z64iJSDEruBffym3uj4iJSDErudSTrLpQ0Fg6bO6M9Ki4iyVByrxC72mTSjm89NCqetJibv6Fu7JyKuTPae6wtM3dGO27snFr7QUWkX0EzVBtF1qNVnn9ld1CccN/kHWj7Po0ZskApwSuZiwyuXLbcs/6on0b3RYy0xvmLSHHkMrn/fueu4HgaiThPyTV01quIFEsu/8RdC2H54sM8WcwXL5r9noUyfXERKYbCZ7iYJXfTWJAs6yV3Yz5lZN3dJCLJKXxyj5HGgmRpjEBJS566m0Skb0ruFQ73tKZ98RBpbACSNbXwReqfknuF3e+4E64vngdpjN1XC1+k/im5V/Dt0jfA3fsydcCzQpkvHkItd5H6p+RecGnsN6uWu0j9U3IXESmgwif30H1RRUSKJJcZLqbPt8uzMIovLv1Tn7tI/ctlco+ZdbrXM0bdFc96yd28uNSzho8vLiJZUXEEAAAHxElEQVSDL2hVSJJnAfg2gCYA3zGzm6t+/hEAtwI4AcBsM3sg6YpW2rPvADa1XNJjIpAZcPzee5zlQ8t2mQWXTeP8MWWzPP+NnVNxw5OngRXvj0ZgSOcbzmNi4eGOmKNsaLm0yur8On+W509Yvy13kk0AbgNwNoDJAOaQnFxVbAuAywC4M0bCuhNQ9demlksGpWyjnx8LD8cQ9CwzpBzvxRVzxUPLpVVW59f5szx/CkJa7tMBbDSzTQBAcgmA8wA8013AzDaXfzYoI8K7E0p1bLDKNvr5RaT+hfS5twHYWvF4WzkWjeQ8kmtIrtm5c2cthygfKDIuItJgQpK7K2XWNNTEzG43sw4z62htba3lECIiEiAkuW8DMK7i8VgAO9KpThg7ULrR1yNmpXivsuYp63h7Ci2bxjHzdH4RqX8hyX01gIkkjyPZAmA2gGXpVqtvx++952DSqfxyjQBJo2yjn98/KsA1AiGwbBrH1Pl1/rycPwX93lA1s/0k5wNYgdJQyDvNbD3JGwCsMbNlJD8E4GEAowGcS/J6M5uSZsV9Q/kGq2yjnz/qP2do2TSOqfPr/Hk5f8KCxrmb2XIAy6ti11Z8vxql7hqpM0T4rkvNQ9wrYGqlBpH80Z9twcWs4LjowhOdZX1xEalfQS13aQyd00ojXBet2IAdr+/BMaOGY8HMSQfjIpIfSu7SQ+e0NiVzkQJQt4yISAEpuYuIFJCSu4hIASm5i4gUkJK7iEgBKbmLiBSQknvBnTphTFRcRIpByb3g7r78lF6J/NQJY3D35adkVCMRGQyaxNQAlMhFGo9a7iIiBaTknkPaZVBE+qPknkOXzmiPiotI41Gfew7d2DkVALB41VZ0maGJxJyTxx2Mi4gouefUjZ1TlcxFxEvdMiIiBaTkXkd829lpmzsRiaW0UUe0zZ2IJEV97nVE29yJSFKU3OuMtrkTkSSoWyZlt17s7lLxxUVEkhCU3EmeRXIDyY0kr3T8/BCS95Z/vork+KQrmled09pw68Unom3UcBBA26jhuPXiE9U6F5FU9dstQ7IJwG0AzgSwDcBqksvM7JmKYp8F8JqZvYfkbAB/B+DiNCpcD+bOaMddK7c44y7qahGRwRbScp8OYKOZbTKzvQCWADivqsx5AL5f/v4BAH9BMndLnYSufX5j51TMndGOpvIlNpGYO6Ndk4pEpG6E3FBtA7C14vE2ACf7ypjZfpJvAHgXgD9UFiI5D8A8AGhvr791UO6+/BRcescTePyFVw/GfGufa4aoiNSzkOTuaoFbDWVgZrcDuB0AOjo6ev08VEy3yOabz8H4K3/ijLto7XMRKYKQ5L4NwLiKx2MB7PCU2UZyKIDDAbyKlMQunOVL5CIiRRWS3FcDmEjyOADbAcwGcElVmWUAPg3gCQAXAPg/ZlZzyzyEukVERPz6Te7lPvT5AFYAaAJwp5mtJ3kDgDVmtgzAdwH8kORGlFrss9OstIiI9C1ohqqZLQewvCp2bcX3bwO4MNmqiYhIrTRDVUSkgJTcRUQKSMldRKSAlNxFRApIyV1EpICU3EVECkjJXUSkgJjyRFL/icmdAF5M4FBHoGqBsoIo4nXpmvKhiNcEFOe6jjWz1v4KZZbck0JyjZl1ZF2PpBXxunRN+VDEawKKe10+6pYRESkgJXcRkQIqQnK/PesKpKSI16VryociXhNQ3Otyyn2fu4iI9FaElruIiFRRchcRKaBcJ3eSZ5HcQHIjySuzrk8SSG4m+TTJJ0muybo+tSJ5J8lXSP6uIjaG5M9JPl/+d3SWdYzluaaFJLeXX68nSX4syzrGIjmO5KMknyW5nuTflOO5fa36uKZcv1axctvnTrIJwHMAzkRpD9fVAOaY2TOZVmyASG4G0GFmuZ5sQfIjAHYB+IGZvb8cuwXAq2Z2c/nNeLSZfTXLesbwXNNCALvM7JtZ1q1WJI8GcLSZ/YbkSABrAXQCuAw5fa36uKaLkOPXKlaeW+7TAWw0s01mthfAEgDnZVwnKTOzf0XvTdLPA/D98vffR+kPLjc815RrZvaSmf2m/P2bAJ4F0IYcv1Z9XFNDyXNybwOwteLxNhTjBTQAPyO5luS8rCuTsKPM7CWg9AcI4MiM65OU+SR/W+62yU33RTWS4wFMA7AKBXmtqq4JKMhrFSLPyZ2OWD77mHo61cw+COBsAF8odwVI/fonABMAnAjgJQB/n211akPyMAAPAvhbM/tT1vVJguOaCvFahcpzct8GYFzF47EAdmRUl8SY2Y7yv68AeBil7qeieLncH9rdL/pKxvUZMDN72cy6zOwAgDuQw9eLZDNKSfBuM3uoHM71a+W6piK8VjHynNxXA5hI8jiSLQBmA1iWcZ0GhOSI8g0gkBwB4C8B/K7vZ+XKMgCfLn//aQA/yrAuiehOgGWfQM5eL5IE8F0Az5rZtyp+lNvXyndNeX+tYuV2tAwAlIcy3QqgCcCdZvb1jKs0ICSPR6m1DgBDAdyT12siuRjA6Sgts/oygOsALAVwH4B2AFsAXGhmublB6bmm01H6mG8ANgP46+6+6jwgeRqAXwJ4GsCBcvhrKPVR5/K16uOa5iDHr1WsXCd3ERFxy3O3jIiIeCi5i4gUkJK7iEgBKbmLiBSQkruISAEpuYuIFJCSu4hIAf1/xs7h1LyJJesAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"y, T, Z = dgp_binary(X_pre, n, true_fn)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"X = QuantileTransformer(subsample=100000).fit_transform(X_pre)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"#### y menas number of days visit TripAdvisor in the experimental period, should be in range [0,14], \\n\",\n    \"##should be strong right skewed\\n\",\n    \"plt.hist(y)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE: 10.710\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 720x144 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(10, 2))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.hist(T[Z==0])\\n\",\n    \"plt.title(\\\"T[Z=0]\\\")\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"plt.hist(T[Z==1])\\n\",\n    \"plt.title(\\\"T[Z=1]\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"New members: in treatment = 0.514747, in control = 0.006423\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"New members: in treatment = {:f}, in control = {:f}\\\".format(T[Z == 1].sum()/Z.sum(), T[Z == 0].sum()/(1-Z).sum()))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Z treatment proportion: 0.50180\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"Z treatment proportion: {:.5f}\\\".format(np.mean(Z)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining some generic regressors and classifiers\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_ate_iv import DMLATEIV\\n\",\n    \"from utilities import RegWrapper, SeparateModel\\n\",\n    \"from sklearn.model_selection import GridSearchCV, StratifiedKFold, train_test_split\\n\",\n    \"from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\\n\",\n    \"from sklearn.dummy import DummyClassifier\\n\",\n    \"from sklearn.linear_model import LinearRegression, LogisticRegression, LogisticRegressionCV, LassoCV\\n\",\n    \"from sklearn import metrics\\n\",\n    \"from xgboost import XGBClassifier, XGBRegressor\\n\",\n    \"from xgb_utilities import XGBWrapper\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"# Define a generic non-parametric regressor\\n\",\n    \"#model = lambda: GradientBoostingRegressor(n_estimators=20, max_depth=3, min_samples_leaf=20,\\n\",\n    \"#                                         n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001)\\n\",\n    \"model = lambda: XGBWrapper(XGBRegressor(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n    \"                           early_stopping_rounds=5, eval_metric='rmse', binary=False)\\n\",\n    \"\\n\",\n    \"# model = lambda: RandomForestRegressor(n_estimators=100)\\n\",\n    \"# model = lambda: Lasso(alpha=0.0001) #CV(cv=5)\\n\",\n    \"# model = lambda: GradientBoostingRegressor(n_estimators=60)\\n\",\n    \"# model = lambda: LinearRegression(n_jobs=-1)\\n\",\n    \"# model = lambda: LassoCV(cv=5, n_jobs=-1)\\n\",\n    \"\\n\",\n    \"# Define a generic non-parametric classifier. We have to wrap it with the RegWrapper, because\\n\",\n    \"# we want to use predict_proba and not predict. The RegWrapper calls predict_proba of the\\n\",\n    \"# underlying model whenever predict is called.\\n\",\n    \"#model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=20, max_depth=3, min_samples_leaf=20,\\n\",\n    \"#                                         n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001))\\n\",\n    \"model_clf = lambda: RegWrapper(XGBWrapper(XGBClassifier(gamma=0.001, n_estimators=100, min_child_weight=50, n_jobs=10),\\n\",\n    \"                                          early_stopping_rounds=5, eval_metric='logloss', binary=True))\\n\",\n    \"# model_clf = lambda: RandomForestClassifier(n_estimators=100)\\n\",\n    \"# model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=60))\\n\",\n    \"# model_clf = lambda: RegWrapper(LogisticRegression(C=10, penalty='l1', solver='liblinear'))\\n\",\n    \"# model_clf = lambda: RegWrapper(LogisticRegressionCV(n_jobs=-1, cv=3, scoring='neg_log_loss'))\\n\",\n    \"\\n\",\n    \"model_clf_dummy = lambda: RegWrapper(DummyClassifier(strategy='prior'))\\n\",\n    \"\\n\",\n    \"# We need to specify models to be used for each of these residualizations\\n\",\n    \"model_Y_X = lambda: model() # model for E[Y | X]\\n\",\n    \"model_T_X = lambda: model_clf() # model for E[T | X]. We use a classifier since T is binary\\n\",\n    \"model_Z_X = lambda: model_clf_dummy() # model for E[Z | X]. We use a classifier since Z is binary\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"# For DMLIV we also need a model for E[T | X, Z]. We use a classifier since T is binary\\n\",\n    \"# Because Z is also binary, we could have also done a more complex model_T_XZ, where we split\\n\",\n    \"# the data based on Z=1 and Z=0 and fit a separate sub-model for each case.\\n\",\n    \"model_T_XZ = lambda: SeparateModel(model_clf(), model_clf())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def plot_separate(X, X_pre, cate):\\n\",\n    \"    ones = X[:, 6]>.5\\n\",\n    \"    lower = []\\n\",\n    \"    upper = []\\n\",\n    \"    unique_X = np.unique(X[ones, 0])\\n\",\n    \"    for t in unique_X:\\n\",\n    \"        upper.append(np.percentile(cate[ones & (X[:, 0]==t)], 99))\\n\",\n    \"        lower.append(np.percentile(cate[ones & (X[:, 0]==t)], 1))\\n\",\n    \"    p = plt.fill_between(unique_X, lower, upper, label='est1', alpha=.5)\\n\",\n    \"    plt.plot(unique_X, lower, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.plot(unique_X, upper, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.scatter(X[ones, 0], true_fn(X_pre[ones]), label='true1', alpha=.8)\\n\",\n    \"    ones = X[:, 6]<.5\\n\",\n    \"    lower = []\\n\",\n    \"    upper = []\\n\",\n    \"    unique_X = np.unique(X[ones, 0])\\n\",\n    \"    for t in unique_X:\\n\",\n    \"        upper.append(np.percentile(cate[ones & (X[:, 0]==t)], 99))\\n\",\n    \"        lower.append(np.percentile(cate[ones & (X[:, 0]==t)], 1))\\n\",\n    \"    p = plt.fill_between(unique_X, lower, upper, label='est0', alpha=.5)\\n\",\n    \"    plt.plot(unique_X, lower, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.plot(unique_X, upper, color=p.get_facecolor()[0], alpha=.5)\\n\",\n    \"    plt.scatter(X[ones, 0], true_fn(X_pre[ones]), label='true0', alpha=.8)\\n\",\n    \"    plt.legend()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DMLATEIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {\n    \"scrolled\": true\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dml_ate_iv.DMLATEIV at 0x2b34dcfd4a8>\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dmlateiv_obj = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\\n\",\n    \"                  n_splits=10, # n_splits determines the number of splits to be used for cross-fitting.\\n\",\n    \"                  binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"                  binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"                 )\\n\",\n    \"\\n\",\n    \"dmlateiv_obj.fit(y, T, X, Z)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"True ATE: 10.710\\n\",\n      \"Estimate: 12.471\\n\",\n      \"ATE Estimate Interval: (11.804, 13.138)\\n\",\n      \"ATE Estimate Std: 0.340\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"ta_effect = dmlateiv_obj.effect()\\n\",\n    \"ta_effect_conf = dmlateiv_obj.normal_effect_interval(lower=2.5, upper=97.5)\\n\",\n    \"\\n\",\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\\n\",\n    \"print(\\\"Estimate: {:.3f}\\\".format(ta_effect))\\n\",\n    \"print(\\\"ATE Estimate Interval: ({:.3f}, {:.3f})\\\".format(ta_effect_conf[0], ta_effect_conf[1]))\\n\",\n    \"print(\\\"ATE Estimate Std: {:.3f}\\\".format(dmlateiv_obj.std))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Exogenous Treatment Approaches\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.360</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.360</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   5630.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>  0.00</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:25:38</td>     <th>  Log-Likelihood:    </th> <td> -34896.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>6.980e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9998</td>      <th>  BIC:               </th> <td>6.981e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>    4.5161</td> <td>    0.092</td> <td>   48.936</td> <td> 0.000</td> <td>    4.335</td> <td>    4.697</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x1</th>    <td>   13.5406</td> <td>    0.180</td> <td>   75.030</td> <td> 0.000</td> <td>   13.187</td> <td>   13.894</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>24.348</td> <th>  Durbin-Watson:     </th> <td>   1.975</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td> <th>  Jarque-Bera (JB):  </th> <td>  24.515</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td> 0.120</td> <th>  Prob(JB):          </th> <td>4.75e-06</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.965</td> <th>  Cond. No.          </th> <td>    2.46</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.360\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.360\\n\",\n       \"Method:                 Least Squares   F-statistic:                     5630.\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):               0.00\\n\",\n       \"Time:                        20:25:38   Log-Likelihood:                -34896.\\n\",\n       \"No. Observations:               10000   AIC:                         6.980e+04\\n\",\n       \"Df Residuals:                    9998   BIC:                         6.981e+04\\n\",\n       \"Df Model:                           1                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const          4.5161      0.092     48.936      0.000       4.335       4.697\\n\",\n       \"x1            13.5406      0.180     75.030      0.000      13.187      13.894\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                       24.348   Durbin-Watson:                   1.975\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):               24.515\\n\",\n       \"Skew:                           0.120   Prob(JB):                     4.75e-06\\n\",\n       \"Kurtosis:                       2.965   Cond. No.                         2.46\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 25,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Simply regressing y on T\\n\",\n    \"from utilities import StatsModelLinearRegression\\n\",\n    \"StatsModelLinearRegression().fit(T.reshape(-1, 1), y).summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"11.925897467470786\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Regressing y on X, X*T, T and setting CATE(X) = Pred(X, X*1, 1) - Pred(X, X*0, 0))\\n\",\n    \"from econml.utilities import hstack\\n\",\n    \"est = StatsModelLinearRegression().fit(hstack([X, X*T.reshape(-1, 1), T.reshape(-1, 1)]), y)\\n\",\n    \"T_one = np.ones(T.shape[0])\\n\",\n    \"T_zero = np.zeros(T.shape[0])\\n\",\n    \"driv_cate = est.predict(hstack([X, X*T_one.reshape(-1, 1), T_one.reshape(-1, 1)]))-\\\\\\n\",\n    \"            est.predict(hstack([X, X*T_zero.reshape(-1, 1), T_zero.reshape(-1, 1)]))\\n\",\n    \"print(np.mean(driv_cate))\\n\",\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"Exog-T CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - driv_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, driv_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"12.426392029432668\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAXYAAAEICAYAAABLdt/UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xl4XdV96P3vOoN0ztF8NBzJlmXJoybL8ghhCqMDMQlJE1r65ibkhoYGkjz38vY+DW96m9CGXGgvN23zEpoXChcSkhsIaZuWkDJ4wHjAwQYDxjaTJ0mWdKQzz8Pe6/3jHDlCkm3JlqzBv8/z6JG0z9p7ry1bP62z9m//ltJaI4QQYu6wTHcHhBBCTC4J7EIIMcdIYBdCiDlGArsQQswxEtiFEGKOkcAuhBBzjAR2IYSYYySwzyFKqaNKqYRSKjrs48HzeP5FI86tlVKxYd9/7BT73aCUekUpFVFKeZVSW5VSG0e0uTZ/vP972LYrhx07ln99+PnnKaW2K6WSI7b/yziv50/yx/zbEds/n9/+T8O23a6Uejd/DX1KqWeVUkX5155USqVH9GHvKc55iVLqJaWUXyk1oJR6SinlOUVb64hjRpVShlLq78ZzfeOllKpUSv06/zM+qpT6o2GvzVdK/btSqjf/M6mfzHOLsyOBfe75lNa6eNjHN87XibXWh4fOC5TnN7cN68uukfsopW4BngIeA+YDdcBfAZ8e0fRWwJ//PHS+rcPOtzK/bfi1n8g3/dqI7Z+dwGV9APyxUso6bNuXgPeGXcM1+T7/oda6BGgDnhlxnP8xog9rTnG+CuAfgYVAI5AEHh2rodbaGH5MYB6QAn45gesbuoZ7lVL//RQv/xiIATXkfv6PKKWa86+ZwHPA5yd6TjF1JLBfIJRS/6iUembY93+jlNqklFL577+qlPogP1L8N6XUvGFtN+RHoyGl1ENKqZeVUn8yCX2yAP8L+K7W+n9rrcP5YLVFa/2nw9oVA38A3AG0KqU6z/XcE9ADvAtcm+9LFbAO+M2wNuuAHVrrNwG01j6t9eNa69hET6a1/o3W+lda60h+/x8Bl45z95uBHq31zqENSqlPK6XeVEoF8+9e2ifSH6VUKfAZ4L9rrWNa65fJXft/yve3V2v9j8CY70DE9JDAfuH4M6BDKfVlpdTlwG3ArVprrZS6GrgP+ENyI+ZjwC/gZCB7Bvh/gEpyQe6SSepTK7lR5sjR7Ug3A4F8u5fIjZjPWX4qI6iUuvgMTX8y7Jz/F/DPQHrY668CG5VS381PpRRORv/yrgDeGWfbW4Enhr5RSq0DHgH+hNy/3WPAr5VSBRM4/3IgqbU+PGzbm+TelYgZSgL73POv+WA19PFVAK11nNwo6wfAk8A3tdbd+X2+ADymtX5da50iF8Q/ppRqBD4JvKO1/metdRb4IdA3SX2tzH/uPUO7W4FfaK1N4OfAF5RStgmc56ERP5PvwsmpjHKt9atn2P9XwLVKqRJyAf4nw1/UWm8lNxWxDvgtMKiU+p/5dyRD7h7RhzGnV4ZTSq0C/gL483G0XURuZD+8b7cDD2mtX8tf62P57evOdLxhioHQiG0hoGQCxxDnmQT2uecz+WA19PHI0Ata698BhwEFPD1sn3nkRulD7aKAj9yc9zyga9hrGhj6g4BS6p1hN+4un2BfffnPdadqkP/jcgXws/ymfyEXbK6fwHnuHPEz+auJdDI/JfI88JdAidZ69xhtfqO1vpHcHPkfAF8F/vOwJveP6MNtpzunUmoZuSmPrw+fWjmNLwFbtdbHh21bCHxr+B8Ucj/r+flz/HbY9v8G/MWwtv+aP0YUKB1xrlIgMo4+iWkigf0CopT6OlAInOCjo8AT5ILAULsicqPpHnKj6fphr6nh32uth98cfWWCXTqQP/fnTtPmS+T+EP1WKdVH7mZmAZM0HTMBPyEX/H5yukZaa1Nr/SKwFZjQfPYQpVQTuSmn72qtfz6O9gr4IsOmYfK6gL8a8QfFpbV+Ot/XG4a2Aw8A3x/W7jP5Y7wLOPN9GrKS8U8PiWkggf0CkR8B3ktuOuaLwJ8Puwn5c+A/K6U68/PD/wPYrbU+Sm7UuEIp9Zn89MfXgdrJ6FN+auXPgHuUUrcqpUqVUhal1OVKqR/nm30J+A7QOezjj4BPK6UqJqMf47QZuA54aOQLSqnPKqX+UClVoXIuBi4nN/c+IUqpBflz/WD4u60zuJxcxsqvRmx/GPi6Umpdvl/FSqlP5f9wj4vWOgz8GvieUsqVf1e2kdx03lCfHeQGDACFk3yPQZwNrbV8zJEP4CiQIPf2eejjXwAb8Dvg7mFt7wDeBgrz338N+JBcSuGzQP2wtteTS+8LkQtsu4AvnqEvNkADjePo9yeB7fn+eoEtwA3AZUAccI9or4BD5NIYh7YtIT9TNKLtdnIpg8N/Jr/Lv2bNf/+xU/TrT8hNb4z12v3AP+W/vopcMPaRm6J4F/izYW2fJHezdXgf+k5x3O/lf27D2waHvf6XwL+P2OdR4H+f4ngbgT1AkNy7o6eAojHa3Usu82WsY1QB/0Yu5fEY8Edj/DsP/8hO9+/Chf6h8v84QoxL/oZgN/AFrfWW6e6PEGI0mYoRZ6SU+oRSqjz/Fvvb5EbME55mEEKcHxLYxXh8jNw0zSDwKXKZN4np7ZIQ4lRkKkYIIeYYGbELIcQcM5Gn9yZNVVWVbmxsnI5TCyHErLV3795BrXX1mdpNS2BvbGxkz54903FqIYSYtZRSx87cSqZihBBizhl3YFdKOZRSv8uXAH1HKfVX+e1NSqndSqn3VW5RgIlUjhNCCDHJJjJiTwFXa61Xknus+/r8o9N/A/yd1nopudKqpy1uJIQQYmqNe45d5/Iio/lv7fkPDVxNrkY15IoQ3UNuBZgJyWQydHd3k0wmJ7rrrOZwOKivr8dut093V4QQc8SEbp6q3PJge8nV5fgRuYdWgjpXpxtyj5rPP8W+t5OrD01DQ8Oo17u7uykpKaGxsZFcsbq5T2uNz+eju7ubpqamM+8ghBDjMKGbpzpXrL+TXNnW9UDLWM1Ose/DWuu1Wuu11dWjs3WSySSVlZUXTFAHUEpRWVl5wb1LEUJMrbPKitFaB8nVm74YKB+2mk09uQpyZ+VCCupDLsRrFkJMrYlkxVQrpcrzXzvJLe57kFyJ1aEVym8lV7tZCCHENJnIHHsd8ER+nt0CPK21flYpdQD4hVLqXuANcrWhz9nfvfjeZBzmpLuuWzZpx3r88cfZsGED8+bNA+DBBx/k7//+7/nwww8ZGBigqqpq0s4lhJi9DjYv46PjZ5OWQ5Mb28Yy7hG71votrfUqrXWH1rpda/3X+e2HtdbrtdZLtNY369xiyHPa448/zokTv59xuvTSS3nppZdYuHDhafYSQlxIhoJ68iMJb5b89qk1LSUFZqonn3ySH/7wh6TTaS666CIeeughbrvtNvbs2YNSiq985SssWLCAPXv28IUvfAGn08muXbtYtWrVdHddCDHDmFh4r17xToPi0gMmtcGhV6b+gX8J7HkHDx7kqaeeYseOHdjtdu68807uvfdeenp62L9/PwDBYJDy8nIefPBBHnjgAdauXTvNvRZCzET+pJ/NKxW+EkVRpJiyWPi8nl8Ce96mTZvYu3cv69atAyCRSHD99ddz+PBhvvnNb7Jx40Y2bNgwzb0UQsxkpjZ5w/sGm49vJumyYfcvwm820O94m8ZM33nrhwT2PK01t956K/fdd99Htn//+9/n+eef50c/+hFPP/00jz322DT1UAgxk/kSPl489iJveN8gGDXx+Ndj4mT1wPs0RPqHtTSnvC8S2POuueYabrrpJu666y5qamrw+/1EIhEqKir43Oc+x+LFi/nyl78MQElJCZFIZHo7LIQ4L86U2WKYBm9432BL1xaOho6TjjXgHajh8A0JvvOPD1OZiqNOse9UmbGBfTLTE8ejtbWVe++9lw0bNmCaJna7nR/84Ad89rOfxTRzf2GHRvNf/vKX+drXvnby5ukjjzzC3/7t39LX10dHRwef/OQn+ad/+qfz2n8hxOQbHdRhKLOl5dB7DCYGefHoi+wb2Ec4bhL2r2QwbMFeGMBTHuHh73yWKxrW89V1nziv/Z6WNU/Xrl2rRy60cfDgQVpaxqpQMPddyNcuxEx2sLl5zO2mgviWn7KlawvHQl2YiQb6B2qIpJJUlAUoLMycbDuZgV0ptVdrfcasjRk7YhdCiJkoWASvLbXQ894zxJImUX8H/UEbVnuQmqoIFsv5HyyPJIFdCCHGwVRwqF5xoEFhy0I0UkW/10MomaSsdACnY/SzmWkzzsHga0TSl1BSUHLe+iqBXQghTskELASL4HfLcp8rA4VEE20c6a5GW0NUV4WwjhilGzpL1OhHY6J0JeF0WAK7EEJMpfHWcFly4B3++ZPtvDffij0DtT21dNlb2H1jJyVFAxQ5P1pyW2uTuBkgZYYpsnooTLeiQq0kE2VQPLXXNJwEdiHEBeVMmS5DusJdvHjsRQ7c/SmyhiIWXEavz06GKFXlXmzWj+ajp8woUcOLw1JGtWUtOt7MwvIarlpeQ32Fc+ovbBgJ7EKIC8yparXktsczcXac2MHOnp1444NYU014fVX4YmmKigYpdyUYvoxCVqeJGv0oLFTbWlDJNkostaxa7Ob69lrmlZ/foP77KxEEg0EeeuihSTvetm3bWL16NTabjWeeeWbSjiuEmBoaOOA7wGP7H+PfPniWbp/Gd2IN73VVEEyFqXR7KSn6fVDX2iSS9RLOnqDE6qFWXY0tdgVLKpr4Txc3cusljdMS1EFG7CcNBfY777zzI9sNw8BqtU74eA0NDTz++OM88MADk9VFIcQUCTth7xJF1zs/ozuQJBVqIRwvBGuUsrIIBQXZk2211iTNMHHTh8vqps62mnRkCSWOEta3urmutRZ3UcE0Xs1sDuzvvQg7/wGCx6B8IVzyX2DZdWd9uLvvvpsPP/yQzs5O7HY7xcXF1NXVsW/fPp577jluvPHGk1UeH3jgAaLRKPfccw8ffvghX//61xkYGMDlcvHII4/Q3NxMY2MjABaLvCkSYmbJZboAGAoOLlAcWGDBX1DG8WPlxGOVKEuc0rIghQWZj+yZMZNEzT5sOJhX2EFhqoNsoowWTwnXt9fSNq90Rix3OTsD+3svwm//G1gKwFEBkf7c9zxw1sH9/vvvZ//+/ezbt4+tW7eyceNG9u/fT1NTE0ePHj3lfrfffjs//vGPWbp0Kbt37+bOO+9k8+bNZ3ddQoizNt5Ml5ZD73GweRneMguvLbVytKKMdHoex1ZugESGsjLvqIBu6ixRYwCDNBW2RiotK4mEPZQUO7mstYqrltdQVDhzwunM6clE7PyHXFAvcOW+L3BBOr/9HEbtw61fv56mpqbTtolGo+zcuZObb7755LZUas4vICXEjDPeTBeASDrC0ef+X577YAcfeCNk4w1YKaCs2P+RUgBDEkaIuOmj2FZNXUEn2ehiUqaN1Q1lXN9ey+Lq85jHOE6zM7AHj+VG6sPZnRA8PmmnKCoqOvm1zWY7WQgMIJnM5a6apkl5eTn79u2btPMKIc7G6TNdADJmhn3efbxwZCt7jncTCldiM5soL4njKIyO2tPUWcJGHxasLHCspsxchd9fyLwKJ1c113DJ4koKbRO//3Y+zM4J4PKFkEl8dFsmAeUNZ33I05Xi9Xg8eL1efD4fqVSKZ599FoDS0lKampr45S9/CeRuqrz55ptn3QchxOTTWvN+4H0e3/84D7/+C7a/FyLsX0a504mnKoRjjFF60gwTzB6nyOpmieM6LNGLSaZcXLKkijuuXMxVy2tmbFCH2Tpiv+S/5ObU0+RG6pkEmOnc9rNUWVnJpZdeSnt7O06nE4/Hc/I1u93Od77zHS666CKamppoHlbx7Wc/+xl33HEH9957L5lMhltuuYWVK1fy2muv8dnPfpZAIMC///u/893vfpd33nnnXK5aCDFB/mL41fu/Ym/fPt7vTxALLsQ0rdRUBkc9YARgaoOIkVvpqK6wg1JjLaGgg6aqIq5rrWXNwgqslum/OXom4y7bq5RaAPwEqCV3W/lhrfU/KKXuAb4KDOSbfltr/dzpjjUpZXtPZsUcz43UzzErZjpJ2V4hzs3IOfakHfYvVByphWN/cB3BwALC4QpczjAlxTHGSlwZenK02FbNPNta4uEmigvtrGus4BPtddOewghTU7Y3C/yZ1vp1pVQJsFcp9WL+tb/TWp/fhO1l183aQC6EGL/xZLsMZbqYysL783IVGNNWOHrj5/H3NpLIpHFXDFBgzzKS1iYRox+TLLUFrRRn1xILF7OkpoTr22rpqC+bESmMEzHuwK617gV6819HlFIHgflT1TEhhJhItkvF3m28eOxF9g/uJ5LMEPEvZaDPgdUepqYyzFiPlKTNOBGjnyKrG49tNcnwIgpdTq5sq+TaNg+lDvuUXdtUOqs5dqVUI7AK2A1cCnxDKfUlYA+5UX1gjH1uB26H3FOZQghxZuPIdjEy7O7bzbbubZyI9mJNNzDQ7yGYOHWddK1NosYAWVLU2Jfhyqwhnaigta6EG1bU0VxbMutG6cNNOLArpYqBXwH/VWsdVkr9I/A9cqUWvgf8L+ArI/fTWj8MPAy5OfZz6bQQQgB0R7p54egLvON7B8Owkw520uOzYqgw1ZUhrGPcIB2aS3dZK6i1ricdWUJpcTGXt1ZxVXMNroLZmVMy3ISuQCllJxfUf6a1/mcArXX/sNcfAZ6d1B4KIcQIaSts7drKtu5teGMDWNJN9HqrCCbSFBcNUjSiAiOAoTNEjH4UCo+9lYJ0BySrWLWglBva61hSM/MeNDpb4w7sKve+5FHgoNb6B8O21+Xn3wE+C+yf3C4KIS5cv6/rMuSEG15frDjxwa8xsi6ivlX0hxRYQ1RXhkeN0rXWJMwACTNEqa0WNytJRRdSVVrElctruHxpFQ77zM1JPxsTGbFfCnwReFspNfSo5beBP1ZKdZKbijkK/OlkdOyhfZNXQhfgzs47z9xonB5//HE2bNjAvHnzADhy5Ai33HILfr+f1atX89Of/pSCgulPjRJipppoXRewkLTDvkWKY9Uw8EfXYkaa6B0oJ5ZJUFYSGnMuPWMmiRh9FFhczC9Yg4q3Y7GUcHFTOde317LA7Zqya5xOE8mK2Q6MdTfhtDnrc9Hjjz9Oe3v7ycD+rW99i7vuuotbbrmFr33tazz66KPccccd09xLIWamiWS6ADQffJcPgh+w69iLvOt/j2y6jEBfE76oib3QT01lFMuINUdNbRDL3xx12xdSaq4iGfHQWFnMNS01rG90Y7POzgfvx2P23yWYRE8++SQ//OEPSafTXHTRRTz00EPcdttt7NmzB6UUX/nKV1iwYAF79uzhC1/4Ak6nk127drF582Z+/vOfA3Drrbdyzz33SGAX4pTOnOkyJJKO8HLXy/yu73cMxEJkIsvp9xeRMmNUVITGzEtPmhFixgAuq5t5totJRxZRWFjEZc0VbGirpbK4cJKvZ+aRwJ538OBBnnrqKXbs2IHdbufOO+/k3nvvpaen52Qd9mAwSHl5OQ8++CAPPPAAa9euZXBwkPLycmy23I+yvr6enp6e6bwUIWY9rTX7B/ez6fgmPggeJpuowedbTTCeweUapKYofpqboxZqC9pxpjvJJspo9pTwibZa2ufPjFrp54ME9rxNmzaxd+9e1q1bB0AikeD666/n8OHDfPOb32Tjxo1s2LBh1H5jlWS4UP7zCDEVfAkfm49v5nXv6wxEUySD7fjCdrQlQpU7hM021s3RIAkdoMw6j0rLKhKRBSdrpV+5vIbiGVQr/Xy4sK72NLTW3Hrrrdx3330f2f7973+f559/nh/96Ec8/fTTPPbYYx95vaqqimAwSDabxWaz0d3dfXLuXQgxltGZLgCGMnmt7zW2dG3hcKCbZGQBvkA1yWySspKxHzTK6jQRoxebclBnW40t2YGpi1mTr5W+aAbWSj8fJLDnXXPNNdx0003cdddd1NTU4Pf7iUQiVFRU8LnPfY7Fixfz5S9/GfhoiV+lFFdddRXPPPMMt9xyC0888QQ33XTTNF6JENPjbDJdhgyWmBx94i/Zd/BpBsM2osEOwnFwOv14ykcX7dJaEzf9pMwwxZb5ODOdWBINNFQVcfnSai5eVEmBbe7eHD2TcVd3nEyTUt1xCjz11FPcd999mKaJ3W7nBz/4AXfdddfJRTbuu+8+brjhBn71q1/x7W9/++TN097e3pPpjqtWreLJJ5+ksHD8N2hmwrULcS7GznSBUwX3IWkjzau9r/JK9yt84PMSCy4iHClFWaOUl4XHLK2b1UnC2T7sFFOYXYrL6KDJXcmlS6pY3+SmZJbWdxmP8VZ3lMA+A1zI1y7mhoPD1igYqeXQoTG3HwkdYdPxTezrO8BAoIRYqIGUkaG8NISjMD2qvdYmMXOQlBnHlq2n2FjJkrKlXLq0moubKilzzd2APmQqyvYKIcQ5i6ajvNL9CjtPvMoHA2HiwcXEkw5criCeMbJdIFeFMZz1orMlOI21LC9by2WL5/OxRZUXRPriRElgF0KcF6Y2eXvwbbYc38Lb/UcI+D1Eo+3YbDGqK/vHLNiltUkk6yWWyWLPNrCs5GKuXtzOJUsqqSlxTMNVzA4S2IUQk2DsTJfcdvDGvWw6tom9fW9yfFATC7WSzmoqSgcoHGPNUchVYQxnBsmky5hfuJZPLLucq5vnU1fmnLrLmCMksAshTulcMl3AZPE7+3ml+xW2db/Cof5+wsGFxOKluJzhMbNdIFcOIJztJ5HWOPQiLq6+gs93dtA278J5wOhcSWAXQoxpojVdhm/TWnMkdIQn3nmCN/oO4vUXEw+vwCBFlduL3WaMec6kGSaU9mOmK2hwreLTyy/n2pZ5F9wDRudKflpCiFMYf02X4SLpCNu6t7HrxG4+HIgSDSwmmbJTUhLA5UiOOUo3dDY3Sk9ZKVLLuLT+Sj63sm1O1Ug/nySw5wWDQX7+859z552TU943lUrxpS99ib1791JZWclTTz1FY2PjpBxbiJnIMI3czdGu3M3RoL+OWLQBmz1GTVVgVAVGyI3sk2aIUDoEmUqWFq/hc22XcflSz5yrkX4+SWDPCwaDPPTQQ6MCu2EYWK0T/w/26KOPUlFRwQcffMAvfvELvvWtb/HUU09NVneFmFG6wl1s6drCPu9+ugctxEJt+Zujg6e8OZrVKUKZfpIpB+XWVq5suoo/WLmc+oq5WSP9fJq1gT2ybRv+Rx8j092Nvb4e921foeSKK876eHfffTcffvghnZ2d2O12iouLqaurY9++fTz33HPceOONJ6s8PvDAA0SjUe655x4+/PBDvv71rzMwMIDL5eKRRx6hubmZX//619xzzz0AfP7zn+cb3/gGWmu5+SNmkdNnugCE02F2dO9gd99ujvgChP1NROMlOJ2hU94cNXSGqDFAMmNAppoV5eu5uf0SLl5UNadrpJ9PszKwR7Zto/+vv4cqKMBSVkZ2YID+v/4efOcvzzq433///ezfv599+/axdetWNm7cyP79+2lqauLo0aOn3O/222/nxz/+MUuXLmX37t3ceeedbN68mZ6eHhYsWACAzWajrKwMn89HVVXVWfVPiMk0nmyXU2W6tBx6j4yZYZ93H9u6t/FB4BjhYA3B4EqyZoJKd/+YN0dzi1/4SOsYOlNFJc1cvfRjfGblIqpL5CGjyTQrA7v/0cdyQd2Zy2dVTidmfvu5jNqHW79+PU1NTadtE41G2blzJzfffPPJbalUrgKdlPMVM9VEsl1Gfq+15nDwMFu6tnDQd5Bg1ErIt4JgXFHkClAxxpOjWpu5srpmkELcOFLNLCruZGP7Ui5fIqP0qTArA3umuxtLWdlHtimHg0x396Sdo6io6OTXNpvtZCEwgGQyCYBpmpSXl7Nv375R+9fX19PV1UV9fT3ZbJZQKITb7Z60/glx9s4u2yWQDLCtext7+/cyEAuSiizG6y8jY8aodIdGjdK11qR0mJjhx2Epxa1WoZLLWVXXyKc750vGyxSalX8q7fX16HxwHaKTSez19Wd9zOGleEfyeDx4vV58Ph+pVIpnn30WgNLSUpqamvjlL3+Z64PWvPnmmwB8+tOf5oknngDgmWee4eqrr5YRu5iV0kaanT07efith3np2Ev4wwX4e9fQ5S3CVuCjutI/KqinzRiB7DEyOkltQTvlmQ24jcv4ZHMzf3LFIgnqU2zcI3al1ALgJ0AtubsnD2ut/0Ep5QaeAhqBo8Afaq0Dk9/V33Pf9hX6//p7mORG6jqZRKfTuG/7ylkfs7KykksvvZT29nacTicej+fka3a7ne985ztcdNFFNDU10Tyskt3PfvYz7rjjDu69914ymQy33HILK1eu5LbbbuOLX/wiS5Yswe1284tf/OJcLlmI805rzeHQYTYd28ShwCG0YSMd6qDHZydjRsccpWd1kojhxYKVqoIlVFk6CIaqmV/u4vr2Wi5uqsRikQHOVBt32V6lVB1Qp7V+XSlVAuwFPgN8GfBrre9XSt0NVGitv3W6Y01G2d7JzoqZTlK2V5xP46mdHk6HebnrZV7re41gMkihsYiuPje+WJoiV4jiEXPpQyV1MzpOmW0B9YWdmIkGwgmT9voyPtM5nwVuSWM8V5Netldr3Qv05r+OKKUOAvOBm4Ar882eALYCpw3sk6HkiitmbSAXYqqca7aLYRq8NfgWW7u2ciR0hELcpIKrOeyHjDm05uhHR+kZM0HE6MNhKWOR43JqCzrp8hk47RY+0V7D9e21uApm5e28WeusftpKqUZgFbAb8OSDPlrrXqVUzaT1TggxbueS7QLQF+tj0/FNvDXwFvF0FuKtfDDoJJpKUVQUptyVGDVKjxoDZElSVbCERsfFqKyHw944CyuL+OSKOlY3lMu9pWkw4cCulCoGfgX8V611eLz/aEqp24HbARoaGsZscyE+wDMdK1iJuerssl2S2SS7e3ezvWc7J6J9kGpgYNBDMJ6hoDBATVV0VDmAtBknavTjtJbTWHgxZbTR5zMpsKZY1+jmps751JZJvfR1PRPOAAAgAElEQVTpMqHArpSykwvqP9Na/3N+c79Sqi4/Wq8DvGPtq7V+GHgYcnPsI193OBz4fD4qKysvmOCutcbn8+FwyC+AOP+01rwffJ/NxzdzyP8uyUQRkcAqfBGFsoVwuyOjbo6a2iBqeDHJUlOwnBrLOkKhMrJWTWtdCZctraajvgy75KZPq4lkxSjgUeCg1voHw176N+BW4P7851+fTUfq6+vp7u5mYGDgbHaftRwOB/XnkKYpxNkIp8Ns7drKa32v0RuOkAovxR8qIqPjlJeGx6zvkjKjRA0vRdZKqq2ryMYWE7XYWV5bwuVLq+ioL6fAJgF9JpjIiP1S4IvA20qpoSdyvk0uoD+tlLoNOA7cfIr9T8tut5/xSU8hxOmcubbL0PJ0m49v5l3fEeLhOoLBxSSyKUqKBqhwji6ra2qDiNGPxqDS2oItuRIsVTR7irlsaTUrF5RRaJNKjDPJRLJitgOnmiO5ZnK6I4QYy7lmuwD4Ej42Hd/Enr7X6fGbxIMriCYVTqd/zIJduZK6YeKmD4eqojDdjotmltSUcdmSalY1lEtp3RlKcpCEmOHONdsla2Z5vf91tnRt4UD/CSLBBqKx8vwi0pExF5HO6hQRow+LLqQw00o5q1heXc/lS6pYvbBCAvoMJ4FdiBnv7LJdIJfC+OKxF9nd/Sa9vkISkXayOkN52QCFBaPn0XMpjINkiOMw52NPt7K8vI1rWmpZ1+jGWSABfTaQwC7EHJQxMrza+yqbjr3MgT4f0WAjmbSTkuIgrjHm0WHo5ugADlVGUXodbssK1i2uY+OKeZK6OMtIYBdijjkWPsbzR15g5/GDeP2lZOLNOBxxKqq8Yy5PZ+gMEaMfhaKMZViTK1hS0ch1rR4uanJLWd1ZSAK7EDPembNdAEKpENt7trPpyKu81xcjFW3EarFQ6faNufCF1pq46Sdlhimy1lKQaqNMLWP14koZpc9yEtiFmGZnyng5U7bL0GpGLx3dyus93YSCHsxMHeUlEZyO9JjnzNV36afQUky1ZQ063kpTRY2M0ucICexCTKPxZryMle2iteZo+Cibj21hZ9c7nPA5ycSW43ImKS3zjTmPnntydACDFBW2JuypDlzMZ/XiChmlzyES2IWYVmeX8RJKhdjWvY1Xjv+Od/tiJCMLARtV7uCY0y7w+ydHnRY3FXotKraMhRXlMkqfgySwCzGLZMxMLif9+Mu8eaKHYLCWTHI+pcURXM7wmKN0Q2eJGH2gFSUspyCxkpqieaxpreDK5TV4SmWUPtdIYBdiljgSOpJ7crTnICcGnSSirdjtSTxVg2Nmu2it84tIByjUHgrSrdQVttGxxM2Vy6ppqiq6YAruXWgksAsxrc6c8RJNR3ml+xVe6d7Fe/1RYqFGstkCKkoDYxbrgt8/OYrpoCDdTo1tDSsb6vn48mpaaktlebo5TgK7EFPkXOu7mNpk/+B+thzfwr6+w/h8HhKxBTidESrLQ2NOu+SWqPORyMawZGtxq1Wsqm3nyuYaVtaXyzz6BUICuxBT4FzruwwmBnPTLr1vcHTAJBZsJWsaVLoHTntzNJL1YmbKcOnVrHRfxLXNjaxtlNouFxoJ7EJMibPLdskYGV7rf41t3dt4d+AEIf9CItEynM4w7uLRFRjh90+OZrMKlVlCc/F6bmhewSVLKil12M/9UsSsI4FdiBniWPgYLx17ibcHDuD1OwkHO0gbadwVAxTYs6Paa20SN/0kjQhkPVTQziUNa/nUynoWVhZNwxWImUICuxDTLJqOsuPEDnad2MXxQIBoYAnBSBEOZ4ia8ugpCnbFiBr9WMwy7OlOlpeu4/rWRVy6pEoWvRAS2IWYGmfOdhkqBbC9ZzsfBo4SiVQS8HWSyCZxV/SPOUofmnbRGuyZxVSoTj7W1MInV9SxwO2aussRs4oEdiGmwOmyXbTWfBD8gJe7X+aQ7xDhuIVIoA1/2EaBI4hnjFH68IJdBboGW7qV5WUdXNsyj0sWV8lao+IjJLALMUXGynbxxr1s697GPu8+fPEIqchiBvxlJI04FeX+MRe/GCrYZVfFuDKdVKhO1i+q55Mr6phX7jwflyJmGQnsQpwHsUyMV3tfZdeJXfRG+9Cp+QwOLiUYz+ByDeIpio+5iHTU8GKQwaUbsaXaWVa+lOtaa7l4kdR2EacmgV2IKZQ1s7w58CavdL/CkfARzEwJUf8qvCELWMNUVYaxjVhzNLeIdIiE6adQVVGYaqGuoJ11yz1saPVQI7VdxBmMO7ArpR4DbgS8Wuv2/LZ7gK8CA/lm39ZaPzfZnRRiNuqOdPPC0Rc46D9IKmOSjTXTM+gink5SVhrC6UiN2ierU4SNXmzagctopyjbwYq6Bq5r9dA+r0xKAYhxmciI/XHgQeAnI7b/ndb6gUnrkRCzXMbIsKt3Fy93vYw37sWebWTAW40vmqHQ4aemKoplxCzKyEWkbal2Fpcu54plHq5YVoWrQN5ci/Eb9/8WrfU2pVTj1HVFiNmvO9LN80ef5x3fO2jDQdy3ir6ghSwR3O7QmOUAhhaRLlRlOFPrqLGtYM2SOja01koKozgrkzEM+IZS6kvAHuDPtNaBsRoppW4HbgdoaGiYhNMKMXOMHKUXGE1091YRiKcoKfZR4UyOcXM0m89J17iMpTizHbRWL+LaVg+rGyqwyrSLOEtK69F1nE/ZODdif3bYHLsHGAQ08D2gTmv9lTMdZ+3atXrPnj1n018hZpzho3QLhcQDSzg+aCWjY7jLg6e8ORo3/RRQgz3VSmPRCi5d7OGq5hrKnFLfRYxNKbVXa732TO3OacSute4fdsJHgGfP5XhCzCYfGaUnvBSrRrpOVOMNZ3C6fJSPkcKY1WkiRi/KLKQw00aVZQ1rFi7gurZaFlcXT8t1iLnnnAK7UqpOa92b//azwP5z75IQM99Qxst+335sqgB7ooODfYXEMnHcFYFR5QByT476SJoRbEYdrmwHbe42rmmtZV2jG7vkpItJNJF0x/8DXAlUKaW6ge8CVyqlOslNxRwF/nQK+ijEjBHPxNnVu4udPTvxJry4bQ109dZwImBiLQjgqRq97mjuydE+LGYJBZlVNLnWcnnzAq5uqaHcVTA9FyLmtIlkxfzxGJsfncS+CDFjGabB24Nv83L3yxwOHcZlLaLYaOfAcSfBRJKy0gBOR/oj+2htEjG8ZMw0lkwDlZbVrFvQwifa61hcLeuNiqkjybFCnEFXpIutXVvZP7iftJGmprCJ7v5yjg+AocJUVwaxWj+ahJBLYfRCtgKn0ckK9zqua6lnXaNbCnaJKSeBXYhTiKQj7OjZwe7e3QwmBql01JGNeHjjqJ1QMk1RUZAKV+IjUy+mNnKrGZkmlvQSFjou4uqWZq5urqGiSKZdxPkhgV2IEbJmln3efWzr3sbR8FGK7aW4sh0c+rCQQCyLtSBAdWUU64g0xqQZJmYMYjGqKMq2sdazlhs7FtBaVyrTLuK8ksAuxDBHQ0fZfHwzB/0HMUyTYr2M7q5SBsIG2hqmvCIyKuPF0FkiRh/atGBLN1NfuJ6rli/hE+21suaomBYS2IUAQqkQr3S/wmt9r+FP+SmmAf9gDe8FNWkdpaw0gqNw5M3R/INGRgC7rqEw087KqlVs7JjPyvoyGaWLaSOBXVzQsmaWN7xvsK17G8fCxyiggmxwFe/4rSQySUqKw5SPUQ7A0GnCRi8WXUhBppU6+zoub27khvY6mUsX004Cu7hgdYW72NS1iXcG3yGT1eh4K4cHnESSaVxFATzlo58c1VqTMAMkzRCFug57egVt7nZuWDGPNQ0VUlZXzAgS2MUFJ5qOsqNnB7t6d+FL+CgwGhjwehiMZLEXBqiujmK1jK6hlNUpIkYfVu3EkVlJtWU1Fy+tZ+OKeVSXFE7DlQgxNgns4oIx9JDR1q6tHA4dpoByUoHVHAko0maUiorQqBujkBulx0wfKTOK3ZiPK9vB8vJmNrTVctGiSqnCKGYcCezignAieoLNxzfz9uDbJLNpbMlmjnqLCSVSFBeFKB+Rjz4kYyaJGH1g5MoBLClexyUt8/n4smoqi2WULmYmCexiTssYGXac2MG27m0MxAdw6noCA3V4QwbKFqS6MjIqHx1+v6JRIpvEkp1PfcF6PraklWtaPCysLJqGKxFi/CSwizmrP9bPb4/+lrcG3sKiHZiRlRwatJPIxikvDY1KXxySNuMEM16MTCmVlnVcNO8SNrTmHjSSm6NiNpDALuYcU5u83v86Lx1/ie5wD/ZsE13eKvyxDE6nD095bMxpF1MbRLIDRFMGDhayuuIyPtXWwdqFUt9FzC4S2MWcEkqFeOHoC+zp30M4rkkEO/GGrJgqTKU7POaao1prEkaIYCqMNkpZXLySm5ZfyceX1VEiT46KWUgCu5gTtNa8G3iX548+z6HBD0nF6vH5PcTTSUpLfLicqTH3S5sxwtkBUqki3LZmrl10BX/QsYKaUsd5vgIhJo8EdjHrJbNJtnZtZXvPDo754iSC7YTjVgodfmqqoljGmEXJ6hRRw0sma0FlGlhVvp5bVq5nzUK3zKOLWU8Cu5jVuiJd/Pbwb9lz4gD+YDWxcBPaEsd9imkXU2eJGoNkdRIytVSqNj6+eC2fWdkgo3QxZ0hgF7NSPBPntb7X2HTsZQ72BoiHlpLO2CgtHcTlGD3torVJfKgUAFU4UitZUtLJ9W2NXLakStYcFXOKBHYxqySzSd7wvsHOE7t4q/c4A/5yMvEWHI4YnnL/mNkuKTNCzBik0FJKqbkKR6aNNQsa+PTKeZKTLuYkCexiVsgYGd4afIudJ3ZyaPAIvYNOYuHlKItBpXtwzGkXQ6eJGP0oLFTaWiDejMe5gCvaari2xYOzwDoNVyLE1JPALmY0wzQ44DvAjhM7eD/wAd6ghXBgKbGkldKSEC7H6JK6WpvETD9pM0KpbR4lZgdGrIHlnnI2dtTJikZizht3YFdKPQbcCHi11u35bW7gKaAROAr8odY6MPndFBcaU5u8H3if7T3beS/wHoFYmlhoEb5gMcoWoabSN2oBaYCUGSNq9OO0lOGxXoQZa6bMVc7a1gqub6ujzCV56WLum8iI/XHgQeAnw7bdDWzSWt+vlLo7//23Jq974kKjteZI+Ag7e3ZywHeAcCqKkWhkYMBNNJWirHQA5xg3Rw2dIWL0A+C2LsOaXEGRdR5tC0u5psXDkppiGaWLC8a4A7vWeptSqnHE5puAK/NfPwFsRQK7OEvxTJytXVt5tfdVAskATuYR8i5nIGxgtYeoqYpgGVEnXWtN3PSTNMMUWzwUZttxpBaztKacq5prWLWgHJtkvIgLzLnOsXu01r0AWutepVTNqRoqpW4HbgdoaGg4x9OKuURrzXuB93jx2Iu8H3ifIlsZ1vgq3vVaiWcSlJcGcRRmRu2XNuNEjX4KVAnlehX2RBuN5TVcvrSajy2upKhQbiGJC9N5+5+vtX4YeBhg7dq1oydHxQVp+Cg9mAxRzGKOd5UzEM5idwTwVEVG3Rw1tUHU8GKQoYgmbMkVzHc1sn5pJVcur5HVjMQF71wDe79Sqi4/Wq8DvJPRKTH3jRylOyxlZEOdvO2zkDJiVFQEx1zNKGmGiRmDOFQVhakWPPZ2OhZVcXVzDYuqimQeXQjOPbD/G3ArcH/+86/PuUdizhs5Si/ILuFIfxmBWBqXK0BN0eiyurmbo30obBQZrbiyK2nzNHBNi4fOBeWyPJ0Qw0wk3fH/kLtRWqWU6ga+Sy6gP62Uug04Dtw8FZ0Uc8PIUbqdCuK+VXwQBJMwVe4wthEPGg3dHE2ZYRzUYUu101TUwmUravj4smopqyvEGCaSFfPHp3jpmknqi5jDouko27q35TJeEiEsqWUc8ZYQTiYpOcWDRhkzQcTow0YJznQnbssq1jTO4xNttTRWSSkAIU5F0gbElDK1yVsDb7G1ayuHQ4exGJUEB1bjDZtY7UGqq8JYR6Qw5m6ODmDoNIXmQhyZDprdy7i2xcO6JrcU7BLiDCSwiynTF+tj0/FNvDXwFrF0BiPawolBF/Fs4pRrjg7dHC3AjSPVyQJnJxcvreW6Vg/uooJpuAohZh8J7GLSJbIJXj3xKtt7tnMi6kUnFjLgryaSyFLo8OMpj45xczRfsEtbcWSXU2quYtX8Jja01dJcWyLZLkJMgAR2MWm01hzyH2Lz8c0c8r9PLFpGJLiacFxjLQhRWRnBZjVH7PP7gl2Fug57upUlpe1c3VzLpUuqcNilAqMQEyWBXUyKwcQgW7u2srfvdboDKZKh5YTjhVisUSrckTHL6qbNGBGjn0JVhjOzhipLB+sWz+f69jrmlzun4SqEmBsksItzkjEyvNb3Glu7t3Gwv5dYqJ5YrBJljVNe3j/mQ0aGzuYKdmlNkV5CQWoFzZVLcjdHGyuktosQ50gCuzhrx8LHeOHoC7zadYDBQAmpWBuaDGVlXgoLRtd20VqTMAMkdBAXtdjSrdQWtLC+uZpPtNVSWSylAISYDBLYxYQlsgm2d2/npaOvcLA3SirShNY2SosDOB2jM11gKCe9nwJVRKmxCmemnRZPLie9o75Mbo4KMYkksItx01rzfvB9Xjz6Iru73mfQX0U6sYyykghOR2jM9UZNbRAzBsiSosSyEEtiBfWuJi5rreaq5hp5clSIKSCBXYxLJB1ha9dWtnfv5r3eJPHwMizKoKZycMyVjCC3iHTUGMBpcePKrKHIbGFFfRU3tNfKwhdCTCEJ7OK0tNbsH9zPpuObeKP3MH7fPBLxhZQWh3A5E2OO0odWM1IoSnQLBYkOFpXX8/Hl1VyyWFIYhZhqEtjFKQWSATYd38TvTuzliNcgFmrDMLNUu73YbOao9kM3R5NmCKeqxZZsY56jhbXNlVzb4qGm1DENVyHEhUcCuxgla2bZ593Hlq4tHPB2EfIvIBKtwOUK4S6KjzlKz5jJfMGuIlzZTkr1Sjrm13Ftq4fWulKZdhHiPJLALk4yTINDgUPs7NnJId979PptRAIrSBlZ3BUDY+aka20SNQbI6CQOcwEFmRUsLVvGVc0ePra4UqZdhJgGEtgFpjZ5P/A+u07s4l3/uwxEk0QCTQQjxRQUhqgZo7aL1pqUjhAzBrHrCpzpDuodK7locS3XtHqoKZFpFyGmiwT2C5jWmiOhI+w4sYODvoMEkzFSkYUM+N0kskkqTvGgUVaniBh9WHQBhZlmyljJqvmLuK61lpY6KdglxHSTwH4B0lpzPHKcnT07ecf3DqFUCJWuZ9C7nGA8i8Ppx1M+enm6oZz0jE5RYNZRmGljWVkrV7XU8rFFMu0ixEwhgf0C0xPtYdeJXbw18BaBZACXxUN8cCm9IY1BBLc7PKpgl9aapBkibvopxI0rvZK6gg4uWl7Hda2S7SLETCOB/QKRzCZ5uetlXu19lYHEABUFVdiTnbzfbyOSSp1mebokUbMPK05cRhvFRgcdtQu5rrWW9vmS7SLETCSB/QJwInqC5448x/7B/RTZinFb2vnwmIvBaBZbQZCaqgiWMZen82LoNA69AHu6jUUly/j4cg+XLa3CVSD/dYSYqeS3cw4zTIM9/XvYdHwTvbFeqgoW0uetotunSJlRKspCFBR8NIUxN+0SJm76cKoqHJk1VNvaWbOkhg1ttVInXYhZYFICu1LqKBABDCCrtV47GccVZy+UCvH80efZ27+XjGFSkFrB28cdhBJpilwhasZ40MjQGcJGL1bsFBvtOLMrafXUc22Lh84F5VgtMu0ixGwwmSP2q7TWg5N4PHGW3vW/y38c/Q8+CHyA3ZjPwOA8vGEDqy1IdWUE66jl6TQJM0jCDOJSddiS7SwsauHyFTV8fFm1VGAUYpaRqZg5JGWk2Na1jVd6XsEbDZOJtOMNOEiZMcrLQqfISU8TMXqx4aDE7MCV6WRV/Xw2dtSxuLp4Gq5CCHGuJiuwa+AFpZQG/j+t9cMjGyilbgduB2hoaJik04ohfbE+fnP4N7zp3U8kUkEwsIpoMk1R0QA1rtFVGLXWxE0/KTNMkZqPLbmCetcyrmiv4ZpmD84CyUkXYraarMB+qdb6hFKqBnhRKXVIa71teIN8sH8YYO3atWMX8BYTZmqTvf17eenYSxzs7yMRWko45sJmD1JdFcFqGf2jzj052osdF2V6NY5UB+11HjZ2zGN5bck0XIUQYjJNSmDXWp/If/Yqpf4FWA9sO/1e4lz1xfrY2rWVnd2v0zNYQDK8goxOU3GKRaRzo3QfKTNKsaUeW6KDOudiLuuo5rpWD0WFMjMnxFxwzr/JSqkiwKK1juS/3gD89Tn3TJxSPBNnV+8uXunawcE+P5HgAjLpEkqKg1ScYvGL3JqjfRRaSnCzFnuijZbaGj65ok7K6goxx0zGEM0D/Es+MNiAn2ut/2MSjitGMEyDtwff5uWul3mr/zCDvkoS0TYKCmPUVHlHPWQEQw8aDWCQoszahDXRQXVhA5e2V3Ndm4dSyXgRYs4558CutT4MrJyEvojT6Ip0sbVrK2/07adrEGKhFrKGpqJ8cNRDRkOSZoSYMYDL4qbMWIs9uZxlNW5uWFHLivllMkoXYo6SSdUZLpKOsKNnB6/2vsqHAwEiwSai8WKKXGHcRaMrMMLQmqN9KKyUq1asiRXML57HJa2VfHx5jYzShZjjJLDPUEPL023r3sa7vqMEAzVEwisxSOTXHDVG7TN8zdEiSx32dBsVahkdTRVsaK2lsapoGq5ECHG+SWCfgY6GjrL5+GbeGTzAQMhKOLCCWFJTUuzD5RxdgRF+v+aoXRVRYnbiSHWwvNrD1c01rFlYgc1qOf8XIoSYFhLYZ5BwOsz27u3s7t1NdyhILLSYYKgEiy1CdVV4zJz0k2uOkqRILcCa7KChaDGXtlbx8eU1lDll2kWIC40E9hnAMA32Dezj5a6X+SBwlFjEQyDQSSKTorzUi6MwPeZ+KTNC1BigUFVQnO7AbVlBZ2MN17V6WCTlAIS4YElgn2bdkW42H9/M24P7GQwposEVhGIWCh1BPFWjF5GGoZuj/SgULnM5zkwHzVWNXNPiYa1MuwhxwZPAPk1imRg7enaw68QuukN+4qEmAuFyDGK43aFRy9PBR+u7FFKLLdXKwqI2Lmmu5upmD2UumXYRQkhgP+9MbfL24Nts7drK+/7DRCKVBP2riKfTlJYM4BxjeToYenK0HxvFONKdVFk7Wd04n2tbPVKFUQjxERLYz6O+WB+bj2/mzYG36A9liQVaCcXsFBQGqamKnubJUS+GzlBoLMSRXUFr5TKuaallbWMFdpl2EUKMIIH9PMiaWfb072HL8S0cDvSSCDXiD1Vg6DgVFf5TFuwaWqLOrispTDfTVNTJpS21Mu0ihDgtCexTbDAxmFuiru8NvAEH0eBKYimDkuLBU+akDy1+ocxCCrItVFtWs7axSaZdhBDjIoF9ipja5PX+19l0fBMHvSeIBpqIREuxF4ZPOe2itUnM9JEyY9iMWpzZFayobOealjqZdhFCjJsE9ikQSAZ44dgL7OreS8+gjXh4BRkzTUXF2HXSAdJmjIjhxWqWUpBZzSLXai5vWSDTLkKICZPAPom01rw58CYvHnuJfT1dRIILSSRKKSoKUeGKjzntYuosEcNL1jSwZhqptq7hosZmmXYRQpw1CeyTJJQK8dKxl9h67Hcc81pIRlqxWtNUV/ZjtZqj2udujoaIm35Utooio5UVlWu4rmW+TLsIIc6JBPZzZGqTA74D/PbwC7zWdYxwoJ5stpjykiBOx9ilALI6RdjoRRtOrOlWFhet56olS7hyeY1MuwghztmsDOwHm5cBw0e0Ji2H3pvU/c7UVmvNkfAR/vWOjRx1lxHW81nUW83K/s385q5LRk27fOsvfgrKwqF6xVsL7fS6qkivv4NLmjrZ0DaPpnxJ3cns41S3nc5jTle7ibYVYjoorUdnZ0y1tWvX6j179pzVvqN/qYac/pdrIvudqW1frI/tPdv53Q/uxW+fhzNYx9K+BOv7DlGaiWNi8jff/+LJvf78L35Kn9vCm4usHHGXkcjU4+mvYNX/397dxrZ1Xgcc/x9SIi1Z1LssybL8JsuxJdmWI9lJly3LWuelRtpgQzBkQ7sOy5a1Q7YP+zSgX4oNA7q3FBsQYMuGYluBrd32oTM6Dx0SOfCSNHYc2HGceDYUx5Id2yL1RoqiSJG8Zx9IO7YkW5TFF1/q/AABvNJzL88xyeOHz33uc8dG+JXjR2+t7ZLPGAvdtpTHLFW7lbY1Jt9E5H1VHVyunQt77Hcbe15uTHol+y3dNlLl4eilo5y49h7/F5ykeW4/W65WMjB2kS0zN5Bbe3++f9KZ4609Xj5pqWaiop3aiTYO3IgyGDxBTTK+YMGu1cdYvLalPGap2q20rTGl4cLCXnxzPvhos/Bpq3Dpo58yNb2BuWgfz376E/aOD1PpLF6wK61JoukgKcfhdHsHFZFNdIe8PHLjPBtnJ0qQhTFmrchLYReRZ4C/BrzAP6jqd/Nx3FKb98LFTcLFDmG2wkd8fgvB632kNElDwzgDwQuL9kl54GKHMJ26iie1gZr0LlpGvfSHLrN7cgSvLp4hY4wx+bTqwi4iXuBV4EngKvCeiBxR1Y9Xe+ylOdxtjDNf+ykOoy0ezmz3EPN5SCdaSUW6qY2DvypMY9UcIuDg3Bp2UWBkA5zb4mEsUIUvPkBXYD9P7NhK+1+8wvrUUjNkFj73SnIrddtSHrNU7Vba1pjSyMfA4EFgWFUvqeo88EPguTwcd0mZE1SLP5jLnbjKdb/ofJRL//UKP3tIiGst6akDEO5lV+gGF7+xiZrquVszXv7sT7+Og8N4LbzRL7y128fo+k3M/Px3ebbry/zBE/v4yr6NDJ47m9NzryS3Urct5TFL1W6lbY0plVXPihGR54FnVPW3s9tfBx5R1ZcXtHsJeAlg8+bNA1OWeKUAAAoZSURBVCMjI6t63nxTVc5Pnuf1kde5MDHMTKSNycmNzDtz1NeG8fuSi/ZxNM1MegxH01SmOqlK97G3JXPV6P7NDXg9S1xqaowx96mYs2KWql6L/rdQ1deA1yAz3TEPz5s3kfkIx0aPcfLGSW5E5ohO9DIVraCqapINNbNLLgWQcKJE00F82oRvvpeumn083t3G4ztbCKyzi4yMMaWTj8J+Fei8bXsTcC0Pxy04VeXc+DneGH2D4alLzEXbCY13M5eao7EhuOSCXZ/30h38qZ006gAHt3bx5b52NjdVlyALY4y5Uz4K+3tAt4hsAz4DXgB+PQ/HLaiba7u8P/Y+47NxopN9TEQq8PmnaK1f+ibSCWeGaDqEj2b8iV66a/fxZE8Hj3U146uweczGmAfDqgu7qqZE5GXgp2SmO35fVT9adWQF4qjD2dBZhkaHuBS+THJ2I6HxnUQTCRrqgvj9dxtLv4Gq4k89RCMDHNy6ncN72ulstF66MebBkpd57Kp6FDiaj2MVUjAWzNxzNPgB0/EEsck+xqYr8VSG2dA8s+TNL+LODLPZXnploo/uwD6e7NnIYzusl26MeTCtiStPE+kEJ66f4K3P3uJa9Doa30Qw1EZkLkFdbYiqdYlF+6Q1xUz6BqjgT+2iQQd4ZOs266UbYx54ZV3YVZXh6WGGRoe4MHWBdNLP3FQ/16e8qDdCS1MYr1cX7RNzJok7YfxsoCLRS3dgr/XSjTGuUbaFPZwI8+aVNzk1doqpeBhPfAefBeuJxOMEApNUr1t8I+nMFMYQfgmwPrWfOt3DwJZOnt270XrpxhjXKLvCnnJSnA6e5vjV44yER6hwmomMDxAMO3gqp2lpjuBdMJae0nmi6TEED7XswBvvY3vtNr64u9V66cYY1ymrwn5l5gpDo0OcGz9HMqU4s718ElxHLJW5enSd/871WlQdoulxkhoj4G3Hm+ihTnbw8PZmDu9pZ2N9VYkyMcaY+1cWhT2WjPHOtXd459o7BGMh/OnNBMdaGY8m8a+bXDQvXVVJaITZ9ARVngYaeBSN7WR7YzOHelo5uLVxwTrpxhjjHq4u7DfvN3rsyjGGp4apJMD8dD+XJ73MO1EaGsKLrh5NaZyZ9BgV+Gmt3AOxHuoqWxl8qJGne9toCfhLlI0xxuSHawt7KBZi6MoQZ4JnmJ2fozLZzehYLVOxedavn6C+Oragl+4QTYdIMUedt5MaZx+paAc7WgI81dvG/s56PLZolzGmDLi2sJ+fPM/J6yep1Eai4w9xY1pRT5jmpggV3juXVb25FEC1t5F27wGSMzsIVK3nkd4mnuppo67aFu0yxpQP1xb2/pZB/uf8VT6+kmQmkaA2ME111Z0XGqU1yUx6DEFo9fXiT+zFiTexu72Gp3vb6N1Yiyy1KIwxxriYawv72xfDfHhZSHmmFy0HcPMio4QTobainQbpJzHTSVPten6hu4XHdzZT7XNt6sYYc0+urW5f6Grix5+EiaUjd/w+6cwxkx7D76mhw3cAZ7aHiooAA131PNXTZhcaGWPKnmsLe321jyp/mlgss+1ommg6SJokTZXbqE71k5pppaulhkM9rTxsdzQyxqwRri3sN6kqcSdCzJmgxttMo2cfyeh26mpq+Lm9TTyxawN1VXZy1Bizdri6sCedONPpUSrw0+bbh3euDy8N7N1cx9N9bXS11JQ6RGOMKTrXFvYPQh8QSnxKnbcjMyd9poPOxhq+uKuVg9sabX0XY8ya5drCXiEVdPgGmZ7oIlAV4EBPE4d2b6Cpxq4cNcasba4t7DPhVnS2n/6Oap7saWN3e8DmpBtjDC4u7HXVPr6yt53HdjSzrtJb6nCMMeaB4drCvru9lt3ttaUOwxhjHjh2htEYY8rMqgq7iHxHRD4TkTPZn8P5CswYY8z9ycdQzPdU9S/zcBxjjDF5YEMxxhhTZvJR2F8WkbMi8n0RabhbIxF5SUROicipUCiUh6c1xhizFFHVezcQeR1oW+JP3wbeBcYBBf4EaFfV31ruSQcHB/XUqVMrj9YYY9YwEXlfVQeXa7fsGLuqHsrxCf8e+EkubY0xxhTOamfFtN+2+cvAudWFY4wxZrWWHYq5584iPwD6yQzFXAZ+V1Wv57BfCBi57yf+XDOZoaC1wvItX2spV7B879cWVW1ZrtGqCnupicipXMabyoXlW77WUq5g+RaaTXc0xpgyY4XdGGPKjNsL+2ulDqDILN/ytZZyBcu3oFw9xm6MMWYxt/fYjTHGLGCF3RhjyowrCruIPCMiF0RkWET+aIm/+0XkR9m/nxCRrcWPMn9yyPcPReTj7Bo9b4jIllLEmQ/L5Xpbu+dFREXE1VPkcslXRH41+/p+JCL/UuwY8ymH9/JmETkmIqez72fXLv2dXS8rKCJLXqgpGX+T/bc4KyIPFywYVX2gfwAv8AmwHfABHwA9C9r8HvC32ccvAD8qddwFzveXgOrs42+5Nd9ccs22CwDHyaxNNFjquAv82nYDp4GG7PaGUsdd4HxfA76VfdwDXC513KvI93HgYeDcXf5+GPhvQIBHgROFisUNPfaDwLCqXlLVeeCHwHML2jwH/FP28X8AXxL33tl62XxV9ZiqxrKb7wKbihxjvuTy2kJmgbk/B+LFDK4Acsn3d4BXVXUKQFWDRY4xn3LJV4Gb97isA64VMb68UtXjwOQ9mjwH/LNmvAvUL1iWJW/cUNg7gCu3bV/N/m7JNqqaAsJAU1Giy79c8r3di2R6AW60bK4ish/oVNVyWGAul9d2J7BTRN4WkXdF5JmiRZd/ueT7HeBrInIVOAr8fnFCK4mVfrbvmxtuZr1Uz3vhHM1c2rhFzrmIyNeAQeAXCxpR4dwzVxHxAN8DfrNYARVYLq9tBZnhmCfIfBP7XxHpU9XpAsdWCLnk+2vAP6rqX4nIF4AfZPN1Ch9e0RWtTrmhx34V6LxtexOLv67daiMiFWS+0t3rK9GDLJd8EZFDZNbE/6qqJooUW74tl2sA6APeFJHLZMYlj7j4BGqu7+X/VNWkqn4KXCBT6N0ol3xfBP4NQFV/Bqwjs2BWOcrps50Pbijs7wHdIrJNRHxkTo4eWdDmCPCN7OPngSHNnq1woWXzzQ5P/B2Zou7mMdh75qqqYVVtVtWtqrqVzPmEr6qqW+/Skst7+cdkTo4jIs1khmYuFTXK/Mkl31HgSwAisptMYS/XW6wdAX4jOzvmUSCsOayGe19KfSY5x7PNh4GLZM6wfzv7uz8m8yGHzJvh34Fh4CSwvdQxFzjf14Ex4Ez250ipYy5UrgvavomLZ8Xk+NoK8ArwMfAh8EKpYy5wvj3A22RmzJwBnip1zKvI9V+B60CSTO/8ReCbwDdve21fzf5bfFjI97ItKWCMMWXGDUMxxhhjVsAKuzHGlBkr7MYYU2assBtjTJmxwm6MMWXGCrsxxpQZK+zGGFNm/h8k/LukXvH42gAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Doing a full fledged DML for conditionally exogenous treatment\\n\",\n    \"from econml.dml import DML\\n\",\n    \"dml = DML(model_Y_X(), model_T_X(), LassoCV(cv=3))\\n\",\n    \"dml.fit(y, T, X)\\n\",\n    \"dml_cate = dml.effect(X)\\n\",\n    \"print(np.mean(dml_cate))\\n\",\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"Exog-T CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dml_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, dml_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DMLIV CATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"'\\\\ndmliv_model_effect = lambda: model()\\\\ncate = GenericDMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\\\n             dmliv_model_effect(),\\\\n             n_splits=10, # number of splits to use for cross-fitting\\\\n             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\\\n             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\\\n            )'\"\n      ]\n     },\n     \"execution_count\": 28,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from dml_iv import DMLIV, GenericDMLIV\\n\",\n    \"from utilities import SelectiveLasso, SeparateModel\\n\",\n    \"from sklearn.linear_model import LassoCV\\n\",\n    \"from econml.utilities import hstack\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# We now specify the features to be used for heterogeneity. We will fit a CATE model of the form\\n\",\n    \"#      theta(X) = <theta, phi(X)>\\n\",\n    \"# for some set of features phi(X). The featurizer needs to support fit_transform, that takes\\n\",\n    \"# X and returns phi(X). We need to include a bias if we also want a constant term.\\n\",\n    \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n    \"\\n\",\n    \"# Then we need to specify a model to be used for fitting the parameters theta in the linear form.\\n\",\n    \"# This model will minimize the square loss:\\n\",\n    \"#        (Y - E[Y|X] - <theta, phi(X)> * (E[T|X,Z] - E[T|X]))**2\\n\",\n    \"# potentially with some regularization on theta. Here we use an ell_1 penalty on theta\\n\",\n    \"# dmliv_model_effect = lambda: LinearRegression()\\n\",\n    \"\\n\",\n    \"# We could also use LassoCV to select the regularization weight in the final stage with\\n\",\n    \"# cross validation.\\n\",\n    \"# dmliv_model_effect = lambda: LassoCV(fit_intercept=False, cv=3)\\n\",\n    \"\\n\",\n    \"# If we also have a prior that there is no effect heterogeneity we can use a selective lasso\\n\",\n    \"# that does not penalize the constant term in the CATE model\\n\",\n    \"feature_inds = np.arange(1, X.shape[1]+1)\\n\",\n    \"dmliv_model_effect = lambda: SelectiveLasso(feature_inds, LassoCV(cv=5, n_jobs=-1))\\n\",\n    \"\\n\",\n    \"cate = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n    \"             dmliv_model_effect(), dmliv_featurizer(),\\n\",\n    \"             n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"            )\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"dmliv_model_effect = lambda: model()\\n\",\n    \"cate = GenericDMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \\n\",\n    \"             dmliv_model_effect(),\\n\",\n    \"             n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"             binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"             binary_treatment=True # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"            )\\\"\\\"\\\"\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 29,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 3.98 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dml_iv.DMLIV at 0x2b34d30a550>\"\n      ]\n     },\n     \"execution_count\": 29,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dmliv_effect = cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 10.817\\n\",\n      \"True ATE: 10.710\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# We can average the CATE to get an ATE\\n\",\n    \"print(\\\"ATE Estimate: {:.3f}\\\".format(np.mean(dmliv_effect)))\\n\",\n    \"print(\\\"True ATE: {:.3f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dmliv_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dmliv_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAAYwAAAEKCAYAAAAB0GKPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8HmW9///XJ1uTpmmbpGualqYrlAItdEFkUwFBFETkgHjODxVERI67R1y+qIgPN75wQPGhqIiCyCJHvxWLPewg0tKU7rSF7knTNm3Sfcl2f35/zKTchLSZpPfkvpO+nw/ux8xcc83MZ9KQzz3XNXONuTsiIiIdyUp3ACIi0jMoYYiISCRKGCIiEokShoiIRKKEISIikShhiIhIJEoYIiISiRKGiIhEooQhIiKR5KQ7gFQZNGiQjx49Ot1hiIj0KAsWLNju7oOj1O01CWP06NFUVlamOwwRkR7FzDZErasmKRERiUQJQ0REIok1YZjZhWa2ysxWm9nN7ay/wcyWmtkiM/unmU1KWveNcLtVZvb+OOMUEZGOxdaHYWbZwD3A+UA1MN/MZrn760nVHnL3X4b1LwHuAC4ME8dVwIlAGfC0mU1w95a44hURaWpqorq6moMHD6Y7lJTLz8+nvLyc3NzcLu8jzk7vGcBqd18LYGYPA5cChxKGu+9Oql8ItL6c41LgYXdvANaZ2epwf6/EGK+IHOOqq6spKipi9OjRmFm6w0kZd6euro7q6moqKiq6vJ84m6RGAFVJy9Vh2duY2efMbA3wE+Dzndz2ejOrNLPKbdu2pSxwETk2HTx4kNLS0l6VLADMjNLS0qO+coozYbT3E3/H6/3c/R53Hwt8Hfh2J7e9192nufu0wYMj3UYsInJEvS1ZtErFecWZMKqBkUnL5UDNEeo/DHy4i9uKiEjM4uzDmA+MN7MKYBNBJ/bVyRXMbLy7vxkuXgy0zs8CHjKzOwg6vccDr8YYq4jIOzw0b2NK93f1zFEp29f999/PBRdcQFlZWcr22ZHYEoa7N5vZTcAcIBu4z92Xm9mtQKW7zwJuMrPzgCZgB3BNuO1yM3uUoIO8Gfic7pDqpSp/F73utE/GF4dID3P//fczefLk3pEwANx9NjC7TdktSfNfOMK2PwB+EF90IiKZ58EHH+Tuu++msbGRmTNn8otf/IJrr72WyspKzIxPfepTjBw5ksrKSj7+8Y9TUFDAK6+8QkFBQeyx9ZqxpEREeroVK1bwyCOP8PLLL5Obm8uNN97IbbfdxqZNm1i2bBkAO3fuZODAgfz85z/n9ttvZ9q0ad0Wn4YGERHJEM888wwLFixg+vTpTJkyhWeeeYb6+nrWrl3Lf/7nf/KPf/yD/v37py0+JQwRkQzh7lxzzTUsWrSIRYsWsWrVKu666y4WL17Mueeeyz333MN1112XtviUMEREMsT73vc+/vznP1NbWwtAfX09GzZsIJFIcPnll/P973+f1157DYCioiL27NnTrfGpD0NE5DBSeRtsFJMmTeK2227jggsuIJFIkJubyx133MFll11GIpEA4Ic//CEAn/jEJ7jhhhvU6S0icqy68sorufLKK99W1npVkezyyy/n8ssv766wADVJiYhIREoYIiISiRKGiIhEooQhIiKRKGGIiEgkShgiIhKJbqsVETmczoymHEUHIy7v3LmThx56iBtvvDG1x00RXWGIiGSInTt38otf/OId5S0tmfF2ByUMEZEMcfPNN7NmzRqmTJnC9OnTec973sPVV1/NSSedxPr165k8efKhurfffjvf/e53AVizZg0XXnghp512GmeddRYrV66MJT41SYmIZIgf/ehHLFu2jEWLFvH8889z8cUXs2zZMioqKli/fv1ht7v++uv55S9/yfjx45k3bx433ngjzz77bMrjU8IQEclQM2bMoKKi4oh19u7dy7/+9S+uuOKKQ2UNDQ2xxKOEISKSoQoLCw/N5+TkHBqAEODgwYMAJBIJBg4cyKJFi2KPR30YIiIZ4khDlg8dOpTa2lrq6upoaGjgiSeeAKB///5UVFTw2GOPAcE7NRYvXhxLfLrCEBE5nA5ug0210tJS3v3udzN58mQKCgoYOnTooXW5ubnccsstzJw5k4qKCo4//vhD6/74xz/y2c9+lttuu42mpiauuuoqTjnllJTHZ+6e8p2mw7Rp07yysjLdYUhndeY+927+n1eOPStWrOCEE05Idxixae/8zGyBu0d6MbiapEREJBIlDBERiUQJQ0QkSW9ppm8rFeelhCEiEsrPz6eurq7XJQ13p66ujvz8/KPaj+6SEhEJlZeXU11dzbZt29IdSsrl5+dTXl5+VPuINWGY2YXAXUA28Bt3/1Gb9V8GrgOagW3A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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(dmliv_effect, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Algorithm 3 - DRIV ATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n    \"from dr_iv import IntentToTreatDRIV\\n\",\n    \"from utilities import WeightWrapper\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For intent to treat DRIV we need a flexible model of the CATE to be used in the preliminary estimation.\\n\",\n    \"# This flexible model needs to accept sample weights at fit time. Here we use a weightWrapper to wrap\\n\",\n    \"# a lasso estimator. WeightWrapper requires a linear model with no intercept, hence the Pipeline\\n\",\n    \"# that adds a bias to the features.\\n\",\n    \"driv_flexible_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n    \"                                      ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, n_jobs=-1)))]))\\n\",\n    \"# Then we can also define any final model to project to. Here we project to a constant model to get an ATE\\n\",\n    \"driv_final_model_effect = lambda: ConstantModel()\\n\",\n    \"\\n\",\n    \"dr_cate = IntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                            driv_flexible_model_effect(),\\n\",\n    \"                            final_model_effect=driv_final_model_effect(),\\n\",\n    \"                            cov_clip=0.0001,\\n\",\n    \"                            n_splits=10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 7.64 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x2b34b1f8ac8>\"\n      ]\n     },\n     \"execution_count\": 35,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     inf</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:26:17</td>     <th>  Log-Likelihood:    </th> <td> -47367.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>9.474e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>9.474e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   10.8518</td> <td>    0.276</td> <td>   39.319</td> <td> 0.000</td> <td>   10.311</td> <td>   11.393</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>305.981</td> <th>  Durbin-Watson:     </th> <td>   1.982</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 206.801</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.237</td>  <th>  Prob(JB):          </th> <td>1.24e-45</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.478</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                       inf\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        20:26:17   Log-Likelihood:                -47367.\\n\",\n       \"No. Observations:               10000   AIC:                         9.474e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         9.474e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         10.8518      0.276     39.319      0.000      10.311      11.393\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      305.981   Durbin-Watson:                   1.982\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              206.801\\n\",\n       \"Skew:                          -0.237   Prob(JB):                     1.24e-45\\n\",\n       \"Kurtosis:                       2.478   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 36,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 37,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[ 3.51178355e+01  9.93516195e-02  1.20372976e-01  4.65886192e-02\\n\",\n      \" -2.40943550e-01 -2.89931484e-02 -1.53903712e-01 -6.79011889e-02\\n\",\n      \"  8.13619639e-02 -1.64333613e-01]\\n\",\n      \"-6.696210866883943\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lr = LinearRegression().fit(X, true_fn(X_pre))\\n\",\n    \"print(lr.coef_)\\n\",\n    \"print(lr.intercept_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Projecting to subset\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[0 1 2 3 4 5 6 7 8 9]\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x2b34b1f8ac8>\"\n      ]\n     },\n     \"execution_count\": 38,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from utilities import WeightWrapper\\n\",\n    \"subset_names = X_data.columns.values\\n\",\n    \"#subset_names = set(['days_visited_as_pre', 'is_existing_member'])\\n\",\n    \"# list of indices of features X to use in the final model\\n\",\n    \"feature_inds = np.argwhere([(x in subset_names) for x in X_data.columns.values]).flatten()\\n\",\n    \"print(feature_inds)\\n\",\n    \"# Because we are projecting to a low dimensional model space, we can\\n\",\n    \"# do valid inference and we can use statsmodel linear regression to get all\\n\",\n    \"# the hypothesis testing capability\\n\",\n    \"lr_driv_model_effect = lambda: SubsetWrapper(StatsModelLinearRegression(),\\n\",\n    \"                                          feature_inds # list of indices of features X to use in the final model\\n\",\n    \"                                         )\\n\",\n    \"dr_cate.refit_final(lr_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"driv_cate = dr_cate.effect(X[:, feature_inds])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(driv_cate, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - driv_cate)**2)))\\n\",\n    \"plot_separate(X, X_pre, driv_cate)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"10.85178218531559\"\n      ]\n     },\n     \"execution_count\": 42,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# To get the ATE we look at the params of the fitted statsmodel\\n\",\n    \"dr_effect = np.mean(driv_cate)\\n\",\n    \"dr_effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.137</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.136</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   158.2</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th> <td>1.14e-309</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:26:29</td>     <th>  Log-Likelihood:    </th> <td> -46632.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>9.329e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9989</td>      <th>  BIC:               </th> <td>9.336e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>    10</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   -5.5660</td> <td>    1.292</td> <td>   -4.309</td> <td> 0.000</td> <td>   -8.098</td> <td>   -3.034</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x1</th>    <td>   35.0479</td> <td>    0.885</td> <td>   39.615</td> <td> 0.000</td> <td>   33.314</td> <td>   36.782</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x2</th>    <td>    0.0634</td> <td>    0.883</td> <td>    0.072</td> <td> 0.943</td> <td>   -1.668</td> <td>    1.795</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x3</th>    <td>   -1.8130</td> <td>    0.883</td> <td>   -2.053</td> <td> 0.040</td> <td>   -3.544</td> <td>   -0.082</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x4</th>    <td>   -0.4922</td> <td>    0.883</td> <td>   -0.557</td> <td> 0.577</td> <td>   -2.223</td> <td>    1.239</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x5</th>    <td>   -1.3540</td> <td>    0.883</td> <td>   -1.533</td> <td> 0.125</td> <td>   -3.085</td> <td>    0.377</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x6</th>    <td>    0.5077</td> <td>    0.883</td> <td>    0.575</td> <td> 0.565</td> <td>   -1.223</td> <td>    2.239</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x7</th>    <td>    0.6324</td> <td>    0.514</td> <td>    1.231</td> <td> 0.218</td> <td>   -0.374</td> <td>    1.639</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x8</th>    <td>   -0.1330</td> <td>    0.513</td> <td>   -0.259</td> <td> 0.796</td> <td>   -1.139</td> <td>    0.873</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x9</th>    <td>    0.3405</td> <td>    0.625</td> <td>    0.545</td> <td> 0.586</td> <td>   -0.885</td> <td>    1.566</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>x10</th>   <td>    0.0426</td> <td>    0.885</td> <td>    0.048</td> <td> 0.962</td> <td>   -1.692</td> <td>    1.777</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>192.935</td> <th>  Durbin-Watson:     </th> <td>   1.978</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 107.259</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td> 0.047</td>  <th>  Prob(JB):          </th> <td>5.12e-24</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.502</td>  <th>  Cond. No.          </th> <td>    11.4</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.137\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.136\\n\",\n       \"Method:                 Least Squares   F-statistic:                     158.2\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):          1.14e-309\\n\",\n       \"Time:                        20:26:29   Log-Likelihood:                -46632.\\n\",\n       \"No. Observations:               10000   AIC:                         9.329e+04\\n\",\n       \"Df Residuals:                    9989   BIC:                         9.336e+04\\n\",\n       \"Df Model:                          10                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         -5.5660      1.292     -4.309      0.000      -8.098      -3.034\\n\",\n       \"x1            35.0479      0.885     39.615      0.000      33.314      36.782\\n\",\n       \"x2             0.0634      0.883      0.072      0.943      -1.668       1.795\\n\",\n       \"x3            -1.8130      0.883     -2.053      0.040      -3.544      -0.082\\n\",\n       \"x4            -0.4922      0.883     -0.557      0.577      -2.223       1.239\\n\",\n       \"x5            -1.3540      0.883     -1.533      0.125      -3.085       0.377\\n\",\n       \"x6             0.5077      0.883      0.575      0.565      -1.223       2.239\\n\",\n       \"x7             0.6324      0.514      1.231      0.218      -0.374       1.639\\n\",\n       \"x8            -0.1330      0.513     -0.259      0.796      -1.139       0.873\\n\",\n       \"x9             0.3405      0.625      0.545      0.586      -0.885       1.566\\n\",\n       \"x10            0.0426      0.885      0.048      0.962      -1.692       1.777\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      192.935   Durbin-Watson:                   1.978\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              107.259\\n\",\n       \"Skew:                           0.047   Prob(JB):                     5.12e-24\\n\",\n       \"Kurtosis:                       2.502   Cond. No.                         11.4\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 43,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# To get the statsmodel summary we look at the effect_model, which is the pipeline, we then look\\n\",\n    \"# at the reg step of the pipeline which is the statsmodel wrapper and then we look\\n\",\n    \"# at the model attribute of the statsmodel wrapper and print the summary()\\n\",\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 10.85\\n\",\n      \"True ATE: 10.71\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"ATE Estimate: {:.2f}\\\".format(dr_effect))\\n\",\n    \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[[ 3.51178355e+01  9.93516195e-02  1.20372976e-01  4.65886192e-02\\n\",\n      \"  -2.40943550e-01 -2.89931484e-02 -1.53903712e-01 -6.79011889e-02\\n\",\n      \"   8.13619639e-02 -1.64333613e-01]]\\n\",\n      \"[-6.69621087]\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"lr = LinearRegression().fit(X[:, feature_inds], true_fn(X_pre).reshape(-1, 1))\\n\",\n    \"print(lr.coef_)\\n\",\n    \"print(lr.intercept_)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coverage of True Projection: 0.97\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x432 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also evaluate coverage and create prediction intervals using statsmodels attributes\\n\",\n    \"from statsmodels.sandbox.regression.predstd import wls_prediction_std\\n\",\n    \"res = dr_cate.effect_model.model\\n\",\n    \"predictions = res.get_prediction(PolynomialFeatures(degree=1, include_bias=True).fit_transform(X[:, feature_inds]))\\n\",\n    \"frame = predictions.summary_frame(alpha=0.05)\\n\",\n    \"pred = frame['mean']\\n\",\n    \"iv_l = frame['mean_ci_lower']\\n\",\n    \"iv_u = frame['mean_ci_upper']\\n\",\n    \"\\n\",\n    \"# This is the true CATE functions\\n\",\n    \"theta_true = true_fn(X_pre)\\n\",\n    \"# This is the true projection of the CATE function on the subspace of linear functions of the\\n\",\n    \"# subset of the features used in the projection\\n\",\n    \"true_proj = LinearRegression().fit(X[:, feature_inds], theta_true).predict(X[:, feature_inds])\\n\",\n    \"\\n\",\n    \"# Are we covering the true projection\\n\",\n    \"covered = (true_proj <= iv_u) & (true_proj >= iv_l)\\n\",\n    \"print(\\\"Coverage of True Projection: {:.2f}\\\".format(np.mean(covered)))\\n\",\n    \"\\n\",\n    \"fig, ax = plt.subplots(figsize=(8,6))\\n\",\n    \"\\n\",\n    \"ones = X[:, 6] > .5\\n\",\n    \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n    \"order = order[ones[order]]\\n\",\n    \"ax.plot(X[order, feature_inds[0]], np.array(iv_u[order]), 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], pred[order], 'g--.', label=\\\"pred1\\\")\\n\",\n    \"#ax.plot(X[order, feature_inds[0]], theta_true[order], 'b-', label=\\\"True\\\", alpha=.3)\\n\",\n    \"ax.plot(X[order, feature_inds[0]], true_proj[order], 'b-', label=\\\"TrueProj1\\\", alpha=.3)\\n\",\n    \"\\n\",\n    \"ones = X[:, 6] < .5\\n\",\n    \"order = np.argsort(X[:, feature_inds[0]])\\n\",\n    \"order = order[ones[order]]\\n\",\n    \"ax.plot(X[order, feature_inds[0]], iv_u[order], 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], iv_l[order], 'r--')\\n\",\n    \"ax.plot(X[order, feature_inds[0]], pred[order], 'g--.', label=\\\"pred0\\\")\\n\",\n    \"#ax.plot(X[order, feature_inds[0]], theta_true[order], 'b-', label=\\\"True\\\", alpha=.3)\\n\",\n    \"ax.plot(X[order, feature_inds[0]], true_proj[order], 'b-', label=\\\"TrueProj0\\\", alpha=.3)\\n\",\n    \"ax.legend(loc='best')\\n\",\n    \"plt.show()\\n\",\n    \"ax.legend(loc='best')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Lasso Final CATE\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x2b34b1f8ac8>\"\n      ]\n     },\n     \"execution_count\": 47,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"lasso_driv_model_effect = lambda: WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\\n\",\n    \"                                      ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1),\\n\",\n    \"                                                                LassoCV(cv=5, n_jobs=-1, fit_intercept=False)))]))\\n\",\n    \"dr_cate.refit_final(lasso_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# We can also see how it compares to the true CATE at each target point and calculate MSE\\n\",\n    \"dr_effect = dr_cate.effect(X)\\n\",\n    \"plt.title(\\\"DMLIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Random Forest Based CATE and Tree Explainer\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from utilities import SubsetWrapper\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# We need a model for the final regression that will fit the function theta(X)\\n\",\n    \"# Now we use a linear model and a lasso.\\n\",\n    \"rf_driv_model_effect = lambda: RandomForestRegressor(n_estimators=100, max_depth=3, min_impurity_decrease=0.1,\\n\",\n    \"                                                     min_samples_leaf=500, bootstrap=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 50,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_cate = dr_cate.refit_final(rf_driv_model_effect())\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_effect = rf_dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 52,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"##histogram of estimated treatment effect\\n\",\n    \"import seaborn as sns\\n\",\n    \"\\n\",\n    \"sns.distplot(rf_dr_effect, label='est')\\n\",\n    \"sns.distplot(true_fn(X_pre), label='true')\\n\",\n    \"plt.legend()\\n\",\n    \"plt.xlabel(\\\"Treatment Effect\\\")\\n\",\n    \"plt.ylabel(\\\"Frequency\\\")\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 53,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"ATE Estimate: 10.88\\n\",\n      \"True ATE: 10.71\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"ATE Estimate: {:.2f}\\\".format(np.mean(rf_dr_effect)))\\n\",\n    \"print(\\\"True ATE: {:.2f}\\\".format(np.mean(true_fn(X_pre))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 54,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - rf_dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, rf_dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 55,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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SII777yTFStWpLsZO2XevHnMnj27Qx9DIZ2IiIiISBtcf/31bN26tcuuT0RERLo3hXQiIiIiIiIiIiJp5kt3A0REREREOsumTZt47rnnWL9+PYWFhRx11FGMHTsWsF1E99hjD/bZZx8APvroIxYuXMi5557Lww8/DMB9992HMYYTTjiBgoICZs+ezf7778/bb7+N3+/niCOOYI899tip9U2cODHWzmAwyG233ca5555L//79AaiuruaOO+7g0ksvxePx8NRTT7FmzRrC4TDDhg1j+vTpBAKBJs953rx5bN26le9973sAbN++nTvvvJNrr70Wj8dDXV0dL774IkuXLsUYw957783UqVPxePR7voiItL+1a9cyd+5cKisrGTduHNOnT8fn81FbW9vise2jjz7i9ddfp7q6mry8vIRj7ocffsiCBQuoqqpi8ODBHH/88fTs2bPJYz/66KOMGTOGAw44IDbtvvvuY+rUqYwfP565c+eyePFi6uvr6d27N9OmTaO4uLjJelatWsXs2bO57LLLYtPuvPNOTjjhBEaMGIHjOCxYsIAPPviAuro6RowYwfTp08nNzW1x2+jIKyIiIiIZIRQK8fjjjzNy5EiuuOIKjj32WGbNmsXmzZtbve8555wDwIUXXsg111wTC9Sqqqqoqanhsssu48QTT+TZZ5/9RuuL8vl8jB8/nkWLFsWmffbZZ+y2227k5+fjOA577bUXl156KZdeeik+n4/nn3++zdvC7emnn8bj8fCLX/yCCy64gOXLl+t8diIi0mEWLVrEGWecwcUXX8yWLVt44403AFo8tjU0NDB37lxOP/10rrnmGs477zwGDhwIwBdffMH8+fM59dRTufLKKykuLmbWrFkpH3vSpEkJx9ZNmzZRXl7O6NGjARg8eDAXXHABM2bMYNKkSTzxxBMEg8Edfo7vvvsuX3zxBeeccw6XX345OTk5PPfcc63eTyGdiIiIiGSENWvW0NDQwOTJk/F6vQwfPpwxY8bw6aeffqP1Hn744fh8PnbbbTfGjBnDZ5991i7tnTRpUkLbFi1axKRJkwDIy8tj9913Jysri+zsbKZMmcKqVat2+DGqqqpYunQp06ZNw+/3k5+fz4EHHviNt4mIiEhzDjjgAHr06EFubi5TpkyJhWatHduMMWzcuJHGxkYKCwtjlebvv/8+kydPpl+/fng8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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"import pandas as pd\\n\",\n    \"\\n\",\n    \"Xdf = pd.DataFrame(X, columns=X_data.columns)\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model)\\n\",\n    \"shap_values = explainer.shap_values(Xdf)\\n\",\n    \"\\n\",\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 56,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 57,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"source\": [\n    \"# CATE  with DRIV-RW\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 58,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel, HonestForest\\n\",\n    \"from dr_iv import IntentToTreatDRIV\\n\",\n    \"from utilities import WeightWrapper\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For intent to treat DRIV we need a flexible model of the CATE to be used in the preliminary estimation.\\n\",\n    \"# This flexible model needs to accept sample weights at fit time. Here we use a weightWrapper to wrap\\n\",\n    \"# a lasso estimator. WeightWrapper requires a linear model with no intercept, hence the Pipeline\\n\",\n    \"# that adds a bias to the features.\\n\",\n    \"rf_driv_model_effect = lambda: HonestForest(RandomForestRegressor(n_estimators=100, max_depth=6, min_impurity_decrease=0.001,\\n\",\n    \"                                                     min_samples_leaf=100, bootstrap=True))\\n\",\n    \"\\n\",\n    \"rf_dr_cate = IntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                            rf_driv_model_effect(),\\n\",\n    \"                            opt_reweighted=True, # re-weighting the final loss for variance reduction\\n\",\n    \"                            cov_clip=1e-4,\\n\",\n    \"                            n_splits=10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 59,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 12.1 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.IntentToTreatDRIV at 0x2b363544748>\"\n      ]\n     },\n     \"execution_count\": 59,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"rf_dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 60,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"rf_dr_effect = rf_dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 61,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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6qHEJ4ysn7oyjTHGjGbUQNdYtvLUr9yU+Iy0gWFObwbePSUVGmOMGZMxtaFXhv3cCBwCXEs8HnOPvnrFmXbiAZxGeu+FVMb5WLly5V6vl8tl2tvbKRQK4y5+JkulUixfvhzfH8+or8YYs29jCnSNx50+XkTaiAcLWjvSbPt47/XA9QDr1q3ba5729naam5tZvXo1c2WMIFWls7OT9vZ21qxZU+tyjDGzxLj6oatqD/HgQK8D2oZcV3E58Yh741YoFFiwYMGcCXMAEWHBggVz7luJMWZqjaWXy6LKnjmVMa//CNgM/JL4yigQX0HmjokWMZfCfMBc3GZjzNQaS5PLMuDmSju6A3xXVe8UkSeB74jI5cAj7PvK78YYY6bBqIGuqo8BJ4wwfStwUrUL+vLPn6nq8j71tsOqtqybbrqJM844gwMOOACAr33ta3zlK19hy5YtdHR0sHDhwqqtyxgzc20+4jD2bACJWPtUdbNtJDaWyzjcdNNNvPzyq4cKTjnlFH7xi1+watWqGlZljKkne4c5gFOZPrWm9dT/evWtb32Lr371q5RKJU4++WSuu+461q9fz4YNGxARLrjgAlasWMGGDRv44Ac/SDqd5qGHHuKEE/b64mKMmfP2tZ889fvPcz7QN2/ezG233cYDDzyA7/tcfPHFXH755Wzfvp3HH38cgJ6eHtra2vja177GVVddxbp162pctTHG7G3ON7ncfffdbNy4kRNPPJHjjz+eu+++m66uLrZu3crHP/5xfvrTn9LS0lLrMo0xZlRzPtBVlfPOO49NmzaxadMmnn76aa655hoeffRRTj31VK699lr+8i//stZlGmNmjGic06tnzgf66aefzu23386uXbsA6Orq4sUXXySKIt7znvfw+c9/nt///vcANDc3k8lkalmuMabOxb1Zhof39PRyqbs29Gp2MxyLI488kssvv5wzzjiDKIrwfZ+rr76as88+myiKfyhf+MIXADj//PO56KKLBg+K3nDDDXzpS19ix44dHHvssbz97W/n3//936e1fmPM1JhM18PpCO+RiOqIQ7BMiXXr1unwC1xs3ryZtWtHGhpm9pvL225MPRu56yFM1572cCKyUVVH7Y0x55tcjDFmb7XrejgZ9V2dMcaYMbNAN8aYWaLuDooaY0ytqCq9+TJbWhexva2JjqYUZVeIBBAhkoh5v/op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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - rf_dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, rf_dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 62,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"lower, upper = rf_dr_cate.effect_model.predict_interval(X)\\n\",\n    \"plt.title(\\\"CIs for CATE: Coverage: {:.2f}\\\".format(np.mean((lower <= true_fn(X_pre)) & (upper >= true_fn(X_pre)))))\\n\",\n    \"sorted_ind = np.argsort(X[:, 0])\\n\",\n    \"plt.fill_between(X[sorted_ind, 0], lower[sorted_ind], upper[sorted_ind], alpha=.2)\\n\",\n    \"plt.plot(X[sorted_ind, 0], true_fn(X_pre[sorted_ind]), label='true')\\n\",\n    \"plt.plot(X[sorted_ind, 0], rf_dr_effect[sorted_ind], label='est')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 63,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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Ms4tt9zCJ5980tOzsUMWLVrEI4880tOzsUtTSCYiIiIi0gmuueYatm7dmrHTExERkdYpJBMRERERERERkawX6OkZEBERERHJFJs2beLJJ59kw4YNlJSUcPTRRzNx4kTANlHcY4892GeffQB49913efvttzn33HO55557ALjjjjswxnDSSSdRXFzMI488wv7778+rr75Kbm4uRx55JHvssccOTW/q1Kmx+QyFQvzud7/j3HPPZdCgQQDU1tZy8803c9lll+Hz+Xj00UdZu3YtkUiEkSNHMnPmTILBYIvXvGjRIrZu3copp5wCwPbt27nlllv45S9/ic/no6GhgWeeeYZVq1ZhjGHvvfdmxowZ+Hz6vV1EeqcvvviChQsXUl1dzaRJk5g5cyaBQID6+vpWj63vvvsuL774IrW1tRQWFiYc89955x1eeeUVampqGD58OCeeeCJ9+vRp8dz3338/EyZM4IADDojdd8cddzBjxgwmT57MwoULWbZsGY2NjfTr14/jjjuOsrKyFtNZs2YNjzzyCJdffnnsvltuuYWTTjqJMWPG4DgOr7zyCm+99RYNDQ2MGTOGmTNnUlBQ0NmLc5eidzYRERERESAcDvPggw8yduxYfvrTn3L88cczf/58Nm/e3OZjzznnHAB++MMfctVVV8UCrZqaGurq6rj88sv5xje+wRNPPLFT03MFAgEmT57MBx98ELvvww8/ZNSoURQVFeE4DnvttReXXXYZl112GYFAgKeeeqrdy8Lrsccew+fzcfHFF3PBBRfw8ccfqz8zEenVPvjgA8444wwuueQStmzZwksvvQTQ6rG1qamJhQsXcvrpp3PVVVdx3nnnMWTIEACWL1/O4sWL+da3vsUVV1xBWVkZ8+fPT/nc06ZNSzi2b9q0icrKSsaPHw/A8OHDueCCC5g9ezbTpk3joYceIhQKdfg1vv766yxfvpxzzjmHH//4x+Tn5/Pkk092eDq9jUIyERERERFg7dq1NDU1MX36dPx+P6NHj2bChAksXbp0p6b7la98hUAgwKhRo5gwYQIffvhhp8zvtGnTEubtgw8+YNq0aQAUFhay++67k5OTQ15eHocffjhr1qzp8HPU1NSwatUqjjvuOHJzcykqKuKggw7a6WUiIpLJDjjgAEpLSykoKODwww+PhVZtHVuNMXz55Zc0NzdTUlISq/R98803mT59OgMHDsTn83HYYYexYcMGtm/f3uK5J02alDDs/fffZ/LkyQQCtiHgHnvsQWFhIT6fj0MOOYRQKNSuH1+Svfnmmxx55JEEg0ECgQAzZszgo48+IhKJdHhavYmaW4qIiIiIANXV1QSDQYwxsfv69OlDVVXVDk8zPz+f3Nzc2O3S0lKqq6t3aj5do0ePprm5mbVr11JcXMyGDRuYNGkSAM3NzTz99NOsXr2ahoYGABobG4lEIh1qJllZWUkkEmHu3Lmx+xzHSdlsU0Skt/Ae47zH7daOrbm5ucyaNYslS5awYMECdtttN7761a8yYMAAKisrefrpp3n22Wdj03Uch+rq6hZNLvPy8mI/0EyfPp2lS5dy4oknxoYvWbKEt99+m+rqaowxNDY2UldX1+HXWFlZyT//+c+E9zyfz0dNTU1WH+MVkomIiIiIACUlJVRVVeE4TuxLQ2VlJf379wcgJyeH5ubm2Pg1NTVtTrOhoYGmpqZYUFZZWRmrLNiR6XkZY5gyZQpLly6lqKiICRMmkJeXB9gvUVu2bOF73/teLEC78847U06ntfkIBoP4/X6uuOIK9UEmIlnD++NIZWUlJSUlQNvH1nHjxjFu3Diam5t54YUXWLBgAeeeey7BYJDDDjss1j9ZW6ZOncqLL75IWVkZoVCI0aNHA1BRUcErr7zCmWeeyaBBgzDGcMMNN6ScRvKxPRKJUFtbG7sdDAb5+te/zsiRI9u/YLKA3ulERERERIARI0aQk5PDK6+8QjgcZs2aNaxYsSLWH9iQIUNYtmwZzc3NbN26tUW/XMXFxWzbtq3FdBctWkQ4HKaiooKVK1cyZcqUnZqel9vk0tvUEmzfOIFAgPz8fOrr61m0aFHaaQwZMoSKigoqKytpaGhg8eLFsWElJSWMHTuWZ555hsbGRhzHYevWrTvUdFNEZFfxxhtvUFVVRX19PYsXL469D7R2bK2pqWHFihWxcXJzc2M/Luy33368/PLLfPnll4D9AaW1pvfjx49n+/bt/Oc//2HKlCmxH26amprw+XwUFRURiUR48cUXaWxsTDmN/v37EwqFWLlyJeFwmJdeeolwOBwbvt9++/HCCy/EmnXW1tayfPnyHV9ovYQqyUREREREAL/fz7e//W2efPJJFi9eTDAY5OSTT2bAgAEAHHzwwaxbt44bb7yRwYMHs8cee/DJJ5/EHj9jxgweffRRQqEQJ554IkVFRRQXF5Ofn8/cuXPJyclh5syZOzw9N1zzGjFiBLm5uVRXV8c6dQY46KCDmD9/Pr/97W8pKSnh4IMPTvvlZ+zYsUyZMoU77riDwsJCDj30UFasWBEbfvLJJ/P8889z22230djYSN++fZk+ffrOLWwRkQw2bdo07rvvPqqrq5k4cSKHH3440Pqx1XEclixZwiOPPIIxhiFDhnDCCScAMHnyZJqamnj44YeprKwkLy8vduxNxT05yzvvvMNRRx0Vu3/s2LGMGzeOW2+9lZycHA4++GBKS0tTTiM/P58TTjiBBQsW4DgOhx56aEIzyoMOOggg9jqLioqYOnVqrNl+tjKO4/T0PIiIiIiI9IQu/SC8Zs0aHnnkES6//PKufJpMZNoeRUQkIygQab+sOLaruaWIiIiIiIiIiGQ9hWQiIiIiIiIiIpL11NxSRERERLKVPgh3jaxokiMivYLeB9ovK47tqiQTEREREREREZGsp5BMRERERERERESynkIyEREREclWG3t6BnohLVMR2ZXomNU+WbOc1CeZiIiIiEjn2dU+XGdFHzMiIiLtoUoyERERERERERHJegrJREREREREREQk6ykkExERERHpRqeeeirGGIwxzJo1q9Vx586dy5FHHsnw4cPJy8tjxIgRnHrqqXzwwQctxl26dCmnnXYagwYNIjc3l6FDh3LSSSdRW1vbVS9FRESkV1GfZCIiIiIinafVD9f33HMP5557buz2N7/5TR5++OG0448aNYqKigpGjBhBYWEhK1euBKCoqIilS5cyatQoAJYsWcIxxxxDXV0dhYWFjBs3jsbGRj7++GPWr1/PgAED0j2F+iQTERGJUiWZiIiIiEg3+Pjjj7n44os5+OCDGTFiRLsec/755/Ppp5/y+eefs2LFCubOnQtAbW0tjz76KACO4/C9732Puro6jj76aNatW8d7773H8uXLqayspF+/fl32mkRERHoThWQiIiIiIl0sFApx+umn4/P5eOCBB/D7/e163NVXXx2rFgM44ogjYtfz8vIAeP/99/noo48AKC0tZZ999qGkpIRDDjmEN954A59PH/lFRETaQ++YIiIiIiJd7Nprr+X111/n9ttvZ/To0Ts8nVtvvRWA/v37c+qppwKwYsWK2PD58+cDkJuby6uvvsqxxx7LO++8sxNzLiIikj0UkomIiIiIdKE333yT66+/njPOOIPTTz99h6bR1NTEmWeeyd/+9jeCwSCPPfYYAwcOBGyVmuvYY49l9erVLF++nKKiIpqbm/nTn/7UKa9DRESkt1NIJiIiIiLShZYuXUo4HObhhx+muLiY4uJiPvvsMwAee+wxiouLqaysTPv4zZs3c9RRR3HfffcxdOhQFi1axPTp02PDhw8fHru+7777Yoxh4MCBsYq1NWvWdM0LExER6WUUkomIiIiIdIOGhgZqa2upra3FPcN8OByO3T7qqKOYNGkSV155Zewxy5Yt48ADD+Tll19mr7324o033mDvvfdOmO4BBxxAaWkpQKxp5ZYtW2Lh2IQJE7rh1YmIiOz6FJKJiIiIiHShs88+G8dxEi5lZWUAfPOb38RxHPr06cPHH3/MihUrWL9+feyxJ598Mp988glgm1XOmjWLgw46iIMOOoi77roLgIKCAn79618D8PTTTzNu3DgmTpxITU0NpaWlXHrppd38ikVEZEdUV1c71dXVTk/PRzYL9PQMiIiIiIhIag0NDbHrS5cuTRh23HHHxa5fdNFFlJaWctNNN7F8+fJYx/433HADY8aM6bb5FRER2ZUZt9RbRERERER22q724dr09AyIiIjlVpGVlJTo2NxD1NxSRERERERERESynkIyERERERERERHJegrJREREREREREQk6ykkExERERERERGRrKeQTEREREREREREsp5CMhERERGRzrOxp2egA3aleRUREelygZ6eARERERGRXmRIZ0+wurraASgpKTGdPW0RERGJUyWZdApjzKnGmA+NMRFjzH5Jw640xqw2xqwwxnw1zeNHG2NeN8asMsb80xiT2z1znp2iy/jd6GWNMebdNOOtMcZ8EB3vze6ez2xljLnGGPOFZx0dn2a846L71WpjzM+6ez6zlTHmRmPMcmPM+8aYR40xfdKMp/2nG7W1Pxhj8qLHvtXR95tR3T+X2csYs5sx5j/GmGXRzwuXpBhnhjGm0nPs+2VPzGu2auuYZaw/RPeh940x+/TEfGYrY8xEz77xrjGmyhhzadI42oe6kTHmr8aYL40xSz339TPGPBf9TvOcMaZvmseeFR1nlTHmrO6b6+ySZh3pc1yGSLN+evx7kEIy6SxLgVOAl7x3GmN2B8qBKcBxwO3GGH+Kx88BbnYcZzywDTiv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D/Urfb9IgOgy6QQ8AN6/Jvasnj9hdQbe8ZkCZ2lXKxSfD4o7x7U7d/7qes/8LRtP/pBe6v4EZxA+uf7s2lpERM6/v890y0DmTKqJN4b835luGQjOZrql/G9YtNk73bKMK82JlLRhL3AyDbjq4vNdE/m/4PuNvDqlplvKuTB2Gi/qISIi8j/q9RWu8z7d8o+ubikiIiIiIiIiIvI/T0EyEREREREREREJeAqSiYiIiIiIiIhIwPt7XN1SMtGy3vmug/iqHQ8EKYYcEOpWBcJ0dS85S9WjAafjfNdC/q9oUB2ICDvftRARERGRs6SF+/8+tCFERERERERERM4tLdwvIiIiIiIiIiJythQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4wee7AlLMON8VEBEREREREREJVMokExERERERERGRgKcgmYiIiIiIiIiIBDwFyUREREREREREJOApSCYiIiIiIiIiIgFPQTIREREREREREQl4CpKJiIiIiIiIiEjAU5BMREREREREREQCnoJkIiIiIiIiIiIS8BQkExERERERERGRgKcgmYiIiIiIiIiIBLz/B8H7h3ZZR0BLAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import shap\\n\",\n    \"import pandas as pd\\n\",\n    \"from copy import deepcopy\\n\",\n    \"from sklearn.ensemble import RandomForestRegressor\\n\",\n    \"\\n\",\n    \"Xdf = pd.DataFrame(X, columns=X_data.columns)\\n\",\n    \"# explain the model's predictions using SHAP values\\n\",\n    \"explainer = shap.TreeExplainer(rf_dr_cate.effect_model.forest)\\n\",\n    \"shap_values = explainer.shap_values(Xdf)\\n\",\n    \"\\n\",\n    \"# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)\\n\",\n    \"shap.force_plot(explainer.expected_value, shap_values[0,:], Xdf.iloc[0,:], matplotlib=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 64,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 65,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 576x396 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"shap.summary_plot(shap_values, Xdf, plot_type='bar')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 71,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>  -0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>  -0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>    -inf</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:29:07</td>     <th>  Log-Likelihood:    </th> <td> -46991.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>9.398e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>9.399e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   10.9125</td> <td>    0.266</td> <td>   41.052</td> <td> 0.000</td> <td>   10.391</td> <td>   11.434</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>464.249</td> <th>  Durbin-Watson:     </th> <td>   1.998</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 256.490</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.234</td>  <th>  Prob(JB):          </th> <td>2.01e-56</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.370</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                      -0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                 -0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                      -inf\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        20:29:07   Log-Likelihood:                -46991.\\n\",\n       \"No. Observations:               10000   AIC:                         9.398e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         9.399e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         10.9125      0.266     41.052      0.000      10.391      11.434\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      464.249   Durbin-Watson:                   1.998\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              256.490\\n\",\n       \"Skew:                          -0.234   Prob(JB):                     2.01e-56\\n\",\n       \"Kurtosis:                       2.370   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 71,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from utilities import ConstantModel\\n\",\n    \"rf_dr_cate.refit_final(ConstantModel(), opt_reweighted=False)\\n\",\n    \"rf_dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Using Generic DRIV\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 72,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from dml_iv import DMLIV\\n\",\n    \"from dr_iv import DRIV, ProjectedDRIV\\n\",\n    \"from utilities import SubsetWrapper, StatsModelLinearRegression, ConstantModel\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"# For DRIV we need a model for predicting E[T*Z | X]. We use a classifier\\n\",\n    \"model_TZ_X = lambda: model_clf()\\n\",\n    \"\\n\",\n    \"# For generic DRIV we also need to provide a preliminary effect model. Here we use DMLIV\\n\",\n    \"dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\\n\",\n    \"dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, n_jobs=-1))\\n\",\n    \"prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\\n\",\n    \"                          dmliv_model_effect(), dmliv_featurizer(), n_splits=1)\\n\",\n    \"\\n\",\n    \"dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\\n\",\n    \"                        prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\\n\",\n    \"                        model_TZ_X(), # model for E[T * Z | X]\\n\",\n    \"                        ConstantModel(), # model for final stage of fitting theta(X)\\n\",\n    \"                        cov_clip=.0001, # covariance clipping to avoid large values in final regression from weak instruments\\n\",\n    \"                        n_splits=10, # number of splits to use for cross-fitting\\n\",\n    \"                        binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\\n\",\n    \"                        binary_treatment=True, # a flag whether to stratify cross-fitting by treatment\\n\",\n    \"                        opt_reweighted=False\\n\",\n    \"                       )\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 73,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Wall time: 9.63 s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<dr_iv.DRIV at 0x2b3634c9c88>\"\n      ]\n     },\n     \"execution_count\": 73,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 74,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>  -0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>  -0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>    -inf</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:29:19</td>     <th>  Log-Likelihood:    </th> <td> -47493.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>9.499e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>9.500e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   10.8649</td> <td>    0.280</td> <td>   38.872</td> <td> 0.000</td> <td>   10.317</td> <td>   11.413</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>101.664</td> <th>  Durbin-Watson:     </th> <td>   1.997</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 104.449</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.248</td>  <th>  Prob(JB):          </th> <td>2.08e-23</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.929</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                      -0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                 -0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                      -inf\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        20:29:19   Log-Likelihood:                -47493.\\n\",\n       \"No. Observations:               10000   AIC:                         9.499e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         9.500e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         10.8649      0.280     38.872      0.000      10.317      11.413\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      101.664   Durbin-Watson:                   1.997\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              104.449\\n\",\n       \"Skew:                          -0.248   Prob(JB):                     2.08e-23\\n\",\n       \"Kurtosis:                       2.929   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 74,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Deep CATE Models\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 75,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Using TensorFlow backend.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from deep_dr_iv import DeepIntentToTreatDRIV\\n\",\n    \"import keras\\n\",\n    \"treatment_model = lambda: keras.Sequential([keras.layers.Dense(1000, activation='relu'),\\n\",\n    \"                                            keras.layers.Dropout(0.17),\\n\",\n    \"                                            keras.layers.Dense(1)])\\n\",\n    \"keras_fit_options = { \\\"epochs\\\": 100,\\n\",\n    \"                      \\\"batch_size\\\": 32,\\n\",\n    \"                      \\\"validation_split\\\": 0.1,\\n\",\n    \"                      \\\"callbacks\\\": [keras.callbacks.EarlyStopping(patience=10, restore_best_weights=True)],\\n\",\n    \"                      \\\"verbose\\\": 0}\\n\",\n    \"dr_cate = DeepIntentToTreatDRIV(model_Y_X(), model_T_XZ(),\\n\",\n    \"                                treatment_model(),\\n\",\n    \"                                training_options=keras_fit_options,\\n\",\n    \"                                cov_clip=0.0001,\\n\",\n    \"                                opt_reweighted=False,\\n\",\n    \"                                n_splits=3)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 76,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"WARNING:tensorflow:From C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\tensorflow\\\\python\\\\framework\\\\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\\n\",\n      \"Instructions for updating:\\n\",\n      \"Colocations handled automatically by placer.\\n\",\n      \"WARNING:tensorflow:From C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\keras\\\\backend\\\\tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\\n\",\n      \"Instructions for updating:\\n\",\n      \"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\\n\",\n      \"WARNING:tensorflow:From C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\tensorflow\\\\python\\\\ops\\\\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\\n\",\n      \"Instructions for updating:\\n\",\n      \"Use tf.cast instead.\\n\",\n      \"Wall time: 1min 6s\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<deep_dr_iv.DeepIntentToTreatDRIV at 0x2b37227afd0>\"\n      ]\n     },\n     \"execution_count\": 76,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"%%time\\n\",\n    \"dr_cate.fit(y, T, X, Z, store_final=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 77,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dr_effect = dr_cate.effect(X)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 78,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.title(\\\"DRIV CATE: MSE {:.2}\\\".format(np.mean((true_fn(X_pre) - dr_effect)**2)))\\n\",\n    \"plot_separate(X, X_pre, dr_effect)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 79,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<deep_dr_iv.DeepIntentToTreatDRIV at 0x2b37227afd0>\"\n      ]\n     },\n     \"execution_count\": 79,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from utilities import ConstantModel\\n\",\n    \"dr_cate.refit_final(ConstantModel(), opt_reweighted=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 80,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>OLS Regression Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.000</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>     inf</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Date:</th>             <td>Fri, 07 Jun 2019</td> <th>  Prob (F-statistic):</th>  <td>   nan</td>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Time:</th>                 <td>20:30:41</td>     <th>  Log-Likelihood:    </th> <td> -47448.</td> \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>No. Observations:</th>      <td> 10000</td>      <th>  AIC:               </th> <td>9.490e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Residuals:</th>          <td>  9999</td>      <th>  BIC:               </th> <td>9.490e+04</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Df Model:</th>              <td>     0</td>      <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>    \\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"    <td></td>       <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>const</th> <td>   10.9521</td> <td>    0.278</td> <td>   39.363</td> <td> 0.000</td> <td>   10.407</td> <td>   11.498</td>\\n\",\n       \"</tr>\\n\",\n       \"</table>\\n\",\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<tr>\\n\",\n       \"  <th>Omnibus:</th>       <td>295.156</td> <th>  Durbin-Watson:     </th> <td>   1.997</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Prob(Omnibus):</th> <td> 0.000</td>  <th>  Jarque-Bera (JB):  </th> <td> 205.622</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Skew:</th>          <td>-0.242</td>  <th>  Prob(JB):          </th> <td>2.24e-45</td>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>Kurtosis:</th>      <td> 2.492</td>  <th>  Cond. No.          </th> <td>    1.00</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/>Warnings:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\"\n      ],\n      \"text/plain\": [\n       \"<class 'statsmodels.iolib.summary.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                            OLS Regression Results                            \\n\",\n       \"==============================================================================\\n\",\n       \"Dep. Variable:                      y   R-squared:                       0.000\\n\",\n       \"Model:                            OLS   Adj. R-squared:                  0.000\\n\",\n       \"Method:                 Least Squares   F-statistic:                       inf\\n\",\n       \"Date:                Fri, 07 Jun 2019   Prob (F-statistic):                nan\\n\",\n       \"Time:                        20:30:41   Log-Likelihood:                -47448.\\n\",\n       \"No. Observations:               10000   AIC:                         9.490e+04\\n\",\n       \"Df Residuals:                    9999   BIC:                         9.490e+04\\n\",\n       \"Df Model:                           0                                         \\n\",\n       \"Covariance Type:            nonrobust                                         \\n\",\n       \"==============================================================================\\n\",\n       \"                 coef    std err          t      P>|t|      [0.025      0.975]\\n\",\n       \"------------------------------------------------------------------------------\\n\",\n       \"const         10.9521      0.278     39.363      0.000      10.407      11.498\\n\",\n       \"==============================================================================\\n\",\n       \"Omnibus:                      295.156   Durbin-Watson:                   1.997\\n\",\n       \"Prob(Omnibus):                  0.000   Jarque-Bera (JB):              205.622\\n\",\n       \"Skew:                          -0.242   Prob(JB):                     2.24e-45\\n\",\n       \"Kurtosis:                       2.492   Cond. No.                         1.00\\n\",\n       \"==============================================================================\\n\",\n       \"\\n\",\n       \"Warnings:\\n\",\n       \"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 80,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dr_cate.effect_model.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.7.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dml_iv/coverage_experiment.py",
    "content": "import warnings\nwarnings.filterwarnings('ignore')\nimport pandas as pd\nimport numpy as np\nfrom sklearn.linear_model import LinearRegression, Lasso, LogisticRegression\nfrom sklearn.ensemble import GradientBoostingRegressor, GradientBoostingClassifier\nfrom sklearn.preprocessing import PolynomialFeatures, StandardScaler, RobustScaler, QuantileTransformer\nfrom sklearn.pipeline import Pipeline\nimport scipy.special\nfrom dml_iv import DMLIV, GenericDMLIV\nfrom dr_iv import DRIV, ProjectedDRIV\nfrom dml_ate_iv import DMLATEIV\nimport numpy as np\nimport pandas as pd\nimport locale\nfrom utilities import SubsetWrapper\nimport statsmodels.api as sm\nfrom utilities import RegWrapper\nfrom sklearn.model_selection import GridSearchCV, StratifiedKFold, train_test_split\nfrom sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\nfrom sklearn.dummy import DummyClassifier\nfrom sklearn.linear_model import LinearRegression, LogisticRegression, LogisticRegressionCV, LassoCV\nfrom sklearn import metrics\nfrom xgboost import XGBClassifier, XGBRegressor\nfrom xgb_utilities import XGBWrapper\nfrom utilities import SelectiveLasso\nfrom econml.utilities import hstack\nfrom joblib.parallel import Parallel, delayed\n\n\n# A wrapper of statsmodel linear regression, wrapped in a sklearn interface.\n# We can use statsmodel for all hypothesis testing capabilities\nclass StatsModelLinearRegression:\n    def __init__(self):\n        return\n    def fit(self, X, y):\n        self.model = sm.OLS(y, X).fit()\n        return self\n    def predict(self, X):\n        return self.model.predict(exog=X)\n    def summary(self):\n        return self.model.summary()\n    @property\n    def coef_(self):\n        return self.model._results.params\n    @property\n    def intercept_(self):\n        return 0\n\n# For DMLIV we also need a model for E[T | X, Z]. We use a classifier since T is binary\n# Because Z is also binary, we could have also done a more complex model_T_XZ, where we split\n# the data based on Z=1 and Z=0 and fit a separate sub-model for each case.\n#model_T_XZ = lambda: model_clf()\nclass SeparateModel:\n    def __init__(self, model0, model1):\n        self.model0 = model0\n        self.model1 = model1\n        return\n    def fit(self, XZ, T):\n        Z0 = (XZ[:, -1] == 0)\n        Z1 = (XZ[:, -1] == 1)\n        self.model0.fit(XZ[Z0, :-1], T[Z0])\n        self.model1.fit(XZ[Z1, :-1], T[Z1])\n        return self\n    def predict(self, XZ):\n        Z0 = (XZ[:, -1] == 0)\n        Z1 = (XZ[:, -1] == 1)\n        t_pred = np.zeros(XZ.shape[0])\n        if np.sum(Z0) > 0:\n                t_pred[Z0] = self.model0.predict(XZ[Z0, :-1])\n        if np.sum(Z1) > 0:\n                t_pred[Z1] = self.model1.predict(XZ[Z1, :-1])\n                \n        return t_pred\n    @property\n    def coef_(self):\n        return np.concatenate((self.model0.coef_, self.model1.coef_))\n\nX_colnames = {\n    'days_visited_exp_pre': 'day_count_pre',  # How many days did they visit TripAdvisor attractions pages in the pre-period\n    'days_visited_free_pre': 'day_count_pre',  # How many days did they visit TripAdvisor through free channels (e.g. domain direct) in the pre-period\n    'days_visited_fs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor fs pages in the pre-period    \n    'days_visited_hs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor hotels pages in the pre-period\n    'days_visited_rs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor restaurant pages in the pre-period\n    'days_visited_vrs_pre': 'day_count_pre',  # How many days did they visit TripAdvisor vrs pages in the pre-period\n    'is_existing_member': 'binary', #Binary indicator of whether they are existing member\n    'locale_en_US': 'binary',  # User's locale\n    'os_type': 'os',  # User's operating system\n    'revenue_pre': 'revenue',  # Revenue in the pre-period\n}\n\ntreat_colnames = {\n    'treatment': 'binary',  # Did they receive the Google One-Tap experiment? [This is the instrument]\n    'is_member': 'is_member'  # Did they become a member during the experiment period (through any means)? [This is the treatment of interest]\n}\n\noutcome_colnames = {\n    'days_visited': 'days_visited',  # How many days did they visit TripAdvisor in the experimental period\n}\n\n\ndef gen_data(data_type, n):\n    gen_func = {'day_count_pre': lambda: np.random.randint(0, 29 , n),  # Pre-experiment period was 28 days\n                'day_count_post': lambda: np.random.randint(0, 15, n),  # Experiment ran for 14 days\n                'os': lambda: np.random.choice(['osx', 'windows', 'linux'], n),\n                'locale': lambda: np.random.choice(list(locale.locale_alias.keys()), n),\n                'count': lambda: np.random.lognormal(1, 1, n).astype('int'),\n                'binary': lambda: np.random.binomial(1, .5, size=(n,)),\n                ##'days_visited': lambda: \n                'revenue': lambda: np.round(np.random.lognormal(0, 3, n), 2)\n                \n            }\n    \n    return gen_func[data_type]() if data_type else None\n\n\ndef dgp_binary(X, n, true_fn):\n    ##X = np.random.uniform(-1, 1, size=(n, d))\n    Z = np.random.binomial(1, .5, size=(n,))\n    nu = np.random.uniform(0, 10, size=(n,))\n    coef_Z = 0.2\n    C = np.random.binomial(1, coef_Z*scipy.special.expit(0.1*(X[:, 0] + nu))) # Compliers when recomended\n    C0 = np.random.binomial(1, .1*np.ones(X.shape[0])) # Non-compliers when not recommended \n    T = C * Z + C0 * (1 - Z)\n    y = true_fn(X) * (T + 0.2*nu)  + (0.1*X[:, 0] + 0.1*np.random.uniform(0, 1, size=(n,)))\n    return y, T, Z\n\ndef exp(n):\n\n    COV_CLIP = 10/n\n\n    X_data = {colname: gen_data(datatype, n) for colname, datatype in X_colnames.items()}\n    X_data=pd.DataFrame({**X_data})\n    # Turn strings into categories for numeric mapping\n    X_data['os_type'] = X_data.os_type.astype('category').cat.codes\n    X_pre=X_data.values.astype('float')\n\n    true_fn = lambda X: (.8+.5*X[:,0] - 3*X[:, 6])\n\n    y, T, Z = dgp_binary(X_pre, n, true_fn)\n    X = QuantileTransformer(subsample=n//10).fit_transform(X_pre)\n\n    true_ate = np.mean(true_fn(X_pre))\n    print(\"True ATE: {:.3f}\".format(true_ate))\n    print(\"New members: in treatment = {:f}, in control = {:f}\".format(T[Z == 1].sum()/Z.sum(), T[Z == 0].sum()/(1-Z).sum()))\n    print(\"Z treatment proportion: {:.5f}\".format(np.mean(Z)))\n\n\n    # ### Defining some generic regressors and classifiers\n\n    # This a generic non-parametric regressor\n    # model = lambda: GradientBoostingRegressor(n_estimators=20, max_depth=3, min_samples_leaf=20,\n    #                                        n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001)\n    #model = lambda: XGBWrapper(XGBRegressor(gamma=0.001, n_estimators=50, min_child_weight=50, n_jobs=10),\n    #                        early_stopping_rounds=5, eval_metric='rmse', binary=False)\n\n    # model = lambda: RandomForestRegressor(n_estimators=100)\n    # model = lambda: Lasso(alpha=0.0001) #CV(cv=5)\n    # model = lambda: GradientBoostingRegressor(n_estimators=60)\n    # model = lambda: LinearRegression(n_jobs=-1)\n    model = lambda: LassoCV(cv=5, n_jobs=-1)\n\n    # This is a generic non-parametric classifier. We have to wrap it with the RegWrapper, because\n    # we want to use predict_proba and not predict. The RegWrapper calls predict_proba of the\n    # underlying model whenever predict is called.\n    # model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=20, max_depth=3, min_samples_leaf=20,\n    #                                        n_iter_no_change=5, min_impurity_decrease=.001, tol=0.001))\n    # model_clf = lambda: RegWrapper(XGBWrapper(XGBClassifier(gamma=0.001, n_estimators=50, min_child_weight=50, n_jobs=10),\n    #                                        early_stopping_rounds=5, eval_metric='logloss', binary=True))\n    # model_clf = lambda: RandomForestClassifier(n_estimators=100)\n    # model_clf = lambda: RegWrapper(GradientBoostingClassifier(n_estimators=60))\n    # model_clf = lambda: RegWrapper(LogisticRegression(C=10, penalty='l1', solver='liblinear'))\n    model_clf = lambda: RegWrapper(LogisticRegressionCV(n_jobs=-1, cv=5, scoring='neg_log_loss'))\n\n    model_clf_dummy = lambda: RegWrapper(DummyClassifier(strategy='prior'))\n\n    # We need to specify models to be used for each of these residualizations\n    model_Y_X = lambda: model() # model for E[Y | X]\n    model_T_X = lambda: model_clf() # model for E[T | X]. We use a classifier since T is binary\n\n    # model_Z_X = lambda: model_clf() # model for E[Z | X]. We use a classifier since Z is binary\n    model_Z_X = lambda: model_clf_dummy() # model for E[Z | X]. We use a classifier since Z is binary\n\n    # E[T | X, Z]\n    model_T_XZ = lambda: SeparateModel(model_clf(), model_clf())\n\n    # E[TZ | X]\n    model_TZ_X = lambda: model_clf()\n\n\n    # We fit DMLATEIV with these models and then we call effect() to get the ATE.\n    # n_splits determines the number of splits to be used for cross-fitting.\n\n\n    # # Algorithm 2 - Current Method\n\n    # In[121]:\n\n    dmlateiv_obj = DMLATEIV(model_Y_X(), model_T_X(), model_Z_X(),\n                    n_splits=10, # n_splits determines the number of splits to be used for cross-fitting.\n                    binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\n                    binary_treatment=True # a flag whether to stratify cross-fitting by treatment\n                    )\n\n    dmlateiv_obj.fit(y, T, X, Z)\n\n\n    ta_effect = dmlateiv_obj.effect()\n    ta_effect_conf = dmlateiv_obj.normal_effect_interval(lower=2.5, upper=97.5)\n    \n    print(\"{:.3f}, ({:.3f}, {:3f})\".format(ta_effect, ta_effect_conf[0], ta_effect_conf[1]))\n\n\n    # # Algorithm 3 - DRIV ATE\n\n    driv_model_effect = lambda: Pipeline([('poly', PolynomialFeatures(degree=0, include_bias=True)),\n                                                    ('reg', StatsModelLinearRegression())])\n\n    dmliv_featurizer = lambda: PolynomialFeatures(degree=1, include_bias=True)\n    dmliv_model_effect = lambda: SelectiveLasso(np.arange(1, X.shape[1]+1), LassoCV(cv=5, n_jobs=-1))\n    prel_model_effect = DMLIV(model_Y_X(), model_T_X(), model_T_XZ(),\n                            dmliv_model_effect(), dmliv_featurizer(), n_splits=1)\n    #dmliv_model_effect = lambda: model()\n    #prel_model_effect = GenericDMLIV(model_Y_X(), model_T_X(), model_T_XZ(), \n    #                                 dmliv_model_effect(),\n    #                                 n_splits=1)\n    dr_cate = DRIV(model_Y_X(), model_T_X(), model_Z_X(), # same as in DMLATEIV\n                            prel_model_effect, # preliminary model for CATE, must support fit(y, T, X, Z) and effect(X)\n                            model_TZ_X(), # model for E[T * Z | X]\n                            driv_model_effect(), # model for final stage of fitting theta(X)\n                            cov_clip=COV_CLIP, # covariance clipping to avoid large values in final regression from weak instruments\n                            n_splits=10, # number of splits to use for cross-fitting\n                            binary_instrument=True, # a flag whether to stratify cross-fitting by instrument\n                            binary_treatment=True # a flag whether to stratify cross-fitting by treatment\n                        )\n    dr_cate.fit(y, T, X, Z)\n    dr_effect = dr_cate.effect_model.named_steps['reg'].coef_[0]\n    dr_effect_conf = dr_cate.effect_model.named_steps['reg'].model.conf_int(alpha=0.05)[0]\n    print(\"{:.3f}, ({:.3f}, {:3f})\".format(dr_effect, dr_effect_conf[0], dr_effect_conf[1]))\n    return true_ate, ta_effect, ta_effect_conf[0], ta_effect_conf[1], dr_effect, dr_effect_conf[0], dr_effect_conf[1]\n\n\n\nif __name__==\"__main__\":\n    np.random.seed(123)\n    n_samples = 100000\n    n_exp = 100\n    res = np.array(Parallel(n_jobs=-1, verbose=3)(\n            delayed(exp)(n_samples) for _ in range(n_exp)))\n    np.save('coverage_results.npy', res)\n    print(\"Coverage DMLATE: {:.3f}\".format(np.mean((res[:, 0] >= res[:, 2]) & (res[:, 0] <= res[:, 3]))))\n    print(\"Coverage DRIV: {:.3f}\".format(np.mean((res[:, 0] >= res[:, 5]) & (res[:, 0] <= res[:, 6]))))"
  },
  {
    "path": "prototypes/dml_iv/data/card.csv",
    "content": "\"id\",\"nearc2\",\"nearc4\",\"educ\",\"age\",\"fatheduc\",\"motheduc\",\"weight\",\"momdad14\",\"sinmom14\",\"step14\",\"reg661\",\"reg662\",\"reg663\",\"reg664\",\"reg665\",\"reg666\",\"reg667\",\"reg668\",\"reg669\",\"south66\",\"black\",\"smsa\",\"south\",\"smsa66\",\"wage\",\"enroll\",\"kww\",\"iq\",\"married\",\"libcrd14\",\"exper\",\"lwage\",\"expersq\"\n2,0,0,7,29,,,158413,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,548,0,15,,1,0,16,6.306275367736816,256\n3,0,0,12,27,8,8,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,481,0,35,93,1,1,9,6.175867080688477,81\n4,0,0,12,34,14,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,721,0,42,103,1,1,16,6.580639362335205,256\n5,1,1,11,27,11,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,250,0,25,88,1,1,10,5.521461009979248,100\n6,1,1,12,34,8,7,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,729,0,34,108,1,0,16,6.591673851013184,256\n7,1,1,12,26,9,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,38,85,1,1,8,6.214608192443848,64\n8,1,1,18,33,14,14,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,565,0,41,119,1,1,9,6.336825847625732,81\n9,1,1,14,29,14,14,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,608,0,46,108,1,1,9,6.41017484664917,81\n10,1,1,12,28,12,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,425,0,32,96,4,0,10,6.052089214324951,100\n11,1,1,12,29,12,12,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,515,0,34,97,1,1,11,6.244166851043701,121\n12,1,1,9,28,11,12,380166,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,225,0,29,84,1,0,13,5.41610050201416,169\n13,1,1,12,26,11,6,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,400,0,34,89,1,1,8,5.991464614868164,64\n14,1,1,11,24,11,6,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,417,0,22,93,1,1,7,6.03308629989624,49\n15,1,1,11,30,11,6,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,217,0,27,74,1,0,13,5.379897117614746,169\n16,1,1,16,31,,8,648053,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,894,0,43,116,1,1,9,6.795705795288086,81\n17,1,1,14,24,15,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,300,0,36,,6,1,4,5.703782558441162,16\n19,1,1,12,34,12,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,346,0,40,93,1,1,16,5.846438884735107,256\n20,1,1,14,29,,12,496635,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,658,0,35,100,1,1,9,6.4892048835754395,81\n22,1,1,10,26,8,8,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,575,0,24,91,6,0,10,6.3543701171875,100\n25,1,1,12,32,8,8,355491,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,649,0,35,88,1,0,14,6.475432872772217,196\n26,1,1,18,32,12,13,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,944,0,43,,1,1,8,6.850126266479492,64\n29,1,1,18,34,,8,408301,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,614,0,50,114,1,1,10,6.419994831085205,100\n30,1,1,15,32,5,14,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,726,0,37,111,1,1,11,6.587550163269043,121\n31,0,1,12,28,14,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,604,0,44,,1,1,10,6.403573989868164,100\n32,0,1,12,32,11,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,693,0,44,95,1,1,14,6.541029930114746,196\n35,0,1,18,34,14,13,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1400,0,44,132,1,1,10,7.244227409362793,100\n36,0,1,12,26,7,12,367772,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,300,0,27,,6,1,8,5.703782558441162,64\n37,0,1,18,32,16,16,355491,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1800,0,38,109,5,1,8,7.495542049407959,64\n38,0,1,12,25,11,12,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,413,0,43,108,1,1,7,6.023447513580322,49\n39,0,1,14,29,,16,496635,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,632,0,45,102,1,1,9,6.448889255523682,81\n47,1,1,12,25,12,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,208,0,30,106,1,1,7,5.337538242340088,49\n48,1,1,12,25,,11,102031,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,457,0,40,104,6,1,7,6.124683380126953,49\n53,1,1,16,24,10,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,824,0,24,119,1,1,2,6.714170455932617,4\n54,1,1,18,34,,12,408301,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,47,122,1,1,10,6.357842445373535,100\n55,1,1,11,28,6,10,380166,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,255,0,32,90,1,1,11,5.541263580322266,121\n62,1,1,16,30,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,962,0,47,118,1,1,8,6.869014263153076,64\n63,1,1,10,31,8,6,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,944,0,37,105,1,0,15,6.850126266479492,225\n64,1,1,18,34,8,11,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1146,1,43,115,1,1,10,7.044033050537109,100\n77,1,1,6,27,2,6,104596,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,324,0,16,,1,1,15,5.780743598937988,225\n79,1,1,11,24,6,12,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,235,0,27,65,5,1,7,5.459585666656494,49\n80,1,1,12,34,11,10,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1000,0,45,120,1,0,16,6.907755374908447,256\n81,1,1,9,26,,12,422407,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,31,86,4,1,11,6.175867080688477,121\n82,1,1,15,32,10,12,89826,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,624,0,39,109,1,1,11,6.436150550842285,121\n83,1,1,11,34,8,10,89826,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,650,0,36,72,1,0,17,6.476972579956055,289\n87,1,1,12,24,,10,102031,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,344,0,31,,6,0,6,5.840641498565674,36\n90,1,1,16,24,12,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,380,0,,,6,0,2,5.940171241760254,4\n91,1,1,12,24,12,11,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,353,0,25,101,1,1,6,5.8664679527282715,36\n92,1,1,13,25,,12,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,659,0,29,105,6,1,6,6.490723609924316,36\n93,1,1,17,28,10,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,621,1,48,136,1,1,5,6.431331157684326,25\n97,1,1,12,25,10,11,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,440,0,40,101,1,1,7,6.086774826049805,49\n98,1,1,12,26,12,10,104596,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,738,0,34,96,6,1,8,6.603943824768066,64\n102,1,1,11,31,5,5,158413,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,280,0,36,,1,0,14,5.63478946685791,196\n107,1,1,10,24,5,,369567,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,434,0,34,,1,1,8,6.073044300079346,64\n108,1,1,12,27,,8,380166,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,705,0,34,101,1,1,9,6.558197975158691,81\n110,1,1,12,27,10,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,425,0,32,91,1,1,9,6.052089214324951,81\n111,1,1,12,24,,4,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,571,0,35,,1,1,6,6.347389221191406,36\n112,1,1,16,30,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,538,0,52,115,6,1,8,6.287858486175537,64\n115,1,1,16,32,12,12,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,740,0,49,113,1,1,10,6.606650352478027,100\n116,1,1,13,32,10,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,673,1,43,123,1,1,13,6.511745452880859,169\n119,1,1,12,34,10,10,89826,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,769,0,36,95,1,1,16,6.6450910568237305,256\n121,1,1,12,24,10,10,90339,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,592,0,26,102,1,1,6,6.383506774902344,36\n125,1,1,9,24,12,11,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,213,0,15,,6,1,9,5.361292362213135,81\n127,1,1,16,34,12,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1563,0,50,145,1,1,12,7.354362487792969,144\n129,1,1,16,28,11,11,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,774,0,35,114,1,1,6,6.651571750640869,36\n131,1,1,12,26,8,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,600,0,35,113,1,0,8,6.396929740905762,64\n133,1,1,18,24,16,16,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,693,0,24,,6,1,0,6.541029930114746,0\n135,1,1,13,31,8,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,570,0,40,93,5,1,12,6.345636367797852,144\n136,1,1,14,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,433,0,38,,5,1,8,6.070737838745117,64\n137,1,1,15,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,538,0,37,119,2,0,7,6.287858486175537,49\n138,1,1,12,25,12,9,369567,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,627,0,35,108,6,1,7,6.440946578979492,49\n139,1,1,8,31,12,11,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,35,,1,1,17,6.175867080688477,289\n141,1,1,12,26,6,11,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,545,0,26,72,1,1,8,6.300786018371582,64\n142,1,1,12,25,12,9,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,576,0,34,86,1,1,7,6.356107711791992,49\n144,1,1,16,25,14,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,700,0,42,123,1,1,3,6.551080226898193,9\n147,1,1,16,28,12,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,788,0,38,103,1,1,6,6.669497966766357,36\n148,1,1,17,27,12,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1012,0,42,101,1,1,4,6.919683933258057,16\n149,1,1,12,24,12,10,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,758,0,30,,1,1,6,6.630683422088623,36\n150,1,1,14,29,12,16,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,601,1,41,105,6,1,9,6.398594856262207,81\n151,1,1,12,24,,12,357519,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,283,0,34,,6,1,6,5.64544677734375,36\n154,1,1,12,24,12,12,397244,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,250,0,29,,6,1,6,5.521461009979248,36\n156,1,1,12,26,10,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,33,95,1,1,8,6.214608192443848,64\n157,1,1,11,31,8,6,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,550,0,41,98,1,1,14,6.309918403625488,196\n158,1,1,12,25,8,6,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1143,0,27,,1,1,7,7.041411876678467,49\n159,1,1,18,31,8,8,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,810,0,39,115,4,0,7,6.6970343589782715,49\n164,1,1,12,28,,9,104596,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,313,0,20,60,6,1,10,5.746203422546387,100\n166,1,1,18,25,,4,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,731,0,36,135,1,1,1,6.5944132804870605,1\n168,1,1,16,25,9,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,1,35,132,1,1,3,6.437751770019531,9\n169,1,1,14,24,16,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,588,1,33,106,1,1,4,6.376727104187012,16\n170,1,1,14,26,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,375,1,28,113,1,1,6,5.926926136016846,36\n173,1,1,16,29,14,11,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,817,0,43,102,6,1,7,6.705638885498047,49\n175,1,1,14,30,15,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,865,0,32,91,1,1,10,6.762729644775391,100\n176,1,1,15,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,350,0,30,104,1,1,7,5.857933044433594,49\n177,1,1,13,24,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,202,0,22,,1,1,5,5.308267593383789,25\n178,1,1,13,32,16,16,367470,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1,1,505,0,43,97,1,1,13,6.224558353424072,169\n179,1,1,17,30,12,13,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,816,0,41,125,1,1,7,6.704414367675781,49\n181,1,1,18,26,14,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,41,123,6,1,2,6.437751770019531,4\n182,1,1,18,32,16,16,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,769,0,35,128,6,1,8,6.6450910568237305,64\n183,1,1,17,27,16,17,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,1,38,133,6,1,4,6.214608192443848,16\n188,1,1,17,27,12,8,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,619,1,32,114,1,1,4,6.428105354309082,16\n192,1,1,12,30,,8,480445,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,650,0,40,103,1,1,12,6.476972579956055,144\n194,0,1,18,28,10,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,769,0,36,130,1,1,4,6.6450910568237305,16\n195,0,1,12,26,10,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,512,0,33,97,1,1,8,6.2383246421813965,64\n196,0,1,18,31,12,13,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,46,132,1,1,7,6.437751770019531,49\n197,0,1,14,31,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1111,0,41,98,1,1,11,7.0130157470703125,121\n198,0,1,13,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,721,0,41,108,1,1,9,6.580639362335205,81\n199,0,1,14,32,13,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1154,0,44,107,1,1,12,7.050989627838135,144\n201,0,1,18,34,18,18,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,827,0,40,129,6,1,10,6.717804908752441,100\n204,0,1,16,34,14,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,923,0,56,,1,1,12,6.827629089355469,144\n205,0,1,17,28,14,17,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1076,0,42,132,1,1,5,6.981005668640137,25\n209,0,1,12,33,,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,37,101,1,1,15,6.437751770019531,225\n210,0,1,13,27,,8,380166,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,460,0,24,92,1,1,8,6.131226539611816,64\n213,0,1,14,24,8,12,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,900,0,39,108,6,1,4,6.802394866943359,16\n214,0,1,18,29,8,9,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,682,0,,132,1,1,5,6.52502965927124,25\n217,0,1,12,24,10,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,411,0,20,,1,1,6,6.0185933113098145,36\n218,0,1,13,27,12,15,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,35,106,1,0,8,6.437751770019531,64\n222,0,1,18,32,12,12,355491,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1005,0,46,123,1,1,8,6.912742614746094,64\n225,0,1,11,24,9,11,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,725,0,24,109,1,1,7,6.586171627044678,49\n226,0,1,15,27,8,11,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,750,0,35,103,1,1,6,6.620073318481445,36\n228,0,1,14,29,,8,533828,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,529,0,33,108,1,0,9,6.270988464355469,81\n229,0,1,17,29,8,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,972,0,47,122,1,1,6,6.8793559074401855,36\n232,0,1,12,26,12,12,380166,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,472,0,36,109,1,1,8,6.156979084014893,64\n233,0,1,12,24,12,12,369567,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,325,0,35,102,6,1,6,5.783825397491455,36\n234,0,1,12,34,,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,875,0,44,109,1,1,16,6.774223804473877,256\n237,0,1,13,34,9,10,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,40,100,1,1,15,6.437751770019531,225\n239,0,1,12,26,8,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,337,0,29,93,1,1,8,5.820083141326904,64\n240,0,1,16,27,5,5,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,37,115,1,1,5,6.175867080688477,25\n241,0,1,9,29,5,,551817,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,650,0,,,6,0,14,6.476972579956055,196\n242,0,1,16,25,5,4,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,383,0,39,,6,0,3,5.948034763336182,9\n244,0,1,18,30,15,14,533828,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,962,0,50,125,1,1,6,6.869014263153076,36\n245,0,1,16,29,13,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,615,0,31,106,6,1,7,6.421622276306152,49\n247,0,1,14,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,702,0,43,113,1,1,8,6.553933620452881,64\n249,0,1,14,31,,12,551817,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,635,0,41,122,6,1,11,6.453625202178955,121\n250,0,1,12,28,10,11,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,200,0,35,,4,0,10,5.2983174324035645,100\n252,0,1,12,27,10,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,817,0,43,116,1,1,9,6.705638885498047,81\n253,0,1,14,26,,12,380166,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,39,116,1,1,6,6.357842445373535,36\n254,0,1,17,26,12,12,760332,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,466,0,34,105,1,1,3,6.144185543060303,9\n255,0,1,16,29,,12,993271,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,924,0,39,,1,1,7,6.828711986541748,49\n256,0,1,16,31,12,12,993271,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,793,1,38,112,1,0,9,6.675823211669922,81\n257,0,1,14,28,12,12,760332,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,635,0,32,113,1,1,8,6.453625202178955,64\n259,0,1,12,25,,,369567,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,570,0,22,,6,1,7,6.345636367797852,49\n260,0,1,16,29,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,705,0,37,94,1,1,7,6.558197975158691,49\n261,0,1,14,28,12,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,635,0,40,103,1,1,8,6.453625202178955,64\n263,0,1,12,30,,12,496635,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,694,0,36,102,1,0,12,6.542471885681152,144\n264,0,1,13,34,10,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,615,0,47,109,1,1,15,6.421622276306152,225\n265,0,1,16,26,15,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,462,0,34,130,6,1,4,6.135564804077148,16\n266,0,1,12,34,12,12,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,865,0,45,105,1,1,16,6.762729644775391,256\n267,0,1,18,33,12,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,737,0,46,134,1,1,9,6.602587699890137,81\n268,0,1,12,25,8,14,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1400,0,39,,1,1,7,7.244227409362793,49\n270,0,1,12,31,,7,496635,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,808,0,43,105,1,0,13,6.694561958312988,169\n272,0,1,16,26,11,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,654,0,36,104,1,0,4,6.483107566833496,16\n273,0,1,12,25,,12,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,300,0,35,112,1,1,7,5.703782558441162,49\n275,0,1,16,30,8,10,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,37,115,4,1,8,6.357842445373535,64\n279,0,1,16,24,10,12,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,265,0,44,,6,1,2,5.579730033874512,4\n280,0,1,18,31,8,8,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,594,0,33,117,1,1,7,6.3868794441223145,49\n282,0,1,17,26,12,8,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,325,0,29,114,1,1,3,5.783825397491455,9\n283,0,1,16,24,12,8,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,385,1,37,118,6,1,2,5.953243255615234,4\n284,0,1,18,25,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1000,0,32,107,1,1,1,6.907755374908447,1\n285,0,1,18,28,8,11,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,465,0,49,120,6,1,4,6.142037391662598,16\n286,0,1,16,28,16,18,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,440,0,43,131,6,1,6,6.086774826049805,36\n287,0,1,16,27,16,17,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,625,0,40,124,6,1,5,6.437751770019531,25\n288,0,1,17,27,11,12,92929,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,285,0,36,121,1,1,4,5.652489185333252,16\n290,0,1,14,27,10,12,92929,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,650,0,35,110,1,1,7,6.476972579956055,49\n291,0,1,13,25,10,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,808,0,34,103,1,1,6,6.694561958312988,36\n292,0,1,12,24,10,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,26,,1,1,6,6.214608192443848,36\n293,0,1,16,26,14,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,831,0,45,115,1,1,4,6.722630023956299,16\n295,0,1,12,31,8,6,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,33,96,1,1,13,6.214608192443848,169\n297,0,1,17,32,12,12,355491,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,693,0,48,123,1,0,9,6.541029930114746,81\n298,0,1,12,27,12,10,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1100,0,37,101,1,1,9,7.003065586090088,81\n300,0,1,12,25,8,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,763,0,34,98,1,1,7,6.637258052825928,49\n302,1,1,12,27,8,9,422407,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,795,0,28,,1,1,9,6.678342342376709,81\n304,1,1,16,25,7,8,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,333,0,31,108,6,1,3,5.80814266204834,9\n306,1,1,18,30,16,12,551817,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,409,0,39,138,1,1,6,6.0137152671813965,36\n307,1,1,16,27,,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,865,0,37,121,1,1,5,6.762729644775391,25\n308,1,1,12,31,8,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,888,0,34,96,1,1,13,6.788971900939941,169\n309,1,1,12,34,,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,673,0,47,89,1,1,16,6.511745452880859,256\n312,1,1,12,33,7,,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,700,0,43,109,6,1,15,6.551080226898193,225\n313,1,1,18,33,16,16,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,250,0,44,133,6,1,9,5.521461009979248,81\n314,1,1,11,27,11,9,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,625,0,32,84,6,1,10,6.437751770019531,100\n315,1,1,13,31,8,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,417,0,37,,4,1,12,6.03308629989624,144\n316,1,1,13,28,8,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,576,0,51,98,1,1,9,6.356107711791992,81\n317,1,1,12,26,12,9,104596,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,613,0,27,85,6,1,8,6.418365001678467,64\n318,1,1,12,31,11,9,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,700,0,,105,1,1,13,6.551080226898193,169\n320,1,1,12,24,11,9,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,450,0,20,93,6,1,6,6.10924768447876,36\n322,1,1,16,28,,12,380166,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,500,0,38,115,1,1,6,6.214608192443848,36\n323,1,1,12,25,12,,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,514,0,36,,1,1,7,6.242223262786865,49\n324,1,1,16,25,12,12,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,250,0,45,146,6,1,3,5.521461009979248,9\n325,1,1,12,24,12,12,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,315,0,32,,6,1,6,5.752572536468506,36\n326,1,1,12,29,9,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,375,0,32,82,1,1,11,5.926926136016846,121\n330,1,1,15,34,,12,408301,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,457,0,45,120,1,1,13,6.124683380126953,169\n331,1,1,12,27,,,104596,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,275,0,26,,6,0,9,5.616771221160889,81\n332,1,1,12,28,,12,92929,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,951,0,38,122,1,1,10,6.857513904571533,100\n333,1,1,16,32,8,9,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1115,0,49,,1,1,10,7.0166096687316895,100\n335,1,1,16,25,12,14,369567,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,289,1,31,128,6,1,3,5.666426658630371,9\n336,1,1,16,25,,,369567,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,500,0,34,110,1,1,3,6.214608192443848,9\n339,1,1,18,32,16,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,726,0,46,114,1,1,8,6.587550163269043,64\n340,1,1,18,29,18,12,480445,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1265,0,48,117,1,1,5,7.14282751083374,25\n341,1,1,17,26,18,18,104596,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,613,0,40,109,6,1,3,6.418365001678467,9\n345,0,1,12,28,10,11,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,545,0,35,91,6,0,10,6.300786018371582,100\n346,0,1,13,28,12,8,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,278,1,32,107,1,1,9,5.627621173858643,81\n348,0,1,18,34,16,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1442,0,55,114,1,1,10,7.273786544799805,100\n349,0,1,16,27,16,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,995,0,40,126,1,1,5,6.902742862701416,25\n350,0,1,12,29,11,11,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,700,0,45,82,1,1,11,6.551080226898193,121\n352,0,1,16,28,9,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,577,0,45,119,1,1,6,6.357842445373535,36\n353,0,1,16,31,6,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,858,0,37,104,1,1,9,6.754603862762451,81\n355,0,1,12,28,12,,380166,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,686,0,35,97,1,1,10,6.530877590179443,100\n356,0,1,15,31,11,,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,832,0,49,115,1,1,10,6.723832607269287,100\n358,1,1,13,33,13,8,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,633,1,45,83,1,1,14,6.450470447540283,196\n359,1,1,12,32,12,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,689,0,45,97,1,1,14,6.53524112701416,196\n360,1,1,14,30,8,8,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,769,0,43,119,1,1,10,6.6450910568237305,100\n363,1,1,15,27,12,14,367772,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,385,0,27,105,6,1,6,5.953243255615234,36\n364,1,1,12,24,12,14,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,450,1,29,,6,1,6,6.10924768447876,36\n366,1,1,12,27,10,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,615,0,41,114,1,1,9,6.421622276306152,81\n367,1,1,12,34,,8,408301,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,682,0,47,93,1,1,16,6.52502965927124,256\n368,1,1,10,32,,,367470,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,670,0,28,73,5,1,16,6.507277488708496,256\n370,1,1,11,33,8,8,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,800,0,48,96,1,1,16,6.684611797332764,256\n372,1,1,14,34,8,8,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,505,0,48,,1,1,14,6.224558353424072,196\n374,1,1,18,30,12,16,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1026,0,48,117,5,1,6,6.933423042297363,36\n375,1,1,15,25,16,12,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,769,0,30,113,6,1,4,6.6450910568237305,16\n377,1,1,10,32,10,14,408301,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,290,0,38,106,1,1,16,5.6698808670043945,256\n378,1,1,13,28,,8,422407,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,529,0,37,104,1,1,9,6.270988464355469,81\n379,1,1,16,29,12,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1154,0,,,1,1,7,7.050989627838135,49\n380,1,1,10,29,12,,496635,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,549,0,39,80,1,1,13,6.308098316192627,169\n381,1,1,12,26,8,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,475,0,30,104,1,1,8,6.1633148193359375,64\n382,1,1,12,26,12,12,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,450,0,36,102,1,1,8,6.10924768447876,64\n383,1,1,17,27,10,,380166,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,875,0,43,114,6,1,4,6.774223804473877,16\n384,1,1,15,25,10,,369567,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,200,1,33,93,6,1,4,5.2983174324035645,16\n385,1,1,13,26,16,16,380166,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,300,0,36,122,6,1,7,5.703782558441162,49\n386,1,1,16,25,16,,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,462,0,28,117,6,1,3,6.135564804077148,9\n387,1,1,12,30,13,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,385,0,38,96,1,1,12,5.953243255615234,144\n388,1,1,15,32,16,16,355491,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1282,0,51,95,1,1,11,7.156176567077637,121\n390,1,1,16,25,12,12,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,588,0,29,117,6,1,3,6.376727104187012,9\n391,1,1,12,27,17,16,408636,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,600,0,24,105,6,1,9,6.396929740905762,81\n393,1,1,16,30,6,,121400,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,500,1,43,,1,0,8,6.214608192443848,64\n396,1,1,12,33,8,8,149854,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,440,0,18,94,1,0,15,6.086774826049805,225\n397,0,1,18,26,13,16,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,467,1,43,139,6,1,2,6.146329402923584,4\n398,0,1,17,29,14,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,929,0,41,91,1,1,6,6.834108829498291,36\n399,0,1,16,27,14,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,556,0,37,96,1,1,5,6.320768356323242,25\n400,0,1,13,24,14,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,438,0,32,114,6,0,5,6.082219123840332,25\n402,0,1,12,29,9,10,648053,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,600,0,31,54,1,0,11,6.396929740905762,121\n403,0,1,12,26,9,10,427892,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,575,0,37,69,1,0,8,6.3543701171875,64\n404,0,1,12,26,9,10,427892,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,389,0,17,67,6,0,8,5.963579177856445,64\n410,0,1,12,34,12,,408207,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,795,0,37,110,1,0,16,6.678342342376709,256\n411,0,1,18,27,18,16,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,471,0,41,125,1,1,3,6.154858112335205,9\n412,0,1,17,26,18,16,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,202,1,38,124,6,1,3,5.308267593383789,9\n413,0,1,17,24,18,16,410536,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,200,1,35,,6,1,1,5.2983174324035645,1\n415,0,1,17,24,15,17,410536,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,350,0,35,113,6,1,1,5.857933044433594,1\n416,0,1,14,24,10,12,410536,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,375,0,40,100,6,1,4,5.926926136016846,16\n419,0,1,16,25,12,9,410536,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,37,97,1,1,3,6.175867080688477,9\n420,0,1,18,31,8,8,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,962,0,44,125,6,1,7,6.869014263153076,49\n421,0,1,15,27,12,12,422310,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,423,0,42,106,6,1,6,6.047372341156006,36\n423,0,1,15,27,11,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,28,101,6,1,6,6.214608192443848,36\n424,0,1,9,30,,11,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,450,0,37,,1,1,15,6.10924768447876,225\n425,0,1,8,28,8,9,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,476,0,27,,1,0,14,6.165417671203613,196\n426,0,1,12,24,8,9,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,136,0,21,,6,0,6,4.912654876708984,36\n427,0,1,12,32,10,9,345723,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,575,0,39,91,1,1,14,6.3543701171875,196\n428,0,1,12,33,10,8,345723,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,577,0,28,86,1,1,15,6.357842445373535,225\n429,0,1,12,31,8,9,475820,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,310,0,32,110,1,1,13,5.736572265625,169\n430,0,1,9,30,12,12,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,700,0,38,,1,0,15,6.551080226898193,225\n433,0,1,14,32,,12,453563,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1322,0,47,92,1,1,12,7.186901092529297,144\n434,0,1,10,34,12,9,408207,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,551,0,41,85,1,0,18,6.311734676361084,324\n435,0,1,17,30,8,8,551690,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,881,0,36,120,1,1,7,6.781057834625244,49\n439,0,1,12,25,7,12,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,760,0,27,,1,1,7,6.6333184242248535,49\n441,0,1,12,32,8,11,453563,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,708,0,52,,1,1,14,6.56244421005249,196\n442,0,1,12,26,8,8,422310,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,425,0,24,,1,1,8,6.052089214324951,64\n443,0,1,12,26,,9,422310,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,427,0,35,107,6,1,8,6.056784152984619,64\n444,0,1,16,24,,9,410536,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,576,0,43,116,6,1,2,6.356107711791992,4\n446,0,1,9,32,,4,453563,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,400,0,34,,4,1,17,5.991464614868164,289\n449,0,1,12,31,8,5,551690,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,500,0,30,,1,0,13,6.214608192443848,169\n450,0,1,12,28,8,5,422310,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,531,0,29,,1,0,10,6.274762153625488,100\n453,0,1,16,28,12,12,422310,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,673,1,43,121,1,1,6,6.511745452880859,36\n454,0,1,16,27,12,12,422310,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,577,0,41,112,6,1,5,6.357842445373535,25\n458,0,1,16,24,16,12,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,325,0,39,,6,1,2,5.783825397491455,4\n461,0,1,11,29,7,11,428238,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,500,0,40,,1,1,12,6.214608192443848,144\n462,0,1,12,25,7,11,318670,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,770,0,43,100,1,1,7,6.646390438079834,49\n464,0,1,12,26,7,12,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,500,0,37,112,1,0,8,6.214608192443848,64\n467,0,1,16,28,14,12,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,391,0,41,108,1,1,6,5.96870756149292,36\n468,0,1,12,34,12,10,352069,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,810,0,42,90,1,1,16,6.6970343589782715,256\n469,1,1,9,34,12,,166467,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,543,0,39,86,1,1,19,6.297109127044678,361\n473,1,1,9,34,12,12,196733,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,593,0,37,,5,1,19,6.385194301605225,361\n474,1,1,17,25,12,12,100353,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,864,0,40,127,6,1,2,6.76157283782959,4\n475,1,1,10,28,,8,116191,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,700,0,32,86,1,1,12,6.551080226898193,144\n477,1,1,12,25,12,12,410536,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,510,0,27,113,1,1,7,6.234410762786865,49\n479,1,1,13,34,9,12,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,615,0,51,111,4,1,15,6.421622276306152,225\n481,1,1,14,29,9,8,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,761,0,41,113,1,0,9,6.634633541107178,81\n484,1,1,10,31,,,551817,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,493,0,32,81,1,1,15,6.200509071350098,225\n485,1,1,16,24,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,445,0,34,111,1,1,2,6.098074436187744,4\n486,1,1,12,25,8,9,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,425,0,20,,1,1,7,6.052089214324951,49\n487,1,1,16,24,12,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,750,1,24,112,6,1,2,6.620073318481445,4\n488,1,1,16,24,12,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,700,0,30,114,1,1,2,6.551080226898193,4\n489,1,1,12,24,9,9,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,438,0,33,,1,1,6,6.082219123840332,36\n490,1,1,12,29,12,12,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,608,0,30,111,1,1,11,6.41017484664917,121\n491,1,1,13,24,7,8,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,450,0,32,106,1,0,5,6.10924768447876,25\n492,1,1,3,26,4,0,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,313,0,6,,1,0,17,5.746203422546387,289\n494,1,1,7,33,6,5,177101,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,250,0,,,1,0,20,5.521461009979248,400\n496,1,1,14,33,12,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,26,79,1,0,13,6.214608192443848,169\n497,0,0,12,26,11,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,365,0,28,98,6,1,8,5.899897575378418,64\n499,0,0,12,26,10,12,364232,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,813,0,28,105,1,1,8,6.70073127746582,64\n500,0,0,12,25,10,12,354077,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,326,0,33,,4,1,7,5.7868971824646,49\n501,0,0,12,29,,10,428238,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,524,0,29,105,1,0,11,6.261491775512695,121\n502,0,0,13,28,9,12,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,815,0,44,118,1,1,9,6.703187942504883,81\n504,0,0,12,28,11,12,327808,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,750,0,35,100,1,1,10,6.620073318481445,100\n505,0,0,17,24,9,10,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,525,0,36,,1,1,1,6.263398170471191,1\n506,0,0,12,32,8,12,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1125,0,38,90,1,1,14,7.025538444519043,196\n508,0,0,12,28,8,9,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,34,95,6,1,10,6.437751770019531,100\n509,0,0,14,25,12,12,354077,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,715,0,24,112,1,1,5,6.572282314300537,25\n510,0,0,12,31,8,12,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,591,0,32,96,1,1,13,6.3818159103393555,169\n512,0,0,17,27,12,12,321899,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,404,1,37,127,6,1,4,6.001414775848389,16\n514,0,1,12,28,10,12,422310,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,675,0,39,120,1,1,10,6.514712810516357,100\n515,0,1,12,25,10,12,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,444,0,41,123,6,1,7,6.095824718475342,49\n516,0,1,12,24,10,12,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,488,0,34,,1,1,6,6.190315246582031,36\n517,0,1,9,34,10,6,408207,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,695,0,42,,1,1,19,6.543911933898926,361\n518,0,1,12,25,10,12,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,700,1,25,98,1,0,7,6.551080226898193,49\n519,0,1,12,24,7,10,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,325,0,24,,1,0,6,5.783825397491455,36\n520,0,1,9,25,12,11,410536,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,556,0,30,,1,1,10,6.320768356323242,100\n522,1,1,12,26,8,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,325,0,25,114,6,1,8,5.783825397491455,64\n523,1,1,13,26,15,16,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,668,0,32,103,1,1,7,6.504288196563721,49\n524,1,1,18,31,18,16,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,2404,0,40,121,1,1,7,7.784889221191406,49\n525,1,1,16,25,12,14,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,758,1,38,117,6,0,3,6.630683422088623,9\n526,1,1,16,34,12,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,986,0,44,90,1,1,12,6.893656253814697,144\n527,1,1,12,25,12,12,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,32,125,1,1,7,6.357842445373535,49\n529,1,1,17,29,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,286,0,39,104,1,1,6,5.655992031097412,36\n531,1,1,14,28,18,16,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,231,0,40,106,6,1,8,5.442417621612549,64\n532,1,1,12,25,7,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,513,0,33,,1,1,7,6.240275859832764,49\n533,1,1,15,28,9,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,615,0,36,122,4,1,7,6.421622276306152,49\n534,1,1,15,25,9,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,700,0,43,120,1,1,4,6.551080226898193,16\n537,1,1,18,33,12,7,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,714,0,41,112,1,1,9,6.570882797241211,81\n539,1,1,9,30,8,8,121400,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,701,0,31,,1,0,15,6.5525078773498535,225\n540,1,1,12,24,7,9,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,462,0,29,,1,1,6,6.135564804077148,36\n542,1,1,18,28,8,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,868,0,34,109,6,1,4,6.766191482543945,16\n544,1,1,16,29,9,10,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,917,0,46,128,6,1,7,6.821107387542725,49\n545,1,1,12,27,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1065,0,35,97,1,1,9,6.970730304718018,81\n546,0,1,12,29,12,12,496635,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,400,0,35,96,4,1,11,5.991464614868164,121\n547,0,1,12,27,12,12,367772,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,640,0,41,103,1,1,9,6.46146821975708,81\n548,0,1,13,24,8,8,357519,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,285,0,16,,6,0,5,5.652489185333252,25\n551,0,1,17,27,12,12,367772,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,641,1,38,127,6,1,4,6.463029384613037,16\n561,1,1,13,32,,4,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,389,0,21,,1,0,13,5.963579177856445,169\n562,1,1,12,25,12,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1010,0,29,,1,1,7,6.917705535888672,49\n564,1,1,12,24,8,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,817,0,44,97,1,1,6,6.705638885498047,36\n565,1,1,17,27,10,9,92929,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,975,0,43,120,1,1,4,6.882437705993652,16\n567,1,1,12,29,6,7,158413,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,750,0,21,78,4,1,11,6.620073318481445,121\n570,1,1,15,24,7,8,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,463,0,46,118,1,1,3,6.1377272605896,9\n571,1,1,12,28,12,,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1387,0,,,1,1,10,7.234898567199707,100\n572,1,1,12,25,12,,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,41,,6,1,7,6.357842445373535,49\n575,1,1,12,27,11,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,401,0,27,89,6,1,9,5.993961334228516,81\n576,1,1,10,26,11,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,320,0,24,,1,1,10,5.7683210372924805,100\n581,1,1,12,27,14,12,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,514,0,36,,1,1,9,6.242223262786865,81\n582,1,1,11,25,14,12,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,208,0,,,6,1,8,5.337538242340088,64\n583,1,1,17,27,8,6,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1192,1,50,122,1,1,4,7.083387851715088,16\n584,1,1,14,26,7,6,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,33,98,6,0,6,6.437751770019531,36\n585,1,1,17,34,7,7,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,44,,1,0,11,6.175867080688477,121\n588,1,1,13,27,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,714,1,18,101,1,1,8,6.570882797241211,64\n590,1,1,11,27,1,4,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,30,,1,1,10,6.437751770019531,100\n591,1,1,12,30,,7,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,553,0,39,112,1,1,12,6.3153581619262695,144\n592,1,1,12,34,5,2,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,579,0,32,88,1,1,16,6.361302375793457,256\n593,1,1,18,28,12,16,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,841,0,52,,6,0,4,6.734591484069824,16\n594,1,1,18,33,12,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1923,0,48,136,1,1,9,7.561641693115234,81\n598,1,1,16,26,13,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,806,0,50,124,1,1,4,6.692083835601807,16\n601,1,1,12,29,,6,158413,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,344,0,31,96,1,0,11,5.840641498565674,121\n605,1,1,12,32,11,14,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,962,0,39,97,1,1,14,6.869014263153076,196\n612,1,1,12,32,10,10,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,600,0,40,,1,1,14,6.396929740905762,196\n615,1,1,18,34,12,10,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,837,0,49,107,1,1,10,6.729824066162109,100\n616,1,1,16,24,,,410630,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,41,,6,1,2,6.437751770019531,4\n617,1,1,16,28,,,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,563,0,41,111,1,1,6,6.333279609680176,36\n618,1,1,16,28,10,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1410,0,43,102,1,1,6,7.251345157623291,36\n619,1,1,12,25,,12,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,480,0,30,115,1,1,7,6.173786163330078,49\n621,1,1,12,24,7,8,90339,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,600,1,32,94,6,1,6,6.396929740905762,36\n623,1,1,9,28,,0,92929,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,300,0,30,,1,0,13,5.703782558441162,169\n624,1,1,9,25,,0,90339,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,505,0,20,,1,0,10,6.224558353424072,100\n626,1,1,14,25,7,12,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,417,0,31,92,6,1,5,6.03308629989624,25\n627,1,1,12,24,7,12,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,300,0,27,,1,1,6,5.703782558441162,36\n628,1,1,18,27,14,14,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,865,0,37,,6,1,3,6.762729644775391,9\n629,1,1,16,25,16,13,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,300,0,33,116,6,1,3,5.703782558441162,9\n635,1,1,12,32,9,6,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,721,0,41,101,1,1,14,6.580639362335205,196\n640,1,1,12,34,8,,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,856,0,32,99,1,1,16,6.752270221710205,256\n641,1,1,10,30,10,7,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,738,0,42,106,1,1,14,6.603943824768066,196\n644,1,1,17,31,15,12,648053,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1058,0,40,,1,1,8,6.964135646820068,64\n647,1,1,12,32,6,8,681157,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,529,0,25,,6,0,14,6.270988464355469,196\n648,1,1,11,34,6,,367470,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,572,0,30,122,1,1,17,6.349139213562012,289\n649,1,1,12,32,,9,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,805,0,32,88,1,1,14,6.690842151641846,196\n651,1,1,10,30,6,8,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,400,0,28,59,6,1,14,5.991464614868164,196\n652,1,1,18,29,12,16,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,962,0,48,126,1,1,5,6.869014263153076,25\n653,1,1,18,27,13,16,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,817,0,40,126,6,1,3,6.705638885498047,9\n654,1,1,13,28,14,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,740,0,47,,1,1,9,6.606650352478027,81\n655,1,1,18,30,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,721,0,54,105,1,1,6,6.580639362335205,36\n658,1,1,18,24,16,16,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,913,0,29,123,6,1,0,6.816735744476318,0\n662,1,1,17,27,8,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,379,0,30,119,6,1,4,5.937536239624023,16\n663,1,1,14,26,8,12,380166,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,350,0,35,108,6,1,6,5.857933044433594,36\n667,1,1,11,33,8,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,694,0,36,93,6,1,16,6.542471885681152,256\n669,1,1,12,32,,12,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1014,0,38,82,4,1,14,6.921658039093018,196\n671,1,1,18,34,16,16,613041,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1136,0,49,123,1,1,10,7.035268783569336,100\n673,1,1,18,30,16,16,648053,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1709,0,45,134,1,1,6,7.443663597106934,36\n675,1,1,12,26,12,8,109826,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,529,0,29,84,1,1,8,6.270988464355469,64\n676,1,1,17,32,12,16,149854,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,673,0,38,101,6,1,9,6.511745452880859,81\n677,1,1,17,28,16,13,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1010,1,45,125,4,1,5,6.917705535888672,25\n679,1,1,18,28,17,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,846,0,43,117,1,1,4,6.7405195236206055,16\n680,1,1,11,27,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,710,0,36,98,1,1,10,6.56526517868042,100\n681,1,1,16,26,12,13,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,820,0,41,118,1,1,4,6.709304332733154,16\n682,1,1,12,24,12,13,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,447,0,,,6,1,6,6.102558612823486,36\n685,1,1,15,25,9,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,26,129,1,1,4,6.214608192443848,16\n686,1,1,16,31,12,12,551817,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1049,0,44,96,1,1,9,6.955592632293701,81\n687,1,1,18,29,16,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1202,0,40,124,1,1,5,7.091742038726807,25\n689,1,1,12,33,8,,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,690,0,27,,1,1,15,6.536691665649414,225\n692,1,1,16,28,8,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,648,0,42,122,1,1,6,6.473890781402588,36\n695,1,1,13,30,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,875,0,37,85,1,1,11,6.774223804473877,121\n703,1,1,17,25,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,548,1,39,112,1,1,2,6.306275367736816,4\n704,1,1,7,28,8,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,600,0,30,,1,0,15,6.396929740905762,225\n705,1,1,15,34,12,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,2244,0,45,111,1,1,13,7.716015338897705,169\n706,1,1,12,31,12,8,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1442,0,42,90,1,1,13,7.273786544799805,169\n708,1,1,12,34,,,149854,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,320,0,38,,1,1,16,5.7683210372924805,256\n709,1,1,18,33,10,16,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1262,0,43,101,1,1,9,7.140452861785889,81\n710,1,1,12,24,11,9,369567,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,600,0,18,100,1,1,6,6.396929740905762,36\n711,1,1,11,26,,10,475436,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,300,0,25,95,6,0,9,5.703782558441162,81\n714,1,1,16,24,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,538,0,44,120,6,1,2,6.287858486175537,4\n715,1,1,12,33,11,,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,744,0,44,,1,1,15,6.612040996551514,225\n717,1,1,12,33,,12,367470,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,846,1,36,101,1,1,15,6.7405195236206055,225\n719,1,1,16,29,12,12,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,813,0,44,,1,1,7,6.70073127746582,49\n721,1,1,12,28,,8,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1000,0,34,90,1,0,10,6.907755374908447,100\n727,1,1,16,26,12,15,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,561,0,34,122,1,1,4,6.329720973968506,16\n729,1,1,18,26,18,18,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,285,0,41,140,6,1,2,5.652489185333252,4\n732,1,1,16,27,16,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,437,0,37,106,1,1,5,6.079933166503906,25\n733,1,1,13,25,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,325,0,27,93,6,0,6,5.783825397491455,36\n734,1,1,16,28,10,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,580,0,30,119,1,1,6,6.363028049468994,36\n735,1,1,16,26,12,12,104596,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,588,0,33,95,4,1,4,6.376727104187012,16\n742,1,1,18,29,14,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,801,0,44,115,1,1,5,6.685861110687256,25\n747,1,1,14,25,8,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,312,0,32,119,6,1,5,5.7430033683776855,25\n749,1,1,12,29,4,11,158413,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,250,0,19,67,6,0,11,5.521461009979248,121\n750,1,1,15,27,4,11,104596,0,0,1,0,1,0,0,0,0,0,0,0,0,1,1,0,1,500,0,34,97,5,0,6,6.214608192443848,36\n751,1,1,12,33,,12,149854,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,750,0,28,111,1,1,15,6.620073318481445,225\n752,1,1,13,31,11,11,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,343,1,41,101,1,1,12,5.837730407714844,144\n753,1,1,15,28,11,11,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,250,0,32,112,4,,7,5.521461009979248,49\n754,1,1,16,24,12,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,700,1,26,107,1,1,2,6.551080226898193,4\n756,1,1,12,25,8,8,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,400,0,22,93,6,0,7,5.991464614868164,49\n757,1,1,17,27,14,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,555,0,37,122,1,1,4,6.318968296051025,16\n758,1,1,15,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,699,0,38,106,1,1,7,6.5496506690979,49\n759,1,1,14,24,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1923,0,31,,1,1,4,7.561641693115234,16\n762,1,1,18,32,,10,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1216,0,49,127,6,1,8,7.1033220291137695,64\n763,1,1,16,29,12,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,615,0,35,113,1,1,7,6.421622276306152,49\n764,1,1,14,25,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,745,0,36,115,6,1,5,6.613384246826172,25\n765,1,1,16,24,18,14,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,458,0,37,,6,1,2,6.126869201660156,4\n767,1,1,18,25,16,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,647,0,45,118,6,1,1,6.472346305847168,1\n768,1,1,12,25,8,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,745,0,37,106,1,1,7,6.613384246826172,49\n770,1,1,16,25,17,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,815,0,40,118,1,1,3,6.703187942504883,9\n772,1,1,16,31,13,10,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,865,0,46,126,1,1,9,6.762729644775391,81\n773,1,1,12,28,7,8,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,542,0,40,95,1,1,10,6.295266151428223,100\n774,1,1,13,27,18,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,365,0,35,107,1,1,8,5.899897575378418,64\n775,1,1,10,24,18,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,417,0,32,100,1,1,8,6.03308629989624,64\n776,1,1,16,27,,12,735544,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,657,0,40,102,6,1,5,6.48768424987793,25\n777,1,1,15,26,,12,735544,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,529,0,43,113,6,1,5,6.270988464355469,25\n778,1,1,17,29,8,12,960890,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,851,0,46,96,1,1,6,6.74641227722168,36\n779,1,1,12,25,12,9,715038,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,663,0,32,106,1,1,7,6.496775150299072,49\n781,1,1,16,24,12,12,715038,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,529,1,33,,1,1,2,6.270988464355469,4\n784,1,1,18,28,9,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,889,0,47,111,1,0,4,6.790097236633301,16\n785,1,1,17,28,,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,865,1,43,113,1,1,5,6.762729644775391,25\n786,1,1,18,26,18,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,231,0,46,138,1,1,2,5.442417621612549,4\n791,1,1,12,32,10,9,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,802,0,,110,1,1,14,6.687108516693115,196\n792,1,1,13,27,12,12,380166,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,533,1,50,105,1,1,8,6.278521537780762,64\n798,1,1,15,25,12,14,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,775,0,29,85,1,1,4,6.652863025665283,16\n799,1,1,14,24,12,14,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,476,1,26,,6,1,4,6.165417671203613,16\n800,1,1,16,33,16,,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,865,0,46,113,1,1,11,6.762729644775391,121\n801,1,1,16,28,10,12,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1014,0,51,117,1,1,6,6.921658039093018,36\n802,1,1,18,32,16,16,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,641,0,56,126,1,1,8,6.463029384613037,64\n803,1,1,16,24,10,10,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,333,0,34,125,1,1,2,5.80814266204834,4\n804,1,1,11,34,8,9,149854,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,556,0,18,,1,,17,6.320768356323242,289\n805,1,1,18,26,8,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,528,0,37,125,5,1,2,6.269096374511719,4\n807,1,1,12,26,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,635,1,32,,1,1,8,6.453625202178955,64\n809,1,1,11,27,3,,123613,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,500,0,37,,1,0,10,6.214608192443848,100\n810,1,1,16,34,,12,149854,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1154,1,49,89,1,1,12,7.050989627838135,144\n813,1,1,18,26,,,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,855,0,40,,1,1,2,6.751101493835449,4\n814,1,1,12,28,16,12,422407,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,479,0,38,,1,1,10,6.171700477600098,100\n815,1,1,18,25,12,11,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,817,0,31,125,1,1,1,6.705638885498047,1\n816,1,1,18,29,18,12,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,692,0,47,129,1,1,5,6.539586067199707,25\n817,1,1,16,33,12,8,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,989,0,47,118,1,1,11,6.896694183349609,121\n818,1,1,16,31,,12,551817,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,447,1,34,114,1,1,9,6.102558612823486,81\n819,1,1,18,34,16,12,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1002,0,40,121,1,1,10,6.909753322601318,100\n820,1,1,18,34,12,12,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1241,0,51,115,5,1,10,7.123672962188721,100\n821,1,1,14,32,,12,408301,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,921,0,44,120,1,1,12,6.825459957122803,144\n822,1,1,12,28,7,8,92929,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,571,0,37,85,6,,10,6.347389221191406,100\n824,1,1,12,31,6,11,121400,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,525,0,43,109,1,1,13,6.263398170471191,169\n827,1,1,12,28,8,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1154,0,42,117,1,1,10,7.050989627838135,100\n832,1,1,12,24,5,10,102031,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,480,0,31,,1,0,6,6.173786163330078,36\n836,1,1,11,24,,10,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,839,0,29,,1,1,7,6.732210636138916,49\n838,1,1,14,33,10,10,408301,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1402,0,42,,1,1,13,7.245655059814453,169\n840,1,1,13,27,,,427892,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,400,0,21,,6,1,8,5.991464614868164,64\n841,1,1,12,33,12,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,710,0,43,,6,1,15,6.56526517868042,225\n845,1,1,14,24,10,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,635,0,29,104,1,1,4,6.453625202178955,16\n846,1,1,13,26,11,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,388,0,28,109,6,1,7,5.961005210876465,49\n847,1,1,12,26,8,10,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,688,0,28,105,1,1,8,6.533788681030273,64\n850,1,1,12,34,,,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,630,0,36,85,1,1,16,6.4457197189331055,256\n851,0,1,15,34,12,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1044,0,38,115,6,1,13,6.950814723968506,169\n857,0,1,12,24,,12,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,41,,1,1,6,6.357842445373535,36\n862,0,1,12,25,,12,369567,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,38,89,6,1,7,6.214608192443848,49\n863,1,1,12,34,,12,367470,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,781,0,50,85,1,0,16,6.660574913024902,256\n864,1,1,13,26,12,11,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,577,0,34,102,1,1,7,6.357842445373535,49\n865,1,1,13,25,12,11,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,525,1,39,109,5,1,6,6.263398170471191,36\n867,1,1,17,28,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,385,1,39,107,1,1,5,5.953243255615234,25\n870,0,1,12,29,8,,496635,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,35,,1,,11,6.437751770019531,121\n871,0,1,16,28,11,11,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,1,32,103,1,1,6,6.437751770019531,36\n872,0,1,13,26,10,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,475,1,34,83,1,1,7,6.1633148193359375,49\n875,0,1,14,25,12,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,659,1,32,112,1,1,5,6.490723609924316,25\n876,0,1,16,24,12,12,357519,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,425,0,30,,6,1,2,6.052089214324951,4\n878,0,1,14,25,10,11,410630,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,524,0,32,106,1,1,5,6.261491775512695,25\n879,0,0,12,26,10,10,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,30,101,1,0,8,6.437751770019531,64\n880,0,0,16,31,9,12,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1010,0,47,105,1,1,9,6.917705535888672,81\n881,0,0,12,26,9,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,601,0,40,116,1,1,8,6.398594856262207,64\n882,0,0,12,27,,11,422310,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,808,0,22,,1,0,9,6.694561958312988,81\n883,0,0,12,28,7,7,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,426,0,22,90,1,1,10,6.054439544677734,100\n885,0,0,12,30,5,11,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1060,0,28,91,1,1,12,6.966024398803711,144\n886,0,0,12,26,5,11,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,414,0,41,128,1,1,8,6.0258660316467285,64\n887,0,0,12,30,,7,551690,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,492,0,34,110,1,1,12,6.198478698730469,144\n888,0,0,12,27,,7,422310,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,325,0,28,93,1,1,9,5.783825397491455,81\n889,0,0,12,28,12,7,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,275,0,33,75,4,1,10,5.616771221160889,100\n891,0,0,12,25,8,12,410536,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,291,0,17,94,6,1,7,5.673323154449463,49\n892,0,0,18,31,16,,551690,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,731,0,39,,1,1,7,6.5944132804870605,49\n893,0,0,14,26,12,12,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,488,0,38,112,1,1,6,6.190315246582031,36\n894,0,0,14,24,12,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,337,0,32,121,6,1,4,5.820083141326904,16\n895,0,0,12,27,12,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,725,0,33,100,1,1,9,6.586171627044678,81\n897,0,0,13,25,12,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,440,0,27,109,1,1,6,6.086774826049805,36\n899,0,0,16,27,8,8,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,641,0,38,122,1,0,5,6.463029384613037,25\n900,0,0,12,28,8,11,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,375,0,26,102,6,0,10,5.926926136016846,100\n901,0,0,12,25,,,456151,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,481,0,34,131,1,1,7,6.175867080688477,49\n902,0,0,14,29,10,8,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,925,0,38,122,1,0,9,6.829793930053711,81\n904,0,0,12,26,12,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,514,0,,,4,1,8,6.242223262786865,64\n905,0,0,12,33,10,10,453563,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1065,0,38,105,1,0,15,6.970730304718018,225\n908,0,0,12,28,,10,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,638,0,36,103,1,1,10,6.458338260650635,100\n909,0,0,12,32,9,9,316862,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,739,0,37,113,1,1,14,6.605298042297363,196\n910,0,0,12,26,12,8,327808,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,493,0,34,104,1,0,8,6.200509071350098,64\n911,0,0,10,24,12,9,318670,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,1,1,650,0,26,,1,0,8,6.476972579956055,64\n912,0,0,7,31,5,8,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,308,0,33,,4,0,18,5.730099678039551,324\n913,0,0,16,30,11,9,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,629,0,43,124,1,1,8,6.444131374359131,64\n914,0,0,13,28,8,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,409,0,31,110,1,1,9,6.0137152671813965,81\n915,0,0,18,33,,,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,600,0,39,112,6,1,9,6.396929740905762,81\n916,0,0,12,28,11,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,745,0,34,104,1,1,10,6.613384246826172,100\n917,0,0,17,31,,,551690,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,625,1,37,96,1,1,8,6.437751770019531,64\n919,0,0,12,29,12,12,475820,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,549,0,37,95,1,1,11,6.308098316192627,121\n920,0,0,15,24,12,12,354077,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,326,1,32,95,6,1,3,5.7868971824646,9\n921,0,0,9,26,7,,327808,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,258,0,20,,1,1,11,5.552959442138672,121\n924,0,1,12,26,12,12,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,875,0,40,103,1,1,8,6.774223804473877,64\n925,0,1,12,25,12,12,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,639,0,48,116,1,1,7,6.459904670715332,49\n927,0,1,11,33,7,7,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,667,0,37,,1,1,16,6.5027899742126465,256\n928,0,1,14,29,12,12,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,504,0,45,95,1,1,9,6.222576141357422,81\n929,0,1,17,25,12,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,313,1,38,101,6,1,2,5.746203422546387,4\n931,0,1,18,27,,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1010,0,44,,1,1,3,6.917705535888672,9\n932,0,1,10,33,8,9,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1000,0,34,,1,1,17,6.907755374908447,289\n933,0,1,16,28,,18,422310,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,721,0,39,120,1,1,6,6.580639362335205,36\n935,0,1,12,27,8,8,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,785,0,39,102,1,0,9,6.665683746337891,81\n936,0,1,12,34,8,12,77455,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,546,0,39,105,1,1,16,6.302618980407715,256\n938,0,1,12,25,8,8,77897,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,828,0,28,103,4,1,7,6.719013214111328,49\n939,0,1,12,25,10,10,77897,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,159,0,30,94,1,1,7,5.068904399871826,49\n940,0,1,10,27,10,6,94700,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,700,0,22,,1,0,11,6.551080226898193,121\n941,0,1,13,28,10,12,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,721,0,36,102,1,0,9,6.580639362335205,81\n942,0,1,12,24,10,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,304,0,14,,1,1,6,5.71702766418457,36\n944,0,1,16,25,12,16,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,553,0,31,112,6,1,3,6.3153581619262695,9\n945,0,1,14,26,7,6,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,542,0,35,101,1,1,6,6.295266151428223,36\n947,0,1,16,24,12,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,509,0,30,121,1,1,2,6.232448101043701,4\n948,0,1,16,24,12,12,312925,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,385,0,40,105,1,1,2,5.953243255615234,4\n949,1,0,12,32,10,8,367470,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1442,0,42,96,1,1,14,7.273786544799805,196\n951,1,0,16,32,14,14,408301,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,879,0,45,128,1,1,10,6.77878475189209,100\n953,1,0,13,24,16,14,369567,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1000,0,37,,6,1,5,6.907755374908447,25\n954,1,0,12,28,12,9,380166,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,863,0,26,110,1,0,10,6.7604146003723145,100\n956,1,0,12,27,11,12,367772,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,740,0,32,92,1,1,9,6.606650352478027,81\n957,1,0,12,34,,,355491,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,889,0,39,87,1,1,16,6.790097236633301,256\n958,1,0,15,29,9,10,480445,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,458,1,34,126,1,1,8,6.126869201660156,64\n961,0,1,12,34,,9,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,450,0,34,98,1,1,16,6.10924768447876,256\n963,0,1,12,34,,,408301,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,700,0,39,103,1,1,16,6.551080226898193,256\n965,0,1,14,33,8,12,367470,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,744,0,49,122,1,1,13,6.612040996551514,169\n967,0,1,16,32,12,11,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,889,0,43,109,1,1,10,6.790097236633301,100\n969,0,1,18,32,12,12,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,692,0,37,125,1,1,8,6.539586067199707,64\n971,0,1,18,33,12,12,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,604,0,38,119,1,0,9,6.403573989868164,81\n972,0,1,18,30,,14,551690,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,625,0,42,97,1,1,6,6.437751770019531,36\n973,0,1,14,33,8,12,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,746,0,36,103,1,1,13,6.614725589752197,169\n974,0,1,18,33,8,16,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,726,0,42,95,1,1,9,6.587550163269043,81\n975,0,1,12,30,8,10,612989,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,560,0,40,99,1,1,12,6.32793664932251,144\n976,0,1,12,26,12,10,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,424,0,31,106,1,1,8,6.049733638763428,64\n977,0,1,12,26,,12,422310,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,400,0,33,117,1,1,8,5.991464614868164,64\n978,0,1,14,26,12,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,250,0,40,112,5,1,6,5.521461009979248,36\n979,0,1,13,26,8,12,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,646,0,30,136,1,1,7,6.470799446105957,49\n980,0,1,12,24,12,12,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,598,0,35,,1,1,6,6.393590927124023,36\n981,0,1,12,27,8,8,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1000,0,33,110,5,1,9,6.907755374908447,81\n983,1,1,12,28,12,13,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,528,0,26,111,1,1,10,6.269096374511719,100\n984,1,1,12,26,12,13,422310,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,481,0,32,115,4,1,8,6.175867080688477,64\n985,1,1,12,33,6,12,408207,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,850,0,47,90,1,1,15,6.745236396789551,225\n986,1,1,14,30,,,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,506,0,45,98,1,1,10,6.226536750793457,100\n987,1,1,12,29,8,8,428238,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,512,0,41,106,1,0,11,6.2383246421813965,121\n988,1,1,11,26,,9,364232,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,220,0,20,,6,0,9,5.393627643585205,81\n989,1,1,16,24,,,118599,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,154,1,38,,6,1,2,5.036952495574951,4\n990,1,1,12,31,11,12,134858,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,240,0,44,95,1,1,13,5.4806389808654785,169\n991,1,1,12,28,11,12,103231,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,557,0,43,115,1,1,10,6.322565078735352,100\n996,1,1,15,27,12,12,327808,0,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,500,0,40,106,6,0,6,6.214608192443848,36\n997,1,1,16,26,,,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,372,0,34,102,1,1,4,5.918893814086914,16\n998,1,1,10,25,8,8,312925,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,350,0,26,91,5,0,9,5.857933044433594,81\n999,1,1,12,26,8,8,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,584,0,26,114,1,0,8,6.369901180267334,64\n1004,1,1,13,26,10,12,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,515,0,34,92,5,1,7,6.244166851043701,49\n1006,0,0,12,29,,,428238,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,390,0,43,111,5,1,11,5.966146945953369,121\n1008,0,0,16,25,12,12,318670,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,280,0,34,111,4,1,3,5.63478946685791,9\n1009,0,0,12,33,,12,316862,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,690,0,38,,1,1,15,6.536691665649414,225\n1010,0,0,12,26,,12,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,300,0,30,96,1,1,8,5.703782558441162,64\n1011,0,0,17,27,12,13,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,635,0,36,119,1,1,4,6.453625202178955,16\n1012,0,0,13,26,12,13,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,342,0,32,85,1,1,7,5.834810733795166,49\n1013,0,0,16,26,12,12,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,34,98,1,1,4,6.224558353424072,16\n1014,0,0,13,24,12,12,318670,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,356,0,30,114,1,1,5,5.8749308586120605,25\n1015,0,0,12,33,,,352069,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,39,79,1,1,15,5.568344593048096,225\n1017,0,0,10,32,,,316862,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,400,0,30,,1,1,16,5.991464614868164,256\n1020,0,0,13,29,16,16,475820,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,740,0,42,108,1,1,10,6.606650352478027,100\n1021,0,0,12,34,8,12,316862,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,342,0,,,1,1,16,5.834810733795166,256\n1023,0,0,15,29,8,12,428238,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,276,0,39,121,6,1,8,5.620400905609131,64\n1024,0,0,9,24,10,12,318670,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,427,1,36,,6,1,9,6.056784152984619,81\n1026,0,0,12,25,12,,312925,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,239,0,40,117,1,0,7,5.476463317871094,49\n1027,0,0,13,24,12,,312925,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,385,0,21,,1,0,5,5.953243255615234,25\n1028,0,0,12,29,4,8,475820,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,32,107,1,0,11,5.857933044433594,121\n1030,0,0,12,29,,,551690,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,599,1,40,103,1,1,11,6.395261764526367,121\n1031,0,0,15,31,10,12,612989,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,750,0,45,105,1,1,10,6.620073318481445,100\n1033,0,0,16,33,12,9,316862,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,692,0,41,105,1,1,11,6.539586067199707,121\n1034,0,0,12,34,12,14,316862,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,147,0,43,88,1,1,16,4.9904327392578125,256\n1036,1,1,12,26,12,10,364232,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,280,0,34,96,1,1,8,5.63478946685791,64\n1037,1,1,18,32,,7,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,769,0,46,105,1,1,8,6.6450910568237305,64\n1038,1,1,13,32,7,12,316862,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1010,0,41,,4,0,13,6.917705535888672,169\n1040,1,1,14,26,16,14,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,517,0,34,100,1,1,6,6.248043060302734,36\n1041,1,1,16,26,16,14,327808,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,400,0,43,116,6,1,4,5.991464614868164,16\n1046,1,1,12,25,12,10,318670,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,375,0,22,86,1,1,7,5.926926136016846,49\n1047,0,1,12,31,12,10,551690,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,596,0,27,88,1,1,13,6.390240669250488,169\n1049,0,1,7,31,,,475820,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,34,,1,0,18,5.857933044433594,324\n1050,0,1,11,33,,,316862,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,417,0,34,97,1,1,16,6.03308629989624,256\n1051,0,1,16,29,,12,428238,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,338,0,43,112,5,1,7,5.82304573059082,49\n1052,0,1,18,26,18,14,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,481,0,35,125,6,1,2,6.175867080688477,4\n1053,0,1,12,28,11,11,327808,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,500,0,12,,1,1,10,6.214608192443848,100\n1054,0,1,12,27,,,327808,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,305,0,37,,4,1,9,5.720311641693115,81\n1056,0,1,10,34,9,,316862,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,450,0,31,84,1,1,18,6.10924768447876,324\n1058,1,1,16,29,14,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,769,0,45,117,1,1,7,6.6450910568237305,49\n1059,1,1,16,26,14,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,721,0,42,110,6,1,4,6.580639362335205,16\n1060,1,1,13,29,,9,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1000,0,32,104,1,1,10,6.907755374908447,100\n1062,1,1,14,30,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,625,0,35,101,1,1,10,6.437751770019531,100\n1063,1,1,16,26,12,11,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,817,0,33,99,1,1,4,6.705638885498047,16\n1064,1,1,12,34,8,,358351,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,377,0,35,87,1,1,16,5.932245254516602,256\n1067,1,1,12,33,,,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,708,0,43,101,1,0,15,6.56244421005249,225\n1068,1,1,14,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,411,0,31,117,1,1,4,6.0185933113098145,16\n1070,1,1,13,32,,,358351,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1339,0,41,108,1,1,13,7.199678421020508,169\n1071,1,1,12,34,,1,358351,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,716,0,42,,1,0,16,6.573680400848389,256\n1075,1,1,10,32,,9,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,192,0,37,86,4,1,16,5.257495403289795,256\n1076,1,1,16,32,8,,141996,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,797,0,43,,6,0,10,6.680854797363281,100\n1077,1,1,16,34,10,10,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,924,0,33,69,1,1,12,6.828711986541748,144\n1078,1,1,15,26,18,16,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,240,1,30,105,6,1,5,5.4806389808654785,25\n1079,1,1,13,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,625,0,39,104,1,0,6,6.437751770019531,36\n1080,1,1,8,24,7,10,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1025,0,34,,1,0,10,6.932447910308838,100\n1081,1,1,12,28,9,11,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,503,0,38,109,1,1,10,6.220590114593506,100\n1089,1,1,16,28,8,8,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,462,0,39,85,1,1,6,6.135564804077148,36\n1090,1,1,16,25,9,11,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,476,0,36,114,1,1,3,6.165417671203613,9\n1091,1,1,15,26,8,13,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,500,0,33,99,4,1,5,6.214608192443848,25\n1094,1,1,12,34,,,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1000,0,42,,1,1,16,6.907755374908447,256\n1095,1,1,13,34,,,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,663,0,46,90,1,1,15,6.496775150299072,225\n1097,1,1,15,34,12,12,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,707,0,46,119,1,1,13,6.561030864715576,169\n1098,1,1,16,31,,,520447,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,928,0,42,120,1,1,9,6.83303165435791,81\n1099,1,1,12,24,,,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,300,0,36,,1,1,6,5.703782558441162,36\n1100,1,1,15,27,18,12,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,365,0,46,112,1,1,6,5.899897575378418,36\n1101,1,1,12,30,,,468402,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,645,0,,97,1,1,12,6.469250202178955,144\n1104,0,1,18,25,14,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,462,0,30,107,1,1,1,6.135564804077148,1\n1105,0,1,18,33,8,12,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1026,0,41,117,1,1,9,6.933423042297363,81\n1107,0,1,12,24,12,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,525,0,34,,1,1,6,6.263398170471191,36\n1110,0,1,18,29,16,16,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,375,0,41,125,6,1,5,5.926926136016846,25\n1111,0,1,18,34,18,16,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1538,0,47,112,1,1,10,7.33823823928833,100\n1112,0,1,18,33,18,14,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,923,0,46,106,5,1,9,6.827629089355469,81\n1113,0,1,13,26,8,12,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,568,0,40,104,4,1,7,6.342121601104736,49\n1114,0,1,14,25,8,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,600,0,23,89,6,1,5,6.396929740905762,25\n1115,0,1,15,27,17,12,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,721,0,38,116,1,1,6,6.580639362335205,36\n1116,0,1,17,24,18,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1116,1,46,,6,1,1,7.017506122589111,1\n1121,0,1,14,27,,8,370732,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,712,0,44,123,1,1,7,6.56807804107666,49\n1122,0,1,16,29,,8,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,808,0,40,118,1,1,7,6.694561958312988,49\n1124,0,1,11,27,8,12,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,925,0,31,106,1,1,10,6.829793930053711,100\n1126,0,1,9,25,,,360396,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,550,0,22,,4,1,10,6.309918403625488,100\n1127,0,1,12,26,,,358554,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,271,0,20,91,6,1,8,5.602118968963623,64\n1129,1,1,7,32,8,11,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,833,0,22,,1,1,19,6.725033760070801,361\n1130,1,1,12,30,7,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1200,0,29,103,1,1,12,7.090076923370361,144\n1131,1,1,14,33,6,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,581,0,40,114,1,0,13,6.364750862121582,169\n1132,1,1,17,34,12,8,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,686,0,41,105,1,1,11,6.530877590179443,121\n1133,1,1,18,32,12,8,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1000,0,34,84,1,1,8,6.907755374908447,64\n1134,1,1,13,24,9,8,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,537,0,31,,6,1,5,6.2859978675842285,25\n1135,1,1,12,28,,11,99110,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,690,1,32,89,1,0,10,6.536691665649414,100\n1139,1,1,12,28,12,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,36,81,6,1,10,6.214608192443848,100\n1141,0,1,13,33,3,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,36,118,1,1,14,6.620073318481445,196\n1142,0,1,17,29,8,16,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,913,1,38,91,1,1,6,6.816735744476318,36\n1144,0,1,15,24,8,16,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,19,,6,1,3,6.396929740905762,9\n1145,0,1,16,24,12,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,29,113,6,1,2,6.357842445373535,4\n1146,0,1,12,26,8,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,601,0,38,121,1,1,8,6.398594856262207,64\n1147,0,1,12,31,6,12,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,36,102,1,1,13,6.357842445373535,169\n1148,0,1,12,32,,6,346581,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,677,0,36,104,5,1,14,6.51767110824585,196\n1150,0,1,18,27,9,10,405452,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,473,0,31,106,1,1,3,6.159095287322998,9\n1152,0,1,14,24,8,12,720791,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,350,1,39,,1,1,4,5.857933044433594,16\n1153,0,1,15,32,9,12,716702,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,620,1,45,108,1,1,11,6.4297194480896,121\n1154,0,1,16,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,378,0,41,108,6,0,2,5.93489408493042,4\n1155,0,1,16,25,16,13,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,243,0,51,121,6,1,3,5.493061542510986,9\n1156,0,1,12,26,7,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,,87,4,0,8,6.620073318481445,64\n1158,0,1,18,30,12,14,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,441,0,35,107,1,1,6,6.08904504776001,36\n1159,0,1,14,29,12,14,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,688,0,43,112,6,1,9,6.533788681030273,81\n1160,0,1,18,25,12,14,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,501,0,29,116,1,1,1,6.216606140136719,1\n1161,0,1,12,29,12,12,520447,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,400,0,36,115,6,1,11,5.991464614868164,121\n1162,0,1,12,26,12,12,398393,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,981,0,39,107,1,1,8,6.888572692871094,64\n1163,1,1,14,30,12,12,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,649,0,36,117,1,1,10,6.475432872772217,100\n1168,1,1,12,32,,,358351,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,625,0,36,110,1,1,14,6.437751770019531,196\n1169,1,1,16,28,12,11,99110,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,707,1,35,97,1,1,6,6.561030864715576,36\n1172,1,1,12,29,11,12,538123,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1043,0,42,96,4,1,11,6.949856281280518,121\n1173,1,1,12,27,8,8,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,761,0,45,,1,1,9,6.634633541107178,81\n1177,1,1,13,25,14,12,360396,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,524,0,28,,1,1,6,6.261491775512695,36\n1179,1,1,13,27,6,6,99110,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,575,0,34,91,1,1,8,6.3543701171875,64\n1180,1,1,14,26,,6,99110,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,865,0,31,97,6,1,6,6.762729644775391,36\n1183,1,1,12,28,12,8,99110,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,713,0,38,90,1,1,10,6.569481372833252,100\n1184,1,1,16,27,7,8,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,673,0,,112,1,1,5,6.511745452880859,25\n1185,1,1,12,25,7,8,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,662,0,27,97,1,1,7,6.495265483856201,49\n1186,1,1,14,29,11,8,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,543,0,45,120,1,1,9,6.297109127044678,81\n1187,1,1,13,25,12,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,525,1,40,109,6,1,6,6.263398170471191,36\n1188,1,1,12,28,,8,370732,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,640,0,36,,1,1,10,6.46146821975708,100\n1189,1,1,12,26,,8,370732,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,297,0,26,,6,1,8,5.693732261657715,64\n1191,1,1,8,33,,,141996,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,947,0,37,,5,0,19,6.853299140930176,361\n1192,1,1,12,34,8,9,141996,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,500,0,40,99,1,1,16,6.214608192443848,256\n1202,1,1,13,25,5,7,96681,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,620,0,43,,4,1,6,6.4297194480896,36\n1203,1,1,12,25,,10,96681,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,277,0,31,,1,,7,5.624017715454102,49\n1205,0,1,10,26,5,8,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,240,0,29,99,1,1,10,5.4806389808654785,100\n1206,0,1,10,25,5,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,240,0,34,,6,1,9,5.4806389808654785,81\n1207,0,1,12,33,,,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,32,85,1,1,15,6.135564804077148,225\n1209,0,1,12,27,,11,99110,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,404,0,32,97,6,1,9,6.001414775848389,81\n1210,0,1,12,25,,11,96681,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,450,0,40,95,1,1,7,6.10924768447876,49\n1213,0,1,12,24,3,2,395512,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,250,0,28,,6,1,6,5.521461009979248,36\n1215,0,1,11,26,,9,450502,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,727,0,23,,4,1,9,6.588926315307617,81\n1216,0,1,12,24,,9,439458,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,667,0,30,,1,1,6,6.5027899742126465,36\n1224,0,1,12,28,,6,117131,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,962,0,31,80,4,1,10,6.869014263153076,100\n1228,0,1,14,27,,8,90623,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,44,126,6,1,7,6.620073318481445,49\n1230,0,1,14,25,8,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,667,0,20,,6,1,5,6.5027899742126465,25\n1231,0,1,17,34,8,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,692,0,49,109,1,1,11,6.539586067199707,121\n1233,0,1,12,25,6,12,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,465,0,21,,1,1,7,6.142037391662598,49\n1235,0,1,12,30,,,150105,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,641,0,38,,5,1,12,6.463029384613037,144\n1236,0,1,11,29,,11,150105,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,710,0,22,86,1,1,12,6.56526517868042,144\n1238,0,1,13,25,,10,96681,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,425,0,22,,6,1,6,6.052089214324951,36\n1243,0,1,12,27,12,12,370732,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,833,0,46,112,1,1,9,6.725033760070801,81\n1244,0,1,12,26,12,12,370732,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,308,1,41,98,1,1,8,5.730099678039551,64\n1245,0,1,16,29,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,625,0,48,119,4,1,7,6.437751770019531,49\n1246,0,1,16,32,13,16,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1442,0,26,,1,1,10,7.273786544799805,100\n1248,0,1,16,25,12,12,400440,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,673,0,38,102,1,1,3,6.511745452880859,9\n1250,0,1,17,28,14,14,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1346,0,46,,1,1,5,7.204892635345459,25\n1251,0,1,17,33,12,10,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,400,0,41,128,4,1,10,5.991464614868164,100\n1252,0,1,9,34,12,,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,518,0,38,82,1,1,19,6.249975204467773,361\n1253,0,1,14,26,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,456,0,30,,1,1,6,6.122492790222168,36\n1255,0,1,17,33,12,12,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,409,0,42,113,1,1,10,6.0137152671813965,100\n1256,0,1,18,34,5,9,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,559,0,45,105,6,1,10,6.3261494636535645,100\n1258,0,1,12,24,10,9,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,230,0,32,,1,1,6,5.438079357147217,36\n1260,1,1,17,27,18,18,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1026,1,46,124,6,1,4,6.933423042297363,16\n1262,1,1,12,27,13,13,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1082,0,48,,1,1,9,6.986566543579102,81\n1263,1,1,14,24,13,13,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1202,0,39,94,1,1,4,7.091742038726807,16\n1264,1,1,17,25,,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,329,0,40,117,1,1,2,5.79605770111084,4\n1266,1,1,18,27,14,14,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,481,0,39,116,6,1,3,6.175867080688477,9\n1267,1,1,18,24,14,,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,673,0,33,,6,,0,6.511745452880859,0\n1268,1,1,17,31,12,12,538123,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1683,0,41,,6,1,8,7.428333282470703,64\n1269,1,1,16,34,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1282,0,40,112,1,1,12,7.156176567077637,144\n1272,1,1,12,24,12,14,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,23,,6,1,6,6.357842445373535,36\n1273,1,1,18,27,9,9,411924,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,444,0,31,105,6,1,3,6.095824718475342,9\n1275,1,1,16,28,,9,99110,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,481,0,34,87,6,1,6,6.175867080688477,36\n1277,1,1,12,24,16,12,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,467,0,,108,6,1,6,6.146329402923584,36\n1279,1,1,6,31,3,3,614067,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,668,0,40,,1,0,19,6.504288196563721,361\n1283,1,1,15,27,12,12,411924,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,286,0,36,89,1,1,6,5.655992031097412,36\n1284,1,1,18,33,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,,119,1,1,9,6.357842445373535,81\n1285,1,1,14,29,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,721,0,34,97,1,1,9,6.580639362335205,81\n1286,1,1,12,25,6,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,28,89,1,1,7,6.135564804077148,49\n1287,1,1,15,25,12,10,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,28,,1,0,4,6.620073318481445,16\n1288,1,1,12,24,6,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,200,0,39,131,6,1,6,5.2983174324035645,36\n1293,1,1,12,27,12,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,650,0,26,,1,1,9,6.476972579956055,81\n1295,1,1,18,28,12,11,370732,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,481,0,30,,6,1,4,6.175867080688477,16\n1298,1,1,11,24,9,,360396,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,38,,1,0,7,6.396929740905762,49\n1305,1,1,16,28,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,769,0,35,85,1,1,6,6.6450910568237305,36\n1306,1,1,17,27,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,775,1,26,132,1,1,4,6.652863025665283,16\n1307,1,1,16,24,16,16,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,28,114,1,1,2,6.463029384613037,4\n1310,1,1,14,33,14,10,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1055,0,35,98,1,1,13,6.961296081542969,169\n1311,1,1,16,31,14,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,676,0,44,110,6,1,9,6.51619291305542,81\n1312,1,1,12,28,,,370732,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,691,0,41,124,6,1,10,6.538139820098877,100\n1313,1,1,17,30,14,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,1,41,118,1,1,7,6.869014263153076,49\n1314,1,1,13,28,14,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,400,0,32,90,5,1,9,5.991464614868164,81\n1315,1,1,16,27,14,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,673,0,38,108,1,1,5,6.511745452880859,25\n1323,1,1,18,34,10,11,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1442,0,42,112,1,1,10,7.273786544799805,100\n1334,1,1,18,32,16,10,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,529,0,38,100,1,1,8,6.270988464355469,64\n1336,1,1,14,27,9,11,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,700,0,21,84,1,1,7,6.551080226898193,49\n1337,1,1,8,34,,4,141996,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,1,675,0,36,,1,0,20,6.514712810516357,400\n1338,1,1,18,25,8,10,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,494,0,34,97,1,1,1,6.202535629272461,1\n1340,1,1,12,24,12,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,26,113,1,1,6,6.214608192443848,36\n1349,1,1,16,24,,,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,450,0,27,,6,0,2,6.10924768447876,4\n1350,1,1,13,25,,8,96681,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,601,0,27,,6,1,6,6.398594856262207,36\n1353,1,1,13,28,9,12,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,717,1,37,105,6,1,9,6.575075626373291,81\n1354,1,1,12,29,9,10,150105,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,575,0,28,88,5,1,11,6.3543701171875,121\n1355,1,1,12,25,9,10,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,350,0,33,74,1,1,7,5.857933044433594,49\n1356,1,1,12,24,9,10,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,350,0,31,,6,0,6,5.857933044433594,36\n1358,0,1,16,29,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,643,0,46,115,1,1,7,6.466144561767578,49\n1359,0,1,15,24,10,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,675,0,30,,1,1,3,6.514712810516357,9\n1360,0,1,15,28,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,679,0,34,91,1,1,7,6.520621299743652,49\n1361,0,1,12,27,12,9,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,534,0,34,103,4,1,9,6.280395984649658,81\n1362,0,1,16,31,12,10,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,524,0,46,102,1,1,9,6.261491775512695,81\n1363,0,1,16,28,10,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,667,0,38,98,6,1,6,6.5027899742126465,36\n1364,0,1,14,26,12,,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,370,0,35,,1,1,6,5.913503170013428,36\n1365,0,1,15,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,658,0,47,,6,1,5,6.4892048835754395,25\n1371,0,1,12,34,,,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,700,0,39,,,0,16,6.551080226898193,256\n1374,0,1,18,27,9,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,311,0,33,82,6,1,3,5.739792823791504,9\n1375,0,1,9,33,,9,358351,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,841,0,44,,1,1,18,6.734591484069824,324\n1377,0,1,14,31,10,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,660,0,47,112,1,1,11,6.492239952087402,121\n1379,0,1,16,31,8,9,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,692,0,41,108,1,1,9,6.539586067199707,81\n1382,0,1,15,28,,7,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,37,90,1,1,7,6.357842445373535,49\n1389,0,1,17,26,9,12,370732,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,705,0,32,,6,1,3,6.558197975158691,9\n1391,0,1,16,27,5,8,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,292,0,38,111,1,1,5,5.676753997802734,25\n1392,0,1,13,26,8,11,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,24,96,1,1,7,6.620073318481445,49\n1395,0,1,16,34,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1442,0,48,,1,0,12,7.273786544799805,144\n1396,0,1,16,33,16,16,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1202,0,48,127,1,1,11,7.091742038726807,121\n1397,0,1,15,33,,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1603,0,47,97,1,1,12,7.379631996154785,144\n1399,0,1,14,32,,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,769,0,50,120,4,1,12,6.6450910568237305,144\n1407,0,1,16,31,14,16,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,513,0,41,101,6,1,9,6.240275859832764,81\n1408,0,1,12,31,,8,484311,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,805,0,38,100,1,0,13,6.690842151641846,169\n1409,0,1,17,34,8,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,1,44,99,1,1,11,6.869014263153076,121\n1411,0,1,12,25,16,16,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,675,0,,104,1,1,7,6.514712810516357,49\n1413,0,1,13,24,8,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,398,0,,116,1,1,5,5.986452102661133,25\n1416,0,1,14,33,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,855,0,40,120,1,1,13,6.751101493835449,169\n1421,0,1,11,25,,9,96681,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,693,0,27,95,1,0,8,6.541029930114746,64\n1422,0,1,11,24,8,9,114259,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,641,0,27,,5,0,7,6.463029384613037,49\n1423,0,1,13,27,10,8,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,345,0,34,99,1,0,8,5.8435444831848145,64\n1424,0,1,12,27,,,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,561,0,24,68,5,1,9,6.329720973968506,81\n1425,0,1,12,24,9,11,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,684,0,21,,1,1,6,6.527957916259766,36\n1428,0,1,16,29,16,16,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,469,0,49,122,1,1,7,6.1506028175354,49\n1430,0,1,16,26,12,12,370732,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,300,0,37,106,6,1,4,5.703782558441162,16\n1431,0,1,18,25,12,9,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,673,0,37,101,1,1,1,6.511745452880859,1\n1432,0,1,16,24,12,9,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,385,0,29,,6,1,2,5.953243255615234,4\n1436,0,1,16,33,8,6,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,808,0,45,104,1,1,11,6.694561958312988,121\n1438,0,1,17,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,548,1,40,,6,1,1,6.306275367736816,1\n1439,0,1,16,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,38,,6,1,4,6.214608192443848,16\n1440,0,1,13,29,11,12,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,727,1,38,99,1,1,10,6.588926315307617,100\n1441,0,1,16,28,11,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,524,0,29,,1,1,6,6.261491775512695,36\n1445,0,1,15,24,2,8,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,450,0,36,,6,1,3,6.10924768447876,9\n1448,0,1,12,28,6,8,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,755,0,34,,1,0,10,6.626717567443848,100\n1449,0,1,12,24,11,,96681,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,640,0,37,,1,0,6,6.46146821975708,36\n1454,0,1,12,24,10,12,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,313,0,30,,1,1,6,5.746203422546387,36\n1458,0,1,12,29,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1425,0,37,101,1,0,11,7.261927127838135,121\n1459,0,1,12,28,11,5,411924,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,761,0,23,110,6,1,10,6.634633541107178,100\n1460,0,1,12,26,11,5,411924,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,35,94,1,1,8,6.396929740905762,64\n1461,0,1,16,32,12,15,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1111,0,42,111,1,1,10,7.0130157470703125,100\n1462,0,1,16,33,13,17,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,763,0,50,120,1,1,11,6.637258052825928,121\n1463,0,1,12,32,8,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,650,0,45,108,1,1,14,6.476972579956055,196\n1464,0,1,14,27,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1155,0,39,111,1,1,7,7.051855564117432,49\n1465,0,1,12,24,9,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,25,,1,1,6,6.396929740905762,36\n1467,0,1,12,29,11,11,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,555,0,31,103,1,0,11,6.318968296051025,121\n1468,0,1,11,28,11,11,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,543,1,25,,1,0,11,6.297109127044678,121\n1469,0,1,11,25,11,11,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,550,1,31,,1,0,8,6.309918403625488,64\n1470,0,1,11,31,,,520447,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,39,97,1,0,14,6.684611797332764,196\n1472,0,1,11,26,10,11,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1000,0,26,97,1,0,9,6.907755374908447,81\n1474,0,1,12,31,13,11,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,864,0,36,106,1,0,13,6.76157283782959,169\n1475,0,1,13,32,,6,346581,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,613,0,43,109,1,1,13,6.418365001678467,169\n1476,0,1,16,24,12,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,519,0,27,,1,1,2,6.251904010772705,4\n1480,0,1,13,30,,,150105,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,707,0,45,96,1,1,11,6.561030864715576,121\n1485,0,1,13,26,10,10,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,818,1,26,79,1,1,7,6.706862449645996,49\n1486,0,1,10,25,10,12,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,300,0,31,62,6,1,9,5.703782558441162,81\n1490,1,1,16,30,9,9,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,702,1,47,110,1,1,8,6.553933620452881,64\n1491,1,1,16,34,,12,358351,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1322,0,47,117,1,1,12,7.186901092529297,144\n1492,1,1,12,27,,12,99110,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,380,1,25,72,1,0,9,5.940171241760254,81\n1495,1,1,11,26,,,99110,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,400,0,30,83,6,1,9,5.991464614868164,81\n1496,1,1,11,25,,,96681,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,498,0,22,99,1,1,8,6.210599899291992,64\n1497,1,1,10,33,,11,167813,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,663,0,18,72,1,1,17,6.496775150299072,289\n1498,1,1,10,33,8,11,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,600,0,29,88,5,0,17,6.396929740905762,289\n1499,1,1,18,32,16,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1034,0,48,123,1,1,8,6.941190242767334,64\n1502,1,1,14,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1079,0,23,91,6,1,5,6.983789920806885,25\n1503,1,1,18,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,400,0,31,98,6,1,0,5.991464614868164,0\n1504,1,1,16,33,13,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,37,119,6,0,11,6.463029384613037,121\n1506,1,1,12,32,,8,358351,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,620,0,33,87,1,0,14,6.4297194480896,196\n1508,1,1,17,30,12,11,538123,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,481,0,49,121,4,1,7,6.175867080688477,49\n1510,1,1,16,33,8,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1058,0,41,,6,1,11,6.964135646820068,121\n1511,1,1,12,26,8,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,545,0,33,112,1,1,8,6.300786018371582,64\n1512,1,1,14,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,786,0,38,113,6,1,6,6.666956901550293,36\n1513,1,1,18,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,485,0,38,125,6,1,1,6.184148788452148,1\n1514,1,1,14,34,11,11,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,722,1,45,121,1,1,14,6.582025051116943,196\n1515,1,1,15,28,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,695,0,47,128,1,1,7,6.543911933898926,49\n1516,1,1,15,34,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,549,0,41,,4,1,13,6.308098316192627,169\n1517,1,1,15,32,15,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,793,0,36,103,1,1,11,6.675823211669922,121\n1518,1,1,16,33,18,16,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1923,0,48,99,1,1,11,7.561641693115234,121\n1520,1,1,15,33,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,793,0,40,101,1,1,12,6.675823211669922,144\n1521,0,1,15,28,,,370732,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,900,0,34,117,5,1,7,6.802394866943359,49\n1523,0,1,14,32,8,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,654,0,41,109,1,1,12,6.483107566833496,144\n1526,0,1,12,27,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,513,0,46,73,6,1,9,6.240275859832764,81\n1528,0,1,14,29,,12,538123,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,384,1,38,88,4,1,9,5.9506425857543945,81\n1529,0,1,16,27,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,500,0,27,116,1,1,5,6.214608192443848,25\n1530,0,1,15,25,12,11,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,601,1,40,137,6,1,4,6.398594856262207,16\n1531,0,1,12,27,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,438,0,40,105,1,1,9,6.082219123840332,81\n1532,0,1,12,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,42,98,6,1,7,6.214608192443848,49\n1535,0,1,18,33,,18,346581,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1264,0,47,122,1,1,9,7.142036437988281,81\n1536,0,1,14,26,12,14,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,747,0,43,104,1,1,6,6.61606502532959,36\n1537,0,1,14,27,12,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,513,0,29,78,1,1,7,6.240275859832764,49\n1539,0,1,12,33,,,346581,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,700,0,43,104,1,,15,6.551080226898193,225\n1541,0,1,16,29,14,12,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,672,0,38,93,1,1,7,6.510258197784424,49\n1542,0,1,17,30,,,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,983,1,39,87,6,1,7,6.890609264373779,49\n1543,0,1,13,29,12,12,538123,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,220,1,35,101,1,1,10,5.393627643585205,100\n1544,0,1,18,33,12,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1202,0,39,134,1,1,9,7.091742038726807,81\n1545,0,1,12,30,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,667,0,39,85,1,1,12,6.5027899742126465,144\n1548,0,1,14,28,,,117131,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,838,0,41,,1,1,8,6.73101806640625,64\n1551,0,1,15,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,444,1,36,104,1,1,4,6.095824718475342,16\n1554,0,1,12,25,10,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,543,0,25,104,6,1,7,6.297109127044678,49\n1555,0,1,14,30,12,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,505,0,41,,1,1,10,6.224558353424072,100\n1556,0,1,12,31,,,484311,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,797,0,37,107,1,1,13,6.680854797363281,169\n1557,0,1,9,24,10,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,357,0,18,,1,1,9,5.877735614776611,81\n1558,0,1,12,27,12,8,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,30,93,1,1,9,6.214608192443848,81\n1559,0,1,12,34,,8,358351,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,0,47,,1,1,16,6.869014263153076,256\n1560,0,1,11,28,6,5,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,350,0,31,94,6,1,11,5.857933044433594,121\n1561,0,1,15,24,6,5,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,313,0,35,,6,1,3,5.746203422546387,9\n1562,0,1,16,24,17,13,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,117,1,34,,1,1,2,4.762174129486084,4\n1563,0,1,12,33,10,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,726,0,48,109,1,1,15,6.587550163269043,225\n1564,0,1,13,33,,11,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,536,0,31,119,1,0,14,6.284134387969971,196\n1565,0,1,13,26,12,12,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,532,0,29,98,1,1,7,6.2766432762146,49\n1566,0,1,17,28,,,99110,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,428,1,32,103,1,1,5,6.0591230392456055,25\n1569,0,1,16,34,15,13,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1094,0,50,,1,1,12,6.99759578704834,144\n1570,0,1,12,33,,9,358351,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1925,0,45,,1,1,15,7.562681198120117,225\n1571,0,1,18,32,10,12,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,850,0,36,112,1,1,8,6.745236396789551,64\n1574,0,1,12,24,11,11,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,365,0,34,,6,1,6,5.899897575378418,36\n1575,0,1,16,26,12,8,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,474,0,29,104,6,1,4,6.16120719909668,16\n1576,0,1,13,26,11,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,656,0,33,96,1,0,7,6.486160755157471,49\n1577,0,1,12,25,11,10,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,440,0,22,,6,0,7,6.086774826049805,49\n1578,0,1,14,25,10,11,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,38,102,1,1,5,6.135564804077148,25\n1579,0,0,16,28,9,,358554,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,673,0,41,103,1,1,6,6.511745452880859,36\n1580,0,0,12,24,12,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1150,0,16,,1,1,6,7.0475172996521,36\n1582,0,0,12,31,,,139912,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,37,95,4,0,13,6.684611797332764,169\n1584,0,0,12,25,,12,88097,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,460,0,23,,6,1,7,6.131226539611816,49\n1586,1,0,12,26,,,358554,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,334,0,31,93,1,1,8,5.811141014099121,64\n1587,1,0,13,26,6,8,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,702,0,35,122,1,1,7,6.553933620452881,49\n1588,1,0,12,25,6,8,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,524,0,37,107,4,1,7,6.261491775512695,49\n1591,0,1,7,33,,8,398168,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,667,0,37,,1,1,20,6.5027899742126465,400\n1594,0,1,18,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,48,,1,1,2,6.463029384613037,4\n1595,0,1,12,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,40,,1,1,6,6.684611797332764,36\n1597,1,1,12,32,,12,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,30,97,1,0,14,6.357842445373535,196\n1599,1,1,18,32,12,12,87597,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,423,0,41,115,1,1,8,6.047372341156006,64\n1600,1,1,18,29,,,118387,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,874,0,42,120,1,1,5,6.773080348968506,25\n1601,1,1,15,28,,12,90623,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,640,0,29,103,1,0,7,6.46146821975708,49\n1604,0,0,16,29,12,14,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1101,0,41,106,1,1,7,7.003973960876465,49\n1605,0,0,16,26,12,14,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,649,0,32,96,1,1,4,6.475432872772217,16\n1606,0,0,12,26,8,8,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,450,0,39,114,1,1,8,6.10924768447876,64\n1607,0,0,12,33,,9,358351,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,924,0,37,,4,1,15,6.828711986541748,225\n1608,0,0,11,27,,9,370732,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,698,0,33,86,1,1,10,6.548219203948975,100\n1609,0,0,15,34,,,580891,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,505,1,27,78,1,1,13,6.224558353424072,169\n1610,0,0,16,28,12,13,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,556,0,38,110,1,1,6,6.320768356323242,36\n1611,0,0,17,25,12,13,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,375,1,37,132,6,1,2,5.926926136016846,4\n1612,0,0,15,28,12,12,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,673,0,34,126,1,1,7,6.511745452880859,49\n1613,0,0,13,30,8,8,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,308,0,36,102,1,1,11,5.730099678039551,121\n1614,0,0,12,34,12,12,346581,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,585,0,41,87,1,1,16,6.371612071990967,256\n1615,0,0,12,24,12,13,387287,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,781,0,31,89,4,1,6,6.660574913024902,36\n1620,0,1,12,27,,8,364640,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,656,0,40,106,1,1,9,6.486160755157471,81\n1621,0,1,12,28,8,5,405155,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,423,0,43,100,1,1,10,6.047372341156006,100\n1624,0,1,16,28,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1282,0,26,98,1,1,6,7.156176567077637,36\n1627,0,1,12,25,11,12,354474,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,0,30,97,1,1,7,6.869014263153076,49\n1628,0,1,12,30,4,16,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,38,111,1,1,12,6.684611797332764,144\n1630,0,1,12,33,12,12,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,40,100,1,1,15,6.620073318481445,225\n1631,0,1,18,29,12,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,647,0,39,110,4,1,5,6.472346305847168,25\n1632,0,1,12,29,10,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,938,0,38,114,4,1,11,6.84375,121\n1633,0,1,17,28,17,12,414980,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,537,1,43,135,4,1,5,6.2859978675842285,25\n1637,0,1,15,24,13,16,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,290,1,39,121,6,1,3,5.6698808670043945,9\n1638,0,1,12,29,6,8,529281,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,192,0,33,95,1,0,11,5.257495403289795,121\n1639,0,1,18,30,,,476353,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,818,0,35,116,1,1,6,6.706862449645996,36\n1640,0,1,18,30,,13,476353,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,813,0,45,98,1,1,6,6.70073127746582,36\n1641,0,1,12,29,10,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,727,0,28,90,1,1,11,6.588926315307617,121\n1643,0,1,12,24,10,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1125,0,33,116,1,1,6,7.025538444519043,36\n1645,0,1,17,28,14,,89240,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,615,1,32,110,1,1,5,6.421622276306152,25\n1646,0,1,12,26,14,,89240,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,403,0,23,97,6,0,8,5.998936653137207,64\n1647,0,1,11,26,8,9,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,705,0,24,89,1,1,9,6.558197975158691,81\n1648,0,1,15,27,11,12,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,337,1,33,105,1,1,6,5.820083141326904,36\n1649,0,1,17,28,11,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,833,0,44,117,1,0,5,6.725033760070801,25\n1650,0,1,17,26,11,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,192,1,37,75,1,1,3,5.257495403289795,9\n1653,0,1,12,26,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,730,0,23,87,1,0,8,6.593044757843018,64\n1654,0,1,10,26,9,11,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,542,0,23,74,1,1,10,6.295266151428223,100\n1655,0,1,12,28,11,11,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,823,0,45,91,1,1,10,6.712956428527832,100\n1656,0,1,12,26,11,11,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,438,0,38,90,1,1,8,6.082219123840332,64\n1657,0,1,14,24,11,11,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,735,0,27,,1,1,4,6.599870681762695,16\n1658,0,1,16,24,14,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,427,0,31,112,6,1,2,6.056784152984619,4\n1660,0,1,12,30,11,12,116442,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,340,0,38,90,1,1,12,5.828945636749268,144\n1665,0,1,13,34,14,11,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,481,0,29,130,1,1,15,6.175867080688477,225\n1666,0,1,16,32,10,12,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,817,0,51,108,1,1,10,6.705638885498047,100\n1667,0,1,12,28,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,500,0,34,86,1,1,10,6.214608192443848,100\n1669,0,1,12,25,,,87052,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,543,0,30,101,1,0,7,6.297109127044678,49\n1671,0,1,16,26,,11,373482,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,447,0,37,125,1,0,4,6.102558612823486,16\n1675,0,1,15,25,,11,403411,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,217,0,24,94,1,1,4,5.379897117614746,16\n1677,0,1,8,26,3,6,91296,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,275,0,18,,1,0,12,5.616771221160889,144\n1678,0,1,15,24,8,10,79842,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,352,1,22,109,5,0,3,5.863631248474121,9\n1681,0,1,12,29,8,10,140950,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,721,0,31,98,1,0,11,6.580639362335205,121\n1682,0,1,12,27,3,8,91296,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1008,0,36,,1,1,9,6.9157233238220215,81\n1684,0,1,17,29,8,12,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,654,1,36,114,1,0,6,6.483107566833496,36\n1685,0,1,16,26,,16,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,803,0,27,125,1,1,4,6.6883544921875,16\n1686,0,1,12,27,8,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,570,0,28,100,1,1,9,6.345636367797852,81\n1688,0,1,16,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,29,104,1,1,3,6.396929740905762,9\n1691,0,1,12,24,,,348558,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,645,0,35,,1,1,6,6.469250202178955,36\n1692,0,1,13,26,14,10,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,450,0,35,112,1,1,7,6.10924768447876,49\n1694,0,1,13,26,,2,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,445,0,27,100,6,0,7,6.098074436187744,49\n1696,0,1,15,29,12,11,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,590,0,37,104,1,1,8,6.380122661590576,64\n1697,0,1,14,25,8,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,721,0,35,97,1,1,5,6.580639362335205,25\n1698,0,1,12,32,8,8,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,693,0,33,120,1,1,14,6.541029930114746,196\n1699,0,1,13,26,8,8,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,529,0,38,134,6,1,7,6.270988464355469,49\n1700,0,1,9,30,8,8,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,470,0,28,92,1,0,15,6.152732849121094,225\n1701,0,1,16,26,16,13,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,481,0,34,129,1,1,4,6.175867080688477,16\n1702,0,1,16,25,16,13,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,31,122,1,1,3,6.135564804077148,9\n1703,0,1,17,33,6,9,391625,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,554,1,45,,1,1,10,6.317164897918701,100\n1704,0,1,14,32,12,12,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,865,0,42,118,4,0,12,6.762729644775391,144\n1705,0,1,16,30,,12,476353,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,713,0,42,101,1,1,8,6.569481372833252,64\n1706,0,1,12,24,,12,354474,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,740,0,37,107,1,1,6,6.606650352478027,36\n1707,0,1,14,28,,10,364640,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,817,0,,92,4,1,8,6.705638885498047,64\n1708,0,1,12,34,11,12,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,677,0,37,92,1,1,16,6.51767110824585,256\n1710,0,1,16,29,12,12,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,797,1,43,121,1,1,7,6.680854797363281,49\n1711,0,1,13,24,13,17,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,769,1,27,102,1,1,5,6.6450910568237305,25\n1713,0,1,16,25,12,16,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,33,118,1,1,3,6.135564804077148,9\n1714,0,1,14,24,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,519,0,28,,1,1,4,6.251904010772705,16\n1715,0,1,12,25,12,,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,393,0,38,100,1,1,7,5.973809719085693,49\n1716,0,1,13,32,9,7,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,800,0,37,92,1,1,13,6.684611797332764,169\n1717,1,0,17,27,14,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,673,0,38,108,1,1,4,6.511745452880859,16\n1718,1,0,16,33,,,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,481,1,41,121,1,1,11,6.175867080688477,121\n1719,1,0,12,32,8,12,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,911,0,42,119,1,1,14,6.814542770385742,196\n1720,1,0,12,25,8,8,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,481,0,33,,1,0,7,6.175867080688477,49\n1721,1,0,11,33,8,8,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,500,0,32,,1,0,16,6.214608192443848,256\n1724,1,0,16,24,12,12,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,385,0,39,106,1,1,2,5.953243255615234,4\n1725,1,0,12,24,12,11,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,436,0,24,98,1,0,6,6.077642440795898,36\n1729,1,0,12,25,7,8,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,526,0,29,109,1,0,7,6.26530122756958,49\n1730,1,0,14,29,12,8,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,913,0,37,,6,0,9,6.816735744476318,81\n1731,1,0,16,25,12,15,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,542,0,28,120,6,0,3,6.295266151428223,9\n1732,1,0,13,28,4,16,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,769,0,36,127,1,1,9,6.6450910568237305,81\n1735,1,0,12,24,8,8,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,226,0,26,,6,0,6,5.420535087585449,36\n1736,1,0,18,27,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,711,0,24,101,1,1,3,6.566672325134277,9\n1740,0,0,18,34,8,8,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,346,0,43,108,1,0,10,5.846438884735107,100\n1741,0,0,12,32,8,8,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,787,0,41,91,1,1,14,6.6682281494140625,196\n1742,0,0,14,26,10,12,364640,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,455,0,38,118,1,1,6,6.120297431945801,36\n1743,0,0,16,24,10,12,354474,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,460,0,25,110,6,1,2,6.131226539611816,4\n1744,0,0,13,26,,14,364640,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,277,0,37,119,1,1,7,5.624017715454102,49\n1745,0,0,17,34,8,12,391625,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,808,0,43,103,1,1,11,6.694561958312988,121\n1746,0,0,14,27,12,14,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,624,0,33,103,1,1,7,6.436150550842285,49\n1747,0,0,12,26,8,12,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,697,0,40,104,1,1,8,6.546785354614258,64\n1748,0,0,14,26,8,12,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,378,0,32,108,1,1,6,5.93489408493042,36\n1750,0,0,12,24,8,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,473,0,33,118,1,0,6,6.159095287322998,36\n1751,0,0,12,24,8,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,425,0,21,98,1,0,6,6.052089214324951,36\n1753,0,0,16,24,8,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,649,0,25,120,1,1,2,6.475432872772217,4\n1755,0,0,15,25,12,15,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,491,0,25,144,1,1,4,6.196444034576416,16\n1756,0,0,18,26,12,16,364640,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,924,0,25,,4,1,2,6.828711986541748,4\n1758,0,0,12,24,12,10,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,350,0,38,,1,0,6,5.857933044433594,36\n1759,0,0,13,25,13,12,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,600,0,27,,1,0,6,6.396929740905762,36\n1762,0,0,9,31,3,7,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,429,0,30,,1,0,16,6.06145715713501,256\n1765,0,0,12,26,2,7,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,500,0,20,100,1,0,8,6.214608192443848,64\n1766,0,0,9,24,2,7,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,500,0,12,,6,0,9,6.214608192443848,81\n1767,0,0,8,34,8,8,361010,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,350,0,39,,1,0,20,5.857933044433594,400\n1768,0,0,14,27,8,10,414980,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,370,0,32,86,1,1,7,5.913503170013428,49\n1771,0,0,16,24,8,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,380,0,21,,1,1,2,5.940171241760254,4\n1772,0,0,14,25,9,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,250,0,30,,1,1,5,5.521461009979248,25\n1774,0,0,18,30,6,8,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,506,0,40,122,1,1,6,6.226536750793457,36\n1776,0,0,12,27,12,13,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,619,1,35,98,1,1,9,6.428105354309082,81\n1777,0,0,16,24,12,13,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,381,1,28,,1,1,2,5.9427995681762695,4\n1779,0,0,12,30,,13,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,361,0,37,101,1,1,12,5.888877868652344,144\n1780,0,0,12,28,,8,364640,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,588,0,33,117,1,1,10,6.376727104187012,100\n1781,0,0,12,24,,8,354474,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,350,0,35,119,1,1,6,5.857933044433594,36\n1784,0,0,12,32,8,12,336056,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,484,0,37,105,1,1,14,6.182085037231445,196\n1785,0,0,11,34,6,9,336056,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,835,0,37,104,1,0,17,6.727431774139404,289\n1786,0,0,10,29,8,12,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,535,0,22,,1,1,13,6.282266616821289,169\n1789,0,1,17,28,,12,373482,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,385,0,46,111,6,1,5,5.953243255615234,25\n1790,0,1,11,25,8,8,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,450,0,22,96,4,1,8,6.10924768447876,64\n1791,0,1,16,28,12,8,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,491,0,29,94,1,1,6,6.196444034576416,36\n1792,0,1,12,24,,10,363070,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,914,0,41,,1,1,6,6.817830562591553,36\n1794,0,1,18,32,8,12,86158,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,831,0,36,101,1,0,8,6.722630023956299,64\n1795,0,1,12,30,8,8,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,434,0,36,83,1,1,12,6.073044300079346,144\n1796,0,1,12,26,8,8,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,700,0,34,112,1,1,8,6.551080226898193,64\n1797,0,1,10,26,8,8,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,542,0,28,93,1,0,10,6.295266151428223,100\n1799,0,1,16,24,12,13,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,231,0,27,,6,1,2,5.442417621612549,4\n1802,0,0,12,34,12,9,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,395,0,42,105,1,0,16,5.978885650634766,256\n1803,0,0,12,25,,,363070,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,721,0,37,115,1,1,7,6.580639362335205,49\n1804,0,0,12,25,8,15,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1187,0,24,105,4,0,7,7.079184532165527,49\n1809,0,0,12,25,8,10,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,501,0,27,88,1,0,7,6.216606140136719,49\n1810,0,1,16,24,16,13,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,336,0,39,122,6,1,2,5.817111015319824,4\n1812,0,1,12,32,8,8,336056,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,565,0,43,96,1,0,14,6.336825847625732,196\n1814,0,0,17,34,6,12,704926,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,964,0,42,123,1,0,11,6.871091365814209,121\n1816,0,0,12,33,12,12,722020,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1374,0,45,,1,1,15,7.2254815101623535,225\n1817,0,0,12,28,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,31,104,1,1,10,6.684611797332764,100\n1819,0,0,12,30,7,11,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,609,0,43,108,1,1,12,6.411818504333496,144\n1821,0,0,16,25,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,670,0,35,116,1,1,3,6.507277488708496,9\n1822,0,0,11,25,8,7,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,445,0,26,92,1,1,8,6.098074436187744,64\n1826,0,0,13,25,10,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,485,0,32,102,1,1,6,6.184148788452148,36\n1830,0,0,18,32,12,16,373396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,710,0,45,109,1,1,8,6.56526517868042,64\n1831,0,0,12,32,,,373396,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,953,0,43,103,1,1,14,6.859614849090576,196\n1832,0,0,11,25,10,8,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,480,0,22,,1,1,8,6.173786163330078,64\n1834,0,0,13,27,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,39,97,1,1,8,6.214608192443848,64\n1835,0,0,16,26,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,457,1,42,101,6,1,4,6.124683380126953,16\n1838,0,1,18,24,18,12,354474,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,721,0,39,,1,1,0,6.580639362335205,0\n1839,0,1,12,24,,12,354474,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,733,0,41,,1,1,6,6.5971455574035645,36\n1843,0,1,12,33,8,12,391625,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,330,0,31,,1,0,15,5.799092769622803,225\n1844,0,1,12,27,8,11,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,410,0,40,98,1,1,9,6.016157150268555,81\n1845,0,1,12,27,8,8,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,486,0,23,96,1,1,9,6.186208724975586,81\n1847,0,1,18,31,9,13,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,962,0,46,122,1,0,7,6.869014263153076,49\n1849,0,1,16,24,12,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,359,0,29,114,1,0,2,5.883322238922119,4\n1853,1,0,12,24,9,12,393859,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,330,0,37,100,6,1,6,5.799092769622803,36\n1854,1,0,12,28,,10,364640,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,625,0,38,104,1,1,10,6.437751770019531,100\n1857,1,0,12,26,5,8,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,495,0,35,111,1,1,8,6.2045578956604,64\n1858,1,0,12,29,12,12,476353,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,653,0,44,110,1,1,11,6.481576919555664,121\n1859,1,0,12,27,15,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,722,0,26,87,1,1,9,6.582025051116943,81\n1860,1,0,12,25,15,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,704,0,34,103,1,1,7,6.556778430938721,49\n1861,1,0,9,29,1,3,529281,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,514,0,31,,1,0,14,6.242223262786865,196\n1863,1,0,12,31,14,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,625,0,27,95,4,1,13,6.437751770019531,169\n1864,1,0,18,29,12,15,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,622,0,41,116,6,1,5,6.4329400062561035,25\n1865,1,0,15,26,12,15,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,427,0,31,109,1,1,5,6.056784152984619,25\n1867,1,0,12,29,12,12,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,653,0,36,104,1,0,11,6.481576919555664,121\n1868,1,0,12,30,12,12,542115,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,643,0,38,104,1,0,12,6.466144561767578,144\n1869,1,0,12,34,12,12,336056,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,575,0,37,110,1,0,16,6.3543701171875,256\n1871,1,0,13,34,,,361010,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,313,1,32,100,1,1,15,5.746203422546387,225\n1872,1,0,18,24,,16,363070,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,664,0,39,116,1,1,0,6.498281955718994,0\n1873,1,0,13,32,8,13,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,555,0,40,94,6,1,13,6.318968296051025,169\n1875,1,0,18,24,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,300,0,44,,6,1,0,5.703782558441162,0\n1878,0,0,15,28,12,16,729279,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,642,0,38,115,1,1,7,6.464588165283203,49\n1880,0,0,14,28,12,8,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,667,0,45,123,1,1,8,6.5027899742126465,64\n1882,0,0,18,28,15,13,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1320,0,47,113,1,1,4,7.185387134552002,16\n1883,0,0,12,24,9,9,363070,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,504,0,29,,1,1,6,6.222576141357422,36\n1884,0,0,16,25,12,12,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,781,0,29,106,1,1,3,6.660574913024902,9\n1886,0,0,14,25,12,12,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,817,0,40,114,4,0,5,6.705638885498047,25\n1889,0,0,12,28,12,6,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,520,0,32,95,6,1,10,6.253829002380371,100\n1890,0,0,12,27,12,6,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,577,0,33,113,1,1,9,6.357842445373535,81\n1891,0,0,11,25,12,6,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,375,0,16,,1,1,8,5.926926136016846,64\n1892,0,0,12,24,12,8,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,500,0,32,,1,0,6,6.214608192443848,36\n1893,0,0,16,28,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,625,0,48,111,6,1,6,6.437751770019531,36\n1894,0,0,16,34,,,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,684,0,35,110,1,1,12,6.527957916259766,144\n1895,0,0,14,26,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,470,0,31,100,1,1,6,6.152732849121094,36\n1896,0,0,13,27,12,12,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,628,0,39,95,1,1,8,6.442540168762207,64\n1897,0,0,13,24,12,8,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,525,0,20,,6,1,5,6.263398170471191,25\n1899,0,0,12,32,8,8,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,554,0,34,100,1,0,14,6.317164897918701,196\n1901,1,1,16,25,12,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,36,130,6,1,3,6.463029384613037,9\n1903,1,1,13,34,8,12,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,513,0,36,98,1,0,15,6.240275859832764,225\n1904,1,1,12,27,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,604,0,36,103,1,1,9,6.403573989868164,81\n1905,1,1,13,33,8,15,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,700,0,39,108,1,0,14,6.551080226898193,196\n1906,1,1,12,33,8,12,704926,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,606,0,38,,1,1,15,6.406879901885986,225\n1907,1,1,12,33,,12,704926,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1021,0,47,101,1,1,15,6.928537845611572,225\n1911,1,1,12,31,16,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,714,0,43,90,6,1,13,6.570882797241211,169\n1912,1,1,12,28,8,8,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,34,79,1,1,10,6.214608192443848,100\n1913,1,1,12,28,14,8,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,583,0,47,94,1,1,10,6.368186950683594,100\n1914,1,1,12,31,5,8,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,706,0,41,115,1,0,13,6.559615135192871,169\n1917,1,1,16,30,11,12,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,520,1,39,118,1,1,8,6.253829002380371,64\n1919,1,1,16,29,,,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,656,0,41,114,1,1,7,6.486160755157471,49\n1920,1,1,16,28,16,14,370732,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,684,0,33,114,1,1,6,6.527957916259766,36\n1922,1,1,13,25,11,11,400440,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,276,0,33,84,1,1,6,5.620400905609131,36\n1923,1,1,13,34,,12,141996,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,707,0,37,92,1,1,15,6.561030864715576,225\n1926,1,1,12,34,8,11,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,788,0,42,107,1,1,16,6.669497966766357,256\n1927,1,1,18,31,18,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1319,0,44,137,1,1,7,7.184628963470459,49\n1928,1,1,14,28,9,8,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,404,0,33,129,6,0,8,6.001414775848389,64\n1929,1,1,16,25,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,300,1,41,101,1,1,3,5.703782558441162,9\n1930,1,1,12,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,673,0,40,98,1,1,8,6.511745452880859,64\n1933,1,1,12,34,,8,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,722,0,41,108,1,0,16,6.582025051116943,256\n1935,1,1,16,26,8,2,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,769,0,37,114,1,0,4,6.6450910568237305,16\n1938,0,1,16,30,6,12,529281,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,760,0,37,110,1,1,8,6.6333184242248535,64\n1939,0,1,18,30,11,12,529281,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,434,0,37,111,1,1,6,6.073044300079346,36\n1940,0,1,13,34,12,8,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1192,0,30,99,1,1,15,7.083387851715088,225\n1941,0,1,17,31,,4,476353,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,462,1,39,113,1,1,8,6.135564804077148,64\n1944,0,1,12,24,12,12,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,370,0,29,101,1,1,6,5.913503170013428,36\n1945,0,1,12,30,12,12,487904,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,475,0,25,99,6,0,12,6.1633148193359375,144\n1946,0,1,12,28,12,12,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,435,0,37,101,1,0,10,6.075345993041992,100\n1947,0,1,12,26,8,12,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,332,0,24,75,6,1,8,5.8051347732543945,64\n1948,0,1,16,31,12,12,542115,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,640,0,49,102,6,1,9,6.46146821975708,81\n1949,0,1,12,34,,6,401122,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,505,0,29,91,1,0,16,6.224558353424072,256\n1952,0,1,16,29,10,12,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,625,0,38,113,1,0,7,6.437751770019531,49\n1953,0,1,12,31,,8,454179,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,462,0,34,120,1,1,13,6.135564804077148,169\n1957,1,1,17,27,16,16,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,817,0,42,134,1,1,4,6.705638885498047,16\n1960,1,1,17,24,,13,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,433,1,26,105,1,1,1,6.070737838745117,1\n1961,1,1,14,25,15,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,32,98,6,1,5,6.463029384613037,25\n1962,1,1,15,25,15,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,225,1,28,107,4,1,4,5.41610050201416,16\n1964,1,1,15,34,,14,167813,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,1,721,1,39,110,1,1,13,6.580639362335205,169\n1967,1,1,16,26,12,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,722,0,30,101,6,1,4,6.582025051116943,16\n1969,1,1,16,29,16,16,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,817,0,31,107,1,1,7,6.705638885498047,49\n1970,1,1,16,27,16,13,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,664,0,43,115,1,1,5,6.498281955718994,25\n1971,1,1,18,28,12,12,370732,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,897,0,39,121,1,1,4,6.799056053161621,16\n1973,1,1,11,34,,,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,793,0,40,115,1,1,17,6.675823211669922,289\n1975,1,1,15,31,10,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,539,0,42,134,1,1,10,6.289715766906738,100\n1976,1,1,11,27,10,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,897,0,39,,1,1,10,6.799056053161621,100\n1979,1,1,15,30,13,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,721,0,52,105,1,1,9,6.580639362335205,81\n1980,1,1,13,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,925,0,28,97,1,1,5,6.829793930053711,25\n1982,1,1,12,28,8,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,508,0,38,108,1,1,10,6.2304816246032715,100\n1983,1,1,16,32,8,10,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,929,0,45,113,6,1,10,6.834108829498291,100\n1985,1,1,17,33,,,398168,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,705,0,47,96,1,1,10,6.558197975158691,100\n1987,1,1,12,30,,5,484311,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,865,0,39,,1,1,12,6.762729644775391,144\n1989,1,1,16,24,12,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,520,0,41,137,1,1,2,6.253829002380371,4\n1991,1,1,12,24,10,8,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,417,0,30,,1,1,6,6.03308629989624,36\n1992,1,1,15,26,10,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,266,1,37,,6,1,5,5.58349609375,25\n1993,1,1,15,24,16,14,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,625,0,30,,6,1,3,6.437751770019531,9\n1994,1,1,12,31,,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,940,0,34,110,1,1,13,6.845880031585693,169\n1999,1,1,16,25,16,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,766,0,38,120,6,1,3,6.641181945800781,9\n2001,1,1,9,29,10,12,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,801,0,26,,1,1,14,6.685861110687256,196\n2002,1,1,15,28,10,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,707,0,36,105,6,1,7,6.561030864715576,49\n2004,1,1,12,30,,10,468402,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,684,0,40,121,1,1,12,6.527957916259766,144\n2005,1,1,16,26,9,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,417,0,29,113,1,1,4,6.03308629989624,16\n2008,1,1,18,29,8,12,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,600,0,41,113,6,0,5,6.396929740905762,25\n2009,1,1,15,25,,13,360396,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,682,0,37,101,4,0,4,6.52502965927124,16\n2010,1,1,18,31,12,9,236774,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,918,0,41,104,1,1,7,6.822197437286377,49\n2011,1,1,12,32,,,175194,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,738,0,37,96,1,1,14,6.603943824768066,196\n2015,1,1,12,28,10,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1167,1,32,92,4,1,10,7.062191486358643,100\n2016,1,1,11,29,10,10,468402,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,765,0,23,80,1,0,12,6.639875888824463,144\n2017,1,1,12,26,10,10,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,0,28,117,5,0,8,6.869014263153076,64\n2018,1,1,18,27,12,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,300,0,44,134,6,1,3,5.703782558441162,9\n2019,1,1,16,24,12,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,658,0,42,126,6,1,2,6.4892048835754395,4\n2020,1,1,12,26,8,8,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,25,95,1,1,8,6.135564804077148,64\n2021,1,1,12,24,8,8,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,721,0,18,102,1,1,6,6.580639362335205,36\n2024,1,1,12,25,8,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,865,0,36,,1,0,7,6.762729644775391,49\n2026,1,1,11,24,7,5,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,596,0,22,,1,1,7,6.390240669250488,49\n2029,1,1,12,32,8,10,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,909,0,42,112,1,1,14,6.812345027923584,196\n2030,1,1,12,29,8,10,484311,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1049,0,45,,1,1,11,6.955592632293701,121\n2031,1,1,13,34,,,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,455,0,47,104,1,1,15,6.120297431945801,225\n2034,1,1,12,27,,,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,675,0,32,81,6,1,9,6.514712810516357,81\n2035,1,1,12,24,,,96681,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,721,0,20,70,6,1,6,6.580639362335205,36\n2039,1,1,7,33,8,8,141996,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,600,0,,,1,1,20,6.396929740905762,400\n2040,1,1,12,28,8,8,99110,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,925,0,18,70,6,1,10,6.829793930053711,100\n2041,1,1,12,28,6,6,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,750,0,20,83,1,1,10,6.620073318481445,100\n2042,1,1,12,28,6,6,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,563,0,13,84,1,1,10,6.333279609680176,100\n2046,1,1,14,26,12,10,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,625,0,25,104,1,0,6,6.437751770019531,36\n2047,1,1,10,29,,,538123,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,300,0,30,82,1,1,13,5.703782558441162,169\n2049,1,1,12,27,8,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1380,0,32,109,1,1,9,7.229838848114014,81\n2050,1,1,14,25,12,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,470,0,25,111,1,1,5,6.152732849121094,25\n2052,1,1,12,28,12,12,358554,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,788,0,37,97,1,1,10,6.669497966766357,100\n2054,1,1,16,25,8,12,348558,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,230,1,33,120,1,1,3,5.438079357147217,9\n2057,0,0,10,27,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,389,0,34,,4,1,11,5.963579177856445,121\n2058,0,0,12,33,7,12,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,315,0,33,94,1,0,15,5.752572536468506,225\n2059,0,0,17,29,3,5,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,355,1,46,116,1,1,6,5.87211799621582,36\n2060,0,0,8,26,5,8,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,500,0,25,,1,0,12,6.214608192443848,144\n2062,0,0,11,33,8,11,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,650,0,30,,1,0,16,6.476972579956055,256\n2063,0,0,12,27,8,11,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,815,0,29,,6,1,9,6.703187942504883,81\n2064,0,0,13,26,13,12,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,649,0,33,101,6,1,7,6.475432872772217,49\n2065,0,0,12,29,9,,454179,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,435,0,36,98,1,0,11,6.075345993041992,121\n2066,1,0,11,27,10,15,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,600,0,32,110,1,0,10,6.396929740905762,100\n2070,1,0,13,26,16,14,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,206,0,42,131,1,1,7,5.327876091003418,49\n2072,1,0,12,27,12,11,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,481,0,46,122,1,1,9,6.175867080688477,81\n2073,1,0,13,24,12,10,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,485,0,33,88,4,1,5,6.184148788452148,25\n2074,1,0,18,29,12,12,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,759,0,39,111,1,0,5,6.632001876831055,25\n2075,1,0,12,26,12,12,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,995,0,35,90,1,0,8,6.902742862701416,64\n2076,0,1,12,29,,,538123,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1167,0,41,,1,1,11,7.062191486358643,121\n2078,0,1,16,25,12,12,360396,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,314,0,38,120,1,1,3,5.749392986297607,9\n2080,1,1,13,25,14,12,360396,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,915,0,25,,6,1,6,6.8189239501953125,36\n2082,1,1,13,26,16,12,370732,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,664,1,35,,1,1,7,6.498281955718994,49\n2083,1,1,12,29,,8,484311,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,783,0,29,108,4,1,11,6.663132667541504,121\n2084,1,1,13,32,8,12,358351,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,650,0,43,99,1,1,13,6.476972579956055,169\n2087,0,1,9,27,12,6,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,267,0,36,,1,0,12,5.587248802185059,144\n2088,0,1,8,33,8,8,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,355,0,,,1,0,19,5.87211799621582,361\n2089,0,1,8,33,,,391625,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,440,0,34,,1,0,19,6.086774826049805,361\n2090,0,1,11,30,6,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,475,0,31,80,1,0,13,6.1633148193359375,169\n2091,0,1,11,32,5,10,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,726,0,45,93,1,1,15,6.587550163269043,225\n2092,0,1,16,28,17,12,364640,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,721,0,42,96,1,1,6,6.580639362335205,36\n2093,0,1,12,34,,,352463,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,563,0,46,85,1,0,16,6.333279609680176,256\n2095,0,1,12,26,12,13,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,32,108,1,1,8,6.396929740905762,64\n2097,0,1,15,25,13,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,692,0,36,110,1,1,4,6.539586067199707,16\n2098,0,1,15,28,10,11,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,423,0,43,118,4,1,7,6.047372341156006,49\n2099,0,1,12,24,14,,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,786,0,30,102,1,1,6,6.666956901550293,36\n2100,0,1,12,31,8,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1202,0,44,,1,1,13,7.091742038726807,169\n2101,0,1,16,34,,18,352463,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,577,0,46,113,4,1,12,6.357842445373535,144\n2102,0,1,18,27,11,10,1093919,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,635,0,37,112,1,1,3,6.453625202178955,9\n2105,0,1,12,27,,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,410,0,31,115,1,1,9,6.016157150268555,81\n2113,0,1,16,24,12,10,86649,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,370,0,30,117,1,1,2,5.913503170013428,4\n2114,0,1,16,26,11,10,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,789,0,28,119,1,1,4,6.670766353607178,16\n2115,0,1,17,24,11,10,86649,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,450,0,32,,1,1,1,6.10924768447876,1\n2116,0,1,12,28,11,12,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1251,0,39,94,1,1,10,7.1316986083984375,100\n2117,1,1,16,30,16,13,484311,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,808,0,42,109,1,1,8,6.694561958312988,64\n2121,1,1,16,30,8,12,520447,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,308,0,49,107,1,0,8,5.730099678039551,64\n2123,0,1,12,30,12,12,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,817,0,29,,1,1,12,6.705638885498047,144\n2126,0,1,16,30,6,6,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,673,0,38,121,6,1,8,6.511745452880859,64\n2127,0,1,12,29,,,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,524,1,32,90,1,1,11,6.261491775512695,121\n2128,0,1,15,30,8,9,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,275,0,34,,1,0,9,5.616771221160889,81\n2131,0,1,17,28,14,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,423,0,32,,1,1,5,6.047372341156006,25\n2132,0,1,16,28,10,8,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,641,0,38,,1,1,6,6.463029384613037,36\n2133,0,1,12,28,9,9,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,450,0,37,121,6,0,10,6.10924768447876,100\n2134,0,1,12,26,6,7,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,333,0,21,89,1,1,8,5.80814266204834,64\n2135,0,1,12,32,8,12,361010,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,913,0,28,101,1,0,14,6.816735744476318,196\n2140,0,1,11,27,8,9,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,128,0,21,68,6,0,10,4.852030277252197,100\n2143,0,1,16,27,14,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,396,0,50,118,1,1,5,5.981414318084717,25\n2144,0,1,13,28,12,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,475,1,40,102,1,1,9,6.1633148193359375,81\n2146,0,1,13,31,8,12,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,450,0,38,,1,1,12,6.10924768447876,144\n2147,0,1,16,24,12,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,300,0,27,102,1,1,2,5.703782558441162,4\n2148,0,1,18,29,8,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,47,,1,1,5,6.135564804077148,25\n2150,0,1,12,32,7,9,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,630,0,48,109,1,1,14,6.4457197189331055,196\n2151,0,1,12,33,6,4,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,485,0,38,94,1,0,15,6.184148788452148,225\n2155,0,1,12,30,5,6,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,549,0,34,115,1,1,12,6.308098316192627,144\n2156,0,1,12,25,5,6,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,372,0,30,101,6,1,7,5.918893814086914,49\n2157,0,1,12,34,4,8,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,641,0,41,92,1,1,16,6.463029384613037,256\n2159,0,1,12,29,,8,454179,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,519,0,37,89,1,0,11,6.251904010772705,121\n2160,0,1,9,26,5,11,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,385,0,32,71,5,1,11,5.953243255615234,121\n2161,0,1,16,29,12,8,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,450,0,32,97,1,1,7,6.10924768447876,49\n2163,0,0,12,26,10,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,315,0,38,116,1,1,8,5.752572536468506,64\n2165,0,0,14,29,11,12,487904,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,731,0,39,130,1,1,9,6.5944132804870605,81\n2166,0,0,12,32,6,12,391625,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,325,0,34,102,1,1,14,5.783825397491455,196\n2167,0,0,16,28,12,12,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,616,0,38,119,1,1,6,6.42324686050415,36\n2169,0,0,15,30,10,10,487904,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,346,0,45,104,4,1,9,5.846438884735107,81\n2170,0,0,13,28,8,13,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,471,0,42,91,6,1,9,6.154858112335205,81\n2172,0,0,12,27,7,8,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,300,0,34,93,6,0,9,5.703782558441162,81\n2174,0,1,13,24,15,10,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,430,0,32,,1,1,5,6.063785076141357,25\n2175,0,1,12,28,12,8,405634,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,267,0,37,95,1,0,10,5.587248802185059,100\n2176,0,1,12,28,13,10,364640,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,230,0,24,74,4,1,10,5.438079357147217,100\n2177,0,1,14,24,,10,354474,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,432,0,24,115,6,1,4,6.06842565536499,16\n2178,0,1,12,26,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,531,0,31,89,1,1,8,6.274762153625488,64\n2179,0,1,12,27,12,11,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1100,0,38,92,1,1,9,7.003065586090088,81\n2180,0,1,12,28,8,12,89240,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,588,0,25,104,1,1,10,6.376727104187012,100\n2181,0,1,18,30,,15,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,841,0,44,109,1,1,6,6.734591484069824,36\n2183,0,1,15,24,,10,354474,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,641,0,23,124,1,1,3,6.463029384613037,9\n2185,0,1,14,34,12,12,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,0,41,,1,1,14,6.869014263153076,196\n2186,0,1,13,33,11,12,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,921,0,37,,1,0,14,6.825459957122803,196\n2187,0,0,15,27,,12,414980,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,350,0,29,94,1,1,6,5.857933044433594,36\n2188,0,0,16,24,12,12,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,385,0,25,,,1,2,5.953243255615234,4\n2189,0,0,16,33,4,12,401122,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,618,0,44,120,1,1,11,6.426488399505615,121\n2190,0,0,13,31,,,529281,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,470,1,35,103,1,1,12,6.152732849121094,144\n2192,0,0,12,27,12,,373482,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,411,0,31,92,1,1,9,6.0185933113098145,81\n2195,0,0,12,25,12,10,403411,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,400,0,24,111,1,1,7,5.991464614868164,49\n2199,0,0,11,33,9,8,391625,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,700,0,40,96,1,0,16,6.551080226898193,256\n2202,0,0,15,27,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,311,1,40,103,1,0,6,5.739792823791504,36\n2203,0,0,14,24,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,243,0,35,110,1,1,4,5.493061542510986,16\n2208,0,0,12,32,5,7,127854,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,248,0,35,67,5,0,14,5.513428688049316,196\n2209,0,0,11,30,8,8,135156,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,423,0,26,69,6,1,13,6.047372341156006,169\n2211,0,0,11,33,8,8,127854,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,600,0,32,91,5,1,16,6.396929740905762,256\n2212,0,0,17,25,8,4,102879,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,700,0,34,104,1,1,2,6.551080226898193,4\n2213,0,0,12,24,10,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,300,0,36,124,6,1,6,5.703782558441162,36\n2215,0,0,12,24,11,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,691,0,42,98,1,0,6,6.538139820098877,36\n2216,0,0,12,30,7,9,542115,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,48,86,1,1,12,6.396929740905762,144\n2218,0,0,12,30,,12,476353,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,700,0,44,118,1,1,12,6.551080226898193,144\n2219,0,0,14,25,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,275,1,,98,6,0,5,5.616771221160889,25\n2223,0,0,9,34,4,7,151100,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,675,0,23,92,1,1,19,6.514712810516357,361\n2224,0,0,17,28,12,12,89134,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,449,1,40,116,1,1,5,6.107022762298584,25\n2225,0,0,16,30,12,12,116442,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,635,0,43,97,1,1,8,6.453625202178955,64\n2226,0,0,14,29,10,9,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1250,0,44,109,1,1,9,7.130898952484131,81\n2227,0,0,18,29,8,18,504643,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,962,0,33,105,1,1,5,6.869014263153076,25\n2228,0,0,18,25,10,13,363070,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,490,0,32,99,6,1,1,6.194405555725098,1\n2230,0,0,12,24,10,13,363070,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,586,0,28,,4,1,6,6.373319625854492,36\n2231,0,0,14,33,,12,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,750,0,,108,1,1,13,6.620073318481445,169\n2232,0,0,18,26,12,12,89134,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,326,0,39,100,6,1,2,5.7868971824646,4\n2233,0,0,18,29,17,12,116442,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,430,0,35,117,1,1,5,6.063785076141357,25\n2234,0,0,12,26,12,11,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,571,0,25,101,1,1,8,6.347389221191406,64\n2235,0,0,16,28,9,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,913,0,40,111,1,1,6,6.816735744476318,36\n2236,0,0,14,30,4,10,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,577,0,44,101,1,1,10,6.357842445373535,100\n2237,0,0,11,32,,,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,433,0,36,,1,1,15,6.070737838745117,225\n2238,0,0,12,24,9,8,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,505,0,21,,1,0,6,6.224558353424072,36\n2239,0,1,18,34,,8,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,721,0,45,92,1,1,10,6.580639362335205,100\n2240,0,1,16,33,14,8,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,962,0,38,106,1,1,11,6.869014263153076,121\n2241,0,1,12,31,13,14,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,609,0,33,,4,0,13,6.411818504333496,169\n2244,0,1,12,25,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,450,0,33,,1,0,7,6.10924768447876,49\n2245,1,0,12,33,10,12,391625,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,625,0,37,102,1,1,15,6.437751770019531,225\n2246,1,0,14,26,10,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,713,0,28,115,1,1,6,6.569481372833252,36\n2247,1,0,12,24,8,10,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,710,0,37,99,1,1,6,6.56526517868042,36\n2250,1,0,16,32,10,11,704926,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,913,0,48,118,1,1,10,6.816735744476318,100\n2251,1,0,8,24,8,8,708947,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,418,0,21,,1,0,10,6.0354814529418945,100\n2254,0,0,13,29,16,13,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,692,0,37,132,1,1,10,6.539586067199707,100\n2255,0,0,12,34,,,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,260,0,34,,1,0,16,5.5606818199157715,256\n2256,0,0,13,26,16,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,650,0,26,108,1,1,7,6.476972579956055,49\n2257,0,0,14,25,16,12,354474,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,610,0,35,103,1,1,5,6.413458824157715,25\n2260,0,0,12,29,10,14,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,726,0,40,98,5,1,11,6.587550163269043,121\n2261,0,0,13,32,11,8,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,767,0,44,111,1,0,13,6.642486572265625,169\n2264,0,0,12,27,11,12,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,620,0,29,97,1,0,9,6.4297194480896,81\n2266,0,0,16,27,,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,721,0,33,101,1,0,5,6.580639362335205,25\n2267,0,0,18,26,12,14,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,516,0,36,129,3,1,2,6.2461066246032715,4\n2269,0,0,12,25,11,10,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,400,0,37,85,6,0,7,5.991464614868164,49\n2270,0,0,14,27,13,13,414980,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,808,0,39,106,1,1,7,6.694561958312988,49\n2271,0,0,12,24,7,7,363070,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,460,0,27,,6,0,6,6.131226539611816,36\n2272,0,0,17,32,18,12,361010,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,642,0,45,120,1,0,9,6.464588165283203,81\n2273,0,0,12,28,8,8,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,519,0,28,107,1,1,10,6.251904010772705,100\n2275,0,0,12,24,10,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,568,0,32,109,1,0,6,6.342121601104736,36\n2276,0,0,16,24,10,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,693,0,28,,6,1,2,6.541029930114746,4\n2278,0,0,12,31,8,12,487904,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,978,0,49,106,6,1,13,6.885509490966797,169\n2279,0,0,12,32,12,8,361010,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,779,0,34,106,1,0,14,6.658010959625244,196\n2280,0,0,14,27,8,9,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,443,0,32,95,1,0,7,6.093569755554199,49\n2283,0,0,16,33,9,12,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,692,0,39,105,1,1,11,6.539586067199707,121\n2284,0,0,16,26,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,417,0,44,131,6,1,4,6.03308629989624,16\n2286,0,0,11,30,8,12,542115,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,773,0,32,93,1,0,13,6.6502790451049805,169\n2287,0,0,15,26,,8,430739,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,400,0,33,88,6,1,5,5.991464614868164,25\n2292,0,0,12,27,,11,347666,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,900,0,38,100,1,0,9,6.802394866943359,81\n2294,0,0,16,31,12,8,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,700,0,32,107,1,1,9,6.551080226898193,81\n2296,0,0,16,24,8,12,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,485,0,35,104,1,0,2,6.184148788452148,4\n2299,0,0,16,29,8,9,111021,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,894,0,30,107,1,0,7,6.795705795288086,49\n2300,0,0,18,29,,,111021,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,750,0,42,126,1,1,5,6.620073318481445,25\n2301,1,0,13,33,,8,352463,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1055,0,47,109,1,1,14,6.961296081542969,196\n2302,1,0,12,28,10,,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,933,0,42,112,1,1,10,6.838405132293701,100\n2303,1,0,12,26,10,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,568,0,22,105,1,1,8,6.342121601104736,64\n2304,1,0,16,25,8,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,987,1,36,133,1,1,3,6.894670009613037,9\n2305,1,0,16,24,8,12,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,769,0,36,,1,1,2,6.6450910568237305,4\n2306,1,0,12,27,8,12,414980,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,648,1,33,114,1,0,9,6.473890781402588,81\n2307,1,0,16,30,12,14,487904,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,449,0,38,99,6,0,8,6.107022762298584,64\n2309,1,0,12,27,10,12,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,580,0,25,114,1,0,9,6.363028049468994,81\n2310,1,0,8,33,7,10,401122,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,550,0,34,,1,0,19,6.309918403625488,361\n2314,0,0,12,29,9,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,800,0,35,123,1,1,11,6.684611797332764,121\n2315,0,0,12,24,12,12,354474,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,1,160,0,34,83,6,1,6,5.075173854827881,36\n2317,0,0,17,28,16,17,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,462,0,42,,1,1,5,6.135564804077148,25\n2318,0,0,14,25,12,12,363070,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,425,0,46,,1,1,5,6.052089214324951,25\n2319,0,0,8,32,8,12,361010,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,600,0,39,,1,0,18,6.396929740905762,324\n2322,0,0,17,26,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,866,0,37,127,4,1,3,6.763885021209717,9\n2323,0,0,12,28,,10,386295,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,683,0,49,87,1,1,10,6.526494979858398,100\n2324,0,0,12,27,12,11,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1115,0,48,100,1,1,9,7.0166096687316895,81\n2325,0,0,12,26,12,11,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1100,0,48,104,1,1,8,7.003065586090088,64\n2326,0,0,12,24,12,11,337974,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,286,0,49,106,1,1,6,5.655992031097412,36\n2327,0,0,14,28,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,513,0,46,127,1,1,8,6.240275859832764,64\n2328,0,0,13,26,12,12,373482,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,650,1,52,109,1,1,7,6.476972579956055,49\n2329,0,0,12,31,12,9,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1039,0,48,85,1,1,13,6.946013927459717,169\n2330,0,0,12,26,12,9,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,700,0,46,93,1,1,8,6.551080226898193,64\n2333,0,1,18,31,12,12,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,315,0,30,,6,1,7,5.752572536468506,49\n2336,0,1,12,33,7,8,361010,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,310,0,40,100,1,1,15,5.736572265625,225\n2338,0,1,11,27,,,373482,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,335,0,37,,1,0,10,5.8141303062438965,100\n2339,0,1,11,25,,,363070,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,518,0,20,71,1,0,8,6.249975204467773,64\n2340,0,1,16,28,12,12,373482,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,709,0,36,88,6,0,6,6.5638556480407715,36\n2342,0,1,12,25,8,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,623,0,32,93,1,0,7,6.43454647064209,49\n2343,0,1,13,28,8,12,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,298,0,26,98,1,0,9,5.697093486785889,81\n2345,0,1,14,24,10,12,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,625,0,35,110,1,1,4,6.437751770019531,16\n2347,0,1,16,29,8,12,504643,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,769,0,37,113,1,0,7,6.6450910568237305,49\n2348,0,1,16,28,8,8,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,459,0,40,136,6,1,6,6.129050254821777,36\n2350,1,1,12,31,6,,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,550,0,31,109,1,0,13,6.309918403625488,169\n2352,1,1,14,29,12,11,476353,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,470,0,38,94,1,1,9,6.152732849121094,81\n2353,1,1,12,33,8,8,391625,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,396,0,36,77,1,0,15,5.981414318084717,225\n2354,1,1,14,25,12,12,708947,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,594,0,33,,1,1,5,6.3868794441223145,25\n2356,1,1,16,28,18,15,729279,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1039,0,49,113,6,1,6,6.946013927459717,36\n2358,1,1,12,34,8,8,352463,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,400,0,36,,1,1,16,5.991464614868164,256\n2360,1,1,12,26,11,12,364640,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,698,1,34,125,1,,8,6.548219203948975,64\n2362,1,1,16,26,8,13,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,713,0,27,106,1,1,4,6.569481372833252,16\n2363,1,1,12,24,8,11,337974,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,550,0,33,,1,1,6,6.309918403625488,36\n2366,1,1,14,27,8,14,347666,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,333,0,37,108,1,1,7,5.80814266204834,49\n2368,0,1,12,29,12,12,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1058,0,29,,1,0,11,6.964135646820068,121\n2369,0,1,11,30,,,476353,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,590,0,35,89,1,0,13,6.380122661590576,169\n2370,0,1,12,24,,,354474,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,633,0,39,,1,1,6,6.450470447540283,36\n2371,0,1,10,26,,,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,500,0,24,84,2,1,10,6.214608192443848,100\n2372,0,1,14,28,12,12,364640,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,788,0,37,,1,1,8,6.669497966766357,64\n2375,0,1,18,31,13,12,454179,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,832,0,50,,1,1,7,6.723832607269287,49\n2377,0,1,12,26,6,12,347666,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,539,0,44,102,1,0,8,6.289715766906738,64\n2379,0,1,18,28,8,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,577,0,44,106,1,1,4,6.357842445373535,16\n2381,0,1,14,30,12,12,1113393,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,808,0,40,102,1,1,10,6.694561958312988,100\n2382,0,1,14,30,14,16,1113393,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,722,0,49,113,1,1,10,6.582025051116943,100\n2383,0,1,12,26,12,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,600,0,26,96,1,1,8,6.396929740905762,64\n2387,0,1,10,28,8,6,378045,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,452,0,22,,1,0,12,6.113682270050049,144\n2388,0,1,7,27,4,8,378045,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,300,0,30,,1,0,14,5.703782558441162,196\n2391,0,1,12,26,,10,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,393,0,24,,6,0,8,5.973809719085693,64\n2393,1,1,12,26,,7,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,200,0,,,6,0,8,5.2983174324035645,64\n2398,1,1,9,33,,7,107097,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,750,0,51,,1,1,18,6.620073318481445,324\n2399,1,1,16,26,12,12,426142,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,673,0,31,107,6,1,4,6.511745452880859,16\n2402,1,1,14,30,12,14,1002054,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,989,0,38,,1,0,10,6.896694183349609,100\n2404,1,1,17,27,12,14,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,880,0,49,110,6,0,4,6.779922008514404,16\n2406,1,1,13,26,12,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,905,0,35,106,1,1,7,6.807934761047363,49\n2408,1,1,14,34,,10,577458,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,250,0,37,,1,1,14,5.521461009979248,196\n2409,1,1,10,28,5,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,520,0,38,103,1,0,12,6.253829002380371,144\n2410,1,1,12,27,5,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,356,0,20,53,6,0,9,5.8749308586120605,81\n2411,1,1,12,24,5,12,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,278,0,24,103,1,0,6,5.627621173858643,36\n2412,1,1,12,25,11,11,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,400,0,16,76,2,0,7,5.991464614868164,49\n2415,1,1,10,28,,8,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,273,0,36,90,1,1,12,5.609471797943115,144\n2417,1,1,11,31,7,12,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,500,0,31,96,1,1,14,6.214608192443848,196\n2418,1,1,11,33,6,12,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,603,0,35,97,1,1,16,6.401916980743408,256\n2419,0,1,12,25,9,11,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,400,0,26,,5,1,7,5.991464614868164,49\n2422,0,1,12,28,,10,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,475,0,35,87,5,1,10,6.1633148193359375,100\n2424,0,1,12,33,,15,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1100,0,39,89,1,1,15,7.003065586090088,225\n2427,0,1,14,26,12,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,337,1,44,118,6,1,6,5.820083141326904,36\n2429,0,1,11,27,16,12,426142,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,538,0,46,,1,1,10,6.287858486175537,100\n2431,0,1,13,26,,8,104794,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,404,0,28,70,1,1,7,6.001414775848389,49\n2432,0,1,16,27,17,16,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,757,0,34,104,1,1,5,6.629363059997559,25\n2433,0,1,16,33,18,16,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,554,0,36,113,1,1,11,6.317164897918701,121\n2435,0,1,16,29,12,11,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,577,0,36,116,1,1,7,6.357842445373535,49\n2436,0,1,15,26,12,10,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,432,0,36,114,1,1,5,6.06842565536499,25\n2438,0,1,11,29,5,12,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,550,0,33,,1,0,12,6.309918403625488,144\n2439,0,1,16,24,16,12,414261,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,797,0,41,,1,1,2,6.680854797363281,4\n2440,0,1,14,27,16,14,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,450,0,29,116,6,1,7,6.10924768447876,49\n2441,0,1,13,29,10,11,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,807,0,43,109,1,1,10,6.693323612213135,100\n2442,0,1,13,24,10,11,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,600,0,31,,1,1,5,6.396929740905762,25\n2444,0,1,13,34,6,6,365421,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,933,0,35,,1,1,15,6.838405132293701,225\n2445,0,1,11,33,,10,365421,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,481,0,29,80,1,0,16,6.175867080688477,256\n2446,1,1,12,29,9,8,501027,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,623,0,20,,1,0,11,6.43454647064209,121\n2450,1,1,10,27,4,11,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,328,0,14,,1,1,11,5.793013572692871,121\n2451,1,1,16,26,6,8,93751,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,600,0,40,116,1,1,4,6.396929740905762,16\n2457,1,1,14,27,5,8,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,693,0,32,83,1,1,7,6.541029930114746,49\n2460,1,1,15,33,12,12,90620,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,923,0,47,104,1,1,12,6.827629089355469,144\n2461,1,1,12,28,12,12,93751,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,721,0,42,106,1,1,10,6.580639362335205,100\n2462,1,1,12,25,12,9,86498,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,540,0,26,99,1,1,7,6.291569232940674,49\n2463,1,1,13,27,12,9,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,459,1,37,101,1,0,8,6.129050254821777,64\n2464,1,1,13,27,11,11,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,485,1,38,74,6,1,8,6.184148788452148,64\n2466,1,1,12,25,,11,86498,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,350,0,24,,6,0,7,5.857933044433594,49\n2468,1,1,16,25,18,16,372835,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,200,1,30,121,6,1,3,5.2983174324035645,9\n2470,1,1,10,30,3,,134310,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,520,0,30,,1,0,14,6.253829002380371,196\n2473,1,1,12,25,6,12,86507,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,250,0,26,,4,0,7,5.521461009979248,49\n2475,1,1,11,28,,,88672,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,504,0,22,,1,0,11,6.222576141357422,121\n2477,1,1,12,28,9,8,88672,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,363,1,21,77,1,1,10,5.894402980804443,100\n2478,1,1,11,33,,,127041,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,654,0,23,,1,0,16,6.483107566833496,256\n2479,1,1,12,32,5,,127041,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,425,0,24,,1,0,14,6.052089214324951,196\n2480,1,1,12,31,,,134296,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,245,0,26,,4,0,13,5.501258373260498,169\n2481,1,1,11,25,,8,86498,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,250,0,21,,6,1,8,5.521461009979248,64\n2483,1,1,13,32,0,,370720,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,879,0,40,,1,0,13,6.77878475189209,169\n2486,1,1,12,26,6,6,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,687,0,18,93,1,0,8,6.532334327697754,64\n2487,1,1,11,32,,,127041,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,402,0,26,,1,0,15,5.9964518547058105,225\n2488,1,1,12,31,6,,134296,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,428,0,32,,4,0,13,6.0591230392456055,169\n2489,1,1,13,24,10,12,372835,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,325,0,37,114,4,1,5,5.783825397491455,25\n2492,1,1,17,27,16,12,383527,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,725,0,40,103,5,0,4,6.586171627044678,16\n2493,1,1,12,25,3,8,89835,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,780,0,34,,1,1,7,6.659294128417969,49\n2499,0,1,14,27,,8,362750,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,264,0,38,,1,1,7,5.575949192047119,49\n2500,0,1,12,32,6,9,577458,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,450,0,43,92,4,1,14,6.10924768447876,196\n2501,0,1,14,27,8,8,88672,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,346,0,33,,4,1,7,5.846438884735107,49\n2502,0,1,13,24,6,3,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,350,0,21,79,6,1,5,5.857933044433594,25\n2503,0,1,13,24,10,13,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,400,0,24,,6,1,5,5.991464614868164,25\n2504,0,1,12,32,2,6,107097,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,980,0,34,92,1,1,14,6.887552738189697,196\n2505,0,1,12,29,,5,134296,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,385,0,36,,1,1,11,5.953243255615234,121\n2507,0,1,17,28,,11,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,344,0,35,,6,1,5,5.840641498565674,25\n2509,0,1,16,25,7,9,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,563,0,,99,6,1,3,6.333279609680176,9\n2510,0,1,7,29,12,12,144741,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,463,0,28,,1,1,16,6.1377272605896,256\n2511,0,1,12,28,,,104794,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,565,0,20,,6,0,10,6.336825847625732,100\n2512,0,1,12,27,5,9,104794,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,638,0,28,,1,1,9,6.458338260650635,81\n2513,0,1,10,30,,5,134296,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,462,0,29,,1,0,14,6.135564804077148,196\n2514,0,1,13,27,,,88672,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,670,1,35,99,1,1,8,6.507277488708496,64\n2515,0,1,13,24,,,86498,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,404,0,26,,6,1,5,6.001414775848389,25\n2516,0,1,17,25,11,9,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,373,1,33,116,5,1,2,5.921578407287598,4\n2517,0,1,12,24,,,86498,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,230,0,20,,6,1,6,5.438079357147217,36\n2518,0,1,12,32,,,127041,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,558,0,40,,5,0,14,6.324358940124512,196\n2519,0,1,8,29,6,7,134296,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,300,0,18,,1,0,15,5.703782558441162,225\n2520,0,1,14,29,,12,501027,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,913,0,40,,1,1,9,6.816735744476318,81\n2522,0,1,18,27,12,8,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,558,0,41,98,1,1,3,6.324358940124512,9\n2523,0,1,13,33,,12,370720,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,1,529,0,48,114,1,1,14,6.270988464355469,196\n2524,0,1,15,26,5,7,93751,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,330,0,45,,6,1,5,5.799092769622803,25\n2526,0,1,9,26,13,11,93751,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,375,0,28,,1,1,11,5.926926136016846,121\n2527,0,1,13,24,13,11,91137,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,615,0,25,,1,0,5,6.421622276306152,25\n2528,0,1,14,27,12,12,426142,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,721,0,34,119,1,1,7,6.580639362335205,49\n2529,0,1,16,25,12,12,414261,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,529,1,40,122,4,1,3,6.270988464355469,9\n2531,0,1,12,34,6,12,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,859,0,42,77,1,0,16,6.755768775939941,256\n2532,0,1,14,27,16,11,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,649,0,35,,1,1,7,6.475432872772217,49\n2533,0,1,10,24,16,11,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,238,0,26,,1,1,8,5.472270488739014,64\n2534,0,1,12,34,8,6,150139,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,275,0,37,95,1,0,16,5.616771221160889,256\n2536,0,1,14,26,,13,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,325,0,24,89,1,1,6,5.783825397491455,36\n2537,0,1,14,29,,16,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,357,0,44,93,5,1,9,5.877735614776611,81\n2538,0,1,12,30,,10,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,385,0,35,,1,0,12,5.953243255615234,144\n2540,0,1,14,24,12,15,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,365,0,25,116,1,1,4,5.899897575378418,16\n2542,0,1,8,33,6,4,406024,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,800,0,30,,1,0,19,6.684611797332764,361\n2543,0,1,12,34,5,12,406024,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,482,0,37,110,1,1,16,6.177944183349609,256\n2544,0,1,17,29,12,8,493866,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,955,0,39,132,1,1,6,6.861711502075195,36\n2545,0,1,17,26,7,12,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,462,0,32,103,1,0,3,6.135564804077148,9\n2546,0,1,16,28,2,8,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,417,0,37,112,1,0,6,6.03308629989624,36\n2548,0,1,10,25,2,8,367506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,290,0,23,,1,0,9,5.6698808670043945,81\n2549,0,1,12,24,12,12,367506,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,240,0,36,,1,1,6,5.4806389808654785,36\n2552,0,1,12,31,,,610498,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,829,0,30,,1,0,13,6.72022008895874,169\n2558,0,1,12,32,12,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,361,0,42,99,1,1,14,5.888877868652344,196\n2561,0,1,16,28,11,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,598,0,46,138,1,1,6,6.393590927124023,36\n2562,0,1,13,25,7,10,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,750,1,29,93,1,1,6,6.620073318481445,36\n2563,0,1,16,25,12,11,353857,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,385,0,28,88,6,0,3,5.953243255615234,9\n2564,0,1,16,28,,10,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,620,0,26,96,1,1,6,6.4297194480896,36\n2570,0,1,13,34,14,12,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,641,0,45,106,1,1,15,6.463029384613037,225\n2575,0,1,16,26,12,9,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,468,0,33,90,1,0,4,6.148468494415283,16\n2576,0,1,13,24,12,9,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,385,1,29,,6,0,5,5.953243255615234,25\n2578,0,1,12,25,11,12,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,462,0,25,93,1,0,7,6.135564804077148,49\n2579,0,1,12,27,14,10,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,635,0,32,92,1,1,9,6.453625202178955,81\n2580,0,1,12,26,14,10,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,400,0,22,101,1,1,8,5.991464614868164,64\n2581,0,1,13,27,12,10,420051,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,760,0,27,100,1,1,8,6.6333184242248535,64\n2583,0,1,13,27,12,10,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,560,1,35,91,1,1,8,6.32793664932251,64\n2584,0,1,12,34,3,,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1000,0,48,95,1,1,16,6.907755374908447,256\n2587,1,1,11,28,6,6,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,425,0,24,71,1,0,11,6.052089214324951,121\n2589,1,1,12,30,,9,134296,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,411,0,28,89,1,0,12,6.0185933113098145,144\n2591,1,1,11,25,,3,91137,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,179,0,12,67,1,1,8,5.1873860359191895,64\n2593,1,1,18,32,14,12,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,375,0,44,96,1,0,8,5.926926136016846,64\n2594,1,1,18,28,16,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1298,0,45,127,6,1,4,7.168580055236816,16\n2595,1,1,15,30,8,14,158714,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,476,0,40,,1,1,9,6.165417671203613,81\n2596,1,1,16,27,8,8,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,775,0,43,114,6,1,5,6.652863025665283,25\n2597,1,1,12,27,10,10,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,714,1,37,112,1,1,9,6.570882797241211,81\n2600,1,1,10,28,,9,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,429,0,34,57,4,0,12,6.06145715713501,144\n2602,1,1,13,24,10,11,86498,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,435,0,26,,6,1,5,6.075345993041992,25\n2603,1,1,13,26,,7,93751,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,875,0,30,102,1,1,7,6.774223804473877,49\n2604,1,1,14,33,,11,127041,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,424,0,29,103,5,0,13,6.049733638763428,169\n2605,1,1,12,25,,11,86498,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,375,0,34,,6,0,7,5.926926136016846,49\n2606,1,1,12,25,,,86498,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,489,0,23,,1,0,7,6.192362308502197,49\n2607,1,1,15,24,12,7,86498,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,462,0,30,102,1,0,3,6.135564804077148,9\n2608,1,1,12,34,8,,577458,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,340,0,33,,1,0,16,5.828945636749268,256\n2610,1,1,12,30,,12,501027,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,1,581,0,45,,1,0,12,6.364750862121582,144\n2611,1,1,12,27,7,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,515,0,34,88,1,1,9,6.244166851043701,81\n2612,1,1,12,25,7,12,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1053,0,32,88,1,1,7,6.9593987464904785,49\n2613,1,1,12,30,10,11,610438,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,475,0,26,,1,1,12,6.1633148193359375,144\n2618,1,1,18,32,14,9,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1502,0,53,132,1,1,8,7.3145527839660645,64\n2619,1,1,15,33,12,14,411911,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,962,0,45,110,4,1,12,6.869014263153076,144\n2620,1,1,15,30,14,18,134296,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,230,0,32,90,4,1,9,5.438079357147217,81\n2621,1,1,18,29,14,18,134296,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,750,0,28,96,1,1,5,6.620073318481445,25\n2622,1,1,15,26,12,12,88672,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,225,0,29,83,1,0,5,5.41610050201416,25\n2626,1,1,13,26,12,,88672,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,331,0,32,86,1,1,7,5.802118301391602,49\n2627,1,1,11,26,,,88672,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,397,0,28,,1,0,9,5.983936309814453,81\n2628,1,1,10,34,10,,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,750,0,45,94,1,1,18,6.620073318481445,324\n2629,1,1,12,25,8,12,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,450,0,20,86,1,1,7,6.10924768447876,49\n2633,1,1,13,25,9,7,353857,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,865,0,40,110,1,1,6,6.762729644775391,36\n2634,1,1,8,24,9,10,91137,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,535,0,31,,6,1,10,6.282266616821289,100\n2636,1,1,16,27,12,8,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,846,0,29,114,1,1,5,6.7405195236206055,25\n2637,1,1,16,26,12,8,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,759,0,39,130,6,1,4,6.632001876831055,16\n2638,1,1,16,24,12,8,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,600,0,40,119,6,1,2,6.396929740905762,4\n2640,1,1,12,34,8,,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1030,0,26,94,1,1,16,6.937314033508301,256\n2642,1,1,14,32,10,8,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,876,0,52,125,1,1,12,6.775366306304932,144\n2645,1,1,12,32,,,370720,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,568,0,44,100,1,0,14,6.342121601104736,196\n2646,1,1,16,25,14,14,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,533,0,27,108,6,1,3,6.278521537780762,9\n2649,1,1,12,25,10,8,372835,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,481,0,38,,1,1,7,6.175867080688477,49\n2652,1,1,12,28,,11,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,604,1,39,83,1,1,10,6.403573989868164,100\n2657,1,1,12,27,12,12,426142,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,657,0,32,86,1,1,9,6.48768424987793,81\n2659,1,1,12,31,,12,493866,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,625,0,36,101,1,0,13,6.437751770019531,169\n2661,1,1,12,29,,10,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,280,0,16,70,1,1,11,5.63478946685791,121\n2665,1,1,10,28,8,7,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,500,0,27,75,1,0,12,6.214608192443848,144\n2666,1,1,12,26,8,7,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,535,1,24,105,1,0,8,6.282266616821289,64\n2667,1,1,10,26,,,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,818,0,28,85,1,0,10,6.706862449645996,100\n2668,1,1,10,34,,,365421,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,624,0,33,,1,0,18,6.436150550842285,324\n2669,1,1,10,28,,9,378045,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,604,0,36,89,1,0,12,6.403573989868164,144\n2670,1,1,12,31,12,12,493866,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,505,0,25,80,1,1,13,6.224558353424072,169\n2671,1,1,12,30,12,12,556697,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,750,0,20,72,1,0,12,6.620073318481445,144\n2672,1,1,12,32,11,8,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,721,0,43,,1,1,14,6.580639362335205,196\n2673,1,1,18,32,12,12,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,674,0,56,115,1,1,8,6.513230323791504,64\n2674,1,1,16,33,17,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,913,0,48,115,1,1,11,6.816735744476318,121\n2675,1,1,17,30,18,18,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,879,1,40,102,1,1,7,6.77878475189209,49\n2677,1,1,12,26,8,13,88672,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,427,1,27,,1,1,8,6.056784152984619,64\n2678,1,1,8,24,12,12,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,792,0,29,,1,1,10,6.674561500549316,100\n2679,1,1,14,29,10,10,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,327,1,44,99,4,1,9,5.7899603843688965,81\n2682,1,1,10,30,,,158714,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,313,0,39,,5,0,14,5.746203422546387,196\n2683,1,1,16,34,14,12,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,786,0,34,,1,1,12,6.666956901550293,144\n2686,1,1,18,31,14,12,122473,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,337,0,40,107,1,1,7,5.820083141326904,49\n2687,1,1,10,30,,4,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,385,0,27,66,6,1,14,5.953243255615234,196\n2689,1,1,16,27,8,8,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,529,0,47,108,5,1,5,6.270988464355469,25\n2690,1,1,10,33,,,127041,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,429,0,37,,1,0,17,6.06145715713501,289\n2691,1,1,12,27,7,7,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,984,0,36,94,2,0,9,6.891625881195068,81\n2692,1,1,12,34,3,8,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,817,0,27,93,6,0,16,6.705638885498047,256\n2695,1,1,14,32,7,8,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,745,0,,,1,0,12,6.613384246826172,144\n2697,1,1,10,24,4,0,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,345,0,31,,6,1,8,5.8435444831848145,64\n2702,1,1,14,34,,12,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,554,1,43,,1,1,14,6.317164897918701,196\n2707,1,1,13,24,6,12,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,263,0,28,85,6,1,5,5.5721540451049805,25\n2708,1,1,18,32,16,16,150139,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,745,0,40,99,1,0,8,6.613384246826172,64\n2710,1,1,17,29,13,13,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,673,0,42,,6,1,6,6.511745452880859,36\n2712,1,1,17,32,14,13,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,721,0,36,86,5,1,9,6.580639362335205,81\n2713,1,1,13,30,,11,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,438,0,34,,1,1,11,6.082219123840332,121\n2721,1,0,12,26,,12,88672,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,545,0,32,95,1,1,8,6.300786018371582,64\n2722,1,0,14,25,,12,86498,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,250,0,,114,6,1,5,5.521461009979248,25\n2723,1,0,14,27,,11,88672,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,624,0,,74,4,1,7,6.436150550842285,49\n2728,1,0,13,29,8,10,501027,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,400,0,36,,6,1,10,5.991464614868164,100\n2729,1,0,16,29,16,16,556697,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,577,0,46,128,1,1,7,6.357842445373535,49\n2730,1,0,16,25,18,18,353857,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,813,0,37,111,6,1,3,6.70073127746582,9\n2731,1,0,12,34,12,11,519712,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,625,0,38,101,4,1,16,6.437751770019531,256\n2732,1,0,14,26,12,11,362750,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,485,0,43,111,5,1,6,6.184148788452148,36\n2733,1,0,16,28,10,12,383527,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,841,0,42,92,6,1,6,6.734591484069824,36\n2734,1,0,16,27,10,12,383527,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,865,0,41,100,1,1,5,6.762729644775391,25\n2735,1,0,16,26,14,12,426142,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,325,0,48,123,1,1,4,5.783825397491455,16\n2736,1,0,14,26,9,10,88672,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,477,0,22,69,1,1,6,6.167516708374023,36\n2737,1,0,16,25,9,10,86498,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,250,0,30,79,1,1,3,5.521461009979248,9\n2739,1,0,12,24,10,9,91137,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,500,0,30,,6,1,6,6.214608192443848,36\n2740,0,0,13,25,8,10,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,515,1,31,106,6,1,6,6.244166851043701,36\n2741,0,0,18,28,,5,383527,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,256,0,27,106,6,1,4,5.545177459716797,16\n2742,0,0,13,24,,5,372835,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,718,0,40,115,6,1,5,6.576469421386719,25\n2743,0,0,18,30,17,13,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,796,0,42,,1,1,6,6.679599285125732,36\n2744,0,0,12,25,10,12,367506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,750,0,31,108,1,0,7,6.620073318481445,49\n2745,0,0,12,24,10,11,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,419,0,26,,4,0,6,6.03787088394165,36\n2747,0,0,12,26,,,88672,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,431,0,22,69,1,0,8,6.066108226776123,64\n2748,0,0,12,25,,,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,425,0,27,86,1,0,7,6.052089214324951,49\n2749,0,0,12,31,10,11,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,220,0,29,76,6,1,13,5.393627643585205,169\n2750,0,0,13,29,9,9,134296,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,685,1,40,115,1,1,10,6.5294189453125,100\n2751,0,0,15,34,14,12,365421,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,500,0,44,104,1,0,13,6.214608192443848,169\n2754,0,0,16,26,10,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,551,0,37,115,6,0,4,6.311734676361084,16\n2755,0,0,11,25,12,12,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,700,0,26,93,1,0,8,6.551080226898193,64\n2757,0,1,12,32,8,8,411911,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,707,0,39,91,1,1,14,6.561030864715576,196\n2761,1,1,17,28,18,14,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,523,0,38,125,1,1,5,6.259581565856934,25\n2762,1,1,12,24,0,3,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,433,0,26,,1,0,6,6.070737838745117,36\n2763,1,1,14,25,5,4,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,462,1,22,89,1,1,5,6.135564804077148,25\n2764,1,1,12,24,5,4,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,397,0,16,,1,1,6,5.983936309814453,36\n2765,1,1,15,26,9,5,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,400,1,26,92,1,1,5,5.991464614868164,25\n2768,1,1,18,28,14,8,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,872,0,28,127,4,1,4,6.770789623260498,16\n2769,1,1,12,26,7,10,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,378,0,38,80,1,1,8,5.93489408493042,64\n2770,1,1,12,27,5,8,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,364,0,24,,1,1,9,5.897153854370117,81\n2772,1,1,15,31,12,10,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,962,0,44,,1,1,10,6.869014263153076,100\n2776,1,1,15,30,12,15,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,801,0,36,112,4,1,9,6.685861110687256,81\n2780,1,1,5,32,0,4,730842,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,400,0,12,,1,0,21,5.991464614868164,441\n2783,1,1,13,29,,12,134296,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,540,0,29,,4,0,10,6.291569232940674,100\n2785,1,1,10,30,9,9,556697,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,450,0,35,90,1,0,14,6.10924768447876,196\n2787,1,1,15,27,,16,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,438,0,34,,4,1,6,6.082219123840332,36\n2790,1,1,12,26,4,9,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,360,0,23,84,5,0,8,5.886104106903076,64\n2791,0,1,12,27,12,12,383527,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,1,529,0,30,,1,0,9,6.270988464355469,81\n2792,0,1,12,26,,,88672,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,721,0,43,120,1,0,8,6.580639362335205,64\n2793,0,1,2,31,,10,556697,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,345,0,31,,5,0,23,5.8435444831848145,529\n2794,0,1,11,27,,,426142,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,1052,0,41,,1,1,10,6.95844841003418,100\n2796,0,1,16,28,16,,383527,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,726,0,44,106,6,0,6,6.587550163269043,36\n2798,0,1,12,33,,,519712,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,543,0,24,76,5,0,15,6.297109127044678,225\n2799,0,1,16,33,8,6,370720,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,1202,0,48,115,1,0,11,7.091742038726807,121\n2803,0,1,16,24,,12,414261,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,400,0,33,,1,0,2,5.991464614868164,4\n2805,0,1,9,32,,,127041,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,375,0,32,89,1,0,17,5.926926136016846,289\n2806,1,1,11,30,,,158714,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,281,0,29,,1,0,13,5.638354778289795,169\n2809,1,1,12,24,,10,86498,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,127,0,24,,5,0,6,4.844187259674072,36\n2810,1,1,12,32,,7,127041,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,1393,0,39,102,6,1,14,7.239214897155762,196\n2813,1,1,12,30,10,9,501027,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,649,0,47,104,1,1,12,6.475432872772217,144\n2815,1,1,16,31,11,8,556697,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,420,0,37,,5,0,9,6.040254592895508,81\n2816,1,1,16,27,11,8,426142,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,455,0,40,122,1,0,5,6.120297431945801,25\n2818,1,1,12,25,9,6,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,661,0,23,107,1,0,7,6.493753910064697,49\n2819,0,1,12,24,12,8,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,380,0,30,,1,0,6,5.940171241760254,36\n2820,0,1,10,34,,,577458,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,315,0,26,,4,0,18,5.752572536468506,324\n2821,0,1,14,24,,,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,452,0,41,,1,1,4,6.113682270050049,16\n2822,0,1,12,28,12,12,426142,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,625,0,42,100,1,1,10,6.437751770019531,100\n2823,0,1,14,24,8,,367506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,601,1,30,,6,1,4,6.398594856262207,16\n2825,0,1,13,27,7,12,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,499,0,32,100,1,1,8,6.212605953216553,64\n2827,0,0,8,31,8,10,548740,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,693,0,24,,1,0,17,6.541029930114746,289\n2828,0,1,18,32,15,15,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,535,0,40,129,1,1,8,6.282266616821289,64\n2831,0,1,7,26,1,8,375674,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,465,0,24,,1,0,13,6.142037391662598,169\n2832,0,1,12,24,,9,365200,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,400,0,32,,1,1,6,5.991464614868164,36\n2833,0,1,18,27,17,16,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,368,0,40,129,1,1,3,5.908082962036133,9\n2835,0,1,8,25,4,5,365200,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,700,0,22,,1,1,11,6.551080226898193,121\n2839,0,1,16,31,16,12,981534,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,962,0,39,112,1,0,9,6.869014263153076,81\n2840,0,1,6,24,,8,365200,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,365,0,13,,1,1,12,5.899897575378418,144\n2841,0,1,9,33,7,3,363128,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,475,0,35,,6,0,18,6.1633148193359375,324\n2843,0,1,12,24,7,3,365200,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,200,0,15,,1,0,6,5.2983174324035645,36\n2844,0,1,9,24,,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,600,0,23,,1,1,9,6.396929740905762,81\n2846,0,1,12,27,8,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,505,0,17,76,6,1,9,6.224558353424072,81\n2852,0,1,16,31,12,12,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,577,0,36,82,1,1,9,6.357842445373535,81\n2853,0,1,12,24,6,12,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,457,0,20,,6,1,6,6.124683380126953,36\n2854,0,1,12,34,,,104904,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,750,0,45,97,5,1,16,6.620073318481445,256\n2855,0,1,11,32,2,11,104904,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,577,0,38,98,1,1,15,6.357842445373535,225\n2857,0,1,15,24,17,16,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,289,1,34,124,6,1,3,5.666426658630371,9\n2859,0,1,12,25,15,9,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,224,0,31,,1,0,7,5.411645889282227,49\n2860,0,1,10,24,15,9,86498,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,363,0,,,6,0,8,5.894402980804443,64\n2861,0,1,10,26,,8,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,229,0,25,,5,0,10,5.433722019195557,100\n2862,0,1,9,26,2,9,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,234,0,20,81,5,0,11,5.455321311950684,121\n2863,0,1,14,24,,7,86507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,465,0,,,1,0,4,6.142037391662598,16\n2868,0,1,16,27,,,426142,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,2083,0,34,60,4,1,5,7.64156436920166,25\n2869,0,1,15,31,12,12,549394,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,427,1,44,,1,1,10,6.056784152984619,100\n2871,0,1,12,33,8,9,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,678,1,44,100,4,1,15,6.5191473960876465,225\n2872,0,1,13,27,18,16,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,313,1,30,84,6,1,8,5.746203422546387,64\n2873,0,1,18,28,7,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,601,0,45,132,1,0,4,6.398594856262207,16\n2874,0,1,10,33,6,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,500,0,35,96,1,0,17,6.214608192443848,289\n2875,0,1,12,28,6,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,375,0,35,100,6,0,10,5.926926136016846,100\n2877,0,1,12,34,2,6,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,550,0,30,109,1,0,16,6.309918403625488,256\n2880,0,1,17,28,,12,78509,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,702,1,41,,1,1,5,6.553933620452881,25\n2882,0,1,16,33,,14,132931,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,625,0,34,84,1,1,11,6.437751770019531,121\n2883,0,1,14,34,,6,112480,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,423,0,31,90,1,0,14,6.047372341156006,196\n2884,0,1,11,28,,8,78509,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,355,0,28,,1,0,11,5.87211799621582,121\n2885,0,1,12,26,9,12,438085,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,519,0,30,98,6,1,8,6.251904010772705,64\n2886,0,1,14,24,9,12,425871,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,359,0,40,120,1,1,4,5.883322238922119,16\n2888,0,1,11,27,,7,78509,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,349,0,26,63,1,0,10,5.855072021484375,100\n2889,0,1,12,31,6,5,118905,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,293,0,29,,1,0,13,5.680172443389893,169\n2890,0,1,18,28,,5,78509,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,443,0,40,100,1,1,4,6.093569755554199,16\n2891,0,1,6,34,6,6,112480,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,270,0,20,,1,0,22,5.598422050476074,484\n2892,0,1,14,28,16,13,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,385,0,36,110,1,1,8,5.953243255615234,64\n2895,0,1,12,27,,12,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,438,0,43,83,1,0,9,6.082219123840332,81\n2897,0,1,11,30,,,572299,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,417,0,38,88,1,1,13,6.03308629989624,169\n2901,0,1,11,31,6,,572299,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,481,0,41,98,1,0,14,6.175867080688477,196\n2903,0,1,16,30,16,12,110376,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,596,1,49,113,1,1,8,6.390240669250488,64\n2905,0,1,12,28,3,8,95822,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,600,0,22,103,1,0,10,6.396929740905762,100\n2908,0,1,14,27,,9,77507,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,250,0,19,,6,0,7,5.521461009979248,49\n2909,0,1,12,31,6,10,117386,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,531,0,18,97,1,0,13,6.274762153625488,169\n2910,0,1,12,26,6,10,77507,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,591,0,17,,1,0,8,6.3818159103393555,64\n2911,0,1,12,33,,,111044,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,503,0,32,76,1,0,15,6.220590114593506,225\n2912,0,1,11,25,,9,89353,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,1,475,0,27,,1,0,8,6.1633148193359375,64\n2913,1,1,16,31,12,12,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1374,0,44,126,4,1,9,7.2254815101623535,81\n2916,1,1,17,24,17,12,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,325,1,49,,6,1,1,5.783825397491455,1\n2917,1,1,14,25,6,12,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,577,1,,108,1,0,5,6.357842445373535,25\n2918,1,1,12,25,,11,372835,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,702,0,44,127,1,1,7,6.553933620452881,49\n2921,1,1,16,25,16,14,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,444,0,32,112,6,1,3,6.095824718475342,9\n2922,1,1,13,27,12,12,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,560,0,29,99,5,1,8,6.32793664932251,64\n2925,1,1,13,32,8,8,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,962,0,39,94,1,1,13,6.869014263153076,169\n2926,1,1,12,26,,7,383527,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,310,0,28,,6,1,8,5.736572265625,64\n2927,1,1,17,33,16,16,741440,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1269,1,48,127,1,1,10,7.145984649658203,100\n2928,1,1,16,28,16,16,767055,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,500,0,48,97,5,1,6,6.214608192443848,36\n2929,1,1,16,30,16,16,1002054,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,583,1,52,114,6,1,8,6.368186950683594,64\n2930,1,1,17,25,16,16,745670,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,112,1,33,116,6,1,2,4.718498706817627,4\n2931,1,1,14,33,13,12,730842,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,673,0,45,125,1,1,13,6.511745452880859,169\n2932,1,1,17,29,14,12,987731,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1923,1,43,104,1,1,6,7.561641693115234,36\n2936,1,1,14,24,12,12,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,400,0,27,,6,1,4,5.991464614868164,16\n2937,1,1,12,25,12,12,86498,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,460,0,27,99,1,1,7,6.131226539611816,49\n2939,1,1,12,30,,12,134296,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,245,0,,,6,0,12,5.501258373260498,144\n2943,1,1,16,27,12,12,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,315,0,44,127,1,0,5,5.752572536468506,25\n2945,1,1,14,26,8,10,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,641,0,37,103,1,1,6,6.463029384613037,36\n2946,1,1,12,25,8,10,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,750,0,23,98,1,1,7,6.620073318481445,49\n2948,1,1,17,25,18,18,367506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,308,1,35,,1,1,2,5.730099678039551,4\n2950,1,1,17,29,18,16,493866,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,350,1,42,137,1,1,6,5.857933044433594,36\n2951,1,1,18,27,18,16,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,462,0,32,137,5,1,3,6.135564804077148,9\n2953,1,1,15,34,12,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,1154,0,51,103,1,0,13,7.050989627838135,169\n2954,1,1,16,34,12,12,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1748,0,44,111,1,1,12,7.4662275314331055,144\n2956,1,1,17,33,15,12,411911,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,769,0,51,115,1,1,10,6.6450910568237305,100\n2957,0,1,15,29,12,11,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,730,0,42,109,1,1,8,6.593044757843018,64\n2961,0,1,18,30,13,17,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,736,0,49,107,1,1,6,6.601230144500732,36\n2962,0,1,16,25,14,13,425871,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,500,0,34,128,1,1,3,6.214608192443848,9\n2963,0,1,16,24,12,12,425871,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,365,0,36,123,4,1,2,5.899897575378418,4\n2965,0,1,13,24,3,3,405778,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,333,1,25,91,1,1,5,5.80814266204834,25\n2966,0,1,12,33,4,8,363128,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,721,0,40,,1,0,15,6.580639362335205,225\n2967,0,1,12,27,3,3,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,375,0,21,89,1,1,9,5.926926136016846,81\n2968,0,1,12,26,9,5,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,250,0,31,,1,0,8,5.521461009979248,64\n2971,0,1,17,30,4,8,451538,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,361,1,34,87,1,1,7,5.888877868652344,49\n2972,0,0,7,32,,4,423456,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,283,0,28,,1,0,19,5.64544677734375,361\n2975,0,0,12,34,,18,846911,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,415,0,37,,1,0,16,6.028278350830078,256\n2978,0,0,16,27,8,11,345645,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,522,1,38,101,1,1,5,6.257667541503906,25\n2979,0,0,12,33,11,11,334102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,706,0,33,90,1,1,15,6.559615135192871,225\n2981,0,0,16,26,10,11,345645,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,409,1,41,104,1,1,4,6.0137152671813965,16\n2982,0,0,12,24,7,12,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,416,0,39,105,1,1,6,6.0306854248046875,36\n2984,0,0,12,30,,8,451538,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,786,0,27,100,6,1,12,6.666956901550293,144\n2986,0,0,16,27,12,16,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,577,0,40,111,1,1,5,6.357842445373535,25\n2987,0,0,16,24,16,12,104102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,478,0,39,95,1,1,2,6.169610500335693,4\n2988,0,0,17,27,13,16,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,625,0,44,125,6,1,4,6.437751770019531,16\n2989,0,0,17,24,12,16,104102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,505,0,35,95,4,1,1,6.224558353424072,1\n2990,0,0,12,32,1,8,363128,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,287,0,37,,1,1,14,5.659482002258301,196\n2991,0,0,12,24,6,8,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,500,0,24,,1,1,6,6.214608192443848,36\n2992,0,0,8,27,7,8,384050,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,500,0,34,,4,0,13,6.214608192443848,169\n2993,0,0,12,27,7,12,345645,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,350,0,22,,1,1,9,5.857933044433594,81\n2996,0,0,13,24,12,11,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,462,0,34,,1,0,5,6.135564804077148,25\n2998,0,0,13,30,6,1,480216,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,548,0,29,,6,0,11,6.306275367736816,121\n2999,0,0,12,28,6,3,317074,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,255,0,32,,1,0,10,5.541263580322266,100\n3001,0,0,13,24,4,1,309300,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,524,0,26,,6,0,5,6.261491775512695,25\n3002,0,0,12,33,5,9,454271,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,292,0,29,,1,0,15,5.676753997802734,225\n3004,0,0,14,28,7,7,375674,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,375,0,24,,1,0,8,5.926926136016846,64\n3008,0,0,18,32,7,11,363128,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,529,0,38,,6,1,8,6.270988464355469,64\n3012,0,0,16,25,10,12,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,909,0,20,124,6,0,3,6.812345027923584,9\n3013,0,0,9,28,,7,375674,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,353,0,30,,1,0,13,5.8664679527282715,169\n3018,0,0,14,28,12,12,375674,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1155,0,41,107,1,1,8,7.051855564117432,64\n3021,0,0,8,34,,,403476,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,250,0,22,,4,0,20,5.521461009979248,400\n3022,0,0,13,28,12,12,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,781,1,35,107,1,1,9,6.660574913024902,81\n3023,0,0,13,31,16,12,139895,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,416,0,45,110,6,1,12,6.0306854248046875,144\n3029,0,1,13,29,7,11,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,364,1,30,80,1,0,10,5.897153854370117,100\n3030,0,1,13,27,,11,78509,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,375,1,27,91,1,0,8,5.926926136016846,64\n3032,0,1,15,24,7,11,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,375,1,29,,1,0,3,5.926926136016846,9\n3033,0,1,16,28,,5,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,358,1,26,96,1,,6,5.880533218383789,36\n3034,0,1,7,31,,2,140524,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,16,,2,0,18,5.703782558441162,324\n3036,0,1,14,25,16,16,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,528,0,32,102,1,1,5,6.269096374511719,25\n3037,0,1,12,34,,,88765,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,299,0,26,93,6,0,16,5.700443744659424,256\n3038,0,1,8,32,0,8,454271,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,450,0,33,,1,0,18,6.10924768447876,324\n3039,0,1,14,25,6,10,309300,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,540,1,20,,1,0,5,6.291569232940674,25\n3040,0,1,8,29,1,6,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,528,0,26,,1,0,15,6.269096374511719,225\n3042,0,1,12,30,,12,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,769,0,36,81,1,1,12,6.6450910568237305,144\n3043,0,1,12,26,5,8,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,198,0,32,,6,0,8,5.288267135620117,64\n3047,0,1,12,24,2,3,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,400,0,22,,6,0,6,5.991464614868164,36\n3048,0,1,12,28,,6,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,753,0,26,,6,0,10,6.624065399169922,100\n3049,0,1,12,24,,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,445,1,20,,6,0,6,6.098074436187744,36\n3050,0,1,9,30,3,5,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,240,0,18,,1,0,15,5.4806389808654785,225\n3052,0,1,3,25,,5,75607,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,167,0,6,,1,0,16,5.1179938316345215,256\n3059,0,1,12,24,9,7,89271,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,445,0,36,,1,0,6,6.098074436187744,36\n3060,0,1,10,26,3,4,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,8,,1,0,10,5.521461009979248,100\n3061,0,1,12,26,10,12,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,475,0,36,99,1,0,8,6.1633148193359375,64\n3062,0,1,16,28,16,16,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,400,0,42,122,1,1,6,5.991464614868164,36\n3063,0,1,18,24,16,16,82135,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,398,0,38,94,6,1,0,5.986452102661133,0\n3064,0,1,12,25,3,5,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,350,0,24,,1,1,7,5.857933044433594,49\n3065,0,1,12,33,,,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,523,0,26,93,1,0,15,6.259581565856934,225\n3066,0,1,10,31,4,8,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,270,0,31,,1,0,15,5.598422050476074,225\n3067,0,1,9,30,,1,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,310,0,20,,1,0,15,5.736572265625,225\n3071,0,1,6,31,,,117386,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,,,2,0,19,5.703782558441162,361\n3072,0,1,12,28,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,32,69,1,0,10,5.783825397491455,100\n3074,0,1,12,24,18,12,367506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,900,0,28,,1,0,6,6.802394866943359,36\n3077,0,0,13,26,12,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,750,0,35,102,1,0,7,6.620073318481445,49\n3079,0,0,8,26,,6,77507,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,285,0,12,,1,0,12,5.652489185333252,144\n3081,0,0,12,24,12,12,82135,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,278,0,10,,1,0,6,5.627621173858643,36\n3082,0,0,13,29,13,10,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,500,0,29,,1,1,10,6.214608192443848,100\n3084,0,0,8,30,5,8,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,700,0,28,,1,0,16,6.551080226898193,256\n3085,0,0,9,26,5,8,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,300,0,16,,1,0,11,5.703782558441162,121\n3086,0,0,8,34,5,8,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,392,0,36,,1,0,20,5.971261978149414,400\n3088,0,0,12,34,5,12,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,511,0,44,95,1,0,16,6.236369609832764,256\n3089,0,0,16,31,8,11,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,624,0,37,98,6,1,9,6.436150550842285,81\n3090,0,0,12,27,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,244,0,28,84,1,0,9,5.497168064117432,81\n3091,0,0,12,27,7,,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,363,0,30,88,1,1,9,5.894402980804443,81\n3097,0,0,16,27,,4,84491,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,606,0,41,109,5,1,5,6.406879901885986,25\n3098,0,0,12,25,,9,851743,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,760,0,32,115,1,1,7,6.6333184242248535,49\n3104,0,0,14,31,12,12,130444,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,385,0,37,105,1,1,11,5.953243255615234,121\n3109,0,0,12,32,8,8,454271,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,495,0,27,,1,0,14,6.2045578956604,196\n3110,0,0,16,27,8,10,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,828,1,38,90,1,1,5,6.719013214111328,25\n3111,0,0,12,25,,12,425871,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,404,0,28,92,1,1,7,6.001414775848389,49\n3112,0,0,15,27,10,12,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,267,0,27,113,6,1,6,5.587248802185059,36\n3114,0,0,12,34,5,8,423456,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,440,0,41,82,1,0,16,6.086774826049805,256\n3116,0,0,14,28,,12,438085,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,375,0,22,105,6,1,8,5.926926136016846,64\n3117,0,0,10,24,2,8,336009,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,301,0,22,,1,1,8,5.707110404968262,64\n3118,0,0,12,34,8,12,363128,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,658,0,36,95,1,1,16,6.4892048835754395,256\n3119,0,0,15,24,7,10,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,514,0,33,92,4,1,3,6.242223262786865,9\n3120,0,0,12,26,,7,78509,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,300,0,25,,6,0,8,5.703782558441162,64\n3122,0,0,12,26,10,7,78509,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,1,0,230,0,24,,6,0,8,5.438079357147217,64\n3126,0,0,10,31,,,118905,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,260,0,12,,6,0,15,5.5606818199157715,225\n3127,0,0,12,24,8,9,76585,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,1,0,305,0,16,,1,1,6,5.720311641693115,36\n3128,0,0,8,31,0,0,122798,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,430,0,21,,1,0,17,6.063785076141357,289\n3129,0,0,8,24,0,0,79093,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,260,0,12,,1,1,10,5.5606818199157715,100\n3130,0,0,16,24,12,12,89271,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,577,0,36,140,6,1,2,6.357842445373535,4\n3132,0,0,11,29,4,2,117386,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,425,0,19,,1,1,12,6.052089214324951,144\n3133,0,0,12,25,4,2,79093,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,315,0,24,,1,0,7,5.752572536468506,49\n3134,0,0,13,29,7,10,119965,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,375,1,33,85,1,0,10,5.926926136016846,100\n3135,0,0,9,33,1,2,111044,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,500,0,23,,1,0,18,6.214608192443848,324\n3136,0,0,12,25,1,6,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,500,0,30,116,4,0,7,6.214608192443848,49\n3137,0,0,12,32,3,1,111044,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,350,0,24,85,1,0,14,5.857933044433594,196\n3138,0,0,10,29,3,1,117386,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,525,0,20,85,1,1,13,6.263398170471191,169\n3139,0,0,17,26,13,12,84491,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,500,0,37,,1,1,3,6.214608192443848,9\n3140,0,0,16,25,13,12,82135,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,385,0,21,122,1,1,3,5.953243255615234,9\n3142,0,1,9,25,12,8,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,100,0,25,,1,1,10,4.605170249938965,100\n3143,0,1,15,26,6,7,88672,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,300,0,26,74,1,1,5,5.703782558441162,25\n3144,0,1,12,24,6,7,86498,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,188,0,24,,6,1,6,5.2364420890808105,36\n3145,0,1,8,33,,3,127041,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,355,0,19,,1,1,19,5.87211799621582,361\n3147,0,1,12,25,4,4,86507,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,267,0,19,110,1,0,7,5.587248802185059,49\n3149,0,1,12,28,6,7,88681,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,267,0,30,,1,0,10,5.587248802185059,100\n3150,0,1,12,34,8,8,370720,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,586,0,38,,1,1,16,6.373319625854492,256\n3151,0,1,12,24,,5,76585,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,375,0,27,,4,1,6,5.926926136016846,36\n3154,0,1,12,31,,,118905,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,346,0,27,,5,0,13,5.846438884735107,169\n3157,0,1,16,28,14,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,545,0,43,123,1,1,6,6.300786018371582,36\n3158,0,1,14,25,14,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,562,0,31,122,1,1,5,6.3315019607543945,25\n3159,0,1,12,26,12,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,577,0,24,86,1,1,8,6.357842445373535,64\n3163,0,1,15,26,10,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,890,0,30,80,1,1,5,6.791221618652344,25\n3166,0,1,13,26,6,,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,625,0,30,96,1,0,7,6.437751770019531,49\n3168,0,1,13,26,6,12,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,416,0,31,112,6,1,7,6.0306854248046875,49\n3169,0,1,6,31,4,,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,683,0,28,,1,0,19,6.526494979858398,361\n3171,1,0,11,30,,9,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,625,0,20,,1,1,13,6.437751770019531,169\n3172,1,0,9,27,,,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,310,0,34,,6,0,12,5.736572265625,144\n3173,1,0,12,28,,,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,664,0,16,77,1,1,10,6.498281955718994,100\n3177,1,0,11,32,,,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,286,0,22,92,1,0,15,5.655992031097412,225\n3179,1,0,12,26,,,78509,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,600,0,36,,1,0,8,6.396929740905762,64\n3182,1,0,16,29,12,12,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,742,0,37,89,5,0,7,6.609349250793457,49\n3185,1,0,11,27,2,5,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,225,0,28,,6,0,10,5.41610050201416,100\n3186,1,0,12,34,,8,103511,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,623,0,41,87,1,0,16,6.43454647064209,256\n3187,1,0,12,24,,8,104102,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,603,0,29,,6,1,6,6.401916980743408,36\n3188,1,0,12,29,11,10,165331,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,550,0,39,95,1,0,11,6.309918403625488,121\n3192,1,0,16,27,10,12,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,801,0,39,117,1,0,5,6.685861110687256,25\n3195,0,1,14,30,12,12,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,330,0,40,67,1,1,10,5.799092769622803,100\n3196,0,1,16,34,4,12,470506,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,684,0,50,112,1,1,12,6.527957916259766,144\n3197,0,1,15,29,18,12,635888,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1000,0,41,119,6,1,8,6.907755374908447,64\n3198,0,1,16,30,,,139895,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1091,0,30,103,6,0,8,6.994850158691406,64\n3199,0,1,13,24,,10,90509,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,476,0,23,,4,0,5,6.165417671203613,25\n3200,0,1,12,24,,3,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,500,0,30,,6,1,6,6.214608192443848,36\n3201,0,1,14,25,6,10,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,950,0,31,,1,1,5,6.856462001800537,25\n3202,0,1,18,30,14,12,140524,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1142,0,36,,1,1,6,7.040536403656006,36\n3203,0,1,12,32,,9,460147,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,450,0,29,74,1,1,14,6.10924768447876,196\n3204,0,1,12,25,7,12,851743,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,1,448,1,32,,1,1,7,6.104793071746826,49\n3206,0,1,16,27,12,12,107087,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,361,0,35,112,6,1,5,5.888877868652344,25\n3207,0,1,13,24,12,12,104102,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,535,0,19,,1,1,5,6.282266616821289,25\n3210,0,1,17,25,6,8,336009,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,616,0,21,102,1,1,2,6.42324686050415,4\n3211,0,1,14,24,17,14,405778,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,490,0,34,,6,1,4,6.194405555725098,16\n3212,0,1,12,26,8,9,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,415,0,24,95,1,1,8,6.028278350830078,64\n3216,1,0,13,24,,9,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,250,0,21,,6,0,5,5.521461009979248,25\n3220,1,0,13,28,9,6,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,500,0,33,81,1,1,9,6.214608192443848,81\n3221,1,0,18,28,10,10,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1155,0,48,124,1,0,4,7.051855564117432,16\n3222,1,0,12,32,8,7,470506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,525,0,38,89,1,0,14,6.263398170471191,196\n3224,1,0,11,24,,12,425871,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,300,0,23,,1,1,7,5.703782558441162,49\n3225,1,0,9,26,8,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,308,0,14,,1,0,11,5.730099678039551,121\n3226,1,0,8,29,8,12,572299,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,625,0,30,91,1,0,15,6.437751770019531,225\n3227,1,0,13,24,8,7,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,350,1,35,117,6,1,5,5.857933044433594,25\n3228,1,0,16,30,7,11,572299,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,673,0,46,109,1,1,8,6.511745452880859,64\n3229,1,0,13,28,,7,486761,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,558,1,26,,1,0,9,6.324358940124512,81\n3232,1,0,12,28,6,7,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,351,0,34,88,1,1,10,5.860786437988281,100\n3233,1,0,12,28,5,9,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,723,0,31,67,1,0,10,6.583409309387207,100\n3234,1,0,15,27,9,12,317074,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,569,1,32,81,1,1,6,6.343880653381348,36\n3235,1,0,11,25,6,12,626601,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,240,0,35,81,6,1,8,5.4806389808654785,64\n3236,1,0,8,32,7,4,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,450,0,34,,1,0,18,6.10924768447876,324\n3237,1,0,11,33,3,3,131234,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,338,0,39,,1,1,16,5.82304573059082,256\n3238,1,0,10,29,0,7,138729,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,288,0,23,,1,0,13,5.662960529327393,169\n3242,0,1,17,24,12,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,413,0,31,119,1,1,1,6.023447513580322,1\n3244,0,1,12,29,8,12,635888,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,848,0,28,83,1,1,11,6.742880821228027,121\n3245,0,1,16,32,7,16,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,874,0,38,101,1,1,10,6.773080348968506,100\n3247,0,1,11,29,12,,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,295,0,27,,1,1,12,5.686975479125977,144\n3248,0,1,8,26,,,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,12,,4,0,12,5.703782558441162,144\n3252,0,1,16,26,9,12,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,289,0,41,,1,1,4,5.666426658630371,16\n3256,0,1,9,29,6,14,140524,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,298,0,19,,2,0,14,5.697093486785889,196\n3257,0,1,5,32,2,5,132931,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,361,0,14,,1,0,21,5.888877868652344,441\n3261,0,1,12,30,,,118905,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,1097,0,23,,1,0,12,7.0003342628479,144\n3262,0,1,16,33,,8,112480,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,465,0,23,,1,1,11,6.142037391662598,121\n3263,0,1,14,27,,8,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,265,0,27,75,1,1,7,5.579730033874512,49\n3265,0,1,16,30,12,12,490767,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,839,0,43,109,1,1,8,6.732210636138916,64\n3266,0,1,16,31,8,14,545297,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,577,1,45,111,1,1,9,6.357842445373535,81\n3267,0,1,10,27,5,5,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,225,0,13,,1,0,11,5.41610050201416,121\n3268,0,1,12,25,5,5,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,235,0,18,,1,0,7,5.459585666656494,49\n3269,0,1,12,26,2,8,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,250,0,17,,1,0,8,5.521461009979248,64\n3272,0,1,12,28,4,1,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,196,0,44,104,1,0,10,5.2781147956848145,100\n3274,0,1,12,32,0,4,137285,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,475,0,25,72,1,0,14,6.1633148193359375,196\n3277,0,1,11,26,7,4,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,500,0,32,87,4,1,9,6.214608192443848,81\n3278,0,1,8,29,,1,480216,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,334,0,20,,1,0,15,5.811141014099121,225\n3279,0,1,10,27,,1,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,454,0,26,,4,0,11,6.118097305297852,121\n3280,0,1,16,25,16,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,945,0,41,106,1,1,3,6.851184844970703,9\n3281,0,1,13,24,8,16,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,291,0,25,,1,1,5,5.673323154449463,25\n3282,0,1,16,27,8,10,375674,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,520,1,49,118,6,1,5,6.253829002380371,25\n3283,0,1,15,28,5,11,417415,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,474,0,30,103,1,0,7,6.16120719909668,49\n3284,0,1,8,32,8,6,363128,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,296,0,36,,1,0,18,5.690359592437744,324\n3286,0,1,12,33,3,,363128,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,420,0,28,,1,1,15,6.040254592895508,225\n3287,0,1,12,26,,,345645,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,519,0,28,95,1,1,8,6.251904010772705,64\n3289,0,1,12,32,8,8,363128,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,316,0,32,,1,0,14,5.755742073059082,196\n3290,0,1,12,28,8,6,751347,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,375,0,40,91,4,1,10,5.926926136016846,100\n3291,0,1,13,25,8,8,618601,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,550,0,28,,1,0,6,6.309918403625488,36\n3292,0,1,8,33,,,334102,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,944,0,36,,1,0,19,6.850126266479492,361\n3293,0,1,16,27,12,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,475,0,34,101,1,1,5,6.1633148193359375,25\n3294,0,1,16,27,11,12,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,393,0,37,121,1,1,5,5.973809719085693,25\n3298,0,1,11,24,12,10,414261,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,750,0,37,,6,1,7,6.620073318481445,49\n3302,0,1,13,28,3,3,378045,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,492,1,26,,1,0,9,6.198478698730469,81\n3305,0,1,12,28,8,8,88672,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,500,0,35,65,1,1,10,6.214608192443848,100\n3310,0,1,11,24,1,3,86498,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,268,0,14,,1,0,7,5.590987205505371,49\n3311,0,1,12,33,,12,127041,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,475,0,30,85,1,0,15,6.1633148193359375,225\n3313,1,1,12,31,,8,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,365,0,34,70,1,1,13,5.899897575378418,169\n3314,1,1,11,26,,,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,281,0,10,65,1,0,9,5.638354778289795,81\n3315,1,1,14,24,,,86498,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,250,0,22,,6,0,4,5.521461009979248,16\n3316,1,1,12,33,,6,127041,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,263,0,33,90,1,0,15,5.5721540451049805,225\n3318,1,1,18,29,11,12,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,1012,0,47,110,1,1,5,6.919683933258057,25\n3319,1,1,17,28,11,12,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,833,0,54,102,1,1,5,6.725033760070801,25\n3320,1,1,16,24,11,12,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,313,0,35,,6,1,2,5.746203422546387,4\n3322,1,1,14,32,12,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,962,0,31,,1,1,12,6.869014263153076,144\n3323,1,1,9,29,7,5,158714,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,346,0,20,67,1,0,14,5.846438884735107,196\n3326,1,1,11,25,5,,86498,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,300,0,20,68,6,0,8,5.703782558441162,64\n3327,1,1,11,32,,11,127041,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,375,0,37,88,4,1,15,5.926926136016846,225\n3328,1,1,14,24,10,8,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,500,0,34,,1,0,4,6.214608192443848,16\n3329,1,1,12,25,6,9,372835,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,346,1,22,,1,1,7,5.846438884735107,49\n3330,0,1,9,34,12,6,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,319,0,16,,1,1,19,5.765191078186035,361\n3333,0,1,11,26,12,6,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,400,0,22,,1,0,9,5.991464614868164,81\n3338,0,1,13,27,9,8,88672,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,548,0,37,,1,0,8,6.306275367736816,64\n3340,0,1,7,25,,12,86498,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,230,0,19,,6,,12,5.438079357147217,144\n3341,0,1,12,26,7,7,383527,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,418,0,34,94,1,0,8,6.0354814529418945,64\n3342,0,1,13,29,11,10,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,527,1,43,,1,0,10,6.267200469970703,100\n3345,0,1,10,33,8,12,812047,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,865,0,38,97,1,0,17,6.762729644775391,289\n3346,0,1,13,34,,6,812047,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,519,0,41,98,1,0,15,6.251904010772705,225\n3348,0,1,11,29,8,8,493866,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,335,0,30,,6,0,12,5.8141303062438965,144\n3349,0,1,13,33,,12,406024,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,865,0,48,101,1,0,14,6.762729644775391,196\n3351,0,1,8,27,7,,378045,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,520,0,33,,1,0,13,6.253829002380371,169\n3352,0,1,17,27,16,12,383527,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,855,0,38,115,1,1,4,6.751101493835449,16\n3353,0,1,12,24,6,9,372835,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,316,0,32,,1,0,6,5.755742073059082,36\n3355,0,1,18,33,18,17,370720,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,831,0,44,122,1,1,9,6.722630023956299,81\n3356,0,1,16,31,18,17,501027,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,875,0,38,117,1,1,9,6.774223804473877,81\n3357,0,1,14,33,4,8,370720,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1374,0,45,105,1,1,13,7.2254815101623535,169\n3358,1,1,16,34,,8,365421,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,451,0,36,113,6,0,12,6.111467361450195,144\n3360,1,1,18,34,12,17,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,684,0,44,101,1,1,10,6.527957916259766,100\n3361,1,1,13,28,,12,383527,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,435,1,39,,4,0,9,6.075345993041992,81\n3362,1,1,13,32,12,12,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,913,0,36,113,1,1,13,6.816735744476318,169\n3363,1,1,13,33,,12,1112160,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,855,0,31,88,1,1,14,6.751101493835449,196\n3364,1,1,10,34,,10,1112160,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,600,0,25,,1,0,18,6.396929740905762,324\n3365,1,1,12,28,,,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,256,0,22,,6,0,10,5.545177459716797,100\n3366,1,1,12,29,,12,134296,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,375,0,41,93,6,1,11,5.926926136016846,121\n3367,1,1,16,27,,5,104794,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,441,0,29,117,1,1,5,6.08904504776001,25\n3368,1,1,13,25,,5,102225,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,405,0,29,,1,1,6,6.003887176513672,36\n3369,1,1,12,32,,7,127041,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,410,0,39,83,5,1,14,6.016157150268555,196\n3370,1,1,15,27,15,12,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,300,1,35,103,6,1,6,5.703782558441162,36\n3371,1,1,16,26,14,16,378045,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,693,0,27,113,1,1,4,6.541029930114746,16\n3373,1,1,18,30,,10,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,1012,0,38,124,1,1,6,6.919683933258057,36\n3375,1,0,15,26,15,12,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,452,0,33,123,1,1,5,6.113682270050049,25\n3379,1,0,12,28,11,12,107087,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,388,0,42,,1,1,10,5.961005210876465,100\n3381,1,0,18,27,13,16,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,492,0,32,98,1,1,3,6.198478698730469,9\n3384,1,0,5,31,,,451538,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,313,0,12,,1,0,20,5.746203422546387,400\n3388,0,1,14,26,12,12,107087,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,577,0,32,107,5,1,6,6.357842445373535,36\n3389,0,1,12,24,12,12,104102,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,375,0,31,,5,1,6,5.926926136016846,36\n3395,0,1,12,33,,10,103511,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,655,0,36,114,1,1,15,6.484635353088379,225\n3396,0,1,16,26,10,11,107087,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,709,0,32,119,6,1,4,6.5638556480407715,16\n3398,0,1,14,26,3,9,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,511,0,26,82,6,0,6,6.236369609832764,36\n3400,0,1,12,34,4,1,103511,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,625,0,40,89,1,0,16,6.437751770019531,256\n3402,0,1,14,25,11,10,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,460,0,32,111,6,0,5,6.131226539611816,25\n3403,0,1,14,33,9,7,470506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,625,0,44,104,4,1,13,6.437751770019531,169\n3407,0,1,12,28,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,575,0,30,65,6,0,10,6.3543701171875,100\n3410,0,1,12,25,,8,75607,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,500,0,14,,1,0,7,6.214608192443848,49\n3411,0,1,13,27,,4,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,414,1,14,73,6,0,8,6.0258660316467285,64\n3412,0,1,13,26,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,471,1,27,77,6,0,7,6.154858112335205,49\n3413,0,1,12,29,4,3,117386,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,520,0,18,74,1,0,11,6.253829002380371,121\n3414,0,1,13,27,10,7,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,750,0,22,,1,0,8,6.620073318481445,64\n3415,0,1,12,25,4,3,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,490,0,22,77,1,0,7,6.194405555725098,49\n3423,0,1,18,31,11,12,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,425,0,38,98,1,1,7,6.052089214324951,49\n3424,0,1,12,32,,,111044,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,535,0,25,75,1,0,14,6.282266616821289,196\n3426,0,0,13,26,12,12,486761,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,745,0,28,97,1,1,7,6.613384246826172,49\n3427,0,0,12,24,12,12,473190,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,400,0,42,,1,1,6,5.991464614868164,36\n3428,0,0,12,28,16,16,486761,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,320,0,27,96,1,1,10,5.7683210372924805,100\n3429,0,0,17,29,16,14,635888,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,606,0,43,99,1,1,6,6.406879901885986,36\n3433,0,0,11,24,11,4,104102,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,563,0,16,,1,1,7,6.333279609680176,49\n3435,0,0,12,27,2,6,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,325,0,35,68,1,0,9,5.783825397491455,81\n3437,0,0,13,29,12,12,141777,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,821,0,51,83,1,0,10,6.7105231285095215,100\n3438,0,0,12,32,,12,423456,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,810,0,40,97,1,0,14,6.6970343589782715,196\n3439,0,0,12,26,12,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,374,0,37,98,4,1,8,5.924255847930908,64\n3440,0,0,12,32,12,12,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,300,0,48,95,1,1,14,5.703782558441162,196\n3441,1,1,12,29,9,12,501027,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,619,0,39,,1,1,11,6.428105354309082,121\n3442,1,1,18,32,,13,370720,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,641,0,49,103,1,1,8,6.463029384613037,64\n3443,1,1,12,31,6,6,493866,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,585,0,,105,1,0,13,6.371612071990967,169\n3444,1,1,12,30,6,,548740,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,587,0,27,,1,0,12,6.375024795532227,144\n3449,1,1,12,24,12,12,86498,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,533,0,25,,1,1,6,6.278521537780762,36\n3451,0,1,12,30,,5,134296,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,325,0,16,86,6,0,12,5.783825397491455,144\n3453,0,1,13,26,,,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,655,0,30,102,1,0,7,6.484635353088379,49\n3455,0,1,13,25,12,9,353857,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,617,0,34,95,1,1,6,6.424869060516357,36\n3456,0,1,12,24,4,9,353857,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,602,0,28,,1,1,6,6.400257587432861,36\n3458,0,1,16,26,3,7,362750,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,550,0,35,100,5,1,4,6.309918403625488,16\n3459,0,1,16,25,3,7,353857,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,686,0,24,,1,1,3,6.530877590179443,9\n3461,0,1,10,30,3,8,158714,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,625,0,20,81,1,0,14,6.437751770019531,196\n3462,0,1,11,31,,,134296,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,440,0,,,1,,14,6.086774826049805,196\n3463,0,1,6,33,,12,127041,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,153,0,,,6,0,21,5.03043794631958,441\n3464,0,1,10,27,,,88672,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,595,0,22,,1,1,11,6.388561248779297,121\n3465,0,1,11,27,7,7,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,462,1,29,,1,1,10,6.135564804077148,100\n3466,0,1,11,26,,7,88672,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,300,0,20,,6,1,9,5.703782558441162,81\n3467,0,1,10,31,10,6,134296,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,500,0,27,85,1,1,15,6.214608192443848,225\n3468,0,1,10,29,,,134296,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,404,0,20,86,1,1,13,6.001414775848389,169\n3470,0,1,10,32,12,12,127041,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,275,0,23,79,1,0,16,5.616771221160889,256\n3471,0,1,8,32,,8,116164,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,400,0,11,,1,1,18,5.991464614868164,324\n3472,0,1,18,28,,4,84491,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,600,0,42,101,1,1,4,6.396929740905762,16\n3474,0,1,13,27,6,8,84491,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,577,0,33,100,1,0,8,6.357842445373535,64\n3475,0,1,12,27,6,8,84491,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,375,0,24,84,1,0,9,5.926926136016846,81\n3476,0,1,12,26,6,8,84491,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,304,0,24,74,1,0,8,5.71702766418457,64\n3477,0,1,12,28,,8,352304,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,282,0,33,,1,0,10,5.641907215118408,100\n3479,0,1,14,28,,,81081,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,275,0,25,86,4,0,8,5.616771221160889,64\n3480,0,1,12,25,12,12,89271,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,635,0,32,,1,1,7,6.453625202178955,49\n3482,0,1,18,25,10,10,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,711,0,35,,6,0,1,6.566672325134277,1\n3483,0,1,13,28,,,81081,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,959,0,29,,1,0,9,6.865890979766846,81\n3484,0,1,16,29,,,122798,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1,641,0,25,92,1,0,7,6.463029384613037,49\n3485,0,1,13,24,2,,97069,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,444,0,28,,1,0,5,6.095824718475342,25\n3486,0,1,9,34,,,116164,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,235,0,10,,1,0,19,5.459585666656494,361\n3488,0,1,15,25,7,8,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,475,0,25,,6,0,4,6.1633148193359375,16\n3489,0,1,12,26,,6,81081,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,252,0,25,,6,0,8,5.529428958892822,64\n3490,0,1,14,27,5,11,84491,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,635,0,28,107,1,0,7,6.453625202178955,49\n3491,0,1,13,26,,,81081,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,390,0,22,,1,0,7,5.966146945953369,49\n3492,0,1,9,33,,3,116164,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,413,0,19,,1,,18,6.023447513580322,324\n3494,0,1,11,29,,7,122798,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,400,0,28,,1,0,12,5.991464614868164,144\n3495,0,1,8,25,,7,79093,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,288,0,12,,1,0,11,5.662960529327393,121\n3496,0,1,12,25,,,93473,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,360,0,10,,6,0,7,5.886104106903076,49\n3498,0,1,12,32,,6,88765,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,673,0,32,93,1,0,14,6.511745452880859,196\n3499,1,0,10,34,6,12,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,393,0,16,,6,0,18,5.973809719085693,324\n3500,1,0,16,26,6,12,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,577,0,27,,1,0,4,6.357842445373535,16\n3501,1,0,11,26,2,8,88672,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,188,0,20,,6,0,9,5.2364420890808105,81\n3502,1,0,5,27,,10,88672,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,285,0,,,6,0,16,5.652489185333252,256\n3503,1,0,9,34,,6,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,375,0,18,69,4,0,19,5.926926136016846,361\n3504,1,0,17,30,18,17,501027,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,770,0,41,113,1,1,7,6.646390438079834,49\n3509,1,0,17,26,,16,93751,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,558,0,34,114,1,1,3,6.324358940124512,9\n3510,1,0,18,28,,12,93751,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,1763,0,42,126,6,1,4,7.474771976470947,16\n3511,1,0,12,34,7,8,370720,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,695,0,37,92,4,1,16,6.543911933898926,256\n3512,1,0,10,24,,,372835,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,489,0,22,,1,0,8,6.192362308502197,64\n3513,0,0,12,24,12,9,425871,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,509,0,44,127,6,0,6,6.232448101043701,36\n3514,0,0,12,33,,6,423456,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,818,0,44,109,4,1,15,6.706862449645996,225\n3515,0,0,7,30,5,8,572299,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,275,0,42,,1,0,17,5.616771221160889,289\n3520,0,0,12,30,8,10,501709,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,600,0,42,97,1,0,12,6.396929740905762,144\n3521,0,1,13,25,,1,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,577,1,30,,1,0,6,6.357842445373535,36\n3522,0,1,14,24,4,1,372835,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,230,0,24,,1,0,4,5.438079357147217,16\n3523,0,1,11,26,10,0,383527,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,507,0,30,66,1,1,9,6.228510856628418,81\n3526,1,1,12,26,9,9,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,606,0,33,78,1,1,8,6.406879901885986,64\n3527,1,1,12,24,9,9,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,813,0,,,1,1,6,6.70073127746582,36\n3528,1,1,10,25,8,12,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,285,0,38,,4,1,9,5.652489185333252,81\n3530,1,1,16,31,14,16,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1068,0,46,109,1,1,9,6.973543167114258,81\n3533,1,1,14,32,12,8,423456,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1635,0,38,93,1,1,12,7.399397850036621,144\n3534,1,1,16,30,14,4,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,860,0,43,109,1,1,8,6.756932258605957,64\n3535,1,1,14,26,,,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,756,0,40,105,1,1,6,6.6280412673950195,36\n3536,1,1,15,25,16,16,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,750,0,38,105,1,0,4,6.620073318481445,16\n3537,1,1,12,32,,,423456,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,438,0,36,104,1,1,14,6.082219123840332,196\n3538,1,1,12,33,16,10,423456,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1106,0,30,66,1,1,15,7.008505344390869,225\n3539,1,1,17,30,7,11,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,291,1,43,122,4,1,7,5.673323154449463,49\n3540,1,1,12,26,6,11,78509,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,332,0,34,103,1,1,8,5.8051347732543945,64\n3544,0,1,13,26,10,12,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,417,1,39,100,1,1,7,6.03308629989624,49\n3545,0,1,13,30,8,8,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,625,0,44,85,1,0,11,6.437751770019531,121\n3549,0,1,12,27,4,8,417415,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,462,0,26,81,1,0,9,6.135564804077148,81\n3550,0,1,8,34,8,,371225,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,250,0,43,,1,0,20,5.521461009979248,400\n3551,0,1,18,30,8,12,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,520,0,47,105,1,0,6,6.253829002380371,36\n3556,0,1,14,28,6,8,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,150,0,36,116,6,0,8,5.0106353759765625,64\n3557,0,1,14,25,6,8,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,400,0,26,,1,0,5,5.991464614868164,25\n3558,1,1,18,29,,4,508712,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,385,0,45,121,1,1,5,5.953243255615234,25\n3561,1,1,15,34,,12,376407,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,45,109,1,1,13,6.357842445373535,169\n3564,1,1,18,34,13,14,376407,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,538,0,53,121,1,1,10,6.287858486175537,100\n3565,1,1,17,28,18,16,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,801,1,52,126,6,1,5,6.685861110687256,25\n3566,1,1,17,24,18,16,378554,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,500,1,39,120,6,1,1,6.214608192443848,1\n3568,1,1,13,29,12,12,508712,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,894,0,40,78,1,1,10,6.795705795288086,100\n3569,1,1,14,27,12,12,389410,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,625,0,37,54,1,1,7,6.437751770019531,49\n3570,1,1,14,28,12,12,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,323,0,37,60,6,1,8,5.777652263641357,64\n3571,1,1,12,32,8,8,418230,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,577,0,33,98,1,0,14,6.357842445373535,196\n3572,1,1,12,25,12,12,420616,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,427,0,40,,1,0,7,6.056784152984619,49\n3574,1,1,10,31,8,12,565236,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,241,0,32,94,1,0,15,5.48479700088501,225\n3576,1,1,17,28,9,13,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,758,1,36,128,1,1,5,6.630683422088623,25\n3578,1,1,16,32,8,9,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1979,0,43,94,1,0,10,7.590346813201904,100\n3580,1,1,12,32,,12,418230,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,695,0,34,98,1,0,14,6.543911933898926,196\n3581,1,1,16,26,12,16,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,491,0,29,105,1,1,4,6.196444034576416,16\n3582,1,1,16,24,12,16,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,565,0,32,,6,1,2,6.336825847625732,4\n3586,1,1,10,30,11,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,340,0,24,,6,0,14,5.828945636749268,196\n3587,1,1,13,27,,12,390229,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,298,0,25,87,4,1,8,5.697093486785889,64\n3588,1,1,13,25,,12,379350,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,308,0,20,71,5,0,6,5.730099678039551,36\n3589,1,1,13,24,12,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1097,0,25,117,1,1,5,7.0003342628479,25\n3590,1,1,11,24,17,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,413,0,24,94,1,1,7,6.023447513580322,49\n3593,1,1,12,33,,,376407,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,606,0,36,,1,0,15,6.406879901885986,225\n3595,1,1,12,25,8,11,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,500,0,27,88,6,0,7,6.214608192443848,49\n3596,1,1,15,25,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,589,0,30,85,6,1,4,6.3784260749816895,16\n3597,1,1,13,28,12,12,389410,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,625,0,36,102,1,1,9,6.437751770019531,81\n3599,1,1,10,25,7,9,92535,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,390,0,21,,1,1,9,5.966146945953369,81\n3603,1,1,14,31,8,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,443,1,43,,1,1,11,6.093569755554199,121\n3605,1,1,13,26,8,,389410,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,707,1,39,,1,0,7,6.561030864715576,49\n3607,1,1,16,27,12,13,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,778,0,33,116,1,1,5,6.656726360321045,25\n3609,1,1,12,28,,,97090,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,510,0,26,,6,0,10,6.234410762786865,100\n3614,1,1,17,25,10,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,442,0,37,,1,1,2,6.091310024261475,4\n3615,1,1,13,26,,8,389410,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,400,0,35,82,1,1,7,5.991464614868164,49\n3620,1,1,18,28,,12,432678,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1275,0,39,114,1,1,4,7.150701522827148,16\n3621,1,1,12,26,,12,97090,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,405,0,18,,1,1,8,6.003887176513672,64\n3623,1,1,12,28,12,11,97090,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,673,0,21,65,5,1,10,6.511745452880859,100\n3624,1,1,10,27,12,11,97090,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,280,0,22,84,6,1,11,5.63478946685791,121\n3625,1,1,10,24,12,10,94710,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,350,0,18,,6,0,8,5.857933044433594,64\n3627,1,1,18,30,12,12,565236,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,2003,0,48,105,1,1,6,7.602401256561279,36\n3628,1,1,16,26,12,,432678,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,769,0,40,101,6,1,4,6.6450910568237305,16\n3632,1,1,16,29,,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,866,1,44,108,4,1,7,6.763885021209717,49\n3633,1,1,15,32,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,880,1,36,93,1,1,11,6.779922008514404,121\n3634,1,1,12,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,550,0,34,96,6,1,8,6.309918403625488,64\n3636,1,1,14,28,7,7,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,610,0,20,92,1,0,8,6.413458824157715,64\n3637,1,1,13,25,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,23,107,1,0,6,6.357842445373535,36\n3638,1,1,12,25,,9,94710,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,148,0,27,,6,1,7,4.9972124099731445,49\n3646,1,1,16,29,8,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,824,0,39,106,6,1,7,6.714170455932617,49\n3647,1,1,14,26,,0,114743,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,700,0,33,,1,1,6,6.551080226898193,36\n3649,1,1,18,27,5,3,114743,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,750,0,24,,6,0,3,6.620073318481445,9\n3650,1,1,17,34,,,418230,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,700,1,53,98,1,1,11,6.551080226898193,121\n3651,1,1,18,32,14,14,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,692,0,32,,1,1,8,6.539586067199707,64\n3656,1,1,11,27,,,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,308,0,38,73,2,0,10,5.730099678039551,100\n3658,1,1,17,31,16,16,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,865,0,49,119,6,1,8,6.762729644775391,64\n3665,1,1,14,24,2,,94710,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,693,0,33,,1,1,4,6.541029930114746,16\n3666,1,1,11,24,,9,94710,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,800,0,24,,,1,7,6.684611797332764,49\n3667,1,1,14,32,12,8,139101,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,673,0,42,82,1,1,12,6.511745452880859,144\n3669,1,1,14,25,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,515,0,34,,1,1,5,6.244166851043701,25\n3670,1,1,16,31,16,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,712,0,37,,1,1,9,6.56807804107666,81\n3671,1,1,13,25,,12,378554,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,845,1,31,115,1,1,6,6.7393364906311035,36\n3672,1,1,14,25,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,885,1,28,77,6,1,5,6.785587787628174,25\n3673,1,1,14,27,9,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,693,0,34,101,1,1,7,6.541029930114746,49\n3674,1,1,12,34,12,12,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,851,0,40,97,1,1,16,6.74641227722168,256\n3675,1,1,12,29,10,10,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,738,0,34,110,1,0,11,6.603943824768066,121\n3676,1,1,14,25,10,10,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,481,1,28,86,6,0,5,6.175867080688477,25\n3678,1,1,16,30,16,16,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,795,0,43,126,1,1,8,6.678342342376709,64\n3679,1,1,13,32,8,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,579,0,36,,4,0,13,6.361302375793457,169\n3682,1,1,12,34,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,869,0,32,96,4,0,16,6.767343044281006,256\n3684,1,1,16,27,12,13,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,40,117,6,1,5,6.357842445373535,25\n3685,1,1,17,33,14,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1385,0,44,111,1,1,10,7.233455181121826,100\n3686,1,1,14,31,,,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1603,0,39,,1,1,11,7.379631996154785,121\n3690,1,1,12,30,8,8,147046,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,675,0,23,67,1,1,12,6.514712810516357,144\n3694,1,1,18,32,13,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,462,0,43,,6,1,8,6.135564804077148,64\n3697,1,1,12,29,,12,565236,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,663,0,24,,1,1,11,6.496775150299072,121\n3702,1,1,12,24,,12,92535,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,845,0,36,,6,1,6,6.7393364906311035,36\n3707,1,1,12,33,12,12,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,657,0,31,102,1,1,15,6.48768424987793,225\n3708,1,1,15,27,13,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1200,0,42,95,4,1,6,7.090076923370361,36\n3709,1,1,13,33,0,5,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,770,0,35,,1,0,14,6.646390438079834,196\n3711,1,1,12,27,,5,97090,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,250,0,29,,1,1,9,5.521461009979248,81\n3713,1,1,12,24,0,4,421500,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,343,0,27,,6,0,6,5.837730407714844,36\n3715,1,1,12,34,2,0,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,2115,0,22,64,4,1,16,7.656810283660889,256\n3716,1,1,18,27,,2,389410,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1029,0,35,,1,1,3,6.936342716217041,9\n3717,1,1,12,25,,2,378554,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,713,0,22,,4,1,7,6.569481372833252,49\n3719,1,1,10,28,8,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,595,0,39,118,1,1,12,6.388561248779297,144\n3722,1,1,15,32,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,833,0,41,104,1,1,11,6.725033760070801,121\n3723,1,1,15,28,,,441320,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,400,0,20,107,6,0,7,5.991464614868164,49\n3726,1,1,14,31,,7,147046,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,721,0,36,118,1,1,11,6.580639362335205,121\n3727,1,1,12,31,12,12,147046,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,167,0,32,71,1,1,13,5.1179938316345215,169\n3728,1,1,14,27,8,12,95189,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,467,1,39,114,1,1,7,6.146329402923584,49\n3729,1,1,18,27,13,13,95189,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,643,0,41,118,4,1,3,6.466144561767578,9\n3730,1,1,13,34,10,12,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,600,0,37,75,1,1,15,6.396929740905762,225\n3731,1,1,12,24,13,10,379350,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,400,0,38,149,5,1,6,5.991464614868164,36\n3732,1,1,13,24,12,12,420616,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1000,0,33,108,5,1,5,6.907755374908447,25\n3733,1,1,14,28,8,12,432678,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,666,0,26,108,1,1,8,6.5012898445129395,64\n3739,0,1,16,24,8,11,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,553,0,32,,1,1,2,6.3153581619262695,4\n3744,0,1,14,28,10,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,785,0,45,112,4,0,8,6.665683746337891,64\n3746,1,1,15,28,13,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,667,1,39,108,1,0,7,6.5027899742126465,49\n3747,1,1,10,25,8,8,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,300,0,36,93,6,1,9,5.703782558441162,81\n3750,1,1,16,30,14,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,697,0,38,119,1,0,8,6.546785354614258,64\n3752,1,1,14,33,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,438,0,35,94,1,1,13,6.082219123840332,169\n3754,1,1,13,25,9,11,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,685,0,23,68,1,0,6,6.5294189453125,36\n3756,1,1,14,26,7,6,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,414,0,27,103,1,1,6,6.0258660316467285,36\n3757,1,1,12,25,11,14,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,751,0,33,104,1,1,7,6.621405601501465,49\n3758,1,1,13,26,16,16,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,231,0,36,119,6,1,7,5.442417621612549,49\n3762,1,1,16,29,17,14,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,505,0,36,90,1,1,7,6.224558353424072,49\n3763,1,1,16,30,15,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,600,0,44,129,1,1,8,6.396929740905762,64\n3764,1,1,18,33,18,15,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1309,0,48,,1,1,9,7.177018642425537,81\n3765,1,1,18,32,,18,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1058,0,49,125,1,1,8,6.964135646820068,64\n3766,1,1,15,32,13,11,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,627,1,37,100,1,1,11,6.440946578979492,121\n3767,0,1,16,33,3,8,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1050,0,40,112,1,1,11,6.956545352935791,121\n3770,0,1,18,32,12,16,92010,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,983,0,50,128,1,1,8,6.890609264373779,64\n3773,0,1,18,34,16,13,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1282,0,47,84,1,1,10,7.156176567077637,100\n3774,0,1,12,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,818,0,40,84,1,0,8,6.706862449645996,64\n3775,0,1,17,24,16,16,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,500,1,31,120,6,1,1,6.214608192443848,1\n3777,0,1,12,32,12,8,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,720,0,38,97,4,1,14,6.579251289367676,196\n3778,0,1,12,29,7,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,538,0,34,102,4,1,11,6.287858486175537,121\n3779,0,1,17,34,8,12,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,938,0,49,,1,1,11,6.84375,121\n3782,0,1,11,25,8,9,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,300,0,26,91,1,0,8,5.703782558441162,64\n3783,0,1,11,32,2,1,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,781,1,31,,1,0,15,6.660574913024902,225\n3784,0,1,8,34,3,2,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,650,0,33,,4,0,20,6.476972579956055,400\n3785,0,1,18,29,12,12,509782,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,996,0,41,131,1,1,5,6.903747081756592,25\n3786,0,1,17,28,12,12,390229,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,582,0,37,107,1,1,5,6.3664703369140625,25\n3787,0,1,16,26,12,12,390229,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,231,0,23,126,1,1,4,5.442417621612549,16\n3788,0,1,16,25,12,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,539,0,32,107,1,1,3,6.289715766906738,9\n3792,0,1,15,34,8,8,139101,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,628,0,49,92,1,1,13,6.442540168762207,169\n3793,0,1,12,28,,,97090,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,674,0,30,,1,1,10,6.513230323791504,100\n3794,0,1,16,27,12,12,95189,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,231,0,32,92,1,1,5,5.442417621612549,25\n3795,0,1,18,29,12,12,124352,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,716,0,40,119,1,1,5,6.573680400848389,25\n3798,1,1,13,24,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,286,0,32,,6,1,5,5.655992031097412,25\n3799,1,1,15,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,500,0,41,76,1,1,5,6.214608192443848,25\n3800,1,1,16,27,,,432678,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,312,0,40,,6,1,5,5.7430033683776855,25\n3804,1,1,11,25,10,10,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,200,0,24,107,6,1,8,5.2983174324035645,64\n3809,1,1,16,33,12,9,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1106,0,,111,1,1,11,7.008505344390869,121\n3810,1,1,12,29,11,11,565236,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,583,1,25,92,1,1,11,6.368186950683594,121\n3812,1,1,16,30,8,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,404,0,46,115,6,1,8,6.001414775848389,64\n3813,1,1,13,25,12,,378554,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,618,1,37,114,1,0,6,6.426488399505615,36\n3815,1,1,16,27,10,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,277,0,41,123,1,1,5,5.624017715454102,25\n3816,1,1,17,25,12,11,378554,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,962,0,32,107,1,1,2,6.869014263153076,4\n3817,1,1,15,30,12,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,692,1,47,107,1,1,9,6.539586067199707,81\n3818,1,1,12,28,8,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,563,0,43,105,1,1,10,6.333279609680176,100\n3821,1,1,8,33,3,5,418230,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1336,0,40,,1,0,19,7.19743537902832,361\n3822,1,1,14,31,12,12,508712,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,673,0,44,111,1,0,11,6.511745452880859,121\n3823,1,1,16,32,,11,376407,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,856,0,41,107,1,1,10,6.752270221710205,100\n3824,1,1,16,32,8,4,376407,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,260,1,40,117,6,1,10,5.5606818199157715,100\n3825,1,1,15,28,8,4,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,575,0,42,116,1,1,7,6.3543701171875,49\n3828,1,1,13,24,2,8,378554,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,626,0,40,108,1,0,5,6.439350605010986,25\n3830,1,1,12,32,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1443,0,47,115,1,0,14,7.274479389190674,196\n3831,1,1,14,28,6,11,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,336,0,31,101,1,1,8,5.817111015319824,64\n3832,1,1,12,27,6,11,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,30,98,1,1,9,6.357842445373535,81\n3836,1,1,13,24,8,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,480,0,30,,1,1,5,6.173786163330078,25\n3837,1,1,15,28,16,0,399926,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,250,0,42,87,1,1,7,5.521461009979248,49\n3840,0,1,11,24,12,9,378554,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,479,0,27,,1,1,7,6.171700477600098,49\n3842,0,1,15,34,,,376407,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1038,0,43,95,1,1,13,6.945051193237305,169\n3843,0,1,18,33,13,12,376407,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1090,0,48,114,1,1,9,6.993933200836182,81\n3845,0,1,18,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,462,0,40,116,1,1,2,6.135564804077148,4\n3846,0,1,12,32,,12,376407,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,625,0,41,90,1,1,14,6.437751770019531,196\n3847,0,1,16,25,5,8,378554,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,817,0,38,115,1,1,3,6.705638885498047,9\n3849,0,1,14,28,17,4,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,361,0,40,113,1,1,8,5.888877868652344,64\n3852,0,1,12,27,12,12,389410,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,320,1,35,87,1,0,9,5.7683210372924805,81\n3855,0,1,16,32,7,12,376407,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,347,1,32,91,4,1,10,5.849324703216553,100\n3856,1,0,12,30,,,565236,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,861,0,39,86,4,1,12,6.758094310760498,144\n3858,1,0,10,26,2,2,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,282,0,16,90,1,1,10,5.641907215118408,100\n3859,1,0,12,24,17,14,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,699,0,33,125,5,0,6,6.5496506690979,36\n3860,1,0,12,24,11,10,378554,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,615,0,26,107,1,1,6,6.421622276306152,36\n3863,1,0,11,25,8,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,433,0,35,88,6,1,8,6.070737838745117,64\n3865,1,1,16,25,12,12,94710,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,534,0,28,117,6,1,3,6.280395984649658,9\n3867,1,1,16,26,12,12,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,625,0,31,92,6,1,4,6.437751770019531,16\n3869,1,1,18,26,10,12,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,43,122,4,1,2,6.357842445373535,4\n3870,1,1,12,24,10,12,94710,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,843,0,26,98,6,1,6,6.736967086791992,36\n3874,1,1,16,26,12,12,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,404,0,45,123,1,1,4,6.001414775848389,16\n3879,1,1,15,32,,12,92010,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,553,0,40,,1,1,11,6.3153581619262695,121\n3880,1,1,18,31,18,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1014,0,45,116,1,1,7,6.921658039093018,49\n3883,1,1,16,29,8,4,601550,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,325,0,44,114,6,1,7,5.783825397491455,49\n3885,1,1,15,30,12,8,147046,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,771,0,34,91,1,1,9,6.647688388824463,81\n3887,1,1,14,24,12,13,94710,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,700,0,28,125,1,1,4,6.551080226898193,16\n3889,1,1,17,24,13,7,94710,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,548,1,42,126,6,1,1,6.306275367736816,1\n3890,1,1,16,26,0,5,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,625,0,43,101,6,1,4,6.437751770019531,16\n3891,1,1,16,28,12,7,97090,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,911,0,33,101,1,0,6,6.814542770385742,36\n3895,0,1,12,33,16,16,377198,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,745,0,44,116,1,1,15,6.613384246826172,225\n3896,0,1,12,24,12,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,674,0,18,103,1,0,6,6.513230323791504,36\n3897,0,0,16,28,12,12,390229,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,817,0,49,113,1,0,6,6.705638885498047,36\n3899,1,1,15,25,,10,420616,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,770,0,42,111,1,1,4,6.646390438079834,16\n3900,1,1,15,27,8,9,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,727,0,38,116,1,1,6,6.588926315307617,36\n3902,1,1,12,24,8,9,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,666,0,25,,1,1,6,6.5012898445129395,36\n3903,1,1,14,27,,12,389410,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,688,0,32,94,1,1,7,6.533788681030273,49\n3906,1,1,14,26,16,13,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,560,1,38,108,6,1,6,6.32793664932251,36\n3908,1,1,16,28,13,14,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,500,0,42,123,1,1,6,6.214608192443848,36\n3912,1,1,14,28,,,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,670,0,42,,6,1,8,6.507277488708496,64\n3915,1,1,12,34,9,9,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,962,0,36,,1,1,16,6.869014263153076,256\n3918,1,1,16,28,,12,389410,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,726,0,38,109,1,1,6,6.587550163269043,36\n3927,1,1,16,33,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,962,0,36,124,1,1,11,6.869014263153076,121\n3928,1,1,17,33,12,14,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,615,1,42,89,1,1,10,6.421622276306152,100\n3929,1,1,13,32,12,10,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1154,0,35,114,1,0,13,7.050989627838135,169\n3931,1,1,13,29,14,8,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,675,0,35,121,1,1,10,6.514712810516357,100\n3933,1,1,12,26,,10,389410,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,422,0,37,103,1,1,8,6.0450053215026855,64\n3934,1,1,12,25,12,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1063,0,19,96,6,1,7,6.968850612640381,49\n3939,1,1,18,33,15,14,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1175,0,54,117,6,1,9,7.069023609161377,81\n3940,1,1,15,27,12,,389410,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,852,1,36,108,1,1,6,6.747586727142334,36\n3941,1,1,12,24,12,,378554,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,610,0,24,,1,1,6,6.413458824157715,36\n3943,1,1,18,33,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,423,0,43,,1,1,9,6.047372341156006,81\n3945,1,1,12,29,8,12,565236,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1200,0,40,100,1,1,11,7.090076923370361,121\n3946,1,1,14,34,15,10,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1029,0,46,,1,1,14,6.936342716217041,196\n3952,1,1,14,28,12,,389410,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,550,0,30,104,4,1,8,6.309918403625488,64\n3953,1,1,15,31,12,12,508712,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,801,0,36,91,6,0,10,6.685861110687256,100\n3954,1,1,12,31,,11,508712,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,543,0,31,97,1,1,13,6.297109127044678,169\n3955,1,1,9,31,8,11,565236,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,350,0,18,,3,1,16,5.857933044433594,256\n3957,1,1,14,32,,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,750,0,33,94,4,1,12,6.620073318481445,144\n3958,1,1,14,34,12,10,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,450,0,36,103,1,1,14,6.10924768447876,196\n3961,1,1,14,24,12,9,420616,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,600,0,26,,6,1,4,6.396929740905762,16\n3963,1,1,12,33,7,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,855,0,44,101,5,0,15,6.751101493835449,225\n3967,1,1,14,26,14,8,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,728,0,30,94,1,0,6,6.590301036834717,36\n3968,1,1,12,34,12,11,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,693,0,38,112,4,1,16,6.541029930114746,256\n3969,1,1,10,27,12,12,389410,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1025,0,24,73,4,0,11,6.932447910308838,121\n3973,1,1,14,28,8,8,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1154,1,32,104,1,1,8,7.050989627838135,64\n3974,1,1,16,32,15,18,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,983,0,48,,1,1,10,6.890609264373779,100\n3975,1,1,15,34,3,0,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,727,0,34,105,4,0,13,6.588926315307617,169\n3978,1,1,14,34,10,11,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,535,0,38,106,1,1,14,6.282266616821289,196\n3979,1,1,12,25,11,11,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,532,0,39,101,1,1,7,6.2766432762146,49\n3982,1,1,13,26,10,11,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,289,1,28,86,6,1,7,5.666426658630371,49\n3983,1,1,17,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,313,1,36,119,6,1,3,5.746203422546387,9\n3984,1,1,13,24,13,16,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,404,0,24,83,6,1,5,6.001414775848389,25\n3986,1,1,18,30,12,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1100,0,43,114,1,1,6,7.003065586090088,36\n3987,1,1,12,27,2,2,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,660,0,36,104,1,1,9,6.492239952087402,81\n3988,1,1,12,32,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,433,0,44,99,1,0,14,6.070737838745117,196\n3989,1,1,17,27,18,16,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,400,1,37,126,5,1,4,5.991464614868164,16\n3993,1,1,15,26,18,13,432678,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,263,0,36,101,6,1,5,5.5721540451049805,25\n3994,1,1,13,34,12,12,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,400,0,45,,1,1,15,5.991464614868164,225\n3997,1,1,16,34,15,18,376407,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,577,0,40,109,1,1,12,6.357842445373535,144\n3998,1,1,12,24,13,13,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,433,0,35,110,6,1,6,6.070737838745117,36\n4000,1,1,17,25,18,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,470,0,39,104,1,0,2,6.152732849121094,4\n4001,1,1,17,25,12,14,378554,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,255,1,30,118,1,1,2,5.541263580322266,4\n4002,1,1,12,26,12,12,389410,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,625,0,28,,1,1,8,6.437751770019531,64\n4005,1,1,13,34,12,,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,670,1,48,103,6,1,15,6.507277488708496,225\n4007,1,1,12,30,12,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1049,0,36,90,1,1,12,6.955592632293701,144\n4012,1,1,17,34,,4,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1846,0,49,98,1,1,11,7.520776271820068,121\n4013,1,1,15,33,16,12,418230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,769,0,46,112,1,1,12,6.6450910568237305,144\n4015,1,1,11,34,,,139101,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,688,0,37,64,1,,17,6.533788681030273,289\n4018,1,1,15,24,15,12,379350,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,650,0,25,,1,1,3,6.476972579956055,9\n4019,1,1,16,26,13,18,390229,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,479,0,39,128,1,1,4,6.171700477600098,16\n4027,1,0,16,24,16,13,440484,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,341,0,40,113,1,1,2,5.831882476806641,4\n4029,1,0,14,32,10,12,389423,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,906,0,46,102,1,1,12,6.809039115905762,144\n4031,1,0,12,33,7,8,432693,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,351,0,33,93,5,1,15,5.860786437988281,225\n4033,0,0,12,29,8,9,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,775,0,40,92,1,0,11,6.652863025665283,121\n4034,0,0,12,26,8,9,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,700,0,35,124,1,0,8,6.551080226898193,64\n4036,0,0,16,26,12,12,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,592,0,39,119,1,1,4,6.383506774902344,16\n4037,0,0,12,24,8,11,391645,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,740,0,25,,,1,6,6.606650352478027,36\n4039,0,0,12,27,10,8,447641,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,533,0,34,96,1,1,9,6.278521537780762,81\n4040,0,0,16,25,18,13,323633,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,417,0,32,110,6,1,3,6.03308629989624,9\n4041,0,0,18,34,12,12,321797,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1394,0,40,118,1,1,10,7.239932537078857,100\n4043,0,0,12,34,8,10,321797,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,548,0,42,96,1,1,16,6.306275367736816,256\n4044,0,1,11,24,11,12,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,657,0,27,80,1,1,7,6.48768424987793,49\n4046,0,1,12,25,10,12,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,572,0,39,,1,1,7,6.349139213562012,49\n4047,0,1,13,29,,12,434907,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,624,0,36,137,1,0,10,6.436150550842285,100\n4048,0,1,16,31,15,12,434907,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,442,0,38,113,1,1,9,6.091310024261475,81\n4050,0,1,15,27,12,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,577,0,41,93,1,1,6,6.357842445373535,36\n4051,0,1,13,27,12,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,540,0,34,93,1,1,8,6.291569232940674,64\n4052,0,1,15,30,9,12,434907,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,841,0,42,116,6,1,9,6.734591484069824,81\n4061,1,0,14,29,,8,434907,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,724,1,34,106,6,1,9,6.58479118347168,81\n4063,1,0,13,26,6,11,332914,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,557,1,22,,1,1,7,6.322565078735352,49\n4064,1,0,13,24,,,323633,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,334,1,14,,1,1,5,5.811141014099121,25\n4066,1,0,15,24,10,14,323633,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,510,0,33,,6,1,3,6.234410762786865,9\n4067,1,0,12,31,8,12,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,577,0,31,69,1,0,13,6.357842445373535,169\n4074,1,0,12,29,2,6,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,511,0,36,78,1,1,11,6.236369609832764,121\n4078,0,1,15,25,9,7,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,311,1,28,87,1,1,4,5.739792823791504,16\n4079,0,1,12,34,8,8,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,577,0,41,99,1,1,16,6.357842445373535,256\n4081,0,1,12,34,,12,357552,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,670,0,40,,1,1,16,6.507277488708496,256\n4082,0,1,12,27,12,16,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,631,0,33,92,1,1,9,6.447305679321289,81\n4083,0,1,16,25,12,16,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,666,0,23,113,4,1,3,6.5012898445129395,9\n4087,0,1,14,27,12,12,369904,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,400,0,38,119,1,1,7,5.991464614868164,49\n4089,0,1,11,24,10,16,359592,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,220,0,24,,1,1,7,5.393627643585205,49\n4091,0,1,13,30,,9,483230,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,577,0,43,,1,0,11,6.357842445373535,121\n4093,0,1,13,29,,12,434907,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,423,0,29,98,4,1,10,6.047372341156006,100\n4094,0,1,16,27,14,16,369904,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,647,0,33,99,1,1,5,6.472346305847168,25\n4095,0,1,15,28,10,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,345,1,36,,6,1,7,5.8435444831848145,49\n4096,0,1,16,25,11,14,359592,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,840,0,24,112,6,1,3,6.733401775360107,9\n4097,1,1,15,25,18,12,378554,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,625,0,30,115,1,1,4,6.437751770019531,16\n4100,0,1,9,30,8,,565236,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1000,0,26,96,1,1,15,6.907755374908447,225\n4101,1,1,16,31,8,6,124352,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,919,0,41,117,1,1,9,6.823286056518555,81\n4105,1,1,12,31,2,8,124352,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,730,0,38,96,1,1,13,6.593044757843018,169\n4107,1,1,12,24,10,10,109360,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,448,0,26,,5,0,6,6.104793071746826,36\n4109,1,1,14,29,12,12,508712,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,483,1,44,75,1,1,9,6.18001651763916,81\n4111,0,1,12,25,11,10,378554,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,411,0,46,108,6,1,7,6.0185933113098145,49\n4112,0,1,14,30,13,12,508712,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,885,0,46,,1,1,10,6.785587787628174,100\n4116,0,0,14,27,10,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,350,0,32,,,1,7,5.857933044433594,49\n4120,0,0,17,27,12,16,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,500,0,34,92,1,1,4,6.214608192443848,16\n4123,0,0,15,33,16,16,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,733,0,38,95,1,1,12,6.5971455574035645,144\n4124,0,0,13,30,12,12,434907,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,459,1,34,88,6,1,11,6.129050254821777,121\n4125,0,0,16,28,12,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,721,0,37,106,1,1,6,6.580639362335205,36\n4126,0,0,15,32,8,8,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,699,0,44,95,1,1,11,6.5496506690979,121\n4127,0,0,14,30,9,15,434907,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,785,0,40,94,1,1,10,6.665683746337891,100\n4128,0,0,16,29,12,13,434907,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,925,0,45,105,1,1,7,6.829793930053711,49\n4129,0,0,14,26,12,13,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,449,0,30,115,5,1,6,6.107022762298584,36\n4130,0,0,15,24,14,14,391645,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,325,0,37,117,1,1,3,5.783825397491455,9\n4131,0,0,13,32,13,12,432693,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,683,0,30,,1,1,13,6.526494979858398,169\n4132,0,0,16,32,18,14,432693,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,522,0,45,,1,1,10,6.257667541503906,100\n4133,0,0,18,28,18,14,447641,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,470,0,44,93,1,1,4,6.152732849121094,16\n4134,1,0,12,34,8,7,321797,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,541,0,38,115,1,1,16,6.293419361114502,256\n4135,1,0,14,29,13,12,483230,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,852,0,43,,1,1,9,6.747586727142334,81\n4136,1,0,12,30,9,12,434907,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,400,0,42,,1,1,12,5.991464614868164,144\n4137,1,0,18,27,,,453117,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,547,0,36,117,6,1,3,6.30444860458374,9\n4138,1,0,16,32,12,14,437985,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,577,0,36,98,6,1,10,6.357842445373535,100\n4139,1,0,11,24,13,13,440484,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,300,0,31,,1,1,7,5.703782558441162,49\n4141,1,0,16,32,,12,865385,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1068,0,42,105,1,1,10,6.973543167114258,100\n4142,1,0,12,32,6,7,389423,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,721,0,36,109,1,1,14,6.580639362335205,196\n4146,1,0,17,31,12,11,1169566,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,673,1,42,95,4,1,8,6.511745452880859,64\n4148,1,0,17,27,14,12,332914,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,739,0,31,120,1,1,4,6.605298042297363,16\n4149,1,0,12,26,8,,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1478,0,,96,6,0,8,7.298445224761963,64\n4156,0,0,17,27,8,14,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,875,0,40,,6,1,4,6.774223804473877,16\n4157,0,0,12,33,8,12,389423,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,900,0,40,,1,1,15,6.802394866943359,225\n4162,0,0,13,31,13,12,144695,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,801,0,42,91,1,1,12,6.685861110687256,144\n4163,0,0,13,26,8,12,110762,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,550,0,38,109,1,1,7,6.309918403625488,49\n4164,0,0,10,34,8,9,95192,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,575,0,32,,1,0,18,6.3543701171875,324\n4165,0,0,12,27,12,12,98481,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,540,0,38,87,1,1,9,6.291569232940674,81\n4167,0,0,16,32,13,13,437985,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,790,0,34,110,1,1,10,6.672032833099365,100\n4168,0,0,14,28,12,10,453117,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,693,0,28,97,1,1,8,6.541029930114746,64\n4169,0,0,16,26,12,10,453117,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,250,0,30,110,4,1,4,5.521461009979248,16\n4170,0,0,17,24,14,13,391645,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,417,1,35,,1,1,1,6.03308629989624,1\n4171,0,0,9,32,3,4,486650,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,635,0,29,74,1,0,17,6.453625202178955,289\n4177,0,0,12,32,,9,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,413,0,32,95,5,1,14,6.023447513580322,196\n4183,0,0,12,25,,,104719,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,300,0,26,97,1,0,7,5.703782558441162,49\n4187,0,0,17,26,18,14,402877,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,567,1,29,,1,1,3,6.340359210968018,9\n4189,0,0,16,32,7,12,389423,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,641,0,39,,1,0,10,6.463029384613037,100\n4191,0,0,13,29,,,171004,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,356,0,34,98,1,0,10,5.8749308586120605,100\n4193,0,0,12,33,,,151687,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,400,1,39,105,1,0,15,5.991464614868164,225\n4195,0,0,12,31,12,12,128652,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,413,0,21,85,1,1,13,6.023447513580322,169\n4198,0,0,14,33,12,10,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,531,0,42,105,1,0,13,6.274762153625488,169\n4199,0,0,16,29,12,10,526305,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,635,0,39,122,1,0,7,6.453625202178955,49\n4200,0,0,14,27,18,12,402877,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,144,1,36,114,1,1,7,4.969813346862793,49\n4201,0,0,14,31,17,13,526305,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,550,0,36,129,1,0,11,6.309918403625488,121\n4205,0,0,12,32,7,8,107063,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,486,0,33,100,6,1,14,6.186208724975586,196\n4207,0,0,17,31,9,14,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,598,0,40,108,1,1,8,6.393590927124023,64\n4212,0,0,14,26,,16,453117,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,462,1,26,,1,1,6,6.135564804077148,36\n4213,0,0,16,26,,16,453117,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,812,0,32,,1,1,4,6.699500560760498,16\n4214,0,0,12,25,8,11,391645,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,625,0,22,,1,0,7,6.437751770019531,49\n4215,0,0,12,31,3,,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1043,0,33,,1,0,13,6.949856281280518,169\n4216,0,0,16,27,8,12,447641,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,800,0,38,122,6,1,5,6.684611797332764,25\n4217,0,0,16,27,8,9,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,812,1,36,119,1,1,5,6.699500560760498,25\n4218,0,0,17,26,8,8,739808,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,433,0,40,129,6,1,3,6.070737838745117,9\n4221,0,0,17,28,8,8,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,751,0,32,79,1,1,5,6.621405601501465,25\n4224,0,0,14,26,10,12,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,294,0,39,109,6,1,6,5.683579921722412,36\n4228,0,1,12,25,12,12,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,427,0,30,105,1,1,7,6.056784152984619,49\n4229,0,1,12,33,,,321797,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,700,0,47,90,1,1,15,6.551080226898193,225\n4232,0,1,16,25,12,12,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,284,0,30,,1,1,3,5.648974418640137,9\n4233,0,1,14,27,13,14,369904,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,542,1,28,101,1,1,7,6.295266151428223,49\n4238,0,1,12,25,12,12,323633,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,480,0,35,83,1,1,7,6.173786163330078,49\n4239,0,1,16,26,13,14,332914,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,378,0,32,,1,1,4,5.93489408493042,16\n4240,0,1,16,30,,,591935,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,508,0,38,111,1,1,8,6.2304816246032715,64\n4241,0,1,12,25,,,440484,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,500,0,26,,1,1,7,6.214608192443848,49\n4243,0,1,12,33,12,8,357552,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,723,0,42,110,1,0,15,6.583409309387207,225\n4244,0,1,12,25,14,14,359592,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,220,0,32,92,6,1,7,5.393627643585205,49\n4246,0,1,15,24,,,359592,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,475,0,22,,5,1,3,6.1633148193359375,9\n4248,0,1,13,26,10,10,402877,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1202,0,36,113,1,0,7,7.091742038726807,49\n4249,0,1,13,24,12,12,391645,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,400,0,26,115,6,1,5,5.991464614868164,25\n4250,0,1,16,29,12,12,526305,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,601,0,36,109,6,1,7,6.398594856262207,49\n4254,0,1,12,29,12,8,434907,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,481,0,35,114,5,1,11,6.175867080688477,121\n4255,0,1,16,33,7,12,437985,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,700,0,39,110,1,1,11,6.551080226898193,121\n4256,0,1,12,27,10,9,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,769,0,43,102,1,1,9,6.6450910568237305,81\n4257,0,1,14,25,10,9,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,529,0,34,118,1,1,5,6.270988464355469,25\n4260,0,1,16,30,12,9,545297,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,450,1,37,112,1,0,8,6.10924768447876,64\n4262,0,1,10,34,6,,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,563,0,31,86,1,0,18,6.333279609680176,324\n4263,0,1,13,32,7,0,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,649,0,42,114,1,0,13,6.475432872772217,169\n4265,0,1,8,32,9,12,403476,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,470,0,33,,1,0,18,6.152732849121094,324\n4268,0,1,16,24,14,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,275,0,31,,6,1,2,5.616771221160889,4\n4269,0,1,16,33,10,8,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,719,1,40,102,1,1,11,6.577861309051514,121\n4270,0,1,12,33,,,403476,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,1082,0,42,105,1,1,15,6.986566543579102,225\n4274,0,1,16,34,6,10,403476,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,673,0,51,83,1,1,12,6.511745452880859,144\n4275,1,0,18,24,15,12,425871,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,350,0,31,107,1,1,0,5.857933044433594,0\n4276,1,0,14,28,5,9,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,769,0,34,81,1,1,8,6.6450910568237305,64\n4278,1,0,12,26,0,6,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,650,0,26,85,1,1,8,6.476972579956055,64\n4279,1,0,9,30,,4,139895,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,751,0,34,72,1,0,15,6.621405601501465,225\n4280,1,0,10,27,,4,107087,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,356,0,23,,1,0,11,5.8749308586120605,121\n4281,1,0,9,24,,4,104102,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,250,0,14,,1,0,9,5.521461009979248,81\n4282,1,0,12,28,7,6,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,401,0,35,86,6,1,10,5.993961334228516,100\n4283,1,0,11,25,7,6,104102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,425,0,38,,1,1,8,6.052089214324951,64\n4284,1,0,9,25,7,6,104102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,287,0,26,,1,1,10,5.659482002258301,100\n4285,1,0,13,26,6,12,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,309,1,18,,1,1,7,5.733341217041016,49\n4286,1,0,14,24,6,12,76585,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,578,0,21,,1,0,4,6.359573841094971,16\n4288,1,0,16,30,7,8,118905,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,438,0,29,,1,0,8,6.082219123840332,64\n4289,1,0,12,31,8,12,572299,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,450,0,38,68,1,0,13,6.10924768447876,169\n4290,1,0,17,28,,15,438085,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,173,1,36,115,1,1,5,5.153291702270508,25\n4294,1,0,16,27,8,9,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,529,1,19,,1,0,5,6.270988464355469,25\n4295,1,0,12,30,8,,118905,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,482,0,27,,5,0,12,6.177944183349609,144\n4296,1,0,12,27,8,,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,833,0,18,,1,0,9,6.725033760070801,81\n4297,1,0,12,34,,6,112480,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,260,0,22,95,6,0,16,5.5606818199157715,256\n4298,1,0,12,25,,3,75607,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,279,0,22,,6,1,7,5.631211757659912,49\n4301,1,0,13,25,,,75607,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,350,0,29,,1,1,6,5.857933044433594,36\n4302,1,0,11,24,5,11,82135,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,145,0,20,,1,1,7,4.976733684539795,49\n4304,1,0,10,27,,12,81081,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,230,0,26,,1,1,11,5.438079357147217,121\n4305,1,0,15,24,,12,79093,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,450,0,14,,5,1,3,6.10924768447876,9\n4307,1,0,16,25,12,12,89271,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,385,0,31,87,6,1,3,5.953243255615234,9\n4308,1,0,17,34,13,12,103511,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,817,0,42,116,1,1,11,6.705638885498047,121\n4309,1,0,16,30,13,12,119965,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,962,0,37,95,1,1,8,6.869014263153076,64\n4310,1,0,13,28,14,12,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,408,0,32,94,1,1,9,6.011267185211182,81\n4311,1,0,16,25,14,12,89271,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,526,0,29,,6,1,3,6.26530122756958,9\n4312,1,0,13,24,14,10,89271,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,0,0,578,0,35,,1,1,5,6.359573841094971,25\n4313,1,0,14,28,6,10,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,620,0,45,96,1,1,8,6.4297194480896,64\n4317,0,1,12,25,7,12,104102,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,230,0,29,99,6,1,7,5.438079357147217,49\n4318,0,1,11,30,2,5,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,580,0,33,,1,1,13,6.363028049468994,169\n4319,0,1,18,32,6,12,470506,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1155,0,45,106,6,1,8,7.051855564117432,64\n4320,0,1,12,28,,,92784,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,380,0,24,,1,0,10,5.940171241760254,100\n4322,0,1,16,27,10,12,78509,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,616,0,26,,6,1,5,6.42324686050415,25\n4324,0,1,12,28,10,8,78509,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,450,0,28,,1,0,10,6.10924768447876,100\n4325,0,1,12,25,10,8,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,425,0,30,,1,0,7,6.052089214324951,49\n4326,0,1,12,28,8,2,92784,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,500,0,36,85,1,0,10,6.214608192443848,100\n4328,0,1,12,25,12,12,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,713,0,16,,1,1,7,6.569481372833252,49\n4329,0,1,12,25,4,12,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,750,0,32,100,1,1,7,6.620073318481445,49\n4330,0,1,15,24,4,12,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,323,1,37,92,1,1,3,5.777652263641357,9\n4333,0,1,13,28,8,12,417415,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1038,0,38,101,1,0,9,6.945051193237305,81\n4334,0,1,16,25,16,15,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,491,0,30,104,1,1,3,6.196444034576416,9\n4335,0,1,13,29,10,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,525,0,37,88,6,1,10,6.263398170471191,100\n4337,0,1,11,29,5,5,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,388,0,26,,1,1,12,5.961005210876465,144\n4338,0,1,10,26,12,2,78509,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,460,0,21,,1,1,10,6.131226539611816,100\n4342,0,1,15,24,5,8,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,400,0,22,,6,0,3,5.991464614868164,9\n4343,0,1,15,27,9,16,78509,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,737,0,31,97,1,1,6,6.602587699890137,36\n4345,0,1,14,26,6,10,78509,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,599,0,34,83,5,1,6,6.395261764526367,36\n4351,0,0,18,33,18,18,127041,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1131,0,43,71,4,1,9,7.030857563018799,81\n4355,0,1,14,25,,,76585,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,601,0,30,100,6,1,5,6.398594856262207,25\n4356,0,1,10,26,,11,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,298,0,22,,6,0,10,5.697093486785889,100\n4357,0,1,12,27,,,78509,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,235,0,39,96,6,1,9,5.459585666656494,81\n4358,0,1,13,25,,,76585,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,220,1,20,113,1,1,6,5.393627643585205,36\n4359,0,1,8,26,,11,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,697,0,26,,1,0,12,6.546785354614258,144\n4360,0,1,9,24,,11,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,542,0,20,,6,0,9,6.295266151428223,81\n4361,0,1,12,25,,8,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,250,0,29,,6,1,7,5.521461009979248,49\n4364,0,1,16,26,12,12,438085,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,400,0,39,117,4,0,4,5.991464614868164,16\n4365,0,1,15,31,,,572299,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,423,1,39,101,6,0,10,6.047372341156006,100\n4368,0,1,12,25,6,5,104102,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,290,0,,65,6,1,7,5.6698808670043945,49\n4370,0,1,10,33,,10,112480,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,247,0,32,,6,0,17,5.509388446807861,289\n4372,0,1,13,26,,10,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,380,1,33,87,1,0,7,5.940171241760254,49\n4373,0,1,12,24,12,9,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,656,0,37,116,1,0,6,6.486160755157471,36\n4374,0,1,12,32,9,12,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,711,0,42,106,1,1,14,6.566672325134277,196\n4375,0,1,14,29,8,12,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,481,0,35,93,6,1,9,6.175867080688477,81\n4376,0,1,16,25,8,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,641,0,35,112,1,1,3,6.463029384613037,9\n4377,0,1,12,32,12,14,403476,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,596,0,45,98,5,1,14,6.390240669250488,196\n4378,0,1,7,31,,,545297,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,578,0,35,,1,0,18,6.359573841094971,324\n4380,1,0,16,30,,12,572299,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,678,1,37,,1,1,8,6.5191473960876465,64\n4383,1,0,16,32,11,14,470506,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1538,0,37,103,1,1,10,7.33823823928833,100\n4384,1,0,12,33,9,12,470506,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,860,0,36,103,1,0,15,6.756932258605957,225\n4385,1,0,18,32,12,16,423456,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,534,0,49,,6,1,8,6.280395984649658,64\n4386,1,0,12,27,12,12,438085,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,1,308,0,34,91,1,0,9,5.730099678039551,81\n4387,1,0,14,29,12,,635888,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,600,0,41,118,1,1,9,6.396929740905762,81\n4388,1,0,8,31,,,572299,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,625,0,20,,1,0,17,6.437751770019531,289\n4392,1,0,13,29,10,10,139895,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,540,0,28,87,1,0,10,6.291569232940674,100\n4396,1,0,13,27,12,10,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,344,0,22,100,1,0,8,5.840641498565674,64\n4397,1,0,12,25,12,10,104102,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,500,0,39,96,1,1,7,6.214608192443848,49\n4398,1,0,11,26,6,9,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,320,1,16,,1,0,9,5.7683210372924805,81\n4400,1,0,18,27,4,10,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,378,0,29,62,1,0,3,5.93489408493042,9\n4401,1,0,15,25,4,10,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,188,1,14,60,6,0,4,5.2364420890808105,16\n4404,1,0,9,33,4,10,111044,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,168,0,19,,5,0,18,5.123963832855225,324\n4405,1,0,2,25,6,,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,250,0,12,,6,0,17,5.521461009979248,289\n4406,1,0,3,24,6,5,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,190,0,8,,6,0,15,5.247024059295654,225\n4407,1,0,12,28,8,8,92784,1,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,1000,0,31,83,1,0,10,6.907755374908447,100\n4408,1,0,12,24,,,75607,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,564,0,20,100,6,0,6,6.335054397583008,36\n4409,1,0,9,24,,7,75607,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,624,0,17,,1,0,9,6.436150550842285,81\n4410,1,0,12,24,,,75607,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,714,0,26,,1,0,6,6.570882797241211,36\n4411,1,0,12,24,12,10,82135,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,538,0,40,123,1,0,6,6.287858486175537,36\n4413,1,0,13,26,9,8,317074,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,355,0,22,67,1,0,7,5.87211799621582,49\n4414,1,0,12,24,,12,309300,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,240,0,28,,6,0,6,5.4806389808654785,36\n4417,1,0,12,24,9,12,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,418,0,22,,1,0,6,6.0354814529418945,36\n4418,0,1,13,27,14,13,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1026,0,42,104,1,1,8,6.933423042297363,64\n4419,0,1,17,32,12,14,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,295,0,34,106,6,1,9,5.686975479125977,81\n4421,0,1,12,26,,6,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,550,1,24,85,1,1,8,6.309918403625488,64\n4422,0,1,12,27,,8,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,538,0,27,81,1,1,9,6.287858486175537,81\n4424,0,1,5,30,2,3,139895,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,350,0,37,,1,0,19,5.857933044433594,361\n4425,0,1,12,27,8,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,711,0,37,109,1,1,9,6.566672325134277,81\n4428,0,1,12,29,4,4,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,229,0,20,76,1,0,11,5.433722019195557,121\n4429,0,1,12,27,4,3,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,220,0,31,73,1,0,9,5.393627643585205,81\n4431,0,1,12,29,8,2,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,310,0,26,62,1,0,11,5.736572265625,121\n4433,0,1,12,24,10,,76585,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,320,0,28,76,1,1,6,5.7683210372924805,36\n4434,0,1,12,27,10,9,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,303,0,26,76,1,1,9,5.713732719421387,81\n4437,0,1,13,26,5,12,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,450,1,36,104,1,1,7,6.10924768447876,49\n4438,0,1,12,29,9,11,540475,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,753,0,29,,1,0,11,6.624065399169922,121\n4440,0,1,12,26,4,11,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,438,0,35,103,1,0,8,6.082219123840332,64\n4442,0,1,11,28,1,7,331693,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,27,,1,0,11,5.783825397491455,121\n4444,0,1,16,32,,12,363128,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,846,0,44,106,1,0,10,6.7405195236206055,100\n4445,0,1,14,26,12,14,375674,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,313,0,49,112,1,1,6,5.746203422546387,36\n4446,0,1,13,34,7,12,81669,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,479,0,38,,1,1,15,6.171700477600098,225\n4448,0,1,12,31,10,9,110376,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,429,0,24,94,6,1,13,6.06145715713501,169\n4449,0,1,14,29,11,9,110376,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,490,1,25,83,1,1,9,6.194405555725098,81\n4450,0,1,12,24,11,9,82135,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,361,0,34,,6,1,6,5.888877868652344,36\n4451,0,1,14,33,0,2,104904,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,400,1,40,91,1,0,13,5.991464614868164,169\n4454,0,1,12,24,7,8,309300,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,423,0,30,,1,0,6,6.047372341156006,36\n4458,0,1,12,27,5,5,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,311,0,12,,6,0,9,5.739792823791504,81\n4459,0,1,11,27,3,7,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,271,0,12,,6,0,10,5.602118968963623,100\n4461,0,1,18,26,12,12,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,385,0,33,,6,0,2,5.953243255615234,4\n4462,0,1,16,24,12,12,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,529,1,18,,1,0,2,6.270988464355469,4\n4464,0,1,11,31,6,10,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,700,0,29,81,1,1,14,6.551080226898193,196\n4467,0,1,10,32,6,5,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,381,0,15,87,1,1,16,5.9427995681762695,256\n4470,0,1,12,28,12,12,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,465,0,36,118,1,1,10,6.142037391662598,100\n4471,0,1,10,34,8,8,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,400,0,37,,1,0,18,5.991464614868164,324\n4473,0,1,10,33,9,8,88765,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,455,0,38,,6,1,17,6.120297431945801,289\n4476,0,0,12,24,,4,90509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,260,0,20,,1,0,6,5.5606818199157715,36\n4477,0,0,13,28,0,7,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,705,0,26,,1,0,9,6.558197975158691,81\n4482,0,0,13,30,,,635888,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,417,0,45,74,1,1,11,6.03308629989624,121\n4486,0,0,11,27,,13,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,14,,6,0,10,5.521461009979248,100\n4488,0,0,12,24,,2,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,460,0,28,,1,0,6,6.131226539611816,36\n4489,0,0,8,26,,,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,19,,1,0,12,5.783825397491455,144\n4490,0,0,9,25,,,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,275,0,15,,2,0,10,5.616771221160889,100\n4491,0,0,12,26,7,,321175,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,18,,1,1,8,5.783825397491455,64\n4492,0,0,15,25,,8,313301,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,300,1,20,,1,0,4,5.703782558441162,16\n4493,0,0,8,31,,8,540475,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,17,,6,0,17,5.521461009979248,289\n4495,0,0,12,28,9,10,417415,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,288,0,39,,1,1,10,5.662960529327393,100\n4497,0,0,13,28,3,8,92784,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,550,1,16,85,1,0,9,6.309918403625488,81\n4500,0,0,12,33,12,12,81669,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,429,1,38,,1,1,15,6.06145715713501,225\n4501,0,0,8,30,,,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,375,0,23,,1,0,16,5.926926136016846,256\n4503,0,0,9,30,5,4,110376,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,577,0,26,,1,0,15,6.357842445373535,225\n4504,0,0,13,25,5,,82135,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,531,0,25,96,6,0,6,6.274762153625488,36\n4505,0,0,12,24,4,,82135,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,250,1,22,,6,0,6,5.521461009979248,36\n4506,0,0,12,27,,8,84491,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,440,0,27,73,1,1,9,6.086774826049805,81\n4507,0,0,12,26,,6,84491,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,457,0,27,75,1,0,8,6.124683380126953,64\n4508,0,0,12,27,5,5,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,438,0,34,95,1,1,9,6.082219123840332,81\n4511,0,0,12,27,,5,317074,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,550,0,42,102,4,1,9,6.309918403625488,81\n4512,0,0,16,25,12,16,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,650,0,31,107,1,1,3,6.476972579956055,9\n4514,0,0,11,26,7,3,438085,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,423,0,19,86,1,0,9,6.047372341156006,81\n4516,0,0,13,27,18,8,438085,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,420,0,41,104,1,1,8,6.040254592895508,64\n4517,0,0,14,25,18,8,425871,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,200,1,43,106,6,1,5,5.2983174324035645,25\n4518,0,0,8,26,3,10,438085,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,400,0,24,,1,0,12,5.991464614868164,144\n4519,0,0,9,24,5,,425871,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,300,0,16,,1,0,9,5.703782558441162,81\n4520,0,0,12,30,5,7,451538,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,714,0,21,95,1,0,12,6.570882797241211,144\n4521,0,0,12,25,12,8,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,398,0,37,116,1,0,7,5.986452102661133,49\n4522,0,0,9,29,6,8,490767,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,398,0,20,66,1,0,14,5.986452102661133,196\n4523,0,0,16,28,5,0,375674,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,734,0,38,101,1,1,6,6.598508834838867,36\n4525,0,0,12,25,12,12,336009,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,688,0,23,96,1,0,7,6.533788681030273,49\n4530,0,0,6,28,3,11,107087,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,212,0,,,6,1,16,5.356586456298828,256\n4531,0,0,12,31,,9,165331,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,455,0,41,104,1,0,13,6.120297431945801,169\n4534,0,0,15,24,17,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,350,0,32,,6,1,3,5.857933044433594,9\n4535,0,0,16,28,,16,438085,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,577,0,39,138,6,1,6,6.357842445373535,36\n4538,0,0,16,31,10,14,572299,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,699,0,34,105,1,0,9,6.5496506690979,81\n4539,0,0,16,27,14,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,375,0,44,106,6,1,5,5.926926136016846,25\n4540,0,0,13,24,14,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,375,0,33,,1,1,5,5.926926136016846,25\n4541,0,0,12,33,10,9,470506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,364,0,40,,1,1,15,5.897153854370117,225\n4543,0,0,12,29,11,4,118905,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,220,0,22,67,5,0,11,5.393627643585205,121\n4548,0,0,16,31,0,0,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,621,0,27,,1,0,9,6.431331157684326,81\n4551,0,0,11,31,,,140524,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,375,0,31,,5,0,14,5.926926136016846,196\n4552,0,0,16,26,12,10,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,341,0,24,97,6,0,4,5.831882476806641,16\n4553,0,0,16,24,12,10,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,380,0,16,,1,0,2,5.940171241760254,4\n4554,0,0,11,32,,,470506,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,260,0,37,,1,0,15,5.5606818199157715,225\n4557,0,0,8,30,,,117386,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,489,0,30,,1,0,16,6.192362308502197,256\n4558,0,0,11,26,8,9,317074,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,433,0,18,,1,0,9,6.070737838745117,81\n4560,0,0,11,27,8,,317074,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,365,0,19,,1,0,10,5.899897575378418,100\n4562,0,0,14,33,,,504746,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,257,0,41,,1,0,13,5.549076080322266,169\n4564,0,0,14,26,12,12,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,513,1,29,,1,0,6,6.240275859832764,36\n4565,0,0,15,31,8,9,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,288,0,40,108,1,0,10,5.662960529327393,100\n4567,0,0,18,30,8,13,451538,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,866,0,44,125,1,1,6,6.763885021209717,36\n4568,0,0,12,25,7,8,89271,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,433,0,34,106,5,0,7,6.070737838745117,49\n4569,0,0,1,29,0,3,110376,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,500,0,8,,1,0,22,6.214608192443848,484\n4572,0,0,16,24,12,12,336009,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,548,0,32,,1,0,2,6.306275367736816,4\n4573,0,0,12,29,4,6,451538,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,400,0,25,99,1,0,11,5.991464614868164,121\n4574,0,0,9,30,,8,119965,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,433,0,20,,1,0,15,6.070737838745117,225\n4579,1,0,13,24,16,13,425871,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,375,0,26,,1,1,5,5.926926136016846,25\n4580,1,0,12,32,12,12,423456,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,547,0,42,96,1,0,14,6.30444860458374,196\n4584,1,0,12,24,12,12,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,375,0,24,,6,1,6,5.926926136016846,36\n4586,1,0,14,25,10,12,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,500,0,33,114,1,1,5,6.214608192443848,25\n4587,1,0,16,24,18,15,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,355,1,36,117,1,1,2,5.87211799621582,4\n4589,1,0,12,29,9,12,490767,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,600,0,34,105,1,1,11,6.396929740905762,121\n4590,1,0,12,34,2,3,1693822,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,650,0,40,106,1,0,16,6.476972579956055,256\n4591,1,0,12,32,8,8,1693822,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,848,0,44,102,1,0,14,6.742880821228027,196\n4592,1,0,12,27,10,9,1752340,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,325,0,33,,1,0,9,5.783825397491455,81\n4593,0,1,12,33,,,460147,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,289,0,35,75,5,0,15,5.666426658630371,225\n4594,0,1,14,24,5,5,313301,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,457,0,27,99,1,0,4,6.124683380126953,16\n4596,0,1,14,29,12,12,486428,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,711,0,35,,1,1,9,6.566672325134277,81\n4601,0,1,13,34,11,12,470506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,413,0,46,90,1,0,15,6.023447513580322,225\n4603,0,1,16,25,,16,75607,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,649,0,26,101,6,0,3,6.475432872772217,9\n4606,0,1,13,26,,,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,633,0,37,115,1,0,7,6.450470447540283,49\n4607,0,1,16,28,10,12,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,721,0,37,118,1,0,6,6.580639362335205,36\n4609,0,1,12,32,12,9,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,913,0,40,108,1,1,14,6.816735744476318,196\n4610,0,1,13,26,8,5,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,375,1,29,101,1,0,7,5.926926136016846,49\n4611,0,1,18,27,12,12,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,592,0,37,127,1,0,3,6.383506774902344,9\n4616,0,0,16,32,,12,103511,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,764,0,41,114,1,0,10,6.638567924499512,100\n4617,0,0,12,26,4,9,107087,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,500,0,24,,1,0,8,6.214608192443848,64\n4622,0,0,11,25,11,10,309300,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,275,0,30,76,1,1,8,5.616771221160889,64\n4623,0,0,10,24,11,10,309300,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,260,0,20,,6,1,8,5.5606818199157715,64\n4624,0,0,16,28,12,16,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,962,0,42,132,6,1,6,6.869014263153076,36\n4625,0,0,12,28,,3,77507,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,625,0,28,50,1,0,10,6.437751770019531,100\n4626,0,0,12,26,,,77507,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,333,0,26,84,1,0,8,5.80814266204834,64\n4627,0,0,12,29,,10,117386,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,625,0,23,55,1,0,11,6.437751770019531,121\n4628,0,0,10,24,,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,18,,6,0,8,5.521461009979248,64\n4629,0,0,12,34,,,111044,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,359,0,23,73,1,0,16,5.883322238922119,256\n4631,0,0,12,34,,6,111044,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,550,0,19,,1,0,16,6.309918403625488,256\n4632,0,0,12,24,,,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,403,0,16,61,1,0,6,5.998936653137207,36\n4635,0,0,11,26,9,9,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,463,0,14,84,6,0,9,6.1377272605896,81\n4637,0,0,12,24,4,5,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,396,0,12,,6,0,6,5.981414318084717,36\n4639,0,0,12,24,,8,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,278,0,20,,6,0,6,5.627621173858643,36\n4642,1,0,14,27,,,78509,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,400,0,28,71,1,0,7,5.991464614868164,49\n4643,1,0,16,24,,,76585,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,415,0,27,84,1,0,2,6.028278350830078,4\n4644,1,0,12,33,7,7,112480,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,462,0,36,,1,0,15,6.135564804077148,225\n4645,1,0,18,33,,,103511,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1442,0,44,101,6,0,9,7.273786544799805,81\n4648,1,0,4,27,,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,125,0,,,6,0,17,4.828313827514648,289\n4650,1,0,10,34,,8,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,200,0,22,,1,0,18,5.2983174324035645,324\n4654,1,0,10,31,,9,117386,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,18,,1,0,15,5.703782558441162,225\n4655,1,0,10,32,,9,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,521,0,28,,1,0,16,6.2557501792907715,256\n4656,1,0,13,25,10,12,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,266,0,24,69,1,0,6,5.58349609375,36\n4657,1,0,11,26,,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,18,80,1,0,9,5.783825397491455,81\n4659,1,0,9,30,7,10,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,350,0,19,,5,0,15,5.857933044433594,225\n4660,1,0,9,34,,,111044,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,340,0,41,,1,0,19,5.828945636749268,361\n4661,1,0,13,25,3,7,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,625,0,28,,1,0,6,6.437751770019531,36\n4662,1,0,10,29,,9,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,214,0,16,69,1,0,13,5.365975856781006,169\n4663,1,0,12,28,9,12,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,688,0,37,104,1,0,10,6.533788681030273,100\n4664,1,0,8,32,5,12,81669,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,275,0,31,,1,0,18,5.616771221160889,324\n4666,1,0,10,32,6,10,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,457,0,40,92,1,1,16,6.124683380126953,256\n4668,1,0,12,26,,8,95822,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,615,0,28,,5,0,8,6.421622276306152,64\n4671,1,0,16,25,13,,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,732,0,40,102,1,0,3,6.595780372619629,9\n4672,1,0,12,26,,,81081,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,163,0,25,,5,0,8,5.09375,64\n4673,1,0,8,24,,,79093,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,260,0,18,,6,0,10,5.5606818199157715,100\n4674,1,0,11,27,,,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,492,0,26,,1,0,10,6.198478698730469,100\n4675,1,0,12,26,,,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,575,0,16,,1,0,8,6.3543701171875,64\n4678,1,0,12,25,,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,510,0,22,,5,0,7,6.234410762786865,49\n4680,1,0,8,26,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,565,0,16,,6,0,12,6.336825847625732,144\n4682,1,0,9,29,6,4,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,515,0,23,,6,0,14,6.244166851043701,196\n4683,1,0,8,25,6,4,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,471,0,18,,1,0,11,6.154858112335205,121\n4684,1,0,13,27,,12,77507,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,335,1,21,97,1,0,8,5.8141303062438965,64\n4686,1,0,12,28,6,10,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,481,0,27,83,1,0,10,6.175867080688477,100\n4687,1,0,12,26,6,10,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,642,0,36,98,1,1,8,6.464588165283203,64\n4688,1,0,10,25,7,10,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,573,0,25,70,1,0,9,6.35088586807251,81\n4692,1,0,6,32,,,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,315,0,19,,1,0,20,5.752572536468506,400\n4693,1,0,11,30,0,8,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,360,0,45,,1,0,13,5.886104106903076,169\n4696,1,0,12,25,,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,339,0,26,90,6,0,7,5.826000213623047,49\n4697,1,0,13,26,10,4,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,400,0,26,87,1,0,7,5.991464614868164,49\n4698,1,0,15,24,,12,89271,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,300,0,38,96,6,0,3,5.703782558441162,9\n4699,1,0,10,34,10,12,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,580,0,34,80,1,0,18,6.363028049468994,324\n4700,1,0,14,24,8,12,89271,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,321,0,34,102,6,0,4,5.7714409828186035,16\n4701,1,0,12,26,2,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,475,0,21,79,6,1,8,6.1633148193359375,64\n4702,1,0,7,25,2,,79093,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,445,0,16,,1,0,12,6.098074436187744,144\n4704,1,0,6,25,,6,79093,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,4,,5,0,13,5.703782558441162,169\n4711,1,0,10,27,,5,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,252,0,14,,1,1,11,5.529428958892822,121\n4712,1,0,12,25,9,2,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,419,0,20,,1,1,7,6.03787088394165,49\n4713,1,0,6,34,,,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,317,0,30,,1,0,22,5.758901596069336,484\n4715,1,0,16,29,10,12,141777,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,553,0,40,104,1,0,7,6.3153581619262695,49\n4716,0,0,18,31,8,9,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,721,0,35,104,1,1,7,6.580639362335205,49\n4721,0,0,13,25,8,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,729,0,30,101,6,1,6,6.591673851013184,36\n4722,0,0,12,25,5,8,336009,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,314,0,28,115,1,0,7,5.749392986297607,49\n4723,0,0,9,27,9,3,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,220,0,18,,6,0,12,5.393627643585205,144\n4724,0,1,8,25,,4,76585,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,235,0,24,,1,0,11,5.459585666656494,121\n4730,0,1,9,27,,5,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,333,0,22,,1,0,12,5.80814266204834,144\n4731,0,1,11,26,,5,78509,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,333,0,12,,1,0,9,5.80814266204834,81\n4733,0,1,11,30,9,7,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,333,0,,,6,0,13,5.80814266204834,169\n4734,0,1,12,28,9,7,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,380,0,26,,1,0,10,5.940171241760254,100\n4735,0,1,12,26,9,7,78509,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,390,0,24,,4,0,8,5.966146945953369,64\n4736,0,1,5,34,,6,112480,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,18,,5,0,23,5.521461009979248,529\n4738,0,1,17,27,6,11,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,673,1,27,107,6,0,4,6.511745452880859,16\n4739,0,1,16,26,7,10,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,483,1,29,98,6,0,4,6.18001651763916,16\n4740,0,1,16,25,7,10,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,769,0,25,96,6,0,3,6.6450910568237305,9\n4743,0,1,4,25,0,4,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,325,0,8,,1,0,15,5.783825397491455,225\n4744,0,1,11,30,,,117386,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,465,0,18,,1,0,13,6.142037391662598,169\n4748,0,1,14,24,16,10,82135,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,350,0,21,,6,0,4,5.857933044433594,16\n4749,0,1,12,26,3,6,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,375,0,25,,1,0,8,5.926926136016846,64\n4752,0,1,5,27,1,1,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,300,0,35,,1,0,16,5.703782558441162,256\n4756,0,1,16,25,7,10,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,475,0,21,,1,0,3,6.1633148193359375,9\n4757,0,1,12,27,,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,528,0,18,,1,1,9,6.269096374511719,81\n4758,0,1,10,26,,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,513,0,27,,1,0,10,6.240275859832764,100\n4759,0,1,12,27,,,81081,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,445,0,32,,2,0,9,6.098074436187744,81\n4760,0,1,11,29,7,6,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,265,0,28,,1,0,12,5.579730033874512,144\n4761,0,1,12,27,7,6,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,260,0,16,,1,0,9,5.5606818199157715,81\n4763,0,1,9,24,0,7,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,318,0,10,,5,0,9,5.762051582336426,81\n4764,0,0,12,26,12,11,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,626,0,39,99,1,1,8,6.439350605010986,64\n4765,0,0,11,25,14,9,309300,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,400,0,33,,6,0,8,5.991464614868164,64\n4766,0,0,14,24,11,10,336009,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,378,0,25,,1,0,4,5.93489408493042,16\n4768,0,0,16,29,18,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,803,0,34,112,1,1,7,6.6883544921875,49\n4769,0,0,16,25,18,12,309300,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,447,0,25,118,4,1,3,6.102558612823486,9\n4771,1,0,15,28,12,9,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,319,0,26,83,1,0,7,5.765191078186035,49\n4772,1,0,8,30,,2,572299,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,401,0,25,,1,0,16,5.993961334228516,256\n4773,1,0,9,27,2,2,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,438,0,31,,6,0,12,6.082219123840332,144\n4774,1,0,10,24,2,2,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,417,0,36,,1,0,8,6.03308629989624,64\n4775,1,0,10,25,5,11,473190,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,375,0,24,,1,1,9,5.926926136016846,81\n4776,1,0,16,30,12,12,572299,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,616,0,41,107,1,1,8,6.42324686050415,64\n4777,1,0,12,28,13,12,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,354,0,38,91,1,1,10,5.869297027587891,100\n4778,1,0,18,28,18,12,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,425,0,24,96,1,0,4,6.052089214324951,16\n4779,1,0,12,26,18,12,438085,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,265,0,24,89,6,1,8,5.579730033874512,64\n4784,1,0,14,24,13,13,425871,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,426,0,41,118,5,1,4,6.054439544677734,16\n4786,1,0,12,25,13,10,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,250,0,39,113,1,1,7,5.521461009979248,49\n4787,1,0,17,25,12,12,405778,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,560,0,33,116,5,1,2,6.32793664932251,4\n4789,1,0,12,29,7,7,451538,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,289,0,29,105,1,0,11,5.666426658630371,121\n4790,1,0,16,26,7,7,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,393,0,30,120,1,1,4,5.973809719085693,16\n4791,1,0,12,26,6,7,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,577,0,32,107,1,1,8,6.357842445373535,64\n4793,1,0,17,32,12,11,363128,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,346,0,49,94,1,1,9,5.846438884735107,81\n4794,1,0,16,28,12,12,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1282,0,31,98,1,1,6,7.156176567077637,36\n4795,1,1,17,28,12,16,375674,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,865,1,36,126,1,0,5,6.762729644775391,25\n4796,1,1,14,24,12,16,365200,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,413,0,28,96,1,1,4,6.023447513580322,16\n4799,1,1,6,29,,12,490767,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,225,0,25,,6,0,17,5.41610050201416,289\n4803,0,1,14,27,4,7,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,404,0,39,84,6,1,7,6.001414775848389,49\n4804,0,1,12,31,3,7,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,721,0,36,108,1,1,13,6.580639362335205,169\n4805,0,1,12,30,3,8,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,577,0,32,104,1,1,12,6.357842445373535,144\n4806,0,1,12,26,6,8,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,500,0,20,110,1,0,8,6.214608192443848,64\n4808,0,1,12,29,7,6,490767,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,250,0,35,96,1,1,11,5.521461009979248,121\n4810,0,1,12,26,7,7,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,155,0,28,106,1,1,8,5.0434250831604,64\n4811,0,1,12,27,6,7,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,406,1,18,68,1,1,9,6.006353378295898,81\n4818,1,0,12,33,,3,112480,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,350,0,45,83,1,1,15,5.857933044433594,225\n4819,1,0,12,26,,,157019,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,462,0,24,66,2,1,8,6.135564804077148,64\n4821,1,0,10,34,7,12,207023,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,500,0,34,70,1,1,18,6.214608192443848,324\n4822,1,0,16,30,12,11,279791,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,846,0,39,104,1,1,8,6.7405195236206055,64\n4823,1,0,12,29,9,12,279791,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,577,0,41,87,1,1,11,6.357842445373535,121\n4824,1,0,16,28,10,12,214175,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,400,0,38,110,1,1,6,5.991464614868164,36\n4827,1,0,11,34,8,12,470506,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,741,0,38,87,1,1,17,6.608000755310059,289\n4831,1,0,14,25,12,12,1460801,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,350,0,31,100,6,1,5,5.857933044433594,25\n4832,1,0,12,26,12,14,1502694,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,438,0,42,91,1,1,8,6.082219123840332,64\n4833,1,0,13,25,16,15,178542,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,727,0,35,,5,1,6,6.588926315307617,36\n4834,1,0,11,25,4,6,178542,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,970,0,28,,1,1,8,6.877295970916748,64\n4837,0,0,16,30,12,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,751,0,48,109,1,0,8,6.621405601501465,64\n4838,0,0,18,30,18,14,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,577,0,42,112,1,1,6,6.357842445373535,36\n4840,0,0,16,30,12,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,404,0,31,106,1,0,8,6.001414775848389,64\n4841,0,0,12,30,12,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,616,0,36,94,1,0,12,6.42324686050415,144\n4842,0,0,16,25,8,6,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,230,0,36,,1,0,3,5.438079357147217,9\n4843,0,0,12,24,8,6,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,142,0,30,,6,0,6,4.955827236175537,36\n4844,0,0,18,30,9,12,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,385,0,45,,1,1,6,5.953243255615234,36\n4845,0,0,12,27,13,6,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,385,0,30,95,4,0,9,5.953243255615234,81\n4849,0,0,12,24,3,,89271,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,422,0,35,,1,1,6,6.0450053215026855,36\n4851,0,0,12,27,3,6,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,650,0,23,,5,0,9,6.476972579956055,81\n4854,0,0,8,30,,4,117386,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,230,0,19,,6,0,16,5.438079357147217,256\n4857,0,0,15,30,12,12,119965,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,672,0,43,89,1,1,9,6.510258197784424,81\n4860,0,0,18,27,3,11,321175,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,354,0,42,,1,1,3,5.869297027587891,9\n4861,0,0,13,26,2,11,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,1,35,,6,0,7,5.521461009979248,49\n4862,0,0,11,31,,7,480216,0,0,1,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,25,,4,0,14,5.703782558441162,196\n4863,0,0,12,24,,2,309300,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,400,0,18,,1,1,6,5.991464614868164,36\n4864,0,0,7,34,,,454271,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,18,,1,0,21,5.703782558441162,441\n4865,0,0,13,27,,5,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,460,0,19,,1,0,8,6.131226539611816,64\n4866,0,0,12,27,,5,317074,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,432,0,18,,6,0,9,6.06842565536499,81\n4868,0,0,11,26,6,11,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,250,0,12,,1,1,9,5.521461009979248,81\n4869,0,0,5,28,,4,91831,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,315,0,24,,1,0,17,5.752572536468506,289\n4870,0,0,12,28,7,10,84491,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,625,0,38,85,4,1,10,6.437751770019531,100\n4871,0,0,10,26,9,12,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,500,0,27,97,1,1,10,6.214608192443848,100\n4872,0,0,12,27,5,7,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,331,0,26,83,6,1,9,5.802118301391602,81\n4873,0,0,12,28,10,10,345645,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,585,0,40,99,1,1,10,6.371612071990967,100\n4875,0,0,13,28,,9,77507,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,320,1,24,75,1,0,9,5.7683210372924805,81\n4877,0,0,11,28,,9,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,26,68,1,1,11,5.703782558441162,121\n4879,0,0,16,32,8,12,103511,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,738,0,41,107,1,0,10,6.603943824768066,100\n4880,0,0,12,30,,,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,385,0,30,74,6,0,12,5.953243255615234,144\n4881,0,0,13,26,6,7,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,641,1,30,105,1,0,7,6.463029384613037,49\n4882,0,0,5,32,0,7,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,325,0,18,,1,0,21,5.783825397491455,441\n4883,0,0,12,24,,4,79093,0,1,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,406,0,22,,1,0,6,6.006353378295898,36\n4886,0,0,6,32,0,7,111044,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,300,0,16,,1,0,20,5.703782558441162,400\n4887,0,0,7,29,3,,117386,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,176,0,24,,6,0,16,5.1704840660095215,256\n4888,0,0,11,27,3,,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,450,0,29,51,1,1,10,6.10924768447876,100\n4889,0,0,10,24,3,,75607,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,292,0,10,,6,1,8,5.676753997802734,64\n4890,0,0,12,27,,,486761,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,801,0,40,100,1,0,9,6.685861110687256,81\n4892,0,0,9,27,6,8,77507,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,375,0,18,75,,1,12,5.926926136016846,144\n4894,0,0,10,24,6,8,75607,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,230,0,15,,1,0,8,5.438079357147217,64\n4895,0,0,13,33,2,5,116164,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,535,1,30,83,1,0,14,6.282266616821289,196\n4896,0,0,7,31,2,5,122798,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,422,0,27,,1,1,18,6.0450053215026855,324\n4898,0,0,10,27,,6,91831,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,361,0,28,86,4,1,11,5.888877868652344,121\n4899,0,0,9,27,8,7,99853,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,300,0,37,96,1,0,12,5.703782558441162,144\n4902,0,0,12,28,9,12,84491,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,558,0,36,90,1,0,10,6.324358940124512,100\n4903,0,0,16,28,8,5,81081,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,470,0,31,,1,0,6,6.152732849121094,36\n4905,0,0,12,34,3,5,96518,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,486,0,33,86,4,0,16,6.186208724975586,256\n4906,0,0,12,26,,,91831,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,600,0,37,102,1,0,8,6.396929740905762,64\n4908,0,0,11,34,,4,116164,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,363,0,27,,1,0,17,5.894402980804443,289\n4910,0,0,10,24,1,4,79093,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,200,0,14,,,0,8,5.2983174324035645,64\n4911,0,0,8,30,,,122798,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,142,0,12,,1,0,16,4.955827236175537,256\n4912,0,0,12,33,2,2,81669,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,448,1,33,,1,0,15,6.104793071746826,225\n4916,1,0,11,29,,1,118905,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,300,0,20,,6,0,12,5.703782558441162,144\n4918,1,0,12,31,,12,139895,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,706,0,45,,1,1,13,6.559615135192871,169\n4919,1,0,12,26,,12,107087,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,534,0,43,101,1,0,8,6.280395984649658,64\n4920,1,0,13,29,5,,118905,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,260,0,27,,1,0,10,5.5606818199157715,100\n4923,1,0,12,26,6,7,78509,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,675,0,25,,1,0,8,6.514712810516357,64\n4924,1,0,7,31,1,3,118905,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,0,260,0,16,,4,0,18,5.5606818199157715,324\n4926,1,0,10,34,,,112480,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,300,0,31,,4,0,18,5.703782558441162,324\n4928,1,0,16,27,14,13,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,1215,1,40,84,6,1,5,7.102499485015869,25\n4929,1,0,17,28,12,12,107087,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,577,0,37,116,1,0,5,6.357842445373535,25\n4930,1,0,14,27,,10,77507,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,250,0,26,99,6,0,7,5.521461009979248,49\n4932,1,0,10,30,,8,117386,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,394,0,20,,6,0,14,5.976350784301758,196\n4934,1,0,8,24,4,8,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,275,0,10,,1,0,10,5.616771221160889,100\n4938,1,0,9,32,5,5,116164,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,225,0,14,,1,0,17,5.41610050201416,289\n4940,1,0,7,25,3,4,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,275,0,18,,6,0,12,5.616771221160889,144\n4943,1,0,9,30,7,8,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,356,0,14,,6,0,15,5.8749308586120605,225\n4944,1,0,12,25,7,12,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,885,0,26,,1,0,7,6.785587787628174,49\n4945,1,0,16,24,7,12,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,192,0,12,,6,0,2,5.257495403289795,4\n4946,1,0,7,29,,2,117386,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,420,0,19,,2,0,16,6.040254592895508,256\n4947,1,0,7,33,,2,111044,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,375,0,14,,1,0,20,5.926926136016846,400\n4948,1,0,7,31,,2,117386,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,364,0,,,1,0,18,5.897153854370117,324\n4949,1,0,12,26,12,11,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,400,0,37,107,1,0,8,5.991464614868164,64\n4950,1,0,12,26,10,9,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,353,0,22,,1,0,8,5.8664679527282715,64\n4952,1,0,13,29,12,14,119965,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,300,0,40,116,1,0,10,5.703782558441162,100\n4953,1,0,15,25,9,11,89271,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,416,0,33,109,1,0,4,6.0306854248046875,16\n4955,1,0,11,26,,10,81081,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,600,0,19,,1,0,9,6.396929740905762,81\n4957,1,0,13,29,3,8,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,973,1,29,,1,1,10,6.8803839683532715,100\n4959,1,0,5,29,2,,122798,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,230,0,10,,1,0,18,5.438079357147217,324\n4960,1,0,12,27,2,,81081,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,311,0,20,,1,0,9,5.739792823791504,81\n4961,1,0,8,31,3,6,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,274,0,31,,1,0,17,5.613128185272217,289\n4963,1,0,11,27,,,77507,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,400,0,29,,6,1,10,5.991464614868164,100\n4964,1,0,8,26,,,77507,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,200,0,24,,6,0,12,5.2983174324035645,144\n4965,1,0,13,26,6,8,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,435,0,23,,1,0,7,6.075345993041992,49\n4969,1,0,6,29,1,5,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,230,0,8,,1,0,17,5.438079357147217,289\n4970,1,0,6,30,,8,145125,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,731,0,23,,1,0,18,6.5944132804870605,324\n4972,1,0,10,33,8,8,116164,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,270,0,16,,1,0,17,5.598422050476074,289\n4973,1,0,8,26,4,8,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,176,0,18,,1,0,12,5.1704840660095215,144\n4974,1,0,12,25,4,8,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,250,0,14,,1,0,7,5.521461009979248,49\n4975,1,0,10,30,,10,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,333,0,25,,1,0,14,5.80814266204834,196\n4976,1,0,12,25,8,16,75607,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,0,0,438,0,42,,6,0,7,6.082219123840332,49\n4978,1,0,16,26,,,81081,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,428,0,18,,1,0,4,6.0591230392456055,16\n4979,1,0,16,29,8,12,139895,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,740,0,31,76,1,0,7,6.606650352478027,49\n4981,1,0,12,26,,8,77507,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,700,0,24,,1,0,8,6.551080226898193,64\n4983,1,0,12,24,4,7,75607,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,0,245,0,10,,6,0,6,5.501258373260498,36\n4984,1,0,12,26,2,8,91599,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,230,0,16,,6,0,8,5.438079357147217,64\n4986,1,0,15,29,5,12,117386,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,273,0,27,72,1,0,8,5.609471797943115,64\n4987,1,0,14,28,,,77507,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,632,0,31,105,1,0,8,6.448889255523682,64\n4988,1,0,16,25,8,12,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,289,0,23,65,1,1,3,5.666426658630371,9\n4990,1,0,8,32,,5,111044,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,300,0,22,,1,0,18,5.703782558441162,324\n4991,1,0,10,29,,5,117386,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,230,0,14,,1,0,13,5.438079357147217,169\n4992,1,0,8,30,,5,138729,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,395,0,28,,1,0,16,5.978885650634766,256\n4994,1,0,9,24,5,5,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,572,0,8,,6,0,9,6.349139213562012,81\n4995,1,0,17,30,8,8,122798,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,625,0,30,,6,0,7,6.437751770019531,49\n4996,1,0,16,25,,,79093,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,550,0,22,,6,0,3,6.309918403625488,9\n4997,1,0,9,26,8,8,77507,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,250,0,21,,1,0,11,5.521461009979248,121\n4998,1,0,8,27,,,84491,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,363,0,30,,1,0,13,5.894402980804443,169\n4999,1,0,14,34,4,12,116164,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,100,0,26,,1,0,14,4.605170249938965,196\n5001,1,0,12,33,,,116164,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,1,350,0,18,,1,0,15,5.857933044433594,225\n5003,1,0,10,25,,6,79093,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,290,0,18,,6,0,9,5.6698808670043945,81\n5004,1,0,4,32,,4,116164,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,250,0,,,5,0,22,5.521461009979248,484\n5008,1,0,8,33,,3,111044,0,1,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,833,0,22,,1,0,19,6.725033760070801,361\n5009,1,0,10,25,,,75607,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,435,0,20,,1,0,9,6.075345993041992,81\n5011,1,0,12,27,,,77507,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,333,0,26,98,6,1,9,5.80814266204834,81\n5012,0,0,12,26,,12,438085,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,306,0,27,93,2,0,8,5.72358512878418,64\n5013,0,0,18,33,7,7,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,573,0,43,108,1,0,9,6.35088586807251,81\n5018,0,0,12,25,10,6,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,288,0,19,,6,0,7,5.662960529327393,49\n5020,0,0,12,28,,,77507,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,463,0,12,74,2,0,10,6.1377272605896,100\n5021,0,0,12,34,7,12,88765,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,389,0,40,107,1,0,16,5.963579177856445,256\n5022,0,0,16,32,14,12,81669,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1106,0,48,110,4,0,10,7.008505344390869,100\n5024,0,0,16,24,9,10,336009,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,245,0,34,114,4,0,2,5.501258373260498,4\n5028,0,0,12,25,,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,358,0,28,,1,0,7,5.880533218383789,49\n5030,0,0,8,34,7,8,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,357,0,34,,1,1,20,5.877735614776611,400\n5031,0,0,12,30,6,6,118905,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,0,400,0,24,72,1,0,12,5.991464614868164,144\n5033,0,0,10,25,12,9,104102,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,300,0,38,117,4,0,9,5.703782558441162,81\n5036,0,0,16,27,15,15,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,0,553,1,42,107,1,1,5,6.3153581619262695,25\n5037,0,0,8,31,4,10,545297,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,300,0,29,,1,0,17,5.703782558441162,289\n5039,0,0,7,30,,,635888,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,450,0,14,,1,0,17,6.10924768447876,289\n5040,0,0,12,25,7,9,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,409,0,29,114,1,0,7,6.0137152671813965,49\n5046,0,0,14,24,14,14,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,250,0,26,,6,1,4,5.521461009979248,16\n5048,0,0,16,24,,,89271,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,337,0,24,107,1,1,2,5.820083141326904,4\n5051,0,0,16,24,12,12,425871,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,280,0,34,,6,1,2,5.63478946685791,4\n5052,0,0,13,24,12,10,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,523,0,35,120,4,1,5,6.259581565856934,25\n5053,0,0,16,26,12,12,486761,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,513,0,34,97,1,1,4,6.240275859832764,16\n5054,0,0,14,31,8,14,635888,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,691,0,46,130,1,1,11,6.538139820098877,121\n5055,0,0,16,27,12,12,876170,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,425,0,38,107,6,1,5,6.052089214324951,25\n5056,0,0,13,24,16,12,730401,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,1,1,361,1,40,,6,1,5,5.888877868652344,25\n5058,0,0,12,24,5,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,542,0,31,100,1,0,6,6.295266151428223,36\n5059,0,0,12,32,6,12,363128,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,769,0,33,,1,0,14,6.6450910568237305,196\n5060,0,0,12,25,,11,365200,0,1,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,505,0,37,103,1,1,7,6.224558353424072,49\n5061,0,0,17,25,12,10,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,591,1,46,108,6,1,2,6.3818159103393555,4\n5062,0,0,16,25,14,13,851743,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,419,0,29,111,6,1,3,6.03787088394165,9\n5064,0,0,16,26,12,12,973522,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,375,0,36,114,4,1,4,5.926926136016846,16\n5068,0,0,17,26,12,2,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,369,1,37,112,5,1,3,5.910796642303467,9\n5069,0,0,11,26,8,8,375674,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,438,0,31,95,1,0,9,6.082219123840332,81\n5071,0,0,17,29,8,13,572299,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,619,1,39,138,6,1,6,6.428105354309082,36\n5073,0,0,16,33,13,12,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,635,0,47,96,4,1,11,6.453625202178955,121\n5074,0,0,12,26,10,11,438085,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,500,0,31,105,1,1,8,6.214608192443848,64\n5075,0,0,12,32,10,11,423456,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,875,0,39,98,1,1,14,6.774223804473877,196\n5076,0,0,17,34,10,14,470506,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,1,1,635,0,43,,1,1,11,6.453625202178955,121\n5078,0,0,14,24,18,12,365200,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,313,1,36,,1,1,4,5.746203422546387,16\n5081,0,0,15,24,16,12,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,350,0,45,,4,0,3,5.857933044433594,9\n5082,0,0,9,24,7,11,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,857,0,22,,5,0,9,6.7534379959106445,81\n5083,0,0,11,31,,8,118905,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,1,200,0,30,62,6,1,14,5.2983174324035645,196\n5084,0,0,12,24,,,90509,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,383,0,30,,1,0,6,5.948034763336182,36\n5088,0,0,12,30,,8,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,245,0,38,67,3,0,12,5.501258373260498,144\n5089,0,0,12,32,7,,112480,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,808,0,28,83,1,0,14,6.694561958312988,196\n5091,0,0,18,33,6,10,112480,1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,462,0,27,,1,1,9,6.135564804077148,81\n5092,0,0,16,29,3,7,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,577,0,28,,1,1,7,6.357842445373535,49\n5097,0,0,17,31,,,118905,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,506,0,44,,1,0,8,6.226536750793457,64\n5098,0,0,17,28,13,12,107087,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,962,0,28,97,6,1,5,6.869014263153076,25\n5099,0,0,16,26,13,12,107087,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,743,0,29,112,1,1,4,6.610695838928223,16\n5100,0,0,12,24,,9,104102,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,450,0,31,102,6,1,6,6.10924768447876,36\n5102,0,0,11,27,7,8,81081,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,476,0,22,,1,0,10,6.165417671203613,100\n5103,0,0,9,25,7,8,79093,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,123,0,18,,6,0,10,4.8121843338012695,100\n5104,0,0,11,32,3,0,116164,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,794,0,30,70,1,0,15,6.677083492279053,225\n5106,0,0,10,25,12,5,79093,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,200,0,22,,1,0,9,5.2983174324035645,81\n5107,0,0,14,32,8,8,81669,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,462,0,40,92,1,1,12,6.135564804077148,144\n5108,0,0,10,29,16,5,110376,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,225,0,34,90,1,1,13,5.41610050201416,169\n5116,0,0,13,28,,10,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,577,0,25,83,1,1,9,6.357842445373535,81\n5120,0,0,8,32,,,116164,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,180,0,24,,1,0,18,5.192956924438477,324\n5121,0,0,9,31,,1,122798,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,325,0,20,,6,0,16,5.783825397491455,256\n5122,0,0,7,28,,1,81081,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,409,0,20,,6,0,15,6.0137152671813965,225\n5123,0,0,10,25,2,8,93473,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,200,0,17,75,1,0,9,5.2983174324035645,81\n5124,0,0,16,29,11,16,490767,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,539,0,36,95,1,1,7,6.289715766906738,49\n5126,0,0,16,28,12,12,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,354,0,46,104,1,0,6,5.869297027587891,36\n5131,0,0,11,28,12,15,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,250,0,24,85,5,1,11,5.521461009979248,121\n5139,0,0,16,28,9,12,375674,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,693,0,41,114,1,1,6,6.541029930114746,36\n5140,0,0,12,28,8,12,417415,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,420,0,27,82,1,1,10,6.040254592895508,100\n5142,0,0,12,33,16,16,363128,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,366,0,32,65,1,0,15,5.902633190155029,225\n5143,0,0,11,24,4,7,365200,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,351,0,26,,1,0,7,5.860786437988281,49\n5144,0,0,16,31,8,8,451538,1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,0,913,0,45,113,1,1,9,6.816735744476318,81\n5145,0,0,13,28,9,16,345645,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,900,0,40,,1,0,9,6.802394866943359,81\n5146,0,0,7,26,2,7,91831,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,300,0,21,,1,0,13,5.703782558441162,169\n5149,0,0,10,27,,,108528,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,307,0,38,,1,0,11,5.7268476486206055,121\n5151,0,0,7,27,,8,108528,0,0,1,0,0,0,0,0,0,1,0,0,1,0,1,1,0,475,0,28,,1,0,14,6.1633148193359375,196\n5152,0,0,11,28,,9,81081,0,1,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,340,0,23,100,4,0,11,5.828945636749268,121\n5153,0,0,9,29,5,5,117386,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,463,0,30,68,1,0,14,6.1377272605896,196\n5159,0,0,12,30,,2,118905,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,200,0,20,76,1,0,12,5.2983174324035645,144\n5161,0,0,15,24,8,8,76585,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,315,0,23,101,6,1,3,5.752572536468506,9\n5162,0,0,16,30,5,8,118905,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,1,0,625,0,35,78,1,1,8,6.437751770019531,64\n5163,0,0,12,30,,,118905,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,254,0,27,72,5,1,12,5.537334442138672,144\n5165,0,0,9,27,,,107087,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,450,0,32,75,1,1,12,6.10924768447876,144\n5166,0,0,12,24,,,75607,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,375,0,27,,1,1,6,5.926926136016846,36\n5168,0,0,12,26,0,7,77507,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,300,0,30,,1,1,8,5.703782558441162,64\n5171,0,0,12,26,8,10,77507,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,364,0,30,,5,1,8,5.897153854370117,64\n5173,0,0,18,27,,,77507,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,750,0,39,,1,1,3,6.620073318481445,9\n5174,0,0,15,28,3,8,77507,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,589,0,36,,1,1,7,6.3784260749816895,49\n5176,0,0,10,31,0,2,117386,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,265,0,26,,1,1,15,5.579730033874512,225\n5177,0,0,9,25,0,2,75607,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,300,0,10,,5,1,10,5.703782558441162,100\n5179,0,0,6,33,,,111044,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,390,0,21,,1,0,21,5.966146945953369,441\n5184,0,0,10,31,,12,119965,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,500,0,31,,1,1,15,6.214608192443848,225\n5185,0,0,12,29,,12,119965,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,450,0,38,101,1,1,11,6.10924768447876,121\n5186,0,0,12,27,7,7,91831,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,263,0,33,100,1,1,9,5.5721540451049805,81\n5187,0,0,14,27,5,12,91831,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,432,0,38,105,1,1,7,6.06842565536499,49\n5193,0,0,10,30,,4,480216,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0,1,0,192,0,29,,1,0,14,5.257495403289795,196\n5196,0,0,14,34,8,8,363128,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,829,0,35,,1,1,14,6.72022008895874,196\n5199,0,1,16,30,16,16,140524,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,513,0,30,82,1,0,8,6.240275859832764,64\n5200,0,1,13,30,4,9,117386,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,529,0,25,,1,0,11,6.270988464355469,121\n5204,0,1,16,26,,11,91599,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,385,0,28,79,1,0,4,5.953243255615234,16\n5206,0,1,13,27,6,8,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,500,0,32,102,1,0,8,6.214608192443848,64\n5210,0,1,15,29,16,18,119965,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,712,0,43,,1,1,8,6.56807804107666,64\n5211,0,1,16,27,16,18,91831,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,472,0,36,,1,1,5,6.156979084014893,25\n5212,0,1,12,24,,7,79093,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,470,0,22,77,1,0,6,6.152732849121094,36\n5213,0,1,13,25,,,75607,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,413,0,28,,1,0,6,6.023447513580322,36\n5218,0,1,12,25,8,12,82135,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,335,0,15,,1,0,7,5.8141303062438965,49\n5219,0,1,13,34,,,88765,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,481,0,43,,1,1,15,6.175867080688477,225\n5220,0,1,12,24,11,,89271,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,500,0,25,109,1,0,6,6.214608192443848,36\n5221,0,1,12,31,,,110376,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,713,0,32,107,1,1,13,6.569481372833252,169\n5225,0,1,13,26,,,81081,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,525,1,27,,1,0,7,6.263398170471191,49\n"
  },
  {
    "path": "prototypes/dml_iv/data/code_bk.txt",
    "content": "Code Book for Ascii File nls.dat\n\nNote: For more information, see the original article: \n David Card,\n\"Using Geographic Variation in College Proximity to Estimate the Return to Schooling\"\n NBER Working Paper 4832, August 1994\n\nThis article is published (with the same title and identical tables)\nin  Aspects of Labour Market Behaviour: Essays in Honour of John Vandekamp\"\nedited by Louis N. Christofides, E. Kenneth Grant, and Robert Swidinsky\nToronto: University of Toronto Press, 1995.\n\nThe file contains 3613 observations on men in 1976 cross-section\nof nls young men (original nls cohort)\n\nMissing value code is .\n\n Column Locations      Variable Name and Label\n----------------------------------------------------------------------\n       1 -  5     id    /*sequential id runs from 1 to 5225 */\n       7 -  7     nearc2  /*grew up near 2-yr college*/\n      10 - 10     nearc4  /*grew up near 4-yr college*/\n      12 - 13     nearc4a /*grew up near 4-yr public college*/\n      15 - 16     nearc4b /*grew up near 4-yr priv college*/\n      18 - 19     ed76  /*educ in 1976*/\n      21 - 22     ed66  /*educ in 1966*/\n      24 - 25     age76  /* age in 1976\n      27 - 31     daded /*dads education missing=avg*/\n      33 - 33     nodaded /* 1 if dad ed imputed*/\n      35 - 39     momed /*moms education*/\n      41 - 41     nomomed /* 1 if mom ed imputed*/\n      43 - 54     weight  /* nls weight for 1976 cross-section */\n      56 - 56     momdad14 /*1 if live with mom and dad age 14*/\n      58 - 58     sinmom14 /*lived with single mom age 14*/\n      60 - 60     step14  /*lived step parent age 14*/\n      62 - 62     reg661 /* dummy for region=1 in 1966 */\n      64 - 64     reg662  /* dummy for region=2 in 1966 */\n      66 - 66     reg663  /* dummy for region=3 in 1966 */\n      68 - 68     reg664\n      70 - 70     reg665\n      72 - 72     reg666\n      74 - 74     reg667\n      76 - 76     reg668\n      78 - 78     reg669  /* dummy for region=9 in 1966 */\n      80 - 80     south66 /*lived in south in 1966*/\n      82 - 82     work76 /* worked in 1976*/\n      84 - 84     work78 /* worked in 1978*/\n      86 - 97     lwage76  /*log wage (outliers trimmed) 1976 */\n      99 -110     lwage78  /*log wage in 1978 outliers trimmed */\n     112 -112     famed /*mom-dad education class 1-9*/\n     114 -114     black  /* 1 if black*/\n     116 -116     smsa76r /*in smsa in 1976*/\n     118 -118     smsa78r /*in smsa in 1978*/\n     120 -120     reg76r /*in south in 1976*/\n     122 -122     reg78r /*in south in 1978*/\n     124 -124     reg80r /* in south in 1980*/\n     126 -126     smsa66r /* in smsa in 1966*/\n     128 -132     wage76 /*raw wage cents per hour 1976*/\n     134 -138     wage78\n     140 -144     wage80\n     146 -146     noint78 /*1 if noninterview in 78*/\n     148 -148     noint80\n     150 -150     enroll76 /*1 if enrolled in 76*/\n     152 -152     enroll78\n     154 -154     enroll80\n     156 -157     kww  /*the kww score*/\n     159 -161     iq  /* a normed iq score*/\n     163 -163     marsta76 /*mar status in 1976 1=married, sp. present *\n     165 -165     marsta78\n     167 -167     marsta80\n     169 -169     libcrd14   /*1 if lib card in home age 14*/\n\n\n\n\n\nList of means, min/max  Note some vars are missing for some observations.\nMissing value code is .\n\n\n\n    Variable     N          Mean       Std Dev       Minimum       Maximum\n   ----------------------------------------------------------------------\n   ID        3613       2609.78       1498.51     2.0000000       5225.00\n   NEARC2    3613     0.4317741     0.4953919             0     1.0000000\n   NEARC4    3613     0.6781068     0.4672669             0     1.0000000\n   NEARC4A   3613     0.4921118     0.5000070             0     1.0000000\n   NEARC4B   3613     0.1859950     0.3891565             0     1.0000000\n   ED76      3613    13.2252975     2.7497411             0    18.0000000\n   ED66      3613    10.7428730     2.4590854             0    18.0000000\n   AGE76     3613    28.1752007     3.1718104    24.0000000    34.0000000\n   DADED     3613    10.0028785     3.2960212             0    18.0000000\n   NODADED   3613     0.2241904     0.4171058             0     1.0000000\n   MOMED     3613    10.3421672     3.0293785             0    18.0000000\n   NOMOMED   3613     0.1143094     0.3182308             0     1.0000000\n   WEIGHT    3613     320318.35     168006.76      75607.00    1752340.00\n   MOMDAD14  3613     0.7921395     0.4058326             0     1.0000000\n   SINMOM14  3613     0.1001937     0.3002997             0     1.0000000\n   STEP14    3613     0.0384722     0.1923599             0     1.0000000\n   REG661    3613     0.0445613     0.2063671             0     1.0000000\n   REG662    3613     0.1549958     0.3619508             0     1.0000000\n   REG663    3613     0.1940216     0.3955003             0     1.0000000\n   REG664    3613     0.0691946     0.2538199             0     1.0000000\n   REG665    3613     0.2095212     0.4070232             0     1.0000000\n   REG666    3613     0.0929975     0.2904691             0     1.0000000\n   REG667    3613     0.1101578     0.3131296             0     1.0000000\n   REG668    3613     0.0309992     0.1733394             0     1.0000000\n   REG669    3613     0.0935511     0.2912434             0     1.0000000\n   SOUTH66   3613     0.4126764     0.4923837             0     1.0000000\n   WORK76    3613     0.8350401     0.3711957             0     1.0000000\n   WORK78    3613     0.7351232     0.4413287             0     1.0000000\n   LWAGE76   3010     6.2618319     0.4437977     4.6051702     7.7848893\n   LWAGE78   2639     6.3291080     0.4442450     4.6965200     8.2409240\n   FAMED     3613     5.9128148     2.6504318     1.0000000     9.0000000\n   BLACK     3613     0.2300028     0.4208925             0     1.0000000\n   SMSA76R   3613     0.6947135     0.4605924             0     1.0000000\n   SMSA78R   3319     0.6929798     0.4613273             0     1.0000000\n   REG76R    3613     0.3996679     0.4898978             0     1.0000000\n   REG78R    3319     0.3968063     0.4893089             0     1.0000000\n   REG80R    3227     0.4028509     0.4905473             0     1.0000000\n   SMSA66R   3613     0.6426792     0.4792768             0     1.0000000\n   WAGE76    3017   576.0888300   263.8199090    25.0000000       2404.00\n   WAGE78    2656   724.5591114   526.1991520    17.0000000      17628.00\n   WAGE80    2520   869.8940476   492.1729068    27.0000000      13857.00\n   NOINT78   3613     0.0813728     0.2734447             0     1.0000000\n   NOINT80   3613     0.1068364     0.3089479             0     1.0000000\n   ENROLL76  3613     0.0946582     0.2927827             0     1.0000000\n   ENROLL78  3317     0.0654206     0.2473038             0     1.0000000\n   ENROLL80  3220     0.0583851     0.2345066             0     1.0000000\n   KWW       3543    33.4891335     8.6918079             0    56.0000000\n   IQ        2470   102.5878543    15.4450703    50.0000000   156.0000000\n   MARSTA76  3604     2.3571032     2.1096377     1.0000000     6.0000000\n   MARSTA78  3319     2.2136186     2.0058342     1.0000000     6.0000000\n   MARSTA80  3227     2.1041215     1.9088835     1.0000000     6.0000000\n   LIBCRD14  3598     0.6717621     0.4696372             0     1.0000000\n ----------------------------------------------------------------------\n\n\u001a\n"
  },
  {
    "path": "prototypes/dml_iv/data/readme",
    "content": "This directory contains 3 files (plus this readme file):\n-- a codebook\n-- a data set\n-- an example sas program to read the data and process it.\n\nThe code book \"code_bk.txt\" gives the variables in the data set\nand their means and min/max values. It also gives a reference for the\narticle by D. Card that the data is derived from.\n\nThe data set is  nls.dat = ascii file of data, 3613 obs\n\nFinally, there a sas program,  read1.sas , a program that reads \nthe nls.dat file and runs an example regression.\nThe varibles are named and explained in the file.\n"
  },
  {
    "path": "prototypes/dml_iv/deep_dml_iv.py",
    "content": "\r\nimport numpy as np\r\nfrom sklearn.model_selection import KFold\r\nfrom econml.utilities import hstack\r\nfrom dml_iv import _BaseDMLIV\r\nimport keras\r\nimport keras.layers as L\r\nfrom keras.models import Model, clone_model\r\n\r\nclass DeepDMLIV(_BaseDMLIV):\r\n    \"\"\"\r\n    A child of the _BaseDMLIV class that specifies a deep neural network effect model\r\n    where the treatment effect is linear in some featurization of the variable X.\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ, h,\r\n                 optimizer='adam',\r\n                 training_options={ \"epochs\": 30,\r\n                                    \"batch_size\": 32,\r\n                                    \"validation_split\": 0.1,\r\n                                    \"callbacks\": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]},\r\n                 n_splits=2, binary_instrument=False, binary_treatment=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : arbitrary model to predict E[Y | X]\r\n        model_T_X : arbitrary model to predict E[T | X]\r\n        model_T_XZ : arbitrary model to predict E[T | X, Z]\r\n        h : Model\r\n            Keras model that takes X as an input and returns a layer of dimension d_y by d_t\r\n        optimizer : keras optimizer\r\n        training_options : dictionary of keras training options\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        \"\"\"\r\n        class ModelEffect:\r\n            \"\"\"\r\n            A wrapper class that takes as input X, T, y and estimates an effect model of the form\r\n            $y= \\\\theta(X) \\\\cdot T + \\\\epsilon$\r\n            \"\"\"\r\n\r\n            def __init__(self, h):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                h : Keras model mapping X to Theta(X)\r\n                \"\"\"\r\n                self._h = clone_model(h)\r\n                self._h.set_weights(h.get_weights())\r\n\r\n            def fit(self, Y, T, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                y : outcome\r\n                T : treatment\r\n                X : features\r\n                \"\"\"\r\n                d_x, d_t, d_y = [np.shape(arr)[1:] for arr in (X, T, Y)]\r\n                self.d_t = d_t  # keep track in case we need to reshape output by dropping singleton dimensions\r\n                self.d_y = d_y  # keep track in case we need to reshape output by dropping singleton dimensions\r\n                d_x, d_t, d_y = [1 if not d else d[0] for d in (d_x, d_t, d_y)]\r\n                x_in, t_in = [L.Input((d,)) for d in (d_x, d_t)]\r\n                # reshape in case we get fewer dimensions than expected from h (e.g. a scalar)\r\n                h_out = L.Reshape((d_y, d_t))(self._h(x_in))\r\n                y_out = L.Dot([2, 1])([h_out, t_in])\r\n                self.theta = Model([x_in], self._h(x_in))\r\n                model = Model([x_in, t_in], y_out)\r\n                model.compile(optimizer, loss='mse')\r\n                model.fit([X, T], Y, **training_options)\r\n                return self\r\n\r\n            def predict(self, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                X : features\r\n                \"\"\"\r\n\r\n                # HACK: DRIV doesn't expect a treatment dimension, so pretend we got a vector even if we really had a one-column array\r\n                #       Once multiple treatments are supported, we'll need to fix this\r\n                self.d_t = ()\r\n\r\n                return self.theta.predict([X]).reshape((-1,)+self.d_y+self.d_t)\r\n\r\n        super(DeepDMLIV, self).__init__(model_Y_X, model_T_X, model_T_XZ,\r\n                         ModelEffect(h), n_splits=n_splits,\r\n                         binary_instrument=binary_instrument,\r\n                         binary_treatment=binary_treatment)\r\n\r\n"
  },
  {
    "path": "prototypes/dml_iv/deep_dr_iv.py",
    "content": "import numpy as np\r\nfrom sklearn.model_selection import KFold\r\nfrom econml.utilities import hstack\r\nfrom dr_iv import DRIV, ProjectedDRIV, IntentToTreatDRIV\r\nimport keras\r\nimport keras.layers as L\r\nfrom keras.models import Model, clone_model\r\n\r\nclass _KerasModel:\r\n    \"\"\"\r\n    A model that fits data using a Keras model\r\n\r\n    Parameters\r\n    ----------\r\n    h: Model\r\n        The Keras model that takes input X and returns a prediction Y\r\n    \"\"\"\r\n\r\n    def __init__(self, h,\r\n                 optimizer='adam',\r\n                 training_options={ \"epochs\": 30,\r\n                                    \"batch_size\": 32,\r\n                                    \"validation_split\": 0.1,\r\n                                    \"callbacks\": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]}):\r\n        self._h = clone_model(h)\r\n        self._h.set_weights(h.get_weights())\r\n        self._optimizer = optimizer\r\n        self._training_options = training_options\r\n\r\n    def fit(self, X, Y, sample_weight=None):\r\n        if sample_weight is not None:\r\n            sample_weight = X.shape[0] * sample_weight / np.linalg.norm(sample_weight, ord=1)\r\n        self._h.compile(self._optimizer, loss='mse')\r\n        self._h.fit([X], Y, sample_weight=sample_weight, **self._training_options)\r\n\r\n    def predict(self, X):\r\n        return self._h.predict([X]).flatten()\r\n\r\n    def __deepcopy__(self, memo):\r\n        h_clone = clone_model(self._h)\r\n        h_clone.set_weights(self._h.get_weights())\r\n        return _KerasModel(h_clone, self._optimizer, self._training_options)\r\n\r\nclass DeepDRIV(DRIV):\r\n    \"\"\"\r\n    DRIV with a Deep neural net as a final CATE model\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_Z_X,\r\n                 prel_model_effect, model_TZ_X,\r\n                 h,\r\n                 optimizer='adam',\r\n                 training_options={ \"epochs\": 30,\r\n                                    \"batch_size\": 32,\r\n                                    \"validation_split\": 0.1,\r\n                                    \"callbacks\": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]},\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 binary_instrument=False, binary_treatment=False,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]. In alt_fit, this model is also\r\n            used to predict E[T | X, Z]\r\n        model_Z_X : model to predict E[Z | X]\r\n        prel_model_effect : model that estimates a preliminary version of the CATE\r\n            (e.g. via DMLIV or other method)\r\n        model_TZ_X : model to estimate E[T * Z | X]\r\n        h : Model\r\n            Keras model that takes X as an input and returns a layer of dimension d_y by d_t\r\n        optimizer : keras optimizer\r\n        training_options : dictionary of keras training options\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        super(DeepDRIV, self).__init__(model_Y_X, model_T_X, model_Z_X,\r\n                                    prel_model_effect, model_TZ_X,\r\n                                   _KerasModel(h, optimizer=optimizer, training_options=training_options),\r\n                                   cov_clip=cov_clip,\r\n                                   n_splits=n_splits,\r\n                                   binary_instrument=binary_instrument, binary_treatment=binary_treatment,\r\n                                   opt_reweighted=opt_reweighted)\r\n        return\r\n\r\nclass DeepProjectedDRIV(ProjectedDRIV):\r\n    \"\"\"\r\n    ProjectedDRIV with deep net as final CATE model\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ,\r\n                 prel_model_effect, model_TZ_X,\r\n                 h,\r\n                 optimizer='adam',\r\n                 training_options={ \"epochs\": 30,\r\n                                    \"batch_size\": 32,\r\n                                    \"validation_split\": 0.1,\r\n                                    \"callbacks\": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]},\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 binary_instrument=False, binary_treatment=False,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]. In alt_fit, this model is also\r\n            used to predict E[T | X, Z]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        model_theta : model that estimates a preliminary version of the CATE\r\n            (e.g. via DMLIV or other method)\r\n        model_TZ_X : model to estimate cov[T, E[T|X,Z] | X] = E[(T-E[T|X]) * (E[T|X,Z] - E[T|X]) | X].\r\n        h : Model\r\n            Keras model that takes X as an input and returns a layer of dimension d_y by d_t\r\n        optimizer : keras optimizer\r\n        training_options : dictionary of keras training options\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        super(DeepProjectedDRIV, self).__init__(model_Y_X, model_T_X, model_T_XZ,\r\n                                            prel_model_effect, model_TZ_X,\r\n                                            _KerasModel(h, optimizer=optimizer, training_options=training_options),\r\n                                            cov_clip=cov_clip,\r\n                                            n_splits=n_splits,\r\n                                            binary_instrument=binary_instrument, binary_treatment=binary_treatment,\r\n                                            opt_reweighted=opt_reweighted)\r\n        return\r\n\r\nclass DeepIntentToTreatDRIV(IntentToTreatDRIV):\r\n    \"\"\"\r\n    Implements the DRIV algorithm for the intent-to-treat A/B test setting\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_XZ,\r\n                 h,\r\n                 optimizer='adam',\r\n                 training_options={ \"epochs\": 30,\r\n                                    \"batch_size\": 32,\r\n                                    \"validation_split\": 0.1,\r\n                                    \"callbacks\": [keras.callbacks.EarlyStopping(patience=2, restore_best_weights=True)]},\r\n                 final_model_effect=None,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        h : Model\r\n            Keras model that takes X as an input and returns a layer of dimension d_y by d_t\r\n        optimizer : keras optimizer\r\n        training_options : dictionary of keras training options\r\n        final_model_effect : a final model for the CATE and projections. If None, then\r\n            flexible_model_effect is also used as a final model\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            final_model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the final_model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        flexible_model_effect = _KerasModel(h, optimizer=optimizer, training_options=training_options)\r\n        super(DeepIntentToTreatDRIV, self).__init__(model_Y_X, model_T_XZ,\r\n                                                    flexible_model_effect,\r\n                                                    final_model_effect=final_model_effect,\r\n                                                    cov_clip=cov_clip,\r\n                                                    n_splits=n_splits,\r\n                                                    opt_reweighted=opt_reweighted)\r\n        return\r\n"
  },
  {
    "path": "prototypes/dml_iv/dml_ate_iv.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\n# Licensed under the MIT License.\n\n\"\"\" Orthogonal instrumental variable estimation of ATE.\n\n\"\"\"\n\nimport numpy as np\nfrom econml.utilities import hstack\nfrom sklearn.model_selection import KFold, StratifiedKFold\nfrom sklearn.linear_model import LinearRegression\nimport scipy.stats\nfrom sklearn.base import clone\n\n\nclass DMLATEIV:\n    \"\"\"\n    Implementation of the orthogonal/double ml method for ATE estimation with\n    IV as described in \n    \n    Double/Debiased Machine Learning for Treatment and Causal Parameters\n    Victor Chernozhukov, Denis Chetverikov, Mert Demirer, Esther Duflo, Christian Hansen, Whitney Newey, James Robins\n    https://arxiv.org/abs/1608.00060\n    \n    Requires that either co-variance of T, Z is independent of X or that effect\n    is not heterogeneous in X for correct recovery. Otherwise it estimates\n    a biased ATE.\n    \"\"\"\n\n    def __init__(self, model_Y_X, model_T_X, model_Z_X, n_splits=2,\n                 binary_instrument=False, binary_treatment=False):\n        \"\"\"\n        Parameters\n        ----------\n        model_Y_X : model to predict E[Y | X]\n        model_T_X : model to predict E[T | X]. In alt_fit, this model is also\n            used to predict E[T | X, Z]\n        model_Z_X : model to predict E[Z | X]\n        n_splits : number of splits to use in cross-fitting\n        binary_instrument : whether to stratify cross-fitting splits by instrument\n        binary_treatment : whether to stratify cross-fitting splits by treatment\n        \"\"\"\n        self.model_Y_X = [clone(model_Y_X, safe=False) for _ in range(n_splits)]\n        self.model_T_X = [clone(model_T_X, safe=False) for _ in range(n_splits)]\n        self.model_Z_X = [clone(model_Z_X, safe=False) for _ in range(n_splits)]\n        self.n_splits = n_splits\n        self.binary_instrument = binary_instrument\n        self.binary_treatment = binary_treatment\n\n    def fit(self, y, T, X, Z):\n        \"\"\"\n        Parameters\n        ----------\n        y : outcome\n        T : treatment (single dimensional)\n        X : features/controls\n        Z : instrument (single dimensional)\n        \"\"\"\n        if len(Z.shape) > 1 and Z.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional instrument\")\n        if len(T.shape) > 1 and T.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional treatment\")\n        if len(y.shape) > 1 and y.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional outcome\")\n        Z = Z.flatten()\n        T = T.flatten()\n        y = y.flatten()\n\n        n_samples = y.shape[0]\n        res_t = np.zeros(n_samples)\n        res_z = np.zeros(n_samples)\n        res_y = np.zeros(n_samples)\n\n        if self.n_splits == 1:\n            splits = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\n        elif self.binary_instrument or self.binary_treatment:\n            group = 2*T*self.binary_treatment + Z.flatten()*self.binary_instrument\n            splits = StratifiedKFold(\n                n_splits=self.n_splits, shuffle=True).split(X, group)\n        else:\n            splits = KFold(n_splits=self.n_splits, shuffle=True).split(X)\n\n        for idx, (train, test) in enumerate(splits):\n            # Calculate residuals\n            res_t[test] = T[test] - \\\n                self.model_T_X[idx].fit(X[train], T[train]).predict(X[test])\n            res_z[test] = Z[test] - \\\n                self.model_Z_X[idx].fit(X[train], Z[train]).predict(X[test])\n            res_y[test] = y[test] - \\\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\n\n        # Estimate E[T_res | Z_res]\n        self._effect = np.mean(res_y * res_z)/np.mean(res_t * res_z)\n\n        self._std = np.std(res_y * res_z)/(np.sqrt(res_y.shape[0]) * np.abs(np.mean(res_t * res_z)))\n\n        return self\n\n    def effect(self, X=None):\n        \"\"\"\n        Parameters\n        ----------\n        X : features\n        \"\"\"\n        if X is None:\n            return self._effect\n        else:\n            return self._effect * np.ones(X.shape[0])\n\n    def normal_effect_interval(self, lower=5, upper=95):\n        return (scipy.stats.norm.ppf(lower/100, loc=self._effect, scale=self._std),\n                scipy.stats.norm.ppf(upper/100, loc=self._effect, scale=self._std))\n    @property\n    def std(self):\n        return self._std\n\n    @property\n    def fitted_nuisances(self):\n        return {'model_Y_X': self.model_Y_X,\n                'model_T_X': self.model_T_X,\n                'model_Z_X': self.model_Z_X}\n\n\nclass ProjectedDMLATEIV:\n    \"\"\"\n    Implementation of the orthogonal/double ml method for ATE estimation with\n    IV as described in \n    \n    Double/Debiased Machine Learning for Treatment and Causal Parameters\n    Victor Chernozhukov, Denis Chetverikov, Mert Demirer, Esther Duflo, Christian Hansen, Whitney Newey, James Robins\n    https://arxiv.org/abs/1608.00060\n    \n    Here we also project the insturment on the treatment and use E[T|X,Z] as the instrument.\n    Requires that either co-variance of T, Z is independent of X or that effect\n    is not heterogeneous in X for correct recovery. Otherwise it estimates\n    a biased ATE.\n    \"\"\"\n\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ, n_splits=2,\n                 binary_instrument=False, binary_treatment=False):\n        \"\"\"\n        Parameters\n        ----------\n        model_Y_X : model to predict E[Y | X]\n        model_T_X : model to predict E[T | X]\n        model_T_XZ : model to predict E[T | X, Z]\n        n_splits : number of splits to use in cross-fitting\n        binary_instrument : whether to stratify cross-fitting splits by instrument\n        binary_treatment : whether to stratify cross-fitting splits by treatment\n        \"\"\"\n        self.model_Y_X = [clone(model_Y_X, safe=False) for _ in range(n_splits)]\n        self.model_T_X = [clone(model_T_X, safe=False) for _ in range(n_splits)]\n        self.model_T_XZ = [clone(model_T_XZ, safe=False) for _ in range(n_splits)]\n        self.n_splits = n_splits\n        self.binary_instrument = binary_instrument\n        self.binary_treatment = binary_treatment\n\n    def fit(self, y, T, X, Z):\n        \"\"\"\n        Parameters\n        ----------\n        y : outcome\n        T : treatment (single dimensional)\n        X : features/controls\n        Z : instrument\n        \"\"\"\n        if len(T.shape) > 1 and T.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional treatment\")\n        if len(y.shape) > 1 and y.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional outcome\")\n        if len(Z.shape) == 1:\n            Z = Z.reshape(-1, 1)\n        if (Z.shape[1] > 1) and self.binary_instrument:\n            raise AssertionError(\"Binary instrument flag is True, but instrument is multi-dimensional\")\n        T = T.flatten()\n        y = y.flatten()\n\n        n_samples = y.shape[0]\n        pred_t = np.zeros(n_samples)\n        proj_t = np.zeros(n_samples)\n        res_y = np.zeros(n_samples)\n\n        if self.n_splits == 1:\n            splits = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\n        # TODO. Deal with multi-class instrument\n        elif self.binary_instrument or self.binary_treatment:\n            group = 2*T*self.binary_treatment + Z.flatten()*self.binary_instrument\n            splits = StratifiedKFold(\n                n_splits=self.n_splits, shuffle=True).split(X, group)\n        else:\n            splits = KFold(n_splits=self.n_splits, shuffle=True).split(X)\n\n        for idx, (train, test) in enumerate(splits):\n            # Calculate nuisances\n            pred_t[test] = self.model_T_X[idx].fit(\n                X[train], T[train]).predict(X[test])\n            proj_t[test] = self.model_T_XZ[idx].fit(hstack([X[train], Z[train]]),\n                                               T[train]).predict(hstack([X[test], Z[test]]))\n            res_y[test] = y[test] - \\\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\n\n        # Estimate E[T_res | Z_res]\n        res_z = proj_t - pred_t\n        res_t = T - pred_t\n        self._effect = np.mean(res_y * res_z)/np.mean(res_t * res_z)\n\n        self._std = np.std(res_y * res_z)/(np.sqrt(res_y.shape[0]) * np.abs(np.mean(res_t * res_z)))\n\n        return self\n\n    def effect(self, X=None):\n        \"\"\"\n        Parameters\n        ----------\n        X : features\n        \"\"\"\n        if X is None:\n            return self._effect\n        else:\n            return self._effect * np.ones(X.shape[0])\n\n    def normal_effect_interval(self, lower=5, upper=95):\n        return (scipy.stats.norm.ppf(lower/100, loc=self._effect, scale=self._std),\n                scipy.stats.norm.ppf(upper/100, loc=self._effect, scale=self._std))\n\n    @property\n    def std(self):\n        return self._std\n\n    @property\n    def fitted_nuisances(self):\n        return {'model_Y_X': self.model_Y_X,\n                'model_T_X': self.model_T_X,\n                'model_T_XZ': self.model_T_XZ}\n\nclass SimpleATEIV:\n    \"\"\"\n    A non-doubly robust simple approach that predicts T from X,Z\n    and then runs a regression of Y on E[T | X, Z] and X. No cross-fitting\n    is used.\n    \"\"\"\n\n    def __init__(self, model_T_XZ, model_final):\n        \"\"\"\n        Parameters\n        ----------\n        model_T_XZ : model to predict E[T | X, Z]\n        model_final : final model for predicting Y from E[T|X,Z], X\n        \"\"\"\n        self.model_T_XZ = model_T_XZ\n        self.model_final = model_final\n\n    def fit(self, y, T, X, Z):\n        \"\"\"\n        Parameters\n        ----------\n        y : outcome\n        T : treatment (single dimensional)\n        X : features/controls\n        Z : instrument\n        \"\"\"\n        if len(T.shape) > 1 and T.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional treatment\")\n        if len(y.shape) > 1 and y.shape[1] > 1:\n            raise AssertionError(\"Can only accept single dimensional outcome\")\n        if len(Z.shape) == 1:\n            Z = Z.reshape(-1, 1)\n        T = T.flatten()\n        y = y.flatten()\n\n        pred_t = self.model_T_XZ.fit(hstack([X, Z]), T).predict(hstack([X, Z]))\n        self.model_final.fit(hstack([pred_t.reshape(-1, 1), X]), y)\n\n        return self\n\n    def effect(self, X, T0=0, T1=1):\n        \"\"\"\n        Parameters\n        ----------\n        X : features\n        \"\"\"\n        if not hasattr(T0, \"__len__\"):\n            T0 = np.ones(X.shape[0])*T0\n        if not hasattr(T1, \"__len__\"):\n            T1 = np.ones(X.shape[0])*T1\n\n        X0 = hstack([T0.reshape(-1, 1), X])\n        X1 = hstack([T1.reshape(-1, 1), X])\n        return self.model_final.predict(X1) - self.model_final.predict(X0)\n\n    @property\n    def coef_(self):\n        return self.model_final.coef_\n"
  },
  {
    "path": "prototypes/dml_iv/dml_iv.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Double ML IV for Heterogeneous Treatment Effects.\r\n\r\nAn Double/Orthogonal machine learning approach to estimation of heterogeneous\r\ntreatment effect with an endogenous treatment and an instrument. It\r\nimplements the DMLIV algorithm from the paper:\r\n\r\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\r\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\r\nhttps://arxiv.org/abs/1905.10176\r\n\r\n\"\"\"\r\n\r\nimport numpy as np\r\nfrom sklearn.model_selection import KFold, train_test_split, StratifiedKFold\r\nfrom econml.utilities import hstack\r\nfrom sklearn.base import clone\r\n\r\n\r\nclass _BaseDMLIV:\r\n    \"\"\"\r\n    The class _BaseDMLIV implements the base class of the DMLIV\r\n    algorithm for estimating a CATE. It accepts three generic machine\r\n    learning models:\r\n    1) model_Y_X that estimates E[Y | X]\r\n    2) model_T_X that estimates E[T | X]\r\n    3) model_T_XZ that estimates E[T | X, Z]\r\n    These are estimated in a cross-fitting manner for each sample in the training set.\r\n    Then it minimizes the square loss:\r\n    \\sum_i (Y_i - E[Y|X_i] - theta(X) * (E[T|X_i, Z_i] - E[T|X_i]))^2\r\n    This loss is minimized by the model_effect class, which is passed as an input.\r\n    In the two children classes {DMLIV, GenericDMLIV}, we implement different strategies of how to invoke\r\n    machine learning algorithms to minimize this final square loss.\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ, model_effect,\r\n                 n_splits=2, binary_instrument=False, binary_treatment=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]. In alt_fit this model is also used\r\n            to predict E[ E[T | X,Z] | X], i.e. regress E[T | X,Z] on X.\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        model_effect : final model that at fit time takes as input (Y-E[Y|X]), (E[T|X,Z]-E[T|X]) and X\r\n            and supports method .effect(X) that produces the cate at X\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        \"\"\"\r\n        self.model_T_XZ = [clone(model_T_XZ, safe=False)\r\n                           for _ in range(n_splits)]\r\n        self.model_Y_X = [clone(model_Y_X, safe=False)\r\n                          for _ in range(n_splits)]\r\n        self.model_T_X = [clone(model_T_X, safe=False)\r\n                          for _ in range(n_splits)]\r\n        self.model_effect = model_effect\r\n        self.n_splits = n_splits\r\n        self.binary_instrument = binary_instrument\r\n        self.binary_treatment = binary_treatment\r\n        self.stored_final_data = False\r\n\r\n    def fit(self, y, T, X, Z, store_final=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        y : outcome\r\n        T : treatment (single dimensional)\r\n        X : features/controls\r\n        Z : instrument (single dimensional)\r\n        store_final (bool) : whether to store the estimated nuisance values for\r\n            fitting a different final stage model without the need of refitting\r\n            the nuisance values. Increases memory usage. \r\n        \"\"\"\r\n        if len(T.shape) > 1 and T.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional treatment\")\r\n        if len(y.shape) > 1 and y.shape[1] > 1:\r\n            raise AssertionError(\"Can only accept single dimensional outcome\")\r\n        if len(Z.shape) == 1:\r\n            Z = Z.reshape(-1, 1)\r\n        if (Z.shape[1] > 1) and self.binary_instrument:\r\n            raise AssertionError(\r\n                \"Binary instrument flag is True, but instrument is multi-dimensional\")\r\n\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n\r\n        n_samples = y.shape[0]\r\n        proj_t = np.zeros(n_samples)\r\n        pred_t = np.zeros(n_samples)\r\n        res_y = np.zeros(n_samples)\r\n\r\n        if self.n_splits == 1:\r\n            splits = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\r\n        # TODO. Deal with multi-class instrument/treatment\r\n        elif self.binary_instrument or self.binary_treatment:\r\n            group = 2*T*self.binary_treatment + Z.flatten()*self.binary_instrument\r\n            splits = StratifiedKFold(\r\n                n_splits=self.n_splits, shuffle=True).split(X, group)\r\n        else:\r\n            splits = KFold(n_splits=self.n_splits, shuffle=True).split(X)\r\n\r\n        for idx, (train, test) in enumerate(splits):\r\n            # Estimate h(Z, X) = E[T | Z, X] in cross-fitting manner\r\n            proj_t[test] = self.model_T_XZ[idx].fit(hstack([X[train], Z[train]]),\r\n                                                    T[train]).predict(hstack([X[test],\r\n                                                                              Z[test]]))\r\n            # Estimate residual Y_res = Y - q(X) = Y - E[Y | X] in cross-fitting manner\r\n            res_y[test] = y[test] - \\\r\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\r\n            # Estimate p(X) = E[T | X] in cross-fitting manner\r\n            pred_t[test] = self.model_T_X[idx].fit(\r\n                X[train], T[train]).predict(X[test])\r\n\r\n        # Estimate theta by minimizing square loss (Y_res - theta(X) * (h(Z, X) - p(X)))^2\r\n        self.model_effect.fit(res_y, (proj_t-pred_t).reshape(-1, 1), X)\r\n\r\n        if store_final:\r\n            self.stored_final_data = True\r\n            self.X = X\r\n            self.res_t = (proj_t-pred_t).reshape(-1, 1)\r\n            self.res_y = res_y\r\n\r\n        return self\r\n\r\n    def effect(self, X):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        \"\"\"\r\n        return self.model_effect.predict(X)\r\n\r\n    @property\r\n    def coef_(self):\r\n        return self.effect_model.coef_\r\n\r\n    @property\r\n    def intercept_(self):\r\n        return self.effect_model.intercept_\r\n\r\n    @property\r\n    def effect_model(self):\r\n        return self.model_effect\r\n\r\n    @property\r\n    def fitted_nuisances(self):\r\n        return {'model_Y_X': self.model_Y_X,\r\n                'model_T_X': self.model_T_X,\r\n                'model_T_XZ': self.model_T_XZ}\r\n\r\n\r\nclass DMLIV(_BaseDMLIV):\r\n    \"\"\"\r\n    A child of the _BaseDMLIV class that specifies a particular effect model\r\n    where the treatment effect is linear in some featurization of the variable X\r\n    The features are created by a provided featurizer that supports fit_transform.\r\n    Then an arbitrary model fits on the composite set of features.\r\n\r\n    Concretely, it assumes that theta(X)=<theta, phi(X)> for some features phi(X)\r\n    and runs a linear model regression of Y-E[Y|X] on phi(X)*(E[T|X,Z]-E[T|X]).\r\n    The features are created by the featurizer provided by the user. The particular\r\n    linear model regression is also specified by the user (e.g. Lasso, ElasticNet)\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ, model_effect, featurizer,\r\n                 n_splits=2, binary_instrument=False, binary_treatment=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        model_effect : final linear model for predicting (Y-E[Y|X]) from phi(X) * (E[T|X,Z]-E[T|X])\r\n            Method is incorrect if this model is not linear (e.g. Lasso, ElasticNet, LinearRegression).\r\n        featurizer : object that creates features of X to use for effect model. Must have a method\r\n            fit_transform that is applied on X to create phi(X).\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        \"\"\"\r\n        class ModelEffectWrapper:\r\n            \"\"\"\r\n            A wrapper class that takes as input X, T, y and estimates an effect model of the form\r\n            y= theta(X) * T + epsilon\r\n            \"\"\"\r\n\r\n            def __init__(self, model_effect, featurizer):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                model_effect : model for CATE. At fit takes as input features(X) * (residual T)\r\n                    and (residual Y). At predict time takes as input features(X)\r\n                featurizer : model to produces features(X) from X\r\n                \"\"\"\r\n                self.model_effect = model_effect\r\n                self.featurizer = featurizer\r\n\r\n            def fit(self, y, T, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                y : outcome\r\n                T : treatment\r\n                X : features\r\n                \"\"\"\r\n                self.model_effect.fit(self.featurizer.fit_transform(X) * T, y)\r\n                return self\r\n\r\n            def predict(self, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                X : features\r\n                \"\"\"\r\n                return self.model_effect.predict(self.featurizer.fit_transform(X))\\\r\n                    - self.model_effect.predict(self.featurizer.fit_transform(X)*np.zeros((X.shape[0], 1)))\r\n\r\n        super(DMLIV, self).__init__(model_Y_X, model_T_X, model_T_XZ,\r\n                                    ModelEffectWrapper(model_effect, featurizer),\r\n                                    n_splits=n_splits,\r\n                                    binary_instrument=binary_instrument,\r\n                                    binary_treatment=binary_treatment)\r\n\r\n    def refit_final(self, model_effect, featurizer):\r\n        \"\"\" Refits a different effect model in the final stage of dml with\r\n        a different featurizer and a different linear model. Avoids refitting\r\n        the first stage nuisance functions. To call this method you\r\n        first have to call fit(y, T, X, Z, store_final=True), with the\r\n        store_final flag set to True.\r\n        \"\"\"\r\n        if not self.stored_final_data:\r\n            raise AttributeError(\r\n                \"Estimator is not yet fit with store_data=True\")\r\n        self.model_effect.model_effect = model_effect\r\n        self.model_effect.featurizer = featurizer\r\n        self.model_effect.fit(self.res_y, self.res_t, self.X)\r\n        return self\r\n\r\n    @property\r\n    def effect_model(self):\r\n        \"\"\" Returns the linear model fitted in the final stage on features phi(X)*(E[T|X,Z]-E[T|X])\r\n        \"\"\"\r\n        return self.model_effect.model_effect\r\n\r\n\r\nclass GenericDMLIV(_BaseDMLIV):\r\n    \"\"\"\r\n    A child of the _BaseDMLIV class that allows for an arbitrary square loss based ML\r\n    method in the final stage of the DMLIV algorithm. The method has to support\r\n    sample weights and the fit method has to take as input sample_weights (e.g. random forests), i.e.\r\n    fit(X, y, sample_weight=None)\r\n    It achieves this by re-writing the final stage square loss of the DMLIV algorithm as:\r\n        \\sum_i (E[T|X_i, Z_i] - E[T|X_i])^2 * ((Y_i - E[Y|X_i])/(E[T|X_i, Z_i] - E[T|X_i]) - theta(X))^2\r\n    Then this can be viewed as a weighted square loss regression, where the target label is\r\n        \\tilde{Y}_i = (Y_i - E[Y|X_i])/(E[T|X_i, Z_i] - E[T|X_i])\r\n    and each sample has a weight of\r\n        V(X_i) = (E[T|X_i, Z_i] - E[T|X_i])^2\r\n    Thus we can call any regression model with inputs:\r\n        fit(X, \\tilde{Y}_i, sample_weight=V(X_i))\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ, model_effect,\r\n                 n_splits=2, binary_instrument=False, binary_treatment=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        model_effect : final model for predicting \\tilde{Y} from X with sample weights V(X)\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        \"\"\"\r\n        class ModelEffectWrapper:\r\n            \"\"\"\r\n            A wrapper class that takes as input X, T, y and estimates an effect model of the form\r\n            y= theta(X) * T + epsilon\r\n            by minimizing the weighted square loss \\sum_i T_i^2 (Y_i/T_i - theta(X_i))^2\r\n            To avoid numerical instability the variable T_i is clipped when its absolute value\r\n            is below a small number of 1e-6.\r\n            \"\"\"\r\n\r\n            def __init__(self, model_effect):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                model_effect : model for CATE. At fit takes as input X, y=tilde{Y}, sample_weight=V(X).\r\n                    At predict time takes as input X\r\n                \"\"\"\r\n                self.model_effect = model_effect\r\n                self._T_clip = 1e-6\r\n\r\n            def fit(self, y, T, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                y : outcome\r\n                T : treatment\r\n                X : features\r\n                \"\"\"\r\n                T_sign = np.sign(T)\r\n                T_sign[T_sign == 0] = 1\r\n                clipped_T = T_sign * np.clip(np.abs(T), self._T_clip, np.inf)\r\n                self.model_effect.fit(\r\n                    X, y/clipped_T.flatten(), sample_weight=(T.flatten())**2)\r\n                return self\r\n\r\n            def predict(self, X):\r\n                \"\"\"\r\n                Parameters\r\n                ----------\r\n                X : features\r\n                \"\"\"\r\n                return self.model_effect.predict(X)\r\n\r\n        super(GenericDMLIV, self).__init__(model_Y_X, model_T_X, model_T_XZ,\r\n                                           ModelEffectWrapper(model_effect),\r\n                                           n_splits=n_splits,\r\n                                           binary_instrument=binary_instrument,\r\n                                           binary_treatment=binary_treatment)\r\n\r\n    def refit_final(self, model_effect):\r\n        \"\"\" Refits a different effect model in the final stage of dml with\r\n        a different featurizer and a different linear model. Avoids refitting\r\n        the first stage nuisance functions. To call this method you\r\n        first have to call fit(y, T, X, Z, store_final=True), with the\r\n        store_final flag set to True.\r\n        \"\"\"\r\n        if not self.stored_final_data:\r\n            raise AttributeError(\r\n                \"Estimator is not yet fit with store_data=True\")\r\n        self.model_effect.model_effect = model_effect\r\n        self.model_effect.fit(self.res_y, self.res_t, self.X)\r\n        return self\r\n\r\n    @property\r\n    def effect_model(self):\r\n        \"\"\" Returns the effect model provided by the user after being fitted in the final stage\r\n        \"\"\"\r\n        return self.model_effect.model_effect\r\n"
  },
  {
    "path": "prototypes/dml_iv/dr_iv.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\"Doubly Robust IV for Heterogeneous Treatment Effects.\r\n\r\nAn Doubly Robust machine learning approach to estimation of heterogeneous\r\ntreatment effect with an endogenous treatment and an instrument.\r\n\r\nImplements the DRIV algorithm for estimating CATE with IVs from the paper:\r\n\r\nMachine Learning Estimation of Heterogeneous Treatment Effects with Instruments\r\nVasilis Syrgkanis, Victor Lei, Miruna Oprescu, Maggie Hei, Keith Battocchi, Greg Lewis\r\nhttps://arxiv.org/abs/1905.10176\r\n\"\"\"\r\n\r\nimport numpy as np\r\nfrom sklearn.model_selection import KFold, train_test_split, StratifiedKFold\r\nfrom econml.utilities import hstack\r\nfrom sklearn.base import clone\r\nimport copy\r\nfrom itertools import tee\r\n\r\n\r\nclass _BaseDRIV:\r\n\r\n    \"\"\"\r\n    The _BaseDRIV algorithm for estimating CATE with IVs. It is the parent of the\r\n    two public classes {DRIV, ProjectedDRIV}\r\n    \"\"\"\r\n\r\n    def __init__(self, nuisance_models,\r\n                 model_effect,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 binary_instrument=False, binary_treatment=False,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        nuisance_models : dictionary of nuisance models, with {'name_of_model' : EstimatorObject, ...}\r\n        model_effect : model to estimate second stage effect model from doubly robust target\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        for n_name, n_model in nuisance_models.items():\r\n            setattr(self, n_name, [clone(n_model, safe=False)\r\n                                   for _ in range(n_splits)])\r\n        self.nuisance_model_names = list(nuisance_models.keys())\r\n        self.model_effect = clone(model_effect, safe=False)\r\n        self.cov_clip = cov_clip\r\n        self.n_splits = n_splits\r\n        self.binary_instrument = binary_instrument\r\n        self.binary_treatment = binary_treatment\r\n        self.opt_reweighted = opt_reweighted\r\n        self.stored_final_data = False\r\n\r\n    def _check_inputs(self, y, T, X, Z):\r\n        \"\"\" Checks dimension of inputs and reshapes inputs. Implemented at child\r\n        \"\"\"\r\n        raise(\"Child class needs to implement this method\")\r\n\r\n    def _nuisance_estimates(self, y, T, X, Z):\r\n        \"\"\" Estimates the nuisance quantities for each sample with cross-fitting.\r\n        Implemented at child\r\n        \"\"\"\r\n        raise(\"Child class needs to implement this method\")\r\n\r\n    def _get_split_enum(self, y, T, X, Z):\r\n        \"\"\"\r\n        Returns an enumerator over the splits for cross-fitting\r\n        \"\"\"\r\n        # We do a three way split, as typically a preliminary theta estimator would require\r\n        # many samples. So having 2/3 of the sample to train model_theta seems appropriate.\r\n        if self.n_splits == 1:\r\n            splits = [(np.arange(X.shape[0]), np.arange(X.shape[0]))]\r\n        # TODO. Deal with multi-class instrument\r\n        elif self.binary_instrument or self.binary_treatment:\r\n            group = 2 * T * self.binary_treatment + Z.flatten() * self.binary_instrument\r\n            splits = StratifiedKFold(\r\n                n_splits=self.n_splits, shuffle=True).split(X, group)\r\n        else:\r\n            splits = KFold(n_splits=self.n_splits, shuffle=True).split(X)\r\n\r\n        return splits\r\n\r\n    def fit(self, y, T, X, Z, store_final=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        y : outcome\r\n        T : treatment (single dimensional)\r\n        X : features/controls\r\n        Z : instrument (single dimensional)\r\n        store_final : whether to store nuisance data that are used in the final for\r\n            refitting the final stage later on\r\n        \"\"\"\r\n        y, T, X, Z = self._check_inputs(y, T, X, Z)\r\n\r\n        prel_theta, res_t, res_y, res_z, cov = self._nuisance_estimates(\r\n            y, T, X, Z)\r\n\r\n        # Estimate final model of theta(X) by minimizing the square loss:\r\n        # (prel_theta(X) + (Y_res - prel_theta(X) * T_res) * Z_res / cov[T,Z | X] - theta(X))^2\r\n        # We clip the covariance so that it is bounded away from zero, so as to reduce variance\r\n        # at the expense of some small bias. For points with very small covariance we revert\r\n        # to the model-based preliminary estimate and do not add the correction term.\r\n        cov_sign = np.sign(cov)\r\n        cov_sign[cov_sign == 0] = 1\r\n        clipped_cov = cov_sign * np.clip(np.abs(cov),\r\n                                         self.cov_clip, np.inf)\r\n        theta_dr = prel_theta + \\\r\n            (res_y - prel_theta * res_t) * res_z / clipped_cov\r\n        if self.opt_reweighted:\r\n            self.model_effect.fit(X, theta_dr, sample_weight=clipped_cov**2)\r\n        else:\r\n            self.model_effect.fit(X, theta_dr)\r\n\r\n        if store_final:\r\n            self.X = X\r\n            self.theta_dr = theta_dr\r\n            self.stored_final_data = True\r\n            self.clipped_cov = clipped_cov\r\n\r\n        return self\r\n\r\n    def refit_final(self, model_effect, opt_reweighted=None):\r\n        \"\"\"\r\n        Change the final effect model and refit the final stage.\r\n        Parameters\r\n        ----------\r\n        model_effect : an instance of the new effect model to be fitted in the final stage\r\n        opt_reweighted : whether to weight samples for variance reduction in the final model fitting\r\n        \"\"\"\r\n        if not self.stored_final_data:\r\n            raise AttributeError(\r\n                \"Estimator is not yet fit with store_data=True\")\r\n        if opt_reweighted is not None:\r\n            self.opt_reweighted = opt_reweighted\r\n        self.model_effect = model_effect\r\n        if self.opt_reweighted:\r\n            self.model_effect.fit(self.X, self.theta_dr,\r\n                                  sample_weight=self.clipped_cov**2)\r\n        else:\r\n            self.model_effect.fit(self.X, self.theta_dr)\r\n        return self\r\n\r\n    def effect(self, X):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        \"\"\"\r\n        return self.model_effect.predict(X)\r\n\r\n    @property\r\n    def effect_model(self):\r\n        return self.model_effect\r\n\r\n    @property\r\n    def fitted_nuisances(self):\r\n        nuisance_dict = {}\r\n        for n_name in self.nuisance_model_names:\r\n            nuisance_dict[n_name] = getattr(self, n_name)\r\n        return nuisance_dict\r\n\r\n    @property\r\n    def coef_(self):\r\n        if not hasattr(self.effect_model, 'coef_'):\r\n            raise AttributeError(\"Effect model is not linear!\")\r\n        return self.effect_model.coef_\r\n\r\n    @property\r\n    def intercept_(self):\r\n        if not hasattr(self.effect_model, 'intercept_'):\r\n            raise AttributeError(\"Effect model is not linear!\")\r\n        return self.effect_model.intercept_\r\n\r\n\r\nclass DRIV(_BaseDRIV):\r\n    \"\"\"\r\n    Implements the DRIV algorithm\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_Z_X,\r\n                 prel_model_effect, model_TZ_X,\r\n                 model_effect,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 binary_instrument=False, binary_treatment=False,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]. In alt_fit, this model is also\r\n            used to predict E[T | X, Z]\r\n        model_Z_X : model to predict E[Z | X]\r\n        model_theta : model that estimates a preliminary version of the CATE\r\n            (e.g. via DMLIV or other method)\r\n        model_TZ_X : model to estimate E[T * Z | X]\r\n        model_effect : model to estimate second stage effect model from doubly robust target\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        nuisance_models = {'prel_model_effect': prel_model_effect,\r\n                           'model_TZ_X': model_TZ_X,\r\n                           'model_T_X': model_T_X,\r\n                           'model_Z_X': model_Z_X,\r\n                           'model_Y_X': model_Y_X}\r\n        super(DRIV, self).__init__(nuisance_models, model_effect,\r\n                                   cov_clip=cov_clip,\r\n                                   n_splits=n_splits,\r\n                                   binary_instrument=binary_instrument, binary_treatment=binary_treatment,\r\n                                   opt_reweighted=opt_reweighted)\r\n        return\r\n\r\n    def _check_inputs(self, y, T, X, Z):\r\n        if len(Z.shape) > 1 and Z.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional instrument\")\r\n        if len(T.shape) > 1 and T.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional treatment\")\r\n        if len(y.shape) > 1 and y.shape[1] > 1:\r\n            raise AssertionError(\"Can only accept single dimensional outcome\")\r\n        Z = Z.flatten()\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        return y, T, X, Z\r\n\r\n    def _nuisance_estimates(self, y, T, X, Z):\r\n        n_samples = y.shape[0]\r\n        prel_theta = np.zeros(n_samples)\r\n        res_t = np.zeros(n_samples)\r\n        res_y = np.zeros(n_samples)\r\n        res_z = np.zeros(n_samples)\r\n        cov = np.zeros(n_samples)\r\n\r\n        splits = self._get_split_enum(y, T, X, Z)\r\n        for idx, (train, test) in enumerate(splits):\r\n            # Estimate preliminary theta in cross fitting manner\r\n            prel_theta[test] = self.prel_model_effect[idx].fit(\r\n                y[train], T[train], X[train], Z[train]).effect(X[test]).flatten()\r\n            # Estimate p(X) = E[T | X] in cross fitting manner\r\n            self.model_T_X[idx].fit(X[train], T[train])\r\n            pr_t_test = self.model_T_X[idx].predict(X[test])\r\n            # Estimate r(Z) = E[Z | X] in cross fitting manner\r\n            self.model_Z_X[idx].fit(X[train], Z[train])\r\n            pr_z_test = self.model_Z_X[idx].predict(X[test])\r\n            # Calculate residual T_res = T - p(X) and Z_res = Z - r(X)\r\n            res_t[test] = T[test] - pr_t_test\r\n            res_z[test] = Z[test] - pr_z_test\r\n            # Estimate residual Y_res = Y - q(X) = Y - E[Y | X] in cross fitting manner\r\n            res_y[test] = y[test] - \\\r\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\r\n            # Estimate cov[T, Z | X] = E[(T-p(X))*(Z-r(X)) | X] = E[T*Z | X] - E[T |X]*E[Z | X]\r\n            cov[test] = self.model_TZ_X[idx].fit(\r\n                X[train], T[train] * Z[train]).predict(X[test]) - pr_t_test * pr_z_test\r\n\r\n        return prel_theta, res_t, res_y, res_z, cov\r\n\r\n\r\nclass ProjectedDRIV(_BaseDRIV):\r\n    \"\"\"\r\n    This is a slight variant of DRIV where we use E[T|Z, X] as\r\n    the instrument as opposed to Z. The rest is the same as the normal\r\n    fit.\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_X, model_T_XZ,\r\n                 prel_model_effect, model_TZ_X,\r\n                 model_effect,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 binary_instrument=False, binary_treatment=False,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_X : model to predict E[T | X]. In alt_fit, this model is also\r\n            used to predict E[T | X, Z]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        model_theta : model that estimates a preliminary version of the CATE\r\n            (e.g. via DMLIV or other method)\r\n        model_TZ_X : model to estimate cov[T, E[T|X,Z] | X] = E[(T-E[T|X]) * (E[T|X,Z] - E[T|X]) | X].\r\n        model_effect : model to estimate second stage effect model from doubly robust target\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        binary_instrument : whether to stratify cross-fitting splits by instrument\r\n        binary_treatment : whether to stratify cross-fitting splits by treatment\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        nuisance_models = {'prel_model_effect': prel_model_effect,\r\n                           'model_Y_X': model_Y_X,\r\n                           'model_T_X': model_T_X,\r\n                           'model_T_XZ': model_T_XZ,\r\n                           'model_TZ_X': model_TZ_X}\r\n        super(ProjectedDRIV, self).__init__(nuisance_models, model_effect,\r\n                                            cov_clip=cov_clip,\r\n                                            n_splits=n_splits,\r\n                                            binary_instrument=binary_instrument, binary_treatment=binary_treatment,\r\n                                            opt_reweighted=opt_reweighted)\r\n        return\r\n\r\n    def _check_inputs(self, y, T, X, Z):\r\n\r\n        if len(T.shape) > 1 and T.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional treatment\")\r\n        if len(y.shape) > 1 and y.shape[1] > 1:\r\n            raise AssertionError(\"Can only accept single dimensional outcome\")\r\n        if len(Z.shape) == 1:\r\n            Z = Z.reshape(-1, 1)\r\n        if (Z.shape[1] > 1) and self.binary_instrument:\r\n            raise AssertionError(\r\n                \"Binary instrument flag is True, but instrument is multi-dimensional\")\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n\r\n        return y, T, X, Z\r\n\r\n    def _nuisance_estimates(self, y, T, X, Z):\r\n\r\n        n_samples = y.shape[0]\r\n        prel_theta = np.zeros(n_samples)\r\n        res_t = np.zeros(n_samples)\r\n        res_y = np.zeros(n_samples)\r\n        res_z = np.zeros(n_samples)\r\n        cov = np.zeros(n_samples)\r\n        proj_t = np.zeros(n_samples)\r\n\r\n        splits = self._get_split_enum(y, T, X, Z)\r\n\r\n        # TODO. The solution below is not really a valid cross-fitting\r\n        # as the test data are used to create the proj_t on the train\r\n        # which in the second train-test loop is used to create the nuisance\r\n        # cov on the test data. Hence the T variable of some sample\r\n        # is implicitly correlated with its cov nuisance, through this flow\r\n        # of information. However, this seems a rather weak correlation.\r\n        # The more kosher would be to do an internal nested cv loop for the T_XZ\r\n        # model.\r\n        splits, splits_one = tee(splits)\r\n        # Estimate h(X, Z) = E[T | X, Z] in cross fitting manner\r\n        for idx, (train, test) in enumerate(splits_one):\r\n            self.model_T_XZ[idx].fit(hstack([X[train], Z[train]]), T[train])\r\n            proj_t[test] = self.model_T_XZ[idx].predict(\r\n                hstack([X[test], Z[test]]))\r\n\r\n        for idx, (train, test) in enumerate(splits):\r\n            # Estimate preliminary theta in cross fitting manner\r\n            prel_theta[test] = self.prel_model_effect[idx].fit(\r\n                y[train], T[train], X[train], Z[train]).effect(X[test]).flatten()\r\n            # Estimate p(X) = E[T | X] in cross fitting manner\r\n            self.model_T_X[idx].fit(X[train], T[train])\r\n            pr_t_test = self.model_T_X[idx].predict(X[test])\r\n            # Calculate residual T_res = T - p(X) and Z_res = h(Z, X) - p(X)\r\n            res_t[test] = T[test] - pr_t_test\r\n            res_z[test] = proj_t[test] - pr_t_test\r\n            # Estimate residual Y_res = Y - q(X) = Y - E[Y | X] in cross fitting manner\r\n            res_y[test] = y[test] - \\\r\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\r\n            # Estimate cov[T, E[T|X,Z] | X] = E[T * E[T|X,Z]] - E[T|X]^2\r\n            cov[test] = self.model_TZ_X[idx].fit(\r\n                X[train], T[train] * proj_t[train]).predict(X[test]) - pr_t_test**2\r\n\r\n        return prel_theta, res_t, res_y, res_z, cov\r\n\r\n##############################################################################\r\n# Classes for the DRIV implementation for the special case of intent-to-treat\r\n# A/B test\r\n##############################################################################\r\n\r\n\r\nclass _IntentToTreatDRIV(_BaseDRIV):\r\n    \"\"\"\r\n    Helper class for the DRIV algorithm for the intent-to-treat A/B test setting\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_XZ,\r\n                 prel_model_effect,\r\n                 model_effect,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        \"\"\"\r\n        nuisance_models = {'model_Y_X': model_Y_X,\r\n                           'model_T_XZ': model_T_XZ,\r\n                           'prel_model_effect': prel_model_effect}\r\n        super(_IntentToTreatDRIV, self).__init__(nuisance_models, model_effect,\r\n                                                 cov_clip=cov_clip,\r\n                                                 n_splits=n_splits,\r\n                                                 binary_instrument=True, binary_treatment=True,\r\n                                                 opt_reweighted=opt_reweighted)\r\n        return\r\n\r\n    def _check_inputs(self, y, T, X, Z):\r\n        if len(Z.shape) > 1 and Z.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional instrument\")\r\n        if len(T.shape) > 1 and T.shape[1] > 1:\r\n            raise AssertionError(\r\n                \"Can only accept single dimensional treatment\")\r\n        if len(y.shape) > 1 and y.shape[1] > 1:\r\n            raise AssertionError(\"Can only accept single dimensional outcome\")\r\n        Z = Z.flatten()\r\n        T = T.flatten()\r\n        y = y.flatten()\r\n        return y, T, X, Z\r\n\r\n    def _nuisance_estimates(self, y, T, X, Z):\r\n        n_samples = y.shape[0]\r\n        prel_theta = np.zeros(n_samples)\r\n        res_t = np.zeros(n_samples)\r\n        res_y = np.zeros(n_samples)\r\n        delta = np.zeros(n_samples)\r\n\r\n        splits = self._get_split_enum(y, T, X, Z)\r\n        for idx, (train, test) in enumerate(splits):\r\n            # Estimate preliminary theta in cross fitting manner\r\n            prel_theta[test] = self.prel_model_effect[idx].fit(\r\n                y[train], T[train], X[train], Z[train]).effect(X[test]).flatten()\r\n            # Estimate p(X) = E[T | X] in cross fitting manner\r\n            self.model_T_XZ[idx].fit(hstack([X[train], Z[train].reshape(-1, 1)]), T[train])\r\n            Z_one = np.ones((Z[test].shape[0], 1))\r\n            Z_zero = np.zeros((Z[test].shape[0], 1))\r\n            pr_t_test_one = self.model_T_XZ[idx].predict(hstack([X[test], Z_one]))\r\n            pr_t_test_zero = self.model_T_XZ[idx].predict(hstack([X[test], Z_zero]))\r\n            delta[test] = (pr_t_test_one - pr_t_test_zero) / 2\r\n            pr_t_test = (pr_t_test_one + pr_t_test_zero) / 2\r\n            res_t[test] = T[test] - pr_t_test\r\n            # Estimate residual Y_res = Y - q(X) = Y - E[Y | X] in cross fitting manner\r\n            res_y[test] = y[test] - \\\r\n                self.model_Y_X[idx].fit(X[train], y[train]).predict(X[test])\r\n\r\n        return prel_theta, res_t, res_y, 2 * Z - 1, delta\r\n\r\n\r\nclass _DummyCATE:\r\n    \"\"\"\r\n    A dummy cate effect model that always returns zero effect\r\n    \"\"\"\r\n\r\n    def __init__(self):\r\n        return\r\n\r\n    def fit(self, y, T, X, Z):\r\n        return self\r\n\r\n    def effect(self, X):\r\n        return np.zeros(X.shape[0])\r\n\r\n\r\nclass IntentToTreatDRIV(_IntentToTreatDRIV):\r\n    \"\"\"\r\n    Implements the DRIV algorithm for the intent-to-treat A/B test setting\r\n    \"\"\"\r\n\r\n    def __init__(self, model_Y_X, model_T_XZ,\r\n                 flexible_model_effect,\r\n                 final_model_effect=None,\r\n                 cov_clip=.1,\r\n                 n_splits=3,\r\n                 opt_reweighted=False):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model_Y_X : model to predict E[Y | X]\r\n        model_T_XZ : model to predict E[T | X, Z]\r\n        flexible_model_effect : a flexible model for a preliminary version of the CATE, must accept\r\n            sample_weight at fit time.\r\n        final_model_effect : a final model for the CATE and projections. If None, then\r\n            flexible_model_effect is also used as a final model\r\n        cov_clip : clipping of the covariate for regions with low \"overlap\",\r\n            so as to reduce variance\r\n        n_splits : number of splits to use in cross-fitting\r\n        opt_reweighted : whether to reweight the samples to minimize variance. If True then\r\n            final_model_effect.fit must accept sample_weight as a kw argument (WeightWrapper from\r\n            utilities can be used for any linear model to enable sample_weights). If True then\r\n            assumes the final_model_effect is flexible enough to fit the true CATE model. Otherwise,\r\n            it method will return a biased projection to the model_effect space, biased\r\n            to give more weight on parts of the feature space where the instrument is strong.\r\n        \"\"\"\r\n        prel_model_effect = _IntentToTreatDRIV(clone(model_Y_X, safe=False),\r\n                                               clone(model_T_XZ, safe=False),\r\n                                               _DummyCATE(),\r\n                                               clone(flexible_model_effect, safe=False),\r\n                                               cov_clip=1e-7, n_splits=1, opt_reweighted=True)\r\n        if final_model_effect is None:\r\n            final_model_effect = clone(flexible_model_effect, safe=False)\r\n        super(IntentToTreatDRIV, self).__init__(model_Y_X, model_T_XZ, prel_model_effect,\r\n                                                final_model_effect,\r\n                                                cov_clip=cov_clip,\r\n                                                n_splits=n_splits,\r\n                                                opt_reweighted=opt_reweighted)\r\n        return\r\n"
  },
  {
    "path": "prototypes/dml_iv/post_processing.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"results = np.load('coverage_results.npy')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"plt.hist(results[:, 1], label='dmlateiv: {}'.format(np.mean(results[:, 1])))\\n\",\n    \"plt.hist(results[:, 4], label='driv: {}'.format(np.mean(results[:, 4])), alpha=.2)\\n\",\n    \"plt.hist(np.mean(results[:, 0]))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n0UIp7hERLfQPatrGOE4kjLQAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import seaborn as sns\\n\",\n    \"from scipy.stats import norm\\n\",\n    \"\\n\",\n    \"(mu, sigma) = norm.fit(results[:, 1])\\n\",\n    \"sns.distplot(results[:, 1], fit=norm, kde=False, norm_hist=True, label='dmlateiv: {:.2f}, {:.2f}'.format(mu, sigma))\\n\",\n    \"\\n\",\n    \"(mu, sigma) = norm.fit(results[:, 4])\\n\",\n    \"sns.distplot(results[:, 4], fit=norm, kde=False, norm_hist=True, label='driv: {:.2f}, {:.2f}'.format(mu, sigma))\\n\",\n    \"plt.title(\\\"DMLATEIV vs DRIV: Truth={:.2f}\\\".format(np.mean(results[:, 0])))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.savefig(\\\"cov_exp_1.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import statsmodels.api as sm\\n\",\n    \"import scipy.stats as stats\\n\",\n    \"std = np.mean(results[:, 6] - results[:, 5])/4\\n\",\n    \"sm.qqplot((results[:, 4] - np.mean(results[:, 0]))/std, line='45')\\n\",\n    \"plt.savefig(\\\"cov_exp_2.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nRK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import statsmodels.api as sm\\n\",\n    \"import scipy.stats as stats\\n\",\n    \"std = np.mean(results[:, 3] - results[:, 2])/4\\n\",\n    \"sm.qqplot((results[:, 1] - np.mean(results[:, 0]))/std, line='45')\\n\",\n    \"plt.savefig(\\\"cov_exp_3.pdf\\\", dpi=300, bbox_inches='tight')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nQ0GS1Pw/Wnu67bJFLKcAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.hist(results[:, 3] - results[:, 2])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nJDXmfwGwVVO3u5bWAAAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.hist(results[:, 6] - results[:, 5])\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coverage DMLATE: 0.260\\n\",\n      \"Coverage DRIV: 0.940\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"Coverage DMLATE: {:.3f}\\\".format(np.mean((results[:, 0] >= results[:, 2]) & (results[:, 0] <= results[:, 3]))))\\n\",\n    \"print(\\\"Coverage DRIV: {:.3f}\\\".format(np.mean((results[:, 0] >= results[:, 5]) & (results[:, 0] <= results[:, 6]))))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.5\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dml_iv/utilities.py",
    "content": "# Copyright (c) PyWhy contributors. All rights reserved.\r\n# Licensed under the MIT License.\r\n\r\n\"\"\" Utility classes and functions.\r\n\"\"\"\r\n\r\nfrom sklearn.linear_model import LinearRegression\r\nfrom sklearn.preprocessing import PolynomialFeatures\r\nfrom sklearn.base import clone\r\nimport numpy as np\r\nimport copy\r\nimport statsmodels.api as sm\r\nfrom sklearn.model_selection import train_test_split\r\nfrom joblib import Parallel, delayed\r\nfrom sklearn.linear_model import ElasticNet, Lasso\r\nfrom sklearn.dummy import DummyRegressor\r\nfrom sklearn.pipeline import Pipeline\r\nfrom sklearn.ensemble import RandomForestRegressor\r\n\r\n\r\n# A wrapper of statsmodel linear regression, wrapped in a sklearn interface.\r\n# We can use statsmodel for all hypothesis testing capabilities\r\nclass StatsModelLinearRegression:\r\n\r\n    def __init__(self, fit_intercept=True, cov_type='nonrobust'):\r\n        self.fit_intercept = fit_intercept\r\n        self.cov_type = cov_type\r\n        return\r\n\r\n    def fit(self, X, y, sample_weight=None):\r\n        if self.fit_intercept:\r\n            X = PolynomialFeatures(degree=1, include_bias=True).fit_transform(X)\r\n        if sample_weight is not None:\r\n            X = X * np.sqrt(sample_weight).reshape(-1, 1)\r\n            y = y * np.sqrt(sample_weight)\r\n        self.model = sm.OLS(y, X).fit(cov_type=self.cov_type)\r\n        return self\r\n\r\n    def predict(self, X):\r\n        if self.fit_intercept:\r\n            X = PolynomialFeatures(degree=1, include_bias=True).fit_transform(X)\r\n        return self.model.predict(exog=X)\r\n\r\n    def summary(self, *args, **kwargs):\r\n        return self.model.summary(*args, **kwargs)\r\n\r\n    @property\r\n    def coef_(self):\r\n        if self.fit_intercept:\r\n            return self.model._results.params[1:]\r\n        return self.model._results.params\r\n\r\n    @property\r\n    def intercept_(self):\r\n        if self.fit_intercept:\r\n            return self.model._results.params[0]\r\n        return 0\r\n\r\n# A wrapper of statsmodel linear regression, wrapped in a sklearn interface.\r\n# We can use statsmodel for all hypothesis testing capabilities\r\nclass ConstantModel:\r\n\r\n    def __init__(self):\r\n        self.est = StatsModelLinearRegression(fit_intercept=False)\r\n        return\r\n\r\n    def fit(self, X, y, sample_weight=None):\r\n        self.est.fit(np.ones((X.shape[0], 1)), y, sample_weight=sample_weight)\r\n        return self\r\n\r\n    def predict(self, X):\r\n        return self.est.predict(np.ones((X.shape[0], 1)))\r\n\r\n    def summary(self, *args, **kwargs):\r\n        return self.est.summary(*args, **kwargs)\r\n\r\n    @property\r\n    def coef_(self):\r\n        return None\r\n\r\n    @property\r\n    def intercept_(self):\r\n        return self.est.coef_[0]\r\n\r\nclass SeparateModel:\r\n    \"\"\" Splits the data based on the last feature and trains\r\n    a separate model for each subsample. At fit time, it\r\n    uses the last feature to choose which model to use\r\n    to predict.\r\n    \"\"\"\r\n    def __init__(self, model0, model1):\r\n        self.model0 = model0\r\n        self.model1 = model1\r\n        return\r\n\r\n    def fit(self, XZ, T):\r\n        Z0 = (XZ[:, -1] == 0)\r\n        Z1 = (XZ[:, -1] == 1)\r\n        self.model0.fit(XZ[Z0, :-1], T[Z0])\r\n        self.model1.fit(XZ[Z1, :-1], T[Z1])\r\n        return self\r\n\r\n    def predict(self, XZ):\r\n        Z0 = (XZ[:, -1] == 0)\r\n        Z1 = (XZ[:, -1] == 1)\r\n        t_pred = np.zeros(XZ.shape[0])\r\n        if np.sum(Z0) > 0:\r\n            t_pred[Z0] = self.model0.predict(XZ[Z0, :-1])\r\n        if np.sum(Z1) > 0:\r\n            t_pred[Z1] = self.model1.predict(XZ[Z1, :-1])\r\n        return t_pred\r\n\r\n    @property\r\n    def coef_(self):\r\n        return np.concatenate((self.model0.coef_, self.model1.coef_))\r\n\r\nclass RegWrapper:\r\n    \"\"\"\r\n    A simple wrapper that makes a binary classifier behave like a regressor.\r\n    Essentially .fit, calls the fit method of the classifier and\r\n    .predict calls the .predict_proba method of the classifier\r\n    and returns the probability of label 1.\r\n    \"\"\"\r\n\r\n    def __init__(self, clf):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        clf : the classifier model\r\n        \"\"\"\r\n        self._clf = clf\r\n\r\n    def fit(self, X, y):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        y : binary label\r\n        \"\"\"\r\n        self._clf.fit(X, y)\r\n        return self\r\n\r\n    def predict(self, X):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        \"\"\"\r\n        return self._clf.predict_proba(X)[:, 1]\r\n\r\n    def __getattr__(self, name):\r\n        if name == 'get_params':\r\n            raise AttributeError(\"not sklearn\")\r\n        return getattr(self._clf, name)\r\n\r\n    def __deepcopy__(self, memo):\r\n        return RegWrapper(copy.deepcopy(self._clf, memo))\r\n\r\nclass SubsetWrapper:\r\n    \"\"\"\r\n    A simple wrapper that fits the data on a subset of the\r\n    features given by an index list.\r\n    \"\"\"\r\n\r\n    def __init__(self, model, inds):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model : an sklearn model\r\n        inds : a subset of the input features to use\r\n        \"\"\"\r\n        self._model = model\r\n        self._inds = inds\r\n\r\n    def fit(self, X, y, **kwargs):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        y : binary label\r\n        \"\"\"\r\n        self._model.fit(X[:, self._inds], y, **kwargs)\r\n        return self\r\n\r\n    def predict(self, X):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : subset of features that correspond to inds\r\n        \"\"\"\r\n        return self._model.predict(X)\r\n    \r\n    def __getattr__(self, name):\r\n        if name == 'get_params':\r\n            raise AttributeError(\"not sklearn\")\r\n        return getattr(self._model, name)\r\n\r\n    def __deepcopy__(self, memo):\r\n        return SubsetWrapper(copy.deepcopy(self._model, memo), self._inds)\r\n\r\nclass WeightWrapper:\r\n    \"\"\"\r\n    A simple wrapper that adds sample weight to fit of a linear model.\r\n    TODO. Currently this does not seem right for any penalized regression\r\n    as by the internal transformation that we perform we will be penalizing\r\n    the intercept too. Something not intended by the original unweighted class\r\n    So we need to avoid intercept penalization. We could do it with selective\r\n    lasso internally.\r\n    \"\"\"\r\n\r\n    def __init__(self, model):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        model : a linear sklearn model with no intercept\r\n        \"\"\"\r\n        self._model = clone(model, safe=False)\r\n        self._fit_intercept = False\r\n        if hasattr(self._model, 'fit_intercept') and self._model.fit_intercept:\r\n            raise ValueError(\"Weight wrapper cannot wrap a linear model with an intercept!\")\r\n\r\n    def fit(self, X, y, sample_weight=None):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        y : binary label\r\n        sample_weight : sample weight\r\n        \"\"\"\r\n        if sample_weight is not None:\r\n            self._model.fit(X * np.sqrt(sample_weight).reshape(X.shape[0], 1), y * np.sqrt(sample_weight))\r\n        else:\r\n            self._model.fit(X, y)\r\n        return self\r\n\r\n    def predict(self, X):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : subset of features that correspond to inds\r\n        \"\"\"\r\n        return self._model.predict(X)\r\n    \r\n    @property\r\n    def coef_(self):\r\n        if self._fit_intercept:\r\n            return self._model.coef_[1:]\r\n        return self._model.coef_\r\n\r\n    @property\r\n    def intercept_(self):\r\n        if self._fit_intercept:\r\n            return self._model.coef_[0]\r\n        return 0\r\n\r\n    def __getattr__(self, name):\r\n        if name == 'get_params':\r\n            raise AttributeError(\"not sklearn\")\r\n        return getattr(self._model, name)\r\n\r\n    def __deepcopy__(self, memo):\r\n        model_copy = copy.deepcopy(self._model, memo)\r\n        model_copy.fit_intercept = self._fit_intercept\r\n        return WeightWrapper(copy.deepcopy(self._model, memo))\r\n\r\nclass SelectiveLasso:\r\n    \r\n    def __init__(self, inds, lasso_model):\r\n        self.inds = inds\r\n        self.lasso_model = lasso_model\r\n        self.model_Y_X = LinearRegression(fit_intercept=False)\r\n        self.model_X1_X2 = LinearRegression(fit_intercept=False)\r\n        self.model_X2 = LinearRegression(fit_intercept=False)\r\n        \r\n\r\n    def fit(self, X, y):\r\n        self.n_feats = X.shape[1]\r\n        inds = self.inds\r\n        inds_c = np.setdiff1d(np.arange(self.n_feats), self.inds)\r\n        self.inds_c = inds_c\r\n        if len(inds_c)==0:\r\n            self.lasso_model.fit(X, y)\r\n            return self\r\n        res_y = y - self.model_Y_X.fit(X[:, inds_c], y).predict(X[:, inds_c])\r\n        res_X1 = X[:, inds] - self.model_X1_X2.fit(X[:, inds_c], X[:, inds]).predict(X[:, inds_c])\r\n        self.lasso_model.fit(res_X1, res_y)\r\n        self.model_X2.fit(X[:, inds_c], y - self.lasso_model.predict(X[:, inds]))\r\n        return self\r\n    \r\n    def predict(self, X):\r\n        inds = self.inds\r\n        inds_c = self.inds_c\r\n        if len(inds_c)==0:\r\n            return self.lasso_model.predict(X)\r\n        return self.lasso_model.predict(X[:, inds]) + self.model_X2.predict(X[:, inds_c])\r\n    \r\n    @property\r\n    def model(self):\r\n        return self.lasso_model\r\n\r\n    @property\r\n    def coef_(self):\r\n        coef = np.zeros(self.n_feats)\r\n        inds = self.inds\r\n        inds_c = self.inds_c\r\n        if len(inds_c)==0:\r\n            return self.lasso_model.coef_\r\n        coef[inds] = self.lasso_model.coef_\r\n        coef[inds_c] = self.model_X2.coef_\r\n        return coef\r\n    \r\n    @property\r\n    def intercept_(self):\r\n        return self.lasso_model.intercept_ + self.model_X2.intercept_\r\n\r\n\r\nclass HonestForest(RandomForestRegressor):\r\n    \"\"\"\r\n    A simple implementation of an honest locally-linear forest on top of a sklearn tree. We split\r\n    the data in half and fit an sklearn random forest. Then use the other half to\r\n    calculate the leaf estimates. We also fit an elasticnet locally at each\r\n    leaf node.\r\n    \"\"\"\r\n    def __init__(self, forest, local_linear=False, alpha=0.1):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        forest : an sklearn forest model used to create the splits\r\n        alpha : l1/l2 regularization weight for local elasticnet fit at each leaf\r\n        \"\"\"\r\n        self.forest = forest\r\n        self.alpha = alpha\r\n        self.local_linear = local_linear\r\n        self.mu_leafs = None\r\n        return\r\n\r\n    def fit(self, X, y, sample_weight=None):\r\n        \"\"\"\r\n        Parameters\r\n        ----------\r\n        X : features\r\n        y : label\r\n        sample_weight : sample weights\r\n        \"\"\"\r\n        if sample_weight is not None:\r\n            sample_weight = sample_weight\r\n            X_train, X_test, y_train, y_test, sample_weight_train, sample_weight_test = train_test_split(X, y, sample_weight, test_size=.5, shuffle=True)\r\n        else:\r\n            X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5, shuffle=True)\r\n            sample_weight_train, sample_weight_test = None, None\r\n\r\n        self.forest.fit(X_train, y_train, sample_weight=sample_weight_train)\r\n        leaf_test = self.forest.apply(X_test)\r\n        \r\n        self.mu_leafs = []\r\n        for tree in range(leaf_test.shape[1]):                \r\n            leafs = np.unique(leaf_test[:, tree])\r\n            self.mu_leafs.append({})\r\n            for i in leafs:\r\n                if self.local_linear:\r\n                    if sample_weight is not None:\r\n                        lr = WeightWrapper(Pipeline([('bias', PolynomialFeatures(degree=1, include_bias=True)),\r\n                                        ('lasso',  SelectiveLasso(np.arange(1, X.shape[1]+1), ElasticNet(alpha=self.alpha)))]))\r\n                        lr.fit(X_test[leaf_test[:, tree]==i], y_test[leaf_test[:, tree]==i], sample_weight=sample_weight_test[leaf_test[:, tree]==i])\r\n                    else:\r\n                        lr = ElasticNet(alpha=self.alpha).fit(X_test[leaf_test[:, tree]==i], y_test[leaf_test[:, tree]==i])\r\n                    self.mu_leafs[tree][i] = lr\r\n                else:\r\n                    if sample_weight is not None:\r\n                        self.mu_leafs[tree][i] = np.average(y_test[leaf_test[:, tree]==i], weights=sample_weight_test[leaf_test[:, tree]==i])\r\n                    else:\r\n                        self.mu_leafs[tree][i] = np.mean(y_test[leaf_test[:, tree]==i])\r\n        return self\r\n\r\n    def predict(self, X):\r\n        \"\"\"\r\n        X : features\r\n        \"\"\"\r\n        leaf_pred = self.forest.apply(X)\r\n        if self.local_linear:\r\n            y_pred = [np.array([self.mu_leafs[tree][leaf].predict(X[[sample]])[0] if leaf in  self.mu_leafs[tree] else np.nan\r\n                            for sample, leaf in enumerate(leaf_pred[:, tree])])\r\n                    for tree in range(len(self.mu_leafs))]\r\n        else:\r\n            y_pred = [np.array([self.mu_leafs[tree][leaf] if leaf in  self.mu_leafs[tree] else np.nan\r\n                            for sample, leaf in enumerate(leaf_pred[:, tree])])\r\n                    for tree in range(len(self.mu_leafs))]\r\n        return np.nanmean(y_pred, axis=0)\r\n    \r\n    def predict_interval(self, X, lower=2.5, upper=97.5, little_bags=False):\r\n        \"\"\"\r\n        X : features\r\n        \"\"\"\r\n        leaf_pred = self.forest.apply(X)\r\n        if self.local_linear:\r\n            y_pred = [np.array([self.mu_leafs[tree][leaf].predict(X[[sample]])[0] if leaf in  self.mu_leafs[tree] else np.nan\r\n                            for sample, leaf in enumerate(leaf_pred[:, tree])])\r\n                    for tree in range(len(self.mu_leafs))]\r\n        else:\r\n            y_pred = [np.array([self.mu_leafs[tree][leaf] if leaf in  self.mu_leafs[tree] else np.nan\r\n                            for sample, leaf in enumerate(leaf_pred[:, tree])])\r\n                    for tree in range(len(self.mu_leafs))]\r\n        if little_bags:\r\n            subsets = [np.random.choice(leaf_pred.shape[1], int(np.ceil(np.sqrt(leaf_pred.shape[1]))))\r\n                        for _ in range(leaf_pred.shape[1])]\r\n            y_pred = [np.nanmean(np.array(y_pred)[s], axis=0) for s in subsets]\r\n        return np.nanpercentile(y_pred, lower, axis=0), np.nanpercentile(y_pred, upper, axis=0)\r\n\r\n    def __getattr__(self, name):\r\n        if name == 'get_params':\r\n            raise AttributeError(\"not sklearn\")\r\n        return getattr(self.forest, name)\r\n\r\n    def __deepcopy__(self, memo):\r\n        new_forest = HonestForest(copy.deepcopy(self.forest, memo), local_linear=self.local_linear, alpha=self.alpha)\r\n        if self.mu_leafs is not None:\r\n                new_forest.mu_leafs = copy.deepcopy(self.mu_leafs, memo)\r\n        return new_forest\r\n    "
  },
  {
    "path": "prototypes/dml_iv/xgb_utilities.py",
    "content": "from sklearn.model_selection import train_test_split\r\nimport copy\r\n\r\nclass XGBWrapper:\r\n\r\n    def __init__(self, XGBoost, early_stopping_rounds, eval_metric, val_frac=0.1, binary=False):\r\n        self.XGBoost = XGBoost\r\n        self.early_stopping_rounds = early_stopping_rounds\r\n        self.eval_metric = eval_metric\r\n        self.binary = binary\r\n        self.val_frac = val_frac\r\n        return\r\n\r\n    def fit(self, X, y, sample_weight=None):\r\n        if self.binary:\r\n            X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=self.val_frac,\r\n                                                              random_state=123, stratify=y, shuffle=True)\r\n        else:\r\n            X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=self.val_frac,\r\n                                                              random_state=123, shuffle=True)\r\n        self.XGBoost.fit(X_train, y_train, sample_weight=sample_weight, \r\n                         eval_set=[[X_val,y_val]], eval_metric=self.eval_metric,\r\n                         early_stopping_rounds=self.early_stopping_rounds, verbose=False)\r\n        return self\r\n\r\n    def predict_proba(self, X):\r\n        return self.XGBoost.predict_proba(X)\r\n\r\n    def predict(self, X):\r\n        return self.XGBoost.predict(X)\r\n\r\n    def __getattr__(self, name):\r\n        if name == 'get_params':\r\n            raise AttributeError(\"not sklearn\")\r\n        return getattr(self.XGBoost, name)\r\n\r\n    def __deepcopy__(self, memo):\r\n        return XGBWrapper(copy.deepcopy(self.XGBoost, memo), \r\n                          self.early_stopping_rounds, self.eval_metric,\r\n                          val_frac=self.val_frac, binary=self.binary)"
  },
  {
    "path": "prototypes/dynamic_dml/README.md",
    "content": "# Introduction\r\n\r\nCode for recreating figures and numbers from paper: \"Double/Debiased Machine Learning for Dynamic Treatment Effects\"\r\n\r\n# Generating paper figures\r\n\r\nTo generate the paper figures run\r\n\r\n```\r\n./all_coverage.sh\r\n```\r\n\r\nThis will produce a set of `.png` files that contain distributions of point estimates, distribution of standard error estimates,\r\ncoverage probabilities of confidence intervals (for both the estimated parameters and for a set of target counterfactual\r\npolicies).\r\n\r\nThe results for constant effects will be in the newly created folder:\r\n\r\n`results/long_range_constant`\r\n\r\nand the results for heterogeneous effects in the folder:\r\n\r\n`results/long_range_hetero`\r\n\r\nThe code assumes Python 3 and requires the standard packages: statsmodels, numpy, scipy, scikit-learn, matplotlib. All can be pip installed.\r\n\r\nTo create the figure that contains the benchmark performance run the jupyter notebook: `high_dim_state_any_m_panel.ipynb`.\r\n\r\nThe jupyter notebook `high_dim_state_any_panel_hetero.ipynb` compares performance with benchmarks when there is effect heterogeneity.\r\n\r\n\r\n# Files\r\n\r\n## Estimator Classes\r\n\r\n* `panel_dynamic_dml.py` : Contains the estimator `DynamicPanelDML` that estimates dynamic treatment effects without heterogeneity.\r\n* `hetero_panel_dynamic_dml.py`: Contains the estimator `HeteroDynamicPanelDML` that estimates heterogeneous dynamic treatment effects.\r\n\r\n\r\n## Expository Notebooks\r\n\r\n* `high_dim_state_any_m_panel.ipynb`: examples of runnign the estimators with constant effects\r\n* `high_dim_state_any_m_panel_hetero.ipynb`: examples of running the estiamtors with heterogeneous effects\r\n\r\n\r\n## Data Generating Processes\r\n\r\n* `dynamic_panel_dgp.py`: Contains several data generating processes for dynamic treatment effect estimation\r\n\r\n\r\n## Coverage Experiments\r\n\r\n* `coverage_panel.py`: Runs coverage experiments for contant dynamic effects\r\n* `coverage_panel_hetero.py`: Runs coverage experiments for heterogeneous dynamic effects\r\n* `all_coverage.sh`: Shell script that runs all coverage experiments\r\n* `postprocess_panel.ipynb`: Post-processing notebook that reads the coverage results for constant effects so as to produce more plots later on\r\n* `postprocess_panel_hetero.ipynb`: Post-processing notebook that reads the coverage results for heterogeneous effects so as to produce more plots later on\r\n"
  },
  {
    "path": "prototypes/dynamic_dml/all_coverage.sh",
    "content": "python coverage_panel.py\npython coverage_panel_hetero.py\n"
  },
  {
    "path": "prototypes/dynamic_dml/coverage_panel.py",
    "content": "import os\r\nimport numpy as np\r\nimport joblib\r\nfrom joblib import Parallel, delayed\r\nimport matplotlib.pyplot as plt\r\nfrom sklearn.linear_model import Lasso, MultiTaskLasso, LassoCV, MultiTaskLassoCV, LinearRegression\r\nimport warnings\r\nfrom dynamic_panel_dgp import DynamicPanelDGP, LongRangeDynamicPanelDGP\r\nfrom panel_dynamic_dml import DynamicPanelDML\r\nimport scipy\r\n\r\n\r\ndef exp(exp_id, dgp, n_units, gamma, s_t, sigma_t):\r\n    np.random.seed(exp_id)\r\n    if exp_id % 100 == 0:\r\n        print(exp_id)\r\n\r\n    warnings.simplefilter('ignore')\r\n\r\n    Y, T, X, groups = dgp.observational_data(\r\n        n_units, gamma, s_t, sigma_t, random_seed=exp_id)\r\n\r\n    # alpha_regs = [5e-3, 1e-2, 5e-2, 1e-1]\r\n\r\n    # def lasso_model(): return LassoCV(cv=3, alphas=alpha_regs, max_iter=200)\r\n\r\n    # def mlasso_model(): return MultiTaskLassoCV(\r\n    #     cv=3, alphas=alpha_regs, max_iter=200)\r\n\r\n    def lasso_model(): return Lasso(alpha=0.05)\r\n\r\n    def mlasso_model(): return MultiTaskLasso(alpha=0.05)\r\n\r\n    est = DynamicPanelDML(model_t=mlasso_model(),\r\n                          model_y=lasso_model(),\r\n                          n_cfit_splits=5).fit(Y, T, X, groups)\r\n\r\n    param_hat = est.param\r\n    conf_ints = est.param_interval(alpha=.05)\r\n    stderrs = est.param_stderr\r\n\r\n    return param_hat, conf_ints[:, 0], conf_ints[:, 1], stderrs\r\n\r\n\r\ndef add_vlines(n_periods, n_treatments, hetero_inds=[]):\r\n    locs, labels = plt.xticks([], [])\r\n    locs += [- .5 + (len(hetero_inds) + 1) / 2]\r\n    labels += [\"$\\\\tau_{}$\".format(0)]\r\n    for q in np.arange(1, n_treatments):\r\n        plt.axvline(x=q * (len(hetero_inds) + 1) - .5,\r\n                    linestyle='--', color='red', alpha=.2)\r\n        locs += [q * (len(hetero_inds) + 1) - .5 + (len(hetero_inds) + 1) / 2]\r\n        labels += [\"$\\\\tau_{}$\".format(q)]\r\n    locs += [- .5 + (len(hetero_inds) + 1) * n_treatments / 2]\r\n    labels += [\"\\n\\n$\\\\theta_{}$\".format(0)]\r\n    for t in np.arange(1, n_periods):\r\n        plt.axvline(x=t * (len(hetero_inds) + 1) *\r\n                    n_treatments - .5, linestyle='-', alpha=.6)\r\n        locs += [t * (len(hetero_inds) + 1) * n_treatments - .5 +\r\n                 (len(hetero_inds) + 1) * n_treatments / 2]\r\n        labels += [\"\\n\\n$\\\\theta_{}$\".format(t)]\r\n        locs += [t * (len(hetero_inds) + 1) *\r\n                 n_treatments - .5 + (len(hetero_inds) + 1) / 2]\r\n        labels += [\"$\\\\tau_{}$\".format(0)]\r\n        for q in np.arange(1, n_treatments):\r\n            plt.axvline(x=t * (len(hetero_inds) + 1) * n_treatments + q * (len(hetero_inds) + 1) - .5,\r\n                        linestyle='--', color='red', alpha=.2)\r\n            locs += [t * (len(hetero_inds) + 1) * n_treatments + q *\r\n                     (len(hetero_inds) + 1) - .5 + (len(hetero_inds) + 1) / 2]\r\n            labels += [\"$\\\\tau_{}$\".format(q)]\r\n    plt.xticks(locs, labels)\r\n    plt.tight_layout()\r\n\r\n\r\ndef run_mc(n_exps, n_units, n_x, s_x, n_periods, n_treatments, s_t, sigma_x, sigma_t, sigma_y, gamma):\r\n    print(\"Running {} MC experiments with: n_units={}, n_dimensions_x={}, non_zero_coefs={}\".format(n_exps,\r\n                                                                                                    n_units, n_x, s_x))\r\n    random_seed = 123\r\n    np.random.seed(random_seed)\r\n    conf_str = 1\r\n\r\n    if not os.path.exists('results'):\r\n        os.makedirs('results')\r\n    if not os.path.exists(os.path.join('results', 'long_range_constant')):\r\n        os.makedirs(os.path.join('results', 'long_range_constant'))\r\n    dirname = os.path.join('results', 'long_range_constant')\r\n\r\n    param_str = (\"n_exps_{}_n_units_{}_n_periods_{}_n_t_{}_n_x_{}_s_x_{}_s_t_{}\"\r\n                 \"_sigma_x_{}_sigma_t_{}_sigma_y_{}_conf_str_{}_gamma_{}\").format(\r\n        n_exps, n_units, n_periods, n_treatments, n_x, s_x, s_t, sigma_x, sigma_t, sigma_y, conf_str, gamma)\r\n\r\n    dgp = LongRangeDynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(s_x, sigma_x, sigma_y,\r\n                                                                                 conf_str, random_seed=random_seed)\r\n    joblib.dump(dgp, os.path.join(dirname, \"dgp_obj_{}.jbl\".format(param_str)))\r\n\r\n    results = Parallel(n_jobs=-1, max_nbytes=None)(delayed(exp)(i, dgp, n_units, gamma, s_t, sigma_t)\r\n                                                   for i in range(n_exps))\r\n    joblib.dump(results, os.path.join(\r\n        dirname, \"results_{}.jbl\".format(param_str)))\r\n\r\n    results = np.array(results)\r\n    points = results[:, 0]\r\n    lowers = results[:, 1]\r\n    uppers = results[:, 2]\r\n    stderrs = results[:, 3]\r\n\r\n    true_effect_params = dgp.true_effect.flatten()\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.violinplot(points, positions=inds, showmeans=True)\r\n    plt.scatter(inds, true_effect_params, marker='o',\r\n                color='#D43F3A', s=10, zorder=3, alpha=.5)\r\n    add_vlines(n_periods, n_treatments)\r\n    plt.savefig(os.path.join(dirname, \"dists_{}.png\".format(param_str)))\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.violinplot(stderrs, positions=inds, showmeans=True)\r\n    true_std = np.std(points, axis=0)\r\n    true_std_error = (true_std * (np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((1 - .05 / 2), n_exps - 1)) - 1),\r\n                      true_std * (1 - np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((.05 / 2), n_exps - 1))))\r\n    plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\r\n                 color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\r\n    add_vlines(n_periods, n_treatments)\r\n    plt.savefig(os.path.join(dirname, \"stderrs_{}.png\".format(param_str)))\r\n\r\n    coverage = np.mean((true_effect_params.reshape(1, -1) <= uppers) & (\r\n        true_effect_params.reshape(1, -1) >= lowers), axis=0)\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.scatter(inds, coverage)\r\n    add_vlines(n_periods, n_treatments)\r\n    plt.savefig(os.path.join(dirname, \"coverage_{}.png\".format(param_str)))\r\n\r\n    for kappa in range(n_periods):\r\n        for t in range(n_treatments):\r\n            param_ind = kappa * n_treatments + t\r\n            coverage = np.mean((true_effect_params[param_ind] <= uppers[:, param_ind]) & (\r\n                true_effect_params[param_ind] >= lowers[:, param_ind]))\r\n            print(\"Effect Lag={}, TX={}: Mean={:.3f}, Std={:.3f}, Mean-Stderr={:.3f}, Coverage={:.3f}, (Truth={:.3f})\".format(kappa, t,\r\n                                                                                                                              np.mean(\r\n                                                                                                                                  points[:, param_ind]),\r\n                                                                                                                              np.std(\r\n                                                                                                                                  points[:, param_ind]),\r\n                                                                                                                              np.mean(\r\n                                                                                                                                  stderrs[:, param_ind]),\r\n                                                                                                                              coverage,\r\n                                                                                                                              true_effect_params[param_ind]))\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    run_mc(n_exps=1000, n_units=500, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=1000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=500, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=1000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=.1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=.1, gamma=.2)\r\n"
  },
  {
    "path": "prototypes/dynamic_dml/coverage_panel_hetero.py",
    "content": "import os\r\nimport numpy as np\r\nimport joblib\r\nfrom joblib import Parallel, delayed\r\nimport matplotlib.pyplot as plt\r\nfrom sklearn.linear_model import Lasso, LassoCV, MultiTaskLasso, MultiTaskLassoCV, LinearRegression\r\nimport warnings\r\nfrom dynamic_panel_dgp import DynamicPanelDGP, LongRangeDynamicPanelDGP\r\nfrom hetero_panel_dynamic_dml import HeteroDynamicPanelDML\r\nimport scipy\r\n\r\n\r\ndef exp(exp_id, dgp, n_units, gamma, s_t, sigma_t, hetero_inds, test_policies):\r\n    np.random.seed(exp_id)\r\n    if exp_id % 100 == 0:\r\n        print(exp_id)\r\n\r\n    warnings.simplefilter('ignore')\r\n\r\n    Y, T, X, groups = dgp.observational_data(\r\n        n_units, gamma, s_t, sigma_t, random_seed=exp_id)\r\n\r\n    # alpha_regs = [5e-3, 1e-2, 5e-2]\r\n\r\n    # def lasso_model(): return LassoCV(cv=3, alphas=alpha_regs)\r\n\r\n    # def mlasso_model(): return MultiTaskLassoCV(cv=3, alphas=alpha_regs)\r\n\r\n    def lasso_model(): return Lasso(alpha=0.05)\r\n\r\n    def mlasso_model(): return MultiTaskLasso(alpha=0.05)\r\n\r\n    est = HeteroDynamicPanelDML(model_t=mlasso_model(),\r\n                                model_y=lasso_model(),\r\n                                n_cfit_splits=5).fit(Y, T, X, groups, hetero_inds=hetero_inds)\r\n\r\n    param_hat = est.param\r\n    conf_ints = est.param_interval(alpha=.05)\r\n    stderrs = est.param_stderr\r\n\r\n    policy_effect_hat = np.zeros(test_policies.shape[0])\r\n    policy_effect_lower = np.zeros(test_policies.shape[0])\r\n    policy_effect_upper = np.zeros(test_policies.shape[0])\r\n    policy_effect_stderr = np.zeros(test_policies.shape[0])\r\n    for q in range(test_policies.shape[0]):\r\n        policy_point, policy_ints, policy_std = est.policy_effect(\r\n            test_policies[q], X[:, hetero_inds], groups)\r\n        policy_effect_hat[q] = policy_point\r\n        policy_effect_lower[q] = policy_ints[0]\r\n        policy_effect_upper[q] = policy_ints[1]\r\n        policy_effect_stderr[q] = policy_std\r\n\r\n    return (param_hat, conf_ints[:, 0], conf_ints[:, 1], stderrs), (policy_effect_hat, policy_effect_lower, policy_effect_upper, policy_effect_stderr)\r\n\r\n\r\ndef add_vlines(n_periods, n_treatments, hetero_inds):\r\n    locs, labels = plt.xticks([], [])\r\n    locs += [- .5 + (len(hetero_inds) + 1) / 2]\r\n    labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(0)]\r\n    locs += [qx for qx in np.arange(len(hetero_inds) + 1)]\r\n    labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\r\n    for q in np.arange(1, n_treatments):\r\n        plt.axvline(x=q * (len(hetero_inds) + 1) - .5,\r\n                    linestyle='--', color='red', alpha=.2)\r\n        locs += [q * (len(hetero_inds) + 1) - .5 + (len(hetero_inds) + 1) / 2]\r\n        labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(q)]\r\n        locs += [(q * (len(hetero_inds) + 1) + qx)\r\n                 for qx in np.arange(len(hetero_inds) + 1)]\r\n        labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\r\n    locs += [- .5 + (len(hetero_inds) + 1) * n_treatments / 2]\r\n    labels += [\"\\n\\n\\n\\n$\\\\theta_{{{}}}$\".format(0)]\r\n    for t in np.arange(1, n_periods):\r\n        plt.axvline(x=t * (len(hetero_inds) + 1) *\r\n                    n_treatments - .5, linestyle='-', alpha=.6)\r\n        locs += [t * (len(hetero_inds) + 1) * n_treatments - .5 +\r\n                 (len(hetero_inds) + 1) * n_treatments / 2]\r\n        labels += [\"\\n\\n\\n\\n$\\\\theta_{{{}}}$\".format(t)]\r\n        locs += [t * (len(hetero_inds) + 1) *\r\n                 n_treatments - .5 + (len(hetero_inds) + 1) / 2]\r\n        labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(0)]\r\n        locs += [t * (len(hetero_inds) + 1) * n_treatments +\r\n                 qx for qx in np.arange(len(hetero_inds) + 1)]\r\n        labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\r\n        for q in np.arange(1, n_treatments):\r\n            plt.axvline(x=t * (len(hetero_inds) + 1) * n_treatments + q * (len(hetero_inds) + 1) - .5,\r\n                        linestyle='--', color='red', alpha=.2)\r\n            locs += [t * (len(hetero_inds) + 1) * n_treatments + q *\r\n                     (len(hetero_inds) + 1) - .5 + (len(hetero_inds) + 1) / 2]\r\n            labels += [\"\\n\\n$\\\\tau_{{{}}}$\".format(q)]\r\n            locs += [t * (len(hetero_inds) + 1) * n_treatments + (q * (len(hetero_inds) + 1) + qx)\r\n                     for qx in np.arange(len(hetero_inds) + 1)]\r\n            labels += [\"$1$\"] + [\"$x_{{{}}}$\".format(qx) for qx in hetero_inds]\r\n    plt.xticks(locs, labels)\r\n    plt.tight_layout()\r\n\r\n\r\ndef run_mc(n_exps, n_units, n_x, s_x, n_periods, n_treatments, s_t, sigma_x, sigma_t, sigma_y, gamma):\r\n    print(\"Running {} MC experiments with: n_units={}, n_dimensions_x={}, non_zero_coefs={}\".format(n_exps,\r\n                                                                                                    n_units, n_x, s_x))\r\n    random_seed = 123\r\n    np.random.seed(random_seed)\r\n    conf_str = 1\r\n    # subset of features that are exogenous and create heterogeneity\r\n    true_hetero_inds = np.arange(n_x - 2 * s_x, n_x - s_x)\r\n    # strength of heterogeneity wrt the exogenous variables (assumed to be the last s_x features)\r\n    hetero_strength = 1\r\n    # subset of features wrt we estimate heterogeneity\r\n    hetero_inds = np.arange(n_x - 2 * s_x, n_x)\r\n    n_test_policies = 10\r\n    test_policies = np.random.binomial(1, .5, size=(\r\n        n_test_policies, n_periods, n_treatments))\r\n\r\n    if not os.path.exists('results'):\r\n        os.makedirs('results')\r\n    if not os.path.exists(os.path.join('results', 'long_range_hetero')):\r\n        os.makedirs(os.path.join('results', 'long_range_hetero'))\r\n    dirname = os.path.join('results', 'long_range_hetero')\r\n\r\n    param_str = (\"n_exps_{}_n_units_{}_n_periods_{}_n_t_{}_n_x_{}_s_x_{}_s_t_{}\"\r\n                 \"_sigma_x_{}_sigma_t_{}_sigma_y_{}_conf_str_{}_gamma_{}_het_str_{}\").format(\r\n        n_exps, n_units, n_periods, n_treatments, n_x, s_x, s_t, sigma_x, sigma_t,\r\n        sigma_y, conf_str, gamma, hetero_strength)\r\n\r\n    joblib.dump(hetero_inds, os.path.join(\r\n        dirname, \"hetero_hetero_inds_{}.jbl\".format(param_str)))\r\n    joblib.dump(test_policies, os.path.join(\r\n        dirname, \"hetero_test_policies_{}.jbl\".format(param_str)))\r\n\r\n    dgp = LongRangeDynamicPanelDGP(n_periods, n_treatments, n_x).create_instance(s_x, sigma_x, sigma_y,\r\n                                                                                 conf_str, hetero_strength, true_hetero_inds,\r\n                                                                                 random_seed=random_seed)\r\n    joblib.dump(dgp, os.path.join(\r\n        dirname, \"hetero_dgp_obj_{}.jbl\".format(param_str)))\r\n\r\n    results = Parallel(n_jobs=-1, max_nbytes=None)(delayed(exp)(i, dgp, n_units, gamma, s_t, sigma_t, hetero_inds, test_policies)\r\n                                                   for i in range(n_exps))\r\n    joblib.dump(results, os.path.join(\r\n        dirname, \"hetero_results_{}.jbl\".format(param_str)))\r\n\r\n    param_results = np.array([r[0] for r in results])\r\n    points = param_results[:, 0]\r\n    lowers = param_results[:, 1]\r\n    uppers = param_results[:, 2]\r\n    stderrs = param_results[:, 3]\r\n    policy_results = np.array([r[1] for r in results])\r\n    policy_effect_hat = policy_results[:, 0]\r\n    policy_effect_lowers = policy_results[:, 1]\r\n    policy_effect_uppers = policy_results[:, 2]\r\n    policy_effect_stderrs = policy_results[:, 3]\r\n\r\n    true_effect_inds = []\r\n    for t in range(n_treatments):\r\n        true_effect_inds += [t * (1 + n_x)] + \\\r\n            list(t * (1 + n_x) + 1 + hetero_inds)\r\n    true_effect_params = dgp.true_hetero_effect[:, true_effect_inds].flatten()\r\n\r\n    true_policy_effect = np.array([dgp.static_policy_effect(\r\n        tau, mc_samples=1000) for tau in test_policies])\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.violinplot(points, positions=inds, showmeans=True)\r\n    plt.scatter(inds, true_effect_params, marker='o',\r\n                color='#D43F3A', s=10, zorder=3, alpha=.5)\r\n    add_vlines(n_periods, n_treatments, hetero_inds)\r\n    plt.savefig(os.path.join(dirname, \"hetero_dists_{}.png\".format(param_str)))\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.violinplot(stderrs, positions=inds, showmeans=True)\r\n    true_std = np.std(points, axis=0)\r\n    true_std_error = (true_std * (np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((1 - .05 / 2), n_exps - 1)) - 1),\r\n                      true_std * (1 - np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((.05 / 2), n_exps - 1))))\r\n    plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\r\n                 color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\r\n    add_vlines(n_periods, n_treatments, hetero_inds)\r\n    plt.savefig(os.path.join(\r\n        dirname, \"hetero_stderrs_{}.png\".format(param_str)))\r\n\r\n    coverage = np.mean((true_effect_params.reshape(1, -1) <= uppers) & (\r\n        true_effect_params.reshape(1, -1) >= lowers), axis=0)\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(points.shape[1])\r\n    plt.scatter(inds, coverage)\r\n    add_vlines(n_periods, n_treatments, hetero_inds)\r\n    plt.savefig(os.path.join(\r\n        dirname, \"hetero_coverage_{}.png\".format(param_str)))\r\n\r\n    for kappa in range(n_periods):\r\n        for t in range(n_treatments * (len(hetero_inds) + 1)):\r\n            param_ind = kappa * (len(hetero_inds) + 1) * n_treatments + t\r\n            coverage = np.mean((true_effect_params[param_ind] <= uppers[:, param_ind]) & (\r\n                true_effect_params[param_ind] >= lowers[:, param_ind]))\r\n            print(\"Effect Lag={}, TX={}: Mean={:.3f}, Std={:.3f}, Mean-Stderr={:.3f}, Coverage={:.3f}, (Truth={:.3f})\".format(kappa, t,\r\n                                                                                                                              np.mean(\r\n                                                                                                                                  points[:, param_ind]),\r\n                                                                                                                              np.std(\r\n                                                                                                                                  points[:, param_ind]),\r\n                                                                                                                              np.mean(\r\n                                                                                                                                  stderrs[:, param_ind]),\r\n                                                                                                                              coverage,\r\n                                                                                                                              true_effect_params[param_ind]))\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(policy_effect_hat.shape[1])\r\n    plt.violinplot(policy_effect_hat, positions=inds, showmeans=True)\r\n    plt.scatter(inds, true_policy_effect, marker='o',\r\n                color='#D43F3A', s=10, zorder=3, alpha=.5)\r\n    plt.savefig(os.path.join(\r\n        dirname, \"hetero_policy_dists_{}.png\".format(param_str)))\r\n\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(policy_effect_hat.shape[1])\r\n    plt.violinplot(policy_effect_stderrs, positions=inds, showmeans=True)\r\n    true_std = np.std(policy_effect_hat, axis=0)\r\n    true_std_error = (true_std * (np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((1 - .05 / 2), n_exps - 1)) - 1),\r\n                      true_std * (1 - np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((.05 / 2), n_exps - 1))))\r\n    plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\r\n                 color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\r\n    plt.savefig(os.path.join(\r\n        dirname, \"hetero_policy_stderrs_{}.png\".format(param_str)))\r\n\r\n    policy_coverage = np.mean((true_policy_effect.reshape(1, -1) <= policy_effect_uppers) & (\r\n        true_policy_effect.reshape(1, -1) >= policy_effect_lowers), axis=0)\r\n    plt.figure(figsize=(15, 5))\r\n    inds = np.arange(policy_coverage.shape[0])\r\n    plt.scatter(inds, policy_coverage)\r\n    plt.savefig(os.path.join(\r\n        dirname, \"hetero_policy_coverage_{}.png\".format(param_str)))\r\n\r\n    for q in range(test_policies.shape[0]):\r\n        print(\"Policy effect for treatment seq: \\n {}\\n Mean={:.3f}, Std={:.3f}, Mean-Stderr={:.3f}, Coverage={:.3f}, (Truth={:.3f})\".format(test_policies[q],\r\n                                                                                                                                             np.mean(\r\n                                                                                                                                                 policy_effect_hat[:, q]),\r\n                                                                                                                                             np.std(\r\n                                                                                                                                                 policy_effect_hat[:, q]),\r\n                                                                                                                                             np.mean(\r\n                                                                                                                                                 policy_effect_stderrs[:, q]),\r\n                                                                                                                                             policy_coverage[\r\n                                                                                                                                                 q],\r\n                                                                                                                                             true_policy_effect[q]))\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    run_mc(n_exps=1000, n_units=500, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=1000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=1, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=500, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=1000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=.1, gamma=.2)\r\n    run_mc(n_exps=1000, n_units=2000, n_x=450, s_x=2, n_periods=3,\r\n           n_treatments=2, s_t=2, sigma_x=1, sigma_t=.5, sigma_y=.1, gamma=.2)\r\n"
  },
  {
    "path": "prototypes/dynamic_dml/dynamic_panel_dgp.py",
    "content": "import numpy as np\r\nfrom econml.utilities import cross_product\r\nfrom statsmodels.tools.tools import add_constant\r\n\r\n\r\nclass AbstracDynamicPanelDGP:\r\n\r\n    def __init__(self, n_periods, n_treatments, n_x):\r\n        self.n_periods = n_periods\r\n        self.n_treatments = n_treatments\r\n        self.n_x = n_x\r\n        return\r\n\r\n    def create_instance(self, *args, **kwargs):\r\n        pass\r\n\r\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\r\n        pass\r\n\r\n    def static_policy_data(self, n_units, tau, random_seed=123):\r\n        def policy_gen(Tpre, X, period):\r\n            return tau[period]\r\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\r\n\r\n    def adaptive_policy_data(self, n_units, policy_gen, random_seed=123):\r\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\r\n\r\n    def static_policy_effect(self, tau, mc_samples=1000):\r\n        Y_tau, _, _, _ = self.static_policy_data(mc_samples, tau)\r\n        Y_zero, _, _, _ = self.static_policy_data(\r\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\r\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\r\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\r\n                           self.n_periods == self.n_periods - 1])\r\n\r\n    def adaptive_policy_effect(self, policy_gen, mc_samples=1000):\r\n        Y_tau, _, _, _ = self.adaptive_policy_data(mc_samples, policy_gen)\r\n        Y_zero, _, _, _ = self.static_policy_data(\r\n            mc_samples, np.zeros((self.n_periods, self.n_treatments)))\r\n        return np.mean(Y_tau[np.arange(Y_tau.shape[0]) % self.n_periods == self.n_periods - 1]) - \\\r\n            np.mean(Y_zero[np.arange(Y_zero.shape[0]) %\r\n                           self.n_periods == self.n_periods - 1])\r\n\r\n\r\nclass DynamicPanelDGP(AbstracDynamicPanelDGP):\r\n\r\n    def __init__(self, n_periods, n_treatments, n_x):\r\n        super().__init__(n_periods, n_treatments, n_x)\r\n\r\n    def create_instance(self, s_x, sigma_x, sigma_y, conf_str, hetero_strength=0, hetero_inds=None,\r\n                        autoreg=.5, state_effect=.5, random_seed=123):\r\n        np.random.seed(random_seed)\r\n        self.s_x = s_x\r\n        self.conf_str = conf_str\r\n        self.sigma_x = sigma_x\r\n        self.sigma_y = sigma_y\r\n        self.hetero_inds = hetero_inds.astype(\r\n            int) if hetero_inds is not None else hetero_inds\r\n        self.endo_inds = np.setdiff1d(\r\n            np.arange(self.n_x), hetero_inds).astype(int)\r\n        # The first s_x state variables are confounders. The final s_x variables are exogenous and can create\r\n        # heterogeneity\r\n        self.Alpha = np.random.uniform(-1, 1,\r\n                                       size=(self.n_x, self.n_treatments))\r\n        self.Alpha /= np.linalg.norm(self.Alpha, axis=1, ord=1, keepdims=True)\r\n        self.Alpha *= state_effect\r\n        if self.hetero_inds is not None:\r\n            self.Alpha[self.hetero_inds] = 0\r\n\r\n        self.Beta = np.zeros((self.n_x, self.n_x))\r\n        for t in range(self.n_x):\r\n            self.Beta[t, :] = autoreg * np.roll(np.random.uniform(low=4.0**(-np.arange(\r\n                0, self.n_x)), high=4.0**(-np.arange(1, self.n_x + 1))), t)\r\n        if self.hetero_inds is not None:\r\n            self.Beta[np.ix_(self.endo_inds, self.hetero_inds)] = 0\r\n            self.Beta[np.ix_(self.hetero_inds, self.endo_inds)] = 0\r\n\r\n        self.epsilon = np.random.uniform(-1, 1, size=self.n_treatments)\r\n        self.zeta = np.zeros(self.n_x)\r\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\r\n\r\n        self.y_hetero_effect = np.zeros(self.n_x)\r\n        self.x_hetero_effect = np.zeros(self.n_x)\r\n        if self.hetero_inds is not None:\r\n            self.y_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n            self.x_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n\r\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\r\n        self.true_effect[0] = self.epsilon\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_effect[t, :] = (self.zeta.reshape(\r\n                1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        self.true_hetero_effect = np.zeros(\r\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\r\n        self.true_hetero_effect[0, :] = cross_product(add_constant(self.y_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                      self.epsilon.reshape(1, -1))\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_hetero_effect[t, :] = cross_product(add_constant(self.x_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                          self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        return self\r\n\r\n    def hetero_effect_fn(self, t, x):\r\n        if t == 0:\r\n            return (np.dot(self.y_hetero_effect, x.flatten()) + 1) * self.epsilon\r\n        else:\r\n            return (np.dot(self.x_hetero_effect, x.flatten()) + 1) *\\\r\n                (self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1)\r\n                    @ self.Alpha).flatten()\r\n\r\n    def _gen_data_with_policy(self, n_units, policy_gen, random_seed=123):\r\n        np.random.seed(random_seed)\r\n        Y = np.zeros(n_units * self.n_periods)\r\n        T = np.zeros((n_units * self.n_periods, self.n_treatments))\r\n        X = np.zeros((n_units * self.n_periods, self.n_x))\r\n        groups = np.zeros(n_units * self.n_periods)\r\n        for t in range(n_units * self.n_periods):\r\n            period = t % self.n_periods\r\n            if period == 0:\r\n                X[t] = np.random.normal(0, self.sigma_x, size=self.n_x)\r\n                T[t] = policy_gen(np.zeros(self.n_treatments), X[t], period)\r\n            else:\r\n                X[t] = (np.dot(self.x_hetero_effect, X[t - 1]) + 1) * np.dot(self.Alpha, T[t - 1]) + \\\r\n                    np.dot(self.Beta, X[t - 1]) + \\\r\n                    np.random.normal(0, self.sigma_x, size=self.n_x)\r\n                T[t] = policy_gen(T[t - 1], X[t], period)\r\n            Y[t] = (np.dot(self.y_hetero_effect, X[t]) + 1) * np.dot(self.epsilon, T[t]) + \\\r\n                np.dot(X[t], self.zeta) + \\\r\n                np.random.normal(0, self.sigma_y)\r\n            groups[t] = t // self.n_periods\r\n\r\n        return Y, T, X, groups\r\n\r\n    def observational_data(self, n_units, gamma, s_t, sigma_t, random_seed=123):\r\n        \"\"\" Generated observational data with some observational treatment policy parameters\r\n\r\n        Parameters\r\n        ----------\r\n        n_units : how many units to observe\r\n        gamma : what is the degree of auto-correlation of the treatments across periods\r\n        s_t : sparsity of treatment policy; how many states does it depend on\r\n        sigma_t : what is the std of the exploration/randomness in the treatment\r\n        \"\"\"\r\n        Delta = np.zeros((self.n_treatments, self.n_x))\r\n        Delta[:, :s_t] = self.conf_str / s_t\r\n\r\n        def policy_gen(Tpre, X, period):\r\n            return gamma * Tpre + (1 - gamma) * np.dot(Delta, X) + \\\r\n                np.random.normal(0, sigma_t, size=self.n_treatments)\r\n        return self._gen_data_with_policy(n_units, policy_gen, random_seed=random_seed)\r\n\r\n\r\nclass LongRangeDynamicPanelDGP(DynamicPanelDGP):\r\n\r\n    def __init__(self, n_periods, n_treatments, n_x):\r\n        super().__init__(n_periods, n_treatments, n_x)\r\n\r\n    def create_instance(self, s_x, sigma_x, sigma_y, conf_str, hetero_strength=0, hetero_inds=None,\r\n                        autoreg=.5, state_effect=.5, random_seed=123):\r\n        np.random.seed(random_seed)\r\n        self.s_x = s_x\r\n        self.conf_str = conf_str\r\n        self.sigma_x = sigma_x\r\n        self.sigma_y = sigma_y\r\n        self.hetero_inds = hetero_inds.astype(\r\n            int) if hetero_inds is not None else hetero_inds\r\n        self.endo_inds = np.setdiff1d(\r\n            np.arange(self.n_x), hetero_inds).astype(int)\r\n        # The first s_x state variables are confounders. The final s_x variables are exogenous and can create\r\n        # heterogeneity\r\n        self.Alpha = state_effect * np.ones((self.n_x, self.n_treatments))\r\n        if self.hetero_inds is not None:\r\n            self.Alpha[self.hetero_inds] = 0\r\n\r\n        self.Beta = autoreg * np.eye(self.n_x)\r\n\r\n        self.epsilon = np.random.uniform(-1, 1, size=self.n_treatments)\r\n        self.zeta = np.zeros(self.n_x)\r\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\r\n\r\n        self.y_hetero_effect = np.zeros(self.n_x)\r\n        self.x_hetero_effect = np.zeros(self.n_x)\r\n        if self.hetero_inds is not None:\r\n            self.y_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n            self.x_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n\r\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\r\n        self.true_effect[0] = self.epsilon\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_effect[t, :] = (self.zeta.reshape(\r\n                1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        self.true_hetero_effect = np.zeros(\r\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\r\n        self.true_hetero_effect[0, :] = cross_product(add_constant(self.y_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                      self.epsilon.reshape(1, -1))\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_hetero_effect[t, :] = cross_product(add_constant(self.x_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                          self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        return self\r\n\r\n\r\nclass EndogenousDynamicPanelDGP(DynamicPanelDGP):\r\n\r\n    def __init__(self, n_periods, n_treatments, n_x):\r\n        super().__init__(n_periods, n_treatments, n_x)\r\n\r\n    def create_instance(self, s_x, sigma_x, sigma_y, conf_str, hetero_strength=0, hetero_inds=None,\r\n                        autoreg=.5, state_effect=.5, random_seed=123):\r\n        np.random.seed(random_seed)\r\n        self.s_x = s_x\r\n        self.conf_str = conf_str\r\n        self.sigma_x = sigma_x\r\n        self.sigma_y = sigma_y\r\n        self.hetero_inds = hetero_inds.astype(\r\n            int) if hetero_inds is not None else hetero_inds\r\n\r\n        # The first s_x state variables are confounders. The final s_x variables are exogenous and can create\r\n        # heterogeneity\r\n        self.Alpha = state_effect * \\\r\n            np.ones((self.n_x, self.n_treatments))/self.n_treatments\r\n\r\n        self.Beta = autoreg * np.eye(self.n_x)\r\n\r\n        self.epsilon = np.random.uniform(-1, 1, size=self.n_treatments)\r\n        self.zeta = np.zeros(self.n_x)\r\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\r\n\r\n        self.y_hetero_effect = np.zeros(self.n_x)\r\n        self.x_hetero_effect = np.zeros(self.n_x)\r\n        if self.hetero_inds is not None:\r\n            self.y_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n            self.x_hetero_effect[self.hetero_inds] = np.random.uniform(.5 * hetero_strength, 1.5 * hetero_strength) / \\\r\n                len(self.hetero_inds)\r\n\r\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\r\n        self.true_effect[0] = self.epsilon\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_effect[t, :] = (self.zeta.reshape(\r\n                1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        self.true_hetero_effect = np.zeros(\r\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\r\n        self.true_hetero_effect[0, :] = cross_product(add_constant(self.y_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                      self.epsilon.reshape(1, -1))\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_hetero_effect[t, :] = cross_product(add_constant(self.x_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                          self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        return self\r\n\r\n\r\nclass PastTreatmentHeteroDynamicPanelDGP(DynamicPanelDGP):\r\n\r\n    def __init__(self, n_periods, n_treatments, n_x):\r\n        super().__init__(n_periods, n_treatments, n_x)\r\n\r\n    def create_instance(self, s_x, sigma_x, sigma_y, conf_str, hetero_strength=0, hetero_inds=None,\r\n                        autoreg=.5, state_effect=.5, random_seed=123):\r\n        np.random.seed(random_seed)\r\n        self.s_x = s_x\r\n        self.conf_str = conf_str\r\n        self.sigma_x = sigma_x\r\n        self.sigma_y = sigma_y\r\n        self.hetero_inds = np.arange(self.n_x - self.n_treatments, self.n_x)\r\n\r\n        self.Alpha = state_effect * \\\r\n            np.ones((self.n_x, self.n_treatments))/self.n_treatments\r\n        self.Alpha[-self.n_treatments:, -\r\n                   self.n_treatments:] = state_effect * np.eye(self.n_treatments)\r\n\r\n        self.Beta = autoreg * np.eye(self.n_x)\r\n\r\n        self.epsilon = np.random.uniform(-1, 1, size=self.n_treatments)\r\n        self.zeta = np.zeros(self.n_x)\r\n        self.zeta[:self.s_x] = self.conf_str / self.s_x\r\n\r\n        self.y_hetero_effect = np.zeros(self.n_x)\r\n        self.x_hetero_effect = np.zeros(self.n_x)\r\n        if self.hetero_inds is not None:\r\n            self.y_hetero_effect[self.hetero_inds] = hetero_strength / \\\r\n                len(self.hetero_inds)\r\n            self.x_hetero_effect[self.hetero_inds] = hetero_strength / \\\r\n                len(self.hetero_inds)\r\n\r\n        self.true_effect = np.zeros((self.n_periods, self.n_treatments))\r\n        self.true_effect[0] = self.epsilon\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_effect[t, :] = (self.zeta.reshape(\r\n                1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        self.true_hetero_effect = np.zeros(\r\n            (self.n_periods, (self.n_x + 1) * self.n_treatments))\r\n        self.true_hetero_effect[0, :] = cross_product(add_constant(self.y_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                      self.epsilon.reshape(1, -1))\r\n        for t in np.arange(1, self.n_periods):\r\n            self.true_hetero_effect[t, :] = cross_product(add_constant(self.x_hetero_effect.reshape(1, -1), has_constant='add'),\r\n                                                          self.zeta.reshape(1, -1) @ np.linalg.matrix_power(self.Beta, t - 1) @ self.Alpha)\r\n\r\n        return self\r\n"
  },
  {
    "path": "prototypes/dynamic_dml/hetero_panel_dynamic_dml.py",
    "content": "import numpy as np\nfrom sklearn.base import clone\nfrom sklearn.linear_model import LinearRegression, LassoCV\nfrom sklearn.model_selection import GroupKFold\nimport scipy\nfrom econml.utilities import cross_product\nfrom statsmodels.tools.tools import add_constant\n\n\nclass HeteroDynamicPanelDML:\n\n    def __init__(self, model_t=LassoCV(cv=3),\n                 model_y=LassoCV(cv=3),\n                 model_final=LinearRegression(fit_intercept=False),\n                 n_cfit_splits=3):\n        model_t_copy = clone(model_t, safe=False)\n        model_y_copy = clone(model_y, safe=False)\n        model_final_copy = clone(model_final, safe=False)\n        self._model_t_gen = lambda: clone(model_t_copy, safe=False)\n        self._model_y_gen = lambda: clone(model_y_copy, safe=False)\n        self._model_final_gen = lambda: clone(model_final_copy, safe=False)\n        self._n_cfit_splits = n_cfit_splits\n        return\n\n    def fit_nuisances(self, Y, T, X, groups, n_periods):\n        ''' Fits all the nuisance models and calculates all residuals for each period and information set\n        '''\n        resT = {}\n        resY = {}\n        for kappa in np.arange(n_periods):\n            resT[kappa] = {}\n            resY[kappa] = np.zeros(self._n_train_units)\n            for tau in np.arange(kappa, n_periods):\n                resT[kappa][tau] = np.zeros(\n                    (self._n_train_units,) + T.shape[1:])\n\n        for train, test in GroupKFold(self._n_cfit_splits).split(X, Y, groups):\n            inds_train = train[np.arange(train.shape[0]) % n_periods == 0]\n            inds_test = test[np.arange(test.shape[0]) % n_periods == 0]\n            for kappa in np.arange(n_periods):\n                for tau in np.arange(kappa, n_periods):\n                    resT[kappa][tau][inds_test // n_periods] = T[inds_test + tau]\\\n                        - self._model_t_gen().fit(X[inds_train + kappa],\n                                                  T[inds_train + tau]).predict(X[inds_test + kappa])\n                    resY[kappa][inds_test // n_periods] = Y[inds_test + n_periods - 1]\\\n                        - self._model_y_gen().fit(X[inds_train + kappa],\n                                                  Y[inds_train + n_periods - 1]).predict(X[inds_test + kappa])\n        return resT, resY\n\n    def _fit_cov_matrix(self, resT, resY, models):\n        ''' Calculates the covariance (n_periods*n_treatments) x (n_periods*n_treatments) matrix for all the parameters\n        '''\n        n_periods = len(models)\n        n_params = 1 if len(resT[0][0].shape) == 1 else resT[0][0].shape[1]\n        M = np.zeros((n_periods * n_params,\n                      n_periods * n_params))\n        Sigma = np.zeros((n_periods * n_params,\n                          n_periods * n_params))\n        for kappa in np.arange(n_periods):\n            # Calculating the (kappa, kappa) block entry (of size n_treatments x n_treatments) of matrix Sigma\n            period = n_periods - 1 - kappa\n            res_epsilon = (resY[period]\n                           - np.sum([models[tau].predict(resT[period][n_periods - 1 - tau])\n                                     for tau in np.arange(kappa + 1)], axis=0)).reshape(-1, 1, 1)\n            cur_resT = resT[period][period]\n            cov_cur_resT = np.matmul(cur_resT.reshape(-1, n_params, 1),\n                                     cur_resT.reshape(-1, 1, n_params))\n            sigma_kappa = np.mean((res_epsilon**2) * cov_cur_resT, axis=0)\n            Sigma[kappa * n_params:(kappa + 1) * n_params,\n                  kappa * n_params:(kappa + 1) * n_params] = sigma_kappa\n\n            for tau in np.arange(kappa + 1):\n                # Calculating the (kappa, tau) block entry (of size n_treatments x n_treatments) of matrix M\n                m_kappa_tau = np.mean(\n                    np.matmul(resT[period][n_periods - 1 - tau].reshape(-1, n_params, 1),\n                              cur_resT.reshape(-1, 1, n_params)),\n                    axis=0)\n                M[kappa * n_params:(kappa + 1) * n_params,\n                  tau * n_params:(tau + 1) * n_params] = m_kappa_tau\n        self._cov = np.linalg.inv(M) @ Sigma @ np.linalg.inv(M).T\n        self._M = M\n        self._Sigma = Sigma\n        return self\n\n    def fit_final(self, Y, T, X, groups, resT, resY, n_periods, hetero_inds):\n        ''' Fits the final lag effect models\n        '''\n        models = {}\n        panelX = X.reshape((X.shape[0] // n_periods, n_periods, -1))\n        resTX = {}\n        for kappa in np.arange(n_periods):\n            resTX[kappa] = {}\n            for tau in np.arange(kappa, n_periods):\n                resTX[kappa][tau] = cross_product(add_constant(panelX[:, tau, hetero_inds], has_constant='add'),\n                                                  resT[kappa][tau].reshape(-1, self._n_treatments))\n        for kappa in np.arange(n_periods):\n            period = n_periods - 1 - kappa\n            Y_cal = resY[period].copy()\n            if kappa > 0:\n                Y_cal -= np.sum([models[tau].predict(resTX[period][n_periods - 1 - tau])\n                                 for tau in np.arange(kappa)],\n                                axis=0)\n\n            models[kappa] = self._model_final_gen().fit(\n                resTX[period][period], Y_cal)\n\n        self._fit_cov_matrix(resTX, resY, models)\n        self.final_models = models\n        return self\n\n    def fit(self, Y, T, X, groups, hetero_inds=np.empty(shape=(0,))):\n        self.hetero_inds = hetero_inds.astype(int)\n        u_periods = np.unique(np.bincount(groups.astype(int)))\n        self._n_train_units = len(np.unique(groups))\n        self._n_treatments = 1 if len(T.shape[1:]) == 0 else T.shape[1]\n        if len(u_periods) > 1:\n            raise AttributeError(\n                \"Imbalanced panel. Method currently expects only panels with equal number of periods. Pad your data\")\n        self._n_train_periods = u_periods[0]\n        resT, resY = self.fit_nuisances(Y, T, X, groups, self._n_train_periods)\n        self.fit_final(Y, T, X, groups, resT, resY,\n                       self._n_train_periods, self.hetero_inds)\n        return self\n\n    @property\n    def param(self):\n        return np.array([model.coef_ for key, model in self.final_models.items()]).flatten()\n\n    @property\n    def param_cov(self):\n        return self._cov\n\n    @property\n    def param_stderr(self):\n        return np.sqrt(np.diag(self._cov) / self._n_train_units)\n\n    def param_interval(self, alpha=.05):\n        return np.array([(scipy.stats.norm.ppf(alpha / 2, loc=param, scale=std),\n                          scipy.stats.norm.ppf(1 - alpha / 2, loc=param, scale=std)) if std > 0 else (param, param)\n                         for param, std in zip(self.param, self.param_stderr)])\n\n    def _policy_effect_var(self, tau):\n        return (tau.reshape(1, -1) @ self.param_cov @ tau.reshape(-1, 1))[0, 0]\n\n    def _policy_effect_stderr(self, tau):\n        return np.sqrt(self._policy_effect_var(tau) / self._n_train_units)\n\n    def policy_effect(self, tau, subX, groups, alpha=0.05):\n        u_periods = np.unique(np.bincount(groups.astype(int)))\n        if len(u_periods) > 1 or u_periods[0] != self._n_train_periods:\n            raise AttributeError(\"Invalid period lengths.\")\n        n_periods = u_periods[0]\n        panelX = subX.reshape((subX.shape[0] // n_periods, n_periods, -1))\n        resTX = np.zeros((n_periods, (subX.shape[1] + 1) * self._n_treatments))\n        for kappa in np.arange(n_periods):\n            resTX[kappa] = np.mean(cross_product(add_constant(panelX[:, n_periods - 1 - kappa, :], has_constant='add'),\n                                                 np.tile(tau[n_periods - 1 - kappa].reshape(1,\n                                                                                            self._n_treatments), (panelX.shape[0], 1))), axis=0)\n\n        point = np.dot(self.param, resTX.flatten())\n        std = self._policy_effect_stderr(resTX.flatten())\n        if std == 0:\n            return point, (point, point), 0\n        return point, (scipy.stats.norm.ppf(alpha / 2, loc=point, scale=std),\n                       scipy.stats.norm.ppf(1 - alpha / 2, loc=point, scale=std)), std\n\n    def adaptive_policy_effect(self, X, groups, policy_gen, alpha=.05):\n        \"\"\" Assumes that the policy is adaptive only on exogenous states that\n        are not affected by the treatmnet.\n        \"\"\"\n        u_periods = np.unique(np.bincount(groups.astype(int)))\n        if len(u_periods) > 1 or u_periods[0] != self._n_train_periods:\n            raise AttributeError(\"Invalid period lengths.\")\n        n_periods = u_periods[0]\n\n        panelX = X.reshape((X.shape[0] // n_periods, n_periods, -1))\n        tau = np.zeros(\n            (panelX.shape[0], n_periods, self._n_treatments))\n        for period in range(n_periods):\n            if period == 0:\n                tau_pre = np.zeros((panelX.shape[0], self._n_treatments))\n            else:\n                tau_pre = tau[:, period - 1, :]\n            tau[:, period, :] = np.array([policy_gen(t_pre, x, period)\n                                          for t_pre, x in zip(tau_pre, panelX[:, period, :])])\n\n        resTX = np.zeros(\n            (n_periods, (len(self.hetero_inds) + 1) * self._n_treatments))\n        for kappa in np.arange(n_periods):\n            resTX[kappa] = np.mean(cross_product(add_constant(panelX[:, n_periods - 1 - kappa, self.hetero_inds], has_constant='add'),\n                                                 tau[:, n_periods - 1 - kappa, :]), axis=0)\n\n        point = np.dot(self.param, resTX.flatten())\n        std = self._policy_effect_stderr(resTX.flatten())\n        if std == 0:\n            return point, (point, point), 0\n        return point, (scipy.stats.norm.ppf(alpha / 2, loc=point, scale=std),\n                       scipy.stats.norm.ppf(1 - alpha / 2, loc=point, scale=std)), std\n"
  },
  {
    "path": "prototypes/dynamic_dml/high_dim_state_any_m_panel.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Single Experiment\\n\",\n    \"\\n\",\n    \"In this notebook we run a single experiment and display the estimates of the dynamic effects based on our dynamic DML algorithm. We also display some performance of alternative benchmark approaches.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Data Generation from a Markovian Treatment Model\\n\",\n    \"\\n\",\n    \"We consider the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"    X_t =& (\\\\pi'X_{t-1} + 1) \\\\cdot A\\\\, T_{t-1} + B X_{t-1} + \\\\epsilon_t\\\\\\\\\\n\",\n    \"    T_t =& \\\\gamma\\\\, T_{t-1} + (1-\\\\gamma) \\\\cdot D X_t + \\\\zeta_t\\\\\\\\\\n\",\n    \"    Y_t =& (\\\\sigma' X_{t} + 1) \\\\cdot e\\\\, T_{t} + f' X_t + \\\\eta_t\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"with $X_0, T_0 = 0$ and $\\\\epsilon_t, \\\\zeta_t, \\\\eta_t$ normal $N(0, \\\\sigma^2)$ r.v.'s. Moreover, $X_t \\\\in R^{n_x}$, $B[:, 0:s_x] \\\\neq 0$ and $B[:, s_x:-1] = 0$, $\\\\gamma\\\\in [0, 1]$, $D[:, 0:s_x] \\\\neq 0$, $D[:, s_x:-1]=0$, $f[0:s_x]\\\\neq 0$, $f[s_x:-1]=0$. We draw a single time series of samples of length $n\\\\_samples$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 66,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"The autoreload extension is already loaded. To reload it, use:\\n\",\n      \"  %reload_ext autoreload\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"C:\\\\ProgramData\\\\Anaconda3\\\\lib\\\\site-packages\\\\numba\\\\errors.py:105: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9\\n\",\n      \"  warnings.warn(msg)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"from dynamic_panel_dgp import DynamicPanelDGP, LongRangeDynamicPanelDGP\\n\",\n    \"n_units = 400\\n\",\n    \"n_periods = 3\\n\",\n    \"n_treatments = 1\\n\",\n    \"n_x = 100\\n\",\n    \"s_x = 10\\n\",\n    \"s_t = 10\\n\",\n    \"sigma_x = .5\\n\",\n    \"sigma_t = .5\\n\",\n    \"sigma_y = .5\\n\",\n    \"gamma = .0\\n\",\n    \"autoreg = .5\\n\",\n    \"state_effect = .5\\n\",\n    \"conf_str = 6\\n\",\n    \"hetero_strength = 0\\n\",\n    \"hetero_inds = None\\n\",\n    \"\\n\",\n    \"#dgp_class = LongRangeDynamicPanelDGP\\n\",\n    \"dgp_class = DynamicPanelDGP\\n\",\n    \"dgp = dgp_class(n_periods, n_treatments, n_x).create_instance(s_x, sigma_x, sigma_y,\\n\",\n    \"                                                              conf_str, hetero_strength, hetero_inds,\\n\",\n    \"                                                              autoreg, state_effect,\\n\",\n    \"                                                              random_seed=39)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"Y, T, X, groups = dgp.observational_data(n_units, gamma, s_t, sigma_t, random_seed=1234)\\n\",\n    \"true_effect = dgp.true_effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"plt.figure(figsize=(20, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(Y, label=\\\"Outcome\\\")\\n\",\n    \"plt.plot(T, label=\\\"Treatment\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"for it in range(3):\\n\",\n    \"    plt.plot(X[:, it], label=\\\"X[{}]\\\".format(it))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 1. 1 True Parameters for Dynamic Effects for 3 periods\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"\\n\",\n    \"true_effect = true_effect.flatten()\\n\",\n    \"plt.plot(true_effect, 'o')\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Dynamic DML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.linear_model import LinearRegression, LassoCV, Lasso, MultiTaskLasso, MultiTaskLassoCV\\n\",\n    \"from sklearn.model_selection import GroupKFold\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"\\n\",\n    \"alpha_regs = [1e-4, 1e-3, 1e-2, 5e-2, .1, 1]\\n\",\n    \"lasso_model = lambda : LassoCV(cv=3, alphas=alpha_regs, max_iter=500)\\n\",\n    \"mlasso_model = lambda : MultiTaskLassoCV(cv=3, alphas=alpha_regs, max_iter=500)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {\n    \"collapsed\": true,\n    \"scrolled\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from panel_dynamic_dml import DynamicPanelDML\\n\",\n    \"\\n\",\n    \"est = DynamicPanelDML(model_t=mlasso_model(),\\n\",\n    \"                      model_y=lasso_model(),\\n\",\n    \"                      n_cfit_splits=3).fit(Y, T, X, groups)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1 Parameter Recovery and Confidence Intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Effect Lag=0, T=0: 0.777 (0.687, 0.868074), (Truth=0.866165)\\n\",\n      \"Effect Lag=1, T=0: 1.147 (0.919, 1.375321), (Truth=1.200000)\\n\",\n      \"Effect Lag=2, T=0: 0.896 (0.536, 1.257250), (Truth=0.641424)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"param_hat = est.param\\n\",\n    \"conf_ints = est.param_interval(alpha=.05)\\n\",\n    \"for kappa in range(n_periods):\\n\",\n    \"    for t in range(n_treatments):\\n\",\n    \"        param_ind = kappa*n_treatments + t\\n\",\n    \"        print(\\\"Effect Lag={}, T={}: {:.3f} ({:.3f}, {:.6f}), (Truth={:.6f})\\\".format(kappa, t,\\n\",\n    \"                                                                                    param_hat[param_ind],\\n\",\n    \"                                                                                    *conf_ints[param_ind],\\n\",\n    \"                                                                                    true_effect[param_ind]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)-.04, param_hat, yerr=(conf_ints[:, 1] - param_hat,\\n\",\n    \"                                                    param_hat - conf_ints[:, 0]), fmt='o', label='dyn-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments), true_effect.flatten(), fmt='o', alpha=.6, label='true')\\n\",\n    \"for t in np.arange(1, n_periods):\\n\",\n    \"    plt.axvline(x=t * n_treatments - .5, linestyle='--', alpha=.4)\\n\",\n    \"plt.xticks([t * n_treatments - .5 + n_treatments/2 for t in range(n_periods)],\\n\",\n    \"           [\\\"$\\\\\\\\theta_{}$\\\".format(t) for t in range(n_periods)])\\n\",\n    \"plt.gca().set_xlim([-.5, n_periods*n_treatments - .5])\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2 Benchmark Method Comparison\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"panelX = X.reshape(-1, n_periods, n_x)\\n\",\n    \"panelT = T.reshape(-1, n_periods, n_treatments)\\n\",\n    \"panelY = Y.reshape(-1, n_periods)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.1 Regressing Y on all T\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"est_lr = LinearRegression().fit(panelT[:, ::-1, :].reshape(-1, n_periods*n_treatments), panelY[:, -1]).coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.2 Regressing Y on all T and either final or initial States\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"est_lr_x0 = lasso_model().fit(np.hstack([panelT[:, ::-1, :].reshape(-1, n_periods*n_treatments),\\n\",\n    \"                                  panelX[:, 0, :]]), panelY[:, -1]).coef_[:n_periods*n_treatments]\\n\",\n    \"est_lr_xfinal = lasso_model().fit(np.hstack([panelT[:, ::-1, :].reshape(-1, n_periods*n_treatments),\\n\",\n    \"                                  panelX[:, -1, :]]), panelY[:, -1]).coef_[:n_periods*n_treatments]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.3 Performing DML with Y and all T and controlling for either final or initial States\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.dml import LinearDMLCateEstimator\\n\",\n    \"dml_model = lambda : LinearDMLCateEstimator(model_y=lasso_model(), model_t=mlasso_model(),\\n\",\n    \"                                      n_splits=3, linear_first_stages=False)\\n\",\n    \"est_dml_x0 = dml_model().fit(panelY[:, -1], T=panelT[:, ::-1, :].reshape(-1, n_periods*n_treatments),\\n\",\n    \"                      X=None, W=panelX[:, 0, :]).intercept_\\n\",\n    \"est_dml_xfinal = dml_model().fit(panelY[:, -1], T=panelT[:, ::-1, :].reshape(-1, n_periods*n_treatments),\\n\",\n    \"                      X=None, W=panelX[:, -1, :]).intercept_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.4 Running a Direct version of Dynamic DML\\n\",\n    \"\\n\",\n    \"Where a direct lasso is performed at each stage, regressing the calibrated outcome on the current period treatment and state and reading the coefficient in front of the treatment as the causal effect.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"Y_cal = panelY[:, -1].copy()\\n\",\n    \"direct_theta = np.zeros((n_periods, n_treatments))\\n\",\n    \"for t in np.arange(n_periods):\\n\",\n    \"    direct_theta[t, :] = lasso_model().fit(np.hstack([panelT[:, n_periods - 1 - t, :],\\n\",\n    \"                                                      panelX[:, n_periods - 1 - t, :]]), Y_cal).coef_[:n_treatments]\\n\",\n    \"    Y_cal -= np.dot(panelT[:, n_periods - 1 - t, :], direct_theta[t, :])\\n\",\n    \"est_direct = direct_theta.flatten()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.5 Plot all estimates\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nHsaYPGttVmvbcoUOXZdnRsN35qSGK3PVZVJVqTTu/7V5F/1SkzT2llTlbzyq0pM+JfaMkef6gTRz\\nAAAA7dTZjZwkTZs2TXv27NG6des6/VihgoYOXVdKpjTxyYbvzBXvl5IHNzRzKZnt2k2/1CQaOGjt\\nzmOSpOtH9HU4CYBQQm0BAmvFihVORwg6NHTo2lIy293AAQAAAOGCWS4BAAAAIEjR0AEAAABAkKKh\\nAwAAAIAgRUMHICwM7hmrwT1jnY4BIMRQW4CuZeXKldq5c+c5lz/zzDN64YUXLmKizsekKADCwtC+\\nCU5HABCCqC0IGwV5zWce98zokhPXrVy5UjfffLNGjBhx1rK6ujoHEnU+rtABCAt1/nrV+eudjgEg\\nxFBbEBYK8hqeDew7KSVe0vCaM69hvAP27duntLQ03X///Ro5cqQmTZokn88nr9err3/968rIyNC0\\nadNUVFTU4vavvfaaMjIyNHr0aN11113asGGDVq1apblz58rj8WjPnj3Kzs7WT37yE02YMEEvvvhi\\ns+0XLFigESNGKCMjQ7fffnuHzsVJNHQAwkJufqFy8wudjgEgxFBbEBa8SyR3ouROkkxEw6s7sWG8\\ng7744gvNnj1bO3bsUHJyst566y398z//s/793/9dW7duVXp6un7+85+ftd2OHTs0b948rVu3Tp9+\\n+qlefPFFXX311ZoyZYqef/55eb1eXXbZZZKk4uJi/eUvf9G//Mu/NNvH/PnztWXLFm3dulWLFi3q\\n8Lk4hYYOAAAAwLkV75eiv3J7cXRCw3gHpaamyuPxSJIyMzO1Z88eFRcXa8KECZKk733ve/roo4/O\\n2m7dunW67bbb1KtXL0lSjx49znmM6dOntziekZGhmTNn6o9//KMiI4P3m2itNnTGmN8bY44bY7af\\nY3m2MabEGONt/PP0GctuMMbkG2N2G2MeD2RwAAAAABdB8mCpuqz5WHVZw3gHRUdHN713uVwqLi5u\\ncb2DBw/K4/HI4/Fo0aJFstbKGNOmY8TFxbU4/s4772j27NnKy8tTZmZm0H7Hri1X6P4g6YZW1llv\\nrfU0/nlWkowxLkkvS7pR0ghJdxhjzv52IgAAAICuyzNDqiqVqkokW9/wWlXaMB5gSUlJ6t69u9av\\nXy9J+u///m9NmDBBAwcOlNfrldfr1QMPPKDrrrtO//M//6OTJ09Kkk6dOiVJSkhIUFlZ2Tn3f1p9\\n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\\n9l75KmoV1z1avopaffz23g43dfHx8ZKk3NxcZWdn67bbbtPw4cM1c+ZMWWslSdnZ2dq0aZMef/xx\\n+Xw+eTwezZw586x9lZeX65577lF6eroyMjL01ltvnbXNvn37lJaWpoceekhjxozRwYMHm7avqKjQ\\nTTfdpNGjR2vUqFFaunTpWcew1urhhx/WiBEjdNNNN+n48eNNy4YMGaKf/OQnGjdunLKysrR582ZN\\nnjxZl112mRYtWtShv6fWtOWxBW9IypbUyxhTIOlnkqIkyVq7SNLTknpKWmiMkf7xeIK+klY0jkVK\\nWmKtfb8TzgEAWpU5uLvTEQCEIGoLwkH+xqPqFhOp6NiG1uH0a/7Go+qXmhSQY2zZskU7duxQ//79\\ndc011+hvf/ubrr322qbl8+fP10svvSSv19vi9s8995ySkpK0bds2SVJRUZFuvfXWZtvs27dP+fn5\\nevXVV7Vw4cJm27///vvq37+/3nnnHUlSScnZzeqKFSuUn5+vbdu26dixYxoxYoTuvffepuUDBw7U\\nxo0b9cgjj+juu+/W3/72N1VVVWnkyJF64IEHOvYXdB6tNnTW2jtaWX6fpPtaGP9S0ugLjwYAgdM9\\nrpvTERAkymrKtPSzpbp9+O2K7xbvdBx0cdQWhIPSkz7FdW/+zMVuMS6VnvQF7Bhjx45VSkrDZPke\\nj0f79u1r1tC1Zu3atXrzzTebPnfv3vIvWwYPHqyvf/3rZ42np6fr0Ucf1WOPPaabb75Z3/jGN85a\\n56OPPtIdd9whl8ul/v3765vf/Gaz5VOmTGnaV3l5uRISEpSQkCC3263i4s6bDTfQs1wCQJd0tKRK\\nR0uqnI6BIJBzMEcfHvhQ6w6uczoKggC1BeEgsWeManz+ZmM1Pr8Se8YE7BjR0f9oGF0ul+rq6s67\\n/ssvvyyPxyOPx6PDhw/LWqvGOwPPKy4ursXxr33ta8rLy1N6erqeeOIJPfvss/r73//edIxVq1ZJ\\n0nmPcfocIiIimp1PREREq+fTETR0AMLC9kMl2n6o41/gRuh6duOzmv3hbC37fJkGJQ7Sss+XafaH\\ns/XsxmedjoYujNqCcDBsXD/V+OpUXVkna62qK+tU46vTsHH9LmqOqKgo1dbWSpJmz54tr9crr9er\\n/v37a9KkSXrppZea1i0qKjprm/M5fPiwYmNjdeedd+rRRx/V5s2bddVVVzUdY8qUKRo/frzefPNN\\n+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\\nN8YcN8ZsP8dyY4xZYIzZbYzZaowZc8ayG4wx+Y3LHg9kcKArKigoUE5Ojnw+nxITE+Xz+ZSTk0NT\\nBwAAglbl5uOKcEcqIiZSxhhFxEQqwh2pys3HL3ifixYtUv/+/ZWTk6Pu3bs3W3bkyBH99a9/1erV\\nq/X44y23EHPmzNGECRP06afEl30dAAAgAElEQVSfavPmzRo5cqTmz5+vyy67TF6vV88//7wk6eOP\\nP9a8efO0c+fOZtsvWbJEkydPltfr1aeffiqPx3PWMX77298qNjZWW7du1ZNPPqm8vLymZRUVFcrO\\nzlZeXp4SEhL01FNP6YMPPtCKFSv09NNPX/Dfy4Voyy2Xf5D0kqTXzrH8RklDG/9cJem3kq4yxrgk\\nvSzpW5IKJH1ijFllrd15jv0AXdaR3fnakfuhSgqPKal3X43Mvk6XXD7srPW8Xq/cbrfcbrckNb16\\nvV6lpKRc1MwAAACBUHeqSq6kbs3GjNululNVnXK8qVOnKiIiQiNGjNCxY8daXGfdunV67bWG9sTl\\ncikpKUlFRUVnrTd27NgWb+m88sorde+996q2tlZTp05tsaH76KOPNGfOHElSRkaGMjIympZ169ZN\\nN9xwgyQpPT1d0dHRioqKUnp6uvbt29fuc+6IVq/QWWs/knTqPKt8W9JrtsH/SUo2xlwiaayk3dba\\nL621NZLebFwXCCpHdudrw9LX5SsrVUKPXvKVlWrD0td1ZHf+WesWFxcrOjq62Vh0dLSKi4svVlyc\\nQ/aw3soe1tvpGABCDLUF4SCyh1u2yt9szFb5FdnD3SnHO/PfUtZaSdKTTz4pj8fTYuN1PnFxcS2O\\njx8/Xh999JEGDBigu+66S6+99ppWrFjRdIzTk58YY1rcPioqqmlZREREU+aIiAjV1dW1K2NHBeI7\\ndAMkHTzjc0Hj2LnGW2SMmWWM2WSM2VRYWBiAWEBg7Mj9UN1iY+WOi5cxRu64eHWLjdWO3A/PWjc5\\nOVnV1dXNxqqrq5WcnHyx4uIcIl0RinTxtWEAgUVtQTiIHdNH9VV1qvfVyVqrel+d6qvqFDumz0XL\\nMG/ePHm9Xnm9XknSddddp9/+9reSGiY8KS0tVUJCgsrKytq0v/3796tPnz66//779f3vf1+bN2/W\\ntGnTmo6RlZWl8ePH6/XXX5ckbd++XVu3bu2ck+ugQFSgltpWe57xFllrX7HWZllrs3r35jdd6DpK\\n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\\nBvUt2pn1+ORkVCYAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)-.04, param_hat, yerr=(conf_ints[:, 1] - param_hat,\\n\",\n    \"                                                    param_hat - conf_ints[:, 0]), fmt='o', label='dyn-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)-.02, est_lr, fmt='o', alpha=.6, label='no-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments), true_effect.flatten(), fmt='*', alpha=.6, label='true')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)+.02, est_lr_x0, fmt='o', alpha=.6, label='init-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)+.04, est_dml_x0, fmt='o', alpha=.6, label='init-ctrls-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)+.1, est_lr_xfinal, fmt='o', alpha=.6, label='fin-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)+.12, est_dml_xfinal, fmt='o', alpha=.6, label='fin-ctrls-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods*n_treatments)+.14, est_direct, fmt='o', alpha=.6, label='dyn-direct')\\n\",\n    \"for t in np.arange(1, n_periods):\\n\",\n    \"    plt.axvline(x=t * n_treatments - .5, linestyle='--', alpha=.4)\\n\",\n    \"plt.xticks([t * n_treatments - .5 + n_treatments/2 for t in range(n_periods)],\\n\",\n    \"           [\\\"$\\\\\\\\theta_{}$\\\".format(t) for t in range(n_periods)])\\n\",\n    \"plt.gca().set_xlim([-.5, n_periods*n_treatments - .5])\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAARkAAAEOCAYAAAC9w2M0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAE1dJREFUeJzt3X+sZGV9x/HPB5att/xY1iI/XESQ\\nyqrdyAaJUtMqTS2CjaW2aS21kFCVmGp/mTb2Ryp/GBOJ/acWW0IpoTTNNk2rEeOPEmnaTYtUt+kK\\n1wpkcRF3hWwRsgguXZb99o+ZXe9e7sycM+c8z3nOnPcrucneOWdmvnvnns/9Ps+Z84wjQgCQynFd\\nFwBgsREyAJIiZAAkRcgASIqQAZAUIQMgKUIGQFKEDICkCBkASREyAJJa13UBTa0/bimW1p3SdRnA\\n4Dz13L7HI+Ils/brfcgsrTtFbzz9nV2XAQzOF/f++beq7Nf7kEFeB7ZsOvrvpeW9HVaCviBkMNXK\\nUJm1jdDBWggZrGlauFS5D4GDIzi7hGMc2LJproBZ63EAiZDBCm0HQ1uBhX4jZCApbedB0AwbIYMs\\nIUBXM1yEzMDlPvAJmuEhZAasqwOeoBkWQgadIGiGg5AZqBIO8hJqQHqEDDpF0Cw+QmaASjuwS6sH\\n7SJkBqbUA7rUutAcIYNiEDSLiZABkBQhMyB96BT6UCPqIWRQHIJmsRAyA9G3A7dv9WIyQgZAUoQM\\nikU3sxgImQHo88Ha59oxwhq/mMuTm9evefvGBw5mrgSlI2RQ2aRgmbRPW4FzYMsmFibvMYZLC66t\\n4UaVgFnrPvPcby0Mm/qLkMFMTYOizbBB/xAymKrNcGj6WHQz/UTIYKIU3QcdzfAQMgusyV/+lGHQ\\n5LHpZvqHkMEL5Og2CJrhIGTQGYZOw5AtZGzfanuf7eUJ26+0fa/tnbZ32P6JXLXhB3If+PM+H91M\\nf+TsZG6TdPmU7XdJujAitkr6dUm35CgK3aOjWWzZQiYitkt6Ysr2pyMixt+eKCkm7YvZ5vlL3+XB\\nPs9z0830Q1FzMrbfYft+SZ/TqJvBgNDRLKaiQiYiPh0Rr5L085I+Mmk/29eN5212HDx8IF+BC6yU\\nA7xuHXQz5SsqZI4YD63Ot33ahO03R8TFEXHx+uOWMlcHoI5iQsb2j9r2+N8XSVov6bvdVoUu0M0s\\nlmxLPdjeJulSSafZ3iPpekknSFJE3CTpFyVdY/s5SQckvXPFRDASajJU+t75hyduO/mh+f+GPbl5\\nPWvTLIhsIRMRV83YfoOkGzKVs9By/GWfFi5r7dMkcKpgzZlyFTNcQn9UCZg27lPKZDSaIWQGru6B\\nPE9YrLxv3fvXqY+5mTIRMqisScCkeBz0AyGDStoOhjqPRzfTb4QMOkNHMwyEzIBV7RBShkHVx2YS\\nuL8IGXSu7RBjyFQWQgZT5RrSVHkeupl+ImTQK1WDhm6mHIQMJso9MctE8GIiZBZM1b/gpQ49GDYt\\nHkIGxWmro2HIVIZsF0iiX+Y50E86b//EbU/v3tCknBfgKu3+oJNBYyedt39qwFTdZyW6mcVByKCR\\nOsExz/7oP0IGc5s3MKreb1Y3wwRwPxAyeIEcp5LbCpoqGDJ1i5DBXNoY9rTxGHQz5SNkBqjpgdnm\\nvEqVx6Kb6TdCBp1rGlp0M2UjZFCEWUHDJQf9RciglpSnoJs8dpVuhiFTNwgZHKPkjqHk2jAZIYOi\\n8Ga9xUPIoLJcATDteaZ1MwyZykTIAEiKq7CRxGXnPPCC2+58ZHPl+5903v6JV25/7/zDyT/2Fu3h\\nlULr1gqYI7dP2tYWhkzlIWRQSdX5mCohUjVsmAReDIQMWlO3S2nS1TSdAEY+hAxaMW9gzLof3Uz/\\nETLorSZvzmNeJh9CBo01ncxN0c0wZCoHIbNglpb3dl3CXFKfdUJ3CBkUY1rQTOpmGDKVj5DBUZMO\\n2GnDlZI7EIZMZSBkUJTc3QzSI2QwaAyZ0ssWMrZvtb3P9vKE7e+yfe/4627bF+aqDWUpeQiG+nJe\\nIHmbpBsl3T5h+25Jb46IJ21fIelmSW/IVBt6YtKFk5Mummz6cbb7zz1T+7ZeoEMnvkjrnnlWp+98\\nUBsefmzuxxuibJ1MRGyX9MSU7XdHxJPjb++RdHaWwnBU3SubU3YcJXQz+889U49eskWHTlqSbB06\\naUmPXrJF+889s+vSeqXUOZl3S/pC10WgTG1fajBpXmbf1gsU644/5rZYd7z2bb2g1edfdMWFjO2f\\n0ihkPjRln+ts77C94+DhA/mKQ1ZtdTPznso+dOKLat2OtRW1aJXt10q6RdIVEfHdSftFxM0azdlo\\nw/ozIlN5aODqjXcf/fffPvnGJM/R9mJW6555djRUWuN2VFdMJ2P7HEmfknR1RDzYdT2LrMlE6DxW\\nBsyR71ffNsmkbibH1dmn73xQPvT8Mbf50PM6fSe/nnXkPIW9TdKXJW22vcf2u22/z/b7xrt8WNKP\\nSPoL2ztt78hVG9KZFiZVgyaHteZlNjz8mM66Z1nrnj4gRWjd0wd01j3LnF2qKdtwKSKumrH9PZLe\\nk6mchba0vLc3bzK7euPdM4dPl53zQOX1gds+lb3h4ccIlYaKGS5h8VTtVObtaFjQqh8IGQBJETIo\\nwqxuJseb8/oyxOwbQgZJdDmpO+mqbJZ+6AYhg2LME0zMy5SPkMFMkz7JMbcSrmdCfYQMitLWMIuF\\nrMpByAxU7nf9lmLWvAyTv+0jZBbUvJ9aUMIH2dftZpiXKVv3v1FADczL9A8hAyApQgZFamMCeN7J\\nX+Zl2kXIYCHUmZfhTXl5ETKYW9Uro9vGvEy/EDIAkmocMrYnrsWLbs06jV3nvTJdvOu3pEWtML/a\\ni1bZ/oeV30raKumG1ipC505+6LiFecds2+v+or55fvpPRcQvj79+SdKX2i4K/ZdqsfBp2pz85QxT\\ne+YJmY+u+v6P2ygEqIPJ3/6YOVyyfa6k90s6X6NPgNxp+7MR8S1JioiJnwoJAFU6mc9Iul/SJyX9\\njKQLJW23/UnbP5SyOJQv9WlsJn/7r0rIHB8Rfx0Rd0l6IiLeq1FX87DGH7CGcvX9DFMbFmUSu6+q\\nhMyXbH9g/O+QpIg4FBEfl/TjySpDp/p6RoYrsstT5Tfpg5I2jD9s7aXjz6H+NduflDTxo2SBLs4w\\n1cEZpjxmhkxEHI6Ij0p6k6TrJJ0p6XWSliVdkbY8YDLOMPVD5TfjRcT3Jd0x/gKOuvORzRzwmKif\\nA2/UwuQvukTIYKI2Jn9Ln5dBeoQMgKQIGbSiq7VlqmKVvO4QMqit7rxMyUMmVslLj5AZiHknf/v4\\npjzekFeW/v0GoZdK7maQFiGD1pQ+L4NuEDKYC++XQVWEDI5KPS/DkGmYCJkBmffzseuYNWSqGzQE\\nU/9lCxnbt9reZ3t5wvZX2f6y7f+z/Xu56gJm4b0yzeTsZG6TdPmU7U9I+i1Jf5qlGjQ277wM3cmw\\nZAuZiNiuUZBM2r4vIr4q6blcNeGF2piXqXKWqUrQ5Aoj3pCXFnMyA5NjXqaq3B0Ny3B2o5chM16d\\nb4ftHQcPH+i6nEGbNGSq+p6ZSUHDkGpx1P4EyRJExM0aL2K+Yf0Z0XE5g5HqkyUJlMXWy04GadVZ\\nxGoa3gEMKWMnY3ubpEslnWZ7j6TrJZ0gSRFxk+0zJe2QdIqkw7Z/R9JrIuKpXDUOxdLy3lZPyz69\\newMXJWKibCETEVfN2P6YpLMzlQMgE4ZLWFPdU9lNJ4CxuAiZgSrpVPa8CLB+IGSQHGEwbIQMaqs7\\nZJL6HzRcvzQ/QgYTtXUqG8NGyAxYk3mZrruZvndGQ0LIICvCYXgIGUw1z5Cp66U5u35+HIuQGbgU\\nQ6ZZmnYzdEP9QsggiVndBEExHIQMZpo2ZGqyyPg8QdMknPr4QXWLgJ86kqkyN1InNOh++omQQaV5\\nmZTvmbnzkc0zA4SA6a9eLlqFskxbzKrOMhArg+Sycx6YK1g4s1QeOhkUic5lcRAykNR8yDRtUpXu\\nYtgIGWRB0AwXIYPWdH2KmCArEyGDo1KfZSIEhomQQatmdTOpgmbW43bdZQ0ZP3nUxjozqIOQwTHa\\nWPu3q24GZSJkMJem3UybQUNolY2QwQvk6GakdsKhjcdg+JcWIYNONQmJqvdl0rdb/PQxt1kdQNWD\\n++ndG2qHDUOk/iBksKa2PvytThdRNTgImH7hKmw0svGBg3py8/rWHm9lgKy+eptw6SdCBslNWwpi\\nmjZChfmY7vEKYKKqQ6YqZ2c42IeLVx5AUoQMpupzN1Pl+XiPTHqEDLLq67CprbNtQ9TPVxxZtdnN\\nSHmCpq9htoh4JdCqkoIGZeCVRmdSBQ0BVhZeDVRSZ06izmRq24FQ5/GY9M2DkEHn6DwWW7ZX1/at\\ntvfZXp6w3bY/YXuX7XttX5SrNlSTqpuR2gkawqpMOV+V2yRdPmX7FZJeOf66TtJfZqgJCeUMGgKm\\nXNlemYjYLumJKbtcKen2GLlH0qm2z8pTHapK/X6Rkx86rlZg1N3/COZj8inpAslNkr694vs949se\\n7aYctGHeq7RXB8fKCyzpWvqlpFfLa9wWa+5oX2d7h+0dBw8fSFwWVqvbzbTRNRzpWLoIGN7t20xJ\\nIbNH0stWfH+2pO+stWNE3BwRF0fExeuPW8pSHBYHQ6W8SgqZOyRdMz7LdImk/RHBUKlQXXQz6Kds\\nczK2t0m6VNJptvdIul7SCZIUETdJ+rykt0naJen7kq7NVRvyaHsVvXlrQF7ZQiYirpqxPSS9P1M5\\naMHS8l4d2LKp1n1KCBrkVdJwCUiKLqYbhAwamefMS58Ods4sNUfIoBO5g6ZPwbZoCBk0Nu9few78\\nYSBk0KkcQUOYdYuQQSuazF2kDIEmj818TDsIGbSmadC0HTZ0MGUgZFCUtoKBgCkHIYNWtTHEaNrV\\nEDBlIWTQurbmMuqGTZtDLuZj2lPSejLAmuhM+o1OBknQCeAIQgZYhYBsFyGDZDhYIREySIygASGD\\n5PoUNH2qtS8IGQBJETLIog8dQh9q7CNCBtlwEA8TIYOsCJrhIWSQXYlBU2JNi4KQQSdKOqhLqmUR\\nETLoDAf3MBAy6FTXQdP18w8BIYPOdXWgEzB5EDIoAgf84iJkUIycQUOo5UPIoCg5Dn4CJi9CBsVZ\\nWt6bLAgImPwIGRSrzUBIGVyYjpBB0doIB8KlWywkjl5YGRQHtmyqtT+6RcigdwiQfmG4BCApQgZA\\nUo6IrmtoxPb/SvpWpqc7TdLjmZ6rbX2uXaL+rq1V/8sj4iWz7tj7kMnJ9o6IuLjrOubR59ol6u9a\\nk/oZLgFIipABkBQhU8/NXRfQQJ9rl6i/a3PXz5wMgKToZAAkRcisYvty2w/Y3mX7Dybsc6ntnba/\\nbvvfctc4zaz6bf/+uPadtpdtP2/7xV3UupYK9W+w/VnbXxv//K/tos5JKtS/0fanbd9r+yu2t3RR\\n51ps32p7n+3lCdtt+xPj/9u9ti+q9MARwdf4S9Lxkh6S9ApJ6yV9TdJrVu1zqqT/kXTO+PvTu667\\nTv2r9n+7pH/puu6aP/8/knTD+N8vkfSEpPVd116j/o9Lun7871dJuqvrulfU9iZJF0lanrD9bZK+\\nIMmSLpH0n1Uel07mWK+XtCsivhkRByX9vaQrV+3zq5I+FRGPSFJE7Mtc4zRV6l/pKknbslRWTZX6\\nQ9LJti3pJI1C5lDeMieqUv9rJN0lSRFxv6RzbZ+Rt8y1RcR2jX6ek1wp6fYYuUfSqbbPmvW4hMyx\\nNkn69orv94xvW+kCSRtt/6vt/7J9TbbqZqtSvyTJ9g9LulzSP2Woq6oq9d8o6dWSviPpPkm/HRGH\\n85Q3U5X6vybpFyTJ9uslvVzS2Vmqa67y79dKhMyxvMZtq0+/rZP0Okk/K+mtkv7E9gWpC6uoSv1H\\nvF3Sf0TEtL9cuVWp/62Sdkp6qaStkm60fUrqwiqqUv/HNPojtVPSb0r6b5XTic1S5/frKJZ6ONYe\\nSS9b8f3ZGv3FXL3P4xHxjKRnbG+XdKGkB/OUOFWV+o/4FZU1VJKq1X+tpI/FaJJgl+3dGs1tfCVP\\niVPNrD8intLo/6DxkG/3+KsP6vx+HUUnc6yvSnql7fNsr9foQLxj1T6fkfSTtteNhxxvkPSNzHVO\\nUqV+2d4g6c0a/V9KUqX+RyT9tCSN5zI2S/pm1ionm1m/7VPH2yTpPZK2j4OnD+6QdM34LNMlkvZH\\nxKOz7kQns0JEHLL9AUn/rNGZglsj4uu23zfeflNEfMP2FyXdK+mwpFsiYs1TfrlVqX+86zsk3Tnu\\nxopRsf6PSLrN9n0ate8fiogirm6uWP+rJd1u+3mNzlK+u7OCV7G9TdKlkk6zvUfS9ZJOkI7W/nmN\\nzjDtkvR9jTuymY87PjUFAEkwXAKQFCEDIClCBkBShAyApAgZAEkRMgCSImQAJEXIICvbx9v+s/Fa\\nMPfZfkXXNSEtQga5/aGkb0bEj0n6hKTf6LgeJMZlBcjG9omS3hERrxvftFujq9mxwAgZ5PQWSS8b\\nL3MgSS+W9KUO60EGDJeQ01ZJH46IrRGxVdKdknbaPtH239j+K9vv6rhGtIyQQU4bNbp6V7bXSbpM\\n0mc1WinuHyPivZJ+rrvykAIhg5we1GgBakn6XUmfi4jdGi1+dGRZx+e7KAzpEDLIaZuki2zvkvRa\\nSR8c375HP1jnlt/JBcN6Mujc+KzTjZKelfTvEfF3HZeEFhEyAJKiNQWQFCEDIClCBkBShAyApAgZ\\nAEkRMgCSImQAJEXIAEiKkAGQ1P8Dfrk9qBiwpdQAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 288x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import numpy as np\\n\",\n    \"from scipy.stats import multivariate_normal\\n\",\n    \"\\n\",\n    \"id1, id2 = 0, 1\\n\",\n    \"length = 2 * max(est.param_stderr[id1], est.param_stderr[id2])\\n\",\n    \"xlin = np.linspace(param_hat[id1]-length, param_hat[id1] + length, 500)\\n\",\n    \"ylin = np.linspace(param_hat[id2]-length, param_hat[id2] + length, 500)\\n\",\n    \"grX,grY = np.meshgrid(xlin, ylin)\\n\",\n    \"pos = np.array([grX.flatten(), grY.flatten()]).T\\n\",\n    \"\\n\",\n    \"rv = multivariate_normal(param_hat[[id1,id2]], est._cov[np.ix_([id1, id2], [id1, id2])]/n_units)\\n\",\n    \"\\n\",\n    \"fig = plt.figure(figsize=(4,4))\\n\",\n    \"ax0 = fig.add_subplot(111)\\n\",\n    \"ax0.contourf(grX, grY, rv.pdf(pos).reshape(500,500))\\n\",\n    \"ax0.scatter(true_effect[id1], true_effect[id2])\\n\",\n    \"plt.xlabel(\\\"$\\\\\\\\theta_{{{}}}$\\\".format(id1))\\n\",\n    \"plt.ylabel(\\\"$\\\\\\\\theta_{{{}}}$\\\".format(id2))\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3. Policy Effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Policy effect for treatment seq: \\n\",\n      \" [[0]\\n\",\n      \" [1]\\n\",\n      \" [0]]\\n\",\n      \" 1.147 (0.919, 1.375) (truth=1.200)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"tau = np.random.binomial(1, .5, size=(n_periods, n_treatments))\\n\",\n    \"true_policy_effect = dgp.static_policy_effect(tau, mc_samples=1000)\\n\",\n    \"policy_effect_hat = est.policy_effect(tau)\\n\",\n    \"policy_ints = est.policy_effect_interval(tau)\\n\",\n    \"print(\\\"Policy effect for treatment seq: \\\\n {}\\\\n {:.3f} ({:.3f}, {:.3f}) (truth={:.3f})\\\".format(tau,\\n\",\n    \"                                                                                               policy_effect_hat,\\n\",\n    \"                                                                                               *policy_ints,\\n\",\n    \"                                                                                               true_policy_effect))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nLVu2NOR3ve+vHwA8B02tISIemSk7FxqZJ6RWMpPyBMzs9xR/9OAf0Xuol8XzFr/Wtu/wPjrnd/L7\\n5/x+gZGpGcykXNHo9xRlyxXSZNUjTzTsW0gkSZJUHhvP2si+w/vYd3gfmfna/Y1nbSw6NEmSRmQB\\nQ5IkaQZ6+7K3c82aa+ic38mug7vonN/JNWuu8VtIJEml1ZCvUZWkVud2T0nN6O3L3m7BQpLUNNyB\\nIUmSJEmSSs8ChiRJkiRJKj1PIWlC23Zv49anb2Xn/p2sWLSCjWdtdPunJEmSpGnn2kNl4g6MJrNt\\n9zau776e3kO9LF+wnN5DvVzffT3bdm8rOjRJkiRJLcS1h8qmZXdg3H777Se0nXXWWZx99tkcOXKE\\nO++884T+VatW8aY3vYmBgQHuuusuAJ7f+t3q873M2WefzVlnncX+/fvZvHnzCcevXr2alStX0tvb\\ny3333XdC/9q1a1mxYgV79uzh/vvvP6F//fr1LF++nF27dvHwww+f0H/eeedx69O3MvvIbF7Z8wqv\\n8AoA/cf6+Yu7/4I/veRP6ezs5Nlnn2Xr1q0nHL9hwwYWLVrE008/zZNPPnlC/8UXX0xbWxvf+973\\n2L59+wn9l156KXPmzOHJJ5/k6aefPqH/8ssvB2Dr1q08++yzQ/rmzJnDpZdeCsCjjz7Kzp07h/S3\\ntbVx8cUXA/Dwww+za9euIf0LFy7kwgsvBOD+++9nz549Q/qXLFnC+eefD8C9997L3r17h/SffPLJ\\nnHfeeQB861vf4sCBA0P6ly9fzvr16wG46667GBgYGNK/YsUK1q5dC8Cdd97JkSNHhvSvXLmS1atX\\nA9P32htsvNfe8bmXjvPTEkmSGqsV1x8PLX6IxfMWM+vVWTz3wnPAj9ceGxdu5Kd/+qddf+D6o5Hc\\ngdFkdu7fycI5C4e0tUUbPzr6o4IiklQ2floiSZKmw4sHX2TR3EVD2lx7qEiRmUXHMGHr1q3LLVu2\\nNOR3le2rEf/owT+i91Avi+ctfq1t3+F9dM7v5PfP+f0CI1MziIhHMnNd0XE0Qq15Yroq1v/1nyqf\\nlvzHS95cik9LBmKAWa/O4uWXXwYqn5YsnLXQT0v8tOSEtuFmUp6Amf2eQpqKmZQrGpknoFy5wrWH\\npqIeecIdGE1m41kb2Xd4H/sO7yMzX7u/8ayNRYcmaYqW7H+atz33P3jdnb8K//ibzH7xsUk9j5+W\\n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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x1080 with 16 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"test_policies = np.random.binomial(1, .5, size=(16, n_periods, n_treatments))\\n\",\n    \"\\n\",\n    \"plt.figure(figsize=(15, 15))\\n\",\n    \"for t, tau in enumerate(test_policies):\\n\",\n    \"    true_policy_effect = np.dot(true_effect, tau[::-1].flatten())\\n\",\n    \"    policy_effect_hat = est.policy_effect(tau)\\n\",\n    \"    policy_ints = est.policy_effect_interval(tau)\\n\",\n    \"    plt.subplot(4, 4, t + 1)\\n\",\n    \"    plt.errorbar([t -.04], [policy_effect_hat], yerr=([policy_ints[1] - policy_effect_hat],\\n\",\n    \"                                                  [policy_effect_hat - policy_ints[0]]), fmt='o', label='dyn-dml')\\n\",\n    \"    plt.errorbar([t -.02], [np.dot(est_lr, tau[::-1].flatten())], fmt='o', alpha=.6, label='no-ctrls')\\n\",\n    \"    plt.errorbar([t], [true_policy_effect], fmt='o', alpha=.6, label='true')\\n\",\n    \"    plt.hlines([true_policy_effect], t - .06, t + .14, linestyles='--', alpha=.4)\\n\",\n    \"    plt.errorbar([t + .02], [np.dot(est_lr_x0, tau[::-1].flatten())], fmt='o', alpha=.6, label='init-ctrls')\\n\",\n    \"    plt.errorbar([t + .04], [np.dot(est_dml_x0, tau[::-1].flatten())], fmt='o', alpha=.6, label='init-ctrls-dml')\\n\",\n    \"    plt.errorbar([t + .1], [np.dot(est_lr_xfinal, tau[::-1].flatten())], fmt='o', alpha=.6, label='fin-ctrls')\\n\",\n    \"    plt.errorbar([t + .12], [np.dot(est_dml_xfinal, tau[::-1].flatten())], fmt='o', alpha=.6, label='fin-ctrls-dml')\\n\",\n    \"    plt.errorbar([t +.14], [np.dot(est_direct, tau[::-1].flatten())], fmt='o', alpha=.6, label='dyn-direct')\\n\",\n    \"    plt.title(\\\"{}\\\".format(tau.flatten()))\\n\",\n    \"#plt.legend()\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"2.707589092135044\"\n      ]\n     },\n     \"execution_count\": 18,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Optimal Contextual Binary Treatment Policy\\n\",\n    \"def adaptive_policy(t, x, period):\\n\",\n    \"    return 1.*(dgp.hetero_effect_fn(n_periods - 1 - period, x) > 0)\\n\",\n    \"dgp.adaptive_policy_effect(adaptive_policy)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(2.820942109125225, (2.547666040491572, 3.094218177758878))\"\n      ]\n     },\n     \"execution_count\": 19,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.adaptive_policy_effect(X, groups, adaptive_policy)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4. Estimation Diagnostics\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nB/XYVrZlHTpVAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"plt.plot(est.param_stderr)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nAAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.imshow(est._M)\\n\",\n    \"plt.colorbar()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nLiJ67f8AHNBHzHMxu6AAAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.imshow(est._Sigma)\\n\",\n    \"plt.colorbar()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\ngg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.imshow(est._cov)\\n\",\n    \"plt.colorbar()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.1\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dynamic_dml/high_dim_state_any_m_panel_hetero.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Single Experiment\\n\",\n    \"\\n\",\n    \"In this notebook we run a single experiment and display the estimates of the dynamic effects based on our dynamic DML algorithm. We also display some performance of alternative benchmark approaches.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Data Generation from a Markovian Treatment Model\\n\",\n    \"\\n\",\n    \"We consider the following DGP:\\n\",\n    \"\\n\",\n    \"\\\\begin{align}\\n\",\n    \"    X_t =& (\\\\pi'X_{t-1} + 1) \\\\cdot A\\\\, T_{t-1} + B X_{t-1} + \\\\epsilon_t\\\\\\\\\\n\",\n    \"    T_t =& \\\\gamma\\\\, T_{t-1} + (1-\\\\gamma) \\\\cdot D X_t + \\\\zeta_t\\\\\\\\\\n\",\n    \"    Y_t =& (\\\\sigma' X_{t} + 1) \\\\cdot e\\\\, T_{t} + f' X_t + \\\\eta_t\\n\",\n    \"\\\\end{align}\\n\",\n    \"\\n\",\n    \"with $X_0, T_0 = 0$ and $\\\\epsilon_t, \\\\zeta_t, \\\\eta_t$ normal $N(0, \\\\sigma^2)$ r.v.'s. Moreover, $X_t \\\\in R^{n_x}$, $B[:, 0:s_x] \\\\neq 0$ and $B[:, s_x:-1] = 0$, $\\\\gamma\\\\in [0, 1]$, $D[:, 0:s_x] \\\\neq 0$, $D[:, s_x:-1]=0$, $f[0:s_x]\\\\neq 0$, $f[s_x:-1]=0$. We draw a single time series of samples of length $n\\\\_samples$.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 148,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"from dynamic_panel_dgp import DynamicPanelDGP, LongRangeDynamicPanelDGP, EndogenousDynamicPanelDGP\\n\",\n    \"from dynamic_panel_dgp import PastTreatmentHeteroDynamicPanelDGP\\n\",\n    \"n_units = 500\\n\",\n    \"n_periods = 3\\n\",\n    \"n_treatments = 1\\n\",\n    \"n_x = 450\\n\",\n    \"s_x = 1 # the first s_x features are relevant and endogenous\\n\",\n    \"s_t = 1\\n\",\n    \"sigma_x = .8\\n\",\n    \"sigma_t = .8\\n\",\n    \"sigma_y = .1\\n\",\n    \"gamma = 0\\n\",\n    \"autoreg = .25\\n\",\n    \"state_effect = .25\\n\",\n    \"conf_str = 5\\n\",\n    \"true_hetero_inds = np.arange(n_x-n_treatments, n_x) # subset of features that are exogenous and create heterogeneity\\n\",\n    \"hetero_strength = .5 # strength of heterogeneity wrt the exogenous variables (assumed to be the last s_x features)\\n\",\n    \"hetero_inds = np.arange(n_x-n_treatments, n_x) # subset of features wrt we estimate heterogeneity\\n\",\n    \"#hetero_inds = np.empty(shape=(0,)).astype(int) \\n\",\n    \"\\n\",\n    \"#dgp_class = LongRangeDynamicPanelDGP\\n\",\n    \"dgp_class = DynamicPanelDGP\\n\",\n    \"#dgp_class = EndogenousDynamicPanelDGP\\n\",\n    \"#dgp_class = PastTreatmentHeteroDynamicPanelDGP\\n\",\n    \"dgp = dgp_class(n_periods, n_treatments, n_x).create_instance(s_x, sigma_x, sigma_y,\\n\",\n    \"                                                              conf_str, hetero_strength, true_hetero_inds,\\n\",\n    \"                                                              autoreg, state_effect,\\n\",\n    \"                                                              random_seed=368)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 149,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"Y, T, X, groups = dgp.observational_data(n_units, gamma, s_t, sigma_t, random_seed=1245)\\n\",\n    \"panelX = X.reshape(-1, n_periods, n_x)\\n\",\n    \"panelT = T.reshape(-1, n_periods, n_treatments)\\n\",\n    \"panelY = Y.reshape(-1, n_periods)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 150,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"true_effect_inds = []\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    true_effect_inds += [t * (1 + n_x)] + (list(t * (1 + n_x) + 1 + hetero_inds) if len(hetero_inds)>0 else [])\\n\",\n    \"true_effect_params = dgp.true_hetero_effect[:, true_effect_inds].flatten()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 151,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt \\n\",\n    \"from coverage_panel_hetero import add_vlines\\n\",\n    \"plt.figure(figsize=(20, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='*')\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 152,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    },\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x216 with 3 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"plt.figure(figsize=(20, 5))\\n\",\n    \"plt.subplot(1, 2, 1)\\n\",\n    \"plt.plot(Y, label=\\\"Outcome\\\")\\n\",\n    \"plt.plot(T, label=\\\"Treatment\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.subplot(1, 2, 2)\\n\",\n    \"for it in range(2):\\n\",\n    \"    plt.plot(X[:, it], label=\\\"X[{}]\\\".format(it))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.show()\\n\",\n    \"\\n\",\n    \"plt.figure(figsize=(20, 3))\\n\",\n    \"plt.subplot(1, 3, 1)\\n\",\n    \"for t in range(n_periods):\\n\",\n    \"    plt.hist(panelX[:, t, 0], alpha=.3, label=\\\"Period {}\\\".format(t))\\n\",\n    \"plt.title(\\\"X[0]\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 3, 2)\\n\",\n    \"for t in range(n_periods):\\n\",\n    \"    plt.hist(panelT[:, t, 0], alpha=.3, label=\\\"Period {}\\\".format(t))\\n\",\n    \"plt.title(\\\"T\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"\\n\",\n    \"plt.subplot(1, 3, 3)\\n\",\n    \"for t in range(n_periods):\\n\",\n    \"    plt.hist(panelY[:, t], alpha=.3, label=\\\"Period {}\\\".format(t))\\n\",\n    \"plt.title(\\\"Y\\\")\\n\",\n    \"plt.legend()\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Dynamic DML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 153,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.linear_model import LinearRegression, LassoCV, Lasso, MultiTaskLasso, MultiTaskLassoCV\\n\",\n    \"from sklearn.model_selection import GroupKFold, KFold\\n\",\n    \"from sklearn.ensemble import GradientBoostingRegressor\\n\",\n    \"from sklearn.multioutput import MultiOutputRegressor\\n\",\n    \"import lightgbm as lgb\\n\",\n    \"import warnings\\n\",\n    \"warnings.simplefilter('ignore')\\n\",\n    \"\\n\",\n    \"np.random.seed(123)\\n\",\n    \"from econml.sklearn_extensions.linear_model import SelectiveRegularization\\n\",\n    \"\\n\",\n    \"lasso_model = lambda : LassoCV(cv=3, n_alphas=6, max_iter=200)\\n\",\n    \"gb_model = lambda : GradientBoostingRegressor(n_estimators=100, max_depth=3,\\n\",\n    \"                                                 min_samples_leaf=50, min_impurity_decrease=.1)\\n\",\n    \"lgbm_model = lambda : lgb.LGBMRegressor()\\n\",\n    \"mlasso_model = lambda : MultiTaskLassoCV(cv=3, n_alphas=6, max_iter=200)\\n\",\n    \"mgb_model = lambda : MultiOutputRegressor(GradientBoostingRegressor(n_estimators=100, max_depth=3,\\n\",\n    \"                                                                       min_samples_leaf=50, min_impurity_decrease=.1))\\n\",\n    \"mlgbm_model = lambda : MultiOutputRegressor(lgb.LGBMRegressor())\\n\",\n    \"\\n\",\n    \"alpha_regs = [1e-4, 1e-3, 5e-2, 1e-1, .5, 1]\\n\",\n    \"slasso_model = lambda : SelectiveRegularization([0],\\n\",\n    \"                                                LassoCV(cv=KFold(n_splits=3, shuffle=True),\\n\",\n    \"                                                        alphas=alpha_regs, max_iter=200, fit_intercept=False),\\n\",\n    \"                                                fit_intercept=False)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 154,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from hetero_panel_dynamic_dml import HeteroDynamicPanelDML\\n\",\n    \"\\n\",\n    \"est = HeteroDynamicPanelDML(model_t=mlasso_model(),\\n\",\n    \"                            model_y=lasso_model(),\\n\",\n    \"                            model_final=slasso_model(),\\n\",\n    \"                            n_cfit_splits=3).fit(Y, T, X, groups, hetero_inds=hetero_inds)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.1 Parameter Recovery and Confidence Intervals\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 155,\n   \"metadata\": {\n    \"collapsed\": false,\n    \"scrolled\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Effect Lag=0, TX=0: 0.841 (0.613, 1.068), (Truth=0.619)\\n\",\n      \"Effect Lag=0, TX=1: 0.706 (0.278, 1.135), (Truth=0.243)\\n\",\n      \"Effect Lag=1, TX=0: -1.351 (-2.221, -0.482), (Truth=-1.250)\\n\",\n      \"Effect Lag=1, TX=1: -0.000 (-1.165, 1.165), (Truth=-0.744)\\n\",\n      \"Effect Lag=2, TX=0: -1.001 (-2.640, 0.639), (Truth=-0.188)\\n\",\n      \"Effect Lag=2, TX=1: -1.023 (-2.034, -0.012), (Truth=-0.112)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"param_hat = est.param\\n\",\n    \"conf_ints = est.param_interval(alpha=.01)\\n\",\n    \"for kappa in range(n_periods):\\n\",\n    \"    for t in range(n_treatments * (len(hetero_inds) + 1)):\\n\",\n    \"        param_ind = kappa * (len(hetero_inds) + 1) * n_treatments + t\\n\",\n    \"        print(\\\"Effect Lag={}, TX={}: {:.3f} ({:.3f}, {:.3f}), (Truth={:.3f})\\\".format(kappa, t,\\n\",\n    \"                                                                                    param_hat[param_ind],\\n\",\n    \"                                                                                    *conf_ints[param_ind],\\n\",\n    \"                                                                                    true_effect_params[param_ind]))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 156,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             param_hat, fmt='o')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='o', alpha=.6)\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 157,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAABZgAAAFgCAYAAAA2IxyjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAfRUlEQVR4nO3df7DdZX0n8PeHBMkVA6mQVklc0amTKas2NBmnrDPbMqJB15WUbQekO9XaFma3TGfaTtRsOu1Mdxnt8MfOtrgVWpm6HUU6DEaKtFEqXcdZ/JFsUgK1sRQKJtEaYBNiSQhJnv3jXjFJ702833Pu/Z577+s1kznn+zkP5/nwx5dn8j4Pz7daawEAAAAAgOk6q+8GAAAAAACYmwTMAAAAAAB0ImAGAAAAAKATATMAAAAAAJ0ImAEAAAAA6GRx3w2czoUXXtguvvjivtsAgKF66rvPJ0kufNk5PXcCAAyL9R2A+W7btm1PtdaWn1of6YD54osvztatW/tuAwCG6o+++FiS5Ff+7Wt77gQAGBbrOwDzXVU9MVndERkAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATATMAAAAAAJ0ImAEAAIbomlsfzDW3Pth3GwAAs0LADAAAAABAJwJmgB7Z4QQAAADMZQJmAAAAAAA6ETADAAAAANCJgBkAAAAAgE4EzCPImawAAAAAwFwwlIC5qm6vqu9U1cNTfF5V9ftV9WhVPVRVPzGMeQEAAAAA6M+wdjD/SZIrT/P525O8buLP9Un+cEjzAgAAAADQk6EEzK21LyZ55jRDrkryv9q4LydZVlWvHMbcAAAAAAD0Y7bOYF6R5JsnXO+eqP0LVXV9VW2tqq379u2bleYAAAAAAJi+2QqYa5Jam2xga+221tra1tra5cuXz3BbAAAAAAB0NVsB8+4krzrhemWSvbM0NwAAAAAAM2C2AuZ7kvxCjfvJJAdaa9+apbkBAAAAAJgBi4fxJVV1R5KfTnJhVe1O8jtJzk6S1tpHk9yX5B1JHk3yXJJfHMa8AAAAAAD0ZygBc2vt3Wf4vCX51WHMBQAAAADAaJitIzIAAAAAAJhnBMwAAAAAAHQiYB4xm7fvyfYn9+crjz+TN3/4C9m8fU/fLQEAAAAATErAPEI2b9+TjXfvzJFjx5Mke/Yfysa7dwqZAQAAAICRJGAeITdv2ZVDLxw7qXbohWO5ecuunjoCAAAAAJiagHmE7N1/aFp1AAAAAIA+CZhHyEXLxqZVBwAAAADok4B5hGxYtypjZy86qTZ29qJsWLeqp44AAAAAAKa2uO8G+L71l65Ikrz/rody5NjxrFg2lg3rVr1YBwAAAAAYJQLmEbP+0hW546tPJknuvOGynrsBAAAAAJiaIzIAerJ5+55sf3J/vvL4M3nzh7+Qzdv39N0SAAAAwLQImAF6sHn7nmy8e2eOHDueJNmz/1A23r1TyAwAAADMKQJmgB7cvGVXDr1w7KTaoReO5eYtu3rqCAAAAGD6BMwAPdi7/9C06gAAAACjSMAM0IOLlo1Nqw4AAAAwigTMAD3YsG5Vxs5edFJt7OxF2bBuVU8dAQAAAEzf4r4b4BS7t+V9B27J8qPfTu5dnay+Llm5pu+ugCFbf+mKJMn773ooR44dz4plY9mwbtWLdQAAAIC5QMA8SnZvSx64KUuPH8kziy5MDj2dPHBTcvkmITPMQ+svXZE7vvpkkuTOGy7ruRsAAACA6XNExijZ8clkyXl57qyXJVXJkvOTJeeN1wEAAICRcs2tD+aaWx/suw2AXtnBPEr2P5Gc98pc8WPnf792ztLxOgAAAADAiLGDeZQse3Xy/MGTa88fHK8DAAAAAIwYAfMoWX1dcvjZ5PCBpB0ffz387HgdAAAAAGDECJhHyco14w/0G7sgefZb468e8AcAAAAAjChnMI+alWsEygAAAADAnDCUHcxVdWVV7aqqR6vqg5N8/t6q2ldVOyb+/PIw5gUAAAAAoD8D72CuqkVJPpLkrUl2J/laVd3TWvvbU4be2Vq7cdD5AAAAAAAYDcPYwfymJI+21h5rrR1J8qkkVw3hewEAAAAAGGHDCJhXJPnmCde7J2qn+g9V9VBV3VVVr5rqy6rq+qraWlVb9+3bN4T2AAAAAACYCcMImGuSWjvl+s+TXNxae2OS+5N8fKova63d1lpb21pbu3z58iG0BwAAAADATBhGwLw7yYk7klcm2XvigNba06215ycu/yjJmiHMCwAAAABAj4YRMH8tyeuq6jVV9ZIk1ya558QBVfXKEy7fleTrQ5gXAAAAAIAeLR70C1prR6vqxiRbkixKcntr7ZGq+t0kW1tr9yT5tap6V5KjSZ5J8t5B5wUAAAAAoF8DB8xJ0lq7L8l9p9R++4T3G5NsHMZcAAAAAACMhmEckQEAAAAAwAIkYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0MnivhsAWLB2b8v7DtyS5Ue/ndy7Oll9XbJyTd9dAQAAAPzA7GAG6MPubckDN2Xda87OT7z+kuTQ08kDN43XAQAAAOYIATNAH3Z8MllyXrLk/KTOGn9dct54HQAAAGCOEDAD9GH/E8k5S0+unbN0vA4AAAAwRwiYAfqw7NXJ8wdPrj1/cLwOAAAAMEcImAH6sPq65PCzyeEDSTs+/nr42fE6AAAAwBwhYAbow8o1yeWbkrELkme/Nf56+abxOgAAAMAcsbjvBgAWrJVrBMoAAADAnGYHMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKCToQTMVXVlVe2qqker6oOTfH5OVd058flXquriYcwLAAAwSjZv35PtT+7PVx5/Jm/+8BeyefuevlsCAJhRAwfMVbUoyUeSvD3JJUneXVWXnDLsl5L8v9bajyb570l+b9B5AQAARsnm7Xuy8e6dOXLseJJkz/5D2Xj3TiEzADCvDWMH85uSPNpae6y1diTJp5JcdcqYq5J8fOL9XUneUlU1hLkBAABGws1bduXQC8dOqh164Vhu3rKrp44AAGbeMALmFUm+ecL17onapGNaa0eTHEhywWRfVlXXV9XWqtq6b9++IbQHAAAw8/buPzStOgDAfDCMgHmyncitw5jxYmu3tdbWttbWLl++fODmAAAAZsNFy8amVQcA5pZrbn0w19z6YN9tjJxhBMy7k7zqhOuVSfZONaaqFic5P8kzQ5gbAABgJGxYtypjZy86qTZ29qJsWLeqp44AAGbeMALmryV5XVW9pqpekuTaJPecMuaeJO+ZeP+zSb7QWpt0BzMAAMBctP7SFfnQ1W/ISxaN/zVrxbKxfOjqN2T9paeeIAgAMH8sHvQLWmtHq+rGJFuSLEpye2vtkar63SRbW2v3JPlYkj+tqkczvnP52kHnBQAAGDXrL12RO776ZJLkzhsu67kbAGBodm/L+w7ckuVHv53cuzpZfV2yck3fXY2EgQPmJGmt3ZfkvlNqv33C+8NJfm4YcwEAAAAAzJrd25IHbsrS40fyzKILk0NPJw/clFy+Scic4RyRAQAAAAAwP+34ZLLkvDx31suSqmTJ+cmS88brCJgBAAAAAKa0/4nknKUn185ZOl5HwAwAAAAAMKVlr06eP3hy7fmD43UEzAAAAADTNvHArw88/VvJvb85fkYrMD+tvi45/Gxeevy7SWvJ4QPJ4WfH6wiYAQAAAKblxQd+HTj5gV9CZpifVq5JLt+Ug2edn5cfeyoZu8AD/k6wuO8GAAAAAOaUFx/4dXj8esn5368LnGB+Wrkmt59/Y5Lkznde1nMzo8UOZgAAAIDp8MAvgBcJmAEAAACmwwO/AF4kYAYAAACYDg/8AniRgBkAAABgOjzwC+BFHvIHAAAAMF0e+AWQxA5mAAAAAAA6EjADAAAAANCJgBkAAAAAgE4EzAAAAAAAdCJgBgAAAACgEwEzAAAAAACdCJgBAAAAAOhEwAwAAAAAQCcCZgAAAAAAOhEwAwAAAADQiYAZAAAAAIBOBMwAAAAAAHQyUMBcVS+vqs9X1d9PvP7QFOOOVdWOiT/3DDInAAAAAACjYdAdzB9M8lettdcl+auJ68kcaq2tnvjzrgHnBAAAAABgBAwaMF+V5OMT7z+eZP2A3wcAMC9dc+uDuebWB/tuAwAAYKgGDZh/pLX2rSSZeP3hKcYtqaqtVfXlqjptCF1V10+M3bpv374B2wMAAAAAYKYsPtOAqro/ySsm+WjTNOb5V621vVX12iRfqKqdrbV/mGxga+22JLclydq1a9s05gAAAAAAYBadMWBurV0x1WdV9U9V9crW2req6pVJvjPFd+ydeH2sqv46yaVJJg2YAQAAAACYGwY9IuOeJO+ZeP+eJJ85dUBV/VBVnTPx/sIkb07ytwPOCwAAAABAzwYNmD+c5K1V9fdJ3jpxnapaW1V/PDHmx5Jsraq/SfJAkg+31gTMAAAAAABz3BmPyDid1trTSd4ySX1rkl+eeP9/krxhkHkAAAAAABg9g+5gBgAAAABggRIwAwAAAADQiYAZAAAAAIBOBMwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoZHHfDQAAAMwbu7flfQduyfKj307uXZ2svi5ZuabvrgAAZowdzAAAAMOwe1vywE1ZevxAnll0YXLo6eSBm8brAADzlIAZAABgGHZ8MllyXp4762VJVbLk/GTJeeN1AIB5SsAMAAAwDPufSM5ZenLtnKXjdQCAeUrADAAAMAzLXp08f/Dk2vMHx+sAAPOUgBkAAGAYVl+XHH42Lz3+3aS15PCB5PCz43UAgHlKwAwAADAMK9ckl2/KwbPOz8uPPZWMXZBcvmm8DgAwTy3uuwEAAIB5Y+Wa3H7+jUmSO995Wc/NAADMPDuYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATATMAAAAAAJ0ImAEAAAAA6GSggLmqfq6qHqmq41W19jTjrqyqXVX1aFV9cJA5AQAAAPq2efuebH9yf77y+DN584e/kM3b9/TdEkAvBt3B/HCSq5N8caoBVbUoyUeSvD3JJUneXVWXDDgvAAAAQC82b9+TjXfvzJFjx5Mke/Yfysa7dwqZYR7zo9LUBgqYW2tfb63tOsOwNyV5tLX2WGvtSJJPJblqkHkBAAAA+nLzll059MKxk2qHXjiWm7ecKSIB5iI/Kp3ebJzBvCLJN0+43j1Rm1RVXV9VW6tq6759+2a8OQAAAIDp2Lv/0LTqwNzmR6XTO2PAXFX3V9XDk/z5QXch1yS1NtXg1tptrbW1rbW1y5cv/wGnAAAAAJgdFy0bm1YdmNv8qHR6i880oLV2xYBz7E7yqhOuVybZO+B3AgAAAPRiw7pV2Xj3zpN2NI6dvSgb1q3qsStgply0bCx7JgmT/ag0bjaOyPhaktdV1Wuq6iVJrk1yzyzMCwAAADB06y9dkQ9d/Ya8ZNF4rLJi2Vg+dPUbsv7SKU8EBeawDetWZezsRSfV/Kj0fWfcwXw6VfUzSf4gyfIkn62qHa21dVV1UZI/bq29o7V2tKpuTLIlyaIkt7fWHhm4cwAAAICerL90Re746pNJkjtvuKznboCZ9L0fj95/10M5cux4Viwby4Z1q/yoNGGggLm19ukkn56kvjfJO064vi/JfYPMBQAAAADQBz8qTW02jsgAAAAAAGAeEjADAAAAANCJgBkAAAAAgE4EzAAAAAAAdDLQQ/4AAAA4mQf/AAALiR3MAAAAAAB0ImAGAAAAAKATR2QAAMy03dvyvgO3ZPnRbyf3rk5WX5esXNN3VwAAAAOzgxkAYCbt3pY8cFOWHj+QZxZdmBx6OnngpvE6AADAHCdgBgCYSTs+mSw5L8+d9bKkKllyfrLkvPE6AADAHCdgBgCYSfufSM5ZenLtnKXjdQAAgDlOwAwAMJOWvTp5/uDJtecPjtcBAADmOAEzAMBMWn1dcvjZvPT4d5PWksMHksPPjtcBAADmOAEzAMBMWrkmuXxTDp51fl5+7Klk7ILk8k3jdQAAgDlucd8NAADMd5v3vSLvP/Afc+TY8ax4eCwbVrwi61f23RUAAMDg7GAGAJhBm7fvyca7d+bIseNJkj37D2Xj3TuzefuenjsDAAAYnIAZAGAG3bxlVw69cOyk2qEXjuXmLbt66ggAAGB4BMwAADNo7/5D06oDAADMJQJmAIAZdNGysWnVAQAA5hIBMwDADNqwblXGzl50Um3s7EXZsG5VTx0BAAAMz+K+GwAAmM/WX7oiSfL+ux7KkWPHs2LZWDasW/ViHQAAYC4TMAMAzLD1l67IHV99Mkly5w2X9dwNAADA8DgiAwAAAACATgYKmKvq56rqkao6XlVrTzPuH6tqZ1XtqKqtg8wJAAAAAMBoGPSIjIeTXJ3k1h9g7OWttacGnA8AAAAAgBExUMDcWvt6klTVcLoBAAAAAGDOmK0zmFuSz1XVtqq6/nQDq+r6qtpaVVv37ds3S+0BAAAAADBdZ9zBXFX3J3nFJB9taq195gec582ttb1V9cNJPl9Vf9da++JkA1trtyW5LUnWrl3bfsDvBwAAAABglp0xYG6tXTHoJK21vROv36mqTyd5U5JJA2YAAAAAAOaGGT8io6rOraql33uf5G0ZfzggAAAAAABz2EABc1X9TFXtTnJZks9W1ZaJ+kVVdd/EsB9J8qWq+pskX03y2dbaXw4yLwAAAAAA/TvjERmn01r7dJJPT1Lfm+QdE+8fS/Ljg8wDAAAAAMDomfEjMgAAAAAAmJ8EzAAAAAAAdCJgBgAAAACgEwEzAAAAAACdCJgBAAAAAOhEwAwAAAAAQCcCZgAAAAAAOhEwAwAAAADQiYAZAAAAAIBOBMwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATATMAAAAAAJ0ImAEAAAAA6ETADAAAAABAJwJmAAAAAAA6GShgrqqbq+rvquqhqvp0VS2bYtyVVbWrqh6tqg8OMicAAAAAAKNh0B3Mn0/y+tbaG5N8I8nGUwdU1aIkH0ny9iSXJHl3VV0y4LwAAAAAAPRsoIC5tfa51trRicsvJ1k5ybA3JXm0tfZYa+1Ikk8luWqQeQEAAAAA6N8wz2B+X5K/mKS+Isk3T7jePVGbVFVdX1Vbq2rrvn37htgeAAAAAADDtPhMA6rq/iSvmOSjTa21z0yM2ZTkaJJPTPYVk9TaVPO11m5LcluSrF27dspxAAAAAAD064wBc2vtitN9XlXvSfLOJG9prU0WCO9O8qoTrlcm2TudJgEAAAAAGD1nDJhPp6quTPKBJD/VWntuimFfS/K6qnpNkj1Jrk1y3SDzAgAAAADMpjtvuKzvFkbSoGcw35JkaZLPV9WOqvpoklTVRVV1X5JMPATwxiRbknw9yZ+11h4ZcF4AAAAAAHo20A7m1tqPTlHfm+QdJ1zfl+S+QeYCAAAAAGC0DLqDGQAAAACABUrADAAAAABAJwJmAAAAAAA6ETADAAAAANCJgBkAAAAAgE4EzAAAAAAAdCJgBgAAAACgEwEzAAAAAACdCJgBAAAAAOhkcd8NAAAsBHfecFnfLQAAAAydHcwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATATMAAAAAAJ0ImAEAAAAA6ETADAAAAABAJwJmAAAAAAA6WTzIP1xVNyf590mOJPmHJL/YWts/ybh/THIwybEkR1traweZFwAAAACA/g26g/nzSV7fWntjkm8k2XiasZe31lYLlwEAAAAA5oeBAubW2udaa0cnLr+cZOXgLQEAAAAAMBcM8wzm9yX5iyk+a0k+V1Xbqur6031JVV1fVVurauu+ffuG2B4AAAAAAMN0xjOYq+r+JK+Y5KNNrbXPTIzZlORokk9M8TVvbq3traofTvL5qvq71toXJxvYWrstyW1Jsnbt2vYD/DsAAAAAANCDMwbMrbUrTvd5Vb0nyTuTvKW1Nmkg3FrbO/H6nar6dJI3JZk0YAYAAAAAYG4Y6IiMqroyyQeSvKu19twUY86tqqXfe5/kbUkeHmReAAAAAAD6N+gZzLckWZrxYy92VNVHk6SqLqqq+ybG/EiSL1XV3yT5apLPttb+csB5AQAAAADo2RmPyDid1tqPTlHfm+QdE+8fS/Ljg8wDAAAAAMDoGXQHMwAAAAAAC5SAGQAAAACATgTMAAAAAAB0MtAZzAAAAAAL1Z03XNZ3CwC9s4MZAAAAAIBOBMwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKCTaq313cOUqmpfkif67qMnFyZ5qu8mmHWvSfJ4300w69zvsHC43xcm6/vC5H6HhcP9vjBZ3xeuhXzPv7q1tvzU4kgHzAtZVW1tra3tuw9mV1X9c2vt3L77YHa532HhcL8vTNb3hcn9DguH+31hsr4vXO75f8kRGQAAAAAAdCJgBgAAAACgEwHz6Lqt7wboxd19N0Av3O+wcLjfFybr+8LkfoeFw/2+MFnfFy73/CmcwQwAAAAAQCd2MAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATAfOIqarbq+o7VfVw370Ag6uqB6rqrRPv/1tV/X7fPQGzz/oO8481Hkis8TDfWN+7ETCPnj9JcmXfTQBD8ztJNlXVzye5NMmv99wP0I8/ifUd5htrPJBY42G+sb53IGAeMa21LyZ5pu8+gOGYuKcryW8kuba1dixJqurcqtpWVe+c4vqSqvqzqvrDqvrZ3v4FgKGwvsP8Y40HEms8zDfW924EzAAzqKrekOSVSZ5vrR084aMPJPmz01y/PckftNb+U5JfmPFGAYBpscYDwPxjfe9GwAwwQ6rqlUk+keSqJP9cVesm6lck+dsk/zTZ9YQ/TXJtVd2c5ILZ7BsAOD1rPADMP9b37hb33QDAfFRVL01yd5LfbK19var+a5LfS7IlyeVJzk1ySZJDGV+Yxr53XVX3tda+k+RXq2rRxPcAACPAGg8A84/1fTDVWuu7B05RVRcnube19vqeWwFmUFW9N8lTrbV7T72e+O/Af8n4IvaHrbUv9dQmMCTWd1g4rPGwsFjjYWGwvk9NwDxiquqOJD+d5MKMb7X/ndbax3ptCgAYiPUdAOYnazyAgBkAAAAAgI485A8AAAAAgE4EzAAAAAAAdCJgBgAAAACgEwEzAAAAAACdCJgBAAAAAOhEwAwAAAAAQCcCZgAAAAAAOhEwAwAAAADQiYAZAAAAAIBOBMwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAni/tuABaqqjovyf9O8pIkr0nyjSSHk/yb1trxPnsDALqxvgPA/GN9h9Or1lrfPcCCVlVvSrKptXZV370AAMNhfQeA+cf6DpOzgxn69/okj3zvoqrOTfI/kxxJ8tettU/01RgA0Jn1HQDmH+s7TMIZzNC/S5I8fML11Unuaq39SpJ39dMSADAg6zsAzD/Wd5iEgBn6d1GSb59wvTLJNyfeH5v9dgCAIbC+A8D8Y32HSQiYoX9bknysqn5q4np3xhepxD0KAHOV9R0A5h/rO0zCQ/5gxEyc4XRLxp9I+yVnOAHA3Gd9B4D5x/oO4wTMAAAAAAB0Yvs+AAAAAACdCJgBAAAAAOhEwAwAAAAAQCcCZgAAAAAAOhEwAwAAAADQiYAZAAAAAIBOBMwAAAAAAHQiYAYAAAAAoBMBMwAAAAAAnQiYAQAAAADoRMAMAAAAAEAnAmYAAAAAADoRMAMAAAAA0ImAGQAAAACATgTMAAAAAAB0ImAGAAAAAKATATP0qKoWVdX/qKpHqmpnVb22754AgMFY3wFgfrLGw+QEzNCvjUkea6396yS/n+Q/99wPADA46zsAzE/WeJjE4r4bgIWqqs5N8jOttTUTpceT/LseWwIABmR9B4D5yRoPUxMwQ3+uSPKqqtoxcf3yJPf32A8AMDjrOwDMT9Z4mIIjMqA/q5P8dmttdWttdZLPJdlRVedW1cer6o+q6ud77hEAmJ6p1vfXVtXHququnvsDALqZao1fP/H3989U1dt67hF6IWCG/vxQkueSpKoWJ3lbkj9PcnWSu1prv5LkXf21BwB0MOn63lp7rLX2S712BgAMYqo1fvPE39/fm+Sa/tqD/giYoT/fSPKTE+9/PclnW2uPJ1mZ5JsT9WN9NAYAdDbV+g4AzG1nWuN/K8lHZr0rGAECZujPHUl+oqoeTfLGJL8xUd+d8ZA5cY8CwFwz1foOAMxtk67xNe73kvxFa+3/9tkg9KVaa333AJxg4sm0tyQ5nORLrbVP9NwSADCgqrogyU1J3prkj1trH+q5JQBgCKrq15K8J8nXkuxorX2055Zg1gmYAQAAAADoxP9+DwAAAABAJwJmAAAAAAA6ETADAAAAANCJgBkAAAAAgE4EzAAAAAAAdCJgBgAAAACgEwEzAAAAAACdCJgBAAAAAOjk/wMxVdC/X77NAgAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 1440x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(20, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             param_hat, yerr=(conf_ints[:, 1] - param_hat,\\n\",\n    \"                              param_hat - conf_ints[:, 0]), fmt='o')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='o', alpha=.6)\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 2.2 Benchmark Method Comparison\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 158,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.utilities import cross_product\\n\",\n    \"from statsmodels.tools.tools import add_constant\\n\",\n    \"\\n\",\n    \"panelTX = np.zeros((n_units, n_periods, (1 + len(hetero_inds)) * n_treatments))\\n\",\n    \"for t in range(n_periods):\\n\",\n    \"    panelTX[:, t, :] = cross_product(add_constant(panelX[:, t, hetero_inds], has_constant='add'),\\n\",\n    \"                            panelT[:, t, :])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.1 Regressing Y on {T[t]*X[t, hetero_inds]}\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 159,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"est_lr = LinearRegression().fit(panelTX[:, ::-1, :].reshape((n_units, -1)), panelY[:, -1]).coef_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.2 Controlling for Subsets of the States\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 160,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"est_lr_x0 = lasso_model().fit(np.hstack([panelTX[:, ::-1, :].reshape(n_units, -1),\\n\",\n    \"                                  panelX[:, 0, :]]), panelY[:, -1]).coef_[:-n_x]\\n\",\n    \"est_lr_xfinal = lasso_model().fit(np.hstack([panelTX[:, ::-1, :].reshape(n_units, -1),\\n\",\n    \"                                  panelX[:, -1, :]]), panelY[:, -1]).coef_[:-n_x]\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.3 Controlling for Subsets of States with Static DML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 161,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from econml.dml import LinearDMLCateEstimator\\n\",\n    \"dml_model = lambda : LinearDMLCateEstimator(model_y=lasso_model(), model_t=mlasso_model(),\\n\",\n    \"                                      n_splits=3, linear_first_stages=False)\\n\",\n    \"est_dml_x0 = dml_model().fit(panelY[:, -1], T=panelTX[:, ::-1, :].reshape(n_units, -1),\\n\",\n    \"                      X=None, W=panelX[:, 0, :]).intercept_\\n\",\n    \"est_dml_xfinal = dml_model().fit(panelY[:, -1], T=panelTX[:, ::-1, :].reshape(n_units, -1),\\n\",\n    \"                      X=None, W=panelX[:, -1, :]).intercept_\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 2.2.4 Direct version of Dynamic DML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 162,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"Y_cal = panelY[:, -1].copy()\\n\",\n    \"direct_theta = np.zeros((n_periods, (1 + len(hetero_inds) * n_treatments)))\\n\",\n    \"for t in np.arange(n_periods):\\n\",\n    \"    direct_theta[t, :] = lasso_model().fit(np.hstack([panelTX[:, n_periods - 1 - t, :],\\n\",\n    \"                                                      panelX[:, n_periods - 1 - t, :]]), Y_cal).coef_[:-n_x]\\n\",\n    \"    Y_cal -= np.dot(panelTX[:, n_periods - 1 - t, :], direct_theta[t, :])\\n\",\n    \"est_direct = direct_theta.flatten()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 163,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) - .08,\\n\",\n    \"             est_direct, fmt='o', label='dyn-direct')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) - .04,\\n\",\n    \"             param_hat, fmt='*', label='dyn-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='*', alpha=.6, label='true')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .04,\\n\",\n    \"             est_lr.flatten(), fmt='o', alpha=.6, label='direct')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .08,\\n\",\n    \"             est_lr_x0.flatten(), fmt='o', alpha=.6, label='init-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .12,\\n\",\n    \"             est_dml_x0.flatten(), fmt='o', alpha=.6, label='init-ctrls-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .16,\\n\",\n    \"             est_lr_xfinal.flatten(), fmt='o', alpha=.6, label='fin-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .20,\\n\",\n    \"             est_dml_xfinal.flatten(), fmt='o', alpha=.6, label='fin-ctrls-dml')\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 164,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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63PTTTfl5z//+Y59/OhHP0qS3e7j3WOYNGnSgOOZNGnSHo8HAAAAAACA8WlcBoCnLD4n2zo707W1I6VSKV1bO7KtszOnLD7ngNZRUVGRnp6eJMlnP/vZNDU1pampKTNmzMh5552Xb33rWzv6bt68eadtdue1115LTU1NrrjiinzhC1/Is88+m/e973079nHhhRfm7LPPzne/+9309fXl9ddfz+rVq0fmQAEAAAAAABg3xmUAePTxc3PmZctTPa027e+8lepptTnzsuXD9v6/vXX11VenoaEhy5cv32ndl7/85WzevDnz5s3LqaeeuiOc2902v+25557L6aefnsbGxnzta1/Ll7/85Z36LFu2LCeccELmz5+fT3/60/nDP/zD4TkwAAAAAAAAxq1CqVQ64DtdtGhR6emnnx7Q9stf/jInnXTSAa+Fwfn7AIDkb3/yX0mST539e6NcCWPeHef3f171wOjWAQDjkN+52Gt+5wKAnRQKhWdKpdKi320flzMAAQAAAAAAgMEJAAEAAAAAAGACKR/tAgAAYNzzGCoA+P/au/9Yrer7DuDv770gV/khaEdSvWsH/QvkwqMgWTS5QtTqUkOhMdHYuFkNiTqDaRciG8b+sZHR+ofRdWDWdetYtEmDZevsbOfivUPiHwzI1aE2zaSlJWFoVYY/gMr17A8udyJXqxee+9zn+HolhOec5znnvB9u8s0nvHPOBQBgHHEHIAAAAAAAANSIAhAAAAAAAABqRAEIAAAAAAAANaIAfI+HHnooc+bMyYwZM7J+/frTPt/BgwezYcOGD/3MlClTTvs6AAAAAAAAcMKEVgcYraO/PJS3d72cY68dyYTzunLOJTMz6TPTTuucGzZsyBNPPJFZs2adkYwnCsA777zzlPcGBwfT2dl5Rq4DAAAAAAAAJ7TlHYBHf3koh57cm3ffeied556Vd996J4ee3Jujvzw06nPefvvt2bNnT5YtW5YHHnggd911V5LklltuyapVq3LZZZdl9uzZ2bx584jHHzhwICtWrMiCBQuyYMGCPPPMM1mzZk1eeumlNBqNrF69Ov39/Vm6dGluuumm9PT0nHT8/v3709vbm0ajkXnz5uXpp58e9XcBAAAAAADgk6st7wB8e9fL6eiakI6zj8cvQ3+/vevlUd8F+PDDD+fHP/5x+vr68vjjj5/03v79+7Nt27b89Kc/zbJly3L99defcvyqVatyxRVXZMuWLRkcHMybb76Z9evXZ/fu3RkYGEiS9Pf3Z/v27dm9e/cpdxk++uijueaaa7J27doMDg7m7bffHtX3AAAAAAAA4JOtLQvAY68dSee5Z520r3R15thrR5pyveXLl6ejoyNz587NgQMHRvzMU089lU2bNiVJOjs7c+655+b1118/5XOLFy8e8RGjl156aW699da88847Wb58eRqNxpn9EgAAAAAAAHwitOUjQCec15XqyOBJ+6ojg5lwXldTrjdp0qT/v05VJUnWrl2bRqPxsYu6yZMnj7i/t7c3W7duzYUXXpibb755uEwEAAAAAACAj6MtC8BzLpmZd48cy7uHj6Wqqrx7+FjePXIs51wyc8wyrFu3LgMDA8OP97zyyiuzcePGJMng4GAOHTqUqVOn5o033vhI59u7d29mzpyZlStX5rbbbsuuXbualh0AAAAAAID6assCcNJnpmXa1Z9Nx+SJGfzf36Rj8sRMu/qzo/79f2fCgw8+mL6+vvT09GThwoV5/vnnc/755+fyyy/PvHnzsnr16g89vr+/P41GIxdffHEee+yx3H333WOUHAAAAAAAgDopJx5pOZYWLVpU7dix46R9L774YubMmTPmWRiZnwcAJN/euidJsrJ3douTAADUl5mLj+zvv3D876/8qLU5AGAcKaXsrKpq0fv3t+UdgAAAAAAAAMDIFIAAAAAAAABQIwpAAAAAAAAAqBEFIAAAAAAAANSIAhAAAAAAAABqRAEIAAAAAAAANaIAfI+HHnooc+bMyYwZM7J+/frTPt/BgwezYcOGD/3MlClTRn3+JUuWZMeOHR/58/39/bnuuutGfT0AAAAAAADGvwmtDjBa+/bty8DAQA4ePJjp06en0Wiku7v7tM65YcOGPPHEE5k1a9YZyXiiALzzzjtPeW9wcDCdnZ1n5DoAAAAAAABwQlveAbhv37709fXl8OHDmTZtWg4fPpy+vr7s27dv1Oe8/fbbs2fPnixbtiwPPPBA7rrrriTJLbfcklWrVuWyyy7L7Nmzs3nz5hGPP3DgQFasWJEFCxZkwYIFeeaZZ7JmzZq89NJLaTQaWb16dfr7+7N06dLcdNNN6enpOen4/fv3p7e3N41GI/PmzcvTTz99yjUOHz6cG2+8MfPnz88NN9yQw4cPD783ZcqU3HPPPVm4cGGuuuqqbN++PUuWLMns2bPzwx/+cNT/LgAAAAAAALSXtiwABwYG0tXVla6urpRShl8PDAyM+pwPP/xwLrjggvT19WXGjBknvbd///5s27Ytjz/+eNasWTPi8atWrcoVV1yRZ599Nrt27cpFF12U9evX53Of+1wGBgZy//33J0m2b9+edevW5YUXXjjp+EcffTTXXHNNBgYG8uyzz6bRaJxyjY0bN+acc87Jc889l7Vr12bnzp3D77311ltZsmRJdu7cmalTp+bee+/Nk08+mS1btuS+++4b9b8LAAAAAAAA7aUtHwF68ODBTJs27aR9kyZNysGDB5tyveXLl6ejoyNz587NgQMHRvzMU089lU2bNiVJOjs7c+655+b1118/5XOLFy8e8RGjl156aW699da88847Wb58+YgF4NatW7Nq1aokyfz58zN//vzh984666xce+21SZKenp5MmjQpEydOTE9PT37xi1987O8MAAAAAABAe2rLOwCnT5+eo0ePnrTv6NGjmT59elOuN2nSpOHXVVUlSdauXZtGozFiUfdhJk+ePOL+3t7ebN26NRdeeGFuvvnmbNq0KVu2bBm+xo4dO5IkpZQRj584ceLwex0dHcOZOzo6cuzYsY+VEQAAAAAAgPbVlgVgo9HIkSNHcuTIkVRVNfz645Zxp2PdunUZGBgYfuzolVdemY0bNyZJBgcHc+jQoUydOjVvvPHGRzrf3r17M3PmzKxcuTK33XZbdu3alRUrVgxfY9GiRent7c0jjzySJNm9e3eee+655nw5AAAAABhvvvKj438AgN+qLQvA7u7uLF26NGeffXYOHTqUs88+O0uXLk13d3fLMj344IPp6+tLT09PFi5cmOeffz7nn39+Lr/88sybNy+rV6/+0OP7+/vTaDRy8cUX57HHHsvdd999ymfuuOOOvPnmm5k/f36++c1vZvHixc36OgAAAAAAALSpcuKRlmNp0aJF1YlHWp7w4osvZs6cOWOehZH5eQBA8u2te5IkK3tntzgJAEB9mbkAAEavlLKzqqpF79/flncAAgAAAAAAACNTAAIAAAAAAECNjKsCsBWPI+VUfg4AAAAAAADta9wUgF1dXXn11VeVTy1WVVVeffXVdHV1tToKAAAAAAAAozCh1QFO6O7uzr59+/LKK6+0OsonXldXV7q7u1sdAwAAAAAA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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1800x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(25, 5))\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) - .08,\\n\",\n    \"             est_direct, fmt='o', label='dyn-direct')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) - .04,\\n\",\n    \"             param_hat, yerr=(conf_ints[:, 1] - param_hat,\\n\",\n    \"                              param_hat - conf_ints[:, 0]), fmt='o', label='dyn-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments),\\n\",\n    \"             true_effect_params.flatten(), fmt='*', alpha=.6, label='true')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .04,\\n\",\n    \"             est_lr.flatten(), fmt='o', alpha=.6, label='direct')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .08,\\n\",\n    \"             est_lr_x0.flatten(), fmt='o', alpha=.6, label='init-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .12,\\n\",\n    \"             est_dml_x0.flatten(), fmt='o', alpha=.6, label='init-ctrls-dml')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .16,\\n\",\n    \"             est_lr_xfinal.flatten(), fmt='o', alpha=.6, label='fin-ctrls')\\n\",\n    \"plt.errorbar(np.arange(n_periods * (len(hetero_inds) + 1) * n_treatments) + .20,\\n\",\n    \"             est_dml_xfinal.flatten(), fmt='o', alpha=.6, label='fin-ctrls-dml')\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.legend()\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3. Policy Effect\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 165,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Policy effect for treatment seq: \\n\",\n      \" [[1]\\n\",\n      \" [1]\\n\",\n      \" [1]]\\n\",\n      \" -1.529 (-3.291, 0.234), (truth=-0.830)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"tau = np.random.binomial(1, .8, size=(n_periods, n_treatments))\\n\",\n    \"true_policy_effect = dgp.static_policy_effect(tau, mc_samples=1000)\\n\",\n    \"policy_effect_hat, policy_ints, policy_std = est.policy_effect(tau, X[:, hetero_inds], groups)\\n\",\n    \"print(\\\"Policy effect for treatment seq: \\\\n {}\\\\n {:.3f} ({:.3f}, {:.3f}), (truth={:.3f})\\\".format(tau,\\n\",\n    \"                                                                                                policy_effect_hat,\\n\",\n    \"                                                                                                *policy_ints,\\n\",\n    \"                                                                                                true_policy_effect))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### 3.1 Benchmark Comparison\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 166,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def static_policy_effect(tau, hetero_params):\\n\",\n    \"    return np.sum([tau[t].reshape(1, -1) @\\\\\\n\",\n    \"                   hetero_params.reshape(n_periods, n_treatments, 1 + len(hetero_inds))[n_periods - 1 - t] @\\\\\\n\",\n    \"                   np.mean(add_constant(panelX[:, t, hetero_inds], has_constant='add'), axis=0)\\n\",\n    \"                   for t in range(n_periods)])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 167,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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SRmeeSFJkiRJnWjJmiXcVn0btVtrGdlvJLVba7mt+jaWrFmS07grV67kyCOP5JOf/CRHHXUUp59+OvX19VRXV/Pe976XyZMnc/7557N+/foW9//JT37C5MmTOeaYY7j00kt5+umneeCBB/j85z9PZWUly5cvZ9q0afzrv/4rJ598Mt/+9reb7f+d73yHiRMnMnnyZC68sOgeKKkSY/FCkiRJkjrRrOWzGNh7IAN7DyQidi/PWr7Xg9fa7aWXXuIzn/kMS5cupaKignvvvZePf/zjfPWrX2Xx4sVMmjSJm266aa/9li5dys0338yTTz7Jn//8Z7797W9z/PHHc9555/G1r32N6upqJkyYAEBtbS2/+93v+Od//udmY9xyyy08++yzLF68mNtvvz3nuUj7YvFCebFj0yb++v3vs6OurtChSJIkSUVlVd0qBvQa0KxtQK8BrKpblfPY48ePp7KyEoDjjjuO5cuXU1tby8knnwzAZZddxu9///u99nvyySf5yEc+wvDhwwEYOnRoq8e44IILWmyfPHkyF198MT/72c8oK/OOBOpcFi+UF5uefJJNcx5n0xNPFDoUSZIkqaiMGjCKuu3N/8hXt72OUQNG5Tx2nz59di/37NmT2traFvu9/vrrVFZWUllZye23305KiYho0zH69+/fYvtDDz3EZz7zGRYuXMhxxx3nPTHUqbp9eWz27Nl7tU2YMIGJEyfS2NjII488stf2ww8/nHe96100NDQwZ86cvbZPnDiRCRMmUFdXx9y5c/faPnnyZMaOHUttbS1PPfXUXtunTJnCqFGjWLt2LU8//fRe26dOncrIkSNZvXo18+fP32v78ccfz7Bhw1i1ahWLFi3624bq1QCcWFtLRUUFr776KosXL95r/+nTpzNgwACWL1/e4p2CTzvtNMrLy3nxxRdZtmzZXtvPOussysrKeP7551m+fPle288991wAFi9ezJavf4OyDRvo0dDA9ooKam//PsMffoSyg0by5owZrFrVvJpcXl7OaaedBsD8+fNZvXp1s+39+/fnlFNOAeDpp59m7dq1zbYPHjyYk046CYDf//73bNiwodn2YcOGcfzxxwOZavLmzZubbR85ciRTp04FYM6cOTQ0NDTbPmrUKKZMmQLAI488slcCHjt2LJMnTwaK+3tPkiRJxWPGhBncVn0bkDnjom57HZu2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JvDXf/3X7cqnT5/OmjVruPPOO3nzzTcpKChoV2f9+vV85zvfIRQKMXbsWC688MJW58vKyprv9fWvf50hQ4YwcuRIcnJyqKqq6lF7JP2o80JEEsbdV7r7eHfPdvfR7r4gKN/r7pcFnz929xnB6xx3X57cqEVERERiUzByNPU1x1uV1dccp2Dk6Lg9Izs7u/lzKBSisbGx0/q//OUvKS4upri4mL179+Lu3doRLj8/P2r52WefzebNm5k+fTp333039957L//xH//R/IxVq1YBne86d7INGRkZrdqTkZHRZXsk/anzQkREREREpA+dM2ceJ2pqqDt+DHen7vgxTtTUcM6ceQmNIysri4aGBgBuu+02KioqqKioYOzYsVx88cU89NBDzXUPHz7c7prO7N27l7y8PL73ve/x4x//mC1btvD1r3+9+RllZWXMnj2b3/3ud4TDYfbt28fatWv7pqGSltR5ISIiIiIi0odOOXMys759HblDhnL00BfkDhnKrG9fF7f1LrpryZIlFBUVRV2w85577uHw4cNMmzaNGTNmNHcsdHZNS++++y6lpaUUFxezfPly7rnnnnZ1rrrqKs466yymT5/OD3/4Qy644IL4NEwGBDu5Cm0qKikp8U2bNiU7jNTxm8sj7ze8nNw4JG2Y2WZ3L0l2HPGgfBGFcobEmXJGmlPOkDhL95zx/vvvM2XKlCRFJG3p59H/dZUzNPJCRERERERERFKaOi9EREREREREJKWp80JEREREREREUpo6L0REREREREQkpanzQkRERERERERSmjovRERERERERCSlqfNCRERERESkH3rwwQeZMmUKw4YNY8WKFTHfr6qqiocffrjTOoMHD475OSK9kZnsAERERERERNJd/SfV1Gz5nMZDdWQOzyFv5iiyTxsa0z0ffvhhVq9ezcSJE+MS48nOi1tvvbXduXA4TCgUistzRHpDIy9ERERERET6UP0n1VSX76HpeAOhgkE0HW+gunwP9Z9U9/qet9xyCx9//DFlZWXcf//93H777QBcf/31LF26lFmzZnHGGWfw3HPPRb1+//79XHXVVcyYMYMZM2awYcMG7rrrLnbt2kVxcTF33HEH69atY+7cuXz3u99l+vTpra7ft28fs2fPpri4mGnTpvHmm2/2ui0i3aGRFyIiIiIiIn2oZsvnZORkkpEb+fPLgvea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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x1080 with 16 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"test_policies = np.random.binomial(1, .8, size=(16, n_periods, n_treatments))\\n\",\n    \"test_policies[15, :] = 0\\n\",\n    \"\\n\",\n    \"plt.figure(figsize=(15, 15))\\n\",\n    \"for t, tau in enumerate(test_policies):\\n\",\n    \"    true_policy_effect = dgp.static_policy_effect(tau, mc_samples=1000)\\n\",\n    \"    policy_effect_hat, policy_ints, _ = est.policy_effect(tau, X[:, hetero_inds], groups)\\n\",\n    \"    plt.subplot(4, 4, t + 1)\\n\",\n    \"    plt.errorbar([-.08], [static_policy_effect(tau, est_direct)], fmt='o', alpha=.6, label='dyn-direct')\\n\",\n    \"    plt.errorbar([-.04], [policy_effect_hat], yerr=([policy_ints[1] - policy_effect_hat],\\n\",\n    \"                                                  [policy_effect_hat - policy_ints[0]]), fmt='o', label='dyn-dml')\\n\",\n    \"    plt.errorbar([-.02], [static_policy_effect(tau, est_lr)], fmt='o', alpha=.6, label='no-ctrls')\\n\",\n    \"    plt.errorbar([0], [true_policy_effect], fmt='*', alpha=.6, label='true')\\n\",\n    \"    plt.hlines([true_policy_effect], - .1, .10, linestyles='--', alpha=.4)\\n\",\n    \"    plt.errorbar([.02], [static_policy_effect(tau, est_lr_x0)], fmt='o', alpha=.6, label='init-ctrls')\\n\",\n    \"    plt.errorbar([.04], [static_policy_effect(tau, est_dml_x0)], fmt='o', alpha=.6, label='init-ctrls-dml')\\n\",\n    \"    plt.errorbar([.06], [static_policy_effect(tau, est_lr_xfinal)], fmt='o', alpha=.6, label='fin-ctrls')\\n\",\n    \"    plt.errorbar([.08], [static_policy_effect(tau, est_dml_xfinal)], fmt='o', alpha=.6, label='fin-ctrls-dml')\\n\",\n    \"    plt.title(\\\"{}\\\".format(tau.flatten()))\\n\",\n    \"plt.legend()\\n\",\n    \"plt.tight_layout()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 3.2 Adaptive Policy\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 168,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.6225670514435359\"\n      ]\n     },\n     \"execution_count\": 168,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Optimal Contextual Binary Treatment Policy\\n\",\n    \"def adaptive_policy(t, x, period):\\n\",\n    \"    return 1*(dgp.hetero_effect_fn(n_periods - 1 - period, x) > 0)\\n\",\n    \"dgp.adaptive_policy_effect(adaptive_policy)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 169,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(0.8070629317620176,\\n\",\n       \" (0.6213266303331364, 0.9927992331908988),\\n\",\n       \" 0.09476516042842899)\"\n      ]\n     },\n     \"execution_count\": 169,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"est.adaptive_policy_effect(X, groups, adaptive_policy)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4. Estimation Diagnostics\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 131,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"import matplotlib.pyplot as plt\\n\",\n    \"plt.plot(est.param_stderr)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 132,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.imshow(est._M)\\n\",\n    \"plt.colorbar()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 133,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 432x288 with 2 Axes>\"\n      ]\n     },\n     \"metadata\": {\n      \"needs_background\": \"light\"\n     },\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.imshow(est._Sigma)\\n\",\n    \"plt.colorbar()\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.5\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dynamic_dml/panel_dynamic_dml.py",
    "content": "import matplotlib.pyplot as plt\r\nimport numpy as np\r\nfrom sklearn.base import clone\r\nfrom sklearn.linear_model import LinearRegression, LassoCV\r\nfrom sklearn.model_selection import GroupKFold\r\nimport scipy\r\n\r\n\r\nclass DynamicPanelDML:\r\n\r\n    def __init__(self, model_t=LassoCV(cv=3),\r\n                 model_y=LassoCV(cv=3),\r\n                 n_cfit_splits=3):\r\n        model_t_copy = clone(model_t, safe=False)\r\n        model_y_copy = clone(model_y, safe=False)\r\n        self._model_t_gen = lambda: clone(model_t_copy, safe=False)\r\n        self._model_y_gen = lambda: clone(model_y_copy, safe=False)\r\n        self._n_cfit_splits = n_cfit_splits\r\n        return\r\n\r\n    def fit_nuisances(self, Y, T, X, groups, n_periods):\r\n        ''' Fits all the nuisance models and calculates all residuals for each period and information set\r\n        '''\r\n        resT = {}\r\n        resY = {}\r\n        for kappa in np.arange(n_periods):\r\n            resT[kappa] = {}\r\n            resY[kappa] = np.zeros(self._n_train_units)\r\n            for tau in np.arange(kappa, n_periods):\r\n                resT[kappa][tau] = np.zeros(\r\n                    (self._n_train_units,) + T.shape[1:])\r\n\r\n        for train, test in GroupKFold(self._n_cfit_splits).split(X, Y, groups):\r\n            inds_train = train[np.arange(train.shape[0]) % n_periods == 0]\r\n            inds_test = test[np.arange(test.shape[0]) % n_periods == 0]\r\n            for kappa in np.arange(n_periods):\r\n                for tau in np.arange(kappa, n_periods):\r\n                    resT[kappa][tau][inds_test // n_periods] = T[inds_test + tau]\\\r\n                        - self._model_t_gen().fit(X[inds_train + kappa],\r\n                                                  T[inds_train + tau]).predict(X[inds_test + kappa])\r\n                    resY[kappa][inds_test // n_periods] = Y[inds_test + n_periods - 1]\\\r\n                        - self._model_y_gen().fit(X[inds_train + kappa],\r\n                                                  Y[inds_train + n_periods - 1]).predict(X[inds_test + kappa])\r\n        return resT, resY\r\n\r\n    def _fit_cov_matrix(self, resT, resY, models):\r\n        ''' Calculates the covariance (n_periods*n_treatments) x (n_periods*n_treatments) matrix for all the parameters\r\n        '''\r\n        n_periods = len(models)\r\n        M = np.zeros((n_periods * self._n_treatments,\r\n                      n_periods * self._n_treatments))\r\n        Sigma = np.zeros((n_periods * self._n_treatments,\r\n                          n_periods * self._n_treatments))\r\n        for kappa in np.arange(n_periods):\r\n            # Calculating the (kappa, kappa) block entry (of size n_treatments x n_treatments) of matrix Sigma\r\n            period = n_periods - 1 - kappa\r\n            res_epsilon = (resY[period]\r\n                           - np.sum([models[tau].predict(resT[period][n_periods - 1 - tau].reshape(-1, self._n_treatments))\r\n                                     for tau in np.arange(kappa + 1)], axis=0)).reshape(-1, 1, 1)\r\n\r\n            cur_resT = resT[period][period]\r\n            cov_cur_resT = np.matmul(cur_resT.reshape(-1, self._n_treatments, 1),\r\n                                     cur_resT.reshape(-1, 1, self._n_treatments))\r\n            sigma_kappa = np.mean((res_epsilon**2) * cov_cur_resT, axis=0)\r\n            Sigma[kappa * self._n_treatments:(kappa + 1) * self._n_treatments,\r\n                  kappa * self._n_treatments:(kappa + 1) * self._n_treatments] = sigma_kappa\r\n\r\n            for tau in np.arange(kappa + 1):\r\n                # Calculating the (kappa, tau) block entry (of size n_treatments x n_treatments) of matrix M\r\n                m_kappa_tau = np.mean(\r\n                    np.matmul(resT[period][n_periods - 1 - tau].reshape(-1, self._n_treatments, 1),\r\n                              cur_resT.reshape(-1, 1, self._n_treatments)),\r\n                    axis=0)\r\n                M[kappa * self._n_treatments:(kappa + 1) * self._n_treatments,\r\n                  tau * self._n_treatments:(tau + 1) * self._n_treatments] = m_kappa_tau\r\n        self._cov = np.linalg.inv(M) @ Sigma @ np.linalg.inv(M).T\r\n        self._M = M\r\n        self._Sigma = Sigma\r\n        return self\r\n\r\n    def fit_final(self, Y, T, X, groups, resT, resY, n_periods):\r\n        ''' Fits the final lag effect models\r\n        '''\r\n        models = {}\r\n        for kappa in np.arange(n_periods):\r\n            period = n_periods - 1 - kappa\r\n            Y_cal = resY[period].copy()\r\n            if kappa > 0:\r\n                Y_cal -= np.sum([models[tau].predict(resT[period][n_periods - 1 - tau].reshape(-1, self._n_treatments))\r\n                                 for tau in np.arange(kappa)],\r\n                                axis=0)\r\n            models[kappa] = LinearRegression(fit_intercept=False).fit(\r\n                resT[period][period].reshape(-1, self._n_treatments), Y_cal)\r\n\r\n        self._fit_cov_matrix(resT, resY, models)\r\n        self.final_models = models\r\n        return self\r\n\r\n    def fit(self, Y, T, X, groups):\r\n        u_periods = np.unique(np.bincount(groups.astype(int)))\r\n        self._n_train_units = len(np.unique(groups))\r\n        self._n_treatments = 1 if len(T.shape[1:]) == 0 else T.shape[1]\r\n        if len(u_periods) > 1:\r\n            raise AttributeError(\r\n                \"Imbalanced panel. Method currently expects only panels with equal number of periods. Pad your data\")\r\n        self._n_train_periods = u_periods[0]\r\n        resT, resY = self.fit_nuisances(Y, T, X, groups, self._n_train_periods)\r\n        self.fit_final(Y, T, X, groups, resT, resY, self._n_train_periods)\r\n        return self\r\n\r\n    @property\r\n    def param(self):\r\n        return np.array([model.coef_ for key, model in self.final_models.items()]).flatten()\r\n\r\n    @property\r\n    def param_cov(self):\r\n        return self._cov\r\n\r\n    @property\r\n    def param_stderr(self):\r\n        return np.sqrt(np.diag(self._cov) / self._n_train_units)\r\n\r\n    def param_interval(self, alpha=.05):\r\n        return np.array([(scipy.stats.norm.ppf(alpha / 2, loc=param, scale=std),\r\n                          scipy.stats.norm.ppf(1 - alpha / 2, loc=param, scale=std)) if std > 0 else (param, param)\r\n                         for param, std in zip(self.param, self.param_stderr)])\r\n\r\n    def policy_effect(self, tau):\r\n        return np.dot(self.param, tau[::-1].flatten())\r\n\r\n    def policy_effect_var(self, tau):\r\n        return (tau[::-1].flatten().reshape(1, -1) @ self.param_cov @ tau[::-1].flatten().reshape(-1, 1))[0, 0]\r\n\r\n    def policy_effect_stderr(self, tau):\r\n        return np.sqrt(self.policy_effect_var(tau) / self._n_train_units)\r\n\r\n    def policy_effect_interval(self, tau, alpha=0.05):\r\n        param = self.policy_effect(tau)\r\n        std = self.policy_effect_stderr(tau)\r\n        if std == 0:\r\n            return (param, param)\r\n        return (scipy.stats.norm.ppf(alpha / 2, loc=param, scale=std),\r\n                scipy.stats.norm.ppf(1 - alpha / 2, loc=param, scale=std))\r\n\r\n    def adaptive_policy_effect(self, X, groups, policy_gen, alpha=.05):\r\n        \"\"\" Assumes that the policy is adaptive only on exogenous states that\r\n        are not affected by the treatmnet.\r\n        \"\"\"\r\n        u_periods = np.unique(np.bincount(groups.astype(int)))\r\n        if len(u_periods) > 1 or u_periods[0] != self._n_train_periods:\r\n            raise AttributeError(\"Invalid period lengths.\")\r\n        n_periods = u_periods[0]\r\n\r\n        tau = np.zeros(\r\n            (X.shape[0] // n_periods, n_periods, self._n_treatments))\r\n        for period in range(n_periods):\r\n            inds = (np.arange(X.shape[0]) % n_periods == period)\r\n            if period == 0:\r\n                tau_pre = np.zeros((len(inds), self._n_treatments))\r\n            else:\r\n                tau_pre = tau[:, period - 1, :]\r\n            tau[:, period, :] = np.array([policy_gen(t_pre, x, period)\r\n                                          for t_pre, x in zip(tau_pre, X[inds])])\r\n        mean_tau = np.mean(tau, axis=0)\r\n        param = self.policy_effect(mean_tau)\r\n        std = self.policy_effect_stderr(mean_tau)\r\n        if std == 0:\r\n            return param, (param, param)\r\n        return param, (scipy.stats.norm.ppf(alpha / 2, loc=param, scale=std),\r\n                       scipy.stats.norm.ppf(1 - alpha / 2, loc=param, scale=std))\r\n"
  },
  {
    "path": "prototypes/dynamic_dml/postprocess_panel.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"from dynamic_panel_dgp import DynamicPanelDGP\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import scipy \\n\",\n    \"from coverage_panel import add_vlines\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import os\\n\",\n    \"import joblib\\n\",\n    \"n_exps = 10\\n\",\n    \"dirname = os.path.join('results', 'constant')\\n\",\n    \"param_str = (\\\"n_exps_{}_n_units_500_n_periods_3_n_t_2_n_x_450_s_x_2\\\"\\n\",\n    \"              \\\"_s_t_2_sigma_x_1_sigma_t_1_sigma_y_1_conf_str_1_gamma_0.2\\\").format(n_exps)\\n\",\n    \"results = joblib.load(os.path.join(dirname, \\\"results_{}.jbl\\\".format(param_str)))\\n\",\n    \"dgp = joblib.load(os.path.join(dirname, \\\"dgp_obj_{}.jbl\\\".format(param_str)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"n_periods = dgp.n_periods\\n\",\n    \"n_treatments = dgp.n_treatments\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"results = np.array(results)\\n\",\n    \"points = results[:, 0]\\n\",\n    \"lowers = results[:, 1]\\n\",\n    \"uppers = results[:, 2]\\n\",\n    \"stderrs = results[:, 3]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nAAAAAMB5/z+N90I4j7TBvAAAAABJRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"true_effect_params = dgp.true_effect.flatten()\\n\",\n    \"\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.violinplot(points, positions=inds, showmeans=True)\\n\",\n    \"plt.scatter(inds, true_effect_params, marker='o',\\n\",\n    \"            color='#D43F3A', s=10, zorder=3, alpha=.5)\\n\",\n    \"add_vlines(n_periods, n_treatments)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nnm02AAAAAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.violinplot(stderrs, positions=inds, showmeans=True)\\n\",\n    \"true_std = np.std(points, axis=0)\\n\",\n    \"true_std_error = (true_std * (np.sqrt((n_exps-1)/scipy.stats.chi2.ppf((1-.05/2), n_exps-1)) - 1),\\n\",\n    \"                  true_std * (1 - np.sqrt((n_exps-1)/scipy.stats.chi2.ppf((.05/2), n_exps-1))))\\n\",\n    \"plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\\n\",\n    \"            color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\\n\",\n    \"add_vlines(n_periods, n_treatments)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"coverage = np.mean((true_effect_params.reshape(1, -1) <= uppers) & (\\n\",\n    \"    true_effect_params.reshape(1, -1) >= lowers), axis=0)\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.scatter(inds, coverage)\\n\",\n    \"add_vlines(n_periods, n_treatments)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.5\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/dynamic_dml/postprocess_panel_hetero.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"%load_ext autoreload\\n\",\n    \"%autoreload 2\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import numpy as np\\n\",\n    \"from dynamic_panel_dgp import DynamicPanelDGP\\n\",\n    \"import matplotlib.pyplot as plt\\n\",\n    \"import scipy \\n\",\n    \"from coverage_panel_hetero import add_vlines\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"import joblib\\n\",\n    \"import os\\n\",\n    \"n_exps = 10\\n\",\n    \"dirname = os.path.join('results', 'hetero')\\n\",\n    \"param_str = (\\\"n_exps_{}_n_units_500_n_periods_3_n_t_2_n_x_450_s_x_2\\\"\\n\",\n    \"             \\\"_s_t_2_sigma_x_1_sigma_t_1_sigma_y_1_conf_str_1_gamma_0.2_het_str_1\\\").format(n_exps)\\n\",\n    \"results = joblib.load(os.path.join(dirname, \\\"hetero_results_{}.jbl\\\".format(param_str)))\\n\",\n    \"dgp = joblib.load(os.path.join(dirname, \\\"hetero_dgp_obj_{}.jbl\\\".format(param_str)))\\n\",\n    \"hetero_inds = joblib.load(os.path.join(dirname, \\\"hetero_hetero_inds_{}.jbl\\\".format(param_str)))\\n\",\n    \"test_policies = joblib.load(os.path.join(dirname, \\\"hetero_test_policies_{}.jbl\\\".format(param_str)))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"n_periods = dgp.n_periods\\n\",\n    \"n_treatments = dgp.n_treatments\\n\",\n    \"true_hetero_inds = dgp.hetero_inds\\n\",\n    \"n_x = dgp.n_x\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"param_results = np.array([r[0] for r in results])\\n\",\n    \"points = param_results[:, 0]\\n\",\n    \"lowers = param_results[:, 1]\\n\",\n    \"uppers = param_results[:, 2]\\n\",\n    \"stderrs = param_results[:, 3]\\n\",\n    \"policy_results = np.array([r[1] for r in results])\\n\",\n    \"policy_effect_hat = policy_results[:, 0]\\n\",\n    \"policy_effect_lowers = policy_results[:, 1]\\n\",\n    \"policy_effect_uppers = policy_results[:, 2]\\n\",\n    \"policy_effect_stderrs = policy_results[:, 3]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 42,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"true_effect_inds = []\\n\",\n    \"for t in range(n_treatments):\\n\",\n    \"    true_effect_inds += [t * (1 + n_x)] + \\\\\\n\",\n    \"        list(t * (1 + n_x) + 1 + hetero_inds)\\n\",\n    \"true_effect_params = dgp.true_hetero_effect[:, true_effect_inds].flatten()\\n\",\n    \"\\n\",\n    \"true_policy_effect = np.array([dgp.static_policy_effect(\\n\",\n    \"    tau, mc_samples=1000) for tau in test_policies])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 43,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.violinplot(points, positions=inds, showmeans=True)\\n\",\n    \"plt.scatter(inds, true_effect_params, marker='o',\\n\",\n    \"            color='#D43F3A', s=10, zorder=3, alpha=.5)\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 44,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nRK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.violinplot(stderrs, positions=inds, showmeans=True)\\n\",\n    \"true_std = np.std(points, axis=0)\\n\",\n    \"true_std_error = (true_std * (np.sqrt((n_exps-1)/scipy.stats.chi2.ppf((1-.05/2), n_exps-1)) - 1),\\n\",\n    \"                  true_std * (1 - np.sqrt((n_exps-1)/scipy.stats.chi2.ppf((.05/2), n_exps-1))))\\n\",\n    \"plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\\n\",\n    \"            color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"coverage = np.mean((true_effect_params.reshape(1, -1) <= uppers) & (\\n\",\n    \"    true_effect_params.reshape(1, -1) >= lowers), axis=0)\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(points.shape[1])\\n\",\n    \"plt.scatter(inds, coverage)\\n\",\n    \"add_vlines(n_periods, n_treatments, hetero_inds)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nBwAAAAAN7v8HhWw60WwXfY8AAAAASUVORK5CYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(policy_effect_hat.shape[1])\\n\",\n    \"plt.violinplot(policy_effect_hat, positions=inds, showmeans=True)\\n\",\n    \"plt.scatter(inds, true_policy_effect, marker='o',\\n\",\n    \"            color='#D43F3A', s=10, zorder=3, alpha=.5)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"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\\nYII=\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(policy_effect_hat.shape[1])\\n\",\n    \"plt.violinplot(policy_effect_stderrs, positions=inds, showmeans=True)\\n\",\n    \"true_std = np.std(policy_effect_hat, axis=0)\\n\",\n    \"true_std_error = (true_std * (np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((1 - .05 / 2), n_exps - 1)) - 1),\\n\",\n    \"                  true_std * (1 - np.sqrt((n_exps - 1) / scipy.stats.chi2.ppf((.05 / 2), n_exps - 1))))\\n\",\n    \"plt.errorbar(inds, true_std, yerr=true_std_error, fmt='o',\\n\",\n    \"             color='#D43F3A', elinewidth=2, alpha=.9, capthick=.5, uplims=True, lolims=True)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"outputs\": [\n    {\n     \"data\": {\n      \"image/png\": \"iVBORw0KGgoAAAANSUhEUgAAA3QAAAEyCAYAAACyDpLjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAFMZJREFUeJzt3X+o3XV+5/HXexNlMlOGBAyyJmLs\\nIo5BpnW4pE4HyrJuUaelducvXaaCq4hQ7bQUi/rP/rUgWMq4rIwExy4yw/iHdQYpQ1OwBSnsOt5M\\noo7GQNDtGGOZW6hjaVM09r1/3KNcr1fvUY895+N9POBCvt/v5+S+zzdfcvLM+XGruwMAAMB4/t28\\nBwAAAOCjEXQAAACDEnQAAACDEnQAAACDEnQAAACDEnQAAACDEnQAAACDEnQAAACDEnQAAACD2j7v\\nATZyzjnn9L59++Y9BgAAwFwcPnz477t792brFjLo9u3bl+Xl5XmPAQAAMBdV9bfTrPOSSwAAgEEJ\\nOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAA\\ngEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJ\\nOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEEJOgAAgEFtGnRV\\n9WBV/ayqfvI+x6uq/mdVnaiqZ6rqS2uOXVVVxyfH7pjl4AAAAFvd9inW/O8k/yvJQ+9z/OokF02+\\nfiXJt5L8SlVtS3Jfkl9PcjLJU1X1WHc//3GH/rf2gyOv5J5Dx3PqtdM5b+eO3H7lxfnty/bMeywA\\ntiiPSyw61+jsOaez9Wk6n5sGXXc/UVX7PmDJNUke6u5O8n+ramdV/fsk+5Kc6O4Xk6SqHp6sHSro\\nfnDkldz56LM5/eZbSZJXXjudOx99NkmG/UMHYFwel1h0rtHZc05n69N2PmfxHro9SV5es31ysu/9\\n9g/lnkPH3/nDftvpN9/KPYeOz2kiALYyj0ssOtfo7Dmns/VpO5+zCLraYF9/wP6Nf5Oqm6tquaqW\\nV1ZWZjDWbJx67fSH2g8AnySPSyw61+jsOaez9Wk7n7MIupNJzl+zvTfJqQ/Yv6HuPtjdS929tHv3\\n7hmMNRvn7dzxofYDwCfJ4xKLzjU6e87pbH3azucsgu6xJNdPPu3y8iQ/7+5XkzyV5KKqurCqzk5y\\n7WTtUG6/8uLsOGvbu/btOGtbbr/y4jlNBMBW5nGJRecanT3ndLY+bedz0w9FqarvJfmPSc6pqpNJ\\n/nuSs5Kku+9P8sMkX01yIsk/J7lhcuxMVd2a5FCSbUke7O7nPoH78Il6+42Rn5ZPwQFgbB6XWHSu\\n0dlzTmfr03Y+a/XDKRfL0tJSLy8vz3sMAACAuaiqw929tNm6WbzkEgAAgDkQdAAAAIMSdAAAAIMS\\ndAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAA\\nAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMS\\ndAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAAAIMSdAAA\\nAIOaKuiq6qqqOl5VJ6rqjg2O76qq71fVM1X1o6q6dM2xP6iq56rqJ1X1var6zCzvAAAAwFa1adBV\\n1bYk9yW5Osn+JNdV1f51y+5KcrS7v5jk+iT3Tm67J8nvJVnq7kuTbEty7ezGBwAA2LqmeYbuQJIT\\n3f1id7+R5OEk16xbsz/J40nS3S8k2VdV506ObU+yo6q2J/lsklMzmRwAAGCLmybo9iR5ec32ycm+\\ntZ5O8rUkqaoDSS5Isre7X0nyx0l+muTVJD/v7r/c6JtU1c1VtVxVyysrKx/uXgAAAGxB0wRdbbCv\\n123fnWRXVR1NcluSI0nOVNWurD6bd2GS85J8rqq+vtE36e6D3b3U3Uu7d++e+g4AAABsVdunWHMy\\nyflrtvdm3csmu/v1JDckSVVVkpcmX1cmeam7VybHHk3yq0m+87EnBwAA2OKmeYbuqSQXVdWFVXV2\\nVj/U5LG1C6pq5+RYktyU5IlJ5P00yeVV9dlJ6F2R5NjsxgcAANi6Nn2GrrvPVNWtSQ5l9VMqH+zu\\n56rqlsnx+5NckuShqnoryfNJbpwce7KqHkny4yRnsvpSzIOfyD0BAADYYqp7/dvh5m9paamXl5fn\\nPQYAAMBcVNXh7l7abN1UP1gcAACAxSPoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAA\\nBiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXo\\nAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAA\\nBiXoAAAABiXoAAAABiXoAAAABiXoAAAABiXoAAAABjVV0FXVVVV1vKpOVNUdGxzfVVXfr6pnqupH\\nVXXpmmM7q+qRqnqhqo5V1ZdneQcAAAC2qk2Drqq2JbkvydVJ9ie5rqr2r1t2V5Kj3f3FJNcnuXfN\\nsXuT/EV3fyHJLyU5NovBAQAAtrppnqE7kOREd7/Y3W8keTjJNevW7E/yeJJ09wtJ9lXVuVX1+SS/\\nluTbk2NvdPdrM5seAABgC5sm6PYkeXnN9snJvrWeTvK1JKmqA0kuSLI3yS8mWUnyp1V1pKoeqKrP\\nfeypAQAAmCroaoN9vW777iS7qupoktuSHElyJsn2JF9K8q3uvizJPyV5z3vwkqSqbq6q5apaXllZ\\nmXZ+AACALWuaoDuZ5Pw123uTnFq7oLtf7+4buvuXs/oeut1JXprc9mR3PzlZ+khWA+89uvtgdy91\\n99Lu3bs/5N0AAADYeqYJuqeSXFRVF1bV2UmuTfLY2gWTT7I8e7J5U5InJpH3d0lerqqLJ8euSPL8\\njGYHAADY0rZvtqC7z1TVrUkOJdmW5MHufq6qbpkcvz/JJUkeqqq3shpsN675LW5L8t1J8L2Y5IYZ\\n3wcAAIAtqbrXvx1u/paWlnp5eXneYwAAAMxFVR3u7qXN1k31g8UBAABYPIIOAABgUIIOAABgUIIO\\nAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABg\\nUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIO\\nAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABgUIIOAABg\\nUFMFXVVdVVXHq+pEVd2xwfFdVfX9qnqmqn5UVZeuO76tqo5U1Z/PanAAAICtbtOgq6ptSe5LcnWS\\n/Umuq6r965bdleRod38xyfVJ7l13/BtJjn38cQEAAHjbNM/QHUhyortf7O43kjyc5Jp1a/YneTxJ\\nuvuFJPuq6twkqaq9SX4jyQMzmxoAAICpgm5PkpfXbJ+c7Fvr6SRfS5KqOpDkgiR7J8e+meSPkvzr\\nB32Tqrq5qparanllZWWKsQAAALa2aYKuNtjX67bvTrKrqo4muS3JkSRnquo3k/ysuw9v9k26+2B3\\nL3X30u7du6cYCwAAYGvbPsWak0nOX7O9N8mptQu6+/UkNyRJVVWSlyZf1yb5rar6apLPJPl8VX2n\\nu78+g9kBAAC2tGmeoXsqyUVVdWFVnZ3VSHts7YKq2jk5liQ3JXmiu1/v7ju7e29375vc7q/EHAAA\\nwGxs+gxdd5+pqluTHEqyLcmD3f1cVd0yOX5/kkuSPFRVbyV5PsmNn+DMAAAAJKnu9W+Hm7+lpaVe\\nXl6e9xgAAABzUVWHu3tps3VT/WBxAAAAFo+gAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSg\\nAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAA\\nGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSg\\nAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGJSgAwAAGNRUQVdVV1XV8ao6UVV3bHB8V1V9v6qe\\nqaofVdWlk/3nV9VfV9Wxqnquqr4x6zsAAACwVW0adFW1Lcl9Sa5Osj/JdVW1f92yu5Ic7e4vJrk+\\nyb2T/WeS/GF3X5Lk8iS/u8FtAQAA+AimeYbuQJIT3f1id7+R5OEk16xbsz/J40nS3S8k2VdV53b3\\nq93948n+f0xyLMmemU0PAACwhU0TdHuSvLxm+2TeG2VPJ/laklTVgSQXJNm7dkFV7UtyWZInP9qo\\nAAAArDVN0NUG+3rd9t1JdlXV0SS3JTmS1Zdbrv4GVb+Q5M+S/H53v77hN6m6uaqWq2p5ZWVlquEB\\nAAC2su1TrDmZ5Pw123uTnFq7YBJpNyRJVVWSlyZfqaqzshpz3+3uR9/vm3T3wSQHk2RpaWl9MAIA\\nALDONM/QPZXkoqq6sKrOTnJtksfWLqiqnZNjSXJTkie6+/VJ3H07ybHu/pNZDg4AALDVbfoMXXef\\nqapbkxxKsi3Jg939XFXdMjl+f5JLkjxUVW8leT7JjZObfyXJ7yR5dvJyzCS5q7t/OOP7AQAAsOVM\\n85LLTALsh+v23b/m1/8nyUUb3O5vsvF78AAAAPiYpvrB4gAAACweQQcAADAoQQcAADAoQQcAADAo\\nQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcA\\nADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAo\\nQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADAoQQcAADCo7dMs\\nqqqrktybZFuSB7r77nXHdyV5MMl/SPIvSf5bd/9kmtuy9fzgyCu559DxnHrtdM7buSO3X3lxfvuy\\nPfMea2jO6Ww5n7PnnLLoXKPAqDYNuqraluS+JL+e5GSSp6rqse5+fs2yu5Ic7e7/UlVfmKy/Ysrb\\nsoX84MgrufPRZ3P6zbeSJK+8djp3Pvpsknjg/Iic09lyPmfPOWXRuUaBkU3zkssDSU5094vd/UaS\\nh5Ncs27N/iSPJ0l3v5BkX1WdO+Vt2ULuOXT8nQfMt51+863cc+j4nCYan3M6W87n7DmnLDrXKDCy\\naYJuT5KX12yfnOxb6+kkX0uSqjqQ5IIke6e8bSa3u7mqlqtqeWVlZbrpGc6p105/qP1szjmdLedz\\n9pxTFp1rFBjZNEFXG+zrddt3J9lVVUeT3JbkSJIzU952dWf3we5e6u6l3bt3TzEWIzpv544PtZ/N\\nOaez5XzOnnPKonONAiObJuhOJjl/zfbeJKfWLuju17v7hu7+5STXJ9md5KVpbsvWcvuVF2fHWdve\\ntW/HWdty+5UXz2mi8Tmns+V8zp5zyqJzjQIjm+ZTLp9KclFVXZjklSTXJvmvaxdU1c4k/zx5n9xN\\nSZ7o7teratPbsrW8/eZynyQ2O87pbDmfs+ecsuhco8DIqnvDV0C+e1HVV5N8M6s/euDB7v4fVXVL\\nknT3/VX15SQPJXkryfNJbuzuf3i/2272/ZaWlnp5efkj3iUAAICxVdXh7l7adN00QfdvTdABAABb\\n2bRBN8176AAAAFhAgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4A\\nAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQ\\ngg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4AAGBQgg4A\\nAGBQgg4AAGBQ1d3znuE9qmolyd/Oe44NnJPk7+c9BHwA1yiLzjXKonONsuhco1vHBd29e7NFCxl0\\ni6qqlrt7ad5zwPtxjbLoXKMsOtcoi841ynpecgkAADAoQQcAADAoQffhHJz3ALAJ1yiLzjXKonON\\nsuhco7yL99ABAAAMyjN0AAAAgxJ0AAAAgxJ0U6iqq6rqeFWdqKo75j0PrFVV51fVX1fVsap6rqq+\\nMe+ZYCNVta2qjlTVn897FlivqnZW1SNV9cLk79Mvz3smWKuq/mDyOP+TqvpeVX1m3jOxGATdJqpq\\nW5L7klydZH+S66pq/3yngnc5k+QPu/uSJJcn+V3XKAvqG0mOzXsIeB/3JvmL7v5Ckl+Ka5UFUlV7\\nkvxekqXuvjTJtiTXzncqFoWg29yBJCe6+8XufiPJw0mumfNM8I7ufrW7fzz59T9m9R8he+Y7Fbxb\\nVe1N8htJHpj3LLBeVX0+ya8l+XaSdPcb3f3afKeC99ieZEdVbU/y2SSn5jwPC0LQbW5PkpfXbJ+M\\nfyyzoKpqX5LLkjw530ngPb6Z5I+S/Ou8B4EN/GKSlSR/OnlZ8ANV9bl5DwVv6+5Xkvxxkp8meTXJ\\nz7v7L+c7FYtC0G2uNtjnZz2wcKrqF5L8WZLf7+7X5z0PvK2qfjPJz7r78LxngfexPcmXknyruy9L\\n8k9JvGeehVFVu7L6CrELk5yX5HNV9fX5TsWiEHSbO5nk/DXbe+MpbhZMVZ2V1Zj7bnc/Ou95YJ2v\\nJPmtqvp/WX3Z+n+qqu/MdyR4l5NJTnb3269ueCSrgQeL4j8neam7V7r7zSSPJvnVOc/EghB0m3sq\\nyUVVdWFVnZ3VN6A+NueZ4B1VVVl938ex7v6Tec8D63X3nd29t7v3ZfXv0L/qbv+zzMLo7r9L8nJV\\nXTzZdUWS5+c4Eqz30ySXV9VnJ4/7V8QH9zCxfd4DLLruPlNVtyY5lNVPFHqwu5+b81iw1leS/E6S\\nZ6vq6GTfXd39wznOBDCa25J8d/Kfty8muWHO88A7uvvJqnokyY+z+unWR5IcnO9ULIrq9nYwAACA\\nEXnJJQAAwKAEHQAAwKAEHQAAwKAEHQAAwKAEHQAAwKAEHQAAwKAEHQAAwKD+P3B+3TjBta2ZAAAA\\nAElFTkSuQmCC\\n\",\n      \"text/plain\": [\n       \"<Figure size 1080x360 with 1 Axes>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"policy_coverage = np.mean((true_policy_effect.reshape(1, -1) <= policy_effect_uppers) & (\\n\",\n    \"    true_policy_effect.reshape(1, -1) >= policy_effect_lowers), axis=0)\\n\",\n    \"plt.figure(figsize=(15, 5))\\n\",\n    \"inds = np.arange(policy_coverage.shape[0])\\n\",\n    \"plt.scatter(inds, policy_coverage)\\n\",\n    \"plt.show()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.6.5\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/orthogonal_forests/GRF_treatment_effects.R",
    "content": "# =====================================================================\n# For compatibility with Rscript.exe: \n# =====================================================================\nif(length(.libPaths()) == 1){\n  # We're in Rscript.exe\n  possible_lib_paths <- file.path(Sys.getenv(c('USERPROFILE','R_USER')),\n                                  \"R\",\"win-library\",\n                                  paste(R.version$major,\n                                        substr(R.version$minor,1,1),\n                                        sep='.'))\n  indx <- which(file.exists(possible_lib_paths))\n  print(possible_lib_paths)\n  if(length(indx)){\n    .libPaths(possible_lib_paths[indx[1]])\n  }\n  # CLEAN UP\n  rm(indx,possible_lib_paths)\n}\n# =====================================================================\nlibrary(\"optparse\")\nlibrary(\"grf\")\n\noption_list = list(\n  make_option(c(\"-p\", \"--prefix\"), type=\"character\", default=NULL, \n              help=\"File prefix\", metavar=\"character\"))\n\nopt_parser = OptionParser(option_list=option_list)\nopt = parse_args(opt_parser)\n\nfprefix <- opt$prefix\nsummary_file <- paste(fprefix, \"file_names.txt\", sep=\"\")\nresults_file <- paste(fprefix, \"results.csv\", sep=\"\")\nresults_data <- read.csv(file=results_file, header=TRUE, sep=\",\")\ncon <- file(summary_file, open='r')\nfnames <- readLines(con)\nclose(con)\nn_files <- strtoi(fnames[1])\n\nresults1 <- results_data[, grepl(\"x[0-9]|TE_hat\", colnames(results_data))]\nresults2 <- results_data[, grepl(\"x[0-9]|TE_hat\", colnames(results_data))]\nresults3 <- results_data[, grepl(\"x[0-9]|TE_hat\", colnames(results_data))]\nresults4 <- results_data[, grepl(\"x[0-9]|TE_hat\", colnames(results_data))]\n\nstart_time <- Sys.time()\nfor (t in c(2:(n_files+1))){\n  print(paste(\"Iteration\", t-2))\n  fname <- fnames[t]\n  data <- read.csv(file=fname, header=TRUE, sep=\",\")\n  test_data <- results_data[, grepl(\"W|x[0-9]\", colnames(results_data))]\n  te_col <- paste(\"TE_\",t-2,sep=\"\")\n  \n  ### Get treatment effects\n  ### Comparison #1\n  # Fit on W U x\n  input <- data[, grepl(\"(W|x)[0-9]\", colnames(data))]\n  forest <- causal_forest(input, data$Y, data$T)\n  tau_hat <- predict(forest, test_data)\n  results1[te_col] = tau_hat$predictions\n  \n  ### Comparison #2\n  # Fit on x\n  input <- data[colnames(data)[grepl(\"x[0-9]\", colnames(data))]]\n  test_data <- results_data[colnames(results_data)[grepl(\"x[0-9]\", colnames(results_data))]]\n  forest <- causal_forest(input, data$Y, data$T)\n  tau_hat <- predict(forest, test_data)\n  results2[te_col] = tau_hat$predictions\n  \n  ### Comparison #3\n  # Residualize on W, fit on x\n  forest <- causal_forest(input, data$res_Y_W, data$res_T_W)\n  tau_hat <- predict(forest, test_data)\n  results3[te_col] <- tau_hat$predictions\n  \n  ### Comparison #4\n  # Residualize on W U x, fit on x\n  forest <- causal_forest(input, data$res_Y_Wx, data$res_T_Wx)\n  tau_hat <- predict(forest, test_data)\n  results4[te_col] <- tau_hat$predictions\n  \n  end_time <- Sys.time()\n  print(end_time-start_time)\n  start_time <- Sys.time()\n}\n\nf_out_name1 <- paste(fprefix, \"GRF_Wx_results.csv\", sep=\"\")\nf_out_name2 <- paste(fprefix, \"GRF_x_results.csv\", sep=\"\")\nf_out_name3 <- paste(fprefix, \"GRF_res_W_results.csv\", sep=\"\")\nf_out_name4 <- paste(fprefix, \"GRF_res_Wx_results.csv\", sep=\"\")\n\nwrite.csv(results1, file=f_out_name1, row.names=FALSE)\nwrite.csv(results2, file=f_out_name2, row.names=FALSE)\nwrite.csv(results3, file=f_out_name3, row.names=FALSE)\nwrite.csv(results4, file=f_out_name4, row.names=FALSE)"
  },
  {
    "path": "prototypes/orthogonal_forests/README.md",
    "content": "# orthogonal_forests: Orthogonal Random Forests\n\nOrthogonal Random Forest (ORF) is an algorithm for heterogenous treatment effect (HTE)\nestimation. Orthogonal Random Forest combines orthogonalization,\na technique that effectively removes the confounding effect in two-stage estimation,\nwith generalized random forests ([Athey et al., 2017](https://arxiv.org/abs/1610.01271)), a flexible method for estimating treatment\neffect heterogeneity.\n\n### Contents\n\nThis repository offers an implementation of the orthogonal random forest, as well as Monte Carlo simulations that compare its performance with other methods in literature (and their variants). The code base is in prototype mode and is subject to frequent changes.\n\nFile contents:\n\n* `ortho_forest.py`: Orthogonal Random Forest (OrthoForest) algorithm and variants.\n* `hetero_dml.py`: Extensions of the double machine learning technique ([Chernozhukov et al., 2017](https://arxiv.org/abs/1608.00060)) for heterogenous treatment effect estimation. Used mainly for comparisons with the ORF algorithm.\n* `GRF_treatment_effects.R`: Application of the Generalized Random Forest (GRF) algorithm ([R Package](https://cran.r-project.org/web/packages/grf/index.html)) to the data generated by the Monte Carlo simulations. Used for comparisons with the ORF algorithm. \n* `monte_carlo.py`: Monte Carlo simulations script that takes in parameters for the data generating process (DGP) and the ORF method.\n* `comparison_plots.py`: Script that generates comparison plots from the files produced by the Monte Carlo script.\n* `seq_map.sh`: Script that sweeps over the different HTE estimation methods and DGP parameters and generates comparison plots. Compatible with Linux, but also executable from `Git Bash` on Windows and MacOS. Takes as input an output folder for the monte carlo script and a 0-3 index representing the treatment response function considered (0=piecewise linear, 1=piecewise constant, 2=piecewise polynomial, 3=2D treatment response).\n\n### Prerequisites\n\nThe ORF algorithm requires `Python 3.6` and `scikit-learn` > 0.19, `numpy` > 1.14. The monte carlo simulations and plotting scripts require `matplotlib`>2.1, `R 3.3` or above and CRAN packages `optparse, grf`. \n\n### Example Usage\n\n```Python\nfrom ortho_forest import OrthoForest\nfrom residualizer import dml\nfrom sklearn.linear_model import Lasso, LassoCV\n\nmodel_T = Lasso(alpha=0.04)\nmodel_Y = Lasso(alpha=0.04)\nest = OrthoForest(n_trees=100, min_leaf_size=5, residualizer=dml,\n            max_splits=20, subsample_ratio=0.1, bootstrap=False, \n            model_T=model_T, model_Y=model_Y, model_T_final=LassoCV(), model_Y_final=LassoCV())\nest.fit(W, x, T, Y) # high-dimensional controls, features, treatments, outcomes\nest.predict(x_test) # test features\n```\nFor more information on parameter choices for the ORF algorithm, see the *References* section. \n\n### Monte Carlo simulations\n\nTo generate comparison plots for the different methods considered, execute the following script on Linus or `Git Bash` on Windows/MacOS:\n```shell\n./seq_map.sh results/piecewise_linear 0\n```\n\n### References \n\nMiruna Oprescu, Vasilis Syrgkanis, Zhiwei Steven Wu. *Orthogonal Random Forest for Heterogenous Treatment Effects*. "
  },
  {
    "path": "prototypes/orthogonal_forests/causal_tree.py",
    "content": "\"\"\"Basic tree utilities and methods. \n\nClass `CausalTree` is the base estimator for the Orthogonal Random Forest, whereas\nclass `Node` represents the core unit of the `CausalTree` class. \n\"\"\"\n\nimport numpy as np\nfrom sklearn.model_selection import train_test_split \nfrom residualizer import dml, second_order_dml\n\nclass Node:\n\n    def __init__(self, sample_inds, estimate_inds):\n        self.feature = -1\n        self.threshold = np.inf\n        self.split_sample_inds = sample_inds\n        self.est_sample_inds = estimate_inds\n        self.estimate = 0\n        self.est_sample_inds_1 = None\n        self.est_sample_inds_2 = None\n        self.left = None\n        self.right = None\n\n\nclass CausalTree:\n\n    def __init__(self, W, x, T, Y, model_T, model_Y, min_leaf_size=20, max_splits=10, n_proposals=1000,\n                 residualizer=dml, balancedness_tol=.3):\n        # split the data into two parts: one for splitting, the other for estimation at the leafs\n        self.W = W\n        self.x = x\n        self.T = T\n        self.Y = Y\n\n        self.model_T = model_T\n        self.model_Y = model_Y\n        self.tree = None\n        self.min_leaf_size = min_leaf_size\n        self.max_splits = max_splits\n        self.balancedness_tol = balancedness_tol\n        self.n_proposals = n_proposals\n        self.residualizer = residualizer\n\n    def recursive_split(self, node, split_acc):\n\n        # If by splitting we have too small leaves or if we reached the maximum number of splits we stop\n        if node.split_sample_inds.shape[0] // 2 < self.min_leaf_size or split_acc >= self.max_splits:\n            return node\n        else:\n\n            # Create local sample set\n            node_x = self.x[node.split_sample_inds, :]\n            node_W = self.W[node.split_sample_inds, :]\n            node_T = self.T[node.split_sample_inds]\n            node_Y = self.Y[node.split_sample_inds]\n            node_x_estimate = self.x[node.est_sample_inds]\n\n            # compute the base estimate for the current node using double ml or second order double ml\n            node.estimate, res_T, res_Y = self.residualizer(node_W, node_T, node_Y,\n                                                            model_T=self.model_T, model_Y=self.model_Y)\n\n            # compute the influence functions here that are used for the criterion\n            grad = - (res_T ** 2).mean()\n            moment = (res_Y - node.estimate * res_T) * res_T\n            rho = - moment / grad  # TODO: Watch out for division by zero!\n\n            # generate random proposals of dimensions to split\n            dim_proposals = np.random.choice(\n                np.arange(node_x.shape[1]), size=self.n_proposals, replace=True)\n            proposals = []\n            for t, dim in enumerate(dim_proposals):\n                # Append to the proposals a tuple (dimension, threshold) where the threshold is randomly chosen\n                proposals.append((dim, np.random.choice(\n                    np.unique(node_x[:, dim].flatten()), size=1, replace=False)[0]))\n\n            # compute criterion for each proposal\n            split_scores = np.zeros(len(proposals))\n            for idx, (prop_feat, prop_thr) in enumerate(proposals):\n                # if splitting creates valid leafs in terms of mean leaf size\n                split_ratio_split = np.sum(\n                    node_x[:, prop_feat] < prop_thr) / node_x.shape[0]\n                min_leaf_size_split = min(\n                    split_ratio_split * node_x.shape[0], (1 - split_ratio_split) * node_x.shape[0])\n                split_ratio_estimate = np.sum(\n                    node_x_estimate[:, prop_feat] < prop_thr) / node_x_estimate.shape[0]\n                min_leaf_size_est = min(\n                    split_ratio_estimate * node_x_estimate.shape[0], (1 - split_ratio_estimate) * node_x_estimate.shape[0])\n                if min(min_leaf_size_split, min_leaf_size_est) > self.min_leaf_size and min(split_ratio_split, 1 - split_ratio_split) >= .5 - self.balancedness_tol and min(split_ratio_estimate, 1 - split_ratio_estimate) >= .5 - self.balancedness_tol:\n                    # Calculate criterion for split\n                    left_ind = node_x[:, prop_feat].flatten() < prop_thr\n                    right_ind = node_x[:, prop_feat].flatten() >= prop_thr\n                    rho_left = rho[left_ind]\n                    rho_right = rho[right_ind]\n                    left_score = - rho_left.mean() ** 2\n                    right_score = - rho_right.mean() ** 2\n                    split_scores[idx] = (right_score + left_score) / 2\n                else:\n                    # Else set criterion to infinity so that this split is not chosen\n                    split_scores[idx] = np.inf\n\n            # If no good split was found\n            if np.min(split_scores) == np.inf:\n                return node\n\n            # Find split that minimizes criterion\n            best_split_ind = np.argmin(split_scores)\n            best_split_feat, best_split_thr = proposals[best_split_ind]\n\n            # Set the split attributes at the node\n            node.feature = best_split_feat\n            node.threshold = best_split_thr\n\n            # Create child nodes with corresponding subsamples\n            left_split_sample_inds = node.split_sample_inds[node_x[:, best_split_feat].flatten(\n            ) < best_split_thr]\n            left_est_sample_inds = node.est_sample_inds[node_x_estimate[:, best_split_feat].flatten(\n            ) < best_split_thr]\n            node.left = Node(left_split_sample_inds, left_est_sample_inds)\n            right_split_sample_inds = node.split_sample_inds[node_x[:, best_split_feat].flatten(\n            ) >= best_split_thr]\n            right_est_sample_inds = node.est_sample_inds[node_x_estimate[:, best_split_feat].flatten(\n            ) >= best_split_thr]\n            node.right = Node(right_split_sample_inds, right_est_sample_inds)\n\n            # Recursively split children\n            self.recursive_split(node.left, split_acc + 1)\n            self.recursive_split(node.right, split_acc + 1)\n\n            # Return parent node\n            return node\n\n    def create_splits(self):\n        n = self.W.shape[0] // 2\n        root = Node(np.arange(n), np.arange(\n            n, self.W.shape[0]))\n        self.tree = self.recursive_split(root, 0)\n\n    def estimate_leafs(self, node):\n        if node.left or node.right:\n            self.estimate_leafs(node.left)\n            self.estimate_leafs(node.right)\n        else:\n            # estimate the local parameter at the leaf using the estimate data\n            node.estimate, _, _ = self.residualizer(self.W[node.est_sample_inds, :],\n                                                    self.T[node.est_sample_inds],\n                                                    self.Y[node.est_sample_inds],\n                                                    model_T=self.model_T, model_Y=self.model_Y)\n            node.est_sample_inds_1, node.est_sample_inds_2 = train_test_split(node.est_sample_inds, test_size=0.5)\n\n    def estimate(self):\n        self.estimate_leafs(self.tree)\n\n    def print_tree_rec(self, node):\n        if not node:\n            return\n        print(\"Node: ({}, {})\".format(node.feature, node.threshold))\n        print(\"Left Child\")\n        self.print_tree_rec(node.left)\n        print(\"Right Child\")\n        self.print_tree_rec(node.right)\n\n    def print_tree(self):\n        self.print_tree_rec(self.tree)\n\n    def find_tree_node(self, node, value):\n        if node.feature == -1:\n            return node\n        elif value[node.feature] < node.threshold:\n            return self.find_tree_node(node.left, value)\n        else:\n            return self.find_tree_node(node.right, value)\n\n    def find_split(self, value):\n        return self.find_tree_node(self.tree, value)\n"
  },
  {
    "path": "prototypes/orthogonal_forests/comparison_plots.py",
    "content": "import argparse\nimport copy\nimport itertools\nimport matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport os\nimport pandas as pd\nimport re\nimport sys\nimport time\nfrom joblib import Parallel, delayed\nfrom matplotlib import rcParams, cm, rc\nfrom sklearn.metrics import r2_score\n\nmatplotlib.rcParams['font.family'] = \"serif\"\n\n###################\n# Global settings #\n###################\n# Global plotting controls\n# Control for support size, can control for more\nplot_controls = [\"support\"]\nlabel_order = [\"ORF-CV\", \"ORF\", \"GRF-xW\", \"GRF-x\", \"GRF-Res\", \"HeteroDML-Lasso\", \"HeteroDML-RF\"]\ncorresponding_str = [\"OrthoForestCV\", \"OrthoForest\", \"GRF_Wx\", \"GRF_x\", \n                    \"GRF_res_Wx\", \"HeteroDML\", \"ForestHeteroDML\"]\n\n##################\n# File utilities #\n##################\ndef has_plot_controls(fname, control_combination):\n    for c in control_combination:\n        if \"_{0}_\".format(c) not in fname:\n            return False\n    return True\n\ndef get_file_key(fname):\n    if \"GRF\" in fname:\n        return \"_\" + \"_\".join(re.split(\"GRF_\", fname)[0].split(\"_\")[1:])\n    else:\n        return \"_\" + \"_\".join(re.split(\"results\", fname)[0].split(\"_\")[1:])\n\ndef sort_fnames(file_names):\n    sorted_file_names = []\n    label_indices = []\n    for i, s in enumerate(corresponding_str):\n        for f in file_names:\n            if ((f.split(\"_\")[0]==s and \"GRF\" not in f) \n                or (\"_{0}_\".format(s) in f and \"GRF\" in f)):\n                sorted_file_names.append(f)\n                label_indices.append(i)\n                break\n    return sorted_file_names, np.array(label_order)[label_indices]\n        \ndef get_file_groups(agg_fnames, plot_controls):\n    all_file_names = {}\n    control_values = []\n    for control in plot_controls:\n        vals = set()\n        for fname in agg_fnames:\n            control_prefix = control + '_'\n            val = re.search(control_prefix + '(\\d+)', fname).group(1)\n            vals.add(control_prefix + val)\n        control_values.append(list(vals))\n    control_combinations = list(itertools.product(*control_values))\n    for control_combination in control_combinations:\n        file_names = [f for f in agg_fnames if has_plot_controls(f, control_combination)]\n        file_key = get_file_key(file_names[0])\n        all_file_names[file_key], final_labels = sort_fnames(file_names)\n    return all_file_names, final_labels\n\ndef merge_results(sf, input_dir, output_dir, split_files_seeds):\n    name_template = \"{0}seed_{1}_{2}\"\n    seeds = split_files_seeds[sf]\n    df = pd.read_csv(os.path.join(input_dir, name_template.format(sf[0], seeds[0], sf[1])))\n    te_idx = len([c for c in df.columns if bool(re.search(\"TE_[0-9]\", c))])\n    for i, seed in enumerate(seeds[1:]):\n        new_df = pd.read_csv(os.path.join(input_dir, name_template.format(sf[0], seed, sf[1])))\n        te_cols = [c for c in new_df.columns if bool(re.search(\"TE_[0-9]\", c))]\n        for te_col in te_cols:\n            df[\"TE_\"+str(te_idx)] = new_df[te_col]\n            te_idx += 1\n    agg_fname = os.path.join(output_dir, sf[0]+sf[1])\n    df.to_csv(agg_fname, index=False)\n\ndef get_results(fname, dir_name):\n    df = pd.read_csv(os.path.join(dir_name, fname))\n    return df[[c for c in df.columns if \"x\" in c]+[c for c in df.columns if \"TE_\" in c]]\n\ndef save_plots(fig, fname, lgd=None):\n    jpg_low_res_path = os.path.join(output_dir, \"jpg_low_res\")\n    if not os.path.exists(jpg_low_res_path):\n        os.makedirs(jpg_low_res_path)\n    jpg_high_res_path = os.path.join(output_dir, \"jpg_high_res\")\n    if not os.path.exists(jpg_high_res_path):\n        os.makedirs(jpg_high_res_path)\n    pdf_low_res_path = os.path.join(output_dir, \"pdf_low_res\")\n    if not os.path.exists(pdf_low_res_path):\n        os.makedirs(pdf_low_res_path)\n    if lgd is None:\n        fig.savefig(os.path.join(jpg_low_res_path, \"{0}.png\".format(fname)), bbox_inches='tight')\n        fig.savefig(os.path.join(jpg_high_res_path, \"{0}.png\".format(fname)), dpi=300, bbox_inches='tight')\n        fig.savefig(os.path.join(pdf_low_res_path, \"{0}.pdf\".format(fname)), bbox_inches='tight')\n    else:\n        fig.savefig(os.path.join(jpg_low_res_path, \"{0}.png\".format(fname)), bbox_inches='tight', bbox_extra_artists=(lgd,))\n        fig.savefig(os.path.join(jpg_high_res_path, \"{0}.png\".format(fname)), dpi=300, bbox_inches='tight', bbox_extra_artists=(lgd,))\n        fig.savefig(os.path.join(pdf_low_res_path, \"{0}.pdf\".format(fname)), bbox_inches='tight', bbox_extra_artists=(lgd,))\n\n##################\n# Plotting utils #\n##################\ndef get_r2(df):\n    r2_scores = np.array([r2_score(df[\"TE_hat\"], df[c]) for c in df.columns if bool(re.search('TE_[0-9]+', c))])\n    return r2_scores\n\ndef get_metrics(dfs):\n    biases = np.zeros((len(dfs[0]), len(dfs)))\n    variances = np.zeros((len(dfs[0]), len(dfs)))\n    rmses = np.zeros((len(dfs[0]), len(dfs)))\n    r2_scores = []\n    for i, df in enumerate(dfs):\n        # bias\n        treatment_effects = df[[c for c in df.columns if bool(re.search('TE_[0-9]+', c))]]\n        bias = np.abs(np.mean(treatment_effects, axis=1) - df[\"TE_hat\"])\n        biases[:, i] = np.abs(np.mean(treatment_effects, axis=1) - df[\"TE_hat\"])\n        # var\n        variance = np.std(treatment_effects, axis=1)\n        variances[:, i] = np.std(treatment_effects, axis=1)\n        # rmse\n        rmse = np.mean(((treatment_effects.T - df[\"TE_hat\"].values).T)**2, axis=1)\n        rmses[:, i] = np.mean(((treatment_effects.T - df[\"TE_hat\"].values).T)**2, axis=1)\n        # r2\n        r2_scores.append(get_r2(df))\n    bias_lims = {\"std\": np.std(biases, axis=0), \"mean\": np.mean(biases, axis=0)}\n    var_lims = {\"std\": np.std(variances, axis=0), \"mean\": np.mean(variances, axis=0)}\n    rmse_lims = {\"std\": np.std(rmses, axis=0), \"mean\": np.mean(rmses, axis=0)}\n    print(r2_scores)\n    r2_lims = {\"std\": [np.std(r2_scores[i]) for i in range(len(r2_scores))], \"mean\": [np.mean(r2_scores[i]) for i in range(len(r2_scores))]}\n    return {\"bias\": bias_lims, \"var\": var_lims, \"rmse\": rmse_lims, \"r2\": r2_lims}\n\ndef generic_joint_plots(file_key, dfs, labels, file_name_prefix):\n    m = min(4, len(dfs))\n    n = np.ceil((len(dfs)) / m) \n    fig = plt.figure(figsize=(10, 5))\n    ymax =  max([max(df[\"TE_hat\"]) for df in dfs])+1\n    print(file_key)\n    print(len(dfs))\n    print(labels)\n    for i, df in enumerate(dfs):\n        ax = fig.add_subplot(n, m, i+1)\n        treatment_effects = df[[c for c in df.columns if bool(re.search('TE_[0-9]+', c))]]\n        y = np.mean(treatment_effects, axis=1)\n        err_up = np.percentile(treatment_effects, 95, axis=1)\n        err_bottom = np.percentile(treatment_effects, 5, axis=1)\n        ax.fill_between(df[\"x0\"], err_up, err_bottom, alpha=0.5)\n        if i == 0:\n            ax.plot(df[\"x0\"], y, label='Mean estimate')\n            ax.plot(df[\"x0\"], df[\"TE_hat\"].values, 'b--', label='True effect')\n        else:\n            ax.plot(df[\"x0\"], y)\n            ax.plot(df[\"x0\"], df[\"TE_hat\"].values, 'b--', label=None)\n        if i%m==0:\n            ax.set_ylabel(\"Treatment effect\")\n        ax.set_ylim(ymax=ymax)\n        ax.set_title(labels[i])\n        if i + 1 > m*(n-1):\n            ax.set_xlabel(\"x\")    \n    fig.legend(loc=(0.8, 0.25))\n    fig.tight_layout()\n    save_plots(fig, file_name_prefix)\n    plt.clf()\n\ndef metrics_subfig(dfs, ax, metric, c_scheme=0):\n    if c_scheme == 0:\n        palette = plt.get_cmap('Set1')\n    else:\n        palette = plt.get_cmap('tab20b')\n    if metric == \"bias\":\n        biases = np.zeros((len(dfs[0]), len(dfs)))\n        for i, df in enumerate(dfs):\n            treatment_effects = df[[c for c in df.columns if bool(re.search('TE_[0-9]+', c))]]\n            bias = np.abs(np.mean(treatment_effects, axis=1) - df[\"TE_hat\"])\n            biases[:, i] = np.abs(np.mean(treatment_effects, axis=1) - df[\"TE_hat\"])\n        vparts = ax.violinplot(biases, showmedians=True)\n        ax.set_title(\"Bias\")\n    elif metric==\"variance\":\n        variances = np.zeros((len(dfs[0]), len(dfs)))\n        for i, df in enumerate(dfs):\n            treatment_effects = df[[c for c in df.columns if bool(re.search('TE_[0-9]+', c))]]\n            variance = np.std(treatment_effects, axis=1)\n            variances[:, i] = np.std(treatment_effects, axis=1)\n        vparts = ax.violinplot(variances, showmedians=True)\n        ax.set_title(\"Variance\")\n    elif metric==\"rmse\":\n        rmses = np.zeros((len(dfs[0]), len(dfs)))\n        for i, df in enumerate(dfs):\n            treatment_effects = df[[c for c in df.columns if bool(re.search('TE_[0-9]+', c))]]\n            rmse = np.mean(((treatment_effects.T - df[\"TE_hat\"].values).T)**2, axis=1)\n            rmses[:, i] = np.mean(((treatment_effects.T - df[\"TE_hat\"].values).T)**2, axis=1)\n        vparts = ax.violinplot(rmses, showmedians=True)\n        ax.set_title(\"RMSE\")\n    elif metric == \"R2\":\n        r2_scores = []\n        for i, df in enumerate(dfs):\n            r2_scores.append(get_r2(df))\n        vparts = ax.violinplot(r2_scores, showmedians=True)\n        ax.set_title(\"$R^2$\")\n    else:\n        print(\"No such metric\")\n        return 0\n    cs = [0, 3, 12, 14, 15, 4, 6]\n    ax.set_xticks([])\n    for i, pc in enumerate(vparts['bodies']):\n        if i < 5:\n            c = i\n        else:\n            c = i+1\n        if c_scheme == 1:\n            c = cs[i]\n        pc.set_facecolor(palette(c))\n        pc.set_edgecolor(palette(c))\n        pc.set_alpha(0.9)\n    \n    alpha = 0.7\n    vparts['cbars'].set_color('black')\n    vparts['cbars'].set_alpha(0.3)\n    vparts['cbars'].set_linestyle('--')\n    \n    vparts['cmins'].set_color('black')\n    vparts['cmins'].set_alpha(alpha)\n    \n    vparts['cmaxes'].set_color('black')\n    vparts['cmaxes'].set_alpha(alpha)\n    \n    vparts['cmedians'].set_color('black')\n    vparts['cmedians'].set_alpha(alpha)\n    return vparts['bodies']\n\ndef metrics_plots(file_key, dfs, labels, c_scheme, file_name_prefix):\n    metrics = [\"bias\", \"variance\", \"rmse\"]\n    m = 1\n    n = len(metrics)\n    fig = plt.figure(figsize=(12*n/3, 3))\n    for i, metric in enumerate(metrics):\n        ax = fig.add_subplot(m, n, i+1)\n        vbodies = metrics_subfig(dfs, ax, metric, c_scheme)\n    lgd = fig.legend(vbodies, labels, ncol=len(labels), loc='lower center', bbox_to_anchor=(0.5, 0), frameon=False)\n    fig.tight_layout()\n    fig.subplots_adjust(bottom=0.15)\n    save_plots(fig, file_name_prefix, lgd)\n    plt.clf()\n\ndef support_plots(all_metrics, labels, file_name_prefix):\n    palette = plt.get_cmap('Set1')\n    x = sorted(list(all_metrics.keys()))\n    metrics = [\"bias\", \"var\", \"rmse\"]\n    titles = [\"Bias\", \"Variance\", \"RMSE\"]\n    m = 1\n    n = len(metrics)\n    fig = plt.figure(figsize=(12*n/3, 3))\n    all_plots = []\n    for it, metric in enumerate(metrics):\n        ax = fig.add_subplot(m, n, it+1)\n        for i, l in enumerate(labels):\n            if i < 5:\n                c = i\n            else:\n                c = i+1\n            err = np.array([all_metrics[j][metric][\"std\"][i] for j in x])\n            mid = np.array([all_metrics[j][metric][\"mean\"][i] for j in x])\n            p = ax.fill_between(x, mid-err/6, mid+err/6, alpha=0.5, color=palette(c))\n            ax.plot(x, mid, label=labels[i], color=palette(c))\n            if it == 0:\n                p1 = copy.copy(p)\n                p1.set_alpha(1.0)\n                all_plots.append(p1)\n        ax.set_title(titles[it])\n        ax.set_xlabel(\"Support size\")\n    fig.legend(all_plots, labels, ncol=len(labels), loc='lower center', bbox_to_anchor=(0.5, 0), frameon=False)\n    fig.tight_layout()\n    fig.subplots_adjust(bottom=0.25)\n    save_plots(fig, file_name_prefix)\n    plt.clf()\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"--output_dir\", type=str, help=\"Directory for saving results\", default=\".\")\n    parser.add_argument(\"--input_dir\", type=str, help=\"\", default=\".\")\n    parser.add_argument(\"-merge\", action='store_true')\n    \n    args = parser.parse_args(sys.argv[1:])\n    input_dir = args.input_dir\n    output_dir = args.output_dir\n    \n    all_files = os.listdir(input_dir)\n    results_files = [f for f in all_files if f.endswith(\"results.csv\") and \"seed\" in f]\n    split_files = set([(re.split(\"seed_[0-9]+_\", f)[0], re.split(\"seed_[0-9]+_\", f)[1]) for f in results_files])\n    split_files_seeds = {k:[int(re.search(\"seed_(\\d+)_\", f).group(1)) for f in results_files if f.startswith(k[0]) and f.endswith(k[1])] for k in split_files}\n    name_template = \"{0}seed_{1}_{2}\"\n    agg_fnames = [sf[0] + sf[1] for sf in split_files]\n    if args.merge:\n        Parallel(n_jobs=-1, verbose=3)(delayed(merge_results)(sf, input_dir, output_dir, split_files_seeds) for sf in split_files)\n    \n    agg_file_groups, labels = get_file_groups(agg_fnames, plot_controls)\n    print(agg_fnames)\n    print(agg_file_groups)\n    all_metrics = {}\n    metrics_by_xgroup = [{}, {}]\n    for g in agg_file_groups:\n        agg_file_group = agg_file_groups[g]\n        dfs = [get_results(fname, output_dir) for fname in agg_file_group]\n        all_metrics[int(re.search(\"support_\" + '(\\d+)', g).group(1))] = get_metrics(dfs)\n        # Infer feature dimension\n        n_x  = len([c for c in dfs[0].columns if bool(re.search(\"x[0-9]\", c))])\n        if n_x == 1:\n            generic_joint_plots(g, dfs, labels, \"{0}{1}\".format(\"Example\", g))\n            metrics_plots(g, dfs, labels, 0, \"{0}{1}\".format(\"Metrics\", g))\n        else:\n            metrics_plots(g, dfs, labels, 0, \"{0}_x1={2}{1}\".format(\"Metrics\", g, \"all\"))\n            for i in range(2):\n                dfs1 = [df[df[\"x1\"]==i] for df in dfs]\n                generic_joint_plots(g, dfs1, labels, \"{0}_x1={2}{1}\".format(\"Example\", g, str(i)))\n                metrics_plots(g, dfs1, labels, 0, \"{0}_x1={2}{1}\".format(\"Metrics\", g, str(i)))\n                metrics_by_xgroup[i][int(re.search(\"support_\" + '(\\d+)', g).group(1))] = get_metrics(dfs1)\n    # Metrics by support plots\n    if n_x == 1:\n        support_plots(all_metrics, labels, \"{0}\".format(\"Metrics_by_support\"))\n    else:\n        support_plots(all_metrics, labels, \"{0}_x1={1}\".format(\"Metrics_by_support\", \"all\"))\n        for i in range(2):\n            support_plots(metrics_by_xgroup[i], labels, \"{0}_x1={1}\".format(\"Metrics_by_support\", str(i)))"
  },
  {
    "path": "prototypes/orthogonal_forests/hetero_dml.py",
    "content": "import inspect\nimport numpy as np\nimport warnings\nfrom joblib import Parallel, delayed\nfrom sklearn.linear_model import LassoCV, Lasso, LinearRegression\nfrom sklearn.model_selection import KFold\nfrom sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.ensemble import RandomForestRegressor\n\n\ndef cross_product(X1, X2):\n    \"\"\" Computes cross product of features.\n\n    Parameters\n    ----------\n    X1 (n x d1 matrix). first matrix of n samples of d1 features\n    X2 (n x d2 matrix). second matrix of n samples of d2 features\n    Returns\n    -------\n    X12 (n x d1*d2 matrix). matrix of n samples of d1*d2 cross product features,\n        arranged in form such that each row t of X12 contains:\n        [X1[t,0]*X2[t,0], ..., X1[t,d1-1]*X2[t,0], X1[t,0]*X2[t,1], ..., X1[t,d1-1]*X2[t,1], ...]\n    \"\"\"\n    assert np.shape(X1)[0] == np.shape(X2)[0]\n    return np.array([np.dot(X1[t].reshape(-1, 1), X2[t].reshape(1, -1)).flatten('F').T for t in range(np.shape(X1)[0])])\n\n\nclass HeteroDML(object):\n    \n    def __init__(self, poly_degree=3,\n                            model_T=LassoCV(),\n                            model_Y=LassoCV()):\n        self.poly_degree = poly_degree\n        self.model_T = model_T\n        self.model_Y = model_Y\n        self.model_final = LinearRegression(fit_intercept=False)\n    \n    def fit(self, W, x, T, Y):\n        poly_x = PolynomialFeatures(degree=self.poly_degree, include_bias=True).fit_transform(x)\n        composite_W = cross_product(poly_x, W)\n\n        res_T = np.zeros(W.shape[0])\n        res_Y = np.zeros(W.shape[0])\n        \n        kf = KFold(n_splits=2)\n        for train_index, test_index in kf.split(W):\n            # Split the data in half, train and test\n            composite_W_train, W_train, T_train, Y_train = composite_W[train_index], W[train_index], T[train_index], Y[train_index]\n            composite_W_test, W_test, T_test, Y_test  = composite_W[test_index], W[test_index], T[test_index], Y[test_index]\n            \n            # Fit with LassoCV the treatment as a function of W and the outcome as\n            # a function of W, using only the train fold\n            self.model_T.fit(W_train, T_train)\n            self.model_Y.fit(composite_W_train, Y_train)\n            \n            # Then compute residuals T-g(W) and Y-f(W) on test fold\n            res_T[test_index] = (T_test - self.model_T.predict(W_test))\n            res_Y[test_index] = (Y_test - self.model_Y.predict(composite_W_test))\n        \n        self.model_final.fit(cross_product(poly_x, res_T.reshape(-1, 1)), res_Y.flatten())\n\n    \n    def predict(self, x):\n        poly_x = PolynomialFeatures(degree=self.poly_degree, include_bias=True).fit_transform(x)\n        return np.dot(poly_x, self.model_final.coef_.reshape(-1, 1)).flatten()\n\n\nclass ForestHeteroDML(object):\n    \n    def __init__(self):\n        self.model_T = RandomForestRegressor(n_estimators=100, max_depth=10, min_samples_leaf=10)\n        self.model_Y = RandomForestRegressor(n_estimators=100, max_depth=10, min_samples_leaf=10)\n        self.model_final = RandomForestRegressor(n_estimators=100, max_depth=10, min_impurity_split=10)\n    \n    def fit(self, W, x, T, Y):\n\n        res_T = np.zeros(W.shape[0])\n        res_Y = np.zeros(W.shape[0])\n        \n        kf = KFold(n_splits=2)\n        for train_index, test_index in kf.split(W):\n            # Split the data in half, train and test\n            x_train, W_train, T_train, Y_train = x[train_index], W[train_index], T[train_index], Y[train_index]\n            x_test, W_test, T_test, Y_test  = x[test_index], W[test_index], T[test_index], Y[test_index]\n            \n            # Fit with LassoCV the treatment as a function of W and the outcome as\n            # a function of W, using only the train fold\n            self.model_T.fit(W_train, T_train)\n            self.model_Y.fit(np.concatenate((x_train, W_train), axis=1), Y_train)\n            \n            # Then compute residuals T-g(W) and Y-f(W) on test fold\n            res_T[test_index] = (T_test - self.model_T.predict(W_test))\n            res_Y[test_index] = (Y_test - self.model_Y.predict(np.concatenate((x_test, W_test), axis=1)))\n\n        self.model_final.fit(np.concatenate((x, res_T.reshape(-1, 1)), axis=1), res_Y.flatten())\n        self.res_T = res_T\n\n    \n    def predict(self, x):\n        # We create fake treatment points from the same distribution as the residuals created during the fit process\n        # For each target x, we evaluate the model_final.predict for each such treatment point, and then we average\n        # over the predictions to get the prediction at x, i.e. \\tau(x) = E_{res_T\\sim D_train}[predict(x, res_T)]\n        return np.mean([self.model_final.predict(np.concatenate((x, np.ones((x.shape[0],1))*t), axis=1)).flatten()/(t+0.00001) for  t in self.res_T.flatten()], axis=0).flatten()\n"
  },
  {
    "path": "prototypes/orthogonal_forests/monte_carlo.py",
    "content": "import argparse\nimport matplotlib\nmatplotlib.use('Agg')\nimport os\nimport subprocess\nimport sys\nimport time\nimport warnings\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nfrom itertools import product\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.linear_model import Lasso, LassoCV, LinearRegression\nfrom sklearn.metrics import r2_score\nfrom sklearn.model_selection import train_test_split\nfrom hetero_dml import HeteroDML, ForestHeteroDML\nfrom ortho_forest import OrthoForest, DishonestOrthoForest\nfrom residualizer import dml, second_order_dml\n\ndef piecewise_linear_te(x):\n    if x[0] <= .3:\n        return x[0]  + 2\n    elif x[0] <= .6:\n        return 6 * (x[0]-0.3) + piecewise_linear_te([.3]) \n    else:\n       return  - 3 * (x[0]-0.6) + piecewise_linear_te([.6])\n\ndef step_te(x):\n    if x[0] < .2:\n        return 1\n    elif x[0] < .6:\n        return 5 \n    else:\n       return  3\n\ndef polynomial_te(x):\n    if x[0] < .2:\n        return 3 * (x[0]**2)\n    elif x[0] < .6:\n        return 3 * (x[0]**2) + 1\n    else:\n       return  6 * x[0] + 2\n\ndef doublez_te(x):\n    if x[1] == 0:\n        return piecewise_linear_te(x)\n    else:\n        return step_te(x)\n\nif __name__ == \"__main__\":\n    ####################\n    # Argument parsing #\n    ####################\n    os.environ['JOBLIB_TEMP_FOLDER'] = '/tmp'\n    warnings.filterwarnings(\"ignore\")\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"--n_experiments\", type=int, help=\"number of experiments\", default=10)\n    parser.add_argument(\"--n_samples\", type=int, help=\"number of samples\", default=5000)\n    parser.add_argument(\"--n_dim\", type=int, help=\"number of controls\", default=100)\n    parser.add_argument(\"--support_size\", type=int, help=\"size of control support\", default=5)\n    parser.add_argument(\"--n_x\", type=int, help=\"number of covariates\", default=1)\n    parser.add_argument(\"--seed\", type=int, help=\"number generator seed\", default=12345)\n    parser.add_argument(\"--te_func\", type=int, help=\"treatment effect function indicator\", default=0)\n    parser.add_argument(\"--n_trees\", type=int, help=\"number of trees in ortho forest\", default=100)\n    parser.add_argument(\"--max_splits\", type=int, help=\"maximum splits in ortho forest\", default=20)\n    parser.add_argument(\"--min_leaf_size\", type=int, help=\"min leaf size in ortho forest\", default=5)\n    parser.add_argument(\"--bootstrap\", type=int, help=\"use bootstrap subsampling or subsampling\", default=0)\n    parser.add_argument(\"--subsample_power\", type=float, help=\"what power of the original data set is the subsample size\", default=.88)\n    parser.add_argument(\"--output_dir\", type=str, help=\"directory for saving results\", default=\".\")\n    parser.add_argument(\"--method_id\", type=int, help=\"method_id\", default=0)\n    parser.add_argument(\"--control_for_W\", type=int, help=\"control for W\", default=1)\n    parser.add_argument(\"--R\", action='store_true', help=\"Whether to run R simulations\")\n    parser.add_argument(\"--P\", action='store_true', help=\"Whether to plot results\")\n    \n    method_names = ['OrthoForest', 'OrthoForestCV', 'DishonestOrthoForestCV', 'HeteroDML', 'ForestHeteroDML']\n    args = parser.parse_args(sys.argv[1:])\n    np.random.seed(args.seed)\n    file_prefix_rel = \"{class_name}_n_samples_{n_samples}_n_dim_{n_dim}_n_x_{n_x}_support_{support_size}_seed_{seed}_n_trees_{n_trees}_max_splits_{max_splits}_min_leaf_size_{min_leaf_size}_{sampling}_\".format(\n                        class_name=(\"NotControlling\" if args.control_for_W==0 else \"\") + method_names[args.method_id],\n                        n_samples=args.n_samples,\n                        n_dim=args.n_dim,\n                        n_x=args.n_x,\n                        support_size=args.support_size,\n                        seed=args.seed,\n                        n_trees=args.n_trees,\n                        max_splits=args.max_splits,\n                        min_leaf_size=args.min_leaf_size,\n                        sampling=(\"bootstrap\" if bool(args.bootstrap) else \"s_pow_{s_pow}\".format(s_pow=\"{:.2}\".format(args.subsample_power).replace('.','_')))\n                        )    \n    file_prefix = os.path.join(args.output_dir, file_prefix_rel)\n    te_func = None\n    if args.te_func == 0:\n        te_func = piecewise_linear_te\n    elif args.te_func == 1:\n        te_func = step_te\n    elif args.te_func == 2:\n        te_func = polynomial_te\n    elif args.te_func == 3:\n        assert(args.n_x > 1)\n        te_func = doublez_te\n    else:\n        print(\"UNKNOWN TREATMENT EFFECT FUNCTION\")\n        exit()\n\n    ##########################################\n    # Parameters constant across experiments #\n    ##########################################\n    # Outcome support\n    support_Y = np.random.choice(range(args.n_dim), size=args.support_size, replace=False)\n    coefs_Y = np.random.uniform(0, 1, size=args.support_size)\n    sigma_Y = 1\n    epsilon_sample = lambda n: np.random.uniform(-sigma_Y, sigma_Y, size=n)\n    # Treatment support \n    support_T = support_Y\n    coefs_T = np.random.uniform(0, 1, size=args.support_size)\n    sigma_T = 1\n    eta_sample = lambda n: np.random.uniform(-sigma_T, sigma_T, size=n) \n    # Evaluation grid\n    if args.n_x > 1:\n        x_grid = np.concatenate(\n            (\n                np.column_stack((np.arange(0, 1, 0.01), np.zeros(100))), \n                np.column_stack((np.arange(0, 1, 0.01), np.ones(100)))\n            )\n        )\n    else:\n        x_grid = np.array(list(product(np.arange(0, 1, 0.01), repeat=args.n_x)))\n    # Treatment effects array\n    treatment_effects = np.zeros((x_grid.shape[0], args.n_experiments))\n    # Other variables\n    file_header = \",\".join([\"W\"+str(i) for i in range(args.n_dim)] + [\"x\"+str(i) for i in range(args.n_x)] + [\"T\", \"Y\", \n    \"res_T_W\", \"res_T_Wx\", \"res_Y_W\", \"res_Y_Wx\"])\n    names_fn = \"{file_prefix}file_names.txt\".format(file_prefix=file_prefix)\n    names_f = open(names_fn,\"w+\")\n    names_f.write(\"{0}\\n\".format(args.n_experiments))\n\n    ###########################\n    # Data Generating Process #\n    ###########################\n    start = time.time()\n    for t in range(args.n_experiments):\n        # Log iteration\n        print(\"Iteration {}\".format(t))\n        # Generate controls, features, treatment and outcome\n        W = np.random.normal(0, 1, size=(args.n_samples, args.n_dim))\n        if args.n_x > 1:\n            x = np.concatenate(\n                (np.random.uniform(0, 1, size=(args.n_samples, 1)), \n                np.random.binomial(1, 0.5, size=(args.n_samples, args.n_x-1))),\n                axis=1\n                )\n        else:\n            x = np.random.uniform(0, 1, size=(args.n_samples, args.n_x))\n        TE = np.array([te_func(x_i) for x_i in x]) # Heterogeneous treatment effects\n        T = np.dot(W[:, support_T], coefs_T) + eta_sample(args.n_samples)\n        Y = TE * T + np.dot(W[:, support_Y], coefs_Y) + epsilon_sample(args.n_samples)\n        # T and Y residuals to be used in later scripts\n        res_model1 = LassoCV()\n        res_model2 = LassoCV()\n        mid = args.n_samples // 2\n        Wx = np.concatenate((W,x), axis=1)\n        res_T_W = np.concatenate((T[:mid] - res_model1.fit(W[mid:], T[mid:]).predict(W[:mid]),\n                                   T[mid:] - res_model2.fit(W[:mid], T[:mid]).predict(W[mid:])))\n        res_T_Wx = np.concatenate((T[:mid] - res_model1.fit(Wx[mid:], T[mid:]).predict(Wx[:mid]),\n                                   T[mid:] - res_model2.fit(Wx[:mid], T[:mid]).predict(Wx[mid:])))\n        res_Y_W = np.concatenate((Y[:mid] - res_model1.fit(W[mid:], Y[mid:]).predict(W[:mid]),\n                                   Y[mid:] - res_model2.fit(W[:mid], Y[:mid]).predict(W[mid:])))\n        res_Y_Wx = np.concatenate((Y[:mid] - res_model1.fit(Wx[mid:], Y[mid:]).predict(Wx[:mid]),\n                                   Y[mid:] - res_model2.fit(Wx[:mid], Y[:mid]).predict(Wx[mid:])))\n        \n        # Save generated dataset\n        file_name = \"{file_prefix}experiment_{t}.csv\".format(file_prefix=file_prefix, t=t)\n        names_f.write(file_name + \"\\n\")\n        np.savetxt(file_name, np.concatenate((\n            W, x, T.reshape(-1, 1), Y.reshape(-1, 1),\n            res_T_W.reshape(-1, 1), res_T_Wx.reshape(-1, 1),\n            res_Y_W.reshape(-1, 1), res_Y_Wx.reshape(-1, 1)\n        ), axis=1), \n        delimiter=\",\", header=file_header, comments='')\n\n        ##################\n        # ORF parameters #\n        ##################\n        n_trees = args.n_trees\n        max_splits = args.max_splits\n        min_leaf_size = args.min_leaf_size\n        bootstrap = (args.bootstrap == 1)\n        subsample_ratio = ((args.n_samples/np.log(args.n_dim))**(args.subsample_power)) / (args.n_samples)\n        print(\"Subsample_ratio: {}\".format(subsample_ratio))\n        residualizer = dml\n        if bootstrap:\n            lambda_reg = np.sqrt(np.log(args.n_dim) / (10 * args.n_samples))\n        else:\n            lambda_reg = np.sqrt(np.log(args.n_dim) / (10 * subsample_ratio * args.n_samples))\n        print(\"Lambda: {}\".format(lambda_reg))\n        model_T = Lasso(alpha=lambda_reg)\n        model_Y = Lasso(alpha=lambda_reg)\n\n        #######################################\n        # Train and evaluate treatment effect #\n        #######################################\n        if args.method_id == 0:\n            est = OrthoForest(n_trees=n_trees, min_leaf_size=min_leaf_size, residualizer=residualizer,\n                    max_splits=max_splits, subsample_ratio=subsample_ratio, bootstrap=bootstrap, \n                    model_T=model_T, model_Y=model_Y)\n        elif args.method_id == 1:\n            est = OrthoForest(n_trees=n_trees, min_leaf_size=min_leaf_size, residualizer=residualizer,\n                      max_splits=max_splits, subsample_ratio=subsample_ratio, bootstrap=bootstrap, \n                      model_T=model_T, model_Y=model_Y, model_T_final=LassoCV(), model_Y_final=LassoCV())\n        elif args.method_id == 2:\n            est = DishoestOrthoForest(n_trees=n_trees, min_leaf_size=min_leaf_size, residualizer=residualizer,\n                      max_splits=max_splits, subsample_ratio=subsample_ratio, bootstrap=bootstrap, \n                      model_T=model_T, model_Y=model_Y, model_T_final=LassoCV(), model_Y_final=LassoCV())\n        elif args.method_id == 3:\n            est = HeteroDML(poly_degree=3)\n        elif args.method_id == 4:\n            est = HeteroDML(poly_degree=3, model_T=RandomForestRegressor(), model_Y=RandomForestRegressor())\n        else:\n            print(\"UNKNOWN METHOD\")\n            exit()\n        if args.control_for_W:\n            print(\"Controlling for W\")\n            est.fit(W, x, T, Y)\n        else:\n            est.fit(np.zeros((W.shape[0], 1)), x, T, Y)\n        treatment_effects[:, t] = est.predict(x_grid)\n        \n    #########\n    # Plots #\n    #########\n    if args.te_func == 3:\n        fig = plt.figure(figsize=(10, 4))\n        titles = [\"$x_1 = 0$\", \"$x_1 = 1$\"]\n        for i, x_slice in enumerate([(x_grid[:, 1] == 0), (x_grid[:, 1] == 1)]):\n            ax = fig.add_subplot(1, 2, i+1)\n            tes = treatment_effects[x_slice]\n            y = np.mean(tes, axis=1)\n            err_up = np.percentile(tes, 95, axis=1)\n            err_bottom = np.percentile(tes, 5, axis=1)\n            ax.plot(x_grid[x_slice][:, 0], y, label='Mean estimate')\n            ax.fill_between(x_grid[x_slice][:, 0], err_up, err_bottom, alpha=0.5)\n            TE_grid = np.array([te_func(x_i) for x_i in x_grid[x_slice]])\n            ax.plot(x_grid[x_slice][:, 0], TE_grid, 'b--', label='True effect')\n            ax.set_ylabel(\"Treatment effect\")\n            ax.set_xlabel(\"$x_0$\")\n            ax.set_title(titles[i])\n            ax.legend()\n        fig.savefig(\"{file_prefix}_true_vs_pred_high_res.png\".format(file_prefix=file_prefix), dpi=300, bbox_inches='tight')\n        fig.savefig(\"{file_prefix}_true_vs_pred.png\".format(file_prefix=file_prefix), bbox_inches='tight')\n        fig.savefig(\"{file_prefix}_true_vs_pred.pdf\".format(file_prefix=file_prefix), bbox_inches='tight')\n    else:\n        y = np.mean(treatment_effects, axis=1)\n        err_up = np.percentile(treatment_effects, 95, axis=1)\n        err_bottom = np.percentile(treatment_effects, 5, axis=1)\n        plt.plot(x_grid[:, 0], y, label='Mean estimate')\n        plt.fill_between(x_grid[:, 0], err_up, err_bottom, alpha=0.5)\n        TE_grid = np.array([te_func(x_i) for x_i in x_grid])\n        plt.plot(x_grid[:, 0], TE_grid, 'b--', label='True effect')\n        plt.ylabel(\"Treatment effect\")\n        plt.xlabel(\"x\")\n        plt.legend()\n        plt.savefig(\"{file_prefix}_true_vs_pred_high_res.png\".format(file_prefix=file_prefix), dpi=300, bbox_inches='tight')\n        plt.savefig(\"{file_prefix}_true_vs_pred.png\".format(file_prefix=file_prefix), bbox_inches='tight')\n        plt.savefig(\"{file_prefix}_true_vs_pred.pdf\".format(file_prefix=file_prefix), bbox_inches='tight')\n\n    ################\n    # Save results #\n    ################\n    results_file_name = \"{file_prefix}results.csv\".format(file_prefix=file_prefix)\n    TE_grid = np.array([te_func(x_i) for x_i in x_grid])\n    aux = np.ones(args.n_experiments)\n    W_dummy = np.random.normal(0, 1, size=(x_grid.shape[0], args.n_dim)) # For comparison with models that take in W U x\n    np.savetxt(results_file_name, np.concatenate((x_grid, W_dummy, TE_grid.reshape(-1, 1), treatment_effects), axis=1), \n    delimiter=\",\", header=\",\".join(['x'+str(i) for i in range(args.n_x)] + ['W'+str(i) for i in range(args.n_dim)] + ['TE_hat'] + [\"TE_\"+str(i) for i in range(args.n_experiments)]), comments='')\n\n    end = time.time()\n    names_f.write(\"Runtime: {0} minutes\\n\".format(int((end-start)/60)))\n    names_f.close()\n\n    ###############\n    # Run Rscript #\n    ###############\n    if args.R:\n        subprocess.check_call(\"Rscript GRF_treatment_effects.R --prefix {0}\".format(file_prefix), shell=True)"
  },
  {
    "path": "prototypes/orthogonal_forests/ortho_forest.py",
    "content": "\"\"\"Orthogonal Random Forest\n\nOrthogonal Random Forest (ORF) is an algorithm for heterogenous treatment effect\nestimation. Orthogonal Random Forest combines orthogonalization,\na technique that effectively removes the confounding effect in two-stage estimation,\nwith generalized random forests, a flexible method for estimating treatment\neffect heterogeneity.\n\nThis module consists of classes that implement the following variants of the ORF method:\n\n- The ``BaseOrthoForest``, a one-forest approach for learning treatment effects that uses\n  the classic RandomForest kernel to predict a treatment effect from features. A base class\n  for more sophisticated ORF versions. \n\n- The ``DishonestOrthoForest``, a one-forest approach for learning treatment effects with\n  kernel two stage estimation for predicting treatment effects. To be used as a comparison\n  to the two-forest, honest version. \n\n- The ``OrthoForest``, a two-forest approach for learning treatment effects with\n  kernel two stage estimation for predicting treatment effects.\n\nFor more details on these methods, see our paper <Orthogonal Random Forest for Heterogeneous\nTreatment Effect Estimation> on arxiv.\n\"\"\"\n\n# Authors: Miruna Oprescu <moprescu@microsoft.com>\n#          Vasilis Syrgkanis <vasy@microsoft.com>\n#          Steven Wu <zhiww@microsoft.com>\n\nimport inspect\nimport numpy as np\nimport warnings\nfrom joblib import Parallel, delayed\nfrom sklearn.base import clone\nfrom sklearn.linear_model import LassoCV, Lasso\nfrom residualizer import dml, second_order_dml\nfrom causal_tree import CausalTree\n\n\ndef _build_tree_in_parallel(W, x, T, Y, min_leaf_size, max_splits, residualizer, model_T, model_Y):\n    tree = OrthoTree(min_leaf_size=min_leaf_size, max_splits=max_splits, residualizer=residualizer,\n                     model_T=model_T, model_Y=model_Y)\n    tree.fit(W, x, T, Y)\n    return tree\n\n\nclass OrthoTree(object):\n    \"\"\"Base tree estimator for OrthoForest classes.\n\n    Parameters\n    ----------\n    min_leaf_size : integer, optional (default=20)\n        The minimum number of samples in a leaf.\n\n    max_splits : integer, optional (default=10)\n        The maximum number of splits to be performed when expanding the tree. \n\n    residualizer : class, optional (default=dml)\n        The residualizer to be used at the leafs to for removing confounding effects.\n        Two out of the box options provided: `dml` (double machine learning) and\n        `second_order_dml` (second order double machine learning), but users can\n        define a custom residualizer as long as the interface matches the `dml`\n        interface.\n\n    model_T : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the treatment at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_Y : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the outcome at the leaf. Must implement\n        `fit` and `predict` methods.\n    \"\"\"\n\n    def __init__(self, min_leaf_size=20, max_splits=10, residualizer=dml,\n                 model_T=LassoCV(),\n                 model_Y=LassoCV()):\n        self.min_leaf_size = min_leaf_size\n        self.max_splits = max_splits\n        self.residualizer = residualizer\n        self.model_T = model_T\n        self.model_Y = model_Y\n\n    def fit(self, W, x, T, Y):\n        \"\"\"Build a causal tree from a training set (W, x, T, Y)\n\n        Parameters\n        ----------\n        W : array_like, shape [n_samples, n_controls]\n            High-dimensional controls.\n\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n\n        T : array_like, shape [n_samples]\n            Treatment policy.\n\n        Y : array_like, shape [n_samples]\n            Outcome for the treatment policy.\n        \"\"\"\n        # Initialize causal tree parameters\n        self.ct = CausalTree(W, x, T, Y, self.model_T, self.model_Y,\n                             min_leaf_size=self.min_leaf_size, max_splits=self.max_splits,\n                             residualizer=self.residualizer)\n        # Create splits of causal tree\n        self.ct.create_splits()\n        # Estimate treatment effects at the leafs\n        self.ct.estimate()\n\n    def predict(self, x):\n        \"\"\"Predict treatment effects for features x.\n\n        Parameters\n        ----------\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n        \"\"\"\n        # Compute heterogeneous treatement effect for x's in x_list by finding\n        # the corresponding split and associating the effect computed on that leaf\n        out_tau = np.zeros(x.shape[0])\n        for idx, out_x in enumerate(x):\n            # Find the leaf node that this x belongs too and parse the corresponding estimate\n            out_tau[idx] = self.ct.find_split(out_x).estimate\n\n        return out_tau\n\n\nclass BaseOrthoForest(object):\n    \"\"\"A one-forest approach for learning treatment effects using\n        the classic RandomForest kernel for prediction. \n\n    Parameters\n    ----------\n    n_trees : integer, optional (default=10)\n        Number of causal estimators in the forest.\n\n    min_leaf_size : integer, optional (default=20)\n        The minimum number of samples in a leaf.\n\n    max_splits : integer, optional (default=10)\n        The maximum number of splits to be performed when expanding the tree. \n\n    residualizer : class, optional (default=dml)\n        The residualizer to be used at the leafs to for removing confounding effects.\n        Two out of the box options provided: `dml` (double machine learning) and\n        `second_order_dml` (second order double machine learning), but users can\n        define a custom residualizer as long as the interface matches the `dml`\n        interface.\n\n    model_T : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the treatment at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_Y : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the outcome at the leaf. Must implement\n        `fit` and `predict` methods.\n    \"\"\"\n\n    def __init__(self, n_trees=10, min_leaf_size=20, max_splits=10,\n                 subsample_ratio=1.0, bootstrap=True,\n                 residualizer=dml,\n                 model_T=LassoCV(),\n                 model_Y=LassoCV()):\n        self.n_trees = n_trees\n        self.min_leaf_size = min_leaf_size\n        self.max_splits = max_splits\n        self.bootstrap = bootstrap\n        self.subsample_ratio = subsample_ratio\n        self.residualizer = residualizer\n        self.model_T = model_T\n        self.model_Y = model_Y\n        self.subsample_ind = None\n\n    def fit_forest(self, W, x, T, Y):\n        if self.bootstrap:\n            subsample_ind = np.random.choice(W.shape[0], size=(self.n_trees, W.shape[0]), replace=True)\n        else:\n            if self.subsample_ratio > 1.0:\n                # Safety check\n                self.subsample_ratio = 1.0\n            subsample_size = int(self.subsample_ratio * W.shape[0])\n            subsample_ind = np.zeros((self.n_trees, subsample_size))\n            for t in range(self.n_trees):\n                subsample_ind[t] = np.random.choice(W.shape[0], size=subsample_size, replace=False)\n            subsample_ind = subsample_ind.astype(int)\n\n        return subsample_ind, Parallel(n_jobs=-1, verbose=3)(\n            delayed(_build_tree_in_parallel)(\n                W[s], x[s], T[s], Y[s],\n                self.min_leaf_size, self.max_splits, self.residualizer,\n                clone(self.model_T), clone(self.model_Y)) for s in subsample_ind)\n\n    def fit(self, W, x, T, Y):\n        \"\"\"Build an orthogonal random forest from a training set (W, x, T, Y)\n\n        Parameters\n        ----------\n        W : array_like, shape [n_samples, n_controls]\n            High-dimensional controls.\n\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n\n        T : array_like, shape [n_samples]\n            Treatment policy.\n\n        Y : array_like, shape [n_samples]\n            Outcome for the treatment policy.\n        \"\"\"\n        self.subsample_ind, self.trees = self.fit_forest(W, x, T, Y)\n\n    def predict(self, x):\n        \"\"\"Predict treatment effects for features x.\n\n        Parameters\n        ----------\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n        \"\"\"\n        out_tau = np.zeros((x.shape[0], self.n_trees))\n        for t, tree in enumerate(self.trees):\n            out_tau[:, t] = tree.predict(x)\n        return np.mean(out_tau, axis=1)\n\n    def predict_interval(self, x, lower=5, upper=95):\n        \"\"\"Confidence intervals for prediction.\n\n        Parameters\n        ----------\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n\n        lower : float, optional (default=5)\n            Float between 0 and 100 representing lower percentile of confidence interval. \n\n        upper : float, optional (default=95)\n            Float between 0 and 100 representing upper percentile of confidence interval.\n            Must be larger than the lower percentile.\n        \"\"\"\n        out_tau = np.zeros((x.shape[0], self.n_trees))\n        for t, tree in enumerate(self.trees):\n            out_tau[:, t] = tree.predict(x)\n        return np.percentile(out_tau, lower, axis=1), np.percentile(out_tau, upper, axis=1)\n\n\nclass DishonestOrthoForest(BaseOrthoForest):\n    \"\"\"A one-forest approach for learning treatment effects with\n        kernel two stage estimation for predicting treatment effects.\n\n    Parameters\n    ----------\n    n_trees : integer, optional (default=10)\n        Number of causal estimators in the forest.\n\n    min_leaf_size : integer, optional (default=20)\n        The minimum number of samples in a leaf.\n\n    max_splits : integer, optional (default=10)\n        The maximum number of splits to be performed when expanding the tree. \n\n    subsample_ratio : float, optional (default=1.0)\n        The ratio of the total sample to be used when training a causal tree.\n        Values greater than 1.0 will be considered equal to 1.0.\n        Parameter is ignored when bootstrap=True.\n\n    bootstrap : boolean, optional (default=True)\n        Whether to use bootstrap subsampling. \n\n    residualizer : class, optional (default=dml)\n        The residualizer to be used at the leafs to for removing confounding effects.\n        Two out of the box options provided: `dml` (double machine learning) and\n        `second_order_dml` (second order double machine learning), but users can\n        define a custom residualizer as long as the interface matches the `dml`\n        interface.\n\n    model_T : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the treatment at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_Y :  estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the outcome at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_T_final : estimator, optional (default=None)\n        The estimator for residualizing the treatment at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to `None`, it defaults to the\n        value of `model_T` parameter. \n\n    model_Y_final : estimator, optional (default=None)\n    The estimator for residualizing the outcome at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to `None`, it defaults to the\n        value of `model_Y` parameter.\n    \"\"\"\n\n    def __init__(self, n_trees=10, min_leaf_size=20, max_splits=10,\n                 subsample_ratio=1.0, bootstrap=True,\n                 residualizer=dml,\n                 model_T=LassoCV(),\n                 model_Y=LassoCV(),\n                 model_T_final=None,\n                 model_Y_final=None):\n        super(DishonestOrthoForest, self).__init__(n_trees=n_trees,\n                                                   min_leaf_size=min_leaf_size,\n                                                   max_splits=max_splits,\n                                                   subsample_ratio=subsample_ratio, bootstrap=bootstrap,\n                                                   residualizer=residualizer,\n                                                   model_T=model_T,\n                                                   model_Y=model_Y)\n        self.model_T_final = model_T_final\n        self.model_Y_final = model_Y_final\n        if self.model_T_final is None:\n            self.model_T_final = clone(self.model_T)\n        if self.model_Y_final is None:\n            self.model_Y_final = clone(self.model_Y)\n\n    def fit(self, W, x, T, Y):\n        \"\"\"Build an orthogonal random forest from a training set (W, x, T, Y)\n\n        Parameters\n        ----------\n        W : array_like, shape [n_samples, n_controls]\n            High-dimensional controls.\n\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n\n        T : array_like, shape [n_samples]\n            Treatment policy.\n\n        Y : array_like, shape [n_samples]\n            Outcome for the treatment policy.\n        \"\"\"\n        self.W = W\n        self.T = T\n        self.Y = Y\n        super(DishonestOrthoForest, self).fit(W=W, x=x, T=T, Y=Y)\n\n    def predict(self, x):\n        \"\"\"Predict treatment effects for features x.\n\n        Parameters\n        ----------\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n        \"\"\"\n        return self._predict(x)\n\n    def predict_with_weights(self, x):\n        \"\"\"Predict treatment effects for features x.\n            Returns both treatment effects and the weights on the training points. \n\n        Parameters\n        ----------\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n        \"\"\"\n        return self._predict(x, weights=True)\n\n    def _predict(self, x, weights=False):\n        results = Parallel(n_jobs=-1, verbose=3)(\n            delayed(self._point_predict)(x_out, weights) for x_out in x)\n        if weights:\n            out_tau = [r[0] for r in results]\n            x_weights = np.zeros((len(self.x), len(x)))\n            for x_ind, x_out in enumerate(x):\n                x_weights[:, x_ind] = results[x_ind][1]\n            return out_tau, np.concatenate((self.x, x_weights), axis=1)\n        return results\n\n    def _point_predict(self, x_out, weights=False):\n        model_T = self._get_weighted_pipeline(self.model_T_final)\n        model_Y = self._get_weighted_pipeline(self.model_Y_final)\n        w, a = self._get_weights(x_out)\n        mask_w = (w != 0)\n        mask_a = (a != 0)\n        w_nonzero = w[mask_w]\n        a_nonzero = a[mask_a]\n        self._fit_weighted_pipeline(model_T, self.W[mask_w], self.T[mask_w], w_nonzero)\n        self._fit_weighted_pipeline(model_Y, self.W[mask_w], self.Y[mask_w], w_nonzero)\n        res_T = self.T[mask_a] - model_T.predict(self.W[mask_a])\n        res_Y = self.Y[mask_a] - model_Y.predict(self.W[mask_a])\n        # Weighted linear regression\n        out_tau = np.dot(res_T, a_nonzero * res_Y) / np.dot(res_T, a_nonzero * res_T)\n        if weights:\n            return out_tau, a\n        return out_tau\n\n    def _get_weights(self, x_out):\n        # Calculates weights\n        w = np.zeros(self.W.shape[0])\n        a = np.zeros(self.W.shape[0])\n        for t, tree in enumerate(self.trees):\n            leaf = tree.ct.find_split(x_out)\n            weight_indexes = self.subsample_ind[t][leaf.est_sample_inds_1]\n            leaf_weight = 1 / len(leaf.est_sample_inds_1)\n            # Bootstraping has repetitions in tree sample so we need to iterate\n            # over all indices\n            for ind in weight_indexes:\n                w[ind] += leaf_weight\n            # Similar for `a` weights\n            weight_indexes = self.subsample_ind[t][leaf.est_sample_inds_2]\n            leaf_weight = 1 / len(leaf.est_sample_inds_2)\n            for ind in weight_indexes:\n                a[ind] += leaf_weight\n        return (w, a)\n\n    def _get_weighted_model(self, model_instance):\n        if 'sample_weight' not in inspect.getfullargspec(model_instance.fit).args:\n            # Doesn't have sample weights\n            if 'sklearn.linear_model' in model_instance.__module__:\n                # Is a linear model\n                return ModelWrapper(model_instance, \"weighted\")\n            else:\n                return ModelWrapper(model_instance, \"sampled\")\n        return model_instance\n\n    def _get_weighted_pipeline(self, model_instance):\n        if type(model_instance) != 'Pipeline':\n            ret_model = self._get_weighted_model(model_instance)\n        else:\n            ret_model = clone(model_instance)\n            ret_model.steps[-1] = ('weighted_model', self._get_weighted_model(model_instance.steps[-1][1]))\n        return ret_model\n\n    def _fit_weighted_pipeline(self, model_instance, x, y, weights):\n        if type(model_instance) != 'Pipeline':\n            model_instance.fit(x, y, weights)\n        else:\n            model_instance.fit(x, y, weighted_model__sample_weight=weights)\n\n\nclass OrthoForest(DishonestOrthoForest):\n    \"\"\"A two-forest approach for learning treatment effects with\n        kernel two stage estimation for predicting treatment effects.\n\n    Parameters\n    ----------\n    n_trees : integer, optional (default=10)\n        Number of causal estimators in the forest.\n\n    min_leaf_size : integer, optional (default=20)\n        The minimum number of samples in a leaf.\n\n    max_splits : integer, optional (default=10)\n        The maximum number of splits to be performed when expanding the tree. \n\n    subsample_ratio : float, optional (default=1.0)\n        The ratio of the total sample to be used when training a causal tree.\n        Values greater than 1.0 will be considered equal to 1.0.\n        Parameter is ignored when bootstrap=True.\n\n    bootstrap : boolean, optional (default=True)\n        Whether to use bootstrap subsampling. \n\n    residualizer : class, optional (default=dml)\n        The residualizer to be used at the leafs to for removing confounding effects.\n        Two out of the box options provided: `dml` (double machine learning) and\n        `second_order_dml` (second order double machine learning), but users can\n        define a custom residualizer as long as the interface matches the `dml`\n        interface.\n\n    model_T : estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the treatment at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_Y :  estimator, optional (default=sklearn.linear_model.LassoCV())\n        The estimator for residualizing the outcome at the leaf. Must implement\n        `fit` and `predict` methods.\n\n    model_T_final : estimator, optional (default=None)\n        The estimator for residualizing the treatment at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to `None`, it defaults to the\n        value of `model_T` parameter. \n\n    model_Y_final : estimator, optional (default=None)\n    The estimator for residualizing the outcome at prediction time. Must implement\n        `fit` and `predict` methods. If parameter is set to `None`, it defaults to the\n        value of `model_Y` parameter.\n    \"\"\"\n\n    def __init__(self, n_trees=10, min_leaf_size=20, max_splits=10,\n                 subsample_ratio=1.0, bootstrap=True,\n                 residualizer=dml,\n                 model_T=LassoCV(),\n                 model_Y=LassoCV(),\n                 model_T_final=None,\n                 model_Y_final=None):\n        super(OrthoForest, self).__init__(n_trees=n_trees,\n                                          min_leaf_size=min_leaf_size,\n                                          max_splits=max_splits,\n                                          subsample_ratio=subsample_ratio, bootstrap=bootstrap,\n                                          residualizer=residualizer,\n                                          model_T=model_T,\n                                          model_Y=model_Y,\n                                          model_T_final=model_T_final,\n                                          model_Y_final=model_Y_final)\n\n    def fit(self, W, x, T, Y):\n        \"\"\"Build an orthogonal random forest from a training set (W, x, T, Y)\n\n        Parameters\n        ----------\n        W : array_like, shape [n_samples, n_controls]\n            High-dimensional controls.\n\n        x : array_like, shape [n_samples, n_features]\n            Feature vector that captures heterogeneity.\n\n        T : array_like, shape [n_samples]\n            Treatment policy.\n\n        Y : array_like, shape [n_samples]\n            Outcome for the treatment policy.\n        \"\"\"\n        n = int(W.shape[0] / 2)\n        self.W_one = W[:n]\n        self.W_two = W[n:]\n        self.T_one = T[:n]\n        self.T_two = T[n:]\n        self.Y_one = Y[:n]\n        self.Y_two = Y[n:]\n        self.x_one = x[:n]\n        self.x_two = x[n:]\n        self.forest_one_subsample_ind, self.forest_one_trees = self.fit_forest(\n            W=self.W_one, x=self.x_one, T=self.T_one, Y=self.Y_one)\n        self.forest_two_subsample_ind, self.forest_two_trees = self.fit_forest(\n            W=self.W_two, x=self.x_two, T=self.T_two, Y=self.Y_two)\n\n    def _predict(self, x, weights=False):\n        results = Parallel(n_jobs=-1, verbose=3)(\n            delayed(self._point_predict)(x_out, weights) for x_out in x)\n        if weights:\n            out_tau = [r[0] for r in results]\n            x_weights = np.zeros((len(self.x_two), len(x)))\n            for x_ind, x_out in enumerate(x):\n                x_weights[:, x_ind] = results[x_ind][1]\n            return out_tau, np.concatenate((self.x_two, x_weights), axis=1)\n        return results\n\n    def _point_predict(self, x_out, weights=False):\n        model_T = self._get_weighted_pipeline(self.model_T_final)\n        model_Y = self._get_weighted_pipeline(self.model_Y_final)\n        w, a = self._get_weights(x_out)\n        mask_w = (w != 0)\n        mask_a = (a != 0)\n        w_nonzero = w[mask_w]\n        a_nonzero = a[mask_a]\n        self._fit_weighted_pipeline(model_T, self.W_one[mask_w], self.T_one[mask_w], w_nonzero)\n        self._fit_weighted_pipeline(model_Y, self.W_one[mask_w], self.Y_one[mask_w], w_nonzero)\n        res_T = self.T_two[mask_a] - model_T.predict(self.W_two[mask_a])\n        res_Y = self.Y_two[mask_a] - model_Y.predict(self.W_two[mask_a])\n        # Weighted linear regression\n        out_tau = np.dot(res_T, a_nonzero * res_Y) / np.dot(res_T, a_nonzero * res_T)\n        if weights:\n            return out_tau, a\n        return out_tau\n\n    def _get_weights(self, x_out):\n        # Calculates weights\n        w = np.zeros(self.W_one.shape[0])\n        a = np.zeros(self.W_two.shape[0])\n        for t, tree in enumerate(self.forest_one_trees):\n            leaf = tree.ct.find_split(x_out)\n            weight_indexes = self.forest_one_subsample_ind[t][leaf.est_sample_inds]\n            leaf_weight = 1 / len(leaf.est_sample_inds)\n            # Bootstraping has repetitions in tree sample so we need to iterate\n            # over all indices\n            for ind in weight_indexes:\n                w[ind] += leaf_weight\n        for t, tree in enumerate(self.forest_two_trees):\n            leaf = tree.ct.find_split(x_out)\n            # Similar for `a` weights\n            weight_indexes = self.forest_two_subsample_ind[t][leaf.est_sample_inds]\n            leaf_weight = 1 / len(leaf.est_sample_inds)\n            for ind in weight_indexes:\n                a[ind] += leaf_weight\n        return (w, a)\n\n\nclass ModelWrapper(object):\n    \"\"\"Helper class for assiging weights to models without this option.\n\n        Parameters\n        ----------\n        model_instance : estimator\n            Model that requires weights.\n\n        sample_type : string, optional (default=`weighted`)\n            Method for adding weights to the model. `wighted` for linear models\n            where the weights can be incorporated in the matrix multiplication,\n            `sampled` for other models. `sampled` samples the training set according\n            to the normalized weights and creates a dataset larger than the original.\n\n        \"\"\"\n\n    def __init__(self, model_instance, sample_type=\"weighted\"):\n        self.model_instance = model_instance\n        if sample_type == \"weighted\":\n            self.data_transform = self._weighted_inputs\n        else:\n            warnings.warn(\"The model provided does not support sample weights. \" +\n                          \"Manual weighted sampling may icrease the variance in the results.\")\n            self.data_transform = self._sampled_inputs\n\n    def __getattr__(self, name):\n        func = getattr(self.__dict__['model_instance'], name)\n        if name == \"fit\":\n            return self._fit(func)\n        else:\n            return func\n\n    def _fit(self, func):\n        def fit(X, y, sample_weight=None):\n            if sample_weight is None:\n                return func(X, y)\n            X, y = self.data_transform(X, y, sample_weight)\n            return func(X, y)\n        return fit\n\n    def _weighted_inputs(self, X, y, sample_weight):\n        normalized_weights = X.shape[0] * sample_weight / np.sum(sample_weight)\n        sqrt_weights = np.sqrt(normalized_weights)\n        return (X.T * sqrt_weights).T, sqrt_weights * y\n\n    def _sampled_inputs(self, X, y, sample_weight):\n        # normalize weights\n        normalized_weights = sample_weight / np.sum(sample_weight)\n        data_length = int(min(1 / np.min(normalized_weights[normalized_weights > 0]), 10) * X.shape[0])\n        data_indices = np.random.choice(X.shape[0], size=data_length, p=normalized_weights)\n        return X[data_indices], y[data_indices]\n"
  },
  {
    "path": "prototypes/orthogonal_forests/residualizer.py",
    "content": "\"\"\"Example implementations of residualizers used by the Orthogonal Forest algorithm.\n\"\"\"\n\nimport numpy as np\nfrom sklearn.linear_model import LassoCV\nfrom sklearn.model_selection import KFold\n\ndef dml(W, T, Y, model_T=LassoCV(alphas=[0.01, 0.05, 0.1, 0.3, 0.5, 0.9, 5, 10]),\n                 model_Y=LassoCV(alphas=[0.01, 0.05, 0.1, 0.3, 0.5, 0.9, 5, 10])):\n    '''\n    This is the double ml process of Chernozhukov et al 2016, for computing a treatment \n    effect on any given sample. To be used as a black box by the forest to compute coefficients on splits.\n    '''\n    res_T = np.zeros(W.shape[0])\n    res_Y = np.zeros(W.shape[0])\n    \n    kf = KFold(n_splits=2)\n    for train_index, test_index in kf.split(W):\n        # Split the data in half, train and test\n        W_train, T_train, Y_train = W[train_index], T[train_index], Y[train_index]\n        W_test, T_test, Y_test  = W[test_index], T[test_index], Y[test_index]\n        \n        # Fit with LassoCV the treatment as a function of x and the outcome as\n        # a function of x, using only the train fold\n        model_T.fit(W_train, T_train)\n        model_Y.fit(W_train, Y_train)\n        \n        # Then compute residuals p-g(x) and q-q(x) on test fold\n        res_T[test_index] = (T_test - model_T.predict(W_test)).flatten()\n        res_Y[test_index] = (Y_test - model_Y.predict(W_test)).flatten()\n\n    # Compute coefficient by OLS on residuals\n    return np.sum(np.multiply(res_Y, res_T))/np.sum(np.multiply(res_T, res_T)), res_T, res_Y\n\ndef second_order_dml(W, T, Y, model_T=LassoCV(alphas=[0.01, 0.05, 0.1, 0.3, 0.5, 0.9, 5, 10]),\n                              model_Y=LassoCV(alphas=[0.01, 0.05, 0.1, 0.3, 0.5, 0.9, 5, 10])):\n    '''\n    This is the second order orthogonal estimation approach proposed in Mackey, Syrgkanis, Zadik, 2017\n    which maintains unbiasedness under even slower first stage rates.\n    '''\n    res_T = np.zeros(W.shape[0])\n    res_Y = np.zeros(W.shape[0])\n    mult_T_est_split = np.zeros(W.shape[0])\n    \n    kf = KFold(n_splits=2)\n    for train_index, test_index in kf.split(W):\n        # Split the data in half, train and test\n        W_train, T_train, Y_train = W[train_index], T[train_index], Y[train_index]\n        W_test, T_test, Y_test  = W[test_index], T[test_index], Y[test_index]\n        \n        # Fit with LassoCV the treatment as a function of x and the outcome as\n        # a function of x, using only the train fold\n        model_T.fit(W_train, T_train)\n        model_Y.fit(W_train, Y_train)\n        \n        # Then compute residuals p-g(x) and q-q(x) on test fold\n        res_T[test_index] = (T_test - model_T.predict(W_test)).flatten()\n        res_Y[test_index] = (Y_test - model_Y.predict(W_test)).flatten()\n\n        # Estimate multipliers for second order orthogonal method \n        nested_kf = KFold(n_splits=2)\n        for nested_train_index, nested_test_index in nested_kf.split(W):\n            res_T_first = res_T[test_index[nested_train_index]]\n            second_T_est = np.mean(res_T_first**2)\n            cube_T_est = np.mean(res_T_first**3) - 3 * np.mean(res_T_first) * np.mean(res_T_first**2)\n            res_T_second = res_T[test_index[nested_test_index]]\n            mult_T_est_split[test_index[nested_test_index]] = res_T_second**3 - 3 * second_T_est * res_T_second - cube_T_est\n\n    theta = np.mean(res_Y * mult_T_est_split) / np.mean(res_T * mult_T_est_split)\n    return theta, res_T, res_Y\n"
  },
  {
    "path": "prototypes/orthogonal_forests/seq_map.sh",
    "content": "dir=$1\ntefunc=$2\noutdir=\"${1}_postprocess_results\"\nmkdir -p $dir\nmkdir -p $outdir\necho $dir\necho $outdir\n# Monte Carlo parameters\nn_dim=500\nn_samples=5000\nn_experiments=100\nn_x=1\nn_trees=100\nbootstrap=0\nsubsample_power=0.88\nmin_leaf_size=5\nmax_splits=20\nit=0\nfor tuples in 0,'--R' 1,'' 3,'' 4,''; \ndo \n    IFS=',' read method_id run_R <<< \"${tuples}\"\n    for support_size in 5 10;\n    do  \n        echo \"Method id: ${method_id}\"          \n        echo $run_R >> \"${dir}/log_${it}.txt\"\n        echo $it >> \"${dir}/overall_log.txt\"\n        echo \"Iteration ${it}\" &>> \"${dir}/log_${it}.txt\"\n        python monte_carlo.py --output_dir $dir --n_experiments $n_experiments --n_dim $n_dim --support_size $support_size --n_x $n_x --n_samples $n_samples --te_func $2 --max_splits $max_splits --min_leaf_size $min_leaf_size --n_trees $n_trees --bootstrap $bootstrap --subsample_power $subsample_power --method_id $method_id $run_R &>> \"${dir}/log_${it}.txt\"\n        it=$((it+1))\n    done\ndone\n\npython comparison_plots.py --output_dir $outdir --input_dir $dir -merge &>> \"${outdir}/log_${it}.txt\"\necho \"DONE\""
  },
  {
    "path": "prototypes/sensitivity_analysis/ovb_dml.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"from sklearn.model_selection import KFold\\n\",\n    \"from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\\n\",\n    \"from econml.utilities import _safe_norm_ppf\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def dml_sim(model_t, model_y, n_folds, Y, T, X):\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    DML for a single treatment and outcome.\\n\",\n    \" \\n\",\n    \"    Parameters\\n\",\n    \"    ----------\\n\",\n    \"    model_t : object\\n\",\n    \"        A fitted model object for the treatment.\\n\",\n    \"    model_y : object\\n\",\n    \"        A fitted model object for the outcome.\\n\",\n    \"    n_folds : int\\n\",\n    \"        The number of folds to use in cross-validation.\\n\",\n    \"    Y : array-like\\n\",\n    \"        The outcome variable.\\n\",\n    \"    T : array-like\\n\",\n    \"        The treatment variable.\\n\",\n    \"    X : array-like\\n\",\n    \"        The covariates.\\n\",\n    \" \\n\",\n    \"    Returns\\n\",\n    \"    -------\\n\",\n    \"    float\\n\",\n    \"        The estimated treatment effect.\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \" \\n\",\n    \"    # Initialize KFold cross-validation\\n\",\n    \"    kf = KFold(n_splits=n_folds, shuffle=True)\\n\",\n    \" \\n\",\n    \"    # Initialize arrays to hold predictions\\n\",\n    \"    y_res = np.zeros_like(Y)\\n\",\n    \"    t_res = np.zeros_like(T)\\n\",\n    \" \\n\",\n    \"    # Cross-validation loop\\n\",\n    \"    for train_index, test_index in kf.split(X):\\n\",\n    \"        X_train, X_test = X[train_index], X[test_index]\\n\",\n    \"        Y_train, Y_test = Y[train_index], Y[test_index]\\n\",\n    \"        T_train, T_test = T[train_index], T[test_index]\\n\",\n    \" \\n\",\n    \"        # Fit the treatment model\\n\",\n    \"        t_res[test_index] = T_test-model_t.fit(X_train, T_train).predict(X_test).reshape(T_test.shape)\\n\",\n    \" \\n\",\n    \"        # Fit the outcome model\\n\",\n    \"        y_res[test_index] = Y_test-model_y.fit(X_train, Y_train).predict(X_test).reshape(Y_test.shape)\\n\",\n    \"\\n\",\n    \"    # for testing.. use econml nuisances\\n\",\n    \"    # y_res = econ_y_res.reshape(-1, 1)  # Reshape y_res to be a column vector\\n\",\n    \"    # t_res = econ_t_res.reshape(-1, 1)  # Reshape t_res to be a column vector\\n\",\n    \" \\n\",\n    \"    # ATE, sigma^2, and nu^2\\n\",\n    \"    \\n\",\n    \"\\n\",\n    \"    # print('rmse t', np.mean(t_res**2)**0.5)\\n\",\n    \"    # print('rmse y:', np.mean(y_res**2)**0.5)\\n\",\n    \"\\n\",\n    \"    # smlr = StatsModelsLinearRegression(fit_intercept=False).fit(t_res, y_res)\\n\",\n    \"    # theta_smlr = smlr.coef_[0]\\n\",\n    \"    # var_smlr = smlr._var[0][0]\\n\",\n    \"    # print('theta_smlr:', theta_smlr)\\n\",\n    \"    # print('var_smlr:', var_smlr)\\n\",\n    \"    # print('se_smlr:', np.sqrt(var_smlr))\\n\",\n    \" \\n\",\n    \"    theta = np.mean(y_res*t_res) / np.mean(t_res**2)  # Estimate the treatment effect\\n\",\n    \"    # print('theta:', theta)\\n\",\n    \"    sigma2 = np.mean((y_res - theta*t_res)**2)  # Estimate the variance of the outcome residuals (after subtracting the treatment effect)\\n\",\n    \"    nu2 = 1/np.mean(t_res**2)  # Estimate the variance of the treatment\\n\",\n    \"    ests = np.array([theta, sigma2, nu2])  # Estimated parameters\\n\",\n    \" \\n\",\n    \"    ls = np.concatenate([t_res**2, np.ones_like(t_res), t_res**2], axis=1)\\n\",\n    \" \\n\",\n    \"    G = np.diag(np.mean(ls, axis=0))  # G matrix, diagonal with means of ls\\n\",\n    \"    G_inv = np.linalg.inv(G)  # Inverse of G matrix, could just take reciprocals since it's diagonal\\n\",\n    \" \\n\",\n    \" \\n\",\n    \"    residuals = np.concatenate([y_res*t_res-theta*t_res*t_res, (y_res-theta*t_res)**2-sigma2, t_res**2*nu2-1], axis=1)  # Combine residuals\\n\",\n    \"    Ω = residuals.T @ residuals / len(residuals)  # Estimate the covariance matrix of the residuals\\n\",\n    \"    cov = G_inv @ Ω @ G_inv / len(residuals)  # Estimate the variance of the parameters\\n\",\n    \" \\n\",\n    \"    return theta, sigma2, nu2, cov\\n\",\n    \"\\n\",\n    \"def sensitivity_interval(theta, sigma, nu, cov, alpha, c_y, c_t, rho):\\n\",\n    \"    # [theta, sigma, nu] = ests\\n\",\n    \"    C = np.abs(rho) * np.sqrt(c_y) * np.sqrt(c_t/(1-c_t)) / 2\\n\",\n    \"    ests = np.array([theta, sigma, nu])\\n\",\n    \"    coefs_p = np.array([1, C*np.sqrt(nu/sigma), C*np.sqrt(sigma/nu)])\\n\",\n    \"    coefs_n = np.array([1, -C*np.sqrt(nu/sigma), -C*np.sqrt(sigma/nu)])\\n\",\n    \"    # One dimensional normal distribution:\\n\",\n    \"    sigma_p = coefs_p @ cov @ coefs_p\\n\",\n    \"    sigma_n = coefs_n @ cov @ coefs_n\\n\",\n    \"\\n\",\n    \"    lb = _safe_norm_ppf(alpha / 2, loc=ests @ coefs_n, scale=np.sqrt(sigma_n))\\n\",\n    \"    ub = _safe_norm_ppf(1 - alpha / 2, loc=ests @ coefs_p, scale=np.sqrt(sigma_p))\\n\",\n    \"\\n\",\n    \"    return (lb, ub)\\n\",\n    \"\\n\",\n    \"def RV(theta, sigma, nu, cov, alpha):\\n\",\n    \"    # The robustness value is the degree of confounding of *both* the treatment and the outcome that still produces an interval\\n\",\n    \"    # that excludes zero.\\n\",\n    \"\\n\",\n    \"    # We're looking for a value of r such that the sensitivity bounds just touch zero\\n\",\n    \"\\n\",\n    \"    r = 0\\n\",\n    \"    r_up = 1\\n\",\n    \"    r_down = 0\\n\",\n    \"    lb, ub = sensitivity_interval(theta, sigma, nu, cov, alpha, 0, 0, 1)\\n\",\n    \"    if lb < 0 and ub > 0:\\n\",\n    \"        return 0\\n\",\n    \"    \\n\",\n    \"    else:\\n\",\n    \"        if lb > 0:\\n\",\n    \"            target = 0\\n\",\n    \"            mult = 1\\n\",\n    \"            d = lb\\n\",\n    \"        else:\\n\",\n    \"            target = 1\\n\",\n    \"            mult = -1\\n\",\n    \"            d = ub\\n\",\n    \"\\n\",\n    \"    while abs(d) > 1e-6:\\n\",\n    \"        d = mult * sensitivity_interval(theta, sigma, nu, cov, alpha, r, r, 1)[target]\\n\",\n    \"        if d > 0:\\n\",\n    \"            r_down = r\\n\",\n    \"        else:\\n\",\n    \"            r_up = r\\n\",\n    \"\\n\",\n    \"        r = (r_down + r_up) / 2\\n\",\n    \"        \\n\",\n    \"    return r\\n\",\n    \"\\n\",\n    \"    \\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Simulate data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.linear_model import LinearRegression\\n\",\n    \"\\n\",\n    \"n = 1000\\n\",\n    \"\\n\",\n    \"alpha = np.random.normal(size=30)\\n\",\n    \"beta = np.random.normal(size=30)\\n\",\n    \"\\n\",\n    \"X = np.random.normal(size=(n,30))\\n\",\n    \"\\n\",\n    \"t = np.random.normal(size=n) + 2 * X @ alpha\\n\",\n    \"y = np.random.normal(size=n) + 3*t + 50* X @ beta\\n\",\n    \"\\n\",\n    \"T = t.reshape(-1, 1)\\n\",\n    \"Y = y.reshape(-1, 1)\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Simple example\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Run simple dml and calculate intermediate values\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"sig_level = 0.1\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dml_sim(LinearRegression(), LinearRegression(), 2, Y, T, X)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Calculate a \\\"sensitivity interval\\\". \\n\",\n    \"\\n\",\n    \"Need to supply \\\"strength of latent confounder\\\" as argument.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(1.9713167396783304, 3.992013510060846)\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.6, 0.6, 1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Calculate Robustness Value. \\n\",\n    \"\\n\",\n    \"The required strength of a latent confounder in order for the confidence interval to include 0.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.9007053971290588\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"RV(theta, sigma, nu, sig, sig_level)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Ablations\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'i': 30,\\n\",\n       \" 'alpha': 0.1,\\n\",\n       \" 'sensitivity_interval': (2.006244806224368, 4.0212629919887455),\\n\",\n       \" 'RV': 0.9028782248497009}\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level = 0.1\\n\",\n    \"\\n\",\n    \"results = []\\n\",\n    \"for i in [1, 5, 15, 30]:\\n\",\n    \"    theta, sigma, nu, sig = dml_sim(LinearRegression(), LinearRegression(), 2, Y, T, X[:,:i])\\n\",\n    \"    result_dict = {\\n\",\n    \"        'i': i,\\n\",\n    \"        'alpha': sig_level,\\n\",\n    \"        'sensitivity_interval': sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.6, 0.6, 1),\\n\",\n    \"        'RV': RV(theta, sigma, nu, sig, sig_level)\\n\",\n    \"    }\\n\",\n    \"    results.append(result_dict)\\n\",\n    \"                   \\n\",\n    \"results[-1]\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>i</th>\\n\",\n       \"      <th>alpha</th>\\n\",\n       \"      <th>sensitivity_interval</th>\\n\",\n       \"      <th>RV</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>(-5.76103393577295, 30.16877869667943)</td>\\n\",\n       \"      <td>0.463505</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>(-4.254207344618898, 31.474674283379382)</td>\\n\",\n       \"      <td>0.503265</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>15</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>(2.926606519518738, 25.91115187623303)</td>\\n\",\n       \"      <td>0.679077</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>30</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>(2.006244806224368, 4.0212629919887455)</td>\\n\",\n       \"      <td>0.902878</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"    i  alpha                      sensitivity_interval        RV\\n\",\n       \"0   1    0.1    (-5.76103393577295, 30.16877869667943)  0.463505\\n\",\n       \"1   5    0.1  (-4.254207344618898, 31.474674283379382)  0.503265\\n\",\n       \"2  15    0.1    (2.926606519518738, 25.91115187623303)  0.679077\\n\",\n       \"3  30    0.1   (2.006244806224368, 4.0212629919887455)  0.902878\"\n      ]\n     },\n     \"execution_count\": 8,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"(\\n\",\n    \"    pd.DataFrame(results)\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DoubleML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import doubleml as dml\\n\",\n    \"import pandas as pd\\n\",\n    \"import numpy as np\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Y</th>\\n\",\n       \"      <th>T</th>\\n\",\n       \"      <th>X0</th>\\n\",\n       \"      <th>X1</th>\\n\",\n       \"      <th>X2</th>\\n\",\n       \"      <th>X3</th>\\n\",\n       \"      <th>X4</th>\\n\",\n       \"      <th>X5</th>\\n\",\n       \"      <th>X6</th>\\n\",\n       \"      <th>X7</th>\\n\",\n       \"      <th>...</th>\\n\",\n       \"      <th>X20</th>\\n\",\n       \"      <th>X21</th>\\n\",\n       \"      <th>X22</th>\\n\",\n       \"      <th>X23</th>\\n\",\n       \"      <th>X24</th>\\n\",\n       \"      <th>X25</th>\\n\",\n       \"      <th>X26</th>\\n\",\n       \"      <th>X27</th>\\n\",\n       \"      <th>X28</th>\\n\",\n       \"      <th>X29</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>169.161860</td>\\n\",\n       \"      <td>7.570734</td>\\n\",\n       \"      <td>-1.720637</td>\\n\",\n       \"      <td>-0.480190</td>\\n\",\n       \"      <td>1.793066</td>\\n\",\n       \"      <td>-0.909049</td>\\n\",\n       \"      <td>-0.491242</td>\\n\",\n       \"      <td>0.407515</td>\\n\",\n       \"      <td>-2.719292</td>\\n\",\n       \"      <td>0.214566</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>-1.236440</td>\\n\",\n       \"      <td>0.460231</td>\\n\",\n       \"      <td>-0.266955</td>\\n\",\n       \"      <td>0.185816</td>\\n\",\n       \"      <td>0.729663</td>\\n\",\n       \"      <td>1.324584</td>\\n\",\n       \"      <td>-0.091459</td>\\n\",\n       \"      <td>1.387470</td>\\n\",\n       \"      <td>-0.982113</td>\\n\",\n       \"      <td>-2.001484</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>-368.478684</td>\\n\",\n       \"      <td>-10.259294</td>\\n\",\n       \"      <td>1.502222</td>\\n\",\n       \"      <td>-0.351112</td>\\n\",\n       \"      <td>0.326909</td>\\n\",\n       \"      <td>0.383989</td>\\n\",\n       \"      <td>1.019918</td>\\n\",\n       \"      <td>0.102063</td>\\n\",\n       \"      <td>-1.172437</td>\\n\",\n       \"      <td>2.210359</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>-1.044021</td>\\n\",\n       \"      <td>-0.816131</td>\\n\",\n       \"      <td>0.288329</td>\\n\",\n       \"      <td>-0.428007</td>\\n\",\n       \"      <td>1.047723</td>\\n\",\n       \"      <td>-0.058769</td>\\n\",\n       \"      <td>-0.664951</td>\\n\",\n       \"      <td>-0.111616</td>\\n\",\n       \"      <td>1.111973</td>\\n\",\n       \"      <td>0.214340</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>595.208775</td>\\n\",\n       \"      <td>3.414269</td>\\n\",\n       \"      <td>-0.584506</td>\\n\",\n       \"      <td>-0.410095</td>\\n\",\n       \"      <td>-0.085977</td>\\n\",\n       \"      <td>0.515477</td>\\n\",\n       \"      <td>1.374335</td>\\n\",\n       \"      <td>1.912329</td>\\n\",\n       \"      <td>-0.645654</td>\\n\",\n       \"      <td>-0.413862</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>-0.029845</td>\\n\",\n       \"      <td>-1.035931</td>\\n\",\n       \"      <td>-0.146995</td>\\n\",\n       \"      <td>-1.224990</td>\\n\",\n       \"      <td>-2.704679</td>\\n\",\n       \"      <td>1.110162</td>\\n\",\n       \"      <td>-0.191411</td>\\n\",\n       \"      <td>0.852031</td>\\n\",\n       \"      <td>-0.457792</td>\\n\",\n       \"      <td>-2.563874</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>265.170499</td>\\n\",\n       \"      <td>21.740763</td>\\n\",\n       \"      <td>0.285862</td>\\n\",\n       \"      <td>-0.802048</td>\\n\",\n       \"      <td>0.211192</td>\\n\",\n       \"      <td>-0.799453</td>\\n\",\n       \"      <td>0.643080</td>\\n\",\n       \"      <td>-0.379773</td>\\n\",\n       \"      <td>0.055227</td>\\n\",\n       \"      <td>1.142309</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>-0.290620</td>\\n\",\n       \"      <td>-1.175747</td>\\n\",\n       \"      <td>0.404689</td>\\n\",\n       \"      <td>-1.427746</td>\\n\",\n       \"      <td>0.069783</td>\\n\",\n       \"      <td>0.237225</td>\\n\",\n       \"      <td>-0.983619</td>\\n\",\n       \"      <td>0.459482</td>\\n\",\n       \"      <td>-0.306016</td>\\n\",\n       \"      <td>1.853582</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>66.916752</td>\\n\",\n       \"      <td>12.252024</td>\\n\",\n       \"      <td>-1.129366</td>\\n\",\n       \"      <td>-1.768697</td>\\n\",\n       \"      <td>-1.095474</td>\\n\",\n       \"      <td>0.536305</td>\\n\",\n       \"      <td>1.300771</td>\\n\",\n       \"      <td>0.316005</td>\\n\",\n       \"      <td>0.877389</td>\\n\",\n       \"      <td>-0.117935</td>\\n\",\n       \"      <td>...</td>\\n\",\n       \"      <td>-0.062981</td>\\n\",\n       \"      <td>0.789482</td>\\n\",\n       \"      <td>1.940387</td>\\n\",\n       \"      <td>1.153639</td>\\n\",\n       \"      <td>0.741752</td>\\n\",\n       \"      <td>-0.210623</td>\\n\",\n       \"      <td>0.046603</td>\\n\",\n       \"      <td>1.389971</td>\\n\",\n       \"      <td>-0.172416</td>\\n\",\n       \"      <td>0.265279</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"<p>5 rows × 32 columns</p>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"            Y          T        X0        X1        X2        X3        X4  \\\\\\n\",\n       \"0  169.161860   7.570734 -1.720637 -0.480190  1.793066 -0.909049 -0.491242   \\n\",\n       \"1 -368.478684 -10.259294  1.502222 -0.351112  0.326909  0.383989  1.019918   \\n\",\n       \"2  595.208775   3.414269 -0.584506 -0.410095 -0.085977  0.515477  1.374335   \\n\",\n       \"3  265.170499  21.740763  0.285862 -0.802048  0.211192 -0.799453  0.643080   \\n\",\n       \"4   66.916752  12.252024 -1.129366 -1.768697 -1.095474  0.536305  1.300771   \\n\",\n       \"\\n\",\n       \"         X5        X6        X7  ...       X20       X21       X22       X23  \\\\\\n\",\n       \"0  0.407515 -2.719292  0.214566  ... -1.236440  0.460231 -0.266955  0.185816   \\n\",\n       \"1  0.102063 -1.172437  2.210359  ... -1.044021 -0.816131  0.288329 -0.428007   \\n\",\n       \"2  1.912329 -0.645654 -0.413862  ... -0.029845 -1.035931 -0.146995 -1.224990   \\n\",\n       \"3 -0.379773  0.055227  1.142309  ... -0.290620 -1.175747  0.404689 -1.427746   \\n\",\n       \"4  0.316005  0.877389 -0.117935  ... -0.062981  0.789482  1.940387  1.153639   \\n\",\n       \"\\n\",\n       \"        X24       X25       X26       X27       X28       X29  \\n\",\n       \"0  0.729663  1.324584 -0.091459  1.387470 -0.982113 -2.001484  \\n\",\n       \"1  1.047723 -0.058769 -0.664951 -0.111616  1.111973  0.214340  \\n\",\n       \"2 -2.704679  1.110162 -0.191411  0.852031 -0.457792 -2.563874  \\n\",\n       \"3  0.069783  0.237225 -0.983619  0.459482 -0.306016  1.853582  \\n\",\n       \"4  0.741752 -0.210623  0.046603  1.389971 -0.172416  0.265279  \\n\",\n       \"\\n\",\n       \"[5 rows x 32 columns]\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"df = pd.concat([\\n\",\n    \"    pd.DataFrame(Y).squeeze().to_frame('Y'),\\n\",\n    \"    pd.DataFrame(T).squeeze().to_frame('T'),\\n\",\n    \"    pd.DataFrame(X).add_prefix('X'),\\n\",\n    \"], axis=1)\\n\",\n    \"\\n\",\n    \"df.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<doubleml.double_ml_data.DoubleMLData at 0x198557e2e30>\"\n      ]\n     },\n     \"execution_count\": 11,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dml_data = dml.DoubleMLData(df, 'Y', 'T')\\n\",\n    \"dml_data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLPLR Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: Y\\n\",\n      \"Treatment variable(s): ['T']\\n\",\n      \"Covariates: ['X0', 'X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7', 'X8', 'X9', 'X10', 'X11', 'X12', 'X13', 'X14', 'X15', 'X16', 'X17', 'X18', 'X19', 'X20', 'X21', 'X22', 'X23', 'X24', 'X25', 'X26', 'X27', 'X28', 'X29']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 1000\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: partialling out\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_l: LinearRegression()\\n\",\n      \"Learner ml_m: LinearRegression()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_l RMSE: [[3.19708721]]\\n\",\n      \"Learner ml_m RMSE: [[1.01678607]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 2\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"       coef   std err          t  P>|t|     2.5 %    97.5 %\\n\",\n      \"T  2.992753  0.032487  92.121737    0.0  2.929079  3.056426\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLPLR(dml_data,\\n\",\n    \"                          ml_l=LinearRegression(),\\n\",\n    \"                          ml_m=LinearRegression(),\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='partialling out',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.03; cf_d=0.03, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0  2.909926     2.963376  2.992753     3.022129  3.075592\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0     RV (%)    RVa (%)\\n\",\n      \"0  0.0  91.336809  90.546872\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.03, cf_d=0.03, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"   cf_y     cf_d  rho  delta_theta\\n\",\n      \"T   1.0  0.13301 -1.0    -7.112185\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"sens_benchmark = dml_obj.sensitivity_benchmark(benchmarking_set=[\\\"X6\\\"])\\n\",\n    \"print(sens_benchmark)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# New datasets\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### DoubleML confounded synthetic data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from doubleml.datasets import make_confounded_plr_data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"cf_y = 0.1\\n\",\n    \"cf_d = 0.1\\n\",\n    \"theta = 5.0\\n\",\n    \"dpg_dict = make_confounded_plr_data(n_obs=10000, cf_y=cf_y, cf_d=cf_d, theta=theta)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"x_cols = [f'X{i + 1}' for i in np.arange(dpg_dict['x'].shape[1])]\\n\",\n    \"df = pd.DataFrame(np.column_stack((dpg_dict['x'], dpg_dict['y'], dpg_dict['d'])), columns=x_cols + ['y', 'd'])\\n\",\n    \"dml_data = dml.DoubleMLData(df, 'y', 'd')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.ensemble import RandomForestRegressor\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLPLR Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: y\\n\",\n      \"Treatment variable(s): ['d']\\n\",\n      \"Covariates: ['X1', 'X2', 'X3', 'X4']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 10000\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: partialling out\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_l: RandomForestRegressor()\\n\",\n      \"Learner ml_m: RandomForestRegressor()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_l RMSE: [[8.43266256]]\\n\",\n      \"Learner ml_m RMSE: [[1.13959992]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 2\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"       coef   std err          t  P>|t|     2.5 %    97.5 %\\n\",\n      \"d  4.386734  0.076845  57.085535    0.0  4.236121  4.537348\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLPLR(dml_data,\\n\",\n    \"                          ml_l=RandomForestRegressor(),\\n\",\n    \"                          ml_m=RandomForestRegressor(),\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='partialling out',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.1; cf_d=0.1, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0  3.652547     3.758583  4.386734     5.014886  5.170425\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0     RV (%)    RVa (%)\\n\",\n      \"0  0.0  51.346635  49.604976\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.1, cf_d=0.1, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(10000,)\"\n      ]\n     },\n     \"execution_count\": 21,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dpg_dict['y'].shape\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 22,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"(4.84204509497674, 5.158534499404629)\"\n      ]\n     },\n     \"execution_count\": 22,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.1, 0.1, 1)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sig': array([[ 5.97407504e-03, -1.67034912e-01, -5.43651824e-05],\\n\",\n       \"        [-1.67034912e-01,  1.20203175e+01,  2.52109790e-03],\\n\",\n       \"        [-5.43651824e-05,  2.52109790e-03,  1.18426109e-04]]),\\n\",\n       \" 'sensitivity_interval': (-1.6122852078135446, 10.442290925119165),\\n\",\n       \" 'RV': 0.4936022162437439}\"\n      ]\n     },\n     \"execution_count\": 23,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dml_sim(\\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    2, \\n\",\n    \"    dpg_dict['y'].reshape(-1, 1),\\n\",\n    \"    dpg_dict['d'].reshape(-1, 1),\\n\",\n    \"    dpg_dict['x']\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sig': sig,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.6, 0.6, 1),\\n\",\n    \"    'RV': RV(theta, sigma, nu, sig, sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"0.4936022162437439\"\n      ]\n     },\n     \"execution_count\": 24,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"result_dict['RV']\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 401k data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dml_data = dml.datasets.fetch_401K()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLPLR Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: net_tfa\\n\",\n      \"Treatment variable(s): ['e401']\\n\",\n      \"Covariates: ['age', 'inc', 'educ', 'fsize', 'marr', 'twoearn', 'db', 'pira', 'hown']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 9915\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: partialling out\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_l: RandomForestRegressor()\\n\",\n      \"Learner ml_m: RandomForestRegressor()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_l RMSE: [[56554.88810261]]\\n\",\n      \"Learner ml_m RMSE: [[0.46880446]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 5\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"             coef      std err         t         P>|t|        2.5 %  \\\\\\n\",\n      \"e401  9545.723974  1260.808673  7.571112  3.700422e-14  7074.584382   \\n\",\n      \"\\n\",\n      \"            97.5 %  \\n\",\n      \"e401  12016.863565  \\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLPLR(dml_data,\\n\",\n    \"                          ml_l=RandomForestRegressor(),\\n\",\n    \"                          ml_m=RandomForestRegressor(),\\n\",\n    \"                          n_folds=5,\\n\",\n    \"                          score='partialling out',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.04; cf_d=0.04, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"      CI lower  theta lower        theta   theta upper      CI upper\\n\",\n      \"0  2409.550717  4636.205456  9545.723974  14455.242491  16511.651393\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0    RV (%)   RVa (%)\\n\",\n      \"0  0.0  7.628916  5.816637\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.04, cf_d=0.04, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 30,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.linear_model import LinearRegression, LassoCV\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sensitivity_interval': (-3259.2844095062455, 7370.312469068845),\\n\",\n       \" 'RV': 0}\"\n      ]\n     },\n     \"execution_count\": 32,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dml_sim(\\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    5, \\n\",\n    \"    dml_data.y.reshape(-1, 1),\\n\",\n    \"    dml_data.d.reshape(-1, 1),\\n\",\n    \"    dml_data.x\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# seem to get weird results here but not when I pass econml nuisances directly inside dml_sim func.\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.00001, 0.0001, 1),\\n\",\n    \"    'RV': RV(theta, sigma, nu, sig, sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Coefficient Results:  X is None, please call intercept_inference to learn the constant!\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<table class=\\\"simpletable\\\">\\n\",\n       \"<caption>CATE Intercept Results</caption>\\n\",\n       \"<tr>\\n\",\n       \"         <td></td>        <th>point_estimate</th>  <th>stderr</th>  <th>zstat</th> <th>pvalue</th> <th>ci_lower</th> <th>ci_upper</th>\\n\",\n       \"</tr>\\n\",\n       \"<tr>\\n\",\n       \"  <th>cate_intercept</th>    <td>8923.022</td>    <td>1328.008</td> <td>6.719</td>   <td>0.0</td>  <td>6320.175</td> <td>11525.87</td>\\n\",\n       \"</tr>\\n\",\n       \"</table><br/><br/><sub>A linear parametric conditional average treatment effect (CATE) model was fitted:<br/>$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$<br/>where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:<br/>$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$<br/>Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\"\n      ],\n      \"text/plain\": [\n       \"<class 'econml.utilities.Summary'>\\n\",\n       \"\\\"\\\"\\\"\\n\",\n       \"                        CATE Intercept Results                       \\n\",\n       \"=====================================================================\\n\",\n       \"               point_estimate  stderr  zstat pvalue ci_lower ci_upper\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"cate_intercept       8923.022 1328.008 6.719    0.0 6320.175 11525.87\\n\",\n       \"---------------------------------------------------------------------\\n\",\n       \"\\n\",\n       \"<sub>A linear parametric conditional average treatment effect (CATE) model was fitted:\\n\",\n       \"$Y = \\\\Theta(X)\\\\cdot T + g(X, W) + \\\\epsilon$\\n\",\n       \"where for every outcome $i$ and treatment $j$ the CATE $\\\\Theta_{ij}(X)$ has the form:\\n\",\n       \"$\\\\Theta_{ij}(X) = X' coef_{ij} + cate\\\\_intercept_{ij}$\\n\",\n       \"Coefficient Results table portrays the $coef_{ij}$ parameter vector for each outcome $i$ and treatment $j$. Intercept Results table portrays the $cate\\\\_intercept_{ij}$ parameter.</sub>\\n\",\n       \"\\\"\\\"\\\"\"\n      ]\n     },\n     \"execution_count\": 39,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"from econml.dml import LinearDML\\n\",\n    \"\\n\",\n    \"est = LinearDML(model_y=RandomForestRegressor(), model_t=RandomForestRegressor()).fit(\\n\",\n    \"    Y=dml_data.y, T=dml_data.d, W=dml_data.x, cache_values=True\\n\",\n    \")\\n\",\n    \"est.summary()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"store econml nuisances to use inside dml_sim func for debugging\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"econ_y_res, econ_t_res = est._cached_values.nuisances\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### bonus data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dml_data = dml.datasets.fetch_bonus()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLPLR Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: inuidur1\\n\",\n      \"Treatment variable(s): ['tg']\\n\",\n      \"Covariates: ['female', 'black', 'othrace', 'dep1', 'dep2', 'q2', 'q3', 'q4', 'q5', 'q6', 'agelt35', 'agegt54', 'durable', 'lusd', 'husd']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 5099\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: partialling out\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_l: RandomForestRegressor()\\n\",\n      \"Learner ml_m: RandomForestRegressor()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_l RMSE: [[1.28984655]]\\n\",\n      \"Learner ml_m RMSE: [[0.5034491]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 2\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"        coef   std err         t     P>|t|     2.5 %    97.5 %\\n\",\n      \"tg -0.079585  0.035971 -2.212475  0.026934 -0.150086 -0.009083\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLPLR(dml_data,\\n\",\n    \"                          ml_l=RandomForestRegressor(),\\n\",\n    \"                          ml_m=RandomForestRegressor(),\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='partialling out',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 35,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.04; cf_d=0.04, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0 -0.243371    -0.184128 -0.079585     0.024959  0.084101\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0    RV (%)   RVa (%)\\n\",\n      \"0  0.0  3.059967  0.794663\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.04, cf_d=0.04, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\",\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\sklearn\\\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\\n\",\n      \"  return fit_method(estimator, *args, **kwargs)\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sensitivity_interval': (-1.9404570165795167, 0.9777681976085163),\\n\",\n       \" 'RV': 0}\"\n      ]\n     },\n     \"execution_count\": 36,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dml_sim(\\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    5, \\n\",\n    \"    dml_data.y.reshape(-1, 1),\\n\",\n    \"    dml_data.d.reshape(-1, 1),\\n\",\n    \"    dml_data.x\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta, sigma, nu, sig, sig_level, 0.05, 0.05, 1),\\n\",\n    \"    'RV': RV(theta, sigma, nu, sig, sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"dev_env2\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.15\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "prototypes/sensitivity_analysis/ovb_dr.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 83,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import pandas as pd\\n\",\n    \"import numpy as np\\n\",\n    \"from sklearn.model_selection import KFold, StratifiedKFold\\n\",\n    \"from sklearn.preprocessing import OneHotEncoder\\n\",\n    \"from sklearn.linear_model import LogisticRegression, LinearRegression\\n\",\n    \"\\n\",\n    \"from econml.sklearn_extensions.linear_model import StatsModelsLinearRegression\\n\",\n    \"from econml.utilities import _safe_norm_ppf\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def dr_sim(model_t, model_y, n_folds, Y, T, X, min_t=0.01):\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    Doubly-robust learner\\n\",\n    \"\\n\",\n    \"    Parameters\\n\",\n    \"    ----------\\n\",\n    \"    model_t : object\\n\",\n    \"        A classifier for the treatment.\\n\",\n    \"    model_y : object\\n\",\n    \"        A regressor for the outcome.\\n\",\n    \"    n_folds : int\\n\",\n    \"        The number of folds to use in cross-validation.\\n\",\n    \"    Y : array-like\\n\",\n    \"        The outcome variable.\\n\",\n    \"    T : array-like\\n\",\n    \"        The treatment variable.\\n\",\n    \"    X : array-like\\n\",\n    \"        The covariates.\\n\",\n    \"\\n\",\n    \"    Returns\\n\",\n    \"    -------\\n\",\n    \"    theta : array-like\\n\",\n    \"        The estimated treatment effect per treatment.\\n\",\n    \"    sigma : array-like\\n\",\n    \"        The estimated variance of the outcome residuals per treatment.\\n\",\n    \"    nu : array-like\\n\",\n    \"        The estimated variance of the treatment per treatment.\\n\",\n    \"    cov : array-like\\n\",\n    \"        The covariance matrix of the estimated parameters, of shape (n_treatments, 3, 3).\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"    # Initialize KFold cross-validation\\n\",\n    \"    kf = StratifiedKFold(n_splits=n_folds, shuffle=True)\\n\",\n    \"    T_ohe = OneHotEncoder(sparse_output=False, drop='first').fit_transform(T.reshape(-1, 1))\\n\",\n    \"\\n\",\n    \"    # Initialize arrays to hold predictions\\n\",\n    \"    y_pred = np.zeros((Y.shape[0], T_ohe.shape[1]+1)) # include prediction for T=0\\n\",\n    \"    t_pred = np.zeros((T_ohe.shape[0], T_ohe.shape[1]+1)) # include prediction for T=0\\n\",\n    \"    alpha = np.zeros_like(T_ohe)\\n\",\n    \"\\n\",\n    \"    # one value of theta, sigma, nu for each non-control treatment\\n\",\n    \"    theta = np.zeros(T_ohe.shape[1])\\n\",\n    \"    sigma = np.zeros(T_ohe.shape[1])\\n\",\n    \"    nu = np.zeros(T_ohe.shape[1])\\n\",\n    \"\\n\",\n    \"    # one theta, sigma, nu covariance matrix for each non-control treatment\\n\",\n    \"    cov = np.zeros((T_ohe.shape[1], 3, 3))\\n\",\n    \"\\n\",\n    \"    # Cross-validation loop\\n\",\n    \"    for train_index, test_index in kf.split(X,T):\\n\",\n    \"        X_train, X_test = X[train_index], X[test_index]\\n\",\n    \"        Y_train, Y_test = Y[train_index], Y[test_index]\\n\",\n    \"        T_train = T[train_index]\\n\",\n    \"        To_train, To_test = T_ohe[train_index], T_ohe[test_index]\\n\",\n    \"     \\n\",\n    \"        # Fit the treatment model\\n\",\n    \"        t_pred[test_index] = model_t.fit(X_train, T_train).predict_proba(X_test)\\n\",\n    \"\\n\",\n    \"        t_pred[test_index] = np.clip(t_pred[test_index], min_t, 1-min_t)  # avoid division by zero\\n\",\n    \"        t_pred[test_index] = t_pred[test_index] / np.sum(t_pred[test_index], axis=1, keepdims=True)  # normalize to sum to 1\\n\",\n    \"        \\n\",\n    \"        # Fit the outcome model\\n\",\n    \"        model_y.fit(np.hstack([X_train, To_train]), Y_train)\\n\",\n    \"        T_hypo = np.zeros_like(To_test)\\n\",\n    \"        y_pred[test_index,0] += model_y.predict(np.hstack([X_test, T_hypo]))\\n\",\n    \"        for i in range(To_train.shape[1]):\\n\",\n    \"            T_hypo = np.zeros_like(To_test)\\n\",\n    \"            T_hypo[:,i] = 1\\n\",\n    \"            y_pred[test_index,i+1] += model_y.predict(np.hstack([X_test, T_hypo]))\\n\",\n    \"\\n\",\n    \"    # ATE, sigma^2, and nu^2\\n\",\n    \"    for i in range(T_ohe.shape[1]):\\n\",\n    \"        theta_score = y_pred[:,i+1] - y_pred[:,0] + (Y-y_pred[:,i+1]) * (T_ohe[:,i] == 1)/t_pred[:,i+1] - (Y-y_pred[:,0]) * (np.all(T_ohe==0, axis=1)/t_pred[:,0])\\n\",\n    \"        sigma_score = (Y-np.choose(T, y_pred.T))**2 # exclude rows with other treatments\\n\",\n    \"        alpha[:,i] = (T_ohe[:,i] == 1)/t_pred[:,i+1] - (np.all(T_ohe==0, axis=1))/t_pred[:,0]\\n\",\n    \"        nu_score = 2*(1/t_pred[:,i+1]+1/t_pred[:,0])-alpha[:,i]**2\\n\",\n    \"        theta[i] = np.mean(theta_score)\\n\",\n    \"        sigma[i] = np.mean(sigma_score)\\n\",\n    \"        nu[i] = np.mean(nu_score)\\n\",\n    \"        scores = np.stack([theta_score-theta[i], sigma_score-sigma[i], nu_score-nu[i]], axis=1)\\n\",\n    \"        cov[i,:,:] = (scores.T @ scores / len(scores)) / len(scores)\\n\",\n    \"\\n\",\n    \"    return theta, sigma, nu, cov\\n\",\n    \"\\n\",\n    \"def sensitivity_interval(theta, sigma, nu, cov, alpha, c_y, c_t, rho):\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    Calculate the sensitivity interval for a doubly-robust learner.\\n\",\n    \"    \\\"\\\"\\\"\\n\",\n    \"    C = np.abs(rho) * np.sqrt(c_y) * np.sqrt(c_t/(1-c_t))/2\\n\",\n    \"    ests = np.array([theta, sigma, nu])\\n\",\n    \"    \\n\",\n    \"    coefs_p = np.array([1, C*np.sqrt(nu/sigma), C*np.sqrt(sigma/nu)])\\n\",\n    \"    coefs_n = np.array([1, -C*np.sqrt(nu/sigma), -C*np.sqrt(sigma/nu)])\\n\",\n    \"    # One dimensional normal distribution:\\n\",\n    \"    sigma_p = coefs_p @ cov @ coefs_p\\n\",\n    \"    sigma_n = coefs_n @ cov @ coefs_n\\n\",\n    \"\\n\",\n    \"    # print(f\\\"theta bounds: {ests @ coefs_n}, {ests @ coefs_p}\\\")\\n\",\n    \"    # print(f\\\"sigma bounds: {sigma_n}, {sigma_p}\\\")\\n\",\n    \"\\n\",\n    \"    lb = _safe_norm_ppf(alpha / 2, loc=ests @ coefs_n, scale=np.sqrt(sigma_n))\\n\",\n    \"    ub = _safe_norm_ppf(1 - alpha / 2, loc=ests @ coefs_p, scale=np.sqrt(sigma_p))\\n\",\n    \"\\n\",\n    \"    return (lb, ub)\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def RV(theta, sigma, nu, cov, alpha):\\n\",\n    \"    # The robustness value is the degree of confounding of *both* the treatment and the outcome that still produces an interval\\n\",\n    \"    # that excludes zero.\\n\",\n    \"\\n\",\n    \"    # We're looking for a value of r such that the sensitivity bounds just touch zero\\n\",\n    \"\\n\",\n    \"    r = 0\\n\",\n    \"    r_up = 1\\n\",\n    \"    r_down = 0\\n\",\n    \"    lb, ub = sensitivity_interval(theta, sigma, nu, cov, alpha, 0, 0, 1)\\n\",\n    \"    if lb < 0 and ub > 0:\\n\",\n    \"        return 0\\n\",\n    \"    \\n\",\n    \"    else:\\n\",\n    \"        if lb > 0:\\n\",\n    \"            target = 0\\n\",\n    \"            mult = 1\\n\",\n    \"            d = lb\\n\",\n    \"        else:\\n\",\n    \"            target = 1\\n\",\n    \"            mult = -1\\n\",\n    \"            d = ub\\n\",\n    \"\\n\",\n    \"    while abs(d) > 1e-6:\\n\",\n    \"        d = mult * sensitivity_interval(theta, sigma, nu, cov, alpha, r, r, 1)[target]\\n\",\n    \"        if d > 0:\\n\",\n    \"            r_down = r\\n\",\n    \"        else:\\n\",\n    \"            r_up = r\\n\",\n    \"\\n\",\n    \"        r = (r_down + r_up) / 2\\n\",\n    \"        \\n\",\n    \"    return r\\n\",\n    \"\\n\",\n    \"    \\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Simulate data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 84,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"np.random.seed(3)\\n\",\n    \"n = 10000\\n\",\n    \"alpha = np.random.normal(size=5)\\n\",\n    \"X = np.random.normal(size=(n,5), loc=[1,0.5,0,0,0])/3 # closest to center 1, then 2, then 3\\n\",\n    \"centers = np.array([[1,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0]]) # trinary treatment\\n\",\n    \"# centers = np.array([[1,0,0,0,0], [0,1,0,0,0]]) # uncomment for binary treatment\\n\",\n    \"\\n\",\n    \"ds = X[:,None,:]-centers[None,:,:]\\n\",\n    \"ds = np.einsum(\\\"nci,nci->nc\\\", ds, ds)\\n\",\n    \"\\n\",\n    \"ps_r = np.exp(-ds)\\n\",\n    \"ps = ps_r / np.sum(ps_r, axis=1, keepdims=True)\\n\",\n    \"\\n\",\n    \"T = np.random.default_rng().multinomial(1, ps) @ np.arange(len(centers))\\n\",\n    \"\\n\",\n    \"Y = np.random.normal(size=n) + 3*(T == 1)*X[:,1] - (T == 2) + 2 * X @ alpha\\n\",\n    \"\\n\",\n    \"true_theta = np.mean(3*X[:,1]), -1\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Simple example\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Run simple dml and calculate intermediate values\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 85,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"sig_level = 0.1\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dr_sim(LogisticRegression(), LinearRegression(), 2, Y, T, X)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Calculate a \\\"sensitivity interval\\\". \\n\",\n    \"\\n\",\n    \"Need to supply \\\"strength of latent confounder\\\" as argument.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 86,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'i': 0, 'lb': -2.4222316375247765, 'ub': 3.4062936431220736}\\n\",\n      \"{'i': 1, 'lb': -4.248998723655173, 'ub': 2.1903767876822107}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for i in range(theta.shape[0]):\\n\",\n    \"    lb, ub = sensitivity_interval(theta[i], sigma[i], nu[i], sig[i], sig_level, 0.6, 0.6, 1)\\n\",\n    \"    print({'i': i, 'lb': lb, 'ub': ub})\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Calculate Robustness Value. \\n\",\n    \"\\n\",\n    \"The required strength of a latent confounder in order for the confidence interval to include 0.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 87,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'i': 0, 'RV': 0.1342604160308838}\\n\",\n      \"{'i': 1, 'RV': 0.25589704513549805}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for i in range(theta.shape[0]):\\n\",\n    \"    rv = RV(theta[i], sigma[i], nu[i], sig[i], sig_level)\\n\",\n    \"    print({'i': i, 'RV': rv})\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Ablations\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 88,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"[{'i': 1,\\n\",\n       \"  'alpha': 0.1,\\n\",\n       \"  't_ind': 1,\\n\",\n       \"  'sensitivity_interval': (-5.595590315127781, 3.648832519620443),\\n\",\n       \"  'RV': 0.17194628715515137},\\n\",\n       \" {'i': 5,\\n\",\n       \"  'alpha': 0.1,\\n\",\n       \"  't_ind': 1,\\n\",\n       \"  'sensitivity_interval': (-4.242302203189104, 2.1724266319271592),\\n\",\n       \"  'RV': 0.2583136558532715},\\n\",\n       \" {'i': 15,\\n\",\n       \"  'alpha': 0.1,\\n\",\n       \"  't_ind': 1,\\n\",\n       \"  'sensitivity_interval': (-4.252962106477528, 2.1979664010821613),\\n\",\n       \"  'RV': 0.2550685405731201},\\n\",\n       \" {'i': 30,\\n\",\n       \"  'alpha': 0.1,\\n\",\n       \"  't_ind': 1,\\n\",\n       \"  'sensitivity_interval': (-4.247614757215935, 2.1916647643905867),\\n\",\n       \"  'RV': 0.2557647228240967}]\"\n      ]\n     },\n     \"execution_count\": 88,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level = 0.1\\n\",\n    \"t_ind = 1\\n\",\n    \"\\n\",\n    \"results = []\\n\",\n    \"for i in [1, 5, 15, 30]:\\n\",\n    \"    theta, sigma, nu, sig = dr_sim(LogisticRegression(), LinearRegression(), 2, Y, T, X[:,:i])\\n\",\n    \"    result_dict = {\\n\",\n    \"        'i': i,\\n\",\n    \"        'alpha': sig_level,\\n\",\n    \"        't_ind': t_ind,\\n\",\n    \"        'sensitivity_interval': sensitivity_interval(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level, 0.6, 0.6, 1),\\n\",\n    \"        'RV': RV(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level)\\n\",\n    \"    }\\n\",\n    \"    results.append(result_dict)\\n\",\n    \"                   \\n\",\n    \"results\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 89,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>i</th>\\n\",\n       \"      <th>alpha</th>\\n\",\n       \"      <th>t_ind</th>\\n\",\n       \"      <th>sensitivity_interval</th>\\n\",\n       \"      <th>RV</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>(-5.595590315127781, 3.648832519620443)</td>\\n\",\n       \"      <td>0.171946</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>5</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>(-4.242302203189104, 2.1724266319271592)</td>\\n\",\n       \"      <td>0.258314</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>15</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>(-4.252962106477528, 2.1979664010821613)</td>\\n\",\n       \"      <td>0.255069</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>30</td>\\n\",\n       \"      <td>0.1</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>(-4.247614757215935, 2.1916647643905867)</td>\\n\",\n       \"      <td>0.255765</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"    i  alpha  t_ind                      sensitivity_interval        RV\\n\",\n       \"0   1    0.1      1   (-5.595590315127781, 3.648832519620443)  0.171946\\n\",\n       \"1   5    0.1      1  (-4.242302203189104, 2.1724266319271592)  0.258314\\n\",\n       \"2  15    0.1      1  (-4.252962106477528, 2.1979664010821613)  0.255069\\n\",\n       \"3  30    0.1      1  (-4.247614757215935, 2.1916647643905867)  0.255765\"\n      ]\n     },\n     \"execution_count\": 89,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"(\\n\",\n    \"    pd.DataFrame(results)\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# DoubleML\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 90,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import doubleml as dml\\n\",\n    \"import pandas as pd\\n\",\n    \"import numpy as np\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 91,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style scoped>\\n\",\n       \"    .dataframe tbody tr th:only-of-type {\\n\",\n       \"        vertical-align: middle;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>Y</th>\\n\",\n       \"      <th>T</th>\\n\",\n       \"      <th>X0</th>\\n\",\n       \"      <th>X1</th>\\n\",\n       \"      <th>X2</th>\\n\",\n       \"      <th>X3</th>\\n\",\n       \"      <th>X4</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>0</th>\\n\",\n       \"      <td>1.025162</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.215080</td>\\n\",\n       \"      <td>0.139086</td>\\n\",\n       \"      <td>-0.209000</td>\\n\",\n       \"      <td>-0.014606</td>\\n\",\n       \"      <td>-0.159073</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>1</th>\\n\",\n       \"      <td>0.576181</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>-0.104622</td>\\n\",\n       \"      <td>0.461541</td>\\n\",\n       \"      <td>0.293773</td>\\n\",\n       \"      <td>0.569858</td>\\n\",\n       \"      <td>0.016678</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>2</th>\\n\",\n       \"      <td>-1.676531</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.198441</td>\\n\",\n       \"      <td>-0.015120</td>\\n\",\n       \"      <td>-0.515492</td>\\n\",\n       \"      <td>0.327456</td>\\n\",\n       \"      <td>-0.367023</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>3</th>\\n\",\n       \"      <td>0.059101</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>-0.061682</td>\\n\",\n       \"      <td>0.098117</td>\\n\",\n       \"      <td>0.495383</td>\\n\",\n       \"      <td>0.078905</td>\\n\",\n       \"      <td>-0.341262</td>\\n\",\n       \"    </tr>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>4</th>\\n\",\n       \"      <td>2.764248</td>\\n\",\n       \"      <td>1</td>\\n\",\n       \"      <td>0.095669</td>\\n\",\n       \"      <td>0.375082</td>\\n\",\n       \"      <td>-0.053504</td>\\n\",\n       \"      <td>-0.256279</td>\\n\",\n       \"      <td>-0.076677</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"          Y  T        X0        X1        X2        X3        X4\\n\",\n       \"0  1.025162  1  0.215080  0.139086 -0.209000 -0.014606 -0.159073\\n\",\n       \"1  0.576181  1 -0.104622  0.461541  0.293773  0.569858  0.016678\\n\",\n       \"2 -1.676531  1  0.198441 -0.015120 -0.515492  0.327456 -0.367023\\n\",\n       \"3  0.059101  1 -0.061682  0.098117  0.495383  0.078905 -0.341262\\n\",\n       \"4  2.764248  1  0.095669  0.375082 -0.053504 -0.256279 -0.076677\"\n      ]\n     },\n     \"execution_count\": 91,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"df = pd.concat([\\n\",\n    \"    pd.DataFrame(Y).squeeze().to_frame('Y'),\\n\",\n    \"    pd.DataFrame(T).squeeze().to_frame('T'),\\n\",\n    \"    pd.DataFrame(X).add_prefix('X'),\\n\",\n    \"], axis=1)\\n\",\n    \"\\n\",\n    \"df.head()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 95,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"<doubleml.double_ml_data.DoubleMLData at 0x1f0917cfca0>\"\n      ]\n     },\n     \"execution_count\": 95,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"dml_data = dml.DoubleMLData(df, 'Y', 'T')\\n\",\n    \"dml_data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 96,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"ename\": \"ValueError\",\n     \"evalue\": \"Incompatible data. To fit an IRM model with DML exactly one binary variable with values 0 and 1 needs to be specified as treatment variable.\",\n     \"output_type\": \"error\",\n     \"traceback\": [\n      \"\\u001b[1;31m---------------------------------------------------------------------------\\u001b[0m\",\n      \"\\u001b[1;31mValueError\\u001b[0m                                Traceback (most recent call last)\",\n      \"Cell \\u001b[1;32mIn[96], line 1\\u001b[0m\\n\\u001b[1;32m----> 1\\u001b[0m dml_obj \\u001b[38;5;241m=\\u001b[39m \\u001b[43mdml\\u001b[49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43mDoubleMLIRM\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[43mdml_data\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m      2\\u001b[0m \\u001b[43m                          \\u001b[49m\\u001b[43mml_g\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mLinearRegression\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[43m)\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m      3\\u001b[0m \\u001b[43m                          \\u001b[49m\\u001b[43mml_m\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mLogisticRegression\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[43m)\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m      4\\u001b[0m \\u001b[43m                          \\u001b[49m\\u001b[43mn_folds\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[38;5;241;43m2\\u001b[39;49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m      5\\u001b[0m \\u001b[43m                          \\u001b[49m\\u001b[43mscore\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[38;5;124;43m'\\u001b[39;49m\\u001b[38;5;124;43mpartialling out\\u001b[39;49m\\u001b[38;5;124;43m'\\u001b[39;49m\\u001b[43m,\\u001b[49m\\u001b[43m)\\u001b[49m\\n\\u001b[0;32m      6\\u001b[0m dml_obj\\u001b[38;5;241m.\\u001b[39mfit()\\n\\u001b[0;32m      7\\u001b[0m \\u001b[38;5;28mprint\\u001b[39m(dml_obj)\\n\",\n      \"File \\u001b[1;32mc:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\irm\\\\irm.py:134\\u001b[0m, in \\u001b[0;36mDoubleMLIRM.__init__\\u001b[1;34m(self, obj_dml_data, ml_g, ml_m, n_folds, n_rep, score, weights, normalize_ipw, trimming_rule, trimming_threshold, draw_sample_splitting)\\u001b[0m\\n\\u001b[0;32m    116\\u001b[0m \\u001b[38;5;28;01mdef\\u001b[39;00m \\u001b[38;5;21m__init__\\u001b[39m(\\u001b[38;5;28mself\\u001b[39m,\\n\\u001b[0;32m    117\\u001b[0m              obj_dml_data,\\n\\u001b[0;32m    118\\u001b[0m              ml_g,\\n\\u001b[1;32m   (...)\\u001b[0m\\n\\u001b[0;32m    126\\u001b[0m              trimming_threshold\\u001b[38;5;241m=\\u001b[39m\\u001b[38;5;241m1e-2\\u001b[39m,\\n\\u001b[0;32m    127\\u001b[0m              draw_sample_splitting\\u001b[38;5;241m=\\u001b[39m\\u001b[38;5;28;01mTrue\\u001b[39;00m):\\n\\u001b[0;32m    128\\u001b[0m     \\u001b[38;5;28msuper\\u001b[39m()\\u001b[38;5;241m.\\u001b[39m\\u001b[38;5;21m__init__\\u001b[39m(obj_dml_data,\\n\\u001b[0;32m    129\\u001b[0m                      n_folds,\\n\\u001b[0;32m    130\\u001b[0m                      n_rep,\\n\\u001b[0;32m    131\\u001b[0m                      score,\\n\\u001b[0;32m    132\\u001b[0m                      draw_sample_splitting)\\n\\u001b[1;32m--> 134\\u001b[0m     \\u001b[38;5;28;43mself\\u001b[39;49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43m_check_data\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[38;5;28;43mself\\u001b[39;49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43m_dml_data\\u001b[49m\\u001b[43m)\\u001b[49m\\n\\u001b[0;32m    135\\u001b[0m     valid_scores \\u001b[38;5;241m=\\u001b[39m [\\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mATE\\u001b[39m\\u001b[38;5;124m'\\u001b[39m, \\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mATTE\\u001b[39m\\u001b[38;5;124m'\\u001b[39m]\\n\\u001b[0;32m    136\\u001b[0m     _check_score(\\u001b[38;5;28mself\\u001b[39m\\u001b[38;5;241m.\\u001b[39mscore, valid_scores, allow_callable\\u001b[38;5;241m=\\u001b[39m\\u001b[38;5;28;01mTrue\\u001b[39;00m)\\n\",\n      \"File \\u001b[1;32mc:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\irm\\\\irm.py:247\\u001b[0m, in \\u001b[0;36mDoubleMLIRM._check_data\\u001b[1;34m(self, obj_dml_data)\\u001b[0m\\n\\u001b[0;32m    245\\u001b[0m zero_one_treat \\u001b[38;5;241m=\\u001b[39m np\\u001b[38;5;241m.\\u001b[39mall((np\\u001b[38;5;241m.\\u001b[39mpower(obj_dml_data\\u001b[38;5;241m.\\u001b[39md, \\u001b[38;5;241m2\\u001b[39m) \\u001b[38;5;241m-\\u001b[39m obj_dml_data\\u001b[38;5;241m.\\u001b[39md) \\u001b[38;5;241m==\\u001b[39m \\u001b[38;5;241m0\\u001b[39m)\\n\\u001b[0;32m    246\\u001b[0m \\u001b[38;5;28;01mif\\u001b[39;00m \\u001b[38;5;129;01mnot\\u001b[39;00m (one_treat \\u001b[38;5;241m&\\u001b[39m binary_treat \\u001b[38;5;241m&\\u001b[39m zero_one_treat):\\n\\u001b[1;32m--> 247\\u001b[0m     \\u001b[38;5;28;01mraise\\u001b[39;00m \\u001b[38;5;167;01mValueError\\u001b[39;00m(\\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mIncompatible data. \\u001b[39m\\u001b[38;5;124m'\\u001b[39m\\n\\u001b[0;32m    248\\u001b[0m                      \\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mTo fit an IRM model with DML \\u001b[39m\\u001b[38;5;124m'\\u001b[39m\\n\\u001b[0;32m    249\\u001b[0m                      \\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mexactly one binary variable with values 0 and 1 \\u001b[39m\\u001b[38;5;124m'\\u001b[39m\\n\\u001b[0;32m    250\\u001b[0m                      \\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mneeds to be specified as treatment variable.\\u001b[39m\\u001b[38;5;124m'\\u001b[39m)\\n\\u001b[0;32m    251\\u001b[0m \\u001b[38;5;28;01mreturn\\u001b[39;00m\\n\",\n      \"\\u001b[1;31mValueError\\u001b[0m: Incompatible data. To fit an IRM model with DML exactly one binary variable with values 0 and 1 needs to be specified as treatment variable.\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLIRM(dml_data,\\n\",\n    \"                          ml_g=LinearRegression(),\\n\",\n    \"                          ml_m=LogisticRegression(),\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='partialling out',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.03; cf_d=0.03, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0 -0.471507       -0.446 -0.397119    -0.348237 -0.322857\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0     RV (%)    RVa (%)\\n\",\n      \"0  0.0  21.873191  20.629383\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.03, cf_d=0.03, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"       cf_y      cf_d  rho  delta_theta\\n\",\n      \"T  0.019825  0.000095 -1.0      -0.0022\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"sens_benchmark = dml_obj.sensitivity_benchmark(benchmarking_set=[\\\"X4\\\"])\\n\",\n    \"print(sens_benchmark)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# New datasets\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### DoubleML confounded synthetic data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from doubleml.datasets import make_confounded_plr_data, make_confounded_irm_data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\datasets.py:1050: UserWarning: Propensity score is close to 0 or 1. Trimming is at 0.01 and 0.99 is applied\\n\",\n      \"  warnings.warn(f'Propensity score is close to 0 or 1. '\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"cf_y = 0.1\\n\",\n    \"cf_d = 0.1\\n\",\n    \"theta = 5.0\\n\",\n    \"dpg_dict = make_confounded_irm_data(n_obs=10000, cf_y=cf_y, cf_d=cf_d, theta=theta)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"x_cols = [f'X{i + 1}' for i in np.arange(dpg_dict['x'].shape[1])]\\n\",\n    \"df = pd.DataFrame(np.column_stack((dpg_dict['x'], dpg_dict['y'], dpg_dict['d'])), columns=x_cols + ['y', 'd'])\\n\",\n    \"dml_data = dml.DoubleMLData(df, 'y', 'd')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLIRM Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: y\\n\",\n      \"Treatment variable(s): ['d']\\n\",\n      \"Covariates: ['X1', 'X2', 'X3', 'X4', 'X5']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 10000\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: ATE\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_g: RandomForestRegressor()\\n\",\n      \"Learner ml_m: RandomForestClassifier()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_g0 RMSE: [[1.08528722]]\\n\",\n      \"Learner ml_g1 RMSE: [[1.14348731]]\\n\",\n      \"Classification:\\n\",\n      \"Learner ml_m Log Loss: [[0.67196054]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 2\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"       coef   std err          t  P>|t|   2.5 %   97.5 %\\n\",\n      \"d  5.145625  0.062208  82.716619    0.0  5.0237  5.26755\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"c:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\utils\\\\_checks.py:205: UserWarning: Propensity predictions from learner RandomForestClassifier() for ml_m are close to zero or one (eps=1e-12).\\n\",\n      \"  warnings.warn(f'Propensity predictions from learner {str(learner)} for'\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLIRM(dml_data,\\n\",\n    \"                          ml_g=RandomForestRegressor(),\\n\",\n    \"                          ml_m=RandomForestClassifier(),\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='ATE',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.1; cf_d=0.1, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0  4.858139     4.961768  5.145625     5.329482  5.466168\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0     RV (%)    RVa (%)\\n\",\n      \"0  0.0  90.573845  84.951031\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.1, cf_d=0.1, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sensitivity_interval': (2.567683475272766, 7.648542718465433),\\n\",\n       \" 'RV': 0.8172124624252319}\"\n      ]\n     },\n     \"execution_count\": 20,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"t_ind = 0\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dr_sim(\\n\",\n    \"    RandomForestClassifier(), \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    2, \\n\",\n    \"    dpg_dict['y'],\\n\",\n    \"    dpg_dict['d'].astype(int),\\n\",\n    \"    dpg_dict['x']\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level, 0.6, 0.6, 1),\\n\",\n    \"    'RV': RV(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### 401k data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dml_data = dml.datasets.fetch_401K()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"model selection for propensity model.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"RandomForestClassifier selected with score: 0.6435\\n\",\n      \"401k data treatment model selection:\\n\",\n      \"Best classifier: RandomForestClassifier(max_depth=10, n_estimators=200, random_state=42)\\n\",\n      \"Best score: 0.6435\\n\",\n      \"best rf score: 0.6435\\n\",\n      \"best lr score: 0.6578\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"\\n\",\n    \"# Define parameter grid for model selection\\n\",\n    \"# Define parameter grid for model selection\\n\",\n    \"param_grid = {\\n\",\n    \"    'C': [0.1, 1, 10, 100]  # For LogisticRegression\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"# First find the best LogisticRegression model\\n\",\n    \"lr_grid_search = GridSearchCV(\\n\",\n    \"    estimator=LogisticRegression(max_iter=1000),\\n\",\n    \"    param_grid=param_grid,\\n\",\n    \"    cv=3,\\n\",\n    \"    scoring='accuracy'\\n\",\n    \")\\n\",\n    \"lr_grid_search.fit(dml_data.x, dml_data.d.astype(int))\\n\",\n    \"best_lr = lr_grid_search.best_estimator_\\n\",\n    \"best_lr_score = lr_grid_search.best_score_\\n\",\n    \"\\n\",\n    \"# Find the best RandomForestClassifier\\n\",\n    \"rf_param_grid = {\\n\",\n    \"    'n_estimators': [50, 100, 200],\\n\",\n    \"    'max_depth': [None, 10, 20]\\n\",\n    \"}\\n\",\n    \"rf_grid_search = GridSearchCV(\\n\",\n    \"    estimator=RandomForestClassifier(random_state=42),\\n\",\n    \"    param_grid=rf_param_grid,\\n\",\n    \"    cv=3,\\n\",\n    \"    scoring='accuracy'\\n\",\n    \")\\n\",\n    \"rf_grid_search.fit(dml_data.x, dml_data.d.astype(int))\\n\",\n    \"best_rf = rf_grid_search.best_estimator_\\n\",\n    \"best_rf_score = rf_grid_search.best_score_\\n\",\n    \"\\n\",\n    \"# Choose the overall best model\\n\",\n    \"if best_lr_score >= best_rf_score:\\n\",\n    \"    grid_search = lr_grid_search\\n\",\n    \"    print(f\\\"LogisticRegression selected with score: {best_lr_score:.4f}\\\")\\n\",\n    \"else:\\n\",\n    \"    grid_search = rf_grid_search\\n\",\n    \"print(f\\\"RandomForestClassifier selected with score: {best_rf_score:.4f}\\\")\\n\",\n    \"\\n\",\n    \"# Use the best estimator from grid search\\n\",\n    \"best_classifier = grid_search.best_estimator_\\n\",\n    \"print('401k data treatment model selection:')\\n\",\n    \"print(f\\\"Best classifier: {best_classifier}\\\")\\n\",\n    \"print(f\\\"Best score: {grid_search.best_score_:.4f}\\\")\\n\",\n    \"print(f\\\"best rf score: {best_rf_score:.4f}\\\")\\n\",\n    \"print(f\\\"best lr score: {best_lr_score:.4f}\\\")\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 81,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLIRM Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: inuidur1\\n\",\n      \"Treatment variable(s): ['tg']\\n\",\n      \"Covariates: ['female', 'black', 'othrace', 'dep1', 'dep2', 'q2', 'q3', 'q4', 'q5', 'q6', 'agelt35', 'agegt54', 'durable', 'lusd', 'husd']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 5099\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: ATE\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_g: RandomForestRegressor()\\n\",\n      \"Learner ml_m: RandomForestClassifier()\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_g0 RMSE: [[1.2687313]]\\n\",\n      \"Learner ml_g1 RMSE: [[1.30580821]]\\n\",\n      \"Classification:\\n\",\n      \"Learner ml_m Log Loss: [[0.73043429]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 5\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"        coef   std err         t     P>|t|     2.5 %    97.5 %\\n\",\n      \"tg -0.080843  0.215406 -0.375307  0.707432 -0.503031  0.341344\\n\"\n     ]\n    },\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Propensity predictions from learner RandomForestClassifier() for ml_m are close to zero or one (eps=1e-12).\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLIRM(dml_data,\\n\",\n    \"                          ml_g=RandomForestRegressor(),\\n\",\n    \"                          ml_m=RandomForestClassifier(),\\n\",\n    \"                        #   ml_m=best_classifier,\\n\",\n    \"                          n_folds=5,\\n\",\n    \"                          score='ATE')\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 82,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"ename\": \"ValueError\",\n     \"evalue\": \"sensitivity_elements sigma2 and nu2 have to be positive. Got sigma2 [[[1.64234643]]] and nu2 [[[-103.64744455]]]. Most likely this is due to low quality learners (especially propensity scores).\",\n     \"output_type\": \"error\",\n     \"traceback\": [\n      \"\\u001b[1;31m---------------------------------------------------------------------------\\u001b[0m\",\n      \"\\u001b[1;31mValueError\\u001b[0m                                Traceback (most recent call last)\",\n      \"Cell \\u001b[1;32mIn[82], line 1\\u001b[0m\\n\\u001b[1;32m----> 1\\u001b[0m \\u001b[43mdml_obj\\u001b[49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43msensitivity_analysis\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[43mcf_y\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[38;5;241;43m0.04\\u001b[39;49m\\u001b[43m,\\u001b[49m\\u001b[43m \\u001b[49m\\u001b[43mcf_d\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[38;5;241;43m0.04\\u001b[39;49m\\u001b[43m,\\u001b[49m\\u001b[43m \\u001b[49m\\u001b[43mrho\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[38;5;241;43m1.\\u001b[39;49m\\u001b[43m)\\u001b[49m\\n\\u001b[0;32m      2\\u001b[0m \\u001b[38;5;28mprint\\u001b[39m(dml_obj\\u001b[38;5;241m.\\u001b[39msensitivity_summary)\\n\",\n      \"File \\u001b[1;32mc:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\double_ml.py:1419\\u001b[0m, in \\u001b[0;36mDoubleML.sensitivity_analysis\\u001b[1;34m(self, cf_y, cf_d, rho, level, null_hypothesis)\\u001b[0m\\n\\u001b[0;32m   1417\\u001b[0m \\u001b[38;5;28;01mif\\u001b[39;00m \\u001b[38;5;28mself\\u001b[39m\\u001b[38;5;241m.\\u001b[39m_framework \\u001b[38;5;129;01mis\\u001b[39;00m \\u001b[38;5;28;01mNone\\u001b[39;00m:\\n\\u001b[0;32m   1418\\u001b[0m     \\u001b[38;5;28;01mraise\\u001b[39;00m \\u001b[38;5;167;01mValueError\\u001b[39;00m(\\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mApply fit() before sensitivity_analysis().\\u001b[39m\\u001b[38;5;124m'\\u001b[39m)\\n\\u001b[1;32m-> 1419\\u001b[0m \\u001b[38;5;28;43mself\\u001b[39;49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43m_framework\\u001b[49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43msensitivity_analysis\\u001b[49m\\u001b[43m(\\u001b[49m\\n\\u001b[0;32m   1420\\u001b[0m \\u001b[43m    \\u001b[49m\\u001b[43mcf_y\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mcf_y\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m   1421\\u001b[0m \\u001b[43m    \\u001b[49m\\u001b[43mcf_d\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mcf_d\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m   1422\\u001b[0m \\u001b[43m    \\u001b[49m\\u001b[43mrho\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mrho\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m   1423\\u001b[0m \\u001b[43m    \\u001b[49m\\u001b[43mlevel\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mlevel\\u001b[49m\\u001b[43m,\\u001b[49m\\n\\u001b[0;32m   1424\\u001b[0m \\u001b[43m    \\u001b[49m\\u001b[43mnull_hypothesis\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mnull_hypothesis\\u001b[49m\\n\\u001b[0;32m   1425\\u001b[0m \\u001b[43m\\u001b[49m\\u001b[43m)\\u001b[49m\\n\\u001b[0;32m   1427\\u001b[0m \\u001b[38;5;28;01mreturn\\u001b[39;00m \\u001b[38;5;28mself\\u001b[39m\\n\",\n      \"File \\u001b[1;32mc:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\double_ml_framework.py:613\\u001b[0m, in \\u001b[0;36mDoubleMLFramework.sensitivity_analysis\\u001b[1;34m(self, cf_y, cf_d, rho, level, null_hypothesis)\\u001b[0m\\n\\u001b[0;32m    609\\u001b[0m     \\u001b[38;5;28;01mraise\\u001b[39;00m \\u001b[38;5;167;01mTypeError\\u001b[39;00m(\\u001b[38;5;124m\\\"\\u001b[39m\\u001b[38;5;124mnull_hypothesis has to be of type float or np.ndarry. \\u001b[39m\\u001b[38;5;124m\\\"\\u001b[39m\\n\\u001b[0;32m    610\\u001b[0m                     \\u001b[38;5;124mf\\u001b[39m\\u001b[38;5;124m\\\"\\u001b[39m\\u001b[38;5;132;01m{\\u001b[39;00m\\u001b[38;5;28mstr\\u001b[39m(null_hypothesis)\\u001b[38;5;132;01m}\\u001b[39;00m\\u001b[38;5;124m of type \\u001b[39m\\u001b[38;5;132;01m{\\u001b[39;00m\\u001b[38;5;28mstr\\u001b[39m(\\u001b[38;5;28mtype\\u001b[39m(null_hypothesis))\\u001b[38;5;132;01m}\\u001b[39;00m\\u001b[38;5;124m was passed.\\u001b[39m\\u001b[38;5;124m\\\"\\u001b[39m)\\n\\u001b[0;32m    612\\u001b[0m \\u001b[38;5;66;03m# compute sensitivity analysis\\u001b[39;00m\\n\\u001b[1;32m--> 613\\u001b[0m sensitivity_dict \\u001b[38;5;241m=\\u001b[39m \\u001b[38;5;28;43mself\\u001b[39;49m\\u001b[38;5;241;43m.\\u001b[39;49m\\u001b[43m_calc_sensitivity_analysis\\u001b[49m\\u001b[43m(\\u001b[49m\\u001b[43mcf_y\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mcf_y\\u001b[49m\\u001b[43m,\\u001b[49m\\u001b[43m \\u001b[49m\\u001b[43mcf_d\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mcf_d\\u001b[49m\\u001b[43m,\\u001b[49m\\u001b[43m \\u001b[49m\\u001b[43mrho\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mrho\\u001b[49m\\u001b[43m,\\u001b[49m\\u001b[43m \\u001b[49m\\u001b[43mlevel\\u001b[49m\\u001b[38;5;241;43m=\\u001b[39;49m\\u001b[43mlevel\\u001b[49m\\u001b[43m)\\u001b[49m\\n\\u001b[0;32m    615\\u001b[0m \\u001b[38;5;66;03m# compute robustess values with respect to null_hypothesis\\u001b[39;00m\\n\\u001b[0;32m    616\\u001b[0m rv \\u001b[38;5;241m=\\u001b[39m np\\u001b[38;5;241m.\\u001b[39mfull(shape\\u001b[38;5;241m=\\u001b[39m\\u001b[38;5;28mself\\u001b[39m\\u001b[38;5;241m.\\u001b[39m_n_thetas, fill_value\\u001b[38;5;241m=\\u001b[39mnp\\u001b[38;5;241m.\\u001b[39mnan)\\n\",\n      \"File \\u001b[1;32mc:\\\\Users\\\\fabiovera\\\\AppData\\\\Local\\\\anaconda3\\\\envs\\\\dev_env2\\\\lib\\\\site-packages\\\\doubleml\\\\double_ml_framework.py:462\\u001b[0m, in \\u001b[0;36mDoubleMLFramework._calc_sensitivity_analysis\\u001b[1;34m(self, cf_y, cf_d, rho, level)\\u001b[0m\\n\\u001b[0;32m    459\\u001b[0m psi_scaled \\u001b[38;5;241m=\\u001b[39m \\u001b[38;5;28mself\\u001b[39m\\u001b[38;5;241m.\\u001b[39m_scaled_psi\\n\\u001b[0;32m    461\\u001b[0m \\u001b[38;5;28;01mif\\u001b[39;00m (np\\u001b[38;5;241m.\\u001b[39many(sigma2 \\u001b[38;5;241m<\\u001b[39m \\u001b[38;5;241m0\\u001b[39m)) \\u001b[38;5;241m|\\u001b[39m (np\\u001b[38;5;241m.\\u001b[39many(nu2 \\u001b[38;5;241m<\\u001b[39m \\u001b[38;5;241m0\\u001b[39m)):\\n\\u001b[1;32m--> 462\\u001b[0m     \\u001b[38;5;28;01mraise\\u001b[39;00m \\u001b[38;5;167;01mValueError\\u001b[39;00m(\\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124msensitivity_elements sigma2 and nu2 have to be positive. \\u001b[39m\\u001b[38;5;124m'\\u001b[39m\\n\\u001b[0;32m    463\\u001b[0m                      \\u001b[38;5;124mf\\u001b[39m\\u001b[38;5;124m\\\"\\u001b[39m\\u001b[38;5;124mGot sigma2 \\u001b[39m\\u001b[38;5;132;01m{\\u001b[39;00m\\u001b[38;5;28mstr\\u001b[39m(sigma2)\\u001b[38;5;132;01m}\\u001b[39;00m\\u001b[38;5;124m and nu2 \\u001b[39m\\u001b[38;5;132;01m{\\u001b[39;00m\\u001b[38;5;28mstr\\u001b[39m(nu2)\\u001b[38;5;132;01m}\\u001b[39;00m\\u001b[38;5;124m. \\u001b[39m\\u001b[38;5;124m\\\"\\u001b[39m\\n\\u001b[0;32m    464\\u001b[0m                      \\u001b[38;5;124m'\\u001b[39m\\u001b[38;5;124mMost likely this is due to low quality learners (especially propensity scores).\\u001b[39m\\u001b[38;5;124m'\\u001b[39m)\\n\\u001b[0;32m    466\\u001b[0m \\u001b[38;5;66;03m# elementwise operations\\u001b[39;00m\\n\\u001b[0;32m    467\\u001b[0m confounding_strength \\u001b[38;5;241m=\\u001b[39m np\\u001b[38;5;241m.\\u001b[39mmultiply(np\\u001b[38;5;241m.\\u001b[39mabs(rho), np\\u001b[38;5;241m.\\u001b[39msqrt(np\\u001b[38;5;241m.\\u001b[39mmultiply(cf_y, np\\u001b[38;5;241m.\\u001b[39mdivide(cf_d, \\u001b[38;5;241m1.0\\u001b[39m\\u001b[38;5;241m-\\u001b[39mcf_d))))\\n\",\n      \"\\u001b[1;31mValueError\\u001b[0m: sensitivity_elements sigma2 and nu2 have to be positive. Got sigma2 [[[1.64234643]]] and nu2 [[[-103.64744455]]]. Most likely this is due to low quality learners (especially propensity scores).\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.04, cf_d=0.04, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sensitivity_interval': (-0.15765123322817087, 0.01212238369880464),\\n\",\n       \" 'RV': 0}\"\n      ]\n     },\n     \"execution_count\": 73,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"t_ind = 0\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dr_sim(\\n\",\n    \"    best_classifier, \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    5, \\n\",\n    \"    dml_data.y,\\n\",\n    \"    dml_data.d.astype(int),\\n\",\n    \"    dml_data.x\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level, 0.00001, 0.0001, 1),\\n\",\n    \"    'RV': RV(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### bonus data\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 97,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"dml_data = dml.datasets.fetch_bonus()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"model selection for propensity model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 99,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"LogisticRegression selected with score: -0.6442\\n\",\n      \"RandomForestClassifier selected with score: -0.6624\\n\",\n      \"bonus data treatment model selection:\\n\",\n      \"Best classifier: LogisticRegression(C=0.1, max_iter=1000)\\n\",\n      \"Best score: -0.6442\\n\",\n      \"best rf score: -0.6624\\n\",\n      \"best lr score: -0.6442\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from sklearn.model_selection import GridSearchCV\\n\",\n    \"\\n\",\n    \"# Define parameter grid for model selection\\n\",\n    \"# Define parameter grid for model selection\\n\",\n    \"param_grid = {\\n\",\n    \"    'C': [0.1, 1, 10, 100]  # For LogisticRegression\\n\",\n    \"}\\n\",\n    \"\\n\",\n    \"# First find the best LogisticRegression model\\n\",\n    \"lr_grid_search = GridSearchCV(\\n\",\n    \"    estimator=LogisticRegression(max_iter=1000),\\n\",\n    \"    param_grid=param_grid,\\n\",\n    \"    cv=3,\\n\",\n    \"    scoring='neg_log_loss'\\n\",\n    \")\\n\",\n    \"lr_grid_search.fit(dml_data.x, dml_data.d.astype(int))\\n\",\n    \"best_lr = lr_grid_search.best_estimator_\\n\",\n    \"best_lr_score = lr_grid_search.best_score_\\n\",\n    \"\\n\",\n    \"# Find the best RandomForestClassifier\\n\",\n    \"rf_param_grid = {\\n\",\n    \"    'n_estimators': [50, 100, 200],\\n\",\n    \"    'max_depth': [None, 10, 20]\\n\",\n    \"}\\n\",\n    \"rf_grid_search = GridSearchCV(\\n\",\n    \"    estimator=RandomForestClassifier(random_state=42),\\n\",\n    \"    param_grid=rf_param_grid,\\n\",\n    \"    cv=3,\\n\",\n    \"    scoring='neg_log_loss'\\n\",\n    \")\\n\",\n    \"rf_grid_search.fit(dml_data.x, dml_data.d.astype(int))\\n\",\n    \"best_rf = rf_grid_search.best_estimator_\\n\",\n    \"best_rf_score = rf_grid_search.best_score_\\n\",\n    \"\\n\",\n    \"# Choose the overall best model\\n\",\n    \"if best_lr_score >= best_rf_score:\\n\",\n    \"    grid_search = lr_grid_search\\n\",\n    \"    print(f\\\"LogisticRegression selected with score: {best_lr_score:.4f}\\\")\\n\",\n    \"else:\\n\",\n    \"    grid_search = rf_grid_search\\n\",\n    \"print(f\\\"RandomForestClassifier selected with score: {best_rf_score:.4f}\\\")\\n\",\n    \"\\n\",\n    \"# Use the best estimator from grid search\\n\",\n    \"best_classifier = grid_search.best_estimator_\\n\",\n    \"print('bonus data treatment model selection:')\\n\",\n    \"print(f\\\"Best classifier: {best_classifier}\\\")\\n\",\n    \"print(f\\\"Best score: {grid_search.best_score_:.4f}\\\")\\n\",\n    \"print(f\\\"best rf score: {best_rf_score:.4f}\\\")\\n\",\n    \"print(f\\\"best lr score: {best_lr_score:.4f}\\\")\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 100,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== DoubleMLIRM Object ==================\\n\",\n      \"\\n\",\n      \"------------------ Data summary      ------------------\\n\",\n      \"Outcome variable: inuidur1\\n\",\n      \"Treatment variable(s): ['tg']\\n\",\n      \"Covariates: ['female', 'black', 'othrace', 'dep1', 'dep2', 'q2', 'q3', 'q4', 'q5', 'q6', 'agelt35', 'agegt54', 'durable', 'lusd', 'husd']\\n\",\n      \"Instrument variable(s): None\\n\",\n      \"No. Observations: 5099\\n\",\n      \"\\n\",\n      \"------------------ Score & algorithm ------------------\\n\",\n      \"Score function: ATE\\n\",\n      \"\\n\",\n      \"------------------ Machine learner   ------------------\\n\",\n      \"Learner ml_g: RandomForestRegressor()\\n\",\n      \"Learner ml_m: LogisticRegression(C=0.1, max_iter=1000)\\n\",\n      \"Out-of-sample Performance:\\n\",\n      \"Regression:\\n\",\n      \"Learner ml_g0 RMSE: [[1.29747417]]\\n\",\n      \"Learner ml_g1 RMSE: [[1.33043293]]\\n\",\n      \"Classification:\\n\",\n      \"Learner ml_m Log Loss: [[0.64522511]]\\n\",\n      \"\\n\",\n      \"------------------ Resampling        ------------------\\n\",\n      \"No. folds: 2\\n\",\n      \"No. repeated sample splits: 1\\n\",\n      \"\\n\",\n      \"------------------ Fit summary       ------------------\\n\",\n      \"        coef   std err         t     P>|t|     2.5 %    97.5 %\\n\",\n      \"tg -0.059058  0.038039 -1.552562  0.120528 -0.133613  0.015497\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj = dml.DoubleMLIRM(dml_data,\\n\",\n    \"                          ml_g=RandomForestRegressor(),\\n\",\n    \"                          ml_m=best_classifier,\\n\",\n    \"                          n_folds=2,\\n\",\n    \"                          score='ATE',)\\n\",\n    \"dml_obj.fit()\\n\",\n    \"print(dml_obj)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"================== Sensitivity Analysis ==================\\n\",\n      \"\\n\",\n      \"------------------ Scenario          ------------------\\n\",\n      \"Significance Level: level=0.95\\n\",\n      \"Sensitivity parameters: cf_y=0.0; cf_d=0.0, rho=1.0\\n\",\n      \"\\n\",\n      \"------------------ Bounds with CI    ------------------\\n\",\n      \"   CI lower  theta lower     theta  theta upper  CI upper\\n\",\n      \"0 -0.121627    -0.059058 -0.059058    -0.059058  0.003511\\n\",\n      \"\\n\",\n      \"------------------ Robustness Values ------------------\\n\",\n      \"   H_0    RV (%)   RVa (%)\\n\",\n      \"0  0.0  2.128758  0.000434\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"dml_obj.sensitivity_analysis(cf_y=0.04, cf_d=0.04, rho=1.)\\n\",\n    \"print(dml_obj.sensitivity_summary)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'alpha': 0.05,\\n\",\n       \" 'sensitivity_interval': (-0.29151616548820364, 0.1365988298703495),\\n\",\n       \" 'RV': 0}\"\n      ]\n     },\n     \"execution_count\": 68,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"sig_level=0.05\\n\",\n    \"t_ind = 0\\n\",\n    \"\\n\",\n    \"theta, sigma, nu, sig = dr_sim(\\n\",\n    \"    best_classifier, \\n\",\n    \"    RandomForestRegressor(), \\n\",\n    \"    5, \\n\",\n    \"    dml_data.y,\\n\",\n    \"    dml_data.d.astype(int),\\n\",\n    \"    dml_data.x\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"result_dict = {\\n\",\n    \"    'alpha': sig_level,\\n\",\n    \"    'sensitivity_interval': sensitivity_interval(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level, 0.05, 0.05, 1),\\n\",\n    \"    'RV': RV(theta[t_ind], sigma[t_ind], nu[t_ind], sig[t_ind], sig_level)\\n\",\n    \"}\\n\",\n    \"result_dict\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"dev_env2\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.10.15\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[project]\nname = \"econml\"\nrequires-python = \">=3.9\"\nauthors = [{ name = \"PyWhy contributors\" }]\ndescription = \"This package contains several methods for calculating Conditional Average Treatment Effects\"\nreadme = \"README.md\"\nkeywords = [\"treatment-effect\"]\nlicense = \"MIT\"\ndynamic = [\"version\"]\n\nclassifiers = [\n    \"Programming Language :: Python :: 3.9\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Operating System :: MacOS\",\n    \"Operating System :: Microsoft :: Windows\",\n    \"Operating System :: POSIX :: Linux\"\n]\ndependencies = [\n    \"numpy\",\n    \"scipy > 1.4.0\",\n    \"scikit-learn >= 1.0, < 1.7\",\n    \"sparse\",\n    \"joblib >= 0.13.0\",\n    \"statsmodels >= 0.10\",\n    \"pandas > 1.0\",\n    \"shap >= 0.38.1, < 0.49.0\",\n    \"lightgbm\",\n    \"packaging\"\n]\n\n[project.urls]\n\"Homepage\" = \"https://github.com/py-why/EconML\"\n\"Bug Tracker\" = \"https://github.com/py-why/EconML/Issues\"\n\"Source Code\" = \"https://github.com/py-why/EconML\" \n\"Documentation\" = \"https://www.pywhy.org/EconML/\"\n\n[project.optional-dependencies]\nautoml = [\n    # Disabled due to incompatibility with scikit-learn\n    # azureml-sdk[explain,automl] == 1.0.83\n    \"azure-cli\"\n]\nplt = [\n    \"graphviz\",\n    \"matplotlib\"\n]\ndowhy = [\n    # when updating this, also update the version check in dowhy.py\n    \"dowhy < 0.13\"\n]\nray = [\n    \"ray > 2.2.0\"\n]\nall = [\n    # Disabled due to incompatibility with scikit-learn\n    # azureml-sdk[explain,automl] == 1.0.83\n    \"azure-cli\",\n    \"graphviz\",\n    \"matplotlib\",    \n    \"dowhy < 0.13\",\n    \"ray > 2.2.0\"\n]\n\n[build-system]\nrequires = [\n    \"setuptools\",\n    \"wheel\",\n    \"numpy>=2,<3\",\n    \"scipy\",\n    \"cython\"\n]\nbuild-backend = \"setuptools.build_meta\"\n\n[tool.setuptools.packages.find]\ninclude = [\"econml\", \"econml.*\"]\nexclude = [\"econml.tests\"]\n\n[tool.setuptools.package-data]\n# include all CSV files as data\n\"*\" = [\"*.csv\", \"*.jbl\"]\n\n[tool.pytest.ini_options]\ntestpaths = [\"econml/tests\"]\naddopts = \"--junitxml=junit/test-results.xml -n auto --strict-markers --cov-config=pyproject.toml --cov --import-mode=importlib\"\nmarkers = [    \n    \"slow\",\n    \"notebook\",\n    \"automl\",\n    \"dml\",\n    \"serial\",\n    \"cate_api\",\n    \"treatment_featurization\",\n    \"ray\"\n]\n\n[tool.coverage.run]\nbranch = true\n# need to explicitly add support for multiprocessing for OrthoForest\nconcurrency = [\n    \"thread\",\n    \"multiprocessing\"\n]\nsource = [\"econml\"]\nomit = [\"econml/tests/*\"]\nrelative_files = true\n\n[tool.coverage.report]\nexclude_lines = [\n    \"raise NotImplementedError\\\\(\\\"(Abstract method|Defer to inference)\\\"\\\\)\"\n]\n\n[tool.ruff]\nline-length = 120\nextend-include = [\"*.ipynb\"]\nextend-exclude = [\"prototypes\", \"monte_carlo_tests\"]\n\n[tool.ruff.format]\ndocstring-code-format = true\nquote-style = \"preserve\"\n\n[tool.ruff.lint]\nignore = [\n    \"D100\", # Missing docstring in public module\n    \"D101\", # Missing docstring in public class\n    \"D102\", # Missing docstring in public method\n    \"D103\", # Missing docstring in public function\n    \"D104\", # Missing docstring in public package\n    \"D105\", # Missing docstring in magic method\n    \"D301\", # Use r\"\"\" if any backslashes in a docstring,\n    \"SIM108\", # Use ternary instead of if-else (looks ugly for some of our long expressions)\n    \"SIM300\", # Yoda condition detected (these are often easier to understand in array expressions) \n]\nselect = [\n    \"D\", # Docstring\n    \"W\", # Pycodestyle warnings\n    \"E\", # All Pycodestyle erros, not just the default ones\n    \"F\", # All pyflakes rules\n    \"SIM\", # Simplifification \n]\nextend-per-file-ignores = { \"econml/tests\" = [\"D\"] } # ignore docstring rules for tests\n\n[tool.ruff.lint.pydocstyle]\nconvention = \"numpy\"\n"
  },
  {
    "path": "setup.py",
    "content": "from setuptools import setup\nfrom setuptools.extension import Extension\nimport numpy as np\nimport os\nimport re\nfrom glob import glob\n\nwith open(os.path.join(os.path.dirname(__file__), \"econml\", \"_version.py\")) as file:\n    for line in file:\n        m = re.fullmatch(\"__version__ = '([^']+)'\\n\", line)\n        if m:\n            version = m.group(1)\n\npyx_files = glob(\"econml/**/*.pyx\", recursive=True)\nc_files = glob(\"econml/**/*.c\", recursive=True)\n\n# If both a .pyx and a .c file exist, we assume the .c file is up to date and don't force a recompile\npyx_files = [file for file in pyx_files if (os.path.splitext(file)[0] + \".c\") not in c_files]\n\nc_extensions = [Extension(os.path.splitext(file)[0].replace(os.sep, '.'),\n                          [file],\n                          include_dirs=[np.get_include()],\n                          define_macros=[(\"NPY_NO_DEPRECATED_API\", \"NPY_1_7_API_VERSION\")])\n                for file in c_files]\n\nif pyx_files:\n    from Cython.Build import cythonize\n    from Cython.Compiler import Options\n    Options.warning_errors = True  # Treat Cython warnings as errors\n    pyx_extensions = cythonize([Extension(\"*\",\n                                          pyx_files,\n                                          include_dirs=[np.get_include()])],\n                               language_level=\"3\")\nelse:\n    pyx_extensions = []\n# configuration is all pulled from setup.cfg\nsetup(ext_modules=c_extensions + pyx_extensions,\n      zip_safe=False,\n      version=version)\n"
  }
]